Structures de flux de contrôle en C++

C++Beginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à implémenter diverses structures de flux de contrôle en C++, y compris les instructions if-else à une ou plusieurs branches, les instructions switch, les boucles for contrôlées par compteur, les boucles while contrôlées par entrée, les boucles do-while contrôlées par sortie et les boucles imbriquées. Vous explorerez également l'utilisation des instructions break et continue pour contrôler l'exécution des boucles. Ces constructions de programmation fondamentales sont essentielles pour développer des applications plus complexes et dynamiques en C++.

Le laboratoire couvre une gamme de sujets, allant de l'écriture d'instructions conditionnelles à la création de boucles avec différentes logiques d'exécution. À la fin de ce laboratoire, vous aurez une solide compréhension de l'utilisation de ces structures de flux de contrôle pour rendre vos programmes C++ plus flexibles et adaptables à différents scénarios.

Écrire des instructions if-else à une et plusieurs branches

Dans cette étape, vous apprendrez à écrire des instructions if-else à une et plusieurs branches en C++. Les instructions conditionnelles permettent à votre programme de prendre des décisions et d'exécuter différents blocs de code en fonction de conditions spécifiques.

Tout d'abord, accédez au répertoire du projet et créez un nouveau fichier C++ pour ce laboratoire :

cd ~/project
touch conditional_statements.cpp

Ouvrez le fichier conditional_statements.cpp dans le WebIDE et ajoutez le code suivant pour explorer les instructions if-else à une et plusieurs branches :

#include <iostream>

int main() {
    // Single if statement
    int number = 10;
    if (number > 5) {
        std::cout << "Number is greater than 5" << std::endl;
    }

    // if-else statement
    int age = 20;
    if (age >= 18) {
        std::cout << "You are an adult" << std::endl;
    } else {
        std::cout << "You are a minor" << std::endl;
    }

    // Multi-branch if-else statement
    int score = 75;
    if (score >= 90) {
        std::cout << "Grade: A" << std::endl;
    } else if (score >= 80) {
        std::cout << "Grade: B" << std::endl;
    } else if (score >= 70) {
        std::cout << "Grade: C" << std::endl;
    } else if (score >= 60) {
        std::cout << "Grade: D" << std::endl;
    } else {
        std::cout << "Grade: F" << std::endl;
    }

    return 0;
}

Compilez et exécutez le programme :

g++ conditional_statements.cpp -o conditional_statements
./conditional_statements

Exemple de sortie :

Number is greater than 5
You are an adult
Grade: C

Décortiquons les différents types d'instructions if-else :

  1. Instruction if simple :

    • Exécute un bloc de code si la condition est vraie
    • Aucune action alternative si la condition est fausse
  2. Instruction if-else :

    • Fournit deux chemins d'exécution
    • Exécute un bloc si la condition est vraie
    • Exécute un autre bloc si la condition est fausse
  3. Instruction if-else à plusieurs branches :

    • Permet de vérifier plusieurs conditions
    • Utilise else if pour ajouter plus de conditions
    • Le bloc else sert de cas par défaut

Points clés concernant les instructions if-else :

  • Les conditions sont évaluées de haut en bas
  • Seul un bloc de code sera exécuté
  • Utilisez des accolades { } pour définir les blocs de code
  • Des opérateurs de comparaison tels que >, >=, <, <=, ==, != sont utilisés dans les conditions

Créer une instruction switch avec plusieurs étiquettes case

Dans cette étape, vous apprendrez à utiliser l'instruction switch en C++ pour gérer plusieurs conditions basées sur une seule variable. L'instruction switch offre une alternative aux multiples instructions if-else lorsqu'il s'agit de comparer une variable à différentes valeurs constantes.

Tout d'abord, accédez au répertoire du projet et créez un nouveau fichier C++ :

cd ~/project
touch switch_statement.cpp

Ouvrez le fichier switch_statement.cpp dans le WebIDE et ajoutez le code suivant pour explorer les instructions switch :

#include <iostream>

int main() {
    // Basic switch statement with multiple case labels
    int dayNumber = 3;

    switch (dayNumber) {
        case 1:
            std::cout << "Monday" << std::endl;
            break;
        case 2:
            std::cout << "Tuesday" << std::endl;
            break;
        case 3:
            std::cout << "Wednesday" << std::endl;
            break;
        case 4:
            std::cout << "Thursday" << std::endl;
            break;
        case 5:
            std::cout << "Friday" << std::endl;
            break;
        case 6:
            std::cout << "Saturday" << std::endl;
            break;
        case 7:
            std::cout << "Sunday" << std::endl;
            break;
        default:
            std::cout << "Invalid day number" << std::endl;
    }

    // Switch statement with multiple cases sharing the same code block
    char grade = 'B';

    switch (grade) {
        case 'A':
        case 'B':
            std::cout << "Excellent performance!" << std::endl;
            break;
        case 'C':
        case 'D':
            std::cout << "Good performance" << std::endl;
            break;
        case 'F':
            std::cout << "Need improvement" << std::endl;
            break;
        default:
            std::cout << "Invalid grade" << std::endl;
    }

    return 0;
}

Compilez et exécutez le programme :

g++ switch_statement.cpp -o switch_statement
./switch_statement

Exemple de sortie :

Wednesday
Excellent performance!

Points clés concernant les instructions switch :

  1. Utilisée pour sélectionner l'un des nombreux blocs de code à exécuter
  2. Fonctionne avec des types entiers (int, char, enum)
  3. Chaque case représente une valeur possible
  4. L'instruction break empêche la poursuite dans le case suivant
  5. Le case default gère les valeurs non correspondantes aux autres case
  6. Plusieurs case peuvent partager le même bloc de code

Règles importantes pour les instructions switch :

  • Chaque case doit se terminer par un break ou un return
  • Les case doivent être des expressions constantes
  • Seul un bloc de code sera exécuté
  • Le case default est facultatif mais recommandé

Initialiser des boucles for contrôlées par compteur

Dans cette étape, vous apprendrez à utiliser les boucles for contrôlées par compteur en C++. Les boucles for sont essentielles pour exécuter un bloc de code un nombre spécifique de fois, ce qui les rend parfaites pour les tâches qui nécessitent une répétition avec un nombre d'itérations connu.

Tout d'abord, accédez au répertoire du projet et créez un nouveau fichier C++ :

cd ~/project
touch for_loops.cpp

Ouvrez le fichier for_loops.cpp dans le WebIDE et ajoutez le code suivant pour explorer différentes manières d'initialiser et d'utiliser les boucles for :

#include <iostream>

int main() {
    // Basic counter-controlled for loop
    std::cout << "Counting from 1 to 5:" << std::endl;
    for (int i = 1; i <= 5; i++) {
        std::cout << i << " ";
    }
    std::cout << std::endl;

    // For loop with multiple statements in initialization
    std::cout << "Counting even numbers from 0 to 10:" << std::endl;
    for (int j = 0, k = 10; j <= k; j += 2) {
        std::cout << j << " ";
    }
    std::cout << std::endl;

    // For loop with multiplication table
    std::cout << "Multiplication table for 5:" << std::endl;
    for (int m = 1; m <= 10; m++) {
        std::cout << "5 x " << m << " = " << (5 * m) << std::endl;
    }

    return 0;
}

Compilez et exécutez le programme :

g++ for_loops.cpp -o for_loops
./for_loops

Exemple de sortie :

Counting from 1 to 5:
1 2 3 4 5
Counting even numbers from 0 to 10:
0 2 4 6 8 10
Multiplication table for 5:
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
5 x 10 = 50

Composants clés d'une boucle for :

  1. Initialisation : int i = 1 - Définit la valeur initiale du compteur
  2. Condition : i <= 5 - Définit quand la boucle doit continuer
  3. Incrémentation/Décrémentation : i++ - Modifie le compteur après chaque itération

Caractéristiques importantes des boucles for :

  • Idéales pour un nombre connu d'itérations
  • Peuvent avoir plusieurs instructions d'initialisation
  • Peuvent modifier plusieurs variables à chaque itération
  • Flexibles pour contrôler l'exécution de la boucle

Créer des boucles while avec une logique de contrôle d'entrée

Dans cette étape, vous apprendrez à utiliser les boucles while en C++. Une boucle while est une boucle contrôlée à l'entrée qui exécute répétitivement un bloc de code tant qu'une condition spécifiée reste vraie. La condition est vérifiée avant chaque itération, ce qui signifie que la boucle peut ne pas s'exécuter du tout si la condition initiale est fausse.

Tout d'abord, accédez au répertoire du projet et créez un nouveau fichier C++ :

cd ~/project
touch while_loops.cpp

Ouvrez le fichier while_loops.cpp dans le WebIDE et ajoutez le code suivant pour explorer différentes manières d'utiliser les boucles while :

#include <iostream>

int main() {
    // Basic while loop counting
    std::cout << "Counting from 1 to 5:" << std::endl;
    int count = 1;
    while (count <= 5) {
        std::cout << count << " ";
        count++;
    }
    std::cout << std::endl;

    // While loop with user input validation
    int userNumber;
    std::cout << "Enter a number between 1 and 10: ";
    std::cin >> userNumber;

    while (userNumber < 1 || userNumber > 10) {
        std::cout << "Invalid input. Enter a number between 1 and 10: ";
        std::cin >> userNumber;
    }
    std::cout << "You entered a valid number: " << userNumber << std::endl;

    // While loop calculating factorial
    int number = 5;
    int factorial = 1;
    int i = 1;

    std::cout << "Calculating factorial of " << number << ":" << std::endl;
    while (i <= number) {
        factorial *= i;
        i++;
    }
    std::cout << number << "! = " << factorial << std::endl;

    return 0;
}

Compilez et exécutez le programme :

g++ while_loops.cpp -o while_loops
./while_loops

Exemple de sortie :

Counting from 1 to 5:
1 2 3 4 5
Enter a number between 1 and 10: 15
Invalid input. Enter a number between 1 and 10: 7
You entered a valid number: 7
Calculating factorial of 5:
5! = 120

Caractéristiques clés des boucles while :

  1. La condition est vérifiée avant chaque itération
  2. La boucle peut ne pas s'exécuter si la condition initiale est fausse
  3. Nécessite une incrémentation/mise à jour manuelle de la variable de boucle
  4. Utile dans les situations où le nombre d'itérations n'est pas connu à l'avance

Composants importants des boucles while :

  • Initialisation de la variable de boucle avant la boucle
  • Condition qui contrôle l'exécution de la boucle
  • Mise à jour de la variable de boucle à l'intérieur du corps de la boucle

Implémenter des boucles do-while pour une logique de contrôle de sortie

Dans cette étape, vous allez apprendre à utiliser les boucles do-while en C++. Contrairement aux boucles while, les boucles do-while sont contrôlées à la sortie, ce qui signifie que la condition est vérifiée après l'exécution du corps de la boucle. Cela garantit que le corps de la boucle est exécuté au moins une fois, quelle que soit la condition initiale.

Tout d'abord, accédez au répertoire du projet et créez un nouveau fichier C++ :

cd ~/project
touch do_while_loops.cpp

Ouvrez le fichier do_while_loops.cpp dans le WebIDE et ajoutez le code suivant pour explorer différentes manières d'utiliser les boucles do-while :

#include <iostream>
#include <cstdlib>
#include <ctime>

int main() {
    // Basic do-while loop for user input validation
    int userNumber;
    do {
        std::cout << "Enter a number between 1 and 10: ";
        std::cin >> userNumber;
    } while (userNumber < 1 || userNumber > 10);
    std::cout << "You entered a valid number: " << userNumber << std::endl;

    // Simulating a dice rolling game
    srand(time(0));  // Seed for random number generation
    int attempts = 0;
    int targetNumber = 6;
    int diceRoll;

    std::cout << "Dice Rolling Game:" << std::endl;
    do {
        diceRoll = rand() % 6 + 1;  // Generate random number between 1 and 6
        attempts++;
        std::cout << "Roll " << attempts << ": You rolled " << diceRoll << std::endl;
    } while (diceRoll!= targetNumber);

    std::cout << "Congratulations! You rolled the target number "
              << targetNumber << " in " << attempts << " attempts." << std::endl;

    return 0;
}

Compilez et exécutez le programme :

g++ do_while_loops.cpp -o do_while_loops
./do_while_loops

Exemple de sortie :

Enter a number between 1 and 10: 15
Enter a number between 1 and 10: 7
You entered a valid number: 7
Dice Rolling Game:
Roll 1: You rolled 1
Roll 2: You rolled 5
Roll 3: You rolled 2
Roll 4: You rolled 5
Roll 5: You rolled 5
Roll 6: You rolled 3
Roll 7: You rolled 4
Roll 8: You rolled 2
Roll 9: You rolled 2
Roll 10: You rolled 2
Roll 11: You rolled 2
Roll 12: You rolled 2
Roll 13: You rolled 1
Roll 14: You rolled 1
Roll 15: You rolled 6
Congratulations! You rolled the target number 6 in 15 attempts.

Caractéristiques clés des boucles do-while :

  1. La condition est vérifiée après l'exécution du corps de la boucle
  2. Garantit au moins une exécution de la boucle
  3. Utile pour la validation des entrées et les jeux
  4. La syntaxe diffère de celle de la boucle while en ce que la condition est vérifiée à la fin

Composants importants des boucles do-while :

  • Le mot-clé do commence le corps de la boucle
  • Le corps de la boucle est toujours exécuté au moins une fois
  • La condition while est évaluée après chaque itération
  • Un point-virgule ; est requis après la condition while

Utiliser break pour sortir prématurément des boucles

Dans cette étape, vous apprendrez à utiliser l'instruction break pour sortir prématurément des boucles en C++. L'instruction break vous permet de terminer immédiatement une boucle et de transférer le contrôle à la première instruction située après la boucle.

Tout d'abord, accédez au répertoire du projet et créez un nouveau fichier C++ :

cd ~/project
touch break_statement.cpp

Ouvrez le fichier break_statement.cpp dans le WebIDE et ajoutez le code suivant pour explorer différentes manières d'utiliser l'instruction break :

#include <iostream>
#include <cstdlib>
#include <ctime>

int main() {
    // Breaking out of a for loop when a condition is met
    std::cout << "Finding the first even number:" << std::endl;
    for (int i = 1; i <= 10; i++) {
        if (i % 2 == 0) {
            std::cout << "First even number found: " << i << std::endl;
            break;
        }
    }

    // Simulating a number guessing game
    srand(time(0));  // Seed for random number generation
    int targetNumber = rand() % 10 + 1;  // Random number between 1 and 10
    int guess;
    int attempts = 0;

    std::cout << "\nNumber Guessing Game:" << std::endl;
    while (true) {
        std::cout << "Enter your guess (1-10): ";
        std::cin >> guess;
        attempts++;

        if (guess == targetNumber) {
            std::cout << "Congratulations! You guessed the number in "
                      << attempts << " attempts." << std::endl;
            break;
        } else if (guess < targetNumber) {
            std::cout << "Too low. Try again." << std::endl;
        } else {
            std::cout << "Too high. Try again." << std::endl;
        }
    }

    return 0;
}

Compilez et exécutez le programme :

g++ break_statement.cpp -o break_statement
./break_statement

Exemple de sortie :

Finding the first even number:
First even number found: 2

Number Guessing Game:
Enter your guess (1-10): 5
Too low. Try again.
Enter your guess (1-10): 8
Too high. Try again.
Enter your guess (1-10): 6
Congratulations! You guessed the number in 3 attempts.

Caractéristiques clés de l'instruction break :

  1. Termine immédiatement la boucle la plus interne
  2. Transfère le contrôle à la première instruction après la boucle
  3. Peut être utilisée dans les boucles for, while et do-while
  4. Utile pour terminer prématurément une boucle en fonction d'une condition

Utilisations importantes de l'instruction break :

  • Sortir des boucles lorsqu'une condition spécifique est remplie
  • Implémenter des algorithmes de recherche
  • Créer des programmes interactifs avec des entrées utilisateur
  • Éviter des itérations inutiles

Passer des itérations de boucle avec l'instruction continue

Dans cette étape, vous apprendrez à utiliser l'instruction continue en C++ pour ignorer l'itération actuelle d'une boucle et passer à l'itération suivante. L'instruction continue vous permet de sauter sélectivement des parties d'une boucle en fonction de conditions spécifiques.

Tout d'abord, accédez au répertoire du projet et créez un nouveau fichier C++ :

cd ~/project
touch continue_statement.cpp

Ouvrez le fichier continue_statement.cpp dans le WebIDE et ajoutez le code suivant pour explorer différentes manières d'utiliser l'instruction continue :

#include <iostream>

int main() {
    // Skipping even numbers in a loop
    std::cout << "Printing odd numbers between 1 and 10:" << std::endl;
    for (int i = 1; i <= 10; i++) {
        if (i % 2 == 0) {
            continue;  // Skip even numbers
        }
        std::cout << i << " ";
    }
    std::cout << std::endl;

    // Filtering out negative numbers in a sum calculation
    int sum = 0;
    int numbers[] = {5, -3, 10, -7, 8, -2, 15};
    int arraySize = sizeof(numbers) / sizeof(numbers[0]);

    std::cout << "\nCalculating sum of positive numbers:" << std::endl;
    for (int j = 0; j < arraySize; j++) {
        if (numbers[j] < 0) {
            continue;  // Skip negative numbers
        }
        sum += numbers[j];
        std::cout << "Added: " << numbers[j] << ", Current Sum: " << sum << std::endl;
    }
    std::cout << "Final Sum of Positive Numbers: " << sum << std::endl;

    return 0;
}

Compilez et exécutez le programme :

g++ continue_statement.cpp -o continue_statement
./continue_statement

Exemple de sortie :

Printing odd numbers between 1 and 10:
1 3 5 7 9

Calculating sum of positive numbers:
Added: 5, Current Sum: 5
Added: 10, Current Sum: 15
Added: 8, Current Sum: 23
Added: 15, Current Sum: 38
Final Sum of Positive Numbers: 38

Caractéristiques clés de l'instruction continue :

  1. Ignore le reste de l'itération actuelle de la boucle
  2. Transfère le contrôle à l'itération suivante de la boucle
  3. Peut être utilisée dans les boucles for, while et do-while
  4. Utile pour le filtrage ou le traitement conditionnel

Utilisations importantes de l'instruction continue :

  • Ignorer des itérations spécifiques en fonction de conditions
  • Filtrer des données dans des boucles
  • Éviter des calculs inutiles
  • Simplifier la logique des boucles

Créer des boucles imbriquées pour les opérations matricielles

Dans cette étape, vous apprendrez à utiliser des boucles imbriquées pour effectuer des opérations sur des tableaux 2D (matrices) en C++. Les boucles imbriquées vous permettent d'itérer à travers les lignes et les colonnes d'une matrice, ce qui permet une manipulation et des calculs de données complexes.

Tout d'abord, accédez au répertoire du projet et créez un nouveau fichier C++ :

cd ~/project
touch nested_loops.cpp

Ouvrez le fichier nested_loops.cpp dans le WebIDE et ajoutez le code suivant pour explorer les opérations matricielles en utilisant des boucles imbriquées :

#include <iostream>
#include <iomanip>

int main() {
    // Define a 3x3 matrix
    int matrix[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };

    // Print the original matrix
    std::cout << "Original Matrix:" << std::endl;
    for (int row = 0; row < 3; row++) {
        for (int col = 0; col < 3; col++) {
            std::cout << std::setw(4) << matrix[row][col];
        }
        std::cout << std::endl;
    }

    // Calculate row sums
    std::cout << "\nRow Sums:" << std::endl;
    for (int row = 0; row < 3; row++) {
        int rowSum = 0;
        for (int col = 0; col < 3; col++) {
            rowSum += matrix[row][col];
        }
        std::cout << "Row " << row + 1 << " Sum: " << rowSum << std::endl;
    }

    // Create and print a multiplication table
    std::cout << "\nMultiplication Table:" << std::endl;
    for (int i = 1; i <= 5; i++) {
        for (int j = 1; j <= 5; j++) {
            std::cout << std::setw(4) << (i * j);
        }
        std::cout << std::endl;
    }

    return 0;
}

Compilez et exécutez le programme :

g++ nested_loops.cpp -o nested_loops
./nested_loops

Exemple de sortie :

Original Matrix:
   1   2   3
   4   5   6
   7   8   9

Row Sums:
Row 1 Sum: 6
Row 2 Sum: 15
Row 3 Sum: 24

Multiplication Table:
   1   2   3   4   5
   2   4   6   8  10
   3   6   9  12  15
   4   8  12  16  20
   5  10  15  20  25

Caractéristiques clés des boucles imbriquées :

  1. Une boucle interne effectue toutes ses itérations pour chaque itération de la boucle externe
  2. Utile pour travailler avec des tableaux multidimensionnels
  3. Peut être utilisée pour créer des motifs complexes et effectuer des opérations matricielles
  4. Généralement utilisée avec des tableaux 2D (matrices) et des structures de données multidimensionnelles

Concepts importants des boucles imbriquées :

  • La boucle externe contrôle le nombre de fois que la boucle interne est exécutée
  • Chaque boucle a sa propre variable compteur
  • Utile pour les opérations basées sur les lignes et les colonnes
  • Peut être utilisée pour générer des motifs, effectuer des calculs et manipuler des données

Gérer la prévention des boucles infinies

Dans cette étape, vous apprendrez à prévenir les boucles infinies en C++ en mettant en œuvre des mécanismes de contrôle de boucle appropriés. Une boucle infinie se produit lorsqu'une condition de boucle ne devient jamais fausse, faisant exécuter le programme indéfiniment.

Tout d'abord, accédez au répertoire du projet et créez un nouveau fichier C++ :

cd ~/project
touch infinite_loop_prevention.cpp

Ouvrez le fichier infinite_loop_prevention.cpp dans le WebIDE et ajoutez le code suivant pour explorer différentes stratégies de prévention des boucles infinies :

#include <iostream>
#include <cstdlib>
#include <ctime>

int main() {
    // Example 1: Preventing infinite loop with a maximum iteration limit
    std::cout << "Example 1: Iteration Limit Prevention" << std::endl;
    int counter = 0;
    const int MAX_ITERATIONS = 5;

    while (true) {
        std::cout << "Iteration: " << counter + 1 << std::endl;
        counter++;

        if (counter >= MAX_ITERATIONS) {
            std::cout << "Maximum iterations reached. Breaking the loop." << std::endl;
            break;
        }
    }

    // Example 2: User-controlled loop with input validation
    std::cout << "\nExample 2: User-Controlled Loop" << std::endl;
    char continueChoice;
    int attempts = 0;
    const int MAX_ATTEMPTS = 3;

    do {
        std::cout << "Enter a number (1-10): ";
        int userNumber;
        std::cin >> userNumber;

        if (userNumber >= 1 && userNumber <= 10) {
            std::cout << "Valid number entered: " << userNumber << std::endl;
            break;
        }

        attempts++;
        std::cout << "Invalid input. Attempts left: " << MAX_ATTEMPTS - attempts << std::endl;

        if (attempts >= MAX_ATTEMPTS) {
            std::cout << "Maximum attempts reached. Exiting." << std::endl;
            break;
        }

        std::cout << "Do you want to try again? (y/n): ";
        std::cin >> continueChoice;
    } while (continueChoice == 'y' || continueChoice == 'Y');

    // Example 3: Random number game with controlled iterations
    std::cout << "\nExample 3: Random Number Game" << std::endl;
    srand(time(0));  // Seed for random number generation
    int targetNumber = rand() % 10 + 1;
    int guess;
    int gameAttempts = 0;
    const int MAX_GAME_ATTEMPTS = 4;

    std::cout << "Guess the number between 1 and 10" << std::endl;
    while (gameAttempts < MAX_GAME_ATTEMPTS) {
        std::cout << "Attempt " << gameAttempts + 1 << ": Enter your guess: ";
        std::cin >> guess;

        if (guess == targetNumber) {
            std::cout << "Congratulations! You guessed the number." << std::endl;
            break;
        }

        gameAttempts++;

        if (gameAttempts >= MAX_GAME_ATTEMPTS) {
            std::cout << "Sorry, you've run out of attempts. The number was "
                      << targetNumber << std::endl;
            break;
        }
    }

    return 0;
}

Compilez et exécutez le programme :

g++ infinite_loop_prevention.cpp -o infinite_loop_prevention
./infinite_loop_prevention

Exemple de sortie :

Example 1: Iteration Limit Prevention
Iteration: 1
Iteration: 2
Iteration: 3
Iteration: 4
Iteration: 5
Maximum iterations reached. Breaking the loop.

Example 2: User-Controlled Loop
Enter a number (1-10): 1
Valid number entered: 1

Example 3: Random Number Game
Guess the number between 1 and 10
Attempt 1: Enter your guess: 2
Attempt 2: Enter your guess: 3
Attempt 3: Enter your guess: 4
Attempt 4: Enter your guess: 5
Sorry, you've run out of attempts. The number was 8

Stratégies clés pour prévenir les boucles infinies :

  1. Définir une limite maximale d'itérations
  2. Utiliser l'instruction break pour sortir des boucles
  3. Mettre en œuvre une validation des entrées
  4. Ajouter des vérifications conditionnelles pour contrôler l'exécution de la boucle
  5. Fournir des mécanismes de contrôle utilisateur

Techniques importantes de prévention des boucles infinies :

  • Toujours s'assurer que la condition de boucle peut devenir fausse
  • Utiliser des variables compteurs pour limiter les itérations
  • Mettre en œuvre des conditions de sortie à l'intérieur de la boucle
  • Valider les entrées utilisateur
  • Utiliser break pour sortir des boucles si nécessaire

Résumé

Dans ce laboratoire, vous avez appris à implémenter diverses structures de flux de contrôle en C++, notamment les instructions if-else à une ou plusieurs branches, les instructions switch, les boucles for contrôlées par compteur, les boucles while contrôlées par entrée, les boucles do-while contrôlées par sortie et les boucles imbriquées. Vous avez exploré l'utilisation des instructions break et continue pour contrôler l'exécution des boucles et appris des techniques pour gérer les boucles infinies. Ces structures de flux de contrôle sont fondamentales en programmation C++, vous permettant d'écrire des programmes plus complexes et dynamiques capables de prendre des décisions et d'exécuter différents chemins de code en fonction de conditions spécifiques.

Le laboratoire a couvert l'application pratique de ces structures de flux de contrôle grâce à des exercices de codage pratiques, vous permettant de développer une compréhension plus approfondie de leur utilisation et la capacité de les appliquer efficacement dans vos propres projets C++.