6. Les types utilisateurs et les structures de données

Slides:



Advertisements
Présentations similaires
Rappels C.
Advertisements

Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
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.
C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
1/1/ Synthèse TD 3 Classe et adresse IP Bertrand Chesneau Morgan Nouet.
Tableaux et Pointeurs Chaînes de Caractères Programmation Impérative II.
CINI – Li115 1 Semaine 4 Révisions ● Questions de cours ● Types des expressions ● Déclaration de variables ● Instruction conditionnelle et boucles ● Structure.
CINI – Li115 1 Semaine 5 Les tableaux ● Qu'est-ce qu'un tableau ? ● Déclarer et initialiser un tableau ● Fixer la taille d'un tableau ● Opérations classiques.
CINI – Li115 1 Semaine 10 Les pointeurs ● Notion d'adresse ● Déclaration et utilisation de pointeurs ● "Types pointeur" et initialisation des pointeurs.
1 Programmation en C++ Fonctions ● Déclaration et définition de fonctions ● Arguments ● Surcharge ● Arguments optionnels ● Fonctions constantes ● Fonctions.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
CINI – Li115 1 Semaine 11 Les pointeurs (suite) ● Tableaux et pointeurs ● Questions sur les pointeurs.
lundi mardi mercredi jeudi vendredi samedi dimanche.
Tableaux en C Mardi 2/05.
Semaine 8 Retour sur les tableaux : fonctions et récursivité
Les titres dans le mémoire
Ajouter le code dans une page html
Suites ordonnées ou mettre de l’ordre
Module de gestion des tournées de livraison
Les tableaux différencier les variables simples des variables indicées (ordonnées et numérotées) un identificateur unique désigne un ensemble, une collection.
Les Instructions Itératives (Les Boucles)
Introduction au Langage Pascal
LES TABLEAUX EN JAVA.
Pas de variable globale
Les notions de classe et d'objet
Algorithmiques Abdelbasset KABOU
Eléments d’Informatique Cours11 – Allocation dynamique, listes chaînées Catherine Recanati.
Pointeurs et langage C.
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Principes de programmation (suite)
Algorithmique Langage C
11ième Classe (Mardi, 18 novembre) CSI2572
Langages de programmation TP7
Semaine 11 Les pointeurs (suite)
Les fonctions.
Algorithmiques Abdelbasset KABOU
Matrices, déclaration en CSharp
Programmation en C++ Fonctions
Session 1 31 mai 2017 Plateforme ICONICS Justine Guégan
SIF-1053 Architecture de ordinateurs
Tableaux à plusieurs dimensions en langage C
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Algorithmique & Langage C
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
Constantes énumérées.
Programmation en C++ Fonctions
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Cours N°9: Algorithmiques Les Tableaux 1
Les tableaux.
Programmation en C++ C++ de base
Cours N°10: Algorithmiques Tableaux - Matrices
Constantes énumérées.
Les classes et les objets
Programmation Android Les listes
5. Les modules Découpage d’une application en modules
Les structures de base Listes chainées. Listes Les listes(similaire aux tableaux) sont des structures informatiques qui permettent de garder en mémoire.
Support de formation Administrateur Temps & activités
Définition : 2 Les structures de contrôle conditionnelles permettent à un programme de modifier son traitement en fonction d’une condition.
Information, Calcul, Communication
PROGRAMMATION ET ENSEIGNEMENT
Algorithmie - Programmation 2
Principes de programmation (suite)
Piles et files.
Tableaux Cours 06.
Listes Chaînées.
Python Nicolas THIBAULT
Type Tableau Partie 1 : Vecteurs
Transcription de la présentation:

6. Les types utilisateurs et les structures de données Les tableaux automatiques Alias de types Structures Énumérations Joan S. Morales - Introduction à l'algo. et la programmation

Les tableaux automatiques Introduction Déclaration Accès et débordements Initialisation et notation Exemples Tri par sélection Joan S. Morales - Introduction à l'algo. et la programmation

Introduction Écrire l’algorithme suivant: Solution: « Lire dix nombres, pour ensuite les afficher dans l’ordre inverse de la lecture. » Solution: cin >> Nombre1; cin >> Nombre2; cin >> Nombre3; … cout << Nombre3; cout << Nombre2; cout << Nombre1; .. Pas très beau!  Et pour mille nombres?? Joan S. Morales - Introduction à l'algo. et la programmation

Introduction (suite) Avec un tableau! Comment mémoriser un grand nombre de valeurs de même type, sans utiliser un nombre correspondant de variables et tout en laissant accessible n’importe laquelle de ces valeurs?  Avec un tableau! Joan S. Morales - Introduction à l'algo. et la programmation

Déclaration d’un tableau en C++ En C++, un tableau de N éléments regroupe sous un seul nom N objets de même type, consécutifs en mémoire. On accède aux éléments d’un tableau par leur indice, qui varient de 0 à N-1 (ce qui fait bien N éléments au total). N doit être connu à la compilation (donc pas une variable) et doit avoir une valeur entière strictement positive. Syntaxe: Type Tableau[N]; Exemple: int DesEntiers[5] = { 8, 7, 3, -20, 7 }; Joan S. Morales - Introduction à l'algo. et la programmation

Accès aux éléments Chaque élément d’un tableau est numéroté à l’aide d’un indice Le premier élément est à l’indice 0 Le dernier élément est à l’indice N-1 On utilise l’opérateur [] pour lire ou écrire un élément du tableau, comme les strings! Joan S. Morales - Introduction à l'algo. et la programmation

Accès aux éléments (exemple) const int N = 10; float MonTableau[N]; MonTableau[2] = 4.75f; cout << MonTableau[2] ; MonTableau[7] = MonTableau[2] * 2; cout << MonTableau[7]; Joan S. Morales - Introduction à l'algo. et la programmation

Les débordements Accès à un élément hors du tableau Exemple subtil Indice < 0 ou Indice >= N Exemple subtil const int N = 10 ; float Tableau[N]; int i = 1;   while (i <= N) { Tableau[i] = 23.0f; i++; } Joan S. Morales - Introduction à l'algo. et la programmation

Initialisation à la déclaration const int N = 5; int UnTableau[N] = {45, 85, 12, 38, 17}; On peut initialiser un tableau avec des valeurs de type adéquat à la déclaration en entourant ces valeurs d’accolades (suivies d’un ;)  Il est possible d’initialiser moins d’éléments que le tableau n’en contient vraiment, le reste des éléments seront initialisés à zéro (0) int Sommes[N] = {0}; Joan S. Morales - Introduction à l'algo. et la programmation

Passer un tableau en paramètre Un tableau passé en paramètre est toujours un passage par référence: pas besoin de mettre le & Un tableau ne contient pas d’informations sur son nombre d’éléments, il faut donc toujours passer en paramètres le nombre d’éléments Joan S. Morales - Introduction à l'algo. et la programmation

Exemple int main() { const int N=10; int Tableau[N]; InitTableau(Tableau,N); } void InitTableau(int Tab[], int Nb) for(int i=0;i<Nb;++i) Tab[i] = 3; Pas de & Joan S. Morales - Introduction à l'algo. et la programmation

À éviter… La bonne technique: void Afficher(int Tab[Taille]){ … } Ne rien mettre entre les [] À éviter… void Afficher(int Tab[Taille]){ … } const int Taille = 5; void Afficher(int Tab[]) { for(int i=0;i<Taille;i++) { … } } La bonne technique: void Afficher(int Tab[],int Taille) Ne fonctionne qu'avec un tableau de 5 éléments!! Joan S. Morales - Introduction à l'algo. et la programmation

Afficher un tableau void AfficherTableau(int T[], int Nb) { for (int i=0; i<Nb; i++) cout << T[i] << " "; } cout << endl; Joan S. Morales - Introduction à l'algo. et la programmation

Calculer la somme d’un tableau int CalculerSomme(int T[], int Nb) { int Somme = 0; for (int i=0; i<Nb; i++) Somme += T[i]; } return Somme; Joan S. Morales - Introduction à l'algo. et la programmation

Inverser un tableau void InverserTableau(int T[], int Nb) { int Temp; for (int i=0; i<Nb/2; i++) Temp = T[i]; T[i] = T[Nb-i-1]; T[Nb-i-1] = Temp; } Joan S. Morales - Introduction à l'algo. et la programmation

Trouver le plus petit élément int TrouverPlusPetit(int T[], int Nb) { int PlusPetit = T[0]; for (int i=1; i<Nb; i++) if(T[i]<PlusPetit) PlusPetit = T[i]; } return PlusPetit; Joan S. Morales - Introduction à l'algo. et la programmation

Trouver la position du plus petit élément int TrouverPlusPetit(int T[], int Nb) { int Position = 0; for (int i=1; i<Nb; i++) if(T[i]<T[Position]) Position = i; } return Position; Joan S. Morales - Introduction à l'algo. et la programmation

Tri par sélection Sur Wikipedia On aura besoin des variables i, j et PlusPetit. Pour chaque position i du tableau (sauf la dernière − rendu là, le tableau sera déjà trié): On considère au départ l’élément à la position i comme étant le plus petit. On retient la position du plus petit dans la variable PlusPetit. On parcourt tout le reste du tableau (les positions qui viennent après i dans le tableau, jusqu’à la fin). Pour chacune de ces positions j: Si le nombre à la position j est plus petit que le nombre à la position i, on considère que c’est lui le plus petit. On retient la position du nouveau plus petit dans la variable PlusPetit. On échange le nombre à la position PlusPetit avec celui à la position i. Si on veut être plus efficace : on vérifie avant que PlusPetit et i ne contiennent pas la même chose! Sur Wikipedia Joan S. Morales - Introduction à l'algo. et la programmation

Le tableaux à 2 dimensions (ou la matrice) On déclare une matrice de NbLignes et de NbColonnes de la façon suivante: Type Tableau[NbLignes][NbColonnes]; Exemple: char Matrice[2][3] = { {'a','b','c'} , {'d','e','g'} }; 3 colonnes de 0 à 2 1 2 a b c d e g 2 lignes de 0 à 1 Joan S. Morales - Introduction à l'algo. et la programmation

Les tableaux à 2 dimensions (utilisation) On accède à une case de la matrice avec le numéro de la ligne de 0 à NbLignes-1, puis le numéro de la colonne de 0 à NbColonnes-1: Tableau[Ligne][Colonne] Exemples: cout << Matrice[0][0]; // affiche a cout << Matrice[0][1]; // affiche b cout << Matrice[1][0]; // affiche d Matrice[1][2] = 'f'; // Remplace le // g par un f Joan S. Morales - Introduction à l'algo. et la programmation

Les tableaux à 2 dimensions et le nombre de colonnes error C2087: 'Tab2D' : indice manquant Le nombre de colonnes d'un tableau à 2 dimensions doit toujours être spécifié à la déclaration: const int NbColonnes = 3; int Matrice[][NbColonnes] = { {1,2,3}, {4,5,6}}; et au passage par paramètre: void Afficher(int Tab2D[][NbColonnes]); Joan S. Morales - Introduction à l'algo. et la programmation

Les tableaux à 2 dimensions Parcourir le tableau Pour parcourir un tableau à une dimension, il nous fallait une boucle. Pour parcourir un tableau à 2 dimensions, il nous faudra 2 boucles! for (int i=0; i<NbLignes; i++) { for (int j=0; j<NbColonnes; j++) Matrice[i][j] = i*j; } Joan S. Morales - Introduction à l'algo. et la programmation

Les types utilisateurs Types de données définis par le programmeur Il y a plusieurs sortes de types utilisateurs: Alias de types Énumérations Structures Classes Etc. Joan S. Morales - Introduction à l'algo. et la programmation

Les alias de types Donner à un type un nouveau nom Masquer, aux programmeurs qui se servent d’une bibliothèque, les types qui y sont réellement utilisés Donne la possibilité au concepteur de la bibliothèque de modifier les types sans que cela n’entraîne de modifications aux programmes Simplification syntaxique Comme une constante pour les types!! Joan S. Morales - Introduction à l'algo. et la programmation

Alias de types (exemple 1) Joan S. Morales - Introduction à l'algo. et la programmation

Alias de types (exemple 2) sdlclg.h sdlclg.cpp main.cpp Joan S. Morales - Introduction à l'algo. et la programmation

Les énumérations Déclarer une liste, une série de constantes dont les valeurs nous importent peu Améliore la lisibilité du programme et facilite son entretien Déclaration: enum NomDuType { Element1, Element2, Element3 }; Par défaut, le premier élément a la valeur 0, le deuxième 1, etc. On peux modifier les valeurs attribuées Joan S. Morales - Introduction à l'algo. et la programmation

Exemples Joan S. Morales - Introduction à l'algo. et la programmation

Utilisation enum JourSemaine { Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche }; int main() { JourSemaine Aujourdhui; Aujourdhui = Lundi; Commentaire(Aujourdhui); } void Commentaire(JourSemaine Jour) if(jour==Samedi || jour==Dimanche) { cout << "C'est la fin de semaine!!"; } else { cout << "C'est la semaine."; } Joan S. Morales - Introduction à l'algo. et la programmation

Exemple (sdlclg) #include "sdlclg.h« Joan S. Morales - Introduction à l'algo. et la programmation

Exemple (sdlclg) #include "sdlclg.h" int main() { // ... Evenement e = AttendreEvenement(); if(e==EVHaut) { PosYBonhomme--; } if(e==EVDroite) { PosXBonhomme++; } } Joan S. Morales - Introduction à l'algo. et la programmation

Les structures Créer un nouveau type de données qui regroupe plusieurs variables et ces variables peuvent être de types différents (contrairement aux tableaux). On ne peut pas utiliser une structure sans déclarer une variable. On accède aux éléments d’une structure avec l’opérateur point (.). Joan S. Morales - Introduction à l'algo. et la programmation

Exemple Déclaration du nouveau type Personne (cette déclaration irait très bien dans un .h) struct Personne { string Nom; int Age; }; int main() Personne Moi; Moi.Nom = "Joan"; Moi.Age = 37; cout << Moi.Nom; cout << Moi.Age; } N’oubliez pas le ; ici Déclaration de la variable Moi qui est de type Personne Accès à l’élément Nom de la variable Moi Personne.Nom Joan S. Morales - Introduction à l'algo. et la programmation

Passer une structure en paramètre Une variable de type structure est une variable comme une autre et peut donc être passée en paramètre par valeur ou par référence: int main() void Lire(Personne& Qqun) { Personne Moi; cin >> Qqun.Nom; Lire(Moi); cin >> Qqun.Age; Afficher(Moi); } void Afficher(Personne Qqun) cout << Qqun.Nom; cout << Qqun.Age; Joan S. Morales - Introduction à l'algo. et la programmation

Une structure de structures struct Point { int x; int y; }; struct Droite Point Debut; Point Fin; int main() { Droite a; a.Debut.x = 10; a.Debut.y = 20; a.Fin.x = 30; a.Fin.y = 40; } Joan S. Morales - Introduction à l'algo. et la programmation

Un tableau de structures struct Personne { string Nom; int Age; }; int main() Personne Groupe[40]; Groupe[0].Nom ="Paul"; Groupe[0].Age = 18; Groupe[1].Nom ="Georges"; Groupe[1].Age = 17; // ... } On peut utiliser une boucle pour accéder aux éléments du tableau... Joan S. Morales - Introduction à l'algo. et la programmation

Vers l’infini et plus loin encore! struct Compte { float Taux; float Solde; }; struct Client string Nom; Compte Liste[2]; int main() Client Banque[5]; Banque[0].Liste[0].Solde = 100.0f; } Joan S. Morales - Introduction à l'algo. et la programmation

La beauté des structures... Sans: int main() { string Nom1; string Nom2; string Nom3; int Age1; int Age2; int Age3; // ... x10 cin >> Nom1; cin >> Age1; cin >> Nom2; cin >> Age2; cin >> Nom3; cin >> Age3; } Avec: struct Personne { string Nom; int Age; }; int main() Personne Groupe[10]; for(int i=0;i<10;i++) cin >> Groupe[i].Nom; cin >> Groupe[i].Age; } Joan S. Morales - Introduction à l'algo. et la programmation

Joan S. Morales - Introduction à l'algo. et la programmation