Un langage de programmation hybride

Slides:



Advertisements
Présentations similaires
Introduction au Langage C,C++
Advertisements

A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Programmation Orienté Objet en C++
Rappels C.
Cours n° 7 Standard Template Library II.
Introduction au langage C++
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
Cours n° 8 Conception et Programmation à Objets
C.
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
Structures et unions types énumérés Qu'est-ce qu'une structure
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
FLSI602 Génie Informatique et Réseaux
FLSI602 Génie Informatique et Réseaux
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que lon veut allouer. Le premier exemple: #include void main()
TRAITEMENT DE STRUCTURES
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
Programmation Initiation Aux Langages C et C++ (2) Bruno Permanne 2006.
IFT-2000: Structures de données
Structures de données IFT-2000
Structures de données IFT-2000
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 7 : Classes et fonctions paramétrables Département.
IFT 6800 Atelier en Technologies d’information
Chapitre 9 Les sous-programmes.
Standard Template Library
C++ : fonctions et opérateurs
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Structures de données IFT-2000
C++ : variables Déclaration de variables
Structures de données IFT-2000
Plan cours La notion de pointeur et d’adresse mémoire.
Structures de données IFT-2000
Faculté Polytechnique de Mons
L’essentiel du langage C
Structures des données
2.1 - Historique Chapitre 2 : Introduction au langage C++
Le langage C Rappel Pointeurs & Allocation de mémoire.
9ième Classe (Mardi, 4 novembre) CSI2572. H Nous avons vu comment utiliser les directives #define #ifndef #endif Pour s’assurer de l’inclusion unique.
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
La notion de type revisitée en POO
et quelques rappels sur certains éléments du langage C
SIF-1053 Architecture des ordinateurs
ALGORITHMIQUE ET PROGRAMMATION C
Héritage multiple En langage C++, il est possible d’utiliser l’héritage multiple. Il permet de créer des classes dérivées à partir de plusieurs classes.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que l’on veut allouer. Le premier exemple: #include void main()
Cours C++ Fonctions Surcharge d’opérateurs Passage d’arguments
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
Les surcharges d'opérateurs
TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES
ISBN Chapitre 10 L'implémentation des sous- programmes.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
6ième Classe (Mercredi, 17 novembre) CSI2572
Conception de Programmes - IUT de Paris - 1ère année Cours 2 – Références et passage de paramètres Les Références –Introduction aux références.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
PRO-1027 Programmation Scientifique en C
Langage de Programmation Orientée Objet : C++
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
Cours de Langage C Les structures
Transcription de la présentation:

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

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

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

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

Un programme C CSI2520, Hiver 2007

Entrée-sortie en C CSI2520, Hiver 2007

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

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

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

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

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

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

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

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

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

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

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

Exemple Complex operator+(double d, Complex c2) { Complex sum(d+c2.Real(), c2.Imag()); return sum; } 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; c1 + c2; 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 s’applique L’implantation des opérations est cachée Le programme s’écrit à l’aide de procédures CSI2520, Hiver 2007