INF.04 · C# · lekcja 5

Instrukcje warunkowe (if, else, switch)

Bilet zależny od wieku

  • Zrozum
  • Sprawdź
  • Napisz sam

Po tej lekcji: bilet zależny od wieku

Dzisiaj zrobisz konkretną rzecz

Program, który zawsze robi dokładnie to samo niezależnie od danych wejściowych, jest mało użyteczny — instrukcje warunkowe to pierwszy krok w stronę programu, który REAGUJE na różne sytuacje, tak jak zrobi to każda prawdziwa aplikacja, którą zbudujesz w tym kursie.

Każdy system logowania sprawdza warunkiem if, czy podane hasło zgadza się z zapisanym — to dokładnie ta sama instrukcja, tylko zastosowana do prawdziwego, ważnego problemu.

Sprawdź w działaniu

Bilet zależny od wieku

Najpierw przewidź wynik. Zmień dane w modelu i porównaj efekt. Spróbuj także przypadku granicznego, a nie tylko pierwszego poprawnego przykładu.

Ta interakcja wymaga włączonego JavaScriptu.

Model pokazuje wybraną zasadę. Nie uruchamia ani nie ocenia wklejonego kodu C#.

1. Przygotuj i uruchom własny projekt

2. Najpierw mały przykład

Wykonaj tę próbę przed dłuższym rozwiązaniem. if (warunek) wybiera blok, gdy warunek jest true. else if sprawdza kolejny dopiero po odrzuceniu poprzedniego. else nie ma warunku. Dla kilku instrukcji otocz blok klamrami.

Program.cscsharp
int wiek = 17;
if (wiek < 7)
    Console.WriteLine("bezpłatny");
else if (wiek < 18)
    Console.WriteLine("ulgowy");
else
    Console.WriteLine("normalny");
Wynik
Dla17: ulgowy. Sprawdź też6,7,18.
  1. Co sprawdzić? Zmień jedną wartość i przed uruchomieniem zapisz przewidywany rezultat. Porównaj go z opisem wyniku; przy błędzie wróć do konkretnej instrukcji.

Jak to działa — 1

Instrukcje warunkowe pozwalają programowi podejmować DECYZJE — wykonać różny kod w zależności od tego, czy jakiś warunek jest prawdziwy.

if — wykonuje blok kodu TYLKO jeśli warunek jest prawdziwy: if (wiek >= 18) { ... }

if-else — jedna z dwóch ścieżek, zawsze któraś się wykona: if (warunek) { ... } else { ... }

if-else if-else — łańcuch wielu warunków sprawdzanych po kolei, pierwszy prawdziwy "wygrywa": if (ocena >= 5) { ... } else if (ocena >= 3) { ... } else { ... }

switch — czytelniejsza alternatywa dla długiego łańcucha if-else if, gdy porównujesz JEDNĄ zmienną z wieloma konkretnymi wartościami: switch (dzien) { case 1: ...; break; case 2: ...; break; default: ...; break; } Słowo kluczowe break jest konieczne na końcu każdego case — bez niego wykonanie "przeleci" do kolejnego przypadku (tzw. fall-through), co w C# w większości przypadków jest błędem kompilacji, jeśli case nie jest pusty.

3. Pełny przykład — czytaj od Main

Teraz zastąp Program.cs tym programem. Zanim uruchomisz, znajdź dane wejściowe, operację i miejsce prezentacji wyniku. W tym wariancie zachowujemy jawny Main. Nie wklejaj kilku pełnych programów do jednego pliku.

Program.cs — osobne uruchomieniecsharp
using System;

class Program
{
    static void Main()
    {
        int ocena = 4;

        if (ocena >= 5)
        {
            Console.WriteLine("Bardzo dobrze!");
        }
        else if (ocena >= 3)
        {
            Console.WriteLine("Wystarczająco.");
        }
        else
        {
            Console.WriteLine("Musisz to powtórzyć.");
        }

        int dzienTygodnia = 3;
        switch (dzienTygodnia)
        {
            case 1:
                Console.WriteLine("Poniedziałek");
                break;
            case 2:
                Console.WriteLine("Wtorek");
                break;
            case 3:
                Console.WriteLine("Środa");
                break;
            default:
                Console.WriteLine("Inny dzień");
                break;
        }
    }
}
  1. Prześledź kod Warunki w łańcuchu if-else if-else są sprawdzane PO KOLEI, od góry — gdy pierwszy pasujący warunek zostanie znaleziony, reszta łańcucha jest pomijana. Dlatego kolejność warunków ma znaczenie: ocena >= 5 musi być sprawdzone PRZED ocena >= 3, inaczej ocena 5 też "wpadłaby" w drugi warunek.

Sprawdź, zanim przepiszesz cały program

Częsty błąd to zapomnienie break w instrukcji switch — C# w większości przypadków zgłosi błąd kompilacji, co jest akurat pomocne (w przeciwieństwie do niektórych innych języków, które po cichu "przelecą" dalej). Drugi błąd: używanie wielu niezależnych if zamiast else if tam, gdzie warunki się wykluczają — działa, ale program niepotrzebnie sprawdza wszystkie warunki, nawet gdy pierwszy już był prawdziwy.

Ćwiczenie z pomocą · samodzielna praca

4. Teraz Twoja zmiana

Napisz program sprawdzający instrukcją if-else, czy podana na sztywno liczba jest dodatnia, ujemna czy równa zero.

Oczekiwany rezultat
Spełnij warunki polecenia. Zapisz wejście, otrzymany wynik i wyjaśnij, która część kodu za niego odpowiada.
Potrzebujesz pomocy? Rozwiązuj krok po kroku.
Krok 1 — pokaż podpowiedź

Wróć do podstawowej formy oraz objaśnienia: if (warunek) wybiera blok, gdy warunek jest true. else if sprawdza kolejny dopiero po odrzuceniu poprzedniego. else nie ma warunku. Dla kilku instrukcji otocz blok klamrami.

Krok 2 — pokaż podpowiedź

Zmień tylko część potrzebną do polecenia. Zachowaj działającą wersję przed zmianą i uruchamiaj po każdym małym etapie.

Krok 3 — pokaż podpowiedź

Sprawdź przypadek zwykły i graniczny; porównaj z regułą: Dla17: ulgowy. Sprawdź też6,7,18.

Otwórz tylko tyle podpowiedzi, ile potrzebujesz. Po każdym kroku wróć do zadania i sprawdź wynik.

5. Sprawdź rozumienie, nie tylko uruchomienie

Dalej na swoim koncie

Rozgrzewki, quiz i zadania są w biurku ucznia.

Teoria jest otwarta dla wszystkich. Żeby rozwiązywać zadania, zapisywać szkice i widzieć swój postęp, zaloguj się.

Zaloguj się →
Źródła i dalsza nauka