Sfida: Istruzioni If Annidate
Un'istruzione if annidata è semplicemente un'istruzione if all'interno di un'altra istruzione if. Questa struttura consente di valutare più condizioni, una dopo l'altra, ed eseguire specifici blocchi di codice.
nested_if.h
1234567891011121314if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }
L'istruzione if esterna funziona come un portiere e, in base alla sua valutazione, può consentire l'accesso a un'altra istruzione if interna. Si consideri uno scenario in cui si desidera determinare lo stipendio di un lavoratore in base alle sue prestazioni.
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; }
Questo codice calcola il nuovo stipendio di un dipendente in base al numero di compiti completati e alle ore lavorate, con un aumento del 20% se i compiti sono superiori a 15 e un ulteriore aumento del 20% se le ore lavorate sono superiori a 40. Come puoi vedere, il calcolo attuale è 1200. Questo risultato può essere ottenuto solo utilizzando istruzioni if annidate; di seguito alcuni tentativi di ottenere la stessa logica senza di esse.
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; }
All'inizio potrebbe sembrare che funzioni allo stesso modo, ma in questo caso il lavoratore riceverà un aumento extra del 20% indipendentemente dal fatto che abbia completato più di 15 compiti. Esegui il codice e osserva l'output, che mostra un valore di 1200, anche se questa volta il lavoratore non ha completato più di 15 compiti.
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 quel caso, potrebbe sembrare che debba funzionare come previsto, ma purtroppo è anch'esso errato, l'output è 1000. Questo perché se il lavoratore completa più di 15 compiti ma non lavora più di 40 ore, non riceverà nulla. Quindi, è necessario utilizzare istruzioni if annidate per ottenere la corretta implementazione.
Le istruzioni if annidate sono particolarmente utili per creare processi decisionali e gestire scenari complessi nel codice. Progettando attentamente la struttura del codice e mantenendo la leggibilità, è possibile sfruttare la potenza delle istruzioni if annidate per scrivere programmi efficienti e facilmente manutenibili.
Le istruzioni if annidate sono necessarie in alcuni casi ma non sempre. Nella terza sezione discuteremo quando, perché e come evitarle.
Swipe to start coding
Stai creando un sistema di biglietteria cinematografica. I prezzi dei biglietti variano in base all'età del cliente e se si tratta di un fine settimana o di un giorno feriale.
- Utilizza istruzioni if annidate per determinare il prezzo del biglietto:
- Se il cliente ha meno di 18 anni, applica:
12.0nei fine settimana8.0nei giorni feriali
- Se il cliente ha tra 18 e 60 anni, applica:
20.0nei fine settimana15.0nei giorni feriali
- Se il cliente ha più di 60 anni, applica:
16.0nei fine settimana10.0nei giorni feriali
- Se il cliente ha meno di 18 anni, applica:
- Restituisci il prezzo del biglietto dalla funzione.
Esempio
calculateTicketPrice(16, true) → 12.0
calculateTicketPrice(30, false) → 15.0
calculateTicketPrice(70, true) → 16.0
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you show an example of nested `if` statements in code?
What are some best practices for using nested `if` statements?
Are there alternatives to nested `if` statements for complex logic?
Awesome!
Completion rate improved to 7.69
Sfida: Istruzioni If Annidate
Scorri per mostrare il menu
Un'istruzione if annidata è semplicemente un'istruzione if all'interno di un'altra istruzione if. Questa struttura consente di valutare più condizioni, una dopo l'altra, ed eseguire specifici blocchi di codice.
nested_if.h
1234567891011121314if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }
L'istruzione if esterna funziona come un portiere e, in base alla sua valutazione, può consentire l'accesso a un'altra istruzione if interna. Si consideri uno scenario in cui si desidera determinare lo stipendio di un lavoratore in base alle sue prestazioni.
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; }
Questo codice calcola il nuovo stipendio di un dipendente in base al numero di compiti completati e alle ore lavorate, con un aumento del 20% se i compiti sono superiori a 15 e un ulteriore aumento del 20% se le ore lavorate sono superiori a 40. Come puoi vedere, il calcolo attuale è 1200. Questo risultato può essere ottenuto solo utilizzando istruzioni if annidate; di seguito alcuni tentativi di ottenere la stessa logica senza di esse.
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; }
All'inizio potrebbe sembrare che funzioni allo stesso modo, ma in questo caso il lavoratore riceverà un aumento extra del 20% indipendentemente dal fatto che abbia completato più di 15 compiti. Esegui il codice e osserva l'output, che mostra un valore di 1200, anche se questa volta il lavoratore non ha completato più di 15 compiti.
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 quel caso, potrebbe sembrare che debba funzionare come previsto, ma purtroppo è anch'esso errato, l'output è 1000. Questo perché se il lavoratore completa più di 15 compiti ma non lavora più di 40 ore, non riceverà nulla. Quindi, è necessario utilizzare istruzioni if annidate per ottenere la corretta implementazione.
Le istruzioni if annidate sono particolarmente utili per creare processi decisionali e gestire scenari complessi nel codice. Progettando attentamente la struttura del codice e mantenendo la leggibilità, è possibile sfruttare la potenza delle istruzioni if annidate per scrivere programmi efficienti e facilmente manutenibili.
Le istruzioni if annidate sono necessarie in alcuni casi ma non sempre. Nella terza sezione discuteremo quando, perché e come evitarle.
Swipe to start coding
Stai creando un sistema di biglietteria cinematografica. I prezzi dei biglietti variano in base all'età del cliente e se si tratta di un fine settimana o di un giorno feriale.
- Utilizza istruzioni if annidate per determinare il prezzo del biglietto:
- Se il cliente ha meno di 18 anni, applica:
12.0nei fine settimana8.0nei giorni feriali
- Se il cliente ha tra 18 e 60 anni, applica:
20.0nei fine settimana15.0nei giorni feriali
- Se il cliente ha più di 60 anni, applica:
16.0nei fine settimana10.0nei giorni feriali
- Se il cliente ha meno di 18 anni, applica:
- Restituisci il prezzo del biglietto dalla funzione.
Esempio
calculateTicketPrice(16, true) → 12.0
calculateTicketPrice(30, false) → 15.0
calculateTicketPrice(70, true) → 16.0
Soluzione
Grazie per i tuoi commenti!
single