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

CSI2520, Hiver 2007 La famille C C++ Un langage de programmation hybride.

Présentations similaires


Présentation au sujet: "CSI2520, Hiver 2007 La famille C C++ Un langage de programmation hybride."— Transcription de la présentation:

1 CSI2520, Hiver 2007 La famille C C++ Un langage de programmation hybride

2 CSI2520, Hiver 2007 Historique 1971: C successeur de B 1973: UNIX écrit en C 1983: Apparition du C : ANSI C 1998: ANSI C++

3 CSI2520, Hiver 2007 Quelques caractéristiques du C Petit Faiblement typé Langage structuré Passage par valeur seulement Basé sur lutilisation 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

4 CSI2520, Hiver 2007 Mots clés du C autobreakcasecharconstcontinue defaultdodoubleelseenumextern floatforgotoifintlong registerreturnshortsignedsizeofstatic structswitchtypedefunionunsignedvoid volatilewhile

5 CSI2520, Hiver 2007 Un programme C

6 CSI2520, Hiver 2007 Entrée-sortie en C

7 CSI2520, Hiver 2007 Comparaison avec C++ C est un sous-ensemble de C++ Comporte des caractéristiques de lOO Allocation dynamique différente Librairie de fonction paramétrisée Surcharge des opérateurs Traitement des exceptions

8 CSI2520, Hiver 2007 Mots clés supplémentaires du C++ asmboolcatchclassconst_cast deletedynamic_castexplicitfalsefriend inlinemutablenamespacenewoperator privateprotectedpublicreinterpret_caststatic_cast templatethisthrowtruetry typeidtypenamevirtualusingwchar_t

9 CSI2520, Hiver 2007 Variables Nom –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

10 CSI2520, Hiver 2007 Passage des paramètres par valeur –fct(int x); par adresse –fct(int *x); par référence –fct(int &x);

11 CSI2520, Hiver 2007 Retour de fonctions une valeur –int fct(); une adresse –int *fct(); une référence –int& fct(); Rien du tout –void fct(); Les fonctions peuvent être surchargées

12 CSI2520, Hiver 2007 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

13 CSI2520, Hiver 2007 Allocation dynamique En C int *p; p= (int *)malloc(100*sizeof(int)); free(p); En C++ int *p; p= new int[100]; delete[] p;

14 CSI2520, Hiver 2007 Fonctions et classes paramétrisées Utilise le préprocesseur Permet lécriture de fonctions génériques Permet la création de types génériques #include using namespace std; template 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 (i,j); n=GetMax (l,m); cout << k << endl; cout << n << endl; return 0; }

15 CSI2520, Hiver 2007 Classes paramétrisées template class mypair { T values [2]; public: mypair (T first, T second) { values[0]=first; values[1]=second; } }; mypair myobject (115, 36); mypair myfloats (3.0, 2.18);

16 CSI2520, Hiver 2007 Type Abstrait de Données Définition de nouveaux types à laide de classes Surcharge des opérateurs –Tous les opérateurs peuvent être surchargés –Ex: operator+ –Existe en version méthode ou fonction

17 CSI2520, Hiver 2007 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); return sum; } Complex operator+(int re) { Complex sum(myReal+re, myImag); return sum; } float Real(void) { return myReal; } float Imag(void) { return myImag; } private: float myReal; float myImag; };

18 CSI2520, Hiver 2007 Exemple Complex operator+(double d, Complex c2) { Complex sum(d+c2.Real(), c2.Imag()); return sum; }

19 CSI2520, Hiver 2007 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; // CALL ::operator+(double,Complex) c1 + c2;

20 CSI2520, Hiver 2007 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 sapplique Limplantation des opérations est cachée Le programme sécrit à laide de procédures


Télécharger ppt "CSI2520, Hiver 2007 La famille C C++ Un langage de programmation hybride."

Présentations similaires


Annonces Google