Académique Documents
Professionnel Documents
Culture Documents
4me Tech
I.
Introduction:
Activit1 :
Ecrire une analyse dun programme qui calcule puis affiche le factoriel dun entier N donn. N != 1*2*3*4*5**N ; on donne 0 !=1 Analyse : Nom= factorielle S L.D.E 3 Rsultat= Ecrire("La factorielle de ",n," est ",f) 2 (f)=[ f1]Pour i de 1 n faire ff*i fin pour 1 Rpter n=donne("saisir un entier :") jusqu (n>0) i=compteur 4 fin factorielle
O.U f n i
Affichage du rsultat Calcul de la factorielle Saisie dun entier N Lorsqu'un problme devient de plus en plus complexe ou/et de grande taille, on doit le dcomposer en sous problmes indpendants et de tailles rduites qu'on appelle sous-programme (module).Il existe deux types de sous programmes : Les fonctions Les procdures Pour rsoudre un problme en utilisant la notion de modules, il faut suivre les tapes suivantes : Analyse du programme principal puis son algorithme Analyse/ algorithme de chaque module part Traduction pascal complte Chaque partie sappelle un module
II.
Les fonctions:
Activit1 : Citer quelques fonctions standard en voquant les paramtres ncessaires. Rponse : ORD(c) c= "A" ORD("A") vaut 64 c= "c" ORD("c") vaut 99 Une fonction Un seul rsultat Une seule valeur 1. Dfinition : Une fonction est un sous programme qui renvoie une seule valeur reprsentant le rsultat de la fonction. Une fonction doit avoir un type et a devra tre celui du rsultat.
1
ChapitreV
4me Tech
2.Appel dune fonction : On appelle une fonction tout simplement par son nom, suivi de la liste des paramtres effectifs (Pe). Un appel de fonction figure dans un contexte d'affichage ou dans une expression sous la forme suivante : Valeur nom_de_la_fonction ( Pe1 , Pe2 , ... , Pen ) 3.Syntaxe : Il est obligatoire de prciser, ds le dbut, le type de la fonction qui est en mme temps le type du rsultat retourn par l'excution des instructions de la fonction.
Syntaxe en analyse DEF FN nom_de_la_fonction(Pf1 :type ;.. ;Pfn :type) :type du rsultat de la fonction L.D.E Rsultat= nom-fonction Rsultat . . Fin nom_fonction Syntaxe en algorithmique
S n-1
O.U
Activit2 : Reprenons lactivit de la factorielle et traitant l en utilisant lanalys modulaire Analyse Programme Principal :
Nom= factorielle S 3 2 1 4 L.D.E Rsultat= Ecrire("La factorielle de ",n," est ",f) f FN fact(n) Rpter n=donne("saisir un entier :") jusqu (n>0) fin factorielle Objets n fact f Tableau de dclaration des objets globaux Type/Nature Entier Fonction entier Rle Un entier fonction La factorielle de n O.U f n fact
ChapitreV
4me Tech
Remarques : Une fonction retourne un seul rsultat, donc on doit spcifier son type. Le type du rsultat d'une fonction ne peut tre que de type simple : entier, rel, boolen, caractre, chane de caractres. Pf1, Pf2 liste des paramtres formels. Type1, Type2 sont les types des paramtres formels. Tout nouvel objet utilis dans une fonction est appel objet local. Tout objet dclar dans le programme principal est appel objet global. Les paramtres effectifs reprsentent les valeurs communiques du programme appelant au programme appel, ils se substituent aux paramtres formels dclars dans l'entte de la fonction. Les types des paramtres effectifs et formels peuvent tre simples ou composs. Les paramtres effectifs de l'appel et les paramtres formels de l'en-tte de la dclaration de la fonction doivent s'accorder du point de vue Ordre, nombre et type. Passage des paramtres : Avant d'excuter les instructions de la fonction chaque paramtre effectif est affect au paramtre formel qui lui correspond. Pour le cas d'une fonction, l'objet d'un appel est de calculer une valeur et non pas de modifier les valeurs des paramtres effectifs. Par consquent, un seul mode de passage de paramtres est utilis: passage par valeur. Traduction Pascal :
program factorielle; uses wincrt; var n:integer; f:longint; function fact(e:integer):longint; var i:integer;
ChapitreV f1:longint; begin f1:=1; for i:=1 to e do f1:=f1*i; fact:=f1; end; begin repeat write('saisir un entier:'); readln(n); until(n>=0); f:=fact(n); writeln('la factorielle de ',n,' est ',f); end.
4me Tech
Applications : 1. Ecrire une analyse, un algorithme et sa traduction en pascal dun programme intitul som_fact qui permet de calculer et dafficher la somme des factorielles des chiffres dun nombre n avec (100<= n <=999). Exemple : Soit n= 253 Som = 2 ! + 5 ! + 3 ! 2. Ecrire une analyse, un algorithme et sa traduction en pascal dun programme qui permet de saisir les moyennes de n lves (5<n<30) dans un tableau, de trouver puis dafficher le nombre dlves qui ont russi et la plus basse moyenne.
III.
Les procdures:
Nom= ordre S
7 4
Activit : Ecrire une analyse, un algorithme et sa traduction en pascal qui permet de classer en ordre croissant trois variables donnes strictement positives V1, V2 et V3.
L.D.E
Rsultat= Rsultat = Ecrire (V1," < ",V2, " < " , V3) Si (V1 > V2) alors Int T1 V1 V2 V2 Int FinSi Si (V1 > V3) alors Int V1 V1 V3 V3 Int FinSi Si (V2 > V3) alors Int V2 V2 V3 V3 Int FinSi V1 = Rpter V1 = donne Jusqu' (V1 > 0) V2 = Rpter V2 = donne Jusqu' (V2 > 0) V3 = Rpter V3 = donne Jusqu' (V3 > 0) 4 V1 V2 V3 Int
O.U
1 2 3 8
4me Tech
Remarques
Le mme traitement ralisant la permutation de deux nombres est utilis trois fois. On peut penser isoler ce traitement et d'en faire un module c d regrouper la squence d'instruction qui se rpte plusieurs fois dans un mme module et d'appeler ce module autant de fois que ncessaire. Rappelons qu'une fonction est un sous programme qui calcule un rsultat unique et de type simple. Le
sous programme dsir va calculer deux rsultats : Pour cela, ce sous programme ne peut plus correspondre une fonction, il sera dsign donc par une procdure. De mme pour la saisie dune donne.
1. Dfinition : Une procdure est une suite d'instructions identifie par un nom qui excute une tche dtermine et qui peut avoir plusieurs rsultats. 2. Appel dune procdure : Une instruction d'appel permet d'excuter les instructions de la
procdure. L'appel se fait par le nom de la procdure suivi par la liste des paramtres effectifs. Cet appel de procdure a la forme suivante : Nom_de_la_procdure (Pe1, Pe2,, Pen)
ChapitreV
4me Tech
2. Syntaxe :
S n-1 Syntaxe en analyse DEF PROC nom_de_la_procedure(Pf1 :type ;.. ;Pfn :type) L.D.E Rsultat= . . Fin nom_procedure Syntaxe en algorithmique O.U
Remarques: Le nombre, l'ordre et les types de paramtres effectifs doivent correspondre au nombre, ordre et types de paramtres formels. Les types des paramtres effectifs et formels peuvent tre simple (scalaire) ou composs.
O.U
ChapitreV
4me Tech
1 2
Algorithme procdure saisie : 0) DEF PROC saisie(var a :entier) 1) Repter Ecrire("saisir un entier :"), lire(a) Jusqu (a>0) 2) Fin saisie Analyse procdure permut :
DEF PROC permut(var x,y :entier) S 1 2 3 4 Rsultat= aux x xy y aux fin permut L.D.E O.U
Traduction Pascal : Program ordre; uses wincrt; var v1,v2,v3 : integer; procedure saisie(var a:integer); begin repeat write('saisir un entier'); readln(a); until(a>0); end; procedure permut(var x,y : integer); var aux:integer; begin 4. Passage des paramtres :
aux:= x; x:= y; y:= aux; end; begin saisie(v1); saisie(v2); saisie(v3); if(v1>v2) then permut(v1,v2); if(v1>v3) then permut(v1,v3); if(v2>v3) then permut (v2,v3); writeln (v1,' < ', v2, ' < ' , v3) ; end.
Deux modes de passages sont utilises : 4-1 Passage de paramtre par valeur
7
ChapitreV
4me Tech
Au retour de sous-programme appel chaque paramtre effectif garde sa valeur initiale de l'appel. C'est le mode de communication le plus simple qui ne permet le passage de valeurs que dans un seul sens : Programme appelant Programme appel 4-2 Passage de paramtres par variable Dans ce mode de passage les paramtres formels sont prcds du mot cl VAR dans leur dclaration. Toute modification de la valeur du paramtre formel entrane automatiquement la modification du paramtre effectif qui lui correspond. Il y a communication de valeurs dans les deux sens: Programme appelant Programme appel
Application Ecrire une analyse, un algorithme et sa traduction Pascal dun programme qui permet de saisir un entier naturel non nul n (2<n<50) suivi de n rels mettre dans un tableau T. Puis les affiches en commenant par le dernier. (Dcomposer le problme en modules)