Uitdaging: Geneste If-instructies
Een geneste if-verklaring is eenvoudigweg een if-verklaring binnen een andere if-verklaring. Deze structuur maakt het mogelijk om meerdere voorwaarden na elkaar te evalueren en specifieke codeblokken uit te voeren.
nested_if.h
1234567891011121314if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }
De buitenste if-verklaring fungeert als poortwachter en op basis van de evaluatie kan deze de deur openen naar een andere if-verklaring binnenin. Beschouw een scenario waarin het salaris van een werknemer wordt bepaald op basis van hun prestaties.
main.cpp
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; }
Deze code berekent het nieuwe salaris van een werknemer op basis van het aantal voltooide taken en gewerkte uren, met een verhoging van 20% als het aantal taken meer dan 15 is en een extra verhoging van 20% als het aantal gewerkte uren meer dan 40 is. Zoals te zien is, is de huidige berekening 1200. Dit resultaat kan alleen worden bereikt door gebruik te maken van geneste if-verklaringen. Hier volgen enkele pogingen om dezelfde logica te verkrijgen zonder deze geneste structuur.
main.cpp
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; }
Aanvankelijk lijkt het misschien hetzelfde te werken, maar in dit geval ontvangt de werknemer een extra loonsverhoging van 20%, ongeacht of hij meer dan 15 taken heeft voltooid. Voer de code uit en bekijk de uitvoer; deze toont een waarde van 1200, zelfs als de werknemer deze keer niet meer dan 15 taken heeft voltooid.
main.cpp
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; }
In dat geval lijkt het alsof het correct zou moeten werken, maar helaas is het ook onjuist; de uitvoer is 1000. Dit komt doordat als de werknemer meer dan 15 taken voltooit maar niet meer dan 40 uur werkt, hij niets ontvangt. Daarom moeten we geneste if-statements gebruiken om de juiste implementatie te verkrijgen.
Geneste if-verklaringen zijn zeer nuttig voor het creëren van beslissingsprocessen en het afhandelen van complexe scenario's in je code. Door zorgvuldig je code-structuur te ontwerpen en de leesbaarheid te behouden, kun je de kracht van geneste if-verklaringen benutten om efficiënte en onderhoudbare programma's te schrijven.
Geneste if-verklaringen zijn in sommige gevallen noodzakelijk maar niet altijd. In het derde gedeelte bespreken we wanneer, waarom en hoe je ze kunt vermijden.
Swipe to start coding
Je ontwikkelt een bioscoopkaartjessysteem. De ticketprijzen variëren afhankelijk van de leeftijd van de klant en of het een weekend of doordeweekse dag is.
- Gebruik geneste if-statements om de ticketprijs te bepalen:
- Als de klant jonger dan 18 is, reken:
12.0in het weekend8.0op doordeweekse dagen
- Als de klant tussen 18 en 60 is, reken:
20.0in het weekend15.0op doordeweekse dagen
- Als de klant ouder dan 60 is, reken:
16.0in het weekend10.0op doordeweekse dagen
- Als de klant jonger dan 18 is, reken:
- Geef de ticketprijs terug vanuit de functie.
Voorbeeld
calculateTicketPrice(16, true) → 12.0
calculateTicketPrice(30, false) → 15.0
calculateTicketPrice(70, true) → 16.0
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 7.69
Uitdaging: Geneste If-instructies
Veeg om het menu te tonen
Een geneste if-verklaring is eenvoudigweg een if-verklaring binnen een andere if-verklaring. Deze structuur maakt het mogelijk om meerdere voorwaarden na elkaar te evalueren en specifieke codeblokken uit te voeren.
nested_if.h
1234567891011121314if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }
De buitenste if-verklaring fungeert als poortwachter en op basis van de evaluatie kan deze de deur openen naar een andere if-verklaring binnenin. Beschouw een scenario waarin het salaris van een werknemer wordt bepaald op basis van hun prestaties.
main.cpp
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; }
Deze code berekent het nieuwe salaris van een werknemer op basis van het aantal voltooide taken en gewerkte uren, met een verhoging van 20% als het aantal taken meer dan 15 is en een extra verhoging van 20% als het aantal gewerkte uren meer dan 40 is. Zoals te zien is, is de huidige berekening 1200. Dit resultaat kan alleen worden bereikt door gebruik te maken van geneste if-verklaringen. Hier volgen enkele pogingen om dezelfde logica te verkrijgen zonder deze geneste structuur.
main.cpp
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; }
Aanvankelijk lijkt het misschien hetzelfde te werken, maar in dit geval ontvangt de werknemer een extra loonsverhoging van 20%, ongeacht of hij meer dan 15 taken heeft voltooid. Voer de code uit en bekijk de uitvoer; deze toont een waarde van 1200, zelfs als de werknemer deze keer niet meer dan 15 taken heeft voltooid.
main.cpp
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; }
In dat geval lijkt het alsof het correct zou moeten werken, maar helaas is het ook onjuist; de uitvoer is 1000. Dit komt doordat als de werknemer meer dan 15 taken voltooit maar niet meer dan 40 uur werkt, hij niets ontvangt. Daarom moeten we geneste if-statements gebruiken om de juiste implementatie te verkrijgen.
Geneste if-verklaringen zijn zeer nuttig voor het creëren van beslissingsprocessen en het afhandelen van complexe scenario's in je code. Door zorgvuldig je code-structuur te ontwerpen en de leesbaarheid te behouden, kun je de kracht van geneste if-verklaringen benutten om efficiënte en onderhoudbare programma's te schrijven.
Geneste if-verklaringen zijn in sommige gevallen noodzakelijk maar niet altijd. In het derde gedeelte bespreken we wanneer, waarom en hoe je ze kunt vermijden.
Swipe to start coding
Je ontwikkelt een bioscoopkaartjessysteem. De ticketprijzen variëren afhankelijk van de leeftijd van de klant en of het een weekend of doordeweekse dag is.
- Gebruik geneste if-statements om de ticketprijs te bepalen:
- Als de klant jonger dan 18 is, reken:
12.0in het weekend8.0op doordeweekse dagen
- Als de klant tussen 18 en 60 is, reken:
20.0in het weekend15.0op doordeweekse dagen
- Als de klant ouder dan 60 is, reken:
16.0in het weekend10.0op doordeweekse dagen
- Als de klant jonger dan 18 is, reken:
- Geef de ticketprijs terug vanuit de functie.
Voorbeeld
calculateTicketPrice(16, true) → 12.0
calculateTicketPrice(30, false) → 15.0
calculateTicketPrice(70, true) → 16.0
Oplossing
Bedankt voor je feedback!
single