Sie sind auf Seite 1von 5

LIF 1 TD 3 : Fonctions et procdures

Objectifs :

Assimiler la diffrence entre une fonction et une procdure. Savoir dclarer et utiliser un sous-programme

Recommandations : Pour chaque algorithme demand, vous prciserez (en justifiant) sil sagit dune procdure ou dune fonction. Vous crirez lentte du sous-programme (sans oublier les prconditions, les donnes et rsultats, les dclarations des variables locales, ) ainsi quun exemple dappel au sous-programme. 1- Rappeler en quelques mots la diffrence entre une fonction et une procdure. Donnez un exemple caractristique pour chaque. Fonction : renvoie un rsultat mais ne modifie pas lenvironnement exemple : factorielle Procdure : ne renvoie rien mais modifie lenvironnement. exemple : affichage_mention Faire quelques rappels de cours sur en-tte fonction / procdure, paramtres formels / effectifs, appel dune fonction (affichage du rsultat, affectation, comparaison, ), appel dune procdure (ce quon ne peut pas faire). 2- crire lalgorithme dun sous-programme qui retourne la moyenne de deux rels a et b
donns. crire le programme principal qui utilise le sous-programme prcdent et affiche le rsultat produit.

Fonction moyenne (a : rel , b : rel) : rel Prcondition : aucune Donnes : a et b Rsultat : moyenne de a et b Description : fonction qui calcule la moyenne de deux rels Variable locale c : rel Dbut c (a+b) / 2 Retourner c Fin moyenne Appel : Dbut Variables locales : v1, v2, res : rels Afficher (premire valeur) Saisir (v1) Afficher (deuxime valeur) Saisir (v2)

res = moyenne (v1,v2) ou afficher (moyenne(v1,v2)) Afficher (res) Fin Commencez parler de paramtres formels (a et b) et effectifs (v1 et v2); insistez sur le fait quils portent des noms diffrents. 3- crire lalgorithme dun sous-programme permettant dafficher la table de multiplication dun nombre pass en paramtre. procdure table (n : entier) Prcondition : n >= 0 Donne : n Description : affiche la table de multiplication de n Variables locales i : entier Dbut Pour i allant de 1 n par pas de 1 faire Afficher (i * n ) Fin pour Fin Appel : Variables locales : val : entier Afficher (valeur dont on veut afficher la table de multiplication) Saisir (val) table( val) 4- crire lalgorithme dun sous-programme qui calcule la factorielle dun entier pass en
paramtre. Utiliser ce sous-programme pour afficher la factorielle des 10 premiers entiers.

Fonction factorielle (n : entier) : entier Prcondition : n >0 Donnes : n Description : Calcule et retourne la factorielle de n Rsultat : factorielle de n Variable locale f,i : entier Dbut i 1 f 1 tant que i < = n faire f i*f i i+1 fin tant que retourner f Fin factorielle Appel : Dbut Variables locales : facto, i : entier Pour i allant de 1 10 par pas de 1 faire facto = factorielle (i) Afficher (facto) Fin pour Fin

ou

afficher (factorielle (i))

5- crire lalgorithme dun sous-programme qui calcule la somme des n premiers entiers.
Rappel : 1+2+3++n = n(n+1)/2

fonction sommeN (n : entier) : entier Prcondition : n >= 0 Donne : n Rsultat : somme des n premiers entiers naturels Variables locales som,i : entier Dbut Som 0 i n Tant Que i > 0 Faire som som + i i i-1 FinTantQue retourner som Fin Deuxime version fonction sommeN (n : entier) : entier Donne : n Prcondition : n >= 0 Rsultat : somme des n premiers entiers naturels Dbut retourner n * (n + 1) / 2 Fin vitez de leur parler de la version rcursive, a sera fait dans en LIF3 : scheme Appel : (commun aux deux versions) Dbut Variables locales : val, res : rels Afficher (valeur jusqu' laquelle on veut calculer la somme) Saisir (val) res = sommeN (val) Afficher (res) Fin 6- crire lalgorithme dun sous-programme qui affiche les dix nombres suivants la valeur n donne en paramtre. Par exemple, si l'utilisateur entre le nombre 17, le programme affichera les nombres de 18 27. Procdure suite (n : entier) Prcondition : Donnes : n Description : Affiche les 10 valeurs suivant n Variable locale i : entier Dbut pour i allant de n+1 n+10 par pas de 1 faire afficher(i) fin pour Fin suite

Appel : Dbut Variables locales : val : entier Dbut afficher(donnez votre valeur) saisir(val) suite(val) Fin 7- crire lalgorithme dun sous programme qui dessine un carr de cot N l'cran. Lutilisateur pourra choisir le caractre du contour du carr. procdure dessine_carre (n : entier, c : caractre) Prcondition : aucune Donne : n cote du carre, c caractre du contour Description : Dessine un carr de cote n lcran Variables locales i,j : entier Dbut Pour i allant de 1 n par pas de 1 faire Afficher (c ) Fin pour Afficher (saut de ligne) Pour i allant de 2 n-1 par pas de 1 faire Afficher (c ) Pour j allant de 2 n-1 par pas de 1 faire Afficher (espace) Fin pour Afficher (c ) Afficher (saut de ligne) Fin pour Pour i allant de 1 n par pas de 1 faire Afficher (c ) Fin pour Fin Appel : Dbut Variables locales :

cote : entier car : caractre Afficher (quelle est le cote du carre ?) Saisir (cote) Afficher (quel est le caractre du contour ?) Saisir (car) dessine_carre(carre, car) Fin sil vous reste du temps vous pouvez traduire lalgo prcdent et les faire rflchir (par rapport au TP quils ont du faire) comment scinder ce problme en plusieurs procdures. Montrez leur aussi lintrt des commentaires pour expliquer quelle boucle correspond quelle ligne du carre.

void dessine_carre(int n, char c) { int i,j; /* premiere ligne pleine du carr */ for (i=0;i<n;i++) { cout<<c; } cout << endl; /* lignes partielles */ for (i=1;i<n-1;i++) { cout<<c; for(j=1;j<n-1;j++) { cout<<" "; } cout<<c; cout << endl; } /*derniere ligne pleine du carr */ for (i=0;i<n;i++) { cout<<c; } cout << endl; }

Pour sentraner 8- Un nombre parfait est un nombre naturel n non nul qui est gal la somme de ses diviseurs stricts (n exclus). Exemple : 6 = 1 + 2 + 3 a. crire en langage algorithmique une fonction boolenne qui retourne vrai si un entier n pass en paramtre est un nombre parfait, faux sinon. b. crire en langage algorithmique le programme principal permettant dafficher la liste des nombres parfaits compris entre 1 et 10000. On utilisera le rsultat renvoy par la fonction prcdente.

Das könnte Ihnen auch gefallen