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 BTS IRIS 1ère année 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 BTS IRIS 1ère année Le langage C++
Définition du type struct nom_structure { type1 nom_champ1; type2 nom_champ2; }; BTS IRIS 1ère année Le langage C++
Exemple struct Personne { string nom; string prenom; int age; }; BTS IRIS 1ère année Le langage C++
Déclaration de variable Déclaration identique à celle d’un type primitif Syntaxe : nom_Structure id_Var; Exemple : Personne eleve; BTS IRIS 1ère année Le langage C++
Représentation moi string int char nom age sexe BTS IRIS 1ère année 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 BTS IRIS 1ère année 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_champ de la variable id_var de type structuré BTS IRIS 1ère année Le langage C++
Exemple struct Personne { string nom; string prenom; int age; }; … Personne pers1, pers2; cout << pers1.nom; cout << pers1.prenom; cout << pers1.age; cout << pers2.nom; BTS IRIS 1ère année 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 … BTS IRIS 1ère année Le langage C++
Exemple complet : différence d’âge #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; } Définition locale les variables de type Personne ne peuvent être déclarées que dans la fonction main BTS IRIS 1ère année Le langage C++
Paramètre de fonction Définition globale #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; Définition globale les variables de type Personne peuvent être déclarées n’importe où dans le programme BTS IRIS 1ère année Le langage C++
Retour de fonction retour de fonction de type structuré #include<iostream> #include<string> using namespace std; struct Personne { string nom; int age; 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; retour de fonction de type structuré retourner la valeur résultat récupérer le résultat BTS IRIS 1ère année 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 BTS IRIS 1ère année Le langage C++
Exemple struct DateNaissance { int jour; int mois; int annee; }; struct Personne string nom; DateNaissance dateN; char sexe; BTS IRIS 1ère année 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; } BTS IRIS 1ère année 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; Produit p; //saisie des valeur cout<<"ville du fournisseur de "<<p.lib<<" :" << p.frs.ad_frs.ville … BTS IRIS 1ère année 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(); affichePersonne(groupe[i]); return 0; } BTS IRIS 1ère année Le langage C++
Représentation nom age sexe Nom des champs 1 2 3 4 5 6 … 1 2 3 4 5 6 … Indices du tableau Ex : tab[0].nom BTS IRIS 1ère année Le langage C++