1 / 56

8PRO107

8PRO107. Éléments de programmation. Comment répéter plusieurs fois une séquence d’instructions. Étude de cas 6.1. Additionner une série d’entiers Description du problème: Calculer et imprimer la somme d’une série d’entiers donnée en entrée. Spécification de l’entrée: Une liste d’entiers

Download Presentation

8PRO107

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 8PRO107 Éléments de programmation Comment répéter plusieurs fois une séquence d’instructions

  2. Étude de cas 6.1 Additionner une série d’entiers Description du problème: Calculer et imprimer la somme d’une série d’entiers donnée en entrée. Spécification de l’entrée: Une liste d’entiers 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 • // fichier : c5ex1_0.cpp • #include<iostream> • 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 ; • } Remarque: Fonctionne si la liste ne contient que 4 entiers.

  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 En utilisant un sous-programme Fonction principale entier : somme somme  total() ÉCRIRE somme

  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 QUEconditionFAIRE 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 Avec sous-programme Comment spécifier cette condition?

  14. Étude de cas 6.1 • 3 méthodes • Mettre le nombre d’entiers à 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 Méthode 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

  16. Étude de cas 6.1 Méthode 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 • #include<iostream> • 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 Méthode 1 Avec sous-programme Fonction principale deux entiers : somme, n LIRE n somme  total(n) AFFICHER somme où total satisfait le prototype total(entier) retourne un entier

  18. Étude de cas 6.1 Méthode 1 • 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 Avec sous-programme compte le nombre d’itérations

  19. Étude de cas 6.1 Méthode 1 • 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 Avec sous-programme • // fichier : c5ex1_1.cpp • #include<iostream> • 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 ; • } compte le nombre d’itérations

  20. Étude de cas 6.1 Méthode 2 • 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

  21. Étude de cas 6.1 Méthode 2 • 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 drapeau Mis à 0 après avoir lu la valeur spéciale valeur indiquant la fin de la liste

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

  23. Étude de cas 6.1 Méthode 2 Avec sous-programme • 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

  24. Étude de cas 6.1 Méthode 2 • 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 pas d’argument Mis à 0 après avoir lu la valeur spéciale drapeau valeur indiquant la fin de la liste

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

  26. Étude de cas 6.1 • Fin de fichier • Un programme peut lire des données en provenance • du terminal (programme interactif) • d’un fichier (programme non interactif) Dans un fichier : Lorsqu’il n’y a plus de données à lire, on dit que c’est la fin du fichier. La plupart des fonctions de lecture retournent une valeur spéciale lorsqu’elles rencontrent la fin d’un fichier. Nous dénoterons cette valeur par FDF (Fin De Fichier).

  27. Étude de cas 6.1 • Fin de fichier • Un programme peut lire des données en provenance • du terminal (programme interactif) • d’un fichier (programme non interactif) Dans un fichier : Lorsqu’il n’y a plus de données à lire, on dit que c’est la fin du fichier. La plupart des fonctions de lecture retournent une valeur spéciale lorsqu’elles rencontrent la fin d’un fichier. Nous dénoterons cette valeur par FDF (Fin De Fichier). Au terminal : Lorsqu’un programme lit au terminal, comment sait-il qu’il a atteint la fin du fichier? L’utilisateur doit envoyer un signal de fin de fichier en appuyant sur ^d (sur Unix) ou ^z (sur Windows).

  28. Étude de cas 6.1 Méthode 3 • 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

  29. Étude de cas 6.1 Méthode 3 • 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 Avec sous-programme

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

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

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

  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 l’entré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 Les boucles avec incrémentation automatique i = k TANT QUE (i  n) FAIRE instruction i  i + s équivalent à POUR i allant de k à n avec pas de sfaire instruction

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

  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 1faire 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 d’une classe où chaque étudiant a exactement n notes. La moyenne de la classe doit aussi être calculée. Spécification de l’entrée: La première ligne d’entrée contient la valeur n. Il y a ensuite autant de lignes que d’étudiants dans la classe, chacune contenant un numéro d’identification suivi des n notes.

  43. Étude de cas 6.3 Exemple 3 75332 78 80 86 75761 95 100 100 75730 67 61 75 75810 23 16 56 75831 88 85 90

  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 nbetudiant  0 nbetudiants  nbetudiants + 1 mgroupe  mgroupe + metudiants mgroupe / nbetudiants

  49. Étude de cas 6.4 Accumulation d’intérêts Description du problème:Étant donné un investissement initial et un taux d’intérêt annuel, déterminer le nombre d’anné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 l’entrée: Trois valeurs réelles  0: l’investissement initial, le taux d’intérêt annuel et l’objectif.

  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 d’années (simple): ” nbsimple AFFICHER “nombre d’anné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

More Related