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

Un langage de programmation hybride

Présentations similaires


Présentation au sujet: "Un langage de programmation hybride"— Transcription de 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


Télécharger ppt "Un langage de programmation hybride"

Présentations similaires


Annonces Google