Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Sfida: Istruzioni If Annidate | Introduzione alle Istruzioni Condizionali
Istruzioni Condizionali in C++

bookSfida: 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

nested_if.h

copy
1234567891011121314
if (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

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

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

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

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

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

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.

Note
Nota

Le istruzioni if annidate sono necessarie in alcuni casi ma non sempre. Nella terza sezione discuteremo quando, perché e come evitarle.

Compito

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.

  1. Utilizza istruzioni if annidate per determinare il prezzo del biglietto:
    • Se il cliente ha meno di 18 anni, applica:
      • 12.0 nei fine settimana
      • 8.0 nei giorni feriali
    • Se il cliente ha tra 18 e 60 anni, applica:
      • 20.0 nei fine settimana
      • 15.0 nei giorni feriali
    • Se il cliente ha più di 60 anni, applica:
      • 16.0 nei fine settimana
      • 10.0 nei giorni feriali
  2. Restituisci il prezzo del biglietto dalla funzione.

Esempio

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

Soluzione

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 5
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Suggested prompts:

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?

close

Awesome!

Completion rate improved to 7.69

bookSfida: 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

nested_if.h

copy
1234567891011121314
if (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

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

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

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

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

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

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.

Note
Nota

Le istruzioni if annidate sono necessarie in alcuni casi ma non sempre. Nella terza sezione discuteremo quando, perché e come evitarle.

Compito

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.

  1. Utilizza istruzioni if annidate per determinare il prezzo del biglietto:
    • Se il cliente ha meno di 18 anni, applica:
      • 12.0 nei fine settimana
      • 8.0 nei giorni feriali
    • Se il cliente ha tra 18 e 60 anni, applica:
      • 20.0 nei fine settimana
      • 15.0 nei giorni feriali
    • Se il cliente ha più di 60 anni, applica:
      • 16.0 nei fine settimana
      • 10.0 nei giorni feriali
  2. Restituisci il prezzo del biglietto dalla funzione.

Esempio

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

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 5
single

single

some-alt