cours algorithmique fpst

Page 1

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 : note18 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 mb; 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); s0; 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; i0; 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 i0 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 i0 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


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.