Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Udfordring: Indlejrede If-sætninger | Introduktion til Betingede Udsagn
C++ Betingede Udsagn

bookUdfordring: Indlejrede If-sætninger

En indlejret if-sætning er blot en if-sætning inden i en anden if-sætning. Denne struktur gør det muligt at evaluere flere betingelser, én efter én, og udføre specifikke kodeblokke.

nested_if.h

nested_if.h

copy
1234567891011121314
if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }

Den ydre if-sætning fungerer som en portvagt, og baseret på dens evaluering, kan den åbne op for en anden if-sætning indeni. Overvej et scenarie, hvor vi ønsker at bestemme en arbejders løn baseret på deres præstation.

main.cpp

main.cpp

copy
12345678910111213141516171819202122232425
#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 17; int hours_worked = 37; // If the number of completed tasks is greater than 15, if (completed_tasks > 15) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; // And if the number of hours worked is more than 40 if (hours_worked > 40) { // add an additional 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } } std::cout << current_salary << std::endl; }

Denne kode beregner en medarbejders nye løn baseret på antallet af gennemførte opgaver og arbejdstimer, med en stigning på 20 %, hvis opgaverne er over 15, og en yderligere stigning på 20 %, hvis arbejdstimerne er over 40. Som det ses, er den nuværende beregning 1200. Dette kan kun opnås ved at bruge indlejrede if-udsagn; her er nogle forsøg på at opnå samme logik uden dem.

main.cpp

main.cpp

copy
12345678910111213141516171819202122232425
#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 9; int hours_worked = 41; // If the number of completed tasks is greater than 15, if (completed_tasks > 15) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } // If the number of hours worked is more than 40 if (hours_worked > 40) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } std::cout << current_salary << std::endl; }

I starten kan det virke, som om det fungerer på samme måde, men i dette tilfælde vil medarbejderen modtage en ekstra 20% lønforhøjelse, uanset om vedkommende har udført mere end 15 opgaver. Kør koden og se outputtet, det viser en værdi på 1200, selvom medarbejderen denne gang ikke har udført mere end 15 opgaver.

main.cpp

main.cpp

copy
1234567891011121314151617181920212223
#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 19; int hours_worked = 39; // If the number of completed tasks is greater than 15 // AND the number of of hours worked is more than 40 if (completed_tasks > 15 && hours_worked > 40) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; std::cout << current_salary << std::endl; } std::cout << current_salary << std::endl; }

I dette tilfælde kan det se ud, som om det burde fungere korrekt, men desværre er det også forkert, outputtet er 1000. Dette skyldes, at hvis medarbejderen udfører mere end 15 opgaver, men ikke arbejder mere end 40 timer, modtager vedkommende ingenting. Derfor skal vi bruge indlejrede if-sætninger for at opnå den korrekte implementering.

Indlejrede if-udsagn er meget nyttige til at skabe beslutningsprocesser og håndtere komplekse scenarier i din kode. Ved omhyggelig udformning af din kodestruktur og opretholdelse af læsbarhed kan du udnytte styrken ved indlejrede if-udsagn til at skrive effektive og vedligeholdelsesvenlige programmer.

Note
Bemærk

Indlejrede if-udsagn er nødvendige i nogle tilfælde men ikke altid. I tredje afsnit vil vi diskutere, hvornår, hvorfor og hvordan de kan undgås.

Opgave

Swipe to start coding

Du opretter et biografbilletsystem. Billetpriserne varierer afhængigt af kundens alder og om det er weekend eller hverdag.

  1. Brug indlejrede if-sætninger til at bestemme billetprisen:
    • Hvis kunden er under 18 år, opkræv:
      • 12.0 i weekenden
      • 8.0 på hverdage
    • Hvis kunden er mellem 18 og 60 år, opkræv:
      • 20.0 i weekenden
      • 15.0 på hverdage
    • Hvis kunden er over 60 år, opkræv:
      • 16.0 i weekenden
      • 10.0 på hverdage
  2. Returnér billetprisen fra funktionen.

Eksempel

calculateTicketPrice(16, true)12.0
calculateTicketPrice(30, false)15.0
calculateTicketPrice(70, true)16.0

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 5
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

close

Awesome!

Completion rate improved to 7.69

bookUdfordring: Indlejrede If-sætninger

Stryg for at vise menuen

En indlejret if-sætning er blot en if-sætning inden i en anden if-sætning. Denne struktur gør det muligt at evaluere flere betingelser, én efter én, og udføre specifikke kodeblokke.

nested_if.h

nested_if.h

copy
1234567891011121314
if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }

Den ydre if-sætning fungerer som en portvagt, og baseret på dens evaluering, kan den åbne op for en anden if-sætning indeni. Overvej et scenarie, hvor vi ønsker at bestemme en arbejders løn baseret på deres præstation.

main.cpp

main.cpp

copy
12345678910111213141516171819202122232425
#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 17; int hours_worked = 37; // If the number of completed tasks is greater than 15, if (completed_tasks > 15) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; // And if the number of hours worked is more than 40 if (hours_worked > 40) { // add an additional 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } } std::cout << current_salary << std::endl; }

Denne kode beregner en medarbejders nye løn baseret på antallet af gennemførte opgaver og arbejdstimer, med en stigning på 20 %, hvis opgaverne er over 15, og en yderligere stigning på 20 %, hvis arbejdstimerne er over 40. Som det ses, er den nuværende beregning 1200. Dette kan kun opnås ved at bruge indlejrede if-udsagn; her er nogle forsøg på at opnå samme logik uden dem.

main.cpp

main.cpp

copy
12345678910111213141516171819202122232425
#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 9; int hours_worked = 41; // If the number of completed tasks is greater than 15, if (completed_tasks > 15) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } // If the number of hours worked is more than 40 if (hours_worked > 40) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } std::cout << current_salary << std::endl; }

I starten kan det virke, som om det fungerer på samme måde, men i dette tilfælde vil medarbejderen modtage en ekstra 20% lønforhøjelse, uanset om vedkommende har udført mere end 15 opgaver. Kør koden og se outputtet, det viser en værdi på 1200, selvom medarbejderen denne gang ikke har udført mere end 15 opgaver.

main.cpp

main.cpp

copy
1234567891011121314151617181920212223
#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 19; int hours_worked = 39; // If the number of completed tasks is greater than 15 // AND the number of of hours worked is more than 40 if (completed_tasks > 15 && hours_worked > 40) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; std::cout << current_salary << std::endl; } std::cout << current_salary << std::endl; }

I dette tilfælde kan det se ud, som om det burde fungere korrekt, men desværre er det også forkert, outputtet er 1000. Dette skyldes, at hvis medarbejderen udfører mere end 15 opgaver, men ikke arbejder mere end 40 timer, modtager vedkommende ingenting. Derfor skal vi bruge indlejrede if-sætninger for at opnå den korrekte implementering.

Indlejrede if-udsagn er meget nyttige til at skabe beslutningsprocesser og håndtere komplekse scenarier i din kode. Ved omhyggelig udformning af din kodestruktur og opretholdelse af læsbarhed kan du udnytte styrken ved indlejrede if-udsagn til at skrive effektive og vedligeholdelsesvenlige programmer.

Note
Bemærk

Indlejrede if-udsagn er nødvendige i nogle tilfælde men ikke altid. I tredje afsnit vil vi diskutere, hvornår, hvorfor og hvordan de kan undgås.

Opgave

Swipe to start coding

Du opretter et biografbilletsystem. Billetpriserne varierer afhængigt af kundens alder og om det er weekend eller hverdag.

  1. Brug indlejrede if-sætninger til at bestemme billetprisen:
    • Hvis kunden er under 18 år, opkræv:
      • 12.0 i weekenden
      • 8.0 på hverdage
    • Hvis kunden er mellem 18 og 60 år, opkræv:
      • 20.0 i weekenden
      • 15.0 på hverdage
    • Hvis kunden er over 60 år, opkræv:
      • 16.0 i weekenden
      • 10.0 på hverdage
  2. Returnér billetprisen fra funktionen.

Eksempel

calculateTicketPrice(16, true)12.0
calculateTicketPrice(30, false)15.0
calculateTicketPrice(70, true)16.0

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 5
single

single

some-alt