CodeGym /Kursy /C# SELF /Operator warunkowy: if else

Operator warunkowy: if else

C# SELF
Poziom 3 , Lekcja 1
Dostępny

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;
Operator warunkowy 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;
Operator warunkowy 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;
Operator warunkowy 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”.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION