Télécharger la présentation
1
Un langage de programmation hybride
La famille C C++ Un langage de programmation hybride CSI2520, Hiver 2007
2
Historique 1971: C successeur de B 1973: UNIX écrit en C
1983: Apparition du C++ 1987: ANSI C 1998: ANSI C++ CSI2520, Hiver 2007
3
Quelques caractéristiques du C
Petit Faiblement typé Langage structuré Passage par valeur seulement Basé sur l’utilisation de fonctions Même pour les E-S Opérations de bas niveau E.g. sur les bits Pointeurs Les tableaux sont des pointeurs Préprocesseur Définition de constante, macro, programmation multi-fichiers CSI2520, Hiver 2007
4
Mots clés du C auto break case char const continue default do double
else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while CSI2520, Hiver 2007
5
Un programme C CSI2520, Hiver 2007
6
Entrée-sortie en C CSI2520, Hiver 2007
7
Comparaison avec C++ C est un sous-ensemble de C++
Comporte des caractéristiques de l’OO Allocation dynamique différente Librairie de fonction paramétrisée Surcharge des opérateurs Traitement des exceptions CSI2520, Hiver 2007
8
Mots clés supplémentaires du C++
asm bool catch class const_cast delete dynamic_cast explicit false friend inline mutable namespace new operator private protected public reinterpret_cast static_cast template this throw true try typeid typename virtual using wchar_t CSI2520, Hiver 2007
9
Variables Nom Valeur Type Emplacement Durée de vie Portée
Sensibilité aux majuscules Valeur initialisation = ( ) Type entier, réel, booléen, caractère + la constance Emplacement pointeurs Durée de vie statique versus automatique Portée externe versus local, les espaces de noms CSI2520, Hiver 2007
10
Passage des paramètres
par valeur fct(int x); par adresse fct(int *x); par référence fct(int &x); CSI2520, Hiver 2007
11
Retour de fonctions une valeur une adresse une référence Rien du tout
int fct(); une adresse int *fct(); une référence int& fct(); Rien du tout void fct(); Les fonctions peuvent être surchargées CSI2520, Hiver 2007
12
Structures versus Classes
typedef struct { int x,y; } Forme; class Forme { int x,y; public: int aire(); } Abstraction de données versus Abstraction de procédures CSI2520, Hiver 2007
13
Allocation dynamique En C En C++ int *p;
p= (int *)malloc(100*sizeof(int)); free(p); En C++ p= new int[100]; delete[] p; CSI2520, Hiver 2007
14
Fonctions et classes paramétrisées
#include <iostream> using namespace std; template <class T> T GetMax (T a, T b) { T result; result = (a>b)? a : b; return (result); } int main () { int i=5, j=6, k; long l=10, m=5, n; k=GetMax<int>(i,j); n=GetMax<long>(l,m); cout << k << endl; cout << n << endl; return 0; Utilise le préprocesseur Permet l’écriture de fonctions génériques Permet la création de types génériques CSI2520, Hiver 2007
15
Classes paramétrisées
template <class T> class mypair { T values [2]; public: mypair (T first, T second) { values[0]=first; values[1]=second; } }; mypair<int> myobject (115, 36); mypair<double> myfloats (3.0, 2.18); CSI2520, Hiver 2007
16
Type Abstrait de Données
Définition de nouveaux types à l’aide de classes Surcharge des opérateurs Tous les opérateurs peuvent être surchargés Ex: operator+ Existe en version méthode ou fonction CSI2520, Hiver 2007
17
Exemple class Complex { public:
Complex(float re, float im) : myReal(re), myImag(im) {} Complex operator+(Complex c) { Complex sum(myReal+c.myReal, myImag+c.myImag); return sum; } Complex operator+(double re) { Complex sum(myReal+re, myImag); Complex operator+(int re) { float Real(void) { return myReal; } float Imag(void) { return myImag; } private: float myReal; float myImag; }; CSI2520, Hiver 2007
18
Exemple Complex operator+(double d, Complex c2) {
Complex sum(d+c2.Real(), c2.Imag()); return sum; } CSI2520, Hiver 2007
19
Exemple Complex c1 (1.1, 0); Complex c2 (9,9. 9); double d (1.1);
int i (0); c1 + d; // CALL Complex::operator+(double) d + c1; // CALL ::operator+(double,Complex) c1 + i; // CALL Complex::operator+(int) i + c1; c1 + c2; CSI2520, Hiver 2007
20
Un paradigme: programmation avec ADT
Concevoir un programme avec des abstractions indépendantes Un ADT encapsule des données et la définition des opérations qui s’applique L’implantation des opérations est cachée Le programme s’écrit à l’aide de procédures CSI2520, Hiver 2007
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.