Les types composés Les enregistrements.

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
Introduction au Langage C,C++
Rappels C.
Le langage C++ Les types structurés
Le langage Z Pr ZEGOUR DJAMEL EDDINE
Portée des variables VBA & Excel
C.
Paramètres et pointeurs
Les attributions de valeur (le signe =). Dans cette présentation, nous allons tenter de représenter ce qui se passe dans la mémoire de lordinateur quand.
8. Les tableaux P. Costamagna – ISEN N1.
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
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.
Récursivité.
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
Principes de programmation (suite)
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
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 Le préprocesseur. La conversion de types. Les fonctions.
8PRO100 Éléments de programmation Les types composés.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Standard Template Library
Procédures et fonctions
Les Types de données complexes
Structures de données IFT-2000
L’essentiel du langage C
Structures des données
Le langage C Structures de données
(Vient du grec et signifie « Peut prendre plusieurs formes »)
2.1 - Historique Chapitre 2 : Introduction au langage C++
Le langage C Rappel Pointeurs & Allocation de mémoire.
9ième Classe (Mardi, 4 novembre) CSI2572. H Nous avons vu comment utiliser les directives #define #ifndef #endif Pour s’assurer de l’inclusion unique.
LES PILES ET FILES.
La notion de type revisitée en POO
Les adresses des fonctions
SIF-1053 Architecture des ordinateurs
Argc et argv Utilisation des paramètres de la ligne de commande.
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
Introduction au langage C Fonctions et Procédures
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Méthodes et outils de conception Introduction à la programmation Paramètre de retour Appel d’une fonction Portée des variables Définition Pourquoi les.
TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES
ISBN Chapitre 10 L'implémentation des sous- programmes.
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.
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
PRO-1027 Programmation Scientifique en C
Introduction à l’utilitaire
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
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
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Informatique 2A Langage C 4ème séance
Les structures en langage C
Transcription de la présentation:

Les types composés Les enregistrements

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 s’agit 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 nouveau type complexe: réel a réel b complexe x x.a:

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

Où définir un nouveau type Si on défini un nouveau type à l’intérieur d’une fonction alors il ne sera visible qu’à l’intérieur de cette fonction. Pour qu’un type composé soit visible dans toutes les fonctions d’un fichier, il faut le déclarer au début du fichier, à l’extérieur de toute fonction. Note: La même chose s’applique à la déclaration de variables: c’est ce que l’on appelle les variables globales. #include <stdio.h> struct complexe { double reel; double imag; };  fonction(...){ struct complexe x; }

Assignation de structures struct complexe { double reel; double imag; }; struct complexe x; x.reel = 5; x.imag = 3; 5 x.reel: 3 x.imag:

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

Comparer deux structures 5 x.reel: if (x == y) printf(“Deux structures égales”); if (x != z) printf(“Deux structures differentes”); 3 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 l’exemple précédent, il est laborieux d’avoir à é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 d’un type composé peuvent être eux mêmes des variables de types composé différents. En C, cela se traduit par le fait qu’une structure peut être membre d’une autre structure.

Exemple struct point{ int x; int y; }; struct point p1={2, 1}, p2={8, 5}; y 5 4 3 2 1 p2   p1 x 0 1 2 3 4 5 6 7 8 9

Exemple struct rect{ struct point p1; struct point p2; }; struct rect r ; r.p1.x = p1.x; r.p1.y = p1.y; r.p2.x = p2.x; r.p2.y = p2.y; y 5 4 3 2 1 p2   p1 x 0 1 2 3 4 5 6 7 8 9

Remarque Le type des membres ne peut pas être la structure elle-même. Ainsi l’exemple suivant est invalide. struct objet{ int n; struct objet x; } Mais l’exemple suivant est valide et même très courant 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].reel tab[1].reel tab[999].reel tab: tab[0].imag tab[1].imag ... tab[999].imag

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

La taille d’une structure Le C dispose d’un opérateur permettant de déterminer le nombre d’octets nécessaires pour mémoriser un objet du type de son opérande. sizeof expression (L’expresion n’est pas évalué) sizeof (nom de type) exemple: sizeof ‘a’ vaut 1 sizeof (char) vaut 1 sizeof (121+434)/2 vaut 4 sur sunchb sizeof (int) vaut 4 sur sunchb sizeof (struct complexe) vaut 8 sur sunchb

Exemple Supposons qu’une 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; };