Formations à l'informatique et à l'électronique

Auteur : SD
Créé le : 15-09-2021

Langage C – Exécution conditionnelle et choix multiple

Retour vers la partie 1La suite (partie 3)

La fonction "printf"

Dans la première partie du cours nous avons vu que la fonction "printf" permet d'afficher du texte (print). le "f" de "printf" signifie : formaté.

L'utilisation la plus simple de printf est d'afficher une chaine de caractères :

printf("Bonjour à tous !"); 	// Affiche "Bonjour à tous !" 
					// Une chaine de caractère est représentée entre ""

Pour afficher la valeur d'une variable on utilise la notation suivante :

int age = 18;
printf("vous avez %d ans", age); // Affiche "Vous avez 18 ans"
			// le %d a été remplacé par la valeur de la variable age

Le spécificateur %d dans la chaine de caractère indique à la fonction printf qu'elle doit insérer à cet emplacement la valeur d'une variable. Cette variable est précisée après la chaine de caractère : la valeur de age dans l'exemple proposé.

Le spécificateur à utiliser dépend du type de la variable à afficher :

Il est possible d'insérer plusieurs variables (et même des calculs) dans un seul printf, il suffit de les indiquer dans l'ordre voulu :

int nb1 = 14;
int nb2 = 2;
printf("Le produit de %d par %d est égal à %d", nb1, nb2, nb1*nb2); 
// Affiche "Le produit de 14 par 2 est égal à 28"

Printf et caractères spéciaux

Les caractères spéciaux sont précédés d'un antislash (\) dans la chaine de caractère.

#include <stdio.h>

int main() {
    printf("Bonjour à tous!\n"); // \n permet d'aller à la ligne
	printf("Ici j'affiche Bonjour entre guillemets : \"Bonjour\"");
	printf("\nCette année les prix ont augmentés de 4.5%%");
	// Pour afficher le caractère % il faut le doubler : %% (sinon il est considéré comme un spécificateur)
    return 0;
}

Exécution conditionnelle

Cette structure va permettre à votre programme de prendre des décisions. Elle s'écrit sous la forme "Si Alors Sinon". Nous l'avons vu dans la partie 1 dans le paragraphe "Comment représenter un algorithme ?" :

pseudo code structure algorithmique si alors sinon if else

Traduction en langage C

#include <stdio.h>	// inclure la bibliothèque STandard Input Output
					// permet d'utiliser, entre autre, printf et scanf
					
int main() // main désigne le programme principal il est délimité par des accolades
{ // Début du main
    // Variables :
    int age;                // age : Entier

    printf("Quel est votre age ? "); // Afficher : "Quel est votre age ?"
    scanf("%d", &age);               // Entrer : age

    if(age < 18)            // SI age < 18
    {
        printf("Vous êtes mineur"); // Afficher : "Vous êtes mineur"
    }
    else                    // SINON
    {
        printf("Vous êtes majeur"); // Afficher : "Vous êtes majeur"
    }
   
    return 0;
} // Fin du main

A retenir
A == B A est égal à B
A != B A est différent de B
A < B A est inférieur à B
A > B A est supérieur à B
A <= B A est inférieur ou égal à B
A >= B A est supérieur ou égal à B

ATTENTION : Ne pas confondre A == B avec A = B :

Pour vous entrainer

Faire les exercices 2 et 3 de la page "Exercices de programmation en langage C (débutant)".

Modifier le programme "Quel est votre age ?" en intégrant la modification suivante :

Choix multiple

Comme pour la structure "SI ALORS SINON", cette structure va permettre à votre programme de prendre des décisions.

Exemple : L'échelle de Richter

On souhaite faire un programme qui demande la magnitude d'un séisme à l'utilisateur et le programme affiche les effets engendrés par ce séisme selon l'échelle de Richter.

Représentation en pseudo code

pseudo code switch case seisme richter

Représentation avec organigramme

organigramme ou algorigramme switch case seisme richter

Traduction en langage C

#include <stdio.h> // inclure la bibliothèque STandard Input Output
					// permet d'utiliser, entre autre, printf et scanf
					
int main() // main désigne le programme principal il est délimité par des accolades
{ // Début du main
    // Variables :
    int magnitude;  // magnitude : Entier
    
    // Afficher : "Les effets engendrés par un séisme selon l'échelle de Richter"
	printf("Les effets engendrés par un séisme selon l'échelle de Richter\n\n"); 
	
	// Afficher : "Quelle est la magnitude du séisme (1-9) ?"
	printf("Quelle est la magnitude du séisme (1-9) ? ");
    scanf("%d", &magnitude);    // Entrer : magnitude
	
	switch(magnitude) {         // SELON magnitude
		case 1 :    printf("Secousse imperceptible");  // CAS 1 : Afficher : "Secousse imperceptible"
		            break;
		case 2 :    printf("Secousse ressentie uniquement par des gens au repos");
	                break;		
		case 3 :    printf("Seuil à partir duquel la secousse devient sensible pour la plupart des gens");
		            break;		
		case 4 :    printf("Secousse sensible mais pas de dégâts");
		            break;		
		case 5 :    printf("Tremblement fortement ressenti, dommages mineurs près de l’épicentre");
		            break;		
		case 6 :    printf("Dégâts à l’épicentre dont l’ampleur dépend de la qualité des constructions");
		            break;		
		case 7 :    printf("Importants dégâts à l’épicentre, secousse ressentie à plusieurs centaines de km");
		            break;		
		case 8 :    printf("Dégâts majeurs à l’épicentre, et sur plusieurs centaines de km");
		            break;		
		case 9 :    printf("Destruction totale à l’épicentre, et possible sur milliers de km");
		            break;		
		default :   printf("Mauvaise saisie, l’échelle de Richter va de 1 à 9");
	}   // FIN SELON
   
    return 0;
} // Fin du main

Pour vous entrainer

Voir le corrigé

Retour vers la partie 1La suite (partie 3)


Vous avez apprécié cet article ? Partagez le !

Article connexe : Langage C – Premiers pas