Conditions et if / else

langace C Structure de contrôle if...else

Instruction if en C

La syntaxe de l'instruction if en programmation C est la suivante :

if (expression de test)
{
   // code
}

Comment fonctionne l'instruction if ?

L'instruction if évalue l'expression de test entre les parenthèses ().

    Si l'expression de test est évaluée à vrai, les instructions à l'intérieur du bloc if sont exécutées.
    Si l'expression de test est évaluée à faux, les instructions à l'intérieur du bloc if ne sont pas exécutées.

Comment fonctionne l'instruction if en programmation C ?
Fonctionnement de l'instruction if

Pour en savoir plus sur quand l'expression de test est évaluée à vrai (valeur non nulle) et faux (0), consultez les opérateurs relationnels et logiques.
Exemple 1 : Instruction if

// Programme pour afficher un nombre s'il est négatif

#include <stdio.h>
int main() {
    int nombre;

    printf("Entrez un entier : ");
    scanf("%d", &nombre);

    // vrai si le nombre est inférieur à 0
    if (nombre < 0) {
        printf("Vous avez entré %d.\n", nombre);
    }

    printf("L'instruction if est simple.");

    return 0;
}

Résultat :

Entrez un entier : -2
Vous avez entré -2.
L'instruction if est simple.

Lorsque l'utilisateur entre -2, l'expression de test nombre<0 est évaluée à vrai. Par conséquent, "Vous avez entré -2" est affiché à l'écran.

Entrez un entier : 5
L'instruction if est simple.

Lorsque l'utilisateur entre 5, l'expression de test nombre<0 est évaluée à faux et l'instruction à l'intérieur du bloc if n'est pas exécutée.


Instruction if...else en C

L'instruction if peut avoir un bloc else optionnel. La syntaxe de l'instruction if...else est la suivante :

if (expression de test) {
    // exécuter du code si l'expression de test est vraie
}
else {
    // exécuter du code si l'expression de test est fausse
}

Comment fonctionne l'instruction if...else ?

Si l'expression de test est évaluée à vrai :

    Les instructions à l'intérieur du bloc if sont exécutées.
    Les instructions à l'intérieur du bloc else sont ignorées.

Si l'expression de test est évaluée à faux :

    Les instructions à l'intérieur du bloc else sont exécutées.
    Les instructions à l'intérieur du bloc if sont ignorées.

Exemple 2 : Instruction if...else

// Vérifiez si un entier est impair ou pair

#include <stdio.h>
int main() {
    int nombre;
    printf("Entrez un entier : ");
    scanf("%d", &nombre);

    // Vrai si le reste est égal à 0
    if  (nombre%2 == 0) {
        printf("%d est un entier pair.",nombre);
    }
    else {
        printf("%d est un entier impair.",nombre);
    }

    return 0;
}

Résultat :

Entrez un entier : 7
7 est un entier impair.

Lorsque l'utilisateur entre 7, l'expression de test nombre%2==0 est évaluée à faux. Par conséquent, l'instruction à l'intérieur du bloc else est exécutée.

Échelle if...else en C

L'instruction if...else exécute deux codes différents en fonction de savoir si l'expression de test est vraie ou fausse. Parfois, un choix doit être fait parmi plus de 2 possibilités.

L'échelle if...else vous permet de vérifier entre plusieurs expressions de test et d'exécuter différentes instructions.
Syntaxe de l'échelle if...else

if (expression de test1) {
   // instructions
}
else if(expression de test2) {
   // instructions
}
else if (expression de test3) {
   // instructions
}
.
.
else {
   // instructions
}

Exemple 3 : Échelle if...else en C

// Programme pour relier deux entiers à l'aide des symboles =, > ou <

#include <stdio.h>
int main() {
    int nombre1, nombre2;
    printf("Entrez deux entiers : ");
    scanf("%d %d", &nombre1, &nombre2);

    // vérifie si les deux entiers sont égaux.
    if(nombre1 == nombre2) {
        printf("Résultat : %d = %d",nombre1,nombre2);
    }

    // vérifie si nombre1 est supérieur à nombre2.
    else if (nombre1 > nombre2) {
        printf("Résultat : %d > %d", nombre1, nombre2);
    }

    // vérifie si les deux expressions de test sont fausses
    else {
        printf("Résultat : %d < %d",nombre1, nombre2);
    }

    return 0;
}

Résultat :

Entrez deux entiers : 12 23
Résultat : 12 < 23

if...else imbriqué

Il est possible d'inclure une instruction if...else à l'intérieur du corps d'une autre instruction if...else.


Exemple 4 : if...else imbriqué

Le programme ci-dessous relie deux entiers en utilisant <, > et =, similairement à l'exemple de l'échelle if...else. Cependant, nous utiliserons une instruction if...else imbriquée pour résoudre ce problème.

#include <stdio.h>
int main() {
    int nombre1, nombre2;
    printf("Entrez deux entiers : ");
    scanf("%d %d", &nombre1, &nombre2);

    if (nombre1 >= nombre2) {
      if (nombre1 == nombre2) {
        printf("Résultat : %d = %d",nombre1,nombre2);
      }
      else {
        printf("Résultat : %d > %d", nombre1, nombre2);
      }
    }
    else {
        printf("Résultat : %d < %d",nombre1, nombre2);
    }

    return 0;
}

Conclusion

Vous avez appris les bases essentielles des structures de contrôle conditionnelles en langage C, à savoir l'instruction if et l'instruction if...else. Ces structures vous permettent de prendre des décisions dans vos programmes en évaluant des expressions de test et en exécutant différents blocs de code en fonction de la véracité de ces expressions.

L'instruction if vous permet d'exécuter un bloc de code si une expression de test est évaluée à vrai (non nulle). Si l'expression est évaluée à faux (0), le code à l'intérieur du bloc if ne sera pas exécuté.

L'instruction if...else étend ce concept en ajoutant un bloc else qui est exécuté lorsque l'expression de test est évaluée à faux. Ainsi, vous pouvez choisir entre deux branches d'exécution en fonction du résultat de l'expression de test.

Lorsque vous avez besoin de gérer plus de deux alternatives, l'échelle if...else vous permet d'utiliser une série d'instructions if...else imbriquées pour prendre des décisions complexes. Chaque expression de test est évaluée séquentiellement et le bloc de code correspondant à la première expression de test vraie est exécuté.

En utilisant ces concepts, vous pouvez créer des programmes C qui réagissent de manière appropriée en fonction des conditions rencontrées. L'instruction if et l'instruction if...else sont des éléments fondamentaux de la programmation qui vous permettent de créer des applications flexibles et adaptatives.

Si vous avez trouvé ce Cours de Langage C de Mr JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !

Contact WhatsApp : +237 652027193 | Réaliser Par Joël_Yk

Liens de l’ancien parcours (référence)

<< PREC Suiv>>

Approfondir : Conditions et if / else

Des conditions bien organisées doivent couvrir les cas attendus sans afficher plusieurs réponses contradictoires. Les frontières et les égalités sont les premières valeurs à tester.

Tests indépendants ou chaîne de choix

Des if indépendants conviennent à plusieurs actions qui peuvent toutes être nécessaires. Une chaîne if/else if/else convient à des catégories exclusives : un seul bloc y est exécuté. Choisir la mauvaise structure peut afficher plusieurs mentions pour une seule moyenne.

Les bornes implicites d’un else if

Après un premier test note<10 faux, on sait déjà que note>=10 pour les nombres admis. Un else if(note<14) couvre alors [10,14[. Cette information vient du chemin suivi, pas d’une règle de comparaison particulière.

Valider avant de classer

Le programme d’exemple fixe le domaine à un entier entre 0 et 20. Une donnée hors domaine n’est pas une catégorie supplémentaire inventée ; elle est refusée avant les tests de classement. Cette séparation rend le raisonnement sur chaque branche plus court.

Conditions : classer une note

#include <stdio.h>
int main(void) {
    int note;
    puts("Entrer une note entiere de 0 a 20 :");
    if (scanf("%d", &note) != 1 || note < 0 || note > 20) {
        puts("Note invalide.");
        return 1;
    }
    if (note < 10) {
        puts("A reprendre");
    } else if (note < 14) {
        puts("Valide");
    } else {
        puts("Bon resultat");
    }
    return 0;
}
Suivre le programme : Conditions, classer une note
Instruction ou étapeExplication
note=9Le premier test est vrai.
note=10Le premier test est faux ; le deuxième est vrai.
note=14Les deux premiers tests sont faux, donc else.

Sortie écran : essai 1

Sous le seuil de validation.

Entrer une note entiere de 0 a 20 :
9
A reprendre

Sortie écran : essai 2

10 est inclus dans le deuxième intervalle.

Entrer une note entiere de 0 a 20 :
10
Valide

Sortie écran : essai 3

14 appartient au dernier intervalle.

Entrer une note entiere de 0 a 20 :
14
Bon resultat

S’entraîner et vérifier

Exercice 1. Pourquoi 0<=note<=20 ne valide-t-il pas la saisie en C ?

Voir la correctionMasquer la correction

La première comparaison produit 0 ou 1, puis ce résultat est comparé à 20. Il faut écrire note>=0 && note<=20.

Pratiquer avec le TD/TP 1 corrigé · Tous les exercices C.

Repère de lecture : les codes proposés utilisent des constructions disponibles en C11. Les règles du langage et de sa bibliothèque sont consultables dans les projets publics du WG14 (C11) et du WG14 (C23). Les exemples n’utilisent pas les nouveautés propres à C23.

Questions / Réponses

Aucune question. Soyez le premier à poser une question.
★ ★ ★ ★ ★
Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam