discase
discase@mail.dotcom.fr |
>Correction de l'exercice |
TYPE TFiche = RECORD Nom : STRING; Prenom: STRING; Rue: STRING; CP: INTEGER; Tel: STRING; Age: BYTE; END; VAR Fiches: array[1..50] of TFiche; | l |
TYPE TFiche = RECORD Nom, Prenom, Rue, Tel : STRING; CP: INTEGER; Age : BYTE; END; VAR Fiches: array[1..50] of TFiche; nom1 : STRING; i,NbFiches,MaxAge,IndiceMAx : INTEGER; BEGIN NbFiches := 1; MaxAge := 0; WHILE True DO BEGIN write('Entrer un nom:'); readln(nom1); IF (nom1 <> 'FIN') THEN BEGIN Fiches[NbFiches].Nom := nom1; write('Entrer un prénom:'); readln(Fiches[NbFiches].Prenom); write('Entrer un âge:'); readln(Fiches[NbFiches].Age); write('Entrer une rue:'); readln(Fiches[NbFiches].Rue); write('Entrer un code postal:'); readln(Fiches[NbFiches].CP); write('Entrer un numéro de télephone:'); readln(Fiches[NbFiches].Tel); NbFiches := NbFiches + 1; END ELSE Break; END; FOR i:=1 TO NbFiches DO BEGIN IF Fiches[i].Age > MaxAge THEN BEGIN MaxAge := Fiches[i].Age; IndiceMax := i; END; END; WriteLn('La plus vieille personne a pour nom: ',Fiches[IndiceMax].Nom); END. | l |
>Fonctionnement |
>Programmation modulaire |
>C'est quoi ? |
>Fonctions et procédures |
>Les Fonctions |
>Ecriture d'une fonction en Pascal |
FUNCTION nom_fonction(paramètre1, paramètre2, ..., paramètren) : type_retour; BEGIN .. .. END; | l |
FUNCTION f(x : REAL) : REAL; BEGIN f := x + 3; END; | l |
>Variables locales |
FUNCTION f(x: REAL): REAL; VAR a : INTEGER; BEGIN a := x * x; f := a + 3; END; | l |
>Fonctions imbriquées |
FUNCTION f(x:REAL): REAL; FUNCTION carre(x :REAL): REAL; BEGIN carre := x * x; END; BEGIN f := carre(x) + 3; END; BEGIN Write(f(3)); END. | l |
+---------- Programme principal ----------------+ | | | variables locales : +---- f ----------------+ | | | var locales: | | | | +-- carre --+ | | | | | | | | | | +-----------+ | | | | | | | +-----------------------+ | | | +-----------------------------------------------+ | l |
>Les procédures |
>Place des déclarations |
>Passage des arguments |
TYPE Tab = array[1..50] of INTEGER; PROCEDURE Reset_Tab(Tab : TTab); VAR i : INTEGER; BEGIN FOR i:=1 TO 50 DO BEGIN Tab[i] := 0; END; END; | l |
VAR Tab1 : TTab; BEGIN Tab1[1] := 1; Tab1[2] := 10; Tab1[3] := 100; ... Tab1[50] := 12; Reset_Tab(Tab1); Write(Tab1[1]); END. | l |
PROCEDURE Reset_Tab(VAR Tab: TTab); | l |