B.Shishedjiev - Informatique II

Slides:



Advertisements
Présentations similaires
GEF 243B Programmation informatique appliquée Listes chaînées I – Tableaux de structures §15.1 – 15.2.
Advertisements

Introduction au Langage C,C++
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Rappels C.
Le langage C++ Les types structurés
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
GEF 243B Programmation informatique appliquée Structures §12.3.
C.
Exercice 1 1 (père) et 1 (fils) 1 (père) et 0 (fils)
Structures et unions types énumérés Qu'est-ce qu'une structure
FLSI602 Génie Informatique et Réseaux
FLSI602 Génie Informatique et Réseaux
CYCLE 6 : FONCTIONS FONCTIONS avec paramètres en Entrée 1- Pourquoi les FONCTIONS peuvent échanger des données en E entre elles ? 2- Comment écrire des.
B.Shishedjiev - Informatique II1 Travaux dirigés 5 Les structures.
2ième Classe (Mercredi, 13 Octobre) C++ Intro CSI2572.
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
Algorithmes et programmes
Types de données et représentation
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
TRAITEMENT DE STRUCTURES
Les fichiers et les chaînes de caractères
1 Les pointeurs et quelques rappels sur certains éléments du langage C.
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT-2000
Les enregistrements (struct) suite. Struct Rappel Enregistrement : Suite de données pouvant être de types différents, accessibles via une seule variable.
8PRO100 Éléments de programmation Les types composés.
Les pointeurs en C. valeur : main () { float valeur; void* pointeur; }
Introduction au Langage C
Texture 2D en PGC++.
C++ : variables Déclaration de variables
LANGAGE C LP A2I IUT St DIE
Tableaux Introduction aux tableaux à une dimension. Déclaration, stockage, initialisation et accès en lecture ou en écriture aux composantes d’un tableau.
Structures de données IFT-2000
Procédures et fonctions
L’essentiel du langage C
Structures des données
B.Shishedjiev - Informatique II
Les pointeurs L'opérateur &.
Le langage C Rappel Pointeurs & Allocation de mémoire.
Ch. PAUL - Piles et Files à l'aide de listes chainées
LES PILES ET FILES.
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
B.Shishedjiev - Informatique II1 Travaux dirigés 4 Les tableaux.
Notions de pointeurs en C
Sous-programmes.
B.Shishedjiev - TD11 Travaux dirigés 1 Expressions et affectation Entrée-sortie.
La notion de type revisitée en POO
et quelques rappels sur certains éléments du langage C
Les adresses des fonctions
SIF-1053 Architecture des ordinateurs
ALGORITHMIQUE ET PROGRAMMATION C
Argc et argv Utilisation des paramètres de la ligne de commande.
Un survol du language C.
Labo 4 : Les structures et les entrées et sorties
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Tutorat en bio-informatique
Réaliser par: Sadok Amel Cheboui hassiba
Les types composés Les enregistrements.
Les surcharges d'opérateurs
TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES
8PRO100 Éléments de programmation Les pointeurs de caractères.
Cours LCS N°4 Présenté par Mr: LALLALI
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Introduction au langage C Structures de données
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
Cours de Langage C Les structures
Transcription de la présentation:

B.Shishedjiev - Informatique II Structures Modèles d'objets réels B.Shishedjiev - Informatique II

Qu'est ce que c'est une structure Un objet complexe dont les parts ne sont du même type Exemple Etudiant Nom Date_naiss Sex Notes Texte Date M ou F Nombres Chaque partie d'objet (champ) peut être d'un type différent et a un nom par lequel il peut être accédé. B.Shishedjiev - Informatique II

Déclaration et présentation Déclaration – on déclare le nom et les noms et les types des champs. Déclaration de l'étiquette d'une structure struct nom_de_structopt{ declare_champ1; declare_champ2; ... ; declare_champn; }; B.Shishedjiev - Informatique II

Déclaration et présentation... Exemples struct etudiant{ int numero; char nom[30]; char sex; int naiss[3]; double notes[5]; };// déclaration de la structure étudiant struct etudiant e1,e2;//e1 et e2 sont variable //de type struct etudiant struct point{ int x; int y; } p1,p2;// déclaration combinée struct point p3,p4; ;//p1,p2,p3,p4sont variable //de type struct point B.Shishedjiev - Informatique II

Déclaration et présentation... On peut omettre le nom du structure mais puis on ne peut pas déclarer nouvelle variable avec la même structure. on peut déclarer de nouveaux étudiants, mais pas de nouvelles variables qui ont la structure déclarée au dessus même que les deux structures ont les mêmes champs ils ne sont pas identiques struct { double r; double im; } c1; struct { double r; double im; } c2; B.Shishedjiev - Informatique II

Déclaration et présentation... Représentation dans la mémoire numero nom sex jour etud naiss mois annee 1 notes 2 3 4 typedef struct {int jour; int mois; int annee;} DATE; struct etudiant{ int numero; char nom[30]; char sex; DATE naiss; double notes[5];} etud; B.Shishedjiev - Informatique II

B.Shishedjiev - Informatique II Initialisation La structure est initialisée de même façon que le tableau (par des expressions constantes) . typedef struct {double x, double y} POINT; struct fiche { int numero; char nom[32], prenom[32]; } u = { 1234, "DURAND", "Pierre" }; POINT p1 ={3.45, 2.56}, p2={0.0,0.0}; B.Shishedjiev - Informatique II

B.Shishedjiev - Informatique II Initialisation Exemple typedef struct {int jour; int mois; int annee} DATE; typedef struct { int numero; char nom[30]; char sex; DATE naiss; double notes[5];} ETUDIANT; ETUDIANT e1 = {245, "Dubois", 'M',{12,2,1988}, {12,10,8,14,6}}; B.Shishedjiev - Informatique II

B.Shishedjiev - Informatique II Affectation On peut affecter la valeur d'une structure à une variable du même type. C'est équivalent à l'affectation des champs correspondants. typedef struct etudiant{ int numero; char nom[30]; char sex; DATE naiss; double notes[5];} ETUDIANT ; ETUDIANT e1 = {245, "Dubois", 'M',{12,2,1988}, {12,10,8,14,6}}, e2; ... e2 = e1; B.Shishedjiev - Informatique II

B.Shishedjiev - Informatique II Accès aux champs L'opérateur accès au champ '.' Exemples nom_de_varaible_structure.nom_du-champ e1.numero = 1234; e2.naiss.jour = 3; e2.naiss.mois = 4; e2.naiss.annee = 1983; e2.notes[0] = 14; B.Shishedjiev - Informatique II

Pointeurs vers structures Déclaration Exemples Accès aux champs des structures designées type_structure *nom ETUDIANT *p1; struct point {int x, int y} pt1,pt2, *p4; p1 = &e1; p4 = &pt2; nom_de_pointeur_vers_structure->nom_du-champ p1->numero = 1234; p1->naiss.jour = 3; p4->x = 3; B.Shishedjiev - Informatique II

Pointeurs vers structures Accès aux champs et adresses des champs Si les déclarations suivants existent Les expressions suivants sont équivalents ETUDIANT *p1,et; struct point {int x, int y} pt1,pt2, *p4; p1 = &e1; p4 = &pt2; et.numero p1->numero (&et)->numero et.naiss.annee p1->naiss.annee (&et)->naiss.annee pt2.x p4->x (&pt2)->x &et.numero &p1->numero &(&et)->numero &pt2.x &p4->x &(&pt2)->x B.Shishedjiev - Informatique II

Paramètres de fonctions La structure ne diffère pas d'autres type comme paramètre Exemple: void affichEtud(ETUDIANT e) { printf ("%6d %-15s %2d/%2d/%4d %5.2lf\n", e.numero,e.nom, e.naiss.jour, e.naiss.mois, e.naiss.annee, e.moyenne); } void affichEtud(ETUDIANT e) { DATE *d = &e.naiss; printf ("%6d %-15s %2d/%2d/%4d %5.2lf\n", e.numero,e.nom, d->jour, d->mois, d->annee, e.moyenne); } B.Shishedjiev - Informatique II

B.Shishedjiev - Informatique II Résultat de fonction Une valeur du type structure peut servir comme résultat d'une fonction. Exemple ETUDIANT lireEtud(void){ ETUDIANT e; int i; printf("Tapez le numero, le nom, et le gendre d'etudiant…"); scanf("%d , %s , %c \n",&e.numero,&e.nom,&e.sex); puts("Tapez la date de naissance…"); scanf(", %2d / %2d / %d \n", &e.naiss.jour, &e.naiss.mois, &e.naiss.annee); printf("Tapez les %d notes d'etudiant \n", MAXNOTES); for (i=0; i <MAXNOTES; i++) scanf(", %lf",(e.notes+i)); return e; } B.Shishedjiev - Informatique II

B.Shishedjiev - Informatique II Tableau de structures On peut utiliser un tableau dont les éléments sont de structures. Exemples Chaque élément est une structure ETUDIANT groupe[40]; struct point polygone[20]; groupe[0].numero = 12345; (groupe+1)->numero = groupe->numero +1; groupe[3].notes[2] = 12; polygone[10].x = 4; (polygone+10)->y = 6; B.Shishedjiev - Informatique II

B.Shishedjiev - Informatique II Exemple Trouver les moyennes des notes d'un groupe d'étudiants #include <stdio.h> #define MAXETUD 40 #define MAXNOTES 5 typedef struct {int jour; int mois; int annee;} DATE; typedef struct { int numero; char nom[30]; char sex; DATE naiss; double notes[MAXNOTES]; double moyenne;} ETUDIANT; ETUDIANT lireEtud(void); void affichEtud(ETUDIANT e); int lireGroupe(ETUDIANT g[], int maxEtud); void calcMoyennes(ETUDIANT g[], int n); B.Shishedjiev - Informatique II

B.Shishedjiev - Informatique II Exemple void main(void){ ETUDIANT groupe[MAXETUD]; int netud,i; netud = lireGroupe(groupe, MAXETUD); calcMoyennes(groupe, netud); printf("num nom date moyenne\n"); for (i=0; i<netud;i++) affichEtud(groupe[i]); } void calcMoyennes(ETUDIANT g[], int n){ int i,j; for (i=0 ; i< n; i++) { g[i].moyenne = 0; for (j=0; j<MAXNOTES; j++)g[i].moyenne +=g[i].notes[j]; g[i].moyenne /= MAXNOTES; B.Shishedjiev - Informatique II