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.
© Copyright 2024 ExpyDoc