Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi : Instructions If Imbriquées | Introduction aux Instructions Conditionnelles
Instructions Conditionnelles en C++

bookDéfi : Instructions If Imbriquées

Une instruction if imbriquée est simplement une instruction if à l'intérieur d'une autre instruction if. Cette structure permet d'évaluer plusieurs conditions, l'une après l'autre, et d'exécuter des blocs de code spécifiques.

nested_if.h

nested_if.h

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

L'instruction if extérieure agit comme un gardien, et selon son évaluation, elle peut ouvrir la porte à une autre instruction if à l'intérieur. Considérons un scénario où l'on souhaite déterminer le salaire d'un employé en fonction de ses performances.

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

Ce code calcule le nouveau salaire d’un employé en fonction du nombre de tâches accomplies et des heures travaillées, avec une augmentation de 20 % si le nombre de tâches dépasse 15 et une augmentation supplémentaire de 20 % si le nombre d’heures travaillées dépasse 40. Comme vous pouvez le constater, le calcul actuel donne 1200. Ce résultat ne peut être obtenu qu’en utilisant des instructions if imbriquées ; voici quelques tentatives pour obtenir la même logique sans les utiliser.

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

Au premier abord, cela peut sembler fonctionner de la même manière, mais dans ce cas, le travailleur recevra une augmentation supplémentaire de 20 %, qu'il ait ou non accompli plus de 15 tâches. Exécuter le code et observer la sortie, qui affiche une valeur de 1200, même si cette fois le travailleur n'a pas accompli plus de 15 tâches.

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

Dans ce cas, il peut sembler que cela devrait fonctionner comme prévu, mais malheureusement, c'est également incorrect, la sortie est 1000. En effet, si le travailleur accomplit plus de 15 tâches mais ne travaille pas plus de 40 heures, il ne recevra rien. Il est donc nécessaire d'utiliser des instructions if imbriquées afin d'obtenir la bonne implémentation.

Les instructions if imbriquées sont particulièrement utiles pour créer des processus de prise de décision et gérer des scénarios complexes dans votre code. En concevant soigneusement la structure de votre code et en maintenant sa lisibilité, vous pouvez exploiter la puissance des instructions if imbriquées afin d'écrire des programmes efficaces et faciles à maintenir.

Remarque

Les instructions if imbriquées sont nécessaires dans certains cas mais pas toujours. Dans la troisième section, nous aborderons quand, pourquoi et comment les éviter.

Tâche

Swipe to start coding

Vous développez un système de billetterie de cinéma. Les prix des billets varient en fonction de l'âge du client et selon qu'il s'agit d'un week-end ou d'un jour de semaine.

  1. Utilisez des instructions if imbriquées pour déterminer le prix du billet :
    • Si le client a moins de 18 ans, facturez :
      • 12.0 le week-end
      • 8.0 en semaine
    • Si le client a entre 18 et 60 ans, facturez :
      • 20.0 le week-end
      • 15.0 en semaine
    • Si le client a plus de 60 ans, facturez :
      • 16.0 le week-end
      • 10.0 en semaine
  2. Retournez le prix du billet depuis la fonction.

Exemple

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

Solution

solution.cpp

solution.cpp

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 5
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

close

Awesome!

Completion rate improved to 7.69

bookDéfi : Instructions If Imbriquées

Glissez pour afficher le menu

Une instruction if imbriquée est simplement une instruction if à l'intérieur d'une autre instruction if. Cette structure permet d'évaluer plusieurs conditions, l'une après l'autre, et d'exécuter des blocs de code spécifiques.

nested_if.h

nested_if.h

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

L'instruction if extérieure agit comme un gardien, et selon son évaluation, elle peut ouvrir la porte à une autre instruction if à l'intérieur. Considérons un scénario où l'on souhaite déterminer le salaire d'un employé en fonction de ses performances.

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

Ce code calcule le nouveau salaire d’un employé en fonction du nombre de tâches accomplies et des heures travaillées, avec une augmentation de 20 % si le nombre de tâches dépasse 15 et une augmentation supplémentaire de 20 % si le nombre d’heures travaillées dépasse 40. Comme vous pouvez le constater, le calcul actuel donne 1200. Ce résultat ne peut être obtenu qu’en utilisant des instructions if imbriquées ; voici quelques tentatives pour obtenir la même logique sans les utiliser.

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

Au premier abord, cela peut sembler fonctionner de la même manière, mais dans ce cas, le travailleur recevra une augmentation supplémentaire de 20 %, qu'il ait ou non accompli plus de 15 tâches. Exécuter le code et observer la sortie, qui affiche une valeur de 1200, même si cette fois le travailleur n'a pas accompli plus de 15 tâches.

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

Dans ce cas, il peut sembler que cela devrait fonctionner comme prévu, mais malheureusement, c'est également incorrect, la sortie est 1000. En effet, si le travailleur accomplit plus de 15 tâches mais ne travaille pas plus de 40 heures, il ne recevra rien. Il est donc nécessaire d'utiliser des instructions if imbriquées afin d'obtenir la bonne implémentation.

Les instructions if imbriquées sont particulièrement utiles pour créer des processus de prise de décision et gérer des scénarios complexes dans votre code. En concevant soigneusement la structure de votre code et en maintenant sa lisibilité, vous pouvez exploiter la puissance des instructions if imbriquées afin d'écrire des programmes efficaces et faciles à maintenir.

Remarque

Les instructions if imbriquées sont nécessaires dans certains cas mais pas toujours. Dans la troisième section, nous aborderons quand, pourquoi et comment les éviter.

Tâche

Swipe to start coding

Vous développez un système de billetterie de cinéma. Les prix des billets varient en fonction de l'âge du client et selon qu'il s'agit d'un week-end ou d'un jour de semaine.

  1. Utilisez des instructions if imbriquées pour déterminer le prix du billet :
    • Si le client a moins de 18 ans, facturez :
      • 12.0 le week-end
      • 8.0 en semaine
    • Si le client a entre 18 et 60 ans, facturez :
      • 20.0 le week-end
      • 15.0 en semaine
    • Si le client a plus de 60 ans, facturez :
      • 16.0 le week-end
      • 10.0 en semaine
  2. Retournez le prix du billet depuis la fonction.

Exemple

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

Solution

solution.cpp

solution.cpp

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 5
single

single

some-alt