GEF 243B Programmation informatique applique - PowerPoint PPT Presentation

1 / 20
About This Presentation
Title:

GEF 243B Programmation informatique applique

Description:

Quelle est la syntaxe pour la d finition d'un type? Le type num r est b ti sur quel ... variables sont recr es sur la pile ( crasent les anciennes valeurs) ... – PowerPoint PPT presentation

Number of Views:59
Avg rating:3.0/5.0
Slides: 21
Provided by: abea7
Category:

less

Transcript and Presenter's Notes

Title: GEF 243B Programmation informatique applique


1
GEF 243BProgrammation informatique appliquée
  • Structures, extent, scope et static

2
Revue
  • Quelle est la syntaxe pour la définition dun
    type?
  • Le type énuméré est bâti sur quel autre type?
  • Quelle est la valeur de MER?
  • enum JOURS DIM, LUN, MAR,
  • MER, JEU, VEN, SAM
  • Comment est-ce que je changerais cette
    énumération pour en faire un type qui sappèle
    JOURS?

3
Synopsis
  • Structures initialisation
  • Structures accès au champs
  • Structures et pointeurs
  • Limitation spatiale Portée (scope)
  • Limitation temporelle Durée (extent)
  • Classe de stockage statique (static)

4
Structures
  • Hier nous avons appris comment déclarer une
    structure
  • Pour la plus part des applications, vous devriez
    utiliser les structures à type définit
  • typedef struct
  • char prenom15
  • char surnom25
  • unsigned long numDeCollege
  • float moyenne
  • ETUDIANT //nom du type
  • ETUDIANT unEtudiantCMR//déclaration

5
Structure - initialisation
  • Les structures sont initialisées de façon
    semblable aux tableaux. Si nous prenons le type
    (typedef) ETUDIANT et la variable unEtudiantCMR
    de la diapo précédente
  • ETUDIANT unETUDIANTCMR "Ti-Joe",
    "Branch",45239,78.3

Vous devez revenir pour rencontrer cet étudiant
6
Structures et champs
  • Les structures sont construites avec des champs.
    Chaque place que vous pouvez vous servir dune
    variable, vous pouvez vous servir dun champ de
    structure
  • Chaque champ peut être accédé individuellement
    avec lopérateur de membre de structure (.)
  • strcpy(unEtudiantCMR.prenom, "Bob")
  • unEtudiantCMR.numeroDeCollege 98876

Vous pourriez rencontrer cet étudiant un jour
7
Structures et champs
  • Les structures sont des entités qui peuvent être
    traités en entièreté, mais SEULEMENT pendant une
    opération daffectation
  • ETUDIANT fEtudiant "Collete", "Stérole",
    23498, 33.2 //pauvre Collette!
  • unEtudiantCMR fEtudiant
  • Vous ne pouvez pas comparer deux structures
  • if (unEtudiantCMR fEtudiant)
  • printf("Totalement une erreur")

8
Structures et champs
  • Pour que vous puissiez comparer deux structures
    du même type, vous devriez écrire une fonction
    qui compare chaque champ en ordre
  • //fonction retourne 1 si tout les champs sont
    égales
  • int CompareEtudiants(ETUDIANT et1, ETUDIANT et2)
  • return (!strcmp (et1.prenom,et2.prenom)
  • !strcmp (et1.surnom,et2.surnom)
  • et1.numeroDeCollege et2.numeroDeCollege
  • (abs(et1.moyenne - et2.moyenne) lt 0.0001))

9
Pointer aux structures?
Point!
10
Pointer aux structures
  • Comme nimporte quel type en C, les pointeurs
    peuvent être utilisés pour pointer aux
    structures. Le pointeur pointe au premier octet
    de la structure.
  • Vous pouvez aussi utiliser les pointeurs pour
    avoir accès aux champs de la structure
  • ETUDIANT pEtudiant unEtudiantCMR
  • unEtudiantCMR.numeroDeCollege 12345
  • (pEtudiant). numeroDeCollege 12345
  • Résulte à la même chose mais nous avons besoin
    des parenthèses autour de la déréférence à cause
    de la précédence des opérateurs

11
Pointer aux structures
  • Par chance, C nous donne un autre opérateur qui
    nous permet de déréférencer le pointeur et
    davoir accès à un des champ en même temps
    lopérateur de sélection de structure
  • pEtudiant-gtnumeroDeCollege 54321

12
Limitation spatiale portée (scope)
  • Nous avons parlé de variables globales et locales
    au paravent
  • Ces deux termes réfèrent à la portée dune
    variable ou sa limitation spatiale
  • La portée dune variable détermine sa visibilité
    dans lespace
  • Où vous pouvez voir et utiliser une variable
  • La porté dune variable devrait être la plus
    petite possible pour être utile Si une variable
    nest pas requise en dehors du bloc, ne la rendez
    pas visible en dehors du bloc.

13
Limitation spatiale portée (scope)
  • La fonction main contient un bloc primaire.
  • Si une variable est déclaré par dessus ce bloc
    primaire, alors elle est à la portée de toute
    lunité de compilation. Elle est même à la portée
    de toute autre unité de compilation qui sait
    quelle existe!!! Ne faite pas cela.
  • Seulement les définitions de type structure et
    les définitions de type énuméré devraient être
    globale à lunité de compilation. Pas les
    variables.

14
Limitation temporelle Durée (extent)
  • Donc nous savons ce quest la portée la
    limitation spatiale dune variable son
    territoire.
  • Et le temps de vie de la variable lui?
  • La limitation temporelle dune variable ou sa
    durée détermine quand une variable prend vie,
    quelle peut être utilisée et quand elle meurt.

15
Limitation temporelle Durée (extent)
  • Les variables existent typiquement pour la durée
    de lappel de fonction
  • Quand la fonction est appelée, un nouvel espace
    est créée sur la pile du programme pour ses
    variables
  • Les variable sont utilisées durant lexécution de
    la fonction
  • Au retour de la fonction, lespace où ces
    variables étaient stockées est libéré (le
    pointeur de pile remonte) et les variables
    cessent dexister
  • Au prochain appel, les variables sont recréées
    sur la pile (écrasent les anciennes valeurs)

16
Limitation temporelle Durée (extent)
  • En déclarant une variable comme static à
    lintérieur dune fonction, la variable est mise
    sur le tas
  • Elle va sauvegarder la valeur entre les
    exécutions de la fonction
  • La variable va seulement mourir à la terminaison
    du programme
  • Une variable statique peut être initialisée où
    elle est déclarée. Elle sera seulement
    initialisée une fois.
  • Si vous ninitialisez pas une variable statique
    sa valeur initiale est zéro.

17
Limitation temporelle Durée (extent)
  • Une variable statique est déclarée comme suit
  • int Fctn (void)
  • static int unInt 0 //init une fois seulement
  • return unInt //Ceci va garder le compte
  • //du nombre de fois que la
  • //fonction est appelée.

18
Limitation temporelle Durée (extent)
  • Notez que même si la durée de la variable change
    en utilisant le mot clé static, la portée ne
    change pas!
  • La variable peut seulement être utilisée dans la
    fonction.

19
Portée et durée
  • static est une classe de stockage
  • Jusquà date, toutes vos variables ont étés dans
    la classe de stockage auto vous navez jamais
    utilisés ce mot clé parce que cest la classe par
    défaut
  • Il y a deux autres classes de stockage (extern et
    register) mais nous nétudieront pas ceci dans le
    cours

20
Quiz Time
  • Si vous déclarez une variable qui est une
    définition de type structure quel opérateur
    est-ce que vous utilisez pour accéder les champs?
  • Si vous avez un pointeur à la structure, quel
    opérateur utilisez vous?
  • Pouvez vous affecter une structure à une autre au
    complet?
  • Comment est-ce que vous comparez les structures?
Write a Comment
User Comments (0)
About PowerShow.com