1 Chapitre 4 Les structures de contrôle 2 Exécution non séquentielle • Les bran
1 Chapitre 4 Les structures de contrôle 2 Exécution non séquentielle • Les branchements conditionnels – if else – Switch • Les boucles – while – do while – for • Les branchements inconditionnels – break – continue – goto – return – exit 3 4 5 6 Branchements conditionnels (Switch) • Switch (brancher) switch(expression) { case cst1: instr1; case cst2: instr2; … default:instrF; } L’expression (entière) est évaluée. On passe alors au case correspondant et on exécute les instructions à partir de ce point. Si aucun case ne correspond, on exécute instrF. switch(c){ case ‘a’: printf(‘’aba’’); case ‘e’: printf(‘’ebe’’); default: printf(‘’ibi’’); } 7 Choix multiple: « switch case » /* Utilisation de switch case */ main() { char choix; … switch(choix) { case ‘a’ : fonctionA(); case ‘b’ : fonctionB(); case ‘c’ : fonctionC(); default : erreur(3); } } Paramètre de décision Exécuté si choix = a Exécuté si choix = a ou b Exécuté si choix = a, b ou c Exécuté si choix non répertorié par un « case » 8 Effet du « break » /* Utilisation de switch case */ main() { char choix; … switch(choix) { case ‘a’ : fonctionA(); break; case ‘b’ : fonctionB(); break; case ‘c’ : fonctionC(); break; default : erreur(3); } } Paramètre de décision Exécuté si choix = a Exécuté si choix = b Exécuté si choix = c Exécuté si choix non répertorié par un « case » 9 10 11 12 13 14 15 Exemples • Exemple 1 /* Afficher les nombres de 0 à 9 */ int I = 0; while (I<10) { printf("%i \n", I); I++; } Exemple 2 /* Afficher les nombres de 0 à 9 */ int I; I = 0; while (I<10) printf("%i \n", I++); /* Afficher les nombres de 1 à 10 */ I = 0; while (I<10) printf("%i \n", ++I); 16 Branchements inconditionnels • break: provoque la sortie immédiate de la boucle ou du switch en cours. • continue: passage à la prochaine itération d’une boucle. • goto: branchement sur une ligne labellisée. • return: permet de sortir (proprement) de la fonction et de retourner une valeur (résultat de la fonction,…) • exit: permet de quitter le programme avec une valeur, avec flush et fermeture des fichiers, libération de la mémoire…. 17 18 19 20 Exercices • Exercice 1: Saisir un caractère au clavier avec scanf. Afficher son code ASCII à l’écran • Solution 1 #include <stdio.h> void main() { char caractere ; scanf (“%c ”, &caractere ); printf (“dode ASCII du caractère saisi :%d ”, caractere ); return 0; } 21 Exercices • Exercice 2 - Ecrire un programme C permettant de poser la question ‘voulez-vous jouer ?’ - Il y aura saisie d’une réponse avec la fonction getchar. Si la réponse est ‘o’ ou ‘O’ vous affichez " c’ est parti ! ". Si la réponse est ‘n’ ou ‘N’ vous affichez " tant pis" 22 Exercices • Solution 2 #include <stdio.h> void main() { char reponse ; printf (“Voulez-vous jouer ?”); reponse=getchar() ; if (reponse==’o’ || reponse==’O’) printf (“\n c’est parti”); else if (reponse==’n’ || reponse==’N’) printf (“\n tant pis”); } 23 Exercices • Exercice 3: Saisir un entier n puis calculer n ! 1) Utiliser une boucle while 2) Utiliser une boucle for 24 Exercices • Solution 3 /*solution avec for*/ #include <stdio.h> void main() { int i, n, result; scanf(“%d “,&n) ; /*saisi l’entier n*/ for(i=1 ;i<=n ; I++) result=result*I; /*calcul de la factorielle*/ printf(“ %d ”, result); /* affichage*/ } 25 Exercices • Solution 3 suite /*solution avec while*/ #include <stdio.h> void main() { int i, n, result; scanf(“%d “,&n) ; /*saisi l’entier n*/ while(I<=n) { result=result*I; /*calcul de la factorielle*/ i++ ; } printf(“ %d ”, result); /* affichage*/ } 26 Exercices • Exercice 4: Ecrire un programme qui affiche la moyenne d'une suite d'entiers positifs entrés au clavier. On arrêtera la saisie quand le nombre -1 est entré, comme dans l'exemple suivant : Entrez un entier positif : 5 Entrez un entier positif : 2 Entrez un entier positif : 3 Entrez un entier positif : -1 La moyenne de ces 3 entiers vaut 3.333333 27 Exercices • Solution 4 4: /******************************************************/ /*** calcul de la moyenne d'une suite d'entiers ***/ #include <stdio.h> main() { int n = 0, x = 0, somme = 0; do { somme += x; printf("Entrez un entier positif : "); scanf("%d",&x); n++; } while (x != -1); printf("La moyenne de ces %d entiers vaut %f\n",n -1, (float)somme/(n-1)); } 28 Exercices • Exercice 5: Ecrire un programme qui calcule où x est un nombre réel de type double et n un entier, tous deux entrés au clavier. On écrira le programme en utilisant une boucle for, puis une bouche while n x 29 Exercices • Solution 5: /*** calcule de x^n ***/ #include <stdio.h> main() { int n, i; double x, puissance; printf("Entrez x : "); scanf("%lf",&x); printf("Entrez n : "); scanf("%d",&n); printf("\n Calcul de x^n avec une boucle for\n"); for (i = 1, puissance = 1; i <= n; i++) puissance *= x; printf("(%lf) ^ %d = %lf\n",x,n,puissance); printf("\nCalcul de x^n avec une boucle while\n"); i = 0; puissance = 1; while (i < n) { puissance *= x; i++; } printf("(%lf) ^ %d = %lf\n",x,n,puissance); } uploads/s1/ cours-4-controle.pdf
Documents similaires
-
21
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Oct 24, 2022
- Catégorie Administration
- Langue French
- Taille du fichier 0.2475MB