SlideShare une entreprise Scribd logo
1  sur  5
Télécharger pour lire hors ligne
S. Laporte                                                                           Lycée Louise Michel BTS IG 1



                       Les structures (enregistrements)
                      Définitions et syntaxe

Structure est le nom donné en C et C++ à ce qu'on appelle enregistrement en algorithmique.
Ce nom peut porter à confusion car les structures ne représentent qu'un sous-ensemble des structures de données. Les
tableaux sont aussi des structures de données mais ce ne sont pas des structures. Nous verrons l'année prochaine d'autres type
de structures de données (comme les listes chaînées).

Une structure (au sens enregistrement) permet de désigner sous un seul nom un ensemble de valeurs pouvant être de type
différent. L'accès aux éléments d'une structure (appelés champs) ne se fait pas par un indice contrairement à l'accès aux
éléments d'un tableau, mais par le nom du champ (précédé du nom de la structure et d'un point).

  Comme en algorithmique, il faut bien distinguer le type de structure de la structure elle-
même.
Une structure est une variable dont on a préalablement défini le type.
Ainsi, pour déclarer une structure, deux étapes sont nécessaires:
      - définir1 le type de structure (appelé aussi modèle de structure, correspondant au type enregistrement)
      - déclarer une ou plusieurs variables de ce type, appelées structures


       !      Remarque:
Dans certains ouvrages, vous trouverez écrit qu'une structure est un type et que les variables de ce type sont
des variables structures ou variables structurées. Cela dépend des auteurs. L'important est de bien faire
la distinction entre le type structuré et les variables de ce type.

     Syntaxe

En C++                                                                  En algorithmique

// déclaration (ou définition) du type de structure2                    Type

struct ttoto                                                            ttoto = enregistrement
{                                                                                 tutu: entier
int tutu;                                                                         titi: réel
float titi;                                                                    finenreg
};

// déclaration des structures du type ttoto(variables)                  Var

ttoto toto1, toto2;                                                     toto1, toto2: ttoto

                                                                        Début
// accès au champ titi de toto1 (pour affichage)                        …
                                                                        Aff toto1.titi
cout << toto1.titi;



Les champs d'une structure peuvent être de n'importe quel type, y compris d'un "type utilisateur" ou d'un autre type de
structure. La seule contrainte est que les types des champs soient connus du compilateur. Les types crées par le
programmeur doivent avoir été définis (déclarés) préalablement à leur utilisation comme type d'un champ.




1 dans le cas des types de structure, la déclaration correspond à la définition. On peut utiliser ces deux termes

indifféremment
2 Cette syntaxe est valable en C++ mais pas en C où il faudrait utiliser typedef. Pour plus de renseignements, voir les

différents ouvrages de C à la bibliothèque.



                                                                                                                            1
S. Laporte                                                                            Lycée Louise Michel BTS IG 1

ε Exemple
Déclaration de 3 clients caractérisés par leur nom, leur prénom et leur adresse, composée d'un numéro de rue, d'un nom de
rue, d'un code postal et d'une ville.
Pour simplifier l'utilisation des chaines de caractères, on déclare tout d'abord un type utilisateur chaine

typedef                                                   // définition d'un type chaine


struct tadresse                           // déclaration d'un type de structure tadresse
{
             num_rue;
             nom_rue;
             cp;
             ville;
};
struct tclient                            // déclaration d'un type de structure tclient
{
             nom;
             prenom;
                adresse;
};

                                                            // déclarations des 3 clients


     Application

Ecrire un programme en C++ qui saisit les caractéristiques de 2 personnes (nom, prénom, date de naissance) puis qui affiche
le nombre d'années d'écart qui sépare la naissance de ces deux personnes (pour simplifier, on considère que deux personnes
nées sur deux années différentes ont un an d'écart, même si l'une est née en janvier et l'autre en décembre). Vous pourrez
utiliser la fonction abs( ) déclaré dans le fichier d'en-tête math.h.




                    Les tableaux de structures

Il est bien entendu possible de regrouper sous un même nom, plusieurs structures de même type pour former un tableau de
structure.

ε Exemple
Déclaration d'un tableau de 20 clients:
          tclient client[20];

   Application
On suppose que le tableau client déclaré ci-dessus a été initialisé.
Ecrire l'instruction qui permet d'afficher le nom, le prénom et l'adresse du quatrième client du tableau, sous la forme suivante:
Pierre Dupond
12, rue Jean Monnet
93000 Bobigny




                                                                                                                               2
S. Laporte                                                                             Lycée Louise Michel BTS IG 1



Ecrire maintenant la séquence qui permettrait d'afficher ainsi tous les clients, séparés par une ligne.




                 Passage d'une structure en paramètre d'une fonction et portée des types
          de structure

Les structures, comme toutes variables, peuvent être passés en paramètre d'une fonction. L'intégralité de la structure est
passée en paramètre, ce qui évite d'avoir à passer tous les champs uns à uns (cela est possible car l'affectation globale entre
deux structures de même type est autorisée).
Le mode de passage des structures est le même que les variables simples (contrairement aux tableaux):
    - par défaut, le passage s'effectue par valeur, donc la structure paramètre ne sera pas modifiée.
    - si la structure est un paramètre résultat ou un paramètre modifié, il faut alors utiliser le passage par référence (avec
    &).
ε Exemple
Voilà une fonction void qui permute les valeurs des champs de deux clients.
Attention, pour que la permutation se fasse sentir sur les paramètres effectifs, il faut utiliser le passage par référence
(paramètres en entrée/sortie)

          void permut (tclient & toto, tclient & titi)
          {
            tclient temp;     // déclaration d'une personne temporaire pour la permutation

              temp = toto;    // affectation globale possible entre 2 structures de même type
              toto = titi;
              titi = temp;
          }


     Attention à la portée des types de structures!
Si le type de structure tclient est déclaré (défini) à l'intérieur du programme principal main( ), alors la fonction permut ne va
pas fonctionner. En effet, la portée d'un type de structure (ou d'un type utilisateur) suit les mêmes règles que la portée d'une
variable:
- s'il est déclaré au sein d'une fonction (y compris main( ) bien entendu), il n'est accessible (utilisable) qu'au sein de cette
fonction, même pas par les fonctions appelées. Il n'est donc pas possible de passer en paramètre à une autre fonction,.une
structure déclarée en local
- s'il est déclaré avant toute fonction, le type structuré est alors accessible par toutes les fonctions contenues dans le
fichier source (y compris main( ) bien entendu). Dans ce cas, il est possible de passer une structure en paramètre d'une
fonction.

Ainsi, en général, les types structuré sont déclarés avant la fonction main (avant prototypes et les constantes globales.

Dans notre exemple, il faudrait déclarer le type tclient en dehors des fonctions pour pouvoir appeler permut.

Remarque: une structure peut aussi être la valeur retournée d'une fonction.

    Application



                                                                                                                                    3
S. Laporte                                                               Lycée Louise Michel BTS IG 1


Ecrire un programme qui permute les données concernant deux personnes caractérisées par leur nom, leur
prénom et leur date de naissance. La permutation est réalisée à l'aide d'une fonction void.

# include …

                                                            // déclaration du type utilisateur chaine
                                                            // déclaration de la structure date




                                                            // déclaration de la structure personne




//prototype (déclaration) de la fonction void permut
main( )
{
// déclaration et initialisation de 2 personnes



// appel de la fonction permut


// affichage pour vérification
cout << pers1.nom << " " << pers1.prenom <<" "<< pers1.ddn.jour << "/ " << pers1.ddn.mois <<"/ "<<
pers1.ddn.annee;
cout << pers2.nom << " " << pers2.prenom <<" "<< pers2.ddn.jour << "/ " << pers2.ddn.mois <<"/ "<<
pers2.ddn.annee;
}
// définition de la fonction void permut




                                                                                                        4
S. Laporte                                                                            Lycée Louise Michel BTS IG 1




    Exercice

Le but de cet exercice est d'écrire un petit programme qui permette de mémoriser et de traiter différentes informations sur les
équipes de rugby du tournoi des 6 nations (France, Angleterre, Pays de Galles, Irlande, Ecosse, Italie). Pour chaque nation, on
veut mémoriser le nom, le prénom et le poids de chacun des 15 joueurs de l'équipe (on ne tient pas compte des remplaçants).
Chaque joueur a un numéro de poste (de 1 à 15) qui détermine son rôle dans l'équipe (le numéro 1 est pilier gauche, le
numéro deux est talonneur, …).
Cette application devra dans un premier temps saisir les informations concernant tous les joueurs de la façon suivante:
France
joueur 1: Christian Califano 95
…
joueur 15: Thomas Castaignede 76

Angleterre
joueur 1: …


Une fois les informations saisies, l'application affiche
- le poids, le numéro de poste, le nom et le prénom du joueur le plus lourd, et la nation pour qui il joue, selon le modèle
suivant:

Avec 130 kg, le numéro 5 William Smith de l'equipe Angleterre est le joueur le plus lourd du tournoi
- le poids moyen des joueurs pour chacun des postes
les joueurs du poste 1 pèsent en moyenne 98 kg
les joueurs du poste 2 pèsent en moyenne 89 kg
…
les joueurs du poste 15 pèsent en moyenne 73 kg

Travail à Faire:
Après avoir choisi des structures de données appropriées pour mémoriser les informations, écrire en C++ le programme
demandé de façon modulaire.




                                                                                                                              5

Contenu connexe

Tendances

Cours Algorithme: Tableau
Cours Algorithme: TableauCours Algorithme: Tableau
Cours Algorithme: TableauInforMatica34
 
Partie 11: Héritage — Programmation orientée objet en C++
Partie 11: Héritage — Programmation orientée objet en C++Partie 11: Héritage — Programmation orientée objet en C++
Partie 11: Héritage — Programmation orientée objet en C++Fabio Hernandez
 
cours algorithme et structure de données 1er année
cours algorithme et structure de données 1er annéecours algorithme et structure de données 1er année
cours algorithme et structure de données 1er annéeMissaoui Abdelbaki
 
POO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 EncapsulationPOO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 EncapsulationMouna Torjmen
 
Résumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementRésumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementborhen boukthir
 
Exercices pascal tous les chapitres
Exercices pascal tous les chapitresExercices pascal tous les chapitres
Exercices pascal tous les chapitresborhen boukthir
 
Chap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-rechercheChap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-rechercheRiadh Harizi
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)rezgui mohamed
 
Travaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesTravaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesAnass41
 
Théorie des langages - 01 - Compilation
Théorie des langages - 01 - CompilationThéorie des langages - 01 - Compilation
Théorie des langages - 01 - CompilationYann Caron
 
Chapitre iv algorithmes de tri
Chapitre iv algorithmes de triChapitre iv algorithmes de tri
Chapitre iv algorithmes de triSana Aroussi
 

Tendances (20)

Tp1 matlab
Tp1 matlab Tp1 matlab
Tp1 matlab
 
Cours Algorithme: Tableau
Cours Algorithme: TableauCours Algorithme: Tableau
Cours Algorithme: Tableau
 
Mes devoirs 4 si
Mes devoirs 4 siMes devoirs 4 si
Mes devoirs 4 si
 
Partie 11: Héritage — Programmation orientée objet en C++
Partie 11: Héritage — Programmation orientée objet en C++Partie 11: Héritage — Programmation orientée objet en C++
Partie 11: Héritage — Programmation orientée objet en C++
 
cours algorithme et structure de données 1er année
cours algorithme et structure de données 1er annéecours algorithme et structure de données 1er année
cours algorithme et structure de données 1er année
 
POO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 EncapsulationPOO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 Encapsulation
 
Résumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementRésumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrement
 
Chapitre 02 : Variables, Expressions et Instructions
Chapitre 02 : Variables, Expressions et InstructionsChapitre 02 : Variables, Expressions et Instructions
Chapitre 02 : Variables, Expressions et Instructions
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
Exercices pascal tous les chapitres
Exercices pascal tous les chapitresExercices pascal tous les chapitres
Exercices pascal tous les chapitres
 
Algorithme chap 1
Algorithme chap 1Algorithme chap 1
Algorithme chap 1
 
Chap2fonctionscpp
Chap2fonctionscppChap2fonctionscpp
Chap2fonctionscpp
 
Chap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-rechercheChap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-recherche
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)
 
Travaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesTravaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de Données
 
Fascicule tp programmation c
Fascicule tp programmation cFascicule tp programmation c
Fascicule tp programmation c
 
Recursiviteeeeeeeeee
RecursiviteeeeeeeeeeRecursiviteeeeeeeeee
Recursiviteeeeeeeeee
 
Théorie des langages - 01 - Compilation
Théorie des langages - 01 - CompilationThéorie des langages - 01 - Compilation
Théorie des langages - 01 - Compilation
 
Chapitre 1 rappel
Chapitre 1   rappelChapitre 1   rappel
Chapitre 1 rappel
 
Chapitre iv algorithmes de tri
Chapitre iv algorithmes de triChapitre iv algorithmes de tri
Chapitre iv algorithmes de tri
 

En vedette

Base de-donn-es-bac-si-95ae18
Base de-donn-es-bac-si-95ae18Base de-donn-es-bac-si-95ae18
Base de-donn-es-bac-si-95ae18Wael Ismail
 
Séries de-révision-4-eco
Séries de-révision-4-ecoSéries de-révision-4-eco
Séries de-révision-4-ecoLassaad Saidi
 
Telecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplusTelecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlpluswebreaker
 
exercices base de données - sql
exercices  base de données - sql exercices  base de données - sql
exercices base de données - sql Yassine Badri
 
Fiche de TP 4 sur les bases de données avec les SGBD(Système de Gestion des B...
Fiche de TP 4 sur les bases de données avec les SGBD(Système de Gestion des B...Fiche de TP 4 sur les bases de données avec les SGBD(Système de Gestion des B...
Fiche de TP 4 sur les bases de données avec les SGBD(Système de Gestion des B...ATPENSC-Group
 
Pmb mode d'emploi
Pmb mode d'emploiPmb mode d'emploi
Pmb mode d'emploidoccollege
 
Para pensar la promocion de lectura
Para pensar la promocion de lecturaPara pensar la promocion de lectura
Para pensar la promocion de lecturaana carcamo
 
Conocimientos_2
Conocimientos_2Conocimientos_2
Conocimientos_2lido
 
Sportequipment
SportequipmentSportequipment
Sportequipmenttuya0625
 
Semesterarbeiten
SemesterarbeitenSemesterarbeiten
Semesterarbeitenscuy
 
Livre de Pierre de Villard : "Faut-il quitter la France ?"
Livre de Pierre de Villard : "Faut-il quitter la France ?"Livre de Pierre de Villard : "Faut-il quitter la France ?"
Livre de Pierre de Villard : "Faut-il quitter la France ?"Newday
 
L%e2%80%99environnement
L%e2%80%99environnementL%e2%80%99environnement
L%e2%80%99environnementMarlène Fert
 
1º eso b c-d. leurs idoles
1º eso b c-d. leurs idoles1º eso b c-d. leurs idoles
1º eso b c-d. leurs idolesSchool
 

En vedette (20)

Base de-donn-es-bac-si-95ae18
Base de-donn-es-bac-si-95ae18Base de-donn-es-bac-si-95ae18
Base de-donn-es-bac-si-95ae18
 
Séries de-révision-4-eco
Séries de-révision-4-ecoSéries de-révision-4-eco
Séries de-révision-4-eco
 
TP 1 ACCESS
TP 1 ACCESSTP 1 ACCESS
TP 1 ACCESS
 
Telecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplusTelecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplus
 
exercices base de données - sql
exercices  base de données - sql exercices  base de données - sql
exercices base de données - sql
 
Fiche de TP 4 sur les bases de données avec les SGBD(Système de Gestion des B...
Fiche de TP 4 sur les bases de données avec les SGBD(Système de Gestion des B...Fiche de TP 4 sur les bases de données avec les SGBD(Système de Gestion des B...
Fiche de TP 4 sur les bases de données avec les SGBD(Système de Gestion des B...
 
Ailleurs
AilleursAilleurs
Ailleurs
 
Pmb mode d'emploi
Pmb mode d'emploiPmb mode d'emploi
Pmb mode d'emploi
 
Paco Bas y Sushi Marhuenda
Paco Bas y Sushi MarhuendaPaco Bas y Sushi Marhuenda
Paco Bas y Sushi Marhuenda
 
Para pensar la promocion de lectura
Para pensar la promocion de lecturaPara pensar la promocion de lectura
Para pensar la promocion de lectura
 
Conocimientos_2
Conocimientos_2Conocimientos_2
Conocimientos_2
 
Contextos sec 99
Contextos sec 99Contextos sec 99
Contextos sec 99
 
Sportequipment
SportequipmentSportequipment
Sportequipment
 
Semesterarbeiten
SemesterarbeitenSemesterarbeiten
Semesterarbeiten
 
Livre de Pierre de Villard : "Faut-il quitter la France ?"
Livre de Pierre de Villard : "Faut-il quitter la France ?"Livre de Pierre de Villard : "Faut-il quitter la France ?"
Livre de Pierre de Villard : "Faut-il quitter la France ?"
 
Website
WebsiteWebsite
Website
 
L%e2%80%99environnement
L%e2%80%99environnementL%e2%80%99environnement
L%e2%80%99environnement
 
1º eso b c-d. leurs idoles
1º eso b c-d. leurs idoles1º eso b c-d. leurs idoles
1º eso b c-d. leurs idoles
 
12.El Sistema Solar
12.El Sistema Solar12.El Sistema Solar
12.El Sistema Solar
 
Baum.mm
Baum.mmBaum.mm
Baum.mm
 

Similaire à Les structures en c++ (1)

CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCSiratiSoufiane
 
01 - Introduction à Python chaines de caractères.pdf
01 - Introduction à Python chaines de caractères.pdf01 - Introduction à Python chaines de caractères.pdf
01 - Introduction à Python chaines de caractères.pdfMARYAM510573
 
02 Spécificité du C++ COURS SYS SYSSSSSS
02 Spécificité du C++  COURS SYS SYSSSSSS02 Spécificité du C++  COURS SYS SYSSSSSS
02 Spécificité du C++ COURS SYS SYSSSSSSAyoubElmrabet6
 
System c eniso_jan_fev_07
System c eniso_jan_fev_07System c eniso_jan_fev_07
System c eniso_jan_fev_07haythem_2015
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfFadouaBouafifSamoud
 
Cours C Avancé chapitre 2 et chapitre.pdf
Cours C Avancé  chapitre 2 et chapitre.pdfCours C Avancé  chapitre 2 et chapitre.pdf
Cours C Avancé chapitre 2 et chapitre.pdfc79024186
 
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++Fabio Hernandez
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage PythonAziz Darouichi
 
Cours algo: Les pointeurs
Cours algo: Les pointeursCours algo: Les pointeurs
Cours algo: Les pointeursSana REFAI
 
Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#Youness Boukouchi
 
Formation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptxFormation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptxbetalab
 
Les bases du langage java
Les bases du langage javaLes bases du langage java
Les bases du langage javakrymo
 
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)Tunisie collège
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptxLamissGhoul1
 

Similaire à Les structures en c++ (1) (20)

CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
 
01 - Introduction à Python chaines de caractères.pdf
01 - Introduction à Python chaines de caractères.pdf01 - Introduction à Python chaines de caractères.pdf
01 - Introduction à Python chaines de caractères.pdf
 
Langage c partie_2
Langage c partie_2Langage c partie_2
Langage c partie_2
 
POO-chapitre6.pptx
POO-chapitre6.pptxPOO-chapitre6.pptx
POO-chapitre6.pptx
 
Ch02
Ch02Ch02
Ch02
 
Ch1 _ les enregistrements.pdf
Ch1 _ les enregistrements.pdfCh1 _ les enregistrements.pdf
Ch1 _ les enregistrements.pdf
 
02 Spécificité du C++ COURS SYS SYSSSSSS
02 Spécificité du C++  COURS SYS SYSSSSSS02 Spécificité du C++  COURS SYS SYSSSSSS
02 Spécificité du C++ COURS SYS SYSSSSSS
 
System c eniso_jan_fev_07
System c eniso_jan_fev_07System c eniso_jan_fev_07
System c eniso_jan_fev_07
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdf
 
Cours C Avancé chapitre 2 et chapitre.pdf
Cours C Avancé  chapitre 2 et chapitre.pdfCours C Avancé  chapitre 2 et chapitre.pdf
Cours C Avancé chapitre 2 et chapitre.pdf
 
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++
 
Ch13
Ch13Ch13
Ch13
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
Cours algo: Les pointeurs
Cours algo: Les pointeursCours algo: Les pointeurs
Cours algo: Les pointeurs
 
Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#
 
Formation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptxFormation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptx
 
Les bases du langage java
Les bases du langage javaLes bases du langage java
Les bases du langage java
 
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptx
 
Formation python 3
Formation python 3Formation python 3
Formation python 3
 

Plus de Wael Ismail

Devoir de synthèse N°1
Devoir de synthèse N°1 Devoir de synthèse N°1
Devoir de synthèse N°1 Wael Ismail
 
Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012Wael Ismail
 
devoir de contrôle N° 1 TIC 2011-2012
devoir de contrôle N° 1 TIC 2011-2012devoir de contrôle N° 1 TIC 2011-2012
devoir de contrôle N° 1 TIC 2011-2012Wael Ismail
 
Ch5 base de données
Ch5   base de donnéesCh5   base de données
Ch5 base de donnéesWael Ismail
 
Ch3 eléments de présentation
Ch3   eléments de présentationCh3   eléments de présentation
Ch3 eléments de présentationWael Ismail
 
Ch1 traitement de texte
Ch1   traitement de texteCh1   traitement de texte
Ch1 traitement de texteWael Ismail
 
Les algorithmes d’approximation
Les algorithmes d’approximationLes algorithmes d’approximation
Les algorithmes d’approximationWael Ismail
 
Presentation algo-irem-2x2 (1)
Presentation algo-irem-2x2 (1)Presentation algo-irem-2x2 (1)
Presentation algo-irem-2x2 (1)Wael Ismail
 
Les structures en c++
Les structures en c++Les structures en c++
Les structures en c++Wael Ismail
 
Cours intro05 06
Cours intro05 06Cours intro05 06
Cours intro05 06Wael Ismail
 

Plus de Wael Ismail (20)

Dc23 si
Dc23 siDc23 si
Dc23 si
 
Dc13 si
Dc13 siDc13 si
Dc13 si
 
Ds1
Ds1Ds1
Ds1
 
Dc23 si
Dc23 siDc23 si
Dc23 si
 
Dc2cc
Dc2ccDc2cc
Dc2cc
 
Dc2
Dc2Dc2
Dc2
 
Devoir de synthèse N°1
Devoir de synthèse N°1 Devoir de synthèse N°1
Devoir de synthèse N°1
 
Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012
 
devoir de contrôle N° 1 TIC 2011-2012
devoir de contrôle N° 1 TIC 2011-2012devoir de contrôle N° 1 TIC 2011-2012
devoir de contrôle N° 1 TIC 2011-2012
 
Ch5 base de données
Ch5   base de donnéesCh5   base de données
Ch5 base de données
 
Ch4 internet
Ch4   internetCh4   internet
Ch4 internet
 
Ch3 eléments de présentation
Ch3   eléments de présentationCh3   eléments de présentation
Ch3 eléments de présentation
 
Ch2 tableur
Ch2  tableurCh2  tableur
Ch2 tableur
 
Ch1 traitement de texte
Ch1   traitement de texteCh1   traitement de texte
Ch1 traitement de texte
 
Les algorithmes d’approximation
Les algorithmes d’approximationLes algorithmes d’approximation
Les algorithmes d’approximation
 
Presentation algo-irem-2x2 (1)
Presentation algo-irem-2x2 (1)Presentation algo-irem-2x2 (1)
Presentation algo-irem-2x2 (1)
 
Les structures en c++
Les structures en c++Les structures en c++
Les structures en c++
 
L2006
L2006L2006
L2006
 
Jmc habile
Jmc habileJmc habile
Jmc habile
 
Cours intro05 06
Cours intro05 06Cours intro05 06
Cours intro05 06
 

Les structures en c++ (1)

  • 1. S. Laporte Lycée Louise Michel BTS IG 1 Les structures (enregistrements) Définitions et syntaxe Structure est le nom donné en C et C++ à ce qu'on appelle enregistrement en algorithmique. Ce nom peut porter à confusion car les structures ne représentent qu'un sous-ensemble des structures de données. Les tableaux sont aussi des structures de données mais ce ne sont pas des structures. Nous verrons l'année prochaine d'autres type de structures de données (comme les listes chaînées). Une structure (au sens enregistrement) permet de désigner sous un seul nom un ensemble de valeurs pouvant être de type différent. L'accès aux éléments d'une structure (appelés champs) ne se fait pas par un indice contrairement à l'accès aux éléments d'un tableau, mais par le nom du champ (précédé du nom de la structure et d'un point). Comme en algorithmique, il faut bien distinguer le type de structure de la structure elle- même. Une structure est une variable dont on a préalablement défini le type. Ainsi, pour déclarer une structure, deux étapes sont nécessaires: - définir1 le type de structure (appelé aussi modèle de structure, correspondant au type enregistrement) - déclarer une ou plusieurs variables de ce type, appelées structures ! Remarque: Dans certains ouvrages, vous trouverez écrit qu'une structure est un type et que les variables de ce type sont des variables structures ou variables structurées. Cela dépend des auteurs. L'important est de bien faire la distinction entre le type structuré et les variables de ce type. Syntaxe En C++ En algorithmique // déclaration (ou définition) du type de structure2 Type struct ttoto ttoto = enregistrement { tutu: entier int tutu; titi: réel float titi; finenreg }; // déclaration des structures du type ttoto(variables) Var ttoto toto1, toto2; toto1, toto2: ttoto Début // accès au champ titi de toto1 (pour affichage) … Aff toto1.titi cout << toto1.titi; Les champs d'une structure peuvent être de n'importe quel type, y compris d'un "type utilisateur" ou d'un autre type de structure. La seule contrainte est que les types des champs soient connus du compilateur. Les types crées par le programmeur doivent avoir été définis (déclarés) préalablement à leur utilisation comme type d'un champ. 1 dans le cas des types de structure, la déclaration correspond à la définition. On peut utiliser ces deux termes indifféremment 2 Cette syntaxe est valable en C++ mais pas en C où il faudrait utiliser typedef. Pour plus de renseignements, voir les différents ouvrages de C à la bibliothèque. 1
  • 2. S. Laporte Lycée Louise Michel BTS IG 1 ε Exemple Déclaration de 3 clients caractérisés par leur nom, leur prénom et leur adresse, composée d'un numéro de rue, d'un nom de rue, d'un code postal et d'une ville. Pour simplifier l'utilisation des chaines de caractères, on déclare tout d'abord un type utilisateur chaine typedef // définition d'un type chaine struct tadresse // déclaration d'un type de structure tadresse { num_rue; nom_rue; cp; ville; }; struct tclient // déclaration d'un type de structure tclient { nom; prenom; adresse; }; // déclarations des 3 clients Application Ecrire un programme en C++ qui saisit les caractéristiques de 2 personnes (nom, prénom, date de naissance) puis qui affiche le nombre d'années d'écart qui sépare la naissance de ces deux personnes (pour simplifier, on considère que deux personnes nées sur deux années différentes ont un an d'écart, même si l'une est née en janvier et l'autre en décembre). Vous pourrez utiliser la fonction abs( ) déclaré dans le fichier d'en-tête math.h. Les tableaux de structures Il est bien entendu possible de regrouper sous un même nom, plusieurs structures de même type pour former un tableau de structure. ε Exemple Déclaration d'un tableau de 20 clients: tclient client[20]; Application On suppose que le tableau client déclaré ci-dessus a été initialisé. Ecrire l'instruction qui permet d'afficher le nom, le prénom et l'adresse du quatrième client du tableau, sous la forme suivante: Pierre Dupond 12, rue Jean Monnet 93000 Bobigny 2
  • 3. S. Laporte Lycée Louise Michel BTS IG 1 Ecrire maintenant la séquence qui permettrait d'afficher ainsi tous les clients, séparés par une ligne. Passage d'une structure en paramètre d'une fonction et portée des types de structure Les structures, comme toutes variables, peuvent être passés en paramètre d'une fonction. L'intégralité de la structure est passée en paramètre, ce qui évite d'avoir à passer tous les champs uns à uns (cela est possible car l'affectation globale entre deux structures de même type est autorisée). Le mode de passage des structures est le même que les variables simples (contrairement aux tableaux): - par défaut, le passage s'effectue par valeur, donc la structure paramètre ne sera pas modifiée. - si la structure est un paramètre résultat ou un paramètre modifié, il faut alors utiliser le passage par référence (avec &). ε Exemple Voilà une fonction void qui permute les valeurs des champs de deux clients. Attention, pour que la permutation se fasse sentir sur les paramètres effectifs, il faut utiliser le passage par référence (paramètres en entrée/sortie) void permut (tclient & toto, tclient & titi) { tclient temp; // déclaration d'une personne temporaire pour la permutation temp = toto; // affectation globale possible entre 2 structures de même type toto = titi; titi = temp; } Attention à la portée des types de structures! Si le type de structure tclient est déclaré (défini) à l'intérieur du programme principal main( ), alors la fonction permut ne va pas fonctionner. En effet, la portée d'un type de structure (ou d'un type utilisateur) suit les mêmes règles que la portée d'une variable: - s'il est déclaré au sein d'une fonction (y compris main( ) bien entendu), il n'est accessible (utilisable) qu'au sein de cette fonction, même pas par les fonctions appelées. Il n'est donc pas possible de passer en paramètre à une autre fonction,.une structure déclarée en local - s'il est déclaré avant toute fonction, le type structuré est alors accessible par toutes les fonctions contenues dans le fichier source (y compris main( ) bien entendu). Dans ce cas, il est possible de passer une structure en paramètre d'une fonction. Ainsi, en général, les types structuré sont déclarés avant la fonction main (avant prototypes et les constantes globales. Dans notre exemple, il faudrait déclarer le type tclient en dehors des fonctions pour pouvoir appeler permut. Remarque: une structure peut aussi être la valeur retournée d'une fonction. Application 3
  • 4. S. Laporte Lycée Louise Michel BTS IG 1 Ecrire un programme qui permute les données concernant deux personnes caractérisées par leur nom, leur prénom et leur date de naissance. La permutation est réalisée à l'aide d'une fonction void. # include … // déclaration du type utilisateur chaine // déclaration de la structure date // déclaration de la structure personne //prototype (déclaration) de la fonction void permut main( ) { // déclaration et initialisation de 2 personnes // appel de la fonction permut // affichage pour vérification cout << pers1.nom << " " << pers1.prenom <<" "<< pers1.ddn.jour << "/ " << pers1.ddn.mois <<"/ "<< pers1.ddn.annee; cout << pers2.nom << " " << pers2.prenom <<" "<< pers2.ddn.jour << "/ " << pers2.ddn.mois <<"/ "<< pers2.ddn.annee; } // définition de la fonction void permut 4
  • 5. S. Laporte Lycée Louise Michel BTS IG 1 Exercice Le but de cet exercice est d'écrire un petit programme qui permette de mémoriser et de traiter différentes informations sur les équipes de rugby du tournoi des 6 nations (France, Angleterre, Pays de Galles, Irlande, Ecosse, Italie). Pour chaque nation, on veut mémoriser le nom, le prénom et le poids de chacun des 15 joueurs de l'équipe (on ne tient pas compte des remplaçants). Chaque joueur a un numéro de poste (de 1 à 15) qui détermine son rôle dans l'équipe (le numéro 1 est pilier gauche, le numéro deux est talonneur, …). Cette application devra dans un premier temps saisir les informations concernant tous les joueurs de la façon suivante: France joueur 1: Christian Califano 95 … joueur 15: Thomas Castaignede 76 Angleterre joueur 1: … Une fois les informations saisies, l'application affiche - le poids, le numéro de poste, le nom et le prénom du joueur le plus lourd, et la nation pour qui il joue, selon le modèle suivant: Avec 130 kg, le numéro 5 William Smith de l'equipe Angleterre est le joueur le plus lourd du tournoi - le poids moyen des joueurs pour chacun des postes les joueurs du poste 1 pèsent en moyenne 98 kg les joueurs du poste 2 pèsent en moyenne 89 kg … les joueurs du poste 15 pèsent en moyenne 73 kg Travail à Faire: Après avoir choisi des structures de données appropriées pour mémoriser les informations, écrire en C++ le programme demandé de façon modulaire. 5