Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Utfordring: Nøstede If-setninger | Introduksjon til Betingede Setninger
C++ Betingede Setninger

bookUtfordring: Nøstede If-setninger

En nestet if-setning er rett og slett en if-setning inne i en annen if-setning. Denne strukturen gjør det mulig å evaluere flere betingelser, én etter én, og utføre spesifikke kodeblokker.

nested_if.h

nested_if.h

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

Den ytre if-setningen fungerer som en portvakt, og basert på dens evaluering, kan den åpne døren for en annen if-setning inni. Tenk deg et scenario der vi ønsker å fastslå en arbeidstakers lønn basert på deres prestasjon.

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 koden beregner en ansatts nye lønn basert på antall fullførte oppgaver og arbeidede timer, med en økning på 20 % hvis oppgavene er over 15 og en ytterligere økning på 20 % hvis arbeidede timer er over 40. Som du ser, er den nåværende beregningen 1200. Dette kan kun oppnås ved å bruke nestede if-setninger, her er noen forsøk på å oppnå samme logikk uten 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; }

Først kan det virke som om det fungerer på samme måte, men i dette tilfellet vil arbeidstakeren få en ekstra 20 % lønnsøkning, uavhengig av om han har fullført mer enn 15 oppgaver. Kjør koden og se på utdataene, det vises en verdi på 1200, selv om arbeidstakeren denne gangen ikke har fullført mer enn 15 oppgaver.

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 tilfellet kan det virke som om det skal fungere som tiltenkt, men dessverre er det også feil, utdataene er 1000. Dette er fordi hvis arbeidstakeren fullfører mer enn 15 oppgaver, men ikke jobber mer enn 40 timer, får han ingenting. Derfor vi bruke nøstede if-setninger for å få riktig implementasjon.

Nøstede if-setninger er svært nyttige for å lage beslutningsprosesser og håndtere komplekse situasjoner i koden din. Ved å utforme kode-strukturen nøye og opprettholde lesbarhet, kan du utnytte kraften i nøstede if-setninger for å skrive effektive og vedlikeholdbare programmer.

Merk

Nøstede if-setninger er nødvendige i noen tilfeller men ikke alltid. I tredje seksjon diskuterer vi når, hvorfor og hvordan de kan unngås.

Oppgave

Swipe to start coding

Du utvikler et kinobillettsystem. Billettprisene varierer avhengig av kundens alder og om det er helg eller hverdag.

  1. Bruk nøstede if-setninger for å bestemme billettprisen:
    • Hvis kunden er under 18 år, ta:
      • 12.0 i helgene
      • 8.0 på hverdager
    • Hvis kunden er mellom 18 og 60 år, ta:
      • 20.0 i helgene
      • 15.0 på hverdager
    • Hvis kunden er over 60 år, ta:
      • 16.0 i helgene
      • 10.0 på hverdager
  2. Returner billettprisen fra funksjonen.

Eksempel

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

Løsning

solution.cpp

solution.cpp

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 5
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Suggested prompts:

Can you give an example of when nested `if` statements are necessary?

What are some alternatives to using nested `if` statements?

Can you explain how to avoid nested `if` statements in certain scenarios?

close

Awesome!

Completion rate improved to 7.69

bookUtfordring: Nøstede If-setninger

Sveip for å vise menyen

En nestet if-setning er rett og slett en if-setning inne i en annen if-setning. Denne strukturen gjør det mulig å evaluere flere betingelser, én etter én, og utføre spesifikke kodeblokker.

nested_if.h

nested_if.h

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

Den ytre if-setningen fungerer som en portvakt, og basert på dens evaluering, kan den åpne døren for en annen if-setning inni. Tenk deg et scenario der vi ønsker å fastslå en arbeidstakers lønn basert på deres prestasjon.

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 koden beregner en ansatts nye lønn basert på antall fullførte oppgaver og arbeidede timer, med en økning på 20 % hvis oppgavene er over 15 og en ytterligere økning på 20 % hvis arbeidede timer er over 40. Som du ser, er den nåværende beregningen 1200. Dette kan kun oppnås ved å bruke nestede if-setninger, her er noen forsøk på å oppnå samme logikk uten 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; }

Først kan det virke som om det fungerer på samme måte, men i dette tilfellet vil arbeidstakeren få en ekstra 20 % lønnsøkning, uavhengig av om han har fullført mer enn 15 oppgaver. Kjør koden og se på utdataene, det vises en verdi på 1200, selv om arbeidstakeren denne gangen ikke har fullført mer enn 15 oppgaver.

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 tilfellet kan det virke som om det skal fungere som tiltenkt, men dessverre er det også feil, utdataene er 1000. Dette er fordi hvis arbeidstakeren fullfører mer enn 15 oppgaver, men ikke jobber mer enn 40 timer, får han ingenting. Derfor vi bruke nøstede if-setninger for å få riktig implementasjon.

Nøstede if-setninger er svært nyttige for å lage beslutningsprosesser og håndtere komplekse situasjoner i koden din. Ved å utforme kode-strukturen nøye og opprettholde lesbarhet, kan du utnytte kraften i nøstede if-setninger for å skrive effektive og vedlikeholdbare programmer.

Merk

Nøstede if-setninger er nødvendige i noen tilfeller men ikke alltid. I tredje seksjon diskuterer vi når, hvorfor og hvordan de kan unngås.

Oppgave

Swipe to start coding

Du utvikler et kinobillettsystem. Billettprisene varierer avhengig av kundens alder og om det er helg eller hverdag.

  1. Bruk nøstede if-setninger for å bestemme billettprisen:
    • Hvis kunden er under 18 år, ta:
      • 12.0 i helgene
      • 8.0 på hverdager
    • Hvis kunden er mellom 18 og 60 år, ta:
      • 20.0 i helgene
      • 15.0 på hverdager
    • Hvis kunden er over 60 år, ta:
      • 16.0 i helgene
      • 10.0 på hverdager
  2. Returner billettprisen fra funksjonen.

Eksempel

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

Løsning

solution.cpp

solution.cpp

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 5
single

single

some-alt