Télécharger la présentation
1
8PRO107 Éléments de programmation
Comment répéter plusieurs fois une séquence d’instructions
2
Additionner une série d’entiers
É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
TANT QUE condition FAIRE
É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: Avec sous-programme
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: Avec sous-programme
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
total(entier n) retourne un entier
É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
total(entier n) retourne un entier
É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
total() retourne un entier
É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
total() retourne un entier
É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
total() retourne un entier
É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
Additionner les n premiers entiers pairs
É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
Fonction principale (1)
É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
Fonction sommepair (version 1)
É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 *compteur compteur compteur + 1 RETOURNER 0
37
Fonction sommepair (version 1)
É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
Fonction sommepair (version 2)
É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 s faire 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
Fonction sommepair (version 3)
É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
Calculer la moyenne des notes
É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
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
Fonction moyenne_groupe
É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
Fonction moyenne_groupe
É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
Fonction moyenne_groupe
É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
Fonction moyenne_groupe
É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
Accumulation d’intérêts
É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 (initial0 ou taux_annuel0 ou objectifinitial ) 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
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 Autre type de boucle
Pour s’assurer que le corps de la boucle ne soit jamais exécuté si la condition est fausse. TANT QUE (condition) FAIRE instruction FAIRE instruction TANT QUE (condition) Utilisé lorsque le corps de la boucle doit être exécuté au moins une fois
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);
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.