Différences entre versions de « Structures de contrôle itératives en langage C »
(36 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
+ | [https://drive.google.com/open?id=1QJnIy9XDDJad_Zorme7IIRith_L5HDbu Carte conceptuelle] | ||
{{Widget:Fiche-Conceptuelle-Haut}} | {{Widget:Fiche-Conceptuelle-Haut}} | ||
− | + | [[File:boucles.png|center|thumb|650px]] | |
= {{Widget:Traduction-Fiche}} = | = {{Widget:Traduction-Fiche}} = | ||
Ligne 28 : | Ligne 29 : | ||
|Domaine-Discipline-Thématique-1= Informatique | |Domaine-Discipline-Thématique-1= Informatique | ||
|Domaine-Discipline-Thématique-2= Programmation | |Domaine-Discipline-Thématique-2= Programmation | ||
− | |Domaine-Discipline-Thématique-3= Structures de contrôle | + | |Domaine-Discipline-Thématique-3= Structures de contrôle itératives |
− | |Domaine-Discipline-Thématique-4= | + | |Domaine-Discipline-Thématique-4= Boucle |
− | |Domaine-Discipline-Thématique-5= | + | |Domaine-Discipline-Thématique-5= Itération |
|Domaine-Discipline-Thématique-6= | |Domaine-Discipline-Thématique-6= | ||
|Domaine-Discipline-Thématique-7= | |Domaine-Discipline-Thématique-7= | ||
Ligne 48 : | Ligne 49 : | ||
|Définition= <!-- Ne pas Modifier --> | |Définition= <!-- Ne pas Modifier --> | ||
<!-- *************** Commercez les modifications *******************--> | <!-- *************** Commercez les modifications *******************--> | ||
+ | Le C présente trois types de structures de contrôle itératives, c'est-à-dire, de structures de contrôle permettant de réaliser ce qu'on appelle des boucles ; autrement dit, d'exécuter plusieurs fois une portion de code, généralement jusqu'à ce qu'une condition soit fausse. | ||
+ | Le plus grand danger que présentent les itératives est que leur condition de sortie de boucle ne soit jamais fausse... dans un tel cas, on ne sort jamais de la boucle, et on réalise une "boucle infinie". | ||
− | * | + | <!-- ******** Fin Définition Générale ***************************** --> |
+ | <!-- ************* Début Définition Approfondissement ************* --> | ||
+ | <!-- Approfondissement des définitions à travers des classifications, des catégorisations, des typologies, ou autre.... --> | ||
+ | |Typologie= <!------------------------------------ Ne pas Modifier --> | ||
+ | <!-- ****************** Commercez les modifications ****************--> | ||
+ | ===Définition d'une structure de contrôle itérative complète=== | ||
Un résultat a une définition itérative complète s'il est la répétition d'une suite d'instructions, un nombre fini de fois connu à l'avance [https://www.kiteb.net/education/informatique/programmation/scientifiques/fiches/fiche-structures-iteratives.pdf]. | Un résultat a une définition itérative complète s'il est la répétition d'une suite d'instructions, un nombre fini de fois connu à l'avance [https://www.kiteb.net/education/informatique/programmation/scientifiques/fiches/fiche-structures-iteratives.pdf]. | ||
− | |||
− | |||
Une boucle for se décompose en trois parties (ou trois clauses) : | Une boucle for se décompose en trois parties (ou trois clauses) : | ||
Ligne 58 : | Ligne 64 : | ||
- une condition ; | - une condition ; | ||
- une seconde expression, qui consistera le plus souvent en l’incrémentation d’une variable. | - une seconde expression, qui consistera le plus souvent en l’incrémentation d’une variable. | ||
+ | [[File:For.png|center|thumb|450px|Syntaxe de la structure de contrôle itérative complète en langage C]] | ||
− | + | ===Définition d'une structure de contrôle itérative à condition d'arrêt=== | |
Un résultat a une définition itérative à condition d'arrêt s'il est la répétition d'une suite d'instruction et l'arrêt est géré par une condition [https://www.kiteb.net/education/informatique/programmation/scientifiques/fiches/fiche-structures-iteratives.pdf]. | Un résultat a une définition itérative à condition d'arrêt s'il est la répétition d'une suite d'instruction et l'arrêt est géré par une condition [https://www.kiteb.net/education/informatique/programmation/scientifiques/fiches/fiche-structures-iteratives.pdf]. | ||
+ | #'''La boucle "Tant que"'''[[File:while.png|center|thumb|250px|Syntaxe de la structure de contrôle itérative à condition d'arrêt "Tant que" en langage C]] | ||
+ | #'''La structure "Répéter ...Tant que"'''[[File:do while.png|center|thumb|250px|Syntaxe de la structure de contrôle itérative à condition d'arrêt "Répéter...Tant que" en langage C]] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
}}<!-- ******** Fin Fiche Didactique Définition ******************* --> | }}<!-- ******** Fin Fiche Didactique Définition ******************* --> | ||
Ligne 90 : | Ligne 86 : | ||
<!-- Remplacez, Adaptez, Ajoutez ou Supprimez les images et lignes non utilisées--> | <!-- Remplacez, Adaptez, Ajoutez ou Supprimez les images et lignes non utilisées--> | ||
− | Image: | + | Image:graphique for.png|Boucle '''"for"''' |
− | Image: | + | Image:Graphique_while.png|Boucle '''"while"''' |
− | Image: | + | Image:Graphique_do_while.png|Boucle '''"do...while"''' |
</gallery><!-- ************** Fin modification images***************************--> | </gallery><!-- ************** Fin modification images***************************--> | ||
Ligne 103 : | Ligne 99 : | ||
<!-- ****************** Commercez les modifications pour les Vidéos *******************************************************--> | <!-- ****************** Commercez les modifications pour les Vidéos *******************************************************--> | ||
− | <youtube width="220" height="220"> | + | <youtube width="220" height="220">https://www.youtube.com/watch?v=DMoHV_0UGkU&t=170s</youtube> |
− | <youtube width="220" height="220"> | + | <youtube width="220" height="220">https://www.youtube.com/watch?v=ycPf0KxUgBU&t=22s</youtube> |
− | <youtube width="220" height="220"> | + | <youtube width="220" height="220">https://www.youtube.com/watch?v=K1-2xjtrQcQ</youtube> |
}}<!-- ************************* Fin modifications pour les Médias *******************************************************--> | }}<!-- ************************* Fin modifications pour les Médias *******************************************************--> | ||
Ligne 118 : | Ligne 114 : | ||
<!----------------- Commencez les modifications des Mots Clés ---------------------> | <!----------------- Commencez les modifications des Mots Clés ---------------------> | ||
− | |Mot-Clé-1= | + | |Mot-Clé-1=Itération |
− | |Mot-Clé-2= | + | |Mot-Clé-2=Condition d'arrêt |
− | |Mot-Clé-3= | + | |Mot-Clé-3=Incrémentation |
− | |Mot-Clé-4= | + | |Mot-Clé-4=Décrémentation |
− | |Mot-Clé-5= | + | |Mot-Clé-5="Pas" du compteur |
|Mot-Clé-6= | |Mot-Clé-6= | ||
|Mot-Clé-7= | |Mot-Clé-7= | ||
Ligne 141 : | Ligne 137 : | ||
<!-- Compléter les pointillés et Supprimer les lignes non utilisées --> | <!-- Compléter les pointillés et Supprimer les lignes non utilisées --> | ||
<!-- ****************** Commercez les modifications *********************** --> | <!-- ****************** Commercez les modifications *********************** --> | ||
+ | <pre> | ||
+ | Exemple d'utilisation de la boucle "for" : | ||
+ | |||
+ | Enoncé : afficher la table de multiplication de 7 : | ||
+ | |||
+ | Code : | ||
+ | int j; | ||
+ | for(j=1;j<=9;j++) | ||
+ | printf("%i * 7 = %i \n";j;j*7); | ||
+ | |||
+ | Résultat : | ||
+ | 1 * 7 = 7 | ||
+ | 2 * 7 = 14 | ||
+ | 3 * 7 = 21 | ||
+ | 4 * 7 = 25 | ||
+ | 5 * 7 = 35 | ||
+ | 6 * 7 = 42 | ||
+ | 7 * 7 = 49 | ||
+ | 8 * 7 = 56 | ||
+ | 9 * 7 = 63 | ||
+ | |||
+ | </pre> | ||
+ | <pre> | ||
+ | Exemple d'utilisation de la boucle "while" : | ||
+ | |||
+ | Enoncé : chercher le plus grand diviseur du nombre 215 (à part lui même) : | ||
+ | |||
+ | Code : | ||
+ | int diviseur=214; | ||
+ | while(215 % diviseur != 0) | ||
+ | {diviseur--;} | ||
+ | printf("Le plus grand diviseur de 215 est : %i.",diviseur); | ||
+ | |||
+ | Résultat : | ||
+ | Le plus grand diviseur de 215 est : 45. | ||
+ | </pre> | ||
+ | <pre> | ||
+ | Exemple d'utilisation de la boucle "do...while" : | ||
+ | |||
+ | Enoncé : A travers des saisies répétitives, un utilisateur doit essayer de trouver un chiffre secret (<=20) : | ||
+ | |||
+ | Code : | ||
+ | int chiffre_Saisie, chiffre_Secret=15; | ||
+ | do | ||
+ | {printf("Essayer de trouver le chiffre secret <=20 : \n"); | ||
+ | scanf("%i",&chiffre_Saisi); | ||
+ | }while(chiffre_Saisi != chiffre_Secret); | ||
+ | printf("\n Bravo, chiffre secret rouvé !"); | ||
+ | Résultat : | ||
+ | |||
+ | Essayer de trouver le chiffre secret : | ||
+ | 4 // 1er essai de l'utilisateur | ||
+ | Essayer de trouver le chiffre secret : | ||
+ | 17 // 2ème essai de l'utilisateur | ||
+ | Essayer de trouver le chiffre secret : | ||
+ | 2 // 3ème essai de l'utilisateur | ||
+ | Essayer de trouver le chiffre secret : | ||
+ | 15 // 4ème essai de l'utilisateur | ||
+ | Bravo, chiffre secret trouvé ! | ||
+ | </pre> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
}}<!--************** Fin Fiche Didactique Explicitations ******************* --> | }}<!--************** Fin Fiche Didactique Explicitations ******************* --> | ||
− | |||
= {{Widget:Erreurs-confusions-Fiche}} = | = {{Widget:Erreurs-confusions-Fiche}} = | ||
Ligne 163 : | Ligne 210 : | ||
<!-- ****************** Commercez les modifications *************************--> | <!-- ****************** Commercez les modifications *************************--> | ||
− | * Confusion entre [[... | + | * Confusion entre [["Répéter ... tant que(condition)" et "Répéter...jusqu'à(condition)"]] |
− | + | Pour "Répéter ... tant que(condition)", un bloc d'instructions va être répété tant que la "condition" est ''vraie''. | |
− | + | Autrement dit, la boucle s'arrête quand "condition" devient ''fausse'' : initialement "condition" est ''vraie'', et à un certain moment elle va devenir ''fausse''. | |
+ | Pour "Répéter...jusqu'à(condition)", un bloc d'instructions va être répété tant que la "condition" est ''fausse''. | ||
+ | Autrement dit, la boucle s'arrête quand "condition" devient ''vraie'' : initialement "condition" est ''fausse'', et à un certain moment elle va devenir ''vraie''. | ||
+ | [[File:Tant_que_vs_jusquà.PNG|center|thumb|650px]] | ||
+ | * '''Erreur fréquente :''' pas du compteur est obligatoirement égal à 1. | ||
+ | * '''Erreur fréquente :''' oubli de l'initialisation du compteur quand on l'utilise dans "while" ou "do...while". | ||
+ | * '''Erreur fréquente : ''' oubli de l'incrémentation/décrémentation du compteur quand on l'utilise dans "while" ou "do...while". | ||
+ | * '''Erreur fréquente : erreur syntaxique : on oublie fréquemment de saisir ";" à la fin de la structure "do ... while". | ||
}}<!-- ************** Fin Fiche Didactique Conceptions ********************* --> | }}<!-- ************** Fin Fiche Didactique Conceptions ********************* --> | ||
− | |||
= {{Widget:Questions-possibles-Fiche}} = | = {{Widget:Questions-possibles-Fiche}} = | ||
Ligne 179 : | Ligne 232 : | ||
<!-- ************ Commercez les modifications *********************--> | <!-- ************ Commercez les modifications *********************--> | ||
− | * [[...... | + | * [[Les trois structures ont-elles des usages exclusifs ?]] |
− | * [[ | + | La réponse est non. Autrement dit, dans pas mal de cas, ce qu'on peut faire avec une boucle, on peut aussi le faire avec les deux autres. |
− | * [[ | + | <pre> |
+ | Exemple : Afficher les numéros de 1 à 10. | ||
+ | |||
+ | Avec la boucle "for" // Avec la boucle "while" // Avec la boucle "do...while" | ||
+ | for(j=1;j<=10;j++) // j=1 // j=1 | ||
+ | { // while(j<=10) // do | ||
+ | printf("%i",j); // { // { | ||
+ | } // printf("%i",j); // printf("%i",j); | ||
+ | // j++; // j++; | ||
+ | // } // }while(j<=10); | ||
+ | </pre> | ||
+ | |||
+ | * [[Peut-on avoir des boucles de la même forme imbriquées ?]] | ||
+ | * [[Peut-on avoir des boucles de formes différentes imbriquées ?]] | ||
+ | * [[Est ce qu'on peut avoir plus qu'une condition dans la forme "for" ?]] | ||
}}<!-- ******** Fin Fiche Didactique Questions ******************* --> | }}<!-- ******** Fin Fiche Didactique Questions ******************* --> | ||
Ligne 198 : | Ligne 265 : | ||
<!-- ****************** Commercez les modifications ************************** --> | <!-- ****************** Commercez les modifications ************************** --> | ||
− | * . | + | * Avant de démarrer le cours, il faudrait mieux commencer par une activité simple, un questionnaire par exemple, contenant quelques mots clés pour que les apprenants soient familiarisés avec d'une façon souple. |
− | + | * Pour résoudre les exercices, il est déconseillé de donner rapidement la réponse. Au contraire, inciter les apprenants à utiliser les trois formes de boucles pour qu'ils dégagent tous seuls la solution adéquate | |
− | |||
− | |||
}}<!-- ************************* Fin Idées-Enseignement ********************** --> | }}<!-- ************************* Fin Idées-Enseignement ********************** --> | ||
− | |||
== {{Widget:Aides et astuces-Fiche}} == | == {{Widget:Aides et astuces-Fiche}} == | ||
Ligne 215 : | Ligne 279 : | ||
<!-- ****************** Commercez les modifications ************************** --> | <!-- ****************** Commercez les modifications ************************** --> | ||
− | * | + | * Pour le développement en langage C, voici quelques exemples d'environnements de développement intégrés (EDI) : |
− | : | + | [https://www.eclipse.org/ide/ Eclipse], [http://www.codeblocks.org/ Code::Blocks] ou [https://codelite.org/ CodeLite]. |
− | + | ||
− | |||
}}<!-- ************************* Fin Astuces-Enseignement ********************** --> | }}<!-- ************************* Fin Astuces-Enseignement ********************** --> | ||
Ligne 230 : | Ligne 293 : | ||
<!-- ****************** Commercez les modifications ************--> | <!-- ****************** Commercez les modifications ************--> | ||
− | :* .. | + | :* https://fr.wikiversity.org/wiki/Introduction_au_langage_C/Structures_r%C3%A9p%C3%A9titives |
− | :* .... | + | :* chrome-extension://cbnaodkpfinfiipjblikofhlhlcickei/src/pdfviewer/web/viewer.html?file=https://depinfo.u-cergy.fr/~tliu/ens/intro/td-intro-info-5.pdf |
− | :* .. | + | :* https://fr.wikibooks.org/wiki/Programmation_C/It%C3%A9rations |
}}<!-- ************ Fin Liens Education ********************** --> | }}<!-- ************ Fin Liens Education ********************** --> | ||
Ligne 246 : | Ligne 309 : | ||
<!-- ****************** Commercez les modifications *********************--> | <!-- ****************** Commercez les modifications *********************--> | ||
− | * ........... | + | *« Chapitre 9 - Structures de contrôle (if, while, for, switch, ...) - Tutorial C - Calculatrices TI - Squalenet.net ». s. d. Consulté le 13 mai 2020. https://www.squalenet.net/fr/ti/tutorial_c/9-controle-if-while-for-switch.php5. |
− | + | ||
− | + | *« Les boucles - Le langage C • Tutoriels • Zeste de Savoir ». s. d. Zeste de Savoir. Consulté le 31 mars 2020. https://zestedesavoir.com/tutoriels/755/le-langage-c-1/1042_les-bases-du-langage-c/4295_les-boucles/. | |
− | * ....... | ||
+ | |||
}}<!-- ************* Fin Fiche Didactique Bibliographie *************** --> | }}<!-- ************* Fin Fiche Didactique Bibliographie *************** --> | ||
{{Widget:Fiche-Conceptuelle-Bas}} | {{Widget:Fiche-Conceptuelle-Bas}} |
Version actuelle datée du 13 mai 2020 à 10:03
Votre Publicité sur le Réseau |
Traduction
Structures de contrôle itératives en langage C (Français)
/ Programming language C: iterative control structures (Anglais)
/ لغة البرمجة C: هياكل التحكم التكرارية (Arabe)
Traductions
Définition
Domaine, Discipline, Thématique
Justification
Définition écrite
Le C présente trois types de structures de contrôle itératives, c'est-à-dire, de structures de contrôle permettant de réaliser ce qu'on appelle des boucles ; autrement dit, d'exécuter plusieurs fois une portion de code, généralement jusqu'à ce qu'une condition soit fausse.
Le plus grand danger que présentent les itératives est que leur condition de sortie de boucle ne soit jamais fausse... dans un tel cas, on ne sort jamais de la boucle, et on réalise une "boucle infinie".
Définition d'une structure de contrôle itérative complèteUn résultat a une définition itérative complète s'il est la répétition d'une suite d'instructions, un nombre fini de fois connu à l'avance [1]. Une boucle for se décompose en trois parties (ou trois clauses) : - une expression et/ou une déclaration qui sera le plus souvent l’initialisation d’une variable ; - une condition ; - une seconde expression, qui consistera le plus souvent en l’incrémentation d’une variable.
Définition d'une structure de contrôle itérative à condition d'arrêtUn résultat a une définition itérative à condition d'arrêt s'il est la répétition d'une suite d'instruction et l'arrêt est géré par une condition [2].
|
Structures de contrôle itératives en langage C - Historique (+)
Définition graphique
Concepts ou notions associés
Structures de contrôle itératives en langage C - Glossaire / (+)
Exemples, applications, utilisations
Exemple d'utilisation de la boucle "for" : Enoncé : afficher la table de multiplication de 7 : Code : int j; for(j=1;j<=9;j++) printf("%i * 7 = %i \n";j;j*7); Résultat : 1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 25 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 8 * 7 = 56 9 * 7 = 63 Exemple d'utilisation de la boucle "while" : Enoncé : chercher le plus grand diviseur du nombre 215 (à part lui même) : Code : int diviseur=214; while(215 % diviseur != 0) {diviseur--;} printf("Le plus grand diviseur de 215 est : %i.",diviseur); Résultat : Le plus grand diviseur de 215 est : 45. Exemple d'utilisation de la boucle "do...while" : Enoncé : A travers des saisies répétitives, un utilisateur doit essayer de trouver un chiffre secret (<=20) : Code : int chiffre_Saisie, chiffre_Secret=15; do {printf("Essayer de trouver le chiffre secret <=20 : \n"); scanf("%i",&chiffre_Saisi); }while(chiffre_Saisi != chiffre_Secret); printf("\n Bravo, chiffre secret rouvé !"); Résultat : Essayer de trouver le chiffre secret : 4 // 1er essai de l'utilisateur Essayer de trouver le chiffre secret : 17 // 2ème essai de l'utilisateur Essayer de trouver le chiffre secret : 2 // 3ème essai de l'utilisateur Essayer de trouver le chiffre secret : 15 // 4ème essai de l'utilisateur Bravo, chiffre secret trouvé ! |
Erreurs ou confusions éventuelles
Pour "Répéter ... tant que(condition)", un bloc d'instructions va être répété tant que la "condition" est vraie. Autrement dit, la boucle s'arrête quand "condition" devient fausse : initialement "condition" est vraie, et à un certain moment elle va devenir fausse. Pour "Répéter...jusqu'à(condition)", un bloc d'instructions va être répété tant que la "condition" est fausse. Autrement dit, la boucle s'arrête quand "condition" devient vraie : initialement "condition" est fausse, et à un certain moment elle va devenir vraie.
- Erreur fréquente : pas du compteur est obligatoirement égal à 1.
- Erreur fréquente : oubli de l'initialisation du compteur quand on l'utilise dans "while" ou "do...while".
- Erreur fréquente : oubli de l'incrémentation/décrémentation du compteur quand on l'utilise dans "while" ou "do...while".
- Erreur fréquente : erreur syntaxique : on oublie fréquemment de saisir ";" à la fin de la structure "do ... while".
Questions possibles
La réponse est non. Autrement dit, dans pas mal de cas, ce qu'on peut faire avec une boucle, on peut aussi le faire avec les deux autres.
Exemple : Afficher les numéros de 1 à 10. Avec la boucle "for" // Avec la boucle "while" // Avec la boucle "do...while" for(j=1;j<=10;j++) // j=1 // j=1 { // while(j<=10) // do printf("%i",j); // { // { } // printf("%i",j); // printf("%i",j); // j++; // j++; // } // }while(j<=10);
- Peut-on avoir des boucles de la même forme imbriquées ?
- Peut-on avoir des boucles de formes différentes imbriquées ?
- Est ce qu'on peut avoir plus qu'une condition dans la forme "for" ?
Liaisons enseignements et programmes
Idées ou Réflexions liées à son enseignement
- Avant de démarrer le cours, il faudrait mieux commencer par une activité simple, un questionnaire par exemple, contenant quelques mots clés pour que les apprenants soient familiarisés avec d'une façon souple.
- Pour résoudre les exercices, il est déconseillé de donner rapidement la réponse. Au contraire, inciter les apprenants à utiliser les trois formes de boucles pour qu'ils dégagent tous seuls la solution adéquate
Aides et astuces
- Pour le développement en langage C, voici quelques exemples d'environnements de développement intégrés (EDI) :
Eclipse, Code::Blocks ou CodeLite.
Education: Autres liens, sites ou portails
- https://fr.wikiversity.org/wiki/Introduction_au_langage_C/Structures_r%C3%A9p%C3%A9titives
- chrome-extension://cbnaodkpfinfiipjblikofhlhlcickei/src/pdfviewer/web/viewer.html?file=https://depinfo.u-cergy.fr/~tliu/ens/intro/td-intro-info-5.pdf
- https://fr.wikibooks.org/wiki/Programmation_C/It%C3%A9rations
Bibliographie
Pour citer cette page: (de contrôle itératives en langage C)
ABROUGUI, M & al, 2020. Structures de contrôle itératives en langage C. In Didaquest [en ligne]. <http:www.didaquest.org/wiki/Structures_de_contr%C3%B4le_it%C3%A9ratives_en_langage_C>, consulté le 6, janvier, 2025
- « Chapitre 9 - Structures de contrôle (if, while, for, switch, ...) - Tutorial C - Calculatrices TI - Squalenet.net ». s. d. Consulté le 13 mai 2020. https://www.squalenet.net/fr/ti/tutorial_c/9-controle-if-while-for-switch.php5.
- « Les boucles - Le langage C • Tutoriels • Zeste de Savoir ». s. d. Zeste de Savoir. Consulté le 31 mars 2020. https://zestedesavoir.com/tutoriels/755/le-langage-c-1/1042_les-bases-du-langage-c/4295_les-boucles/.
- Sponsors Education
- Informatique (Concepts)
- Programmation (Concepts)
- Structures de contrôle itératives (Concepts)
- Boucle (Concepts)
- Itération (Concepts)
- Itération
- Condition d'arrêt
- Incrémentation
- Décrémentation
- "Pas" du compteur
- Concepts
- Structures de contrôle itératives en langage C
- Structures de contrôle itératives en langage C (Concepts)
- Fiche conceptuelle didactique