C++ Academy · leksjon

Forgrening: if-else, ternary, switch-case

Velg mellom if-else-kjeder, ternary-uttrykk og switch-setninger for tydelige forgreninger.

Leksjon 1 av 413 trinn

Forgrening: if-else, ternary, switch-case er en gratis leksjon i C++ Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i C++ Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i C++ Academy inneholder totalt 4 leksjoner.

if-setningen

Den grunnleggende betingelsen. Blokken kjøres når betingelsen er sann. Krøllparenteser er valgfrie for én enkelt setning, men anbefales alltid.

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

if-else-kjeder

Test alternativer med else if og en avsluttende else. Den første sanne grenen kjøres.

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

Boolske betingelser

Ethvert uttrykk som kan konverteres til bool, fungerer. Pekere evalueres som false når de er null, og heltall som false når de er null. Vær eksplisitt for å gjøre koden tydelig.

Initialisering i if (C++17)

C++17 gjør det mulig å deklarere en variabel inne i if. Variabelens virkefelt er begrenset til if-else-blokken.

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

Den ternære operatoren

condition ? a : b returnerer én av to verdier. Utmerket for enkle valg, men uegnet for nestet logikk.

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

Unngå nestede ternære operatorer

Nestede ternære operatorer er vanskelige å lese. Bruk heller if-else, eller refaktorer til en hjelpefunksjon.

// 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";

switch-setningen

Sammenlign én verdi med flere konstanter. Hver gren trenger break for å unngå at kjøringen faller gjennom til neste case.

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

Bevisst fallthrough

Gruppér flere case-grener som deler kode. C++17 la til [[fallthrough]] som en markør for kompilatoren.

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

Begrensninger for switch

switch fungerer bare med heltalls- og enum-typer. For strenger kan if-else eller en hash-tabell brukes.

Initialisering i switch (C++17)

I likhet med if kan en variabel deklareres i switch-hodet.

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

Mønster: oppslagstabell

For grener med strengnøkler kan en std::unordered_map være ryddigere enn en if-else-kjede.

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

Hurtigsjekk

Hva skjer hvis en case i en switch mangler break, og den neste casen ikke er tom?

Oppsummering

Bruk if-else til generell forgrening, den ternære operatoren til korte valg mellom verdier, og switch når én verdi skal sammenlignes med mange heltallskonstanter. Initialiseringssetninger i C++17 gir ryddigere virkefelt.

Gratis å komme i gang

Lær deg C++ med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
51
Leksjoner
203

Ofte stilte spørsmål

Er leksjonen «Forgrening: if-else, ternary, switch-case» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien C++ Academy, inkludert «Forgrening: if-else, ternary, switch-case», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i C++ Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Forgrening: if-else, ternary, switch-case»?

Velg mellom if-else-kjeder, ternary-uttrykk og switch-setninger for tydelige forgreninger. Du øver på C++ Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med C++ Academy?

Ingen tidligere erfaring er nødvendig. C++ Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Forgrening: if-else, ternary, switch-case»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne C++ Academy-leksjonen?

Ja. Alle C++ Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Forgrening: if-else, ternary, switch-case
  2. Løkkemønstre: for, while, do-while
  3. Range-basert for-løkke med containere
  4. Tidlige returer, break, continue og goto
← Tilbake til C++ Academy