Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utmaning: Nästlade If-satser | Introduktion till Villkorssatser
C++ Villkorssatser

bookUtmaning: Nästlade If-satser

Ett nästlat if-uttryck är helt enkelt ett if-uttryck inuti ett annat if-uttryck. Denna struktur möjliggör utvärdering av flera villkor, ett efter ett, och exekvering av specifika kodblock.

nested_if.h

nested_if.h

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

Det yttre if-uttrycket fungerar som en grindvakt, och baserat på dess utvärdering kan det öppna dörren till ett annat if-uttryck inuti. Tänk dig ett scenario där vi vill fastställa en arbetares lön baserat på deras prestation.

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; }

Denna kod beräknar en anställds nya lön baserat på antalet slutförda uppgifter och arbetade timmar, med en ökning på 20% om uppgifterna är fler än 15 och ytterligare en ökning på 20% om arbetade timmar är fler än 40. Som du kan se är den aktuella beräkningen 1200. Detta kan endast uppnås genom att använda nästlade if-satser, här är några försök att uppnå samma logik utan 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; }

Till en början kan det verka som att det fungerar på samma sätt, men i detta fall kommer arbetaren att få en extra 20% löneökning, oavsett om personen har slutfört fler än 15 uppgifter. Kör koden och titta på utdata, den visar ett värde på 1200, även om arbetaren denna gång inte slutförde fler än 15 uppgifter.

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 det fallet kan det verka som att det borde fungera som avsett, men tyvärr är det också felaktigt, utdata är 1000. Detta beror på att om arbetaren slutför fler än 15 uppgifter men inte arbetar mer än 40 timmar, får personen ingenting. Därför måste vi använda nästlade if-satser för att få rätt implementation.

Nästa if-satser är mycket användbara för att skapa beslutsprocesser och hantera komplexa scenarier i din kod. Genom att noggrant utforma din kodstruktur och bibehålla läsbarheten kan du utnyttja kraften i nästlade if-satser för att skriva effektiva och underhållbara program.

Obs

Nästlade if-satser är nödvändiga i vissa fall men inte alltid. I den tredje sektionen kommer vi att diskutera när, varför och hur man undviker dem.

Uppgift

Swipe to start coding

Du skapar ett biobiljettsystem. Biljettpriserna varierar beroende på kundens ålder och om det är helg eller vardag.

  1. Använd nästlade if-satser för att bestämma biljettpriset:
    • Om kunden är under 18 år, ta ut:
      • 12.0 på helger
      • 8.0 på vardagar
    • Om kunden är mellan 18 och 60 år, ta ut:
      • 20.0 på helger
      • 15.0 på vardagar
    • Om kunden är över 60 år, ta ut:
      • 16.0 på helger
      • 10.0 på vardagar
  2. Returnera biljettpriset från funktionen.

Exempel

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

Lösning

solution.cpp

solution.cpp

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 5
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

close

Awesome!

Completion rate improved to 7.69

bookUtmaning: Nästlade If-satser

Svep för att visa menyn

Ett nästlat if-uttryck är helt enkelt ett if-uttryck inuti ett annat if-uttryck. Denna struktur möjliggör utvärdering av flera villkor, ett efter ett, och exekvering av specifika kodblock.

nested_if.h

nested_if.h

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

Det yttre if-uttrycket fungerar som en grindvakt, och baserat på dess utvärdering kan det öppna dörren till ett annat if-uttryck inuti. Tänk dig ett scenario där vi vill fastställa en arbetares lön baserat på deras prestation.

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; }

Denna kod beräknar en anställds nya lön baserat på antalet slutförda uppgifter och arbetade timmar, med en ökning på 20% om uppgifterna är fler än 15 och ytterligare en ökning på 20% om arbetade timmar är fler än 40. Som du kan se är den aktuella beräkningen 1200. Detta kan endast uppnås genom att använda nästlade if-satser, här är några försök att uppnå samma logik utan 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; }

Till en början kan det verka som att det fungerar på samma sätt, men i detta fall kommer arbetaren att få en extra 20% löneökning, oavsett om personen har slutfört fler än 15 uppgifter. Kör koden och titta på utdata, den visar ett värde på 1200, även om arbetaren denna gång inte slutförde fler än 15 uppgifter.

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 det fallet kan det verka som att det borde fungera som avsett, men tyvärr är det också felaktigt, utdata är 1000. Detta beror på att om arbetaren slutför fler än 15 uppgifter men inte arbetar mer än 40 timmar, får personen ingenting. Därför måste vi använda nästlade if-satser för att få rätt implementation.

Nästa if-satser är mycket användbara för att skapa beslutsprocesser och hantera komplexa scenarier i din kod. Genom att noggrant utforma din kodstruktur och bibehålla läsbarheten kan du utnyttja kraften i nästlade if-satser för att skriva effektiva och underhållbara program.

Obs

Nästlade if-satser är nödvändiga i vissa fall men inte alltid. I den tredje sektionen kommer vi att diskutera när, varför och hur man undviker dem.

Uppgift

Swipe to start coding

Du skapar ett biobiljettsystem. Biljettpriserna varierar beroende på kundens ålder och om det är helg eller vardag.

  1. Använd nästlade if-satser för att bestämma biljettpriset:
    • Om kunden är under 18 år, ta ut:
      • 12.0 på helger
      • 8.0 på vardagar
    • Om kunden är mellan 18 och 60 år, ta ut:
      • 20.0 på helger
      • 15.0 på vardagar
    • Om kunden är över 60 år, ta ut:
      • 16.0 på helger
      • 10.0 på vardagar
  2. Returnera biljettpriset från funktionen.

Exempel

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

Lösning

solution.cpp

solution.cpp

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 5
single

single

some-alt