Département des classes préparatoires ST Ecole Nationale Polytechnique d’Oran
CHAPITRE 5: ALGORITHMIQUE 1
Cours N° 1
Plan
Introduction Algorithme Représentation d’un Algorithme Organigramme Langage algorithmique Variables et constantes Instructions Expression
2
INTRODUCTION
Pour résoudre un problème donné en informatique, l'utilisateur de l'ordinateur doit mettre au point un programme et le faire exécuter par la machine.
Pour écrire un programme il faut :
Bien connaître le problème.
Savoir le découper logiquement en un ensemble d'opérations élémentaires (actions).
Connaître un langage compréhensible par la machine.
La résolution d'un problème en informatique nécessite une approche structurée en plusieurs étapes : 3
INTRODUCTION Enoncé informel du problème Enoncé formel : Consiste à poser le problème. On définit tous les éléments du problème : les données, les résultats, les opérations à effectuer. En revanche, on ne se préoccupe pas de l’ordre dans lequel ces tâches seront exécutées.
Analyse
Algorithme : On détermine une méthode de résolution du problème qui consiste à fixer l’ordre dans lequel doivent être effectuées les opérations. Programmation Programme : On va confier l’algorithme à un ordinateur. Il faut donc le traduire dans un langage qui pourra être pris en compte par la machine : un langage de programmation qui suit des règles de syntaxe très strictes.
4
INTRODUCTION
Un algorithme est donc un moyen de description des étapes à suivre pour résoudre un problème.
Provient du nom du mathématicien persan Al-Khawarizmi, le père de l'algèbre
5
ALGORITHMES Définition Procédure de calcul bien définie qui prend en entrée une valeur, ou un ensemble de valeurs, et qui donne en sortie une valeur, ou un ensemble de valeurs.
Un algorithme est donc une séquence d’étapes de calcul qui transforment l’entrée en sortie.
Un algorithme est dit correct si, pour chaque instance en entrée, il se termine en produisant la bonne sortie. L’on dit qu’un algorithme correct résout le problème donné.
6
ETAPES D’UN ALGORITHME Préparation du traitement données nécessaires à la résolution du problème Traitement résolution pas à pas, après décomposition en sous-problèmes si nécessaire. Edition des résultats impression à l’écran, dans un fichier, etc.
7
REPRÉSENTATION D’UN ALGORITHME Un algorithme peut être :
représenté graphiquement par un organigramme,
écrit sous forme littérale, avec un langage algorithmique.
Organigramme Définition: un organigramme de programmation (quelquefois nommé algorigramme ou ordinogramme) est une représentation graphique normalisée de l'enchaînement des opérations et des décisions effectuées par un programme d'ordinateur.
La représentation graphique permet une lecture aisée des algorithmes mais présente toutefois l’inconvénient de consommer une place importante.
Les principaux symboles sont les suivants :
8
ORGANIGRAMME
Principaux symboles utilisés pour la construction d’un organigramme Symboles normalisés
Signification
Début, Fin
Le début, la fin d'un programme.
Traitement
Les opérations ou groupes d'opérations à effectuer sur les données, les instructions, …, ou opération pour laquelle il n'existe aucun symbole.
Non
Pour représenter une décision ou un après un test
Oui Lecture, Ecriture
Sousprogramme
Mise à disposition d'une information à traiter ou enregistrement d'une information traitée. Appel de sous programme.
9
ORGANIGRAMME Exemple: porte automatique d'un magasin. A l'entrée d'un magasin, un système automatisé se charge de l'ouverture et de la fermeture des portes. La procédure est la suivante : 1. Mise en marche du système. 2. Détection d'une personne. 3. Si une personne est détectée, le système actionne le vérin d'ouverture de la porte et maintient la porte ouverte jusqu'à ce que la personne soit passée, puis actionne le vérin de fermeture de la porte. Si le système ne détecte rien, la porte est maintenue fermée. 4. Le système se remet en état de détection d'une présence (étape 1). 10
ORGANIGRAMME
11
LANGAGE ALGORITHMIQUE Langage algorithmique : Un langage algorithmique (pseudo-langage) permet la description de la résolution d'un problème en utilisant des opérations et des enchaînements d'opérations qui sont ceux des ordinateurs sans toutefois être particulier à un ordinateur précis. langage d'algorithmes = langage de description des données, des actions et des enchaînements Structure d’un algorithme Algorithme nom Définition des objets : variables et constantes DEBUT Définition du corps : suite d’instructions FIN
12
LANGAGE ALGORITHMIQUE Algorithme NomAlgorithme { ceci est un commentaire} Début ... Actions Fin
Algorithme Bonjour {il dit juste bonjour…} Début afficher('Hello world !!!') Fin
Règles:
Il faut avoir une écriture rigoureuse
Il faut avoir une écriture soignée : respecter l’indentation
Il est nécessaire de commenter les algorithmes
Il existe plusieurs solutions algorithmiques à un problème posé
Il faut rechercher l’efficacité de ce que l’on écrit
13
VARIABLES ET CONSTANTES Un algorithme opère sur des objets. A tout objet est associé un nom qui permet de l'identifier de façon unique. C'est une suite de caractères alphanumériques dont le premier est alphabétique.
On distingue deux types d'objets :
Des objets qui peuvent varier durant le déroulement d'un algorithme : Variables.
Des objets qui ne peuvent pas variés par le déroulement d'un algorithme : Constantes.
14
VARIABLES ET CONSTANTES On peut répartir l'ensemble des objets en sous ensembles appelés classe ou type. Il existe 4 types standards : ENTIER : l’ensemble des entiers relatifs REEL : l’ensemble des réels BOOLEEN : les valeurs Vrai et Faux. Le type booléen est très économique en termes de place mémoire occupée, puisque pour stocker une telle information binaire, un seul bit suffit. CARACTÈRE : l’ensemble des caractères.
CHAÎNE : chaînes de caractères.
15
DÉCLARATION DES DONNÉES
En langage algorithmique, on définit les objets comme suit :
variable <nom de donnée>: type variables Nom1, Nom2, … : Type
//Déclaration de plusieurs variables
• Instruction permettant de réserver de l’espace mémoire pour stocker des données. Exemples
Variables val, unNombre: entiers nom, prénom : chaînes de caractères Constante <nom de donnée>: type <-- valeur ou expression constantes Type Nom=valeur
// Déclaration d’une constante
• Instruction permettant de réserver de l’espace mémoire pour stocker une constante dont la valeur ne varie pas. Exemples
Constante PI=3.14 , MAXI=32 Ou bien
Constante PI=3.14 : réel, MAXI=32 : entier
16
LES INSTRUCTIONS Instruction de lecture
Une instruction de lecture permet à l’utilisateur de rentrer des valeurs au clavier pour qu’elles soient utilisées par le programme :
Lire(variable1, variable2…) Remarques : 1. La saisie se fait uniquement dans des variables. 2. La donnée à introduire doit être de même type que la variable réceptrice. Instruction d’écriture
Une instruction d’écriture permet au programme de communiquer des valeurs à l’utilisateur en les affichant à l’écran : Ecrire (paramètre1,paramètre2…)
paramètre = variable | expression | constante Exemple: Ecrire(" La valeur de 3*2 est égale à ", 3*2) Ecrire(" La moyenne est = ", MOY)
17
LES INSTRUCTIONS Instruction d’affectation Affecter une variable c’est lui attribuer une valeur. variable valeur ou expression Exemple : note18 note A+B moyenne (note1+note2)/2 Remarques : Comptabilité entre le contenant et le contenu Une variable désigné doit être au préalable déclarée
18
LES INSTRUCTIONS Question1 : Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ? Algorithme affectation variables A, B : Entier Début A←2 B ← 14 C←A+B B←A+B A←C Fin Réponse1 : A = 16 B = 16 C = 16 19
LES INSTRUCTIONS Question2 : écrire un algorithme permettant d’échanger les valeurs de deux variables A et B, et ce quel que soit leur contenu préalable. Réponse2 : Algorithme Permutation variables A, B, C : Entier Début lire(A,B) C←A A←B B←C Fin
On est obligé de passer par une variable dite temporaire (la variable 20 C).
EXPRESSIONS Expressions Expression sur les objets : Une expression est une suite d’opérandes reliés par des opérateurs. Une expression peut être arithmétique logique
: on utilisera les opérateurs +,-,/, *, ^
: les opérateurs utilisés sont ET, OU, et NON
relationnelle
: les opérateurs utilisés sont <, <=, >, >=, =, <>
Ordre de priorité Les opérateurs suivants sont ordonnés du plus prioritaire au moins prioritaire dans l'évaluation d'une expression arithmétique. 1- Les parenthèses 2- "- " un aire 3- Les fonctions 4- Les opérateurs de multiplication " * " et de division " / " 5- Les opérateurs d'addition " + " et de soustraction " - "
21
EXPRESSIONS Remarque Si l'ordre entre les opérateurs dans une expression est le même, on évalue l'expression de gauche à droite. Exemples •
3*2+4 = 6+4=10
•
3*(2+4)=3*6 car les parenthèses sont plus prioritaires
•
17 MOD 10 DIV 3=(17MOD10)DIV3=7DIV3=2
22
EXPRESSIONS Remarques Importantes
Toute variable utilisée dans un algorithme doit être déclarée au début de l'algorithme, une fois et une seule.
L'affectation de valeur à une variable peut être effectuée autant de fois que l'on veut au cours d'un algorithme. La valeur de la variable sera alors modifiée à chaque affectation.
Lorsqu'une variable apparaît en partie droite d'une action d'affectation, c'est que l'on suppose qu'elle contient obligatoirement une valeur. Cette valeur devra lui avoir été affectée auparavant (par initialisation ou saisie), sinon l'on dira que la valeur est indéfinie, et le résultat de l'affectation ne sera pas défini.
La variable réceptrice d'une affectation doit être de même type que de la valeur à affecter ou de type compatible. Le type est dit compatible s'il est 23 inclus dans le type de la variable réceptrice.
Exemple : REEL ¬ ENTIER est possible mais pas l'inverse.
EXERCICE
Ecrire un programme qui demande un nombre à l’utilisateur, puis qui calcule et affiche le carré de ce nombre.
Algorithme carré; Variables nb, carr : Entier; Début Ecrire (”Entrez un nombre :”); Lire (nb); carr nb * nb; Ecrire (”Son carré est : ”, carr); Fin
En fait, on pourrait tout aussi bien économiser la variable carr en remplaçant les deux avant-dernières lignes par :
Ecrire (”Son carré est : ”, nb*nb);
24
Cours N° 2
Plan
Structure alternative Les structures répétitives (boules)
25
LA STRUCTURE ALTERNATIVE
L’instruction Si …alors ... Fin Si
Si condition Alors Instruction (ou suite d'instructions) Fin si Exemple
Algorithme égalité ; Variables nb1, nb2 : Entier; Début Ecrire (”Entrez deux nombres :”); Lire (nb1, nb2); si (nb1=nb2) alors Ecrire (”égalité”); Fin si Fin
L’instruction Si …alors …Sinon …Fin Si
Si condition Alors Instruction (ou suite d'instructions) Sinon Instruction (ou suite d'instructions) Fin si
26
LA STRUCTURE ALTERNATIVE Exercice Etant donné deux entiers a et b, trouver le maximum m=max(a,b) et afficher le résultat à l’écran. Réponse: Algorithme max2; variables a , b, m: Entier; Début Ecrire (”entrer deux entiers:”); lire(a,b); si a>b alors m a; sinon mb; fin si écrire("le max de" ,a,"et",b,"= ",m); Fin
27
L'INSTRUCTION CAS Lorsque l’on doit comparer une même variable avec plusieurs valeurs, comme par exemple : si a=1 alors instructions1 sinon si a=2 alors instructions2 sinon si a=4 alors instructions3 sinon ... finsi finsi finsi
On peut remplacer cette suite de si par l’instruction cas
28
L'INSTRUCTION CAS cas où v vaut v1 : action1 v2 : action2 ... vn : actionn autre : action autre fincas v1,. . . ,vn sont des constantes de type scalaire (entier, naturel, enuméré, ou caractère) Action i est exécutée si v = vi (on quitte ensuite l’instruction cas) action autre est exécutée si quelque soit i, v ≠ vi
29
L'INSTRUCTION CAS Exemple Algorithme Variables c : caractère Début Ecrire(”entrer un caractère”) Lire (c) Si( (c>=’A’) et (c<=‘Z’) ) alors cas où c vaut ‘A’,’E’, ‘I’, ‘O’, ‘U’, ‘Y’ : ecrire(c, ”est une voyelle majuscule”) autre : ecrire(c, ”est une consonne majuscule”) fincas sinon ecrire(c, ”n’est pas une lettre majuscule”) Finsi Fin
30
LES STRUCTURES RÉPÉTITIVES
La structure Pour
pour compteur val_initial à val_final faire Instructions à répéter Fin pour Exemple
Ecrire un algorithme qui demande un nombre, et qui calcule la somme des entiers jusqu'à ce nombre. Si l'on tape 4, le résultat= 1+2+3+4=10 Algorithme Somme_Nombres variables i, val, s : Entier Début Ecrire (" entrer un nombre entier:") ; Lire (val); s0; pour i 1 à val faire s s+i Finpour Ecrire (" la somme des nombres de 1 à ", val, "est ", s); Fin .
31
LES STRUCTURES RÉPÉTITIVES
La structure tant que
Tantque condition de continuation Faire Instructions à répéter FinTantque Exemple
Contrôle de saisie d'une lettre alphabétique jusqu’à ce que le caractère entré soit valable. Algorithme lettre Variable C : caractère Début Écrire (" Entrez une lettre majuscule "); Lire (C); TantQue (C < 'A' ou C > 'Z') Ecrire ("Saisie erronée. Recommencez"); Lire (C); FinTantQue Ecrire ("Saisie valable"); Fin
32
LIEN ENTRE POUR ET TANTQUE Pour compteur initiale à finale par pas valeur du pas instructions FinPour peut être remplacé par : compteur ← initiale (cas d'un pas positif) TantQue compteur <= finale instructions compteur ← compteur+pas FinTantQue
33
LES STRUCTURES RÉPÉTITIVES
La structure répéter
Répéter Instruction à répéter Jusqu’à condition Exemple Un algorithme qui détermine le premier nombre entier N tel que la somme de 1 à N dépasse strictement 100 (version avec répéter jusqu'à) Algorithme somme Variables som, i : entier; Début som ← 0; i←0 Répéter i ← i+1; som ← som+i; Jusqu'à ( som > 100) Ecrire (" La valeur cherchée est N= ", i) Fin
34
DIFFÉRENCES ENTRE LES BOUCLES TANT QUE ET RÉPÉTER JUSQU'
la séquence d'instructions est exécutée au moins une fois dans la boucle Répéter jusqu'à, alors qu'elle peut ne pas être exécutée dans le cas du Tant que.
la séquence d'instructions est exécutée si la condition est vraie pour Tant que et si la condition est fausse pour Répéter jusqu'à.
Dans les deux cas, la séquence d'instructions doit nécessairement faire évoluer la condition, faute de quoi on obtient une boucle infinie.
35
CHOIX D'UN TYPE DE BOUCLE
Si on peut déterminer le nombre d'itérations avant l'exécution de la boucle, il est plus naturel d'utiliser la boucle Pour
S'il n'est pas possible de connaître le nombre d'itérations avant l'exécution de la boucle, on fera appel à l'une des boucles TantQue ou répéter jusqu'à
Pour le choix entre TantQue et jusqu'à : • Si on doit tester la condition de contrôle avant de commencer les instructions de la boucle, on utilisera TantQue • Si la valeur de la condition de contrôle dépend d'une première exécution des instructions de la boucle, on utilisera répéter jusqu'à 36
LES STRUCTURES RÉPÉTITIVES Exercice Ecrire un algorithme qui demande un nombre de départ, et qui calcule la somme des entiers jusqu’à ce nombre. Par exemple, si l’on entre 5, le programme doit calculer : 1 + 2 + 3 + 4 + 5 = 15 Proposer 3 réponse avec les trois boucles.
37
LES STRUCTURES RÉPÉTITIVES R1 : Algorithme Somme variables nombre, s : Entier Début lire(nombre); s 0; pour i 1 à nombre faire s s + i; fin pour Fin -------------------------------------------------------------------------------------------------------------R2 : Algorithme Somme variables nombre , s, i: Entier Début lire(nombre); s 0; i0; tant que i <= nombre faire s s + i; fin tant que
38
LES STRUCTURES RÉPÉTITIVES R3 : Algorithme Somme variables nombre , s, i: Entier Début lire(nombre) s 0; i 1; répéter s s + i ; jusqu’à (i = nombre) Fin
39
Cours N° 3
Plan
Les tableaux Les enregistrements
40
TABLEAUX INTRODUCTION
Supposons qu'on veut conserver les notes d'une classe de 30 étudiants pour extraire quelques informations. Par exemple : calcul du nombre d'étudiants ayant une note supérieure à 10
Le seul moyen dont nous disposons actuellement consiste à déclarer 30 variables, par exemple N1, …, N30. Après 30 instructions lire, on doit écrire 30 instructions Si, pour faire le calcul nbre ← 0 Si (N1 >10) alors nbre ←nbre+1 FinSi …. Si (N30>10) alors nbre ←nbre+1 FinSi c'est lourd à écrire
Heureusement, les langages de programmation offrent la possibilité de rassembler toutes ces variables dans une seule structure de donnée appelée tableau 41
TABLEAUX
Un tableau est une variable structurée composée d’un nombre de variables simples de même type désignées par un seul identificateur
Ces variables simples sont appelées éléments ou composantes du tableau, elles sont stockées en mémoire à des emplacements contigus (l’un après l’autre)
Le type des éléments du tableau peut être : simple : caractère, entier, réel….. pointeur ou structure (chapitres suivants)
On peut définir des tableaux : à une dimension (tableau unidimensionnel ou vecteur) à plusieurs dimensions (tableau multidimensionnel , matrice)
42
DÉCLARATION D'UN TABLEAU
Une variable de type tableau est déclarée selon la syntaxe suivante :
Type-elem nom-tableau[borne_inf . . borne_sup] type-elem : le type des éléments du tableau, nom-tableau : le nom du tableau, borne_inf : indice du premier élément, borne_sup : indice du dernier élément Si borne_inf > borne_sup alors le tableau est vide. Nous pouvons utiliser également les déclarations suivantes :
Type-elem nom-tableau[dimenssion du tableau] nom-tableau : tableau[dimenssion du tableau] de Type-elem
Exemples
entier tab1[1..10] ou entier tab1[10] réel tab2[12..44] Notes : tableau[1..9] de réel Notes : tableau[9] de réel
43
DÉCLARATION DES TABLEAUX
Variables de type entier Exemple
entier tab1[1..10] réel tab2[12..44]
tab1: 21
100 6
1
....
2
....
indices
8 9 10
Variables de type réel
Tab2: 4,5 10 12
13
12,5
....
14
....
42
43
indices 44
44
ACCÈS À UN ÉLÉMENT DU TABLEAU
tab1[8] : désigne l'élément d'indice 8 dans le tableau tab1, autrement dit le 8ème élément du tableau. tab2[14] désigne l'élément d'indice 14 dans le tableau tab2, autrement dit le 3ème élément du tableau. Les instructions de lecture, écriture et affectation s'appliquent aux tableaux comme aux variables. x ← tab1[1] La variable x prend la valeur du premier élément du tableau, c'est à dire :21 tab1: 21 1
100 6 2
.... ....
8 9 10
tab1[2] ← 43 la valeur de la case indice 2 est remplacée par 43 tab1: 21
43
1
2
6
.... ....
8 9 10
45
PARCOURS DES ÉLÉMENTS D'UN TABLEAU Algorithme InitTableau Variables i : entier entier tab[0..19] Début pour i de 0 à 19 faire tab[i] ← i Ecrire(tab[i] ) fpour Fin 0
1
2
3
..
..
19 46
TABLEAU Exercice Ecrire un algorithme qui demande à l’utilisateur de saisir 30 valeurs pour initialiser un tableau et calcule la somme des ses éléments. Algorithme tableau_somme Variables i,S : entier entier tab[1..30] Début //Chargement du tableau pour i ← 1 à 30 faire ecrire("saisir la valeur numero", i) lire(tab[i]) Fpour //Calcul de la somme des éléments du tableau S← 0 pour i ← 1 à 30 faire S ← S+tab[i] fpour ecrire(S) Fin
47
LES TABLEAUX À DEUX DIMENSIONS Les tableaux à deux dimensions ou matrices Ce tableau a 3 lignes et 4 colonnes. Les éléments du tableau sont repérés par leur numéro de ligne et leur numéro de colonne. 0
1
2
3
0
34
3
67
76
1
7
67
33
56
2
89
12
133
75
Déclaration de la matrice: Type-elem nom-tableau[Première dimension, Deuxième dimension] Exemple: entier Tab[3,4] Tab[2, 1] = 12
48
LES TABLEAUX À DEUX DIMENSIONS Algorithme InitTableau2D Variables i , j : entier entier tab[2,4] Début pour i de 0 à 1 faire pour j de 0 à 3 faire tab[i,j] ← 0 Ecrire(tab[i,j]) fpour fpour Fin Exercice: écrire un algorithme qui demande à l’utilisateur de
saisir 12 valeurs pour initialiser un tableau avec 4 lignes et 3 colonnes et calcule la somme des éléments de chaque ligne.
49
LES TABLEAUX À DEUX DIMENSIONS Exercice: écrire un algorithme qui permet de déclarer un tableau de 4 lignes et 3 colonnes, de saisir les 12 valeurs du tableau et de calculer la somme des éléments de chaque ligne et del’afficher Algorithme somme_Tableau2D
pour i de 0 à 3 faire
Variables i , j : entier
Somme ← 0
entier tab[4,3]
pour j de 0 à 2 faire
entier v[4]
somme ← somme+(tab[i,j])
Somme: entier
fpour
Début
V[i] ← Somme
pour i de 0 à 3 faire
fpour
pour j de 0 à 2faire ecrire("tab[" ,i, ", ",j, "j] = " ) lire (tab[i,j]) fpour fpour
Pour i de 1 à 4 faire ecrire (" somme ligne ",i, "=",v[i-1]) fpour Fin
50
EXERCICES TABLEAUX A UNE DIMENSION Ecrire un algorithme permettant de résoudre le problème suivant : – Données : un tableau tableau contenant 100 entiers – Résultat : “vrai” si le tableau est trié du plus petit au plus grand et “faux” sinon Algorithme tri variables entier tableau[100], i trié : booléen début triévrai i0 tant que (trié = vrai) et (i < 99) faire Si (tableau[i ] > tableau[i+1]) alors trié faux finsi i i +1 finTantQue Si (trié=vrai) alors écrire ("vrai, le tableau est trié du plus petit nombre au plus grand") Sinon écrire ("tableau non trié" ) finsi fin
51
EXERCICES TABLEAUX A UNE DIMENSION Ecrire un algorithme permettant de résoudre le problème suivant : – Données : un tableau tableau contenant 100 entiers – Résultat : “vrai” si les entiers sont consécutifs et “faux” sinon Rappel : deux entiers x et y sont consécutifs si et seulement si y= x+1. Algorithme Consécutifs variables entier tableau[100] i: entier Consécutifs : booléen début Consécutifs vrai i0 tant que (Consécutifs = vrai) et (i < 99) faire Si (tableau[i +1] ≠ tableau[i ] + 1) alors Consécutifs faux finsi i i +1 finTantQue Si (Consécutifs = vrai) alors écrire (‘‘vrai, les entiers sont consécutifs’’) Sinon écrire (‘‘faux’’) finsi fin
52
ENREGISTREMENT (VARIABLES STRUCTURÉES) Définition Un enregistrement(appelé aussi article ou record en englais) est une structure composée d’un nombre fixe d’éléments qui peuvent être de types différents.les éléments d’un enregistrement sont appelés champs, et peuvent être à leur tour des structures(tableaux, enregistrements…) Déclaration de l’enregistrement Type Nom_type = Enregistrement Champ_1 : Type_ Champ_1 :
:
Champ_n : Type_ Champ_n Fin Nom_type
Déclaration d’une variable structurée Variable nom_variable : Nom_type 53
ENREGISTREMENT Exemple: déclaration d’un ‘étudiant1’ et ‘étudiant2’.
enregistrement
‘étudiant’
et
des
variables
Enregistrement
Type étudiant = enregistrement nom, prénom : Chaîne sexe : Caractère numéro : Entier moyenne : Réel Fin étudiant Objet (variable) Variables
étudiant1 : étudiant étudiant2 : étudiant
54
ENREGISTREMENT Accès aux champs d'un enregistrement les champs d'un enregistrement sont accessibles à travers leur nom, grâce à l'opérateur '.' nom_enregistrement.nom_champ : représente la valeur mémorisée dans le champ de l'enregistrement Pour accéder au nom de la variable étudiant2, on utilise l'expression:
étudiant2.nom
55
ENREGISTREMENT Exemple
Type Etud = enregistrement
Nom, prénom:chaine Notes [1..9] : réel { le champ notes est de type tableau } Moy_générale :réel Resutat: (admis,ajourné) { variable de type énuméré} FinEtud Variable PV: tableau[1..600] de ETUD {exemple de tableau dont les éléments sont des enregistrements} 56
ENREGISTREMENT Exemple: algorithme de saisie des données concernant les personnes pers1 et pers2, puis affichage de la différence d'âge entre ces deux personnes. Algorithme âge Type tpersonne=enregistrement
nom : chaîne prénom : chaîne âge : entier Fintpersonne Variables pers1, pers2 : tpersonne Début écrire ("Entrez le nom puis l‘âge de la personne 1") lire (pers1.nom, pers1.age) {il est impossible d'écrire lire pers1} écrire ("Entrez le nom puis l'âge de la personne 2") lire (pers2.nom , pers2.age) écrire ("La différence d'âge entre ", pers1.nom, " et ", pers2.nom , " est de " ) Si (pers1.age > pers2.age) Alors écrire (pers1.age – pers2.age , " ans ") Sinon écrire(pers2.age– pers1.age , " ans ") FinSi Fin
57
ENREGISTREMENT Un type structuré peut être utilisé comme type pour des champs d'un autre type structuré TYPE date = enregistrement jour: entier mois: chaîne année: entier Findate
Une autre manière de déclarer le type enregistrement
personne = enregistrement nom: chaîne ddn: date Finpersonne Pour accéder à l'année de naissance d'une personne, il faut utiliser deux fois l'opérateur '.' pers1.ddn.année Il faut lire une telle variable de droite à gauche : l'année de la date de naissance de la 58 personne 1.
UN TABLEAU COMME CHAMP D’UN ENREGISTREMENT
Il est possible aussi qu'un champ de type structuré soit de type tableau. Exemple d'un type structuré (enregistrement) contenant un tableau simple Imaginons une structure mémorisant des critères géographiques de villes (altitude, type de climat, …). Certains de ces critères pourraient pertinemment être mémorisés pour chaque mois de l'année (par exemple température moyenne, précipitations moyennes, …)
59
UN TABLEAU COMME CHAMP DE STRUCTURE
Algorithme
Type
Écrire("Veuillez entrer successivement les températures moyennes sur les 12 mois" )
Ville= enregistrement Nom : chaîne Alt : entier
//Altitude moyenne
Climat : Chaîne
//type de climat
Temp : tableau[1..12] de réel //température moyenne par mois Précip : tableau[1..12] de réel //précipitations moyennes par mois
//on utilise une boucle pour remplir le tableau des températures Pour i de 1 jusqu'à 12 Faire écrire("mois ", i ) lire (MaVille.Temp[i] ) FinPour
FinVille
//idem pour les précipitations
variable
Fin
MaVille : Ville Début écrire("Nom de la ville? " ) lire MaVille.Nom //idem pour l'altitude et le climat
Si on veut afficher par exemple la température moyenne au mois de juillet de MaVille, on écrit tout simplement : écrire MaVille.Temp[7] // vu que le tableau commence à 1, 7 est l'indice de juillet
LES TABLEAUX D'ENREGISTREMENTS (OU TABLES) Il arrive souvent que l’on veuille traiter non pas un seul enregistrement mais plusieurs. Par exemple, on veut pouvoir traiter un groupe de personne. On ne va donc pas créer autant de variables du type personne qu’il y a de personnes. On va créer un tableau regroupant toutes les personnes du groupe. Il s’agit alors d’un tableau d’enregistrements, autrement appelé « table ». Une table en algorithmique a beaucoup de points communs avec une table d’une base de donnée. Les colonnes sont appelées champs et les lignes enregistrements. Exemple Type Structure personne
nom: chaîne age: entier FinStruct Var groupe: tableau[1..20] de personnes Chaque élément du tableau est un enregistrement, contenant plusieurs variables 61 de type différent.
LES TABLEAUX D'ENREGISTREMENTS (OU TABLES) On accède à un enregistrement par son indice dans le tableau. groupe[2] représente la deuxième personne du groupe groupe[2].nom représente le nom de la deuxième personne du groupe
Attention! groupe.nom[3] n'est pas valide. Pour accéder au nom de la troisième personne du tableau, il faut écrire groupe[3].nom
62