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

bookUtfordring: Nestede 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 til en annen if-setning inni. Tenk deg et scenario der vi ønsker å fastslå en arbeidstakers lønn basert på 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 vedkommende har fullført mer enn 15 oppgaver. Kjør koden og se på utdataene, den viser 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 forventet, 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 vedkommende ingenting. Derfor vi bruke nøstede if-setninger for å få riktig implementasjon.

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

Note
Merk

Nestede if-setninger er nødvendige i enkelte tilfeller men ikke alltid. I den tredje delen vil vi diskutere når, hvorfor og hvordan de kan unngås.

Oppgave

Swipe to start coding

Du lager 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 betalt:
      • 12.0 i helgene
      • 8.0 på hverdager
    • Hvis kunden er mellom 18 og 60 år, ta betalt:
      • 20.0 i helgene
      • 15.0 på hverdager
    • Hvis kunden er over 60 år, ta betalt:
      • 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

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

close

Awesome!

Completion rate improved to 7.69

bookUtfordring: Nestede 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 til en annen if-setning inni. Tenk deg et scenario der vi ønsker å fastslå en arbeidstakers lønn basert på 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 vedkommende har fullført mer enn 15 oppgaver. Kjør koden og se på utdataene, den viser 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 forventet, 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 vedkommende ingenting. Derfor vi bruke nøstede if-setninger for å få riktig implementasjon.

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

Note
Merk

Nestede if-setninger er nødvendige i enkelte tilfeller men ikke alltid. I den tredje delen vil vi diskutere når, hvorfor og hvordan de kan unngås.

Oppgave

Swipe to start coding

Du lager 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 betalt:
      • 12.0 i helgene
      • 8.0 på hverdager
    • Hvis kunden er mellom 18 og 60 år, ta betalt:
      • 20.0 i helgene
      • 15.0 på hverdager
    • Hvis kunden er over 60 år, ta betalt:
      • 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

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