Instrukcja if określa, która procedura zostanie uruchamiana na podstawie wartość wyrażenia logicznego Boole’a. Konieczne jest określenie jednego lub więcej warunków, które będą oceniane, lub testowane przez program, wraz z działaniem lub działaniami, które mają być wykonane. Prosta forma instrukcji if sprawdza warunek i podejmuje działanie, jeśli warunek nie jest spełniony, działanie nie jest podejmowane.
|
Dla pojedynczej instrukcji nawiasy klamrowe są opcjonalne, ale zalecane. Poniższy przykład sprawdzi, czy zmienna k jest większa od zmiennej l i podejmie odpowiednie działanie (wyświetli komunikat).
1 2 3 |
int k = 6; int l = 5; if (k > l) Console.WriteLine("k jest większe od l"); |
Każdy warunek musi zawierać się w nawiasie okrągłym po słowie kluczu „if”: „if (warunek)”. Takich warunków możemy mieć, ile tylko chcemy, ale aby program ostatecznie przeszedł do instrukcji działania, wszystkie muszą być spełnione:
1 2 |
int k = 1; if (k > 0) if (k<5) if (k<2) Console.WriteLine("Twoje k jest z przedziału od 0 do 2"); |
Moim osobiście zdaniem, czytelniej jest wykorzystywać nawiasy {}, które sprawiają, że nasz kod jest przejrzysty i czytelny. Podczas testowania warunków często stosuje się operatory relacji, aby sprawdzić warunek:
Operator | Opis | Działanie |
---|---|---|
>= |
Większe od lub równe | 8 >= 3 (true) 3 >= 5 (false) |
<= |
Mniejsze od lub równe | 3<=9 (true) 5<=5 (true) |
== |
Równoważne, równe | „tekst” == „tekst” (true) 15 == 3 (false) 0.87 == 0.87 (true) |
!= |
Nierównoważne, nierówne | „tekst” != „kot” (true) 15 != 14 (true) 0.58 != 0.58 (false) |
W poniższym przykładzie instrukcja if sprawdza długość wpisanego tekstu, jeśli jego długość jest równoważna zeru, wtedy zostanie wyświetlona informacja:
1 2 3 4 5 6 7 8 |
Console.WriteLine("Wpisz coś."); string warunek= Console.ReadLine(); //Jesli nic nie wpiszesz wtedu zmienna warunke będzie równa zero //Warunek jest spełniony kiedy nie wpisaneo tekstu if (warunek.Length == 0) { //Jesli nic nie wpiszesz, program wyświetli Console.WriteLine("Nic nie wpisałeś."); } |
W poniższym przykładzie zmienna typu Boolean jest ustawiona na true, a następnie sprawdzana w instrukcji if. Wyjściem jest wyświetlenie teksu w konsoli, oczywiście warunek jest z góry spełniony.
1 2 3 4 5 6 7 8 9 10 |
bool warunek= true; if (warunek) { Console.WriteLine("Warunke jest spełniony"); } //lub if (warunek==true) { Console.WriteLine("Warunke jest spełniony"); } |
Powyższe instrukcje nie podejmują działania w przypadku gdy warunek nie jest spełniony, aby instrukcja podejmowała działanie w każdym przypadku, należy ją rozbudować o element „else”, tworząc instrukcję if…else… .
Po modyfikacji stworzyłem instrukcję powitalną, po wpisaniu imienia, program wyświetli powitanie, jeśli użytkownik nic nie wpisze, wtedy zostanie poinformowany o braku wpisu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Console.WriteLine("Wpisz swoje imię."); string warunek = Console.ReadLine(); //Jesli nic nie wpiszesz wtedu zmienna warunke będzie równa zero //Warunek jest spełniony kiedy nie wpisaneo tekstu if (warunek.Length == 0) { //Jesli nic nie wpiszesz, program wyświetli Console.WriteLine("Nic nie wpisałeś."); } else { //Wyświetli powitanie Console.WriteLine("Witaj "+ warunek); } |
Przykład poniższy sprawdza, czy zdałeś egzamin:
1 2 3 4 5 6 7 8 9 10 11 |
Console.Write("Wprowadź wynik testu: "); string k = Console.ReadLine(); if (Convert.ToInt16(k) > 63) { Console.WriteLine("Zdałeś, gratulacje!"); } else { Console.WriteLine("Nie zdałeś."); } |
Oczywiście nic nie stoi na przeszkodzie, aby zagnieździć jedną instrukcję w drugiej, można zagnieździć tyle instrukcji, ile nam się podoba, byle by test logiczny wewnątrz był dla nas zrozumiały:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
int k = 13; if (k>10) { if (k > 12) { if (k > 13) { if (k > 14) { if (k > 15) { Console.WriteLine("Twoje k Jest większe od 15"); } else { Console.WriteLine("k jest mniejsze/równe 15"); } } else { Console.WriteLine("k jest mniejsze/równe 14"); } } else { Console.WriteLine("k jest mniejsze/równe 13"); } } else { Console.WriteLine("k jest mniejsze/równe 12"); } } else { Console.WriteLine("k jest mniejsze/równe 10"); } // dla k=14 //k jest mniejsze/równe 14 //dla k=11 //k jest mniejsze/równe 12 //dla k=15 //k jest mniejsze/równe 15 |
Kolejny przykład sprawdzi, czy wpisana liczba jest liczbą parzystą, przyjrzyj się, jak została skonstruowana instrukcja:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
Console.Write("Wprowadź cyfrę: "); string str = Console.ReadLine(); int wartoscCalkowita; //Metoda TryParse przypomina w swym działaniu metodę Parsę, z tym wyjątkiem, że metoda //TryParse nie zgłosi wyjątku, po nieudanej konwersji.Poniższa instrukcja próbuje konwersji //wpisanego tekstu na typ integer, jeśli konwersja się uda(warunek będzie spełniony) //instrukcja if będzie wykonana. if (int.TryParse(str, out wartoscCalkowita)) //test sprawdza resztę z dzielenia //jeśli jest równa zero wtedy warunek jest spełniony if (wartoscCalkowita % 2 == 0) { Console.WriteLine("Wprowadzona liczba '"+ str + "' jest parzysta."); } else { Console.WriteLine("Wprowadzona liczba '" + str + "' jest nieparzysta."); } //Istnieje możliwość, że nasz ciąg jest liczbą, tylko z przedziału liczb rzeczywistych, //aby to sprawdzić, powtarzamy warunek if (!int.TryParse(str, out wartoscCalkowita)) if (float.TryParse(str, out float wartoscZmiennoPrzecinkowa)) { Console.WriteLine("Wprowadzona liczba '" + str + "' nie jest liczbą całkowitą."); } else { Console.WriteLine("Wprowadzony ciąg '" + str + "' nie jest liczbą."); } //Przykład użycia //Wprowadź cyfrę: Test //Wprowadzony ciąg 'Test' nie jest liczbą. //Wpisz znak: 15 //Wprowadzona liczba '15' jest nieparzysta. //Wprowadź cyfrę: 10,9647 //Wprowadzona liczba '10,9647' nie jest liczbą całkowitą. |
W instrukcji powyżej pominięto niektóre nawiasy {}. W instrukcji if można sprawdzać więcej niż jeden warunek, należy w tym celu zastosować modyfikację if … elseif … lub modyfikację if…elseif…else.
|
|||
|
Poniższy przykład pobierze od użytkownika znak (jeśli zostanie wpisany dłuższy tekst, pobrany zostanie pierwszy znak) i sprawdzi, czy znak jest dużą literą, małą czy cyfrą:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Console.Write("Wpisz znak: "); char ch = (char)Console.Read(); if (Char.IsUpper(ch)) { Console.WriteLine("Znak jest pisany z dużej litery."); } else if (Char.IsLower(ch)) { Console.WriteLine("Znak jest pisany z małej litery."); } else if (Char.IsDigit(ch)) { Console.WriteLine("Znak jest cyfrą."); } else { Console.WriteLine("Znak nie jest alfanumeryczny."); } //Przykład użycia //Wpisz znak: E //Znak jest pisany z dużej litery.. //Wpisz znak: e //Znak jest pisany z małej litery.. //Wpisz znak: 4 //Znak jest cyfrą.. //Wpisz znak: = //Znak nie jest alfanumeryczny. |
Przy testowaniu warunków, możesz używać operatorów logicznych, takich jak „&&”, „&”, „||”, „|” i „!” Do generowania złożonych warunków.
Operator | Opis | Działanie | |
---|---|---|---|
&& |
& |
Operator logiczny „i” (AND) | true && true = true true && false= false false && true = false false && false= false |
|| |
| |
Operator logiczny „lub” (OR) | true || true = true true || false= true false || true = true false || false= false |
! |
Nieprawda że | !true = false
!false= true |
Program będzie prawidłowo testował warunek, zarówno z pojedynczymi jak i z podwójnymi znakami logicznymi. Poniższy kod przedstawia przykłady.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
// Przykład wykorzystania przeczenia bool wynik = true; if (!wynik) { Console.WriteLine("Warunek jest prawdziwy (wynik = false)."); } else { Console.WriteLine("Warunek jest fałszywy (wynik = true)."); } // Przykład wykorzystania "i" int m = 9; int n = 7; int p = 5; // Warunek jest spełniony, kiedy oba jego człony są prawdziwe if (m >= n && m >= p) { Console.WriteLine("Nic nie jest większe od m."); } // Przykład wykorzystania "i" i przeczenia if (m >= n && !(p > m)) { Console.WriteLine("Nic nie jest większe od m."); } // Przykład wykorzystania "lub" if (m > n || m > p) { Console.WriteLine("m nie jst najmniejsze"); } // Przykład wykorzystania "lub" i przeczenia m = 4; if (!(m >= n || m >= p)) { Console.WriteLine("Teraz m jest najmniejsze"); } // Wynik: //Warunek jest fałszywy(wynik = true). //Nic nie jest większe od m. //Nic nie jest większe od m. //m nie jst najmniejsze //Teraz m jest najmniejsze |