410 likes | 778 Views
Le langage C++. Les types structurés. Structure. Tableaux : structures de données dont tous les éléments sont de même type Types structurés : structures de données dont les éléments peuvent être de type différent Les éléments qui composent un type structuré sont appelés champs.
E N D
Le langage C++ Les types structurés Introduction à la programmation et algorithmique
Structure • Tableaux : structures de données dont tous les éléments sont de même type • Types structurés : structures de données dont les éléments peuvent être de type différent • Les éléments qui composent un type structuré sont appelés champs Le langage C++
Types structurés • Permet d’englober plusieurs éléments : • Type personne avec nom, prénom et âge • Type classe avec un tableau de noms de matières, un tableau de notes et un tableau de personnes • … • Utilisation comme un type classique : • variables de type structuré • tableaux d'éléments de type structuré • déclaration avant sa 1ère utilisation Le langage C++
Définition du type struct nom_structure { type1 nom_champ1; type2 nom_champ2; }; Le langage C++
Exemple struct Personne { string nom; string prenom; int age; }; Le langage C++
Déclaration de variable • Déclaration identique à celle d’un type primitif • Syntaxe : nom_Structure id_Var; • Exemple : Personne eleve; Le langage C++
Représentation moi string int char nom age sexe Le langage C++
Manipulation • Manipulation au travers des champs • sauf pour affectation et paramètres, il n'est pas possible de manipuler un enregistrement globalement (Comme pour les tableaux) • Exemple : pour afficher une variable de type structuré il faut afficher ses champs un par un Le langage C++
Accès au champs • les champs d'une structure sont accessibles à travers leur nom et l'opérateur '. ' • Syntaxe : id_var.nom_champ; représente la valeur mémorisée dans le champ nom_champde la variableid_varde type structuré Le langage C++
Exemple struct Personne { string nom; stringprenom; intage; }; … Personne pers1, pers2; … cout << pers1.nom; cout << pers1.prenom; cout << pers1.age; … cout << pers2.nom; … Le langage C++
Champs • le nom d'un champ est toujours précédé du nom de la variable à laquelle il appartient • On ne peut pas trouver un nom de champ tout seul • variables comme les autres à qui on peut faire subir les mêmes opérations : • Affectation • Saisie • Affichage • … Le langage C++
Exemple complet : différence d’âge Définition locale les variables de type Personne ne peuvent être déclarées que dans la fonction main #include<iostream> #include<string> using namespace std; int main (void) { struct Personne { string nom; int age; }; Personne pers1, pers2; cout << "Entrez le nom puis l'age de la personne 1" << endl; cin >> pers1.nom >> pers1.age; cout << "Entrez le nom puis l'age de la personne 2" << endl; cin >> pers2.nom >> pers2.age; cout << "La différence d'âge entre " << pers1.nom << " et " << pers2.nom << " est de "; if(pers1.age > pers2.age) cout << pers1.age - pers2.age << " ans "; else cout << pers2.age - pers1.age << " ans "; return 0; } Le langage C++
Paramètre de fonction Définition globale les variables de type Personne peuvent être déclarées n’importe où dans le programme #include<iostream> #include<string> using namespace std; struct Personne { string nom; int age; char sexe; }; void affichePersonne(Personne p) { cout << "nom : " << p.nom << endl; cout << "age : " << p.age << endl; cout << "sexe : " << p.sexe << endl; } int main (void) { Personne pers; cout << "veuillez saisir les nom, age et sexe :"; cin >> pers.nom; cin >> pers.age; cin >> pers.sexe; pers.age=pers.age+1; affichePersonne(pers); return 0; } Le langage C++
Retour de fonction retour de fonction de type structuré #include<iostream> #include<string> usingnamespacestd; struct Personne { string nom; intage; char sexe; }; Personne saisirPersonne(void) { Personne p; cout << "veuillez saisir les nom, age et sexe :"; cin >> p.nom; cin >> p.age; cin >> p.sexe; return p; } int main (void) { Personne pers; pers=saisirPersonne(); vieillir(pers); affichePersonne(pers); return 0; } retourner la valeur résultat récupérer le résultat Le langage C++
Imbrication de type • Un champs d’un type structuré peut être une variable de type structuré • Exemple : • Une date est composée de trois variables (jour, mois, année) indissociables => structure • On remplace l'âge de la personne par sa date de naissance Le langage C++
Exemple structDateNaissance { int jour; int mois; intannee; }; struct Personne { string nom; DateNaissancedateN; char sexe; }; Le langage C++
Manipulation Personne saisirPersonne() { Personne p; cout << "veuillez saisir les nom, date de naissance, et sexe :"; cin >> p.nom; cin >> p.dateN.jour; cin >> p.dateN.mois; cin >> p.dateN.annee; cin >> p.sexe; return p; } Le langage C++
Exemple complet struct Adresse{ int num; string rue; int cp; string ville; }; struct Fournisseur{ string code_frs; string raison_sociale; Adresse ad_frs; int tel; }; struct Produit{ string code; string lib; float paht; float pvht; float txtva; Fournisseur frs; }; Produitp; //saisie des valeur cout<<"ville du fournisseur de "<<p.lib<<" :" << p.frs.ad_frs.ville … Le langage C++
Tableau d’enregistrement struct Personne { string nom; int age; char sexe; }; void affichePersonne(Personne); Personne saisirPersonne(); int main (void) { const int nbPers=10; Personne pers; Personne groupe[nbPers]; for(int i=0; i<nbPers; i++) groupe[i]=saisirPersonne(); for(int i=0; i<nbPers; i++) affichePersonne(groupe[i]); return 0; } Le langage C++
Représentation age nom sexe Nom des champs 0 1 2 3 4 5 6 … Indices du tableau Ex : tab[0].nom Le langage C++