0% ont trouvé ce document utile (0 vote)
13 vues21 pages

Structure de Données

Base en algorithme

Transféré par

sowk427
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
13 vues21 pages

Structure de Données

Base en algorithme

Transféré par

sowk427
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 21

Structure de données

Les enregistrements
STRUCTURE DE DONNÉES

❖Définition d’une structure de donnée hétérogènes


❖Définition d’un enregistrements
❖Déclaration d’un enregistrement
❖Manipulation d’un enregistrement
❖L'imbrication d'enregistrements
❖Déclaration d’un enregistrement en C 2

Zakaria Sawadogo
STRUCTURE DE DONNEES
HETEROGENES
• Si on souhaite stocker des données qui n’ont pas forcément le même type au sein d’une
même structure, par exemple : les informations liées à un produit quelconque, La première
question qui se pose est : quelle est la structure de donnée nécessaire ?
• Il est clair que dans un tableau, tous les éléments le constituant ont obligatoirement le
même type, Les tableaux ne sont pas une solution adéquate.
• La solution est de créer une nouvelle structure de type ‘ enregistrement’ qui comporte à la
fois les données numériques (quantité, prix unitaire, prix total) et les données
(alphanumériques (Référence, désignation),
• Ce nouveau type ou cette une nouvelle structure permet de représenter des données
hétérogènes (c'est-à-dire de différents types) par le groupage de plusieurs éléments qui
peuvent être simples fondée sur d’autres types existants ou complexes.

Zakariaa Sawadogo
Qu’est ce que un enregistrement ?
• Un enregistrement appelé aussi un article ou record en anglais est composé
d’un nombre fixe de champs défini par l’utilisateur qui peuvent être de types
différents. La liste des champs est composée de définitions identiques à celle
de variables. Par exemple l’enregistrement « date » est composé de trois
champs « jour », « mois » et année.

Zakariaa Sawadogo
Qu’est ce que un enregistrement ?
• Un enregistrement est un type de données défini par l’utilisateur et qui permet de
grouper un nombre fini d’éléments (ou champs) de types éventuellement différents
(alphabétique, numérique, logique,…) sous un nom commun.
• A la différence des tableaux, qui ne permettent de grouper que des éléments du
même type, les enregistrements permettent de combiner différents types de
données.
• Les éléments qui composent un enregistrement sont appelés champs.
• Avant de déclarer une variable enregistrement, il faut avoir au préalable définit son
type, c’est à dire le nom et le type des champs qui le compose.
• Le type d’un enregistrement est appelé type structuré.
5

Zakariaa Sawadogo
Déclaration d’un enregistrement

Nom_Type = Enregistrement notation inspirée du C


Champ1 : Type1
Type
Champ2 : Type2 Structure nom_type
… Champ1 : Type1
ChampN : TypeN Champ2 : Type1

Fin Nom_Type ChampN : TypeN
FinStruc

Zakariaa Sawadogo
Déclaration d’un enregistrement
• Attention
• Les types enregistrements font partie des types structurés. Concernant les champs, il
faut savoir que ceux-ci peuvent être de n’importe quel type (sauf un type fichier).
• Mais :
• Il n’existe pas de constante d’un type enregistrement.
• Il n’existe pas d’opération (autre que l’affectation et le passage comme paramètre)
sur les enregistrements.
• Les seules expressions d’un type enregistrement sont les variables de ce type.
• Il n’y a pas de fonction (même prédéfinie) à résultat d’un type enregistrement.

Zakariaa Sawadogo
Déclaration d’un enregistrement

• Exemple
• Énoncé
• Déclarer une variable enregistrement représentant un
nombre complexe.
• Solution proposée
• Complexe = Enregistrement
Parti_reel : Réel
Parti_im : Réel
Fin Complexe 8

Zakariaa Sawadogo
Manipulation d’un enregistrement

• Accès au champ d’un enregistrement


• Alors que les éléments d’un tableau sont accessibles au travers
de leur indice, les champs d’un enregistrement sont accessibles
à travers leur nom, grâce à l’opérateur ‘.’
• Un tel champ est défini par le nom de l’enregistrement ainsi
que par son nom propre.

9
Manipulation d’un enregistrement

• Complexe.Parti_reel: représente le champ Parti_reel de l’enregistrement


Complexe.
• Le nom d’un champ est TOUJOURS précédé du nom de l’enregistrement
auquel il appartient.
• On ne peut pas trouver un nom de champ tout seul, sans indication de
l’enregistrement.
• Les champs d’un enregistrement, tout comme les éléments d’un tableau,
sont des variables à qui on peut faire subir les mêmes opérations
(affectation, saisie, affichage,…).
10

Zakariaa Sawadogo
Manipulation d’un enregistrement
• 1. Déclaration d’une variable enregistrement
Fiche = Enregistrement
Nom, prénom : Chaîne
sexe : Caractère
date_nais : chaîne
note: Réel
Fin Fiche

11

Zakariaa Sawadogo
Manipulation d’un enregistrement
2. Affectation des valeurs à cette variable :
E.nom<-- ‘’Riadh’’
E. prénom<-- ‘’Riadh’’
E. sexe<-- ‘’F’’
E. date_nais<-- ‘’27 /11/1983’’
E. note<--13.25

12

Zakariaa Sawadogo
Manipulation d’un enregistrement
• Exercice d’application
Ecrire un algorithme qui saisie des données concernant les
apprenants appr1 et appr2, puis affichage de la différence
d’âge entre ces deux apprenants.

13

Zakariaa Sawadogo
Manipulation d’un enregistrement
apprenants= Enregistrement
Nom, prénom : Chaîne
sexe : Caractère
age : Réel
note: Réel
Fin apprenants
Var
appr1, appr2: apprenants
Début
Affiche( “Entrez le nom puis l’age de l’apprenant 1”)
Saisir( appr1.nom, appr2.age )// il est impossible d’écrire Saisir pers1
Afficher( “Entrez le nom puis l’âge de l’apprenant 2”)
Saisir (appr2.nom, appr.age)
Afficher( “La différence d’âge entre “, appr1.nom, ” et “, appr2.nom, ” est de ”)
Si appr1.age > appr2.age
Alors Afficher( appr1.age – appr2.age, ” ans ”)
Sinon
Afficher( appr2.age – appr1.age, ” ans ”)
14
FinSi
Fin Zakariaa Sawadogo
L'imbrication d'enregistrements

• Supposons que dans le type personne, nous ne voulions plus l'âge


de la personne, mais sa date de naissance. Une date est composée
de trois variables (jour, mois, année) indissociables. Une date
correspond donc à une entité du monde réel qu'on doit
représenter par un type enregistrement à 3 champs. Si on déclare
le type date au préalable, on peut l'utiliser dans la déclaration du
type personne pour le type de la date de naissance.
15

Zakariaa Sawadogo
L'imbrication d'enregistrements
Date = Enregistrement
Jour : entier
Mois : entier
Année : entier
Fin Date
Personne = Enregistrement
nom : chaine de caractère
prenom : chaine de caractère
date_nais : Date
Fin Personne
Pour accéder à l'année de naissance d'une personne, il faut utiliser deux fois l'opérateur '.'
pers1.date_nais.Année Il faut lire une telle variable de droite à gauche : l'année de la date de
naissance de la personne 1.

16

Zakariaa Sawadogo
Déclaration d’un enregistrement en C
• Typedef struct id-structure { Typedef produit { struct etudiant
type1 nom_id1; char ref[5] ; {
type1 nom_id2; char int note
Designation[2 char nom[100];
... ; char
5]; prenom[100];
type1 nom_idn;
int quantite };
}id-structure ; float prix_u ;
} Produit ;
17

Zakariaa Sawadogo
Exercice

• Écrire un algorithmes qui permet de


saisir les étudiants de la classe de DST1B
Info et leur note en structure de donnée.
• Traduisez cet algorithmes en C
18

Zakariaa Sawadogo
Exercice

A vous de jouer

19

Zakariaa Sawadogo
Exercice
#include <stdio.h>
#include <stdlib.h>
typedef struct etudiant
{
int note;
char nom[100];
char prenom[100];
}Etudiant;

20

Zakariaa Sawadogo
int main()
{
int n ;
Etudiant etudiant[100];
int i;
printf("entre le nombre d'edudiant: ");
scanf("%d",&n);
for(i = 0; i < n; i++)
{
printf("Donnez le nom de l’étudiant %d :“,i+1);
scanf("%s", etudiant[i].nom); // Ici pas de & sinon il y aura une erreur de segmentation

printf("Donnez le prenom de l’étudiant %d :“,i+1);


scanf("%s", etudiant[i].prenom); // Même chose

printf(“saisie la note de l'eleve n° %d=", i+1);


scanf("%d", &etudiant[i].note);
}
for(i=0;i<n;i++)
{
printf("\t nom %s:",etudiant[i].nom);

printf("\t prenom %s:",etudiant[i].prenom);

printf("\t note: %d ",etudiant[i].note);


printf("\n");
}
21

}
Zakariaa Sawadogo

Vous aimerez peut-être aussi