Les Types de données complexes

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 :
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.
Programmation Orienté Objet en C++
Rappels C.
Le langage C++ Les types structurés
C++ 6ème cours Patrick Reuter maître de conférences
GEF 243B Programmation informatique appliquée Types dérivés, structures et tableaux §
Les Structures. Introduction : Imaginons que lon veuille afficher les notes dune classe délèves par ordre croissant avec les noms et prénoms de chaque.
III- Les fonctions 1- Activité 02
C.
Programmation Orientée Objet (POO)
Structures et unions types énumérés Qu'est-ce qu'une structure
8. Les tableaux P. Costamagna – ISEN N1.
Algorithme et programmation
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
Les éléments de base de l’algorithmique
II. Chaînage, SDD séquentielles
TRAITEMENT DE STRUCTURES
Principes de programmation (suite)
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.
CYCLE 1 : Saisir – Afficher – Données Déclarer des Constantes dans un programme 1- Rôle de la déclaration de constante 2- Syntaxe de la déclaration de.
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Les fichiers binaires en C++
Structures de données IFT Abder Alikacem La classe vector Édition Septembre 2009 Département dinformatique et de génie logiciel.
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
Principes de programmation (suite)
Points importants de la semaine Les allocations programmées de mémoire. Les enregistrements.
Points importants de la semaine Les enregistrements.
Points importants de la semaine La représentation cachée. Les enregistrements.
IFT 6800 Atelier en Technologies d’information
8PRO100 Éléments de programmation Les types composés.
Standard Template Library
C++ : variables Déclaration de variables
Structures de données IFT-2000
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 3 Polymorphisme I.
Types de données fondamentaux
L’essentiel du langage C
Structures des données
Stocker plusieurs valeurs de même type dans une variable
Le langage C Structures de données
CYCLE 1 : Saisir – Afficher – Données Déclarer des Variables dans un programme 1- Rôle de la déclaration de variable 2- Syntaxe de la déclaration de variable.
(Vient du grec et signifie « Peut prendre plusieurs formes »)
Le langage C Rappel Pointeurs & Allocation de mémoire.
JavaScript Nécessaire Web.
LES PILES ET FILES.
Les pointeurs Suite.
Programmation en Java Tableaux NGUYEN Thi Minh Tuyen
SIF-1053 Architecture des ordinateurs
Programmation objet La base.
Labo 4 : Les structures et les entrées et sorties
Les modules. Modules Un module est un ensemble de définitions de constantes, de variables et de fonctions réutilisables de projet en projet. Le langage.
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.
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
Réaliser par: Sadok Amel Cheboui hassiba
Les opérateurs L’amitié Les opérateurs Introduction
Les types composés Les enregistrements.
8PRO100 Éléments de programmation Les tableaux multi-dimensionnels.
ISBN Chapitre 10 L'implémentation des sous- programmes.
Cours LCS N°4 Présenté par Mr: LALLALI
Conception de Programmes - IUT de Paris - 1ère année – Cours 6 - Les opérateurs L’amitié Les opérateurs –Introduction –Surcharge par fonction.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Structures de données et algorithmes – TP1 Maria-Iuliana Dascalu
Introduction au langage C Structures de données
1. l’agenda personnel KOSMOS La vue hebdomadaire 1.En cliquant sur le mois on accède à la vue mensuelle 2.Il est possible de choisir puis de superposer.
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.
Transcription de la présentation:

Les Types de données complexes Les variables traditionnelles ne permettent de stocker qu’une donnée à la fois. Lourdeur de programmation. Besoin de types plus évolués. Les structures. Peuvent contenir des données hétérogènes Les tableaux. Permettent de stocker plusieurs données de même type Bases de la programmation en C++

Les structures Définition d’un type personnalisé à partir des types de base. Exemple: On déclare une structure « Date », qui contient: Un jour (de type entier). Un mois (de type entier). Une année (de type entier). On a alors créé le type Date. Bases de la programmation en C++

Déclaration d’un type structure On définit un nouveau type. On utilise ce type pour déclarer les variables struct NomStructure { Type1 NomChamp1; Type2 NomChamp2; …. }; Pas obligatoire en C++ struct NomStructure NomVariable ; Bases de la programmation en C++

Exemple de déclaration du type structure Client struct Client { unsigned int Age ; unsigned float Taille ; }; struct Client Jean, Philippe; Client Paul; Déclaration de 3 variables de type Client Bases de la programmation en C++

Exemple de déclaration struct Client { unsigned int Age ; unsigned float Taille ; } Jean ; struct { unsigned int Age ; unsigned float Taille ; } Jean ; ou Déclaration du type structure Client et d’une variable de type Client Déclaration d’une variable de type structure (pas de nom pour la structure) Attention on ne pourra pas réutiliser ce type de structure (le type n’a pas été déclaré) Bases de la programmation en C++

Accès à un champ d’une structure Les éléments d’une structure sont accédés par un point, suivi du nom du champ de la structure à accéder. Exemples NomStructure . NomChamp struct Client { unsigned int Age ; unsigned float Taille ; }; struct Client Jean, Philippe; Client Paul; Jean. Age = 22; Jean. Taille = 180; cin >> Philippe.Taille; cout << Jean. Age ; Philippe = Jean; Bases de la programmation en C++

Exemple de déclaration / affectation Cette structure est visible par toutes les fonctions du fichiers Exemple de déclaration / affectation struct Date { int Jour ; int Mois ; int Annees ; }; int main () Date Anniv; //déclaration simple Anniv.Jour = 22; //affectation Anniv.Mois = 04; //affectation Anniv.Années = 1978; //affectation cout<< Anniv.Mois<<endl; return 0; } struct Date { int Jour ; int Mois ; int Annees ; }; int main () //déclaration avec affectation Date Anniv={22,04,1978}; Date Demain; Demain = Anniv; cout<< Demain.mois<<endl; return 0; } L’affectation marche mais pas la comparaison ‘==‘ Bases de la programmation en C++

Exemple d’imbrication de structures struct Date { int Jour ; int Mois ; int Annees ; }; struct Personne float taille; Date date_naissance; int main () { Personne Paul; //déclaration simple //déclaration avec affectation Personne Jean={180,{6,8,1985} }; // on aurait aussi pu écrire // Personne Jean={180, 6,8,1985 }; Paul. date_naissance. Jour = 5; Paul. date_naissance. Mois = 12; Paul. date_naissance. Annees = 1984; Paul. Taille=179; Jean={182,{6,9,1983} }; } Uniquement à la déclaration Bases de la programmation en C++

Exemple de passage de structure en paramètre struct Client { int Age ; float Taille ; }; Client plus_grand (Client c1, Client c2) if (c1. Taille > c2. Taille ) return c1; else return c2; } int main () { Client Max; Client Jean = {23,180.0 }; Client Paul = {22,190.0 }; Max = plus_grand(Jean, Paul ); cout<< Max.age; // la console va inscrire 22 } Bases de la programmation en C++

Les tableaux Suite de n données du même type, stockées de manières consécutive en mémoire. Un tableau est donc une suite de cases (espace mémoire) de même taille. La taille de chacune des cases est conditionnée par le type de donnée que le tableau contient. Les éléments du tableau peuvent être: des données de type simple: int, char, float, long, double, ... (la taille d'une case du tableau est alors le nombre d'octets sur lequel la donnée est codée). des tableaux. des structures. Lorsque le tableau est composé de données de type simple, on parle de tableau monodimensionnel (ou vecteur) Lorsque celui-ci contient lui même d'autres tableaux on parle alors de tableaux multidimensionnels (aussi matrice ou table) Bases de la programmation en C++

Les tableaux unidimensionnels Déclaration d’un tableau: Exemple: un tableau de 10 entiers Entier qui détermine le nombre d’élément du tableau Pas de variable! Le type d’élément que contient le tableau (int, char, etc…) Le nom de la variable de type tableau type Nom_du_tableau [Nombre d'éléments] ; int tab [10]; int Bases de la programmation en C++

Accéder aux éléments On accède à un élément par son indice. (numéro d’ordre dans le tableau) Syntaxe: Règles: L'indice du premier élément du tableau est 0 Un indice est toujours positif L'indice du dernier élément du tableau est égal au nombre d'éléments - 1 Exemple: un tableau de 10 entiers Nom_du_tableau [indice] int tab [10]; int Indices 1 2 3 4 5 6 7 8 9 Bases de la programmation en C++

Exemple de manipulation Manipulation des éléments comme des variables normales: //Déclaration d’un tableau de 10 entiers ( [0….9] ). int Toto[10]; Int h=10; int Toto[h]; //erreur de compilation! H est une variable et pas une constante //On affecter la valeur 6 au huitième élément Toto[7] = 6; //On affecte au 10ème élément le résultat de l'addition des éléments 1 et 2 Toto[9] = Toto[0] + Toto[1]; //On affecte 5 au (i+2)ème élément int i = 3; Toto[i+2] = 5; Bases de la programmation en C++

Initialisation d’un tableau Valeur par valeur (bof…) Utilisation d’une boucle (mieux!) int Toto[10]; //déclaration //Initialisation Toto[0]=8; Toto[1]=32; //etc… int Toto[10]; //déclaration int Indice; //var locale for (Indice = 0; Indice < 10; Indice++) { Toto[Indice] = 0; } A la déclaration int Toto[10] = {1, 2, 6, 5, 2, 1, 9, 8, 1, 5}; // toutes les éléments ont une valeur int Toto[10] = {1, 2, 6, 5}; // les éléments non définit sont initialisé à 0 // au moins un élément doit être définit Bases de la programmation en C++

Restriction On ne peut pas affecter une série de valeurs en dehors de la déclaration. On ne peut pas affecter un tableau à un autre. On ne peut pas comparer deux tableaux. int t[3] = {4, 5, 8}; // OK int t[3] ; t = {1, 2, 6, 5}; // ERREUR int x[3] ,int y[3] ; // déclaration de deux tableaux d’entier … x = y; // ERREUR int x[3] ,int y[3] ; // déclaration de deux tableaux d’entier … if(x == y) // ERREUR Bases de la programmation en C++

Exemple : produit scalaire de deux vecteurs int main() { int u[10], v[10]; // déclaration de deux vecteurs de 10 éléments : entrées int Produit_scalaire = 0; //sortie int ind; // var local cout<< "saisie de u"<<endl; for (ind=0;ind<10;ind++) // saisie des 10 éléments du vecteur u cin >> u[ind]; cout<< "saisie de v"<<endl; for (ind=0;ind<10;ind++) // saisie des 10 éléments du vecteur v cin >> v[ind]; for (ind=0;ind<10;ind++) // calcul du produit scalaire Produit_scalaire = Produit_scalaire + u[ind] * v[ind] ; cout<< "Le produit scalaire de u et v est: "<< Produit_scalaire <<endl; return 0; } Bases de la programmation en C++

Les tableaux Multidimensionnels Déclaration d’un tableau: Exemple: un tableau d’entiers à 2 dimensions (3 lignes, 4 colonnes) Le type d’élément que contient le tableau (int, char, etc…) Le nom de la variable de type tableau Nombre d’élément dans chaque dimension type Nom_du_tableau [dim1][dim2]…[dimn] ; Tableau[0][0] Tableau[0][1] Tableau[0][2] Tableau[0][3] Tableau[1][0] Tableau[1][1] Tableau[1][2] Tableau[1][3] Tableau[2][0] Tableau[2][1] Tableau[2][2] Tableau[2][3] int tab [3][4]; Bases de la programmation en C++

Initialisation d’un tableau Utilisation d’une boucle Valeur par valeur int Toto[3][5]; //déclaration int i,j; //var locale for (i = 0; i < 3; i++) { for (j = 0; j < 5; j++) Toto[i][j] = 0; } int Toto[3][5]; //déclaration //Initialisation Toto[0][0]=8; Toto[1][2]=32; //etc… A la déclaration int Toto[3][5] = {1, 2, 6, 5, 2, 1, 9, 8, 1, 5,8,3,6,7,9}; // de la forme: // { [0][0] , [0][1] , [0][2] , [0][3] , [0][4] , [1][0] , [1][1] , [1][2] , [1][3] ,etc ….} Bases de la programmation en C++

Passage de tableaux en paramètre Cas monodimensionnel. Cas Multidimensionnel. int main() { int tab[20]; ….. Fonction ( tab); } void Fonction( int x[ ] ) { ….. } Ne pas préciser la taille du tableau Pas de passage par valeur ou référence Le tableau d’origine peut être modifié dans tout les cas! int main() { int tab[10][4]; ….. Fonction ( tab); } void Fonction( int x[ ][4] ) { ….. } Ne pas préciser la première taille Bases de la programmation en C++

Expression à convertir Transtypages Permet de changer le type d’une valeur. Exemple: Type désiré (type) expression Expression à convertir int i=5, j=2; float result1; float result2; Result1 = i / j; // Result1 prend la valeur 2 Result2 =(float) i / (float) j; // Result2 prend la valeur 2.5 // i et j ont été transformés en float pour cette opération Bases de la programmation en C++

Exercice4 Boite à outils pour vecteur Declarer une structure homme Faire entrer 2 vecteurs à l’utilisateur (taille = 3) Faire entrer un operateur (‘*’ ou ‘+’)(produit scalaire, addition) Rendre le produit vectoriel ou l’addition des deux vecteur Utiliser 2 fonctions Addition et produit_scalaire. float produit_scalaire(int u[ ], int v[ ]) void Addition (int u[ ], int v[ ],int Result[ ]) Declarer une structure homme Date naissance; Reel taille; int age. Faire une fonction qui retourne le plus agé de 2 hommes. L’appeler dans le main Bases de la programmation en C++