8PRO100 Éléments de programmation Les types composés.

Slides:



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

Premier programme en C :
La boucle for : init7.c et init71.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
Le langage Z Pr ZEGOUR DJAMEL EDDINE
Portée des variables VBA & Excel
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
C.
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
Structures et unions types énumérés Qu'est-ce qu'une structure
Les pointeurs Manipulation d'adresses et de ce qui est contenu dans ces adresses Très important, fondamental même en C mauvaise réputation : 'dur à comprendre',
FLSI602 Génie Informatique et Réseaux
FLSI602 Génie Informatique et Réseaux
8. Les tableaux P. Costamagna – ISEN N1.
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
B.Shishedjiev - Informatique II
Points importants de la semaine Les fonctions. La portée. La passage par copie. Les tableaux.
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Types de données et représentation
Points importants de la semaine Le paramétrage. La portée. Le passage par copie. Le passage par référence.
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
TRAITEMENT DE STRUCTURES
Points importants de la semaine Les enregistrements.
1 Les pointeurs et quelques rappels sur certains éléments du langage C.
IFT-2000: Structures de Données Listes chaînées Dominic Genest, 2009.
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.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
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
Structures de données IFT-2000
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.
Points importants de la semaine Les allocations programmées de mémoire. Les enregistrements.
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
Points importants de la semaine La représentation cachée. Les enregistrements.
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Plan cours La notion de pointeur et d’adresse mémoire.
Les Types de données complexes
Structures des données
Le langage C Structures de données
2.1 - Historique Chapitre 2 : Introduction au langage C++
Le langage C Rappel Pointeurs & Allocation de mémoire.
LES PILES ET FILES.
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
La notion de type revisitée en POO
Les adresses des fonctions
Un survol du language 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.
Tutorat en bio-informatique
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
Les types composés Les enregistrements.
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.
8PRO107 Éléments de programmation Les adresses et les pointeurs.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
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.
Informatique 1A Langage C 6 ème séance 1. Objectifs de la séance 6  Allocation dynamique de mémoire  Application à la création de tableaux 2.
Cours de Langage C Les structures
Transcription de la présentation:

8PRO100 Éléments de programmation Les types composés

Types composés En plus des types de base (entier, réels, charactères, etc) il est possible dans la plupart des langages de programmation de définir ses propres types. Il sagit en fait de rassembler une ou plusieurs variables, qui peuvent être de types différents, et de les regrouper sous un seul nom afin de les manipuler plus facilement.

Exemple Un nombre complexe est un nombre de la forme a + b*i où a et b sont des nombres réels et le symbole i vaut On doit d'abord définir un nouveau type dont le nom est complexe. Ce nouveau type aura l'espace mémoire nécessaire pour contenir les 2 nombre réels a et b. Après la déclaration: complexe x la mémoire associée sera: x.a: x.b: réel

Exemple en C struct complexe { double reel; double imag; }; struct complexe x; x.reel: x.imag: double

Où définir un nouveau type #include struct complexe { double reel; double imag; }; fonction(...){ struct complexe x; } Si on défini un nouveau type à lintérieur dune fonction alors il ne sera visible quà lintérieur de cette fonction. Pour quun type composé soit visible dans toutes les fonctions dun fichier, il faut le déclarer au début du fichier, à lextérieur de toute fonction. Note: La même chose sapplique à la déclaration de variables: cest ce que lon appelle les variables globales.

Assignation d'une valeur dans une structure struct complexe { double reel; double imag; }; struct complexe x; x.reel = 5; x.imag = 3; 5 3 x.reel: x.imag:

Accéder aux membres dune structure struct complexe x, y, z; x.reel = 5; x.imag = 3; y = x; z.reel = x.réel; z.imag = 8; 5 3 x.reel: x.imag: 5 y.reel: 3 y.imag: 5 z.reel: 8 z.imag:

Comparer deux structures if (x == y) printf(Deux structures égales); if (x != z) printf(Deux structures différentes); 5 3 x.reel: x.imag: 5 y.reel: 3 y.imag: 5 z.reel: 8 z.imag:

Les structures et les fonctions On peut passer des structures en paramètre. On peut utiliser les structures comme valeur de retour. Contrairement aux tableaux, les structures sont passées par copie.

Exemple struct complexe somme(struct complexe x, struct complexe y){ struct complexe a; a.reel = x.reel + y.reel; a.imag = x.imag + y.imag; return a; }

typedef Dans lexemple précédent, il est laborieux davoir à écrire autant de struct complexe. Le C fournit une fonctionnalité appelée typedef servant à créer des noms de nouveaux types de donnéees. Exemple: typedef struct complexe Complexe Complexe x, y; Le nom Complexe devient synonyme de struct complexe

Les structures contenant des structures Les membres dun type composé peuvent être eux mêmes des variables de types composé différents. En C, cela se traduit par le fait quune structure peut être membre dune autre structure.

Exemple struct point{ int x; int y; }; struct point p1={2, 1}, p2={8, 5}; y x p1 p2

Exemple struct rect{ struct point q1; struct point q2; }; struct rect r ; r.q1.x = p1.x; r.q1.y = p1.y; r.q2.x = p2.x; r.q2.y = p2.y; ou encore: r.q1=p1; r.q2=p2; y x p1 p2

Remarque Le type des membres ne peut pas être la structure elle-même. Ainsi lexemple suivant est invalide. struct objet{ int n; struct objet x; } Mais lexemple suivant est valide et même très courant struct objet{ int n; struct *objet x; }

Les tableaux de structures On peut faire des tableaux de types composés tout comme on peut faire des tableaux de type de base. Exemple: struct complexe tab[1000]; for (i=0; i<1000; i=i+1){ tab[i].reel = 0; tab[i].imag = 0; } tab[0].reeltab[1].reel tab[999].reel... tab: tab[0].imagtab[1].imag tab[999].imag...

Les structures et les pointeurs Lopérateur de prise dadresse & fonctionne avec les structures. On peut définir des pointeurs sur des types composés. struct complexe *pc, x; pc = &x; (*pc).reel = 3; (*pc).imag = 5; Remarque: Les parenthèse sont nécessaires puisque lopérateur. a une priorité supérieure à lopérateur *.

Les structures et les pointeurs Les pointeurs de structures sont si fréquemment utilisés quil existe une notation abrégée. Exemple: struct complexe *p, x; pc = &x; pc->reel = 3;/* identique à (*pc).reel=3 */ pc->imag = 5;/* identique à (*pc).imag=5 */

La taille dune structure Le nombre doctets alloués pour chaque variable dun type composé nest pas toujour la somme de la taille de ses membres. Exemple: struct exemple{ char c1, c2, c3; int n; } x; Sur sunens il y a toujours un nombre pair doctets réservés pour chaque variable (sauf si un seul octet est nécessaire). Donc, 8 octets seront alloués pour x, cest-à-dire quun octet sera perdu.

La taille dune structure Le C dispose dun opérateur permettant de déterminer le nombre doctets nécessaires pour mémoriser un objet du type de son opérande. sizeof expression(Lexpresion nest pas évalué) sizeof (nom de type) exemple: sizeof a vaut 1 sizeof (char) vaut 1 sizeof ( )/2 vaut 4 sur sunens sizeof (int) vaut 4 sur sunens sizeof (struct complexe) vaut 8 sur sunens

Exemple Supposons quune banque utilise un ordinateur pour conserver les principales informations sur ses clients. On associe à chaque client une variable dont le type est une structure qui pourrais ressembler à ce qui suit. structure client{ int folio; char prenom[15]; char nom[15]; int solde; int type_de_compte; char *imprimer; /* ce qui reste à imprimer dans le livret */ int derniere_transaction; };

Exemple Supposons quune banque utilise un ordinateur pour conserver les principales informations sur ses clients. On associe à chaque client une variable dont le type est une structure qui pourrais ressembler à ce qui suit. structure client{ int folio; char prenom[15]; char nom[15]; int solde; int type_de_compte; char *imprimer; /* ce qui reste à imprimer dans le livret */ int derniere_transaction; };