GEF 243B Programmation informatique appliquée Structures §12.3.

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

GEF 243B Programmation informatique appliquée Listes chaînées I – Tableaux de structures §15.1 – 15.2.
GEF 243B Programmation informatique appliquée
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Structure de base des programmes en C.
GEF 243B Programmation informatique appliquée
Premier programme en 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.
Portée des variables VBA & Excel
GEF 243B Programmation informatique appliquée Boucles §
GEF 243B Programmation Informatique Appliquée
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée Expressions et opérateurs §
GEF 243B Programmation informatique appliquée
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Modélisation II.
GEF 243B Programmation informatique appliquée Tableaux et pointeurs §10.1.
GEF 243B Programmation informatique appliquée Listes chaînées II §15.1 – 15.2.
GEF 243B Programmation informatique appliquée Pointeurs et adresses §9.1.
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel et Vérification et validation.
GEF 243B Programmation informatique appliquée Décisions de design avec structures de données §15.1 – 15.2.
GEF 243B Programmation informatique appliquée Flot de contrôle et énoncés de sélection §
GEF 243B Programmation informatique appliquée Expressions et opérateurs.
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Types, variables et constantes.
GEF 243B Programmation informatique appliquée Types dérivés, structures et tableaux §
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Modules et masquage dinformation.
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Tableaux et pointeurs §10.1.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
C.
Structures et unions types énumérés Qu'est-ce qu'une structure
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
FLSI602 Génie Informatique et Réseaux
FLSI602 Génie Informatique et Réseaux
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
B.Shishedjiev - Informatique II
ALGORITHMES RECURSIFS
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Récursivité.
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
fonctionnement de la classe
TRAITEMENT DE STRUCTURES
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.
L’utilisation des bases de données
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.
IFT-2000: Structures de données
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
Points importants de la semaine Les allocations programmées de mémoire. Les enregistrements.
8PRO100 Éléments de programmation Les types composés.
COURS DE PROGRAMMATION ORIENTEE OBJET :
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Structures des données
Le langage C Structures de données
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
et quelques rappels sur certains éléments du langage C
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.
Structures de données élémentaires dans le contexte du TP #1
Les types composés Les enregistrements.
TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
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:

GEF 243B Programmation informatique appliquée Structures §12.3

21-Jan-14 2 JGA Beaulieu Revue Quelle est la syntaxe pour la définition dun type? Le type énuméré est bâti sur quel autre type? Quelle est la valeur de MER ? enum JOURS {DIM, LUN, MAR, MER, JEU, VEN, SAM}; Comment est-ce que je changerais cette énumération pour en faire un type qui sappèle JOURS?

21-Jan-14 3 JGA Beaulieu Synopsis Structures – Définition et déclaration Étiquetée Type définit Structures – initialisation Structures – accès au champs Structures et pointeurs Mémoire dynamique et structures

21-Jan-14 4 JGA Beaulieu Structures De nos jours les solutions informatiques demandent que nous soyons capables de définir des structures de données complexes Comme nous lavons appris dans les cours précédents, nous pourrions écrire des programmes complexes en utilisant seulement les types standards, mais les programmes seraient gigantesques et pas soutenables Une structure est une collection déléments apparentés possiblement de différents types portant un seul nom Chaque élément dans une structure est appelé un champ

21-Jan-14 5 JGA Beaulieu Structures Si je veux décrire un étudiant (mon abstraction dun étudiant) je pourrais ramasser linformation suivante:: Prénom Surnom Numéro de collège Moyenne Nous voyons maintenant comment créer une structure et comment déclarer une variable pour entreposer cette information Il y a trois façons de déclarer une structure en C variable structure (très limité donc pas utilisé souvent) structure étiquetée structure de type définit

21-Jan-14 6 JGA Beaulieu Structures - Étiquetée Exemple: struct ETUDIANT { char prenom[15]; char surnom[25]; int numDeCollege; float moyenne; };

21-Jan-14 7 JGA Beaulieu Structures Pour déclarer une variable pour cette structure, je fais principalement ce que jai fais pour les types énumérés: Le nom réservé struct est répété de la même façon que enum létait: struct ETUDIANT unEtudiantCMR;

21-Jan-14 8 JGA Beaulieu Définition de type structure Et similairement aux types énumérés, je peux aussi typedef toutes structures pour ne pas avoir à taper le mot clé struct chaque fois: typedef struct { char prenom[15]; char surnom[25]; int numDeCollege; float moyenne; } ETUDIANT; //nom du type ETUDIANT unEtudiantCMR;//déclaration Cest plus puissant et cest la méthode préférée

21-Jan-14 9 JGA Beaulieu Structure - initialisation Les structures sont initialisées de façon semblable aux tableaux. Si nous prenons le type ( typedef) ETUDIANT et la variable unEtudiantCMR de la diapo précédente: ETUDIANT unETUDIANTCMR = {"Ti-Joe", "Branch",45239,78.3}; Vous devez revenir pour rencontrer cet étudiant

21-Jan JGA Beaulieu Exemple Définissez une structure de type définit ( typedef ) qui inclut: le manufacturier, nom du modèle, type de transmission, nombre de portes (2,3,4 ou 5) couleur, année, grosseur du moteur (# de cylindres) Vous pouvez utiliser les typedef enum du dernier cours

21-Jan JGA Beaulieu Exemple En utilisant la structure de type définit que vous avez fait TYPE_VEHICLE déclarez une variable avec: ManufacturierChrysler ModèleNewYorker Année1978 PORTES4 Cylindres8 COULEURROUGE TRANSMISSIONAUTOMATIQUE

21-Jan JGA Beaulieu Exemple typedef enum {MANUELLE, AUTOMATIQUE} TRANSMISSION; typedef enum {ROUGE, BLANC, JAUNE, VERT, BEIGE, GRIS, NOIR} COULEUR;

21-Jan JGA Beaulieu Exemple typedef struct { char manufacturier[25]; char modele[25]; int annee; int nombrePortes; TRANSMISSION typeTrans; COULEUR couleurAuto; int nombreCylindres; } AUTO;

21-Jan JGA Beaulieu Exemple AUTO monPremierChar = { "CHRYSLER", "NEWYORKER", 1978, 4, AUTOMATIQUE, ROUGE, 8 } AUTO;

21-Jan JGA Beaulieu Structures et champs Les structures sont construites avec des champs. Chaque place que vous pouvez vous servir dune variable, vous pouvez vous servir dun champ de structure Chaque champ peut être accédé individuellement avec lopérateur de membre de structure (.): strcpy(unEtudiantCMR.prenom, "Bob"); unEtudiantCMR.numeroDeCollege = 98876; Vous pourriez rencontrer cet étudiant un jour …

21-Jan JGA Beaulieu Structures et champs Les structures sont des entités qui peuvent être traités en entièreté, mais SEULEMENT pendant une opération daffectation: ETUDIANT fEtudiant = {"Collete", "Stérole", 23498, 33.2}; //pauvre Collette! unEtudiantCMR = fEtudiant; Vous ne pouvez pas comparer deux structures: if (unEtudiantCMR == fEtudiant) printf("Totalement une erreur");

21-Jan JGA Beaulieu Structures et champs Pour que vous puissiez comparer deux structures du même type, vous devriez écrire une fonction qui compare chaque champ en ordre : … //fonction retourne 1 si tout les champs sont égales int CompareEtudiants(ETUDIANT et1, ETUDIANT et2) { return (!strcmp (et1.prenom,et2.prenom) && !strcmp (et1.surnom,et2.surnom) && et1.numeroDeCollege == et2.numeroDeCollege && (fabs(et1.moyenne - et2.moyenne) < )); }

21-Jan JGA Beaulieu Pointer aux structures? Point!

21-Jan JGA Beaulieu Pointer aux structures Comme nimporte quel type en C, les pointeurs peuvent être utilisés pour pointer aux structures. Le pointeur pointe au premier octet de la structure. Vous pouvez aussi utiliser les pointeurs pour avoir accès aux champs de la structure: ETUDIANT* pEtudiant = &unEtudiantCMR; unEtudiantCMR.numeroDeCollege = 12345; (*pEtudiant).numeroDeCollege = 12345; Résulte à la même chose; mais nous avons besoin des parenthèses autour de la déréférence à cause de la précédence des opérateurs

21-Jan JGA Beaulieu Pointer aux structures Par chance, C nous donne un autre opérateur qui nous permet de déréférencer le pointeur et davoir accès à un des champ en même temps; lopérateur de sélection de structure: pEtudiant->numeroDeCollege = 54321;

21-Jan JGA Beaulieu Allocation dynamique de la mémoire Vous pouvez allouer de la mémoire pour nimporte quel type incluant des structures de type définit: typedef struct { char prenom[15]; char surnom[25]; } NOM; NOM* pNom = NULL; pNom = (NOM*)malloc (sizeof(NOM));

21-Jan JGA Beaulieu Quiz Time Quest-ce qui est imprimé avec ce code? int* pInt; ETUDIANT unEtudiant ={"Collete", "Stérole", 23498, 33.2}; ETUDIANT* pEtudiant = &unEtudiant; pInt = &unEtudiant.numDeCollege; printf("%s numéro détudiant est %d", (*pEtudiant).prenom, *pInt); printf("%s numéro détudiant est %d", pEtudiant->prenom, unEtudiant.numDeCollege);

21-Jan JGA Beaulieu Quiz Time Si vous déclarez une variable qui est une définition de type structure quel opérateur est-ce que vous utilisez pour accéder les champs? Si vous avez un pointeur à la structure, quel opérateur utilisez vous? Pouvez vous affecter une structure à une autre au complet? Comment est-ce que vous comparez les structures?