4 Structure - Enregistrement

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 19

Algorithmique

Les Structures (les enregistrements)


Structure
• Le type structure est utilisé pour représenter une suite d’éléments pas
nécessairement de même type, chaque élément est appelé champs.
• Déclaration
Type <nom de type structure> = structure
<variable_champs1> : <type_champs1>;
……………………….. ……….. ………. ………….
<variable_champs2> : <type_champs2>;
finstructure
• Déclaration d’une variable:
nom_variable : <nom de la structure> ;
Structure
• Par analogie au type struct de C/C++:
struct <nom de la structure> {
<type_champs1> <variable_champs1>;
<type_champs2> <variable_champs2>;
}
• Déclaration d’une variable:
struct <nom de la structure> nom_variable;
Structure
Algorithmique En C/C++
Type Adresse = structure struct adresse{
numero_rue : entier; int numero_rue;
nom_rue : tableau[1..20] de caractère; char nom_rue[20];
code_postal : entier; int code_postal;
fin structure }
Type Point = structure
abscisse : réel; struct Point{
ordonnee : réel; float abscisse, ordonnee;
finstructure }
Déclaration des variables: Déclaration des variables:
Adr :Adresse; struct Adresse Adr;
P : Point; struct Point P;
Structure
• Opération sur les structures :
• Affectation
<variable_type_structure> (:= ||=) <variable_type_structure>;
• Accès à un champs
<variable_type_structure>.<nom_champs_1>;
<variable_type_structure>.<nom_champs_2>;
Exemple:
P: Point;
P.abscisse :=12.4;
P. ordonnee :=0.0;
Structures imbriquées
• On peut imbriquer plusieurs structures
Exemple:
Type Date = structure
jour : entier;
mois : entier;
annee : entier;
Finstructure • Déclaration et affectation:
Type Etudiant = structure Etds : Etudiant;
Nom : caractere[0..19];
Prenom : caractere[0..19]; Etds.naissance.jour :=12;
Moyenne : reel; Etds.naissance.mois :=02;
naissance : Date;
Finstructure Etds.naissance.annee :=2000;
Enumérations
• Définition:
→ Un type énuméré est un dont le domaine de valeurs est défini par le
programmeur.
→ Cela ne peut concerner que des types correspondants à un ensemble fini
d’éléments.
→ La définition d’un type énuméré est très simple : on énumère les éléments de
ce type, qui sont des identificateurs, séparés par des virgules et encadrés par
des accolades ouvrante et fermante.
Par exemple:
{lundi,mardi,mercredi,jeudi,vendredi,samedi,dimanche};
Enumérations
• Déclaration d’un type énuméré:
→ On commence par le mot clé type , suivi d’un identificateur qui sera le nom
du type, suivi de la définition proprement dite, suivi d’un point-virgule.
TYPE SEMAINE={lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche};

• Déclaration d’une variable d’un type énuméré:


→ <nom_variable> : <nom_type_enum>;

→ Par exemple: jour : SEMAINE;


→Affectation jour := lundi;
Type Pointeur - RAPPEL
• Un pointeur est une adresse mémoire: il permet de désigner directement une
zone de la mémoire et donc l'objet dont la valeur est rangée à cet endroit.

• Un type pointeur est défini par le symbole * suivi par le nom du type de
l'objet pointé: variable p: entier;
X : *entier;

• A sa création un pointeur contient une valeur qui ne représente rien


(NULL).
• On utilise l'opérateur & pour obtenir l'adresse d'une variable déjà existante.
Type Pointeur - RAPPEL

ALGORITHME ESSAI
Variable P :^ENTIER;
E : ENTIER;
DEBUT

E := 1;
P := &E;
*P := 2; (* On met dans l'objet pointé par P la valeur E :=2 )
FIN
Pile
Une pile est une liste chainée
d'informations dans laquelle :
• Un élément ne peut être ajouté
qu'au sommet de la pile,
Pop
Push • Un élément ne peut être retiré
que du sommet de la pile.
Pile
• Opérations autorisées
Les opérations autorisées avec une pile sont :
• empiler, toujours au sommet, et jusqu’à la limite de la mémoire,
• dépiler, toujours au sommet, si la pile n’est pas vide,
• vérifier si la pile est vide ou non.
Pile
• Opérations autorisées
Les opérations autorisées avec une pile sont :
• empiler, toujours au sommet, et jusqu’à la limite de la mémoire,
• dépiler, toujours au sommet, si la pile n’est pas vide,
• vérifier si la pile est vide ou non.
Pile
• Déclaration pile dynamique
Type Element = Structure
Info : chaîne de caractères;
Suivant : *Element;
Fin Structure
Type Pile = Structure
premier : *Element;
Fin Structure
Pile - Empilement
Procedure Empiler (Entrée/Sortie Tête : *Pile, Entrée Valeur : chaîne de caractères)
/* Ajout d'un élément dans une pile passée en paramètre */
Variable P : *ELEMENT /* pointeur auxiliaire */
DEBUT
1. Allouer(P) /* Réserve un espace mémoire pour le nouvel élément */
2. (*P).Info := Valeur /* stocke dans l'Info de l'élément pointé par P la valeur passée
en paramètre *
3. (*P).Suivant := (*Tête).premier /*stocke dans l'adresse du Suivant l'adresse de Tête
*/
4. (*Tête).premier := P /* Tête pointe maintenant sur le nouvel élément */
FIN
Pile - empilement
Pile - empilement
Pile - dépilement
fonction Dépiler (Entrée/Sortie Tête : *Pile) : chaine de SI Tête <> NIL et (*Tête).premier <> NIL ALORS
caractere /* la pile n'est pas vide donc on peut dépiler */
/* Suppression de l'élément au sommet de la pile passée t:= (*p).Info; /* lavaleur au sommet */
en paramètre */ (* Tête).premier := (*p).Suivant; /* P va
Variable locale pointer sur le 2ème élément de la pile qui
devient le sommet */
P : *Element /* Pointeur nécessaire pour libérer la place Désallouer(P);
occupée par l'élément dépilé */
FINSI
t : chaine de caracter; Retourner t;
DEBUT FIN
SI Tête == NIL ALORS
exit(‘erreur’);
finsi
P = (*Tête).premier;
/* Vérifier si la pile est vide */
Pile - dépilement

Vous aimerez peut-être aussi