Ch3 : Les Structures répétitives Fathi Mguis Atelier de programmation 1 LFSI1/LARI1 A.U : 2014-2015 Plan 1 Introduction 2 La structure ”while” 3 La structure ”for” 4 La structure ”do ... while” 5 Choix de la structure répétitive Fathi Mguis (At. Prog LFSI1/LARI1) Ch3 : Les Structures répétitives A.U : 2014-2015 2 / 14 1. Introduction Il est souvent nécessaire d’exécuter plusieurs fois une action ou un groupe d’actions, non pas indéfiniment mais un certain nombre de fois (pas forcement connu à l’avance) : c’est la notion de boucle. Fathi Mguis (At. Prog LFSI1/LARI1) Ch3 : Les Structures répétitives A.U : 2014-2015 3 / 14 2. La structure ”while” Syntaxe : while(<Condition>) { <Bloc d’instructions>; } 1 Tant que la <Condition> fournit une valeur différente de zéro, le est exécuté. Si la <Condition> fournit la valeur zéro, l’exécution continue avec l’instruction qui suit le bloc d’instructions. Le <bloc d’ instructions > est exécuté zéro ou plusieurs fois. La partie <Condition> peut désigner : <bloc d’ instructions > 2 3 4 Une variable de type numérique, Une expression fournissant un résultat numérique. 5 La partie <bloc d’ instructions > peut désigner : Un bloc d’instructions compris entre accolades, Une seule instruction terminée par un point virgule. Fathi Mguis (At. Prog LFSI1/LARI1) Ch3 : Les Structures répétitives A.U : 2014-2015 4 / 14 2. La structure ”while” Exemple1 int i = 0 ; while (i<10) { printf("%d\t ",i) ; i++ ; } Exemple2 int i = 0 ; while (i<10) printf("%d\t ",++i) ; Exemple3 int i = 10 ; while (i) printf("%d\t ",i--) ; Fathi Mguis (At. Prog LFSI1/LARI1) Ch3 : Les Structures répétitives A.U : 2014-2015 5 / 14 3. La structure ”for” Syntaxe for(<expression-I>; <expression-C>; <expression-R>) <Bloc d’instructions>; Est équivalente à : <expression-I>; while(<expression-C>) { <Bloc d’instructions>; <expression-R>; } expression-I : une expression initialisant les variables de contrôle qu’il faut initialiser avant d’entrer dans la boucle. expression-C : la condition de bouclage. expression-R : une expression permettant de réinitialiser (incrémentation, décrémentation) les variables de contrôles utilisées. Fathi Mguis (At. Prog LFSI1/LARI1) Ch3 : Les Structures répétitives A.U : 2014-2015 6 / 14 3. La structure ”for” Fonction de l’instruction ”for” 1 2 Exécuter les instructions initiales de ”for” (expression-I). Evaluer la condition : (expression-C) Faux (0) : branchement à l’instruction qui suit le fin du bloc ”for”. Vrai (1) : 1 2 3 3 Exécution des instructions du corps ”for”. Exécution de la liste des instructions de réitération (expression-R). Revenir à (2) Fin de l’instruction ”for”. Exemple1 int i ; for( i=0; i<=20; i++) printf("Le carré de %d est %d\n ",i,i*i) ; Fathi Mguis (At. Prog LFSI1/LARI1) Ch3 : Les Structures répétitives A.U : 2014-2015 7 / 14 3. La structure ”for” Exemple 2 : 1- /* Calcul de la somme de 1+2+3 ... 100*/ int i ,S; for( i=1,S=0 ;i<=100 ;i++) S+=i ; printf("La somme de 1 à 100 = %d\n ",S) ; 2- /*Notation utilisant la structure while*/ int i,S ; i=0 ; S=0 ; while(i<+100) { S+=i ; i++ ; } printf("La somme de 1 à 100 = %d\n ",S) ; Fathi Mguis (At. Prog LFSI1/LARI1) Ch3 : Les Structures répétitives A.U : 2014-2015 8 / 14 3. La structure ”for” 3int i ,S; for( i=1,S=0 ;i<=100 ; S+=i ,i++) ; printf("La somme de 1 à 100 = %d\n ",S) ; 4int i =0,S=0; for( ; i<=100 ; S+=i ,i++) ; printf("La somme de 1 à 100 = %d\n ",S) ; Fathi Mguis (At. Prog LFSI1/LARI1) Ch3 : Les Structures répétitives A.U : 2014-2015 9 / 14 3. La structure ”for” Organigramme de flux pour les boucles for et while : Fathi Mguis (At. Prog LFSI1/LARI1) Ch3 : Les Structures répétitives A.U : 2014-2015 10 / 14 4. La structure ”do ... while” Syntaxe : do { <Bloc d’instructions1>; }while (<Condition>); 1 La boucle ”do-while” teste sa condition après exécution de(s) instruction(s) du corps de la boucle. 2 Le(s) instruction(s) du ”do-while” sont effectuées au moins une fois et aussi longtemps que la ¡Condition¿ fournit une valeur différente de zéro. 3 En pratique, la structure ”do-while” n’est pas si fréquente que while ; mais dans certains cas, elle fournit une solution plus élégante. Une application typique de ”do-while” est la saisie de données qui doivent remplir une certaine condition. Fathi Mguis (At. Prog LFSI1/LARI1) Ch3 : Les Structures répétitives A.U : 2014-2015 11 / 14 4. La structure ”do ... while” Exemple1 : int N; do { printf(" Donner un nombre entre 1 et 10 :"); scanf("%d",&N) ; }while(N<1 || N>10); Fathi Mguis (At. Prog LFSI1/LARI1) Ch3 : Les Structures répétitives A.U : 2014-2015 12 / 14 4. La structure ”do ... while” Exemple2 : #include<stdio.h> void main() { int n ,div; printf(" Donner le nombre à diviser :"); scanf("%d",&n) ; do { printf(" Entrer le diviseur :"); scanf("%d",&div) ; }while( !div); printf("%d/%d = %f\n",n,div,(float)n/div); } Fathi Mguis (At. Prog LFSI1/LARI1) Ch3 : Les Structures répétitives A.U : 2014-2015 13 / 14 5. Choix de la structure répétitive 1 Si le bloc d’instructions ne doit pas être exécuté si la condition est fausse, alors utilisez ”while” ou ”for”. 2 Si le bloc d’instructions doit être exécuté au moins une fois, alors utilisez ”do...while”. 3 Si le nombre d’exécutions du bloc d’instructions dépend d’une ou de plusieurs variables qui sont modifiées à la fin de chaque répétition, alors utilisez ”for”. 4 Le choix entre ”for” et ”while” n’est souvent qu’une question de préférence ou d’habitudes. Fathi Mguis (At. Prog LFSI1/LARI1) Ch3 : Les Structures répétitives A.U : 2014-2015 14 / 14