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.
![]() |
// instrukcja if
if (warunek)
{
działanie jeśli warunek
jest spełniony
(warunek==true);
}
// Następne instrukcje programu.
|
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).
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:
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:
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.
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… .
![]() |
// instrukcja if
if (warunek)
{
działanie jeśli warunek
jest spełniony
(warunek==true);
}
else
{
działanie jeśli warunek
nie jest spełniony
(warunek == false);
}
// Następne instrukcje programu.
|
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:
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:
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:
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:
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ą:
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.
// 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





