La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

8PRO107 Éléments de programmation Comment répéter plusieurs fois une séquence dinstructions.

Présentations similaires


Présentation au sujet: "8PRO107 Éléments de programmation Comment répéter plusieurs fois une séquence dinstructions."— Transcription de la présentation:

1 8PRO107 Éléments de programmation Comment répéter plusieurs fois une séquence dinstructions

2 Étude de cas 6.1 Additionner une série dentiers Description du problème: Calculer et imprimer la somme dune série dentiers donnée en entrée. Spécification de lentrée: Une liste dentiers Sortie: Un entier

3 Étude de cas 6.1 Fonction principale quatre entiers: n1, n2, n3, n4 un entier : somme LIRE n1, n2, n3, n4 somme n1 + n2 + n3 + n4 ÉCRIRE somme

4 Étude de cas 6.1 Fonction principale entier n1, n2, n3, n4 entier somme LIRE n1, n2, n3, n4 somme n1 + n2 + n3 + n4 AFFICHER somme Remarque: Fonctionne si la liste ne contient que 4 entiers.

5 Étude de cas 6.1 Fonction principale entier n1, n2, n3, n4 entier somme LIRE n1, n2, n3, n4 somme n1 + n2 + n3 + n4 AFFICHER somme Remarque: Fonctionne si la liste ne contient que 4 entiers. // fichier : c5ex1_0.cpp #include int main () { int n1, n2, n3, n4 ; int somme ; std::cout << "Entrez quatre entiers : " ; std::cin >> n1 >> n2 >> n3 >> n4 ; somme = n1 + n2 + n3 + n4 ; std::cout << "La somme est " << somme << std::endl ; return 0 ; }

6 Étude de cas 6.1 Fonction principale entier somme, nombre somme 0 TANT QUE ( il y a encore des entiers à lire) FAIRE LIRE nombre somme somme + nombre ÉCRIRE somme

7 Étude de cas 6.1 Fonction principale entier : somme somme total() ÉCRIRE somme En utilisant un sous-programme

8 Étude de cas 6.1 Fonction total En-tête: entier total() Corps: 2 entiers : somme, nombre somme 0 TANT QUE ( il y a encore des entiers à lire) FAIRE LIRE nombre somme somme + nombre RETOURNER somme

9 Étude de cas 6.1 Forme générale TANT QUE condition FAIRE instruction En C/C++ while ( condition ) instruction ;

10 Étude de cas 6.1 Fonction principale entier somme, nombre somme 0 TANT QUE ( il y a encore des entiers à lire) FAIRE LIRE nombre somme somme + nombre ÉCRIRE somme

11 Étude de cas 6.1 Fonction principale entier somme, nombre somme 0 TANT QUE ( il y a encore des entiers à lire) FAIRE LIRE nombre somme somme + nombre ÉCRIRE somme Comment spécifier cette condition?

12 Étude de cas 6.1 Fonction total En-tête: entier total() Corps: entier somme, nombre somme 0 TANT QUE ( il y a encore des entiers à lire) FAIRE LIRE nombre somme somme + nombre RETOURNER somme Avec sous-programme

13 Étude de cas 6.1 Fonction total En-tête: entier total() Corps: entier somme, nombre somme 0 TANT QUE ( il y a encore des entiers à lire) FAIRE LIRE nombre somme somme + nombre RETOURNER somme Comment spécifier cette condition? Avec sous-programme

14 Étude de cas méthodes Mettre le nombre dentiers à lire au début de la liste Mettre une valeur spéciale à la fin de la liste Utiliser la valeur de retour de la fonction de lecture

15 Étude de cas 6.1 Fonction principale entiers n, somme, nombre, compteur LIRE n somme 0 compteur 0 TANT QUE (compteur < n) FAIRE LIRE nombre somme somme + nombre compteur compteur + 1 AFFICHER somme Méthode 1

16 Étude de cas 6.1 Fonction principale entiers n, somme, nombre, compteur LIRE n somme 0 compteur 0 TANT QUE (compteur < n) FAIRE LIRE nombre somme somme + nombre compteur compteur + 1 AFFICHER somme Méthode 1 #include int main () { int n, somme, nombre, compteur ; somme = 0 ; compteur = 0 ; std::cout << "Entrez combien de nombres à additionner: " ; std::cin >> n ; std::cout << "Entrez vos " << n << " nombres:" << std::endl ; while ( compteur < n ) { std::cin >> nombre ; somme = somme + nombre ; compteur = compteur + 1 ; } std::cout << "La somme de vos " << n << " nombres est "<< somme << std::endl ; return 0 ; }

17 Étude de cas 6.1 Fonction principale deux entiers : somme, n LIRE n somme total(n) AFFICHER somme où total satisfait le prototype total(entier) retourne un entier Méthode 1 Avec sous-programme

18 En-tête: total(entier n) retourne un entier Corps: deux entiers : somme, nombre un entier : compteur somme 0 compteur 0 TANT QUE (compteur < n) FAIRE LIRE nombre somme somme + nombre compteur compteur + 1 RETOURNER somme Étude de cas 6.1 compte le nombre ditérations Méthode 1 Avec sous-programme

19 En-tête: total(entier n) retourne un entier Corps: deux entiers : somme, nombre un entier : compteur somme 0 compteur 0 TANT QUE (compteur < n) FAIRE LIRE nombre somme somme + nombre compteur compteur + 1 RETOURNER somme Étude de cas 6.1 compte le nombre ditérations Méthode 1 Avec sous-programme // fichier : c5ex1_1.cpp #include int total ( int n ) { int somme, nombre ; int compteur ; somme = 0 ; compteur = 0 ; std::cout << "Entrez vos " << n << " nombres:" << std::endl ; while ( compteur < n ) { std::cin >> nombre ; somme = somme + nombre ; compteur = compteur + 1 ; } return somme ; } int main () { int somme, n ; std::cout << "Entrez combien de nombres … additionner: " ; std::cin >> n ; somme = total(n) ; std::cout << "La somme de vos " << n << " nombres est "<< somme << std::endl ; return 0 ; }

20 Fonction principale entiers somme, nombre entier fini somme 0 fini 1 TANT QUE (fini 0) FAIRE LIRE nombre SI (nombre = valeur_spéciale) ALORS fini 0 SINON somme somme + nombre AFFICHER somme Mis à 0 après avoir lu la valeur spéciale Méthode 2 Étude de cas 6.1

21 Fonction principale entiers somme, nombre entier fini somme 0 fini 1 TANT QUE (fini 0) FAIRE LIRE nombre SI (nombre = valeur_spéciale) ALORS fini 0 SINON somme somme + nombre AFFICHER somme Mis à 0 après avoir lu la valeur spéciale valeur indiquant la fin de la liste Méthode 2 Étude de cas 6.1 drapeau

22 Étude de cas 6.1 Fonction principale entier : somme somme total() ÉCRIRE somme Avec sous-programme

23 En-tête: total() retourne un entier Corps: deux entiers : somme nombre un entier : fini somme 0 fini 1 TANT QUE (fini 0) FAIRE LIRE nombre SI (nombre = valeur_spéciale) ALORS fini 0 SINON somme somme + nombre RETOURNER somme Étude de cas 6.1 Mis à 0 après avoir lu la valeur spéciale Méthode 2 Avec sous-programme

24 En-tête: total() retourne un entier Corps: deux entiers : somme nombre un entier : fini somme 0 fini 1 TANT QUE (fini 0) FAIRE LIRE nombre SI (nombre = valeur_spéciale) ALORS fini 0 SINON somme somme + nombre RETOURNER somme Mis à 0 après avoir lu la valeur spéciale valeur indiquant la fin de la liste pas dargument Méthode 2 Étude de cas 6.1 drapeau

25 Fin de fichier Un programme peut lire des données en provenance du terminal(programme interactif) dun fichier(programme non interactif) Étude de cas 6.1

26 Fin de fichier Un programme peut lire des données en provenance du terminal(programme interactif) dun fichier(programme non interactif) Étude de cas 6.1 Dans un fichier : Lorsquil ny a plus de données à lire, on dit que cest la fin du fichier. La plupart des fonctions de lecture retournent une valeur spéciale lorsquelles rencontrent la fin dun fichier. Nous dénoterons cette valeur par FDF (Fin De Fichier).

27 Fin de fichier Un programme peut lire des données en provenance du terminal(programme interactif) dun fichier(programme non interactif) Étude de cas 6.1 Au terminal : Lorsquun programme lit au terminal, comment sait-il quil a atteint la fin du fichier? Lutilisateur doit envoyer un signal de fin de fichier en appuyant sur ^d (sur Unix) ou ^z (sur Windows). Dans un fichier : Lorsquil ny a plus de données à lire, on dit que cest la fin du fichier. La plupart des fonctions de lecture retournent une valeur spéciale lorsquelles rencontrent la fin dun fichier. Nous dénoterons cette valeur par FDF (Fin De Fichier).

28 Fonction principale entiers somme, nombre entier fini somme 0 fini 1 TANT QUE (fini 0) FAIRE SI (LIRE nombre = FDF) ALORS fini 0 SINON somme somme + nombre AFFICHER somme Étude de cas 6.1 Méthode 3

29 En-tête: total() retourne un entier Corps: deux entiers : somme nombre un entier : fini somme 0 fini 1 TANT QUE (fini 0) FAIRE SI (LIRE nombre = FDF) ALORS fini 0 SINON somme somme + nombre RETOURNER somme Étude de cas 6.1 Méthode 3 Avec sous-programme

30 Fonction principale entier somme, nombre somme 0 TANT QUE (LIRE nombre 0) FAIRE somme somme + nombre RETOURNER somme Étude de cas 6.1 Méthode 3 (version2)

31 En-tête: total() retourne un entier Corps: entier somme, nombre somme 0 TANT QUE (LIRE nombre 0) FAIRE somme somme + nombre RETOURNER somme Étude de cas 6.1 Méthode 3 (version2) Avec sous-programme

32 int total () { int somme, nombre; somme = 0; while (cin>>nombre) somme = somme + nombre; return somme; } Étude de cas 6.1 En C/C++

33 Étude de cas 6.2 Additionner les n premiers entiers pairs Description du problème: Calculer et afficher la somme des n premiers nombres entiers pairs. Spécification de lentrée: Un nombre entier n 1

34 Étude de cas 6.2 Fonction principale (1) deux entiers : n, somme LIRE n SI (n < 0) ALORS AFFICHER Erreur dans les données SINON AFFICHER La somme des n premiers entiers pairs est sommepair(n) où sommepair est une fonction satisfaisant le prototype sommepair(entier) retourne un entier

35 Étude de cas 6.2 Fonction principale deux entiers : n, somme LIRE n SI (sommepair(n, somme) < 0) ALORS ÉCRIRE Erreur dans les données SINON ÉCRIRE La somme des n premiers entiers pairs est somme où sommepair est une fonction satisfaisant le prototype sommepair(entier, entier référence) retourne un entier

36 Étude de cas 6.2 Fonction sommepair (version 1) En-tête: sommepair(entier n, entier référence somme) retourne un entier Corps: entier : compteur SI (n < 1) ALORS retourner -1 somme 0 compteur 1 TANT QUE (compteur n) FAIRE somme somme + 2*compteur compteur compteur + 1 RETOURNER 0

37 Étude de cas 6.2 Fonction sommepair (version 1) En-tête: sommepair(entier n, entier référence somme) retourne un entier Corps: entier : compteur SI (n < 1) ALORS retourner -1 somme 0 compteur 2 TANT QUE (compteur n) FAIRE somme somme + compteur compteur compteur + 1 RETOURNER 0 1 n) 2*compteur 1

38 Étude de cas 6.2 Fonction sommepair (version 2) En-tête: sommepair(entier n, entier référence somme) retourne un entier Corps: entier : compteur SI (n < 1) ALORS retourner -1 somme 0 compteur 2 TANT QUE (compteur 2*n) FAIRE somme somme + compteur compteur compteur + 1 RETOURNER 0 2 2*n) compteur 2

39 Étude de cas 6.2 POUR i allant de k à n avec pas de s faire instruction i = k TANT QUE (i n) FAIRE instruction i i + s Les boucles avec incrémentation automatique équivalent à

40 Étude de cas 6.2 for (i=k; i<=n; i=i+s) instruction ; i = k; while (i n) { instruction i = i + s; } En C/C++ équivalent à

41 Étude de cas 6.2 Fonction sommepair (version 3) En-tête: sommepair(entier n, entier référence somme) retourne un entier Corps: entier : compteur SI (n < 1) RETOURNER -1 somme 0 POUR compteur allant de 1 à n avec pas de 1 faire somme somme + 2 * compteur RETOURNER 0

42 Étude de cas 6.3 Calculer la moyenne des notes Description du problème: Calculer la moyenne de chacun des étudiants dune classe où chaque étudiant a exactement n notes. La moyenne de la classe doit aussi être calculée. Spécification de lentrée: La première ligne dentrée contient la valeur n. Il y a ensuite autant de lignes que détudiants dans la classe, chacune contenant un numéro didentification suivi des n notes.

43 Étude de cas 6.3 Exemple

44 Étude de cas 6.3 Fonction principale deux entiers: nbnotes moyenne LIRE nbnotes moyenne moyenne_groupe(nbnotes) AFFICHER La moyenne du groupe est, moyenne où moyenne_groupe est une fonction respectant le prototype moyenne_groupe(entier) retourne un entier

45 Étude de cas 6.3 Fonction moyenne_groupe En-tête: moyenne_groupe(entier n) retourne un entier Corps: POUR chaque étudiant dans la liste FAIRE calculer la moyenne des n notes afficher la moyenne RETOURNER la moyenne du groupe

46 Étude de cas 6.3 Fonction moyenne_groupe En-tête: moyenne_groupe(entier n) retourne un entier Corps: trois entiers : mgroupe, metudiants, nbetudiants un entier : id TANT QUE (LIRE(id) FDF) FAIRE metudiants total(n) / n ÉCRIRE La moyenne de létudiant id est metudiants RETOURNER la moyenne du groupe

47 Étude de cas 6.3 Fonction moyenne_groupe En-tête: moyenne_groupe(entier n) retourne un entier Corps: trois entiers : mgroupe, metudiants, nbetudiants un entier : id TANT QUE (LIRE(id) FDF) FAIRE metudiants total(n) / n ÉCRIRE La moyenne de létudiant id est metudiants RETOURNER la moyenne du groupe fonction vue précédemment

48 Étude de cas 6.3 Fonction moyenne_groupe En-tête: entier moyenne_groupe(entier n) Corps: entier mgroupe, metudiants, nbetudiants entier id nbetudiants = 0 TANT QUE (LIRE(id) FDF) FAIRE metudiants total(n) / n ÉCRIRE La moyenne de létudiant id est metudiants RETOURNER mgroupe nbetudiants nbetudiants + 1 mgroupe mgroupe + metudiants mgroupe / nbetudiants nbetudiant 0

49 Étude de cas 6.4 Accumulation dintérêts Description du problème:Étant donné un investissement initial et un taux dintérêt annuel, déterminer le nombre dannées nécessaire pour atteindre un objectif spécifié en entrée. Faire ceci pour des intérêts simples et composés. Spécification de lentrée: Trois valeurs réelles 0: linvestissement initial, le taux dintérêt annuel et lobjectif.

50 Étude de cas 6.4 Fonction principale trois réels: initial, taux_annuel, objectif deux entiers: nbsimple, nbcompose LIRE initial, taux_annuel, objectif SI (initial 0 ou taux_annuel 0 ou objectif initial ) ALORS ÉCRIRE Erreur dans les données SINON nbsimple simple(initial, taux, annuel, objectif) nbcomp compose(initial, taux, annuel, objectif) AFFICHER nombre dannées (simple): nbsimple AFFICHER nombre dannées (composé): nbcom où simple et compose sont des fonctions respectant les prototypes: simple(réel, réel, réel) retourne un entier compose( réel, réel, réel) retourne un entier

51 Étude de cas 6.4 Fonction simple En-tête: simple(réel initial, réel taux, réel objectif) retourne un entier Corps: réel: cumul entier: annees cumul initial annees 0 TANT QUE (cumul < objectif) FAIRE cumul cumul + initial*taux/100 annees annees + 1 RETOURNER annees

52 Étude de cas 6.4 Fonction compose En-tête: compose(réel initial, réel taux, réel objectif) retourne un entier Corps: réel: cumul entier: annees cumul initial annees 0 TANT QUE (cumul < objectif) FAIRE cumul cumul + cumul*taux/100 annees annees + 1 RETOURNER annees

53 Étude de cas 6.4 TANT QUE (condition) FAIRE instruction FAIRE instruction TANT QUE (condition) Autre type de boucle Utilisé lorsque le corps de la boucle doit être exécuté au moins une fois Pour sassurer que le corps de la boucle ne soit jamais exécuté si la condition est fausse.

54 Étude de cas 6.4 Fonction simple En-tête: simple(réel initial, réel taux, réel objectif) retourne un entier Corps: réel: cumul entier: annees cumul initial annees 0 FAIRE cumul cumul + initial*taux/100 annees annees + 1 TANT QUE (cumul < objectif) RETOURNER annees

55 Étude de cas 6.4 Fonction compose En-tête: compose(réel initial, réel taux, réel objectif) retourne un entier Corps: réel: cumul entier: annees cumul initial annees 0 FAIRE cumul cumul + cumul*taux/100 annees annees + 1 TANT QUE (cumul < objectif) RETOURNER annees

56 Étude de cas 6.4 Pseudo-code FAIRE instruction TANT QUE (condition) En C/C++ do instruction while (expression);


Télécharger ppt "8PRO107 Éléments de programmation Comment répéter plusieurs fois une séquence dinstructions."

Présentations similaires


Annonces Google