TP n°8 AP1 - IUT Amiens

TP n°8 AP1
Définition de type et structures ou enregistrement
Record.....end;
Type structuré (enregistrement)
On peut être conduit à utiliser des types structurés quand dans une seule variable on souhaite réunir
plusieurs « sous-variables » nommées champs. Ces champs peuvent être de type différent. Comme pour
les tableaux, nous définirons préalablement un nouveau "type enregistrement" afin de pouvoir déclarer des
variables.
Schéma de définition d'un type enregistrement
TYPE nom_du_type = RECORD
Nom_du_champs1 : type1 ;
Nom_du_champs2 : type2 ;
Nom_du_champs3 : type3 ;
…..
END ;
Les champs sont placés dans un bloc "Record ... End" et un sous-type peut lui-même être de type
Record, comme vu en cours.
Exemple
TYPE formulaire = RECORD
nom : string[20] ;
age : byte ;
sexe : char ;
nb_enfants : 0..15 ;
END ;
VAR personne : formulaire ;
L'accès aux différents champs de la variable de type enregistrement se fait grâce au "." comme dans le
schéma ci-dessous. Néanmoins il existe en Pascal un mot clés "WITH" qui permet d'éviter la redondance
d'écriture pour le nom de la variable comme l'illustre l'exemple b. Les exemples a et b sont strictement
équivalents.
Schéma d'accès aux champs
nom_variable.nom_du_champs
Exemples équivalents
PROGRAM exemple a ;
TYPE formulaire = RECORD
nom : string[20] ;
age : byte ;
sexe : char ;
nb_enfants : 0..15 ;
END ;
VAR personne : formulaire ;
BEGIN
personne.nom := 'Biba' ;
personne.age := 38 ;
personne.sexe := 'F' ;
personne.nb_enfants := 12 ;
End .
PROGRAM exemple b ;
TYPE formulaire = RECORD
nom : string[20] ;
age : byte ;
sexe : char ;
nb_enfants : 0..15 ;
END ;
VAR personne : formulaire ;
BEGIN
WITH personne DO
Begin
nom := 'Biba' ;
age := 38 ;
sexe := 'F' ;
nb_enfants := 12 ;
End ;
END.
EXO 1 : Géométrie dans le plan I
Ecrire un programme qui demande les coordonnées d'un point à l'utilisateur et qui affiche la distance de
ce point par rapport à l'origine.
On rappelle que la distance AB entre deux points A(xA, yA) et B(xB, yB) est égale à :
Définir en Pascal une structure permettant de représenter les objets de type "Point"
Ecrire le programme permettant de saisir les coordonnées d'un point et d'afficher sa distance à l'origine.
EXO 2 : Géométrie dans le plan II
Reprendre le programme de l'EXO 1 en définissant un type "Triangle", composé de trois "Point".
Ecrire le programme qui permet de saisir les coordonnées des trois points d'un triangle et affiche s'il s'agit
d'un triangle équilatéral (les cotés sont tous égaux), isocèle (deux cotés égaux) ou rectangle (vérifie Pythagore).
Attention un triangle isocèle peut également être rectangle.
?
?
?
EXO 3 : Compte chèque postal
Le but de cet exercice est d'écrire un programme qui vérifie la validité d'un numéro de compte chèque
postal (CCP).
Un numéro de CCP est composé de trois parties:
• un numéro de compte
• un séparateur "-"
• un numéro de contrôle
Un numéro de CCP est correct dans deux cas :
• si le reste de la division du numéro de compte par 97 est différent de zéro et égal au numéro de
contrôle
• si le reste de la division du numéro de compte par 97 est nul et le numéro de contrôle est 97
Exemples.
Le numéro de CPP 1574228 est correct car 15742 mod 97 = 28
Le numéro de CCP 2261010 est incorrect car 22610 mod 97 = 9, différent de 10
Le numéro de CCP 505370 est incorrect car 50537 mod 97 = 0, donc la valeur de contrôle devrait être 97
Le numéro de CCP 5053797est correct car 50537 mod 97 = 0 et la valeur de contrôle est 97
1. Définir en Pascal une structure permettant de représenter un numéro de CCP. Le numéro de
compte pouvant dépasser la capacité de stockage d'un integer (-32 000 → 32 000), on utilisera un
entier long (type longint en Pascal)
2. Ecrire un programme qui demande à l'utilisateur un numéro de CCP et qui indique si celui-ci est
correct
EXO 4 : Tableau d'enregistrements
Le but de cet exercice est de pouvoir gérer plus d'un des formulaire défini dans l'exemple a de ce TP. On
souhaite pour cela définir un nouveau type : un tableau d'enregistrement. On procèdera alors comme suit :
CONST N=5;
TYPE formulaire = RECORD
nom : string[20] ;
age : byte ;
sexe : char ;
nb_enfants : 0..15 ;
END ;
tab_formulaire=ARRAY[1..N] of formulaire ;
VAR T: tab_formulaire;
La variable T est un tableau de 5 éléments, qui sont tous de type formulaire, donc composés de 4 champs.
L'accès aux différents champs se fait suivant le même principe qu'une variable simple :
T[i].nom_du_champs
Ecrire le programme qui permet la saisie des quatre champs de chacun des 5 éléments du tableau et qui
affiche l’âge moyen des personnes représentées dans cette liste, le nombre moyen d'enfants et le nombre
de femmes.