La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Conception de Programmes - IUT de Paris - 1ère année - 2001-20021 Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.

Présentations similaires


Présentation au sujet: "Conception de Programmes - IUT de Paris - 1ère année - 2001-20021 Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O."— Transcription de la présentation:

1 Conception de Programmes - IUT de Paris - 1ère année - 2001-20021 Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O. et au C++ Quelques éléments du langage C++ –Déclaration de type et de variable –Constantes –Entrées/sorties simples –Les types bool et string Appel de fonction et pile d’exécution

2 Conception de Programmes - IUT de Paris - 1ère année - 2001-20022 Objectifs du cours Qualité logicielle –Correction, rapidité –Extensiblité, réutilisabilité, –... Structuration des programmes –Fonction, fichier, –Module, classe,... Programmation orientée objet Introduction au langage C++

3 Conception de Programmes - IUT de Paris - 1ère année - 2001-20023 Organisation du cours Intervenants –Marie-José Caraty (Td et cours) –Jean-Pierre Dupuy (Td) –Denis Poitrenaud (Td et cours) –Mikal Ziane (Td) Contrôle des connaissances –2 Projets 2 * coef. 1 –DSTcoef. 3 Compilateurs –Visual C++ sous Windows NT, –g++ sous Linux.

4 Conception de Programmes - IUT de Paris - 1ère année - 2001-20024 Programmation Orientée Objet Objectifs –Initiation à la conception –Correction des programmes –Réutilisation des composants logiciels –Extensibilité des programmes Moyens –Structuration par les données –Encapsulation des données –Abstraction des données –Composition –Héritage, polymorphisme, ramasse-miettes,... Langages –Smalltalk, Eiffel, Ada 95, Java, C++,...

5 Conception de Programmes - IUT de Paris - 1ère année - 2001-20025 Le langage C++ Le C++ a été défini par Bjarne Stroustrup dans le début des années 80. Le C++ est normalisé (ANSI) depuis 1989. Presque tout le langage C fait partie du C++. Un livre de référence (disponible à la bibliothèque): –Le langage C++, Bjarne Stroustrup, International Thomson Publishing, 3 ème édition, 1999

6 Conception de Programmes - IUT de Paris - 1ère année - 2001-20026 Quelques éléments de langage Commentaires a = 2 * b; // commentaire jusqu’au saut le ligne /* commentaire classique */ Déclarations de types enum Reponse {OUI, NON}; typedef char CH20[21]; struct Personne { int age; Reponse marie; CH20nom; }; Personne p;

7 Conception de Programmes - IUT de Paris - 1ère année - 2001-20027 Déclarations de variables void main() { int a; a = 5; int b = a; for (int i = 0; i < a; i++) b += 4; } Valeurs par défaut des paramètres void f(int, char = ‘a’, int = 10); f(1, ‘c’, 2); f(2, ‘z’); // f(2, ‘z’, 10); f(3); // f(3, ‘a’, 10);

8 Conception de Programmes - IUT de Paris - 1ère année - 2001-20028 Les constantes (mot réservé const ) –Déclaration de constantes syntaxe: const = exemple: const double pi = 3.1416; –Indique qu’un identificateur doit garder une valeur constante. pi = 3.14159; // Erreur : interdit de changer de valeur –Il est donc interdit d’y affecter une valeur : on peut uniquement l’initialiser et cette initialisation est obligatoire. const double pi; // Erreur : constante non initialisée –C’est le compilateur qui réalise ces vérifications –Avantage par rapport aux macros: le contrôle de type

9 Conception de Programmes - IUT de Paris - 1ère année - 2001-20029 Les constantes et les pointeurs –Un pointeur vers une variable ne peut pointer vers une constante const double pi = 3.1416; double* p1 = π // Erreur : on peut modifier pi via p1 –Déclaration de pointeur vers une constante const double* p2 = π // OK double e = 2.7; p2 = &e; // OK *p2 = 2.72; // Erreur : p2 pointe sur une constante –Déclaration de pointeur constant double* const p3 = &e; // OK *p3 = 2.72; // OK p3 = π // Erreur : p3 est une constante –Déclaration de pointeur constant vers une constante const double* const p4 = π // OK *p4 = 3.14159; // Erreur : p4 pointe sur une constante p4 = π // Erreur : p4 est une constante

10 Conception de Programmes - IUT de Paris - 1ère année - 2001-200210 Paramètres constants double puissance (const double, const double); –Le compilateur vérifie que les paramètres ne sont pas modifiés par la fonction. –const est peu utilisé dans ce cas car, de toute façon, la fonction n’a pas d’effet de bord car les paramètres sont passés par valeur. On évite juste certains bogues. void afficher (const Personne*); –Le compilateur vérifie que la personne pointée n’est pas modifiée. –On a la vitesse du passage par adresse et la sécurité du passage par valeur. En prime, on évite certains bogues !

11 Conception de Programmes - IUT de Paris - 1ère année - 2001-200211 Entrées/Sorties simples –iostream.h  le fichier définissant les classes correspondantes –cin, cout, cerr  les flux d’entrée et de sortie standards –>>, <<  les opérateurs de lecture et d’écriture –endl  saut de ligne (‘\n’) #include void main() { int i; char c; cout << "entrez un entier et un caractère" << endl; cin >> i >> c; cout << "i = " << i << "c = " << c << endl; }

12 Conception de Programmes - IUT de Paris - 1ère année - 2001-200212 Le type bool –Type de base spécifique au C++ –2 valeurs possibles : true et false –Toute expression conditionnelle (comme i==0 ) renvoie un bool Le type string –Type de la bibliothèque standard du C++ (STL) –Chaînes de caractères à longueur variable –Usage simplifié (par rapport à char* ) –Nombreuses fonctions disponibles

13 Conception de Programmes - IUT de Paris - 1ère année - 2001-200213 #include using namespace std; void main() { string s1; // initialisée à "" (chaine vide) cin >> s1; // saisie cout << "s1 = " << s1 << endl; // affichage string s2 = "abcd"; // initialisée à "abcd" cout << "s2 = " << s2 << endl; if (s1 == s2) // comparaison cout << "s1 == s2" << endl; else if (s1 < s2)// comparaison cout << "s1 < s2" << endl; else cout s2" << endl;

14 Conception de Programmes - IUT de Paris - 1ère année - 2001-200214 int i; for(i=0; i<s1.length(); i++) // longueur cout << s1[i] << s1[i]; // lecture d'un caractère cout << endl; for(i=0; i<s1.length(); i++) s1[i] = 'a'; // affectation d'un caractère cout << "s1 = " << s1 << endl; s1 = s2; // affectation s1 = s1 + s2; // concaténation cout << "s1 = " << s1 << endl; char s[10]; strcpy(s, s1.c_str()); // conversion en const char* }

15 Conception de Programmes - IUT de Paris - 1ère année - 2001-200215 Autres fonctions disponibles empty capacity append assign insert erase replace copy swap find compare... Attention, ces fonctions (comme la fonction length ) doivent être appelées avec une syntaxe particulière: string s = "une chaine"; cout << s.length();

16 Conception de Programmes - IUT de Paris - 1ère année - 2001-200216 Les variables et la gestion de la mémoire Au lancement d’un programme –Le code est chargé (code segment) –L’espace mémoire nécessaire pour stocker les variables globales est alloué (data segment) –Les variables globales qui le nécessitent sont initialisées –La fonction main est appelée A chaque appel de fonction –L’espace mémoire nécessaire pour stocker les paramètres et les variables locales est alloué (stack segment) –Les paramètres sont initialisés par recopie des valeurs des paramètres effectifs –Les variables locales qui le nécessitent sont initialisées Au retour de la fonction –L’espace mémoire alloué à l’appel est désalloué

17 Conception de Programmes - IUT de Paris - 1ère année - 2001-200217 Pile d'exécution: fonctions sans paramètres #include void g(); void main() { double pi = 3.14; cout << "pi = " << pi << endl; g(); cout << "pi = " << pi << endl; } void g() { double pi = 3.14159; cout << "pi = " << pi; } Exécution: pi = 3.140000 pi = 3.141590 pi = 3.140000

18 Conception de Programmes - IUT de Paris - 1ère année - 2001-200218 Evolution de la pile d'exécution L’espace mémoire accessible par les instructions d’une fonction est limité aux paramètres et variables locales de la fonction (et aux variables globales) global main pi: 3.14 entrée dans main global main pi: 3.14 g pi: 3.14159 entrée dans g global main pi: 3.14 après le retour de g

19 Conception de Programmes - IUT de Paris - 1ère année - 2001-200219 Pile d'exécution: paramètres valeurs #include void g(int); void main() { float pi = 3.14; int a; cout << "pi = " << pi << endl; cout << "entrez un entier : "; cin >> a; g(a); cout << "pi = " << pi << endl; } void g(int x) { float pi = 3.1416; cout << x << " * pi = " << x*pi << endl; } Exécution : pi= 3.140000 entrez un entier : 2 2 * pi= 6.283200 pi = 3.140000

20 Conception de Programmes - IUT de Paris - 1ère année - 2001-200220 Evolution de la pile d'exécution global main pi:3.14 a:? entrée dans main global main pi:3.14 a:2 après la saisie de a global main pi:3.14 a:2 entrée dans g g x:2 pi:3.1416 global main pi:3.14 a:2 après le retour de g

21 Conception de Programmes - IUT de Paris - 1ère année - 2001-200221 Pile d'exécution: paramètres pointeurs #include void saisie (float*); void main() { float pi = 3.14; cout << "pi = " << pi << endl; saisie(&pi); cout << "pi = " << pi << endl; } void saisie(float* px) { cout << "*px = " << *px << endl; cout << "entrez un nombre : "; cin >> *px; cout << "*px = " << *px << endl; } Exécution: pi = 3.140000 *px = 3.140000 entrez un nombre: 3.14159 *px = 3.141590 pi = 3.141590

22 Conception de Programmes - IUT de Paris - 1ère année - 2001-200222 Evolution de la pile d'exécution global main pi:3.14 entrée dans main global main pi:3.14 entrée dans saisie saisie px: global main pi:3.14159 après la saisie de (*px) saisie px: global main pi:3.14159 après le retour de saisie px "pointe" sur pi


Télécharger ppt "Conception de Programmes - IUT de Paris - 1ère année - 2001-20021 Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O."

Présentations similaires


Annonces Google