Les types structurés en Algorithmique, le complément aux tableaux

Pour vulgariser ce chapitre les types structurés il s’agit simplement de tableau dont les éléments ne sont pas du même type, contrairement aux tableaux ou chaque enregistrement sont de types similaire sur la même entité.
Ce chapitre rejoin la notion de base de donnée dans la méthode Merise. On qualifie les éléments qui composent un enregistrement comme des champs.
On déclare un type structuré dans un bloc appelé TYPE.

Exemple :

 Type Panier_Fruit
nom:chaine
quantitee:entier
prix_unitaire:reel


Pour utiliser un type structuré après l’avoir déclaré il faut déclaré les variables qui feront appel aux différents champs.
Grace à cette déclaration on peut à présent apeler chaque élément grace à son champ.

script types structures

VARIABLES fruit1, fruit2:Panier_Fruit

Mes variables sont déclarées, je peux compléter pour chaque variable son champ.


Ex:Saisir(fruit1.nom,fruit1.quantitee,fruit1.prix_unitaire)

L’exemple est assez explicite, ici je me positionne sur ma variable Fruit1 associé au type Panier_Fruit et je complète les différents champs nom,quantitee et prix unitaire.

On peut également imbriquer des enregistrements en « associant simplement les Types entre eux ».
Je vais reprendre l’exemple du-dessus en le complétant avec une date de péremption pour chaque produit.

Je déclare donc mon type « date_peremption » sous la forme XX/XX/XXXX et mon type « Panier_Fruits ».

 Type date_peremption
jour:entier
moi:entier
annee:entier

 Type Panier_Fruit
nom:chaine
quantitee:entier
prix_unitaire:reel
peremption:date_peremption
FinType

Ici dans mon type Panier_Fruit j’appel simplement un nouveau champ nomé peremption suivi du type peremption déclaré au-dessus.
Pour compléter mes enregistrement je fais simplement appel via le « . » pour concéténer les différents champs de mes types.


Ex:Saisir(fruit1.peremption.annee)

Je demande ici de saisir à l’utilisateur la date de peremption pour le « fruit1 ».

Dans ce type de travail vous allez devoir traiter un grand nombre d’enregistrements, vous n’allez pas déclaré une variable pour chaque « enregistrement ». On va donc faire appel à la notion des tableaux.


Ex: Situation; pour un magasin disposant de 20 fruits différents(pomme, poire, annanas …) je déclare le type pour les fruits puis un tableaux via une constante (NBF:Nombres de Fruits)

Constante NBF <- 20

Type Panier_Fruit
nom:chaine
quantitee:entier
prix_unitaire:reel
FinType

VARIABLES T_panier_fruits :Panier_Fruit[NBF]

On peut maintenant compléter nos enregistrements plus facilement directement dans le tableau via une boucle.

Pour i <- 0 a NBF Faire
Saisir(T_panier_fruits[i].nom)
FinPour

Dans cette boucle, j’insère pour chaque Tour de boucle le nom du fruit, libre à vous de faire la saisie de plusieurs champs via cette boucle qui utilise la constante déclarée en début de script.

Notre résultat finale pour un panier avec deux fruits différents ou égal nous donne,

Programme Panier_De_Fruits

Constante NBF <- 2

Type panier_de_fruits
  |  nom : Chaîne
  |  quantitee : Entier
  |  prix : Réel
FinType

Variable t_panier_fruit : panier_de_fruits [ NBF ]
Variable i : Entier

Début
  |  Pour i <- 1 à NBF Faire
  |    |  Saisir ( t_panier_fruit [ i ].nom )
  |    |  Afficher ( t_panier_fruit [ i ].nom )
  |  FinPour
Fin

On peut compléter avec la concaténation décrite ci-dessus en appliquant une date de péremption à notre panier, je déclare donc un nouveau type contenant mes champs pour y insérer ma date
et rentre dans la boucle ma saisie de date à chaque fruit.

Programme Panier_De_Fruits

Constante NBF <- 2

Type date_peremption
  |  jour : Entier
  |  moi : Entier
  |  annee : Entier
FinType

Type panier_de_fruits
  |  nom : Chaîne
  |  quantitee : Entier
  |  prix : Réel
  |  date_peremption_unitaire : date_peremption
FinType

Variable t_panier_fruit : panier_de_fruits [ NBF ]
Variable i : Entier

Début
  |  Pour i <- 1 à NBF Faire
  |    |  Saisir ( t_panier_fruit [ i ].nom , t_panier_fruit [ i ].date_peremption_unitaire.jour )
  |    |  Afficher ( t_panier_fruit [ i ].nom )
  |  FinPour
Fin

Laisser un commentaire