0Pricing
C++ Academy · Lekcja

Rozgałęzienia: if-else, ternary, switch-case

Wybieraj między łańcuchami if-else, wyrażeniami ternary i instrukcjami switch, aby tworzyć czytelne rozgałęzienia

Rozgałęzienia: if-else, ternary, switch-case to bezpłatna lekcja C++ Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C++ Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C++ Academy zawiera 4 lekcji w sumie.

Instrukcja if

Podstawowa instrukcja warunkowa. Jej ciało wykonuje się, gdy warunek jest prawdziwy. Nawiasy klamrowe są opcjonalne w przypadku pojedynczej instrukcji, ale zawsze zalecane.

int score = 85;
if (score >= 60) {
    std::cout << "Pass\n";
}

Łańcuchy if-else

Alternatywy należy sprawdzać za pomocą else if i końcowego else. Wykonywana jest pierwsza gałąź, dla której warunek jest prawdziwy.

if (score >= 90) std::cout << "A";
else if (score >= 80) std::cout << "B";
else if (score >= 70) std::cout << "C";
else std::cout << "F";

Warunki logiczne

Dowolne wyrażenie, które można przekształcić na bool, będzie działać. Wskaźniki mają wartość false, gdy są równe null, a liczby całkowite — gdy są równe zero. Dla większej czytelności należy stosować zapis jawny.

Inicjalizacja w if (C++17)

C++17 pozwala zadeklarować zmienną wewnątrz instrukcji if. Zmienna ma zasięg obejmujący ciało instrukcji if-else.

if (auto it = map.find(key); it != map.end()) {
    std::cout << it->second;
}

Operator trójargumentowy

condition ? a : b zwraca jedną z dwóch wartości. Doskonale nadaje się do prostych wyborów, ale bardzo źle sprawdza się w przypadku zagnieżdżonej logiki.

int max = (a > b) ? a : b;
std::string msg = (n == 1) ? "item" : "items";

Zagnieżdżone operatory trójargumentowe: należy ich unikać

Zagnieżdżone operatory trójargumentowe są trudne do odczytania. Zamiast nich należy użyć if-else lub przenieść logikę do funkcji pomocniczej.

// Hard to read
auto label = (n < 0) ? "neg" : (n == 0) ? "zero" : "pos";

// Clearer
std::string label;
if (n < 0) label = "neg";
else if (n == 0) label = "zero";
else label = "pos";

Instrukcja switch

Pozwala porównać jedną wartość z kilkoma stałymi. Każda gałąź wymaga break, aby uniknąć przejścia do następnego przypadku.

switch (day) {
    case 1: std::cout << "Mon"; break;
    case 2: std::cout << "Tue"; break;
    default: std::cout << "?";  break;
}

Celowe przejście do następnego przypadku

Należy grupować wiele przypadków, które współdzielą kod. C++17 wprowadził [[fallthrough]] jako oznaczenie dla kompilatora.

switch (c) {
    case 'a': case 'e': case 'i': case 'o': case 'u':
        std::cout << "vowel"; break;
    default:
        std::cout << "consonant";
}

Ograniczenia switch

switch działa tylko z typami całkowitymi i wyliczeniowymi. W przypadku napisów należy użyć if-else lub mapy haszującej.

Inicjalizator w switch (C++17)

Podobnie jak w przypadku if można zadeklarować zmienną w nagłówku instrukcji switch.

switch (auto value = compute(); value) {
    case 0: ...
    default: ...
}

Wzorzec: mapa wyszukiwania

W przypadku gałęzi, których kluczami są napisy, std::unordered_map może być czytelniejsza niż łańcuch if-else.

std::unordered_map<std::string, std::function<void()>> commands = {
    {"start", []{ start(); }},
    {"stop",  []{ stop();  }}
};
if (auto it = commands.find(cmd); it != commands.end())
    it->second();

Szybkie sprawdzenie

Co się stanie, jeśli w instrukcji switch po case zabraknie break, a następny przypadek nie będzie pusty?

Podsumowanie

Należy używać if-else do ogólnego rozgałęziania, operatora trójargumentowego do krótkich wyborów wartości, a switch do porównywania jednej wartości z wieloma stałymi całkowitymi. Instrukcje inicjalizujące C++17 porządkują zakres zmiennych.

Często zadawane pytania

Czy lekcja „Rozgałęzienia: if-else, ternary, switch-case” jest bezpłatna?

Tak — pełny tekst „Rozgałęzienia: if-else, ternary, switch-case” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C++ Academy, przejdź na CoddyKit PRO. Kurs C++ Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Rozgałęzienia: if-else, ternary, switch-case”?

Wybieraj między łańcuchami if-else, wyrażeniami ternary i instrukcjami switch, aby tworzyć czytelne rozgałęzienia Ćwiczysz C++ Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C++ Academy?

Nie wymagamy żadnego doświadczenia. C++ Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Rozgałęzienia: if-else, ternary, switch-case”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C++ Academy?

Tak. Każda lekcja C++ Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Rozgałęzienia: if-else, ternary, switch-case
  2. Schematy pętli: for, while, do-while
  3. Pętla for oparta na zakresie i kontenery
  4. Wczesne zwroty, break, continue i goto
← Powrót do C++ Academy