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 |