1. Operator if else
Z programów byłoby mało pożytku, gdyby robiły zawsze to samo, niezależnie od tego, jak zmieniają się okoliczności. Program musi umieć dostosować się do różnych sytuacji i robić jedno w jednym przypadku, a coś innego w innym.
W C# jest to zrobione za pomocą operatora warunkowego — specjalnego słowa kluczowego, które pozwala wykonać różne bloki poleceń w zależności od prawdziwości warunku.
Operator warunkowy składa się z trzech części: warunek, polecenie 1 i polecenie 2. Jeśli warunek jest prawdziwy, wykonuje się polecenie 1, w przeciwnym razie wykonuje się polecenie 2. Polecenia nigdy nie są wykonywane jednocześnie. Ogólny wygląd tego operatora jest taki:
if (warunek)
polecenie1;
else
polecenie2;
if-else
if znaczy „jeśli”, a else to „w przeciwnym razie”. Po ludzku można to zapisać tak:
Jeśli warunek prawdziwy, to
wykonaj polecenie1;
w przeciwnym razie
wykonaj polecenie2;
if-else po ludzku
Przykłady:
//Na ekranie pojawi się napis: Jeszcze jesteś dzieckiem
int age = 17;
if (age < 18)
Console.WriteLine("Jeszcze jesteś dzieckiem");
else
Console.WriteLine("Już jesteś dorosły");
//Na ekranie pojawi się napis: Ciepło
int temperature = 5;
if (temperature < 0)
Console.WriteLine("Na dworze mróz");
else
Console.WriteLine("Ciepło");
//Na ekranie pojawi się napis: Możesz zdawać na prawo jazdy
int age = 18;
if (age == 18)
Console.WriteLine("Możesz zdawać na prawo jazdy");
else
Console.WriteLine("Możesz odkładać na samochód");
2. Blok poleceń
Jeśli przy spełnieniu (lub niespełnieniu) warunku chcesz, żeby twój program wykonał kilka poleceń, możesz je połączyć w blok poleceń.
Żeby połączyć polecenia w blok, trzeba je „owinąć” w nawiasy klamrowe. Tak to wygląda w ogólności:
{
polecenie1;
polecenie2;
polecenie3;
}
Poleceń w bloku może być dowolnie dużo. Nawet zero.
Przykłady połączenia operatora if-else i bloku poleceń:
//Na ekranie pojawi się napis: Jesteś jeszcze dzieckiem. Nie kłóć się z dorosłymi
int age = 17;
if (age < 18)
{
Console.WriteLine("Jesteś jeszcze dzieckiem");
Console.WriteLine("Nie kłóć się z dorosłymi");
}
else
{
Console.WriteLine("Już jesteś dorosły");
Console.WriteLine("No i ta dzisiejsza młodzież");
}
//Na ekranie pojawi się napis: Ciepło
int temperature = 5;
if (temperature < 0)
{
Console.WriteLine("Na dworze mróz");
Console.WriteLine("Załóż czapkę");
}
else
Console.WriteLine("Ciepło");
//Wykona się pusty blok poleceń. Na ekranie nic się nie pojawi.
int age = 21;
if (age == 18)
Console.WriteLine("Zgłoś się do WKU");
else
{
}
3. Skrócona składnia operatora if
Jeśli kod w bloku else nie istnieje, można go pominąć. Wtedy operator if wygląda tak:
if (warunek)
polecenie1;
if
Przykład:
int age = 19;
if (age >= 18)
{
Console.WriteLine("Jesteś pełnoletni!");
}
Jak to działa?
Jeśli warunek jest prawdziwy, wykonuje się blok kodu. Jeśli fałszywy, nic się nie dzieje — program idzie dalej.
Blok else w programie jest, ale pusty (między klamrami nie ma żadnych poleceń). Można go po prostu usunąć: w programie nic się nie zmieni.
4. Kombinowanie warunków: else if
Czasem trzeba sprawdzić nie tylko "tak/nie", ale wybrać spośród kilku opcji. Tu przydaje się połączenie else if:
if (warunek1)
{
// Wykonuje się, jeśli warunek1 jest prawdziwy
}
else if (warunek2)
{
// Wykonuje się, jeśli warunek2 jest prawdziwy, a warunek1 — fałszywy
}
else
{
// Wykonuje się, jeśli żaden z powyższych warunków nie pasuje
}
Przykład:
int hour = 13;
if (hour < 12)
{
Console.WriteLine("Dzień dobry!");
}
else if (hour < 18)
{
Console.WriteLine("Dobrego popołudnia!");
}
else
{
Console.WriteLine("Dobry wieczór!");
}
Co tu się dzieje?
- Jeśli godzina przed 12 — rano.
- Jeśli od 12 do 18 — popołudnie.
- Jeśli więcej — wieczór.
- Program wybiera tylko JEDNĄ opcję! Jak tylko warunek pasuje — reszta nawet nie jest sprawdzana.
5. Schematyczna ilustracja: schemat blokowy rozgałęzienia
Tak to wygląda na schemacie blokowym:
A jeśli jest kilka warunków:
To bardzo przypomina rozgałęzienia w planszowych grach fabularnych: idziesz w lewo — jedno, w prawo — coś innego, prosto — jeszcze coś innego!
6. Jakie warunki można sprawdzać?
W nawiasach po if musi być WYRAŻENIE LOGICZNE — którego wynikiem jest true albo false.
Podstawowe operatory porównania:
| Operator | Znaczenie | Przykład |
|---|---|---|
| == | Równe | x == 5 |
| != | Nie równe | x != 10 |
| > | Większe | x > 0 |
| < | Mniejsze | age < 18 |
| >= | Większe lub równe | score >= 100 |
| <= | Mniejsze lub równe | count <= 50 |
Przykłady warunków:
if (number == 10)
if (age != 18)
if (temperature > 36)
if (balance <= 0)
Zwróć uwagę: = (jeden znak) — to przypisanie. == (dwa znaki) — porównanie. To jeden z najczęstszych błędów początkujących! Jeśli przypadkiem napiszesz:
if (x = 5) // BŁĄD!
— kompilator cię opieprzy, i bardzo dobrze!
7. Praca ze stringami w warunkach
Można porównywać nie tylko liczby, ale też stringi:
string password = Console.ReadLine();
if (password == "qwerty")
{
Console.WriteLine("Zalogowałeś się!");
}
Uwaga: porównywanie stringów przez == w C# działa poprawnie w zwykłych przypadkach, bo porównuje zawartość stringów (a nie tylko referencje do obiektów). O szczegółach porównywania stringów pogadamy jeszcze bliżej metod stringowych i lokalizacji.
8. Ciekawostki i niuanse:
Nawiasy klamrowe: potrzebne czy nie?
Jeśli po if albo else jest tylko jedno polecenie, nawiasy klamrowe można pominąć:
if (age > 18)
Console.WriteLine("Masz więcej niż 18!");
// Ale bezpieczniej ZAWSZE je pisać:
if (age > 18)
{
Console.WriteLine("Masz więcej niż 18!");
}
Rada: zawsze pisz z nawiasami. To chroni przed masą błędów, zwłaszcza jak kod się rozrasta.
Błędy logiczne: uważaj na warunki!
Jeśli napiszesz tak:
if (age > 18)
Console.WriteLine("Masz więcej niż 18!");
Console.WriteLine("Witamy!");
To kompilator przeczyta ten kod tak:
if (age > 18)
{
Console.WriteLine("Masz więcej niż 18!");
}
Console.WriteLine("Witamy!");
Druga linijka zawsze się wykona — nawiasy są potrzebne, żeby obie linijki były w „gałęzi”.
GO TO FULL VERSION