Le langage C++ Langage orienté objet

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

POO par Jenny Benois-Pineau 25/03/2017.
Introduction au Langage C,C++
Sémantique des déclarations pour le langage Z minimal
Introduction au langage C++
la programmation en langage C

FLSI602 Génie Informatique et Réseaux
Les Ateliers de Génie Logiciel
Cours Visual Basic pour Application
CYCLE 6 : FONCTIONS FONCTIONS avec paramètres en Entrée 1- Pourquoi les FONCTIONS peuvent échanger des données en E entre elles ? 2- Comment écrire des.
2 ième édition 1 Introduction aux systèmes dinformation Un outil essentiel pour lentreprise branchée Chapitre James A. OBrien © 2003 Les Éditions de la.
1 Une introduction à Java IFT 287 (Semaine 1). 2 Java - Historique Développé par Sun Microsystems en 1994 –Inventeur James Gosling (canadien!) Objectif.
Cours de C GTR 2003/ COURS DE PROGRAMMATION EN LANGAGE C ALBERT Arnauld.
Initiation à la programmation et algorithmique
Introduction Langage C
Programme et Langage C++
TRAITEMENT DE STRUCTURES
Système d’exploitation : Assembleur
Microsoft dot Net Extrait du cours. La programmation fenêtrée facile. Une approche objet. Philippe Garraud: Formateur indépendant.
Leçon 2 : Surcharge des opérateurs IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Algorithmique et Programmation
Lecture et écriture de données
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.
Les langages de scriptage Insertion des scripts Javascript ou VBscript.
Amorçage des compilateurs Un compilateur est un programme écrit dans un langage Peut-il être écrit dans le langage cible ? dans le langage source ? comment.
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-10541
Faculté Polytechnique de Mons
B.Shishedjiev - Informatique II
Module Internet (3) 1 Département Technologie de l’Information et de la Communication Internet.
Shell Equipe ID Bioinformatics Training Course June 2014.
Programmer en langage c
B.Shishedjiev - Entrée/sortie1 Entrée-sortie simple Faire le programme d’écouter et parler.
B.Shishedjiev - TD11 Travaux dirigés 1 Expressions et affectation Entrée-sortie.
SIF-1053 Architecture des ordinateurs
ALGORITHMIQUE ET PROGRAMMATION C
GESTION ET TRAITEMENT DES ERREURS
Un survol du language C.
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.
X xx yyy Document XML Résolution d'entités Résolution espaces de nommages Reader Parsing Contrôle de validité structurelle Contrôle arbre bien formé Contrôle.
Outil de conception d’applications WPF Anciennement « Interactive Designer » Orienté « intégrateur graphistes » Particularité : Blend tm est une application.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Simulation d’un modèle.
Introduction à Visual Studio C++ (VC++)
Module I3 algorithmique et programmation
C++ L’HERITAGE Fayçal BRAÏKI DUT INFORMATIQUE.
1 Sixième journée Éléments de C++ La programmation typée Éléments de C++ La programmation typée.
Créez des applications Silverlight 3 David Rousset Relations Techniques avec les développeurs Microsoft France
Fiabilisation des lectures au clavier. Problèmes liés à scanf: rencontre de caractères invalides Sans arrêt prématuré: compte = scanf(``%d%c``;&n,&c);
CSI2520 Un langage de programmation impérative et concurrente.
Le Préprocesseur. Sujets abordés: Préprocesseur –Qu’est ce? –Qu’est ce qu’une directive? Les macros –Les définir, les redéfinir, les dé-définir –Les macros.
1 Programmation en C++ Marianne Morris. 2 Intro générale à la programmation On a déjà étudié le langage assembleur Langage de bas niveau Meilleur que.
Les variables fichiers. Le type fichier On manipule les fichiers par l’intermédiaire de structures FILE décrites dans stdio.h FILE *monFichier; –Nom physique.
Introduction au langage C Les entrées-sorties
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O. et au.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
19 septembre 2001Nom de l'étudiant1 Mise en marché des produits Denis Trudel Directeur 11 octobre 2003.
Une brève présentation de C# Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Les entrées-sorties élémentaires
Langage de Programmation Orientée Objet : C++
Structures de données IFT-2000 Abder Alikacem Laboratoire #1 Département d’informatique et de génie logiciel Édition Septembre 2009.
Chapitre 9 Les caractères.
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Les membres de l’équipe Inès Marcela Clémentine Anaëlle Nous avons travaillé ensemble pour fabriquer ce robot et nous avons répartit les étapes équitablement.
Informatique 2A Langage C 1 ère séance.
Les IDE orientés conception C ycle de V ie D es A pplications
Informatique 2A Langage C 4ème séance
Prof, mohammed bouramdane Le langage de programmation Leçon 2:
A quoi sert la programmation? - indispensable pour plusieurs métiers. - passion. But du cours: - suite du cours Prog. Imp. I - fichiers, pointeurs, modularité.
Transcription de la présentation:

Le langage C++ Langage orienté objet Expérience des défauts/limites du C Sécurité de codage (compilateur)

C++ sur-ensemble du C Coder « à la C » avec compilateur C++ g++ CC Visual Studio

Les entrées/sorties Flots d’E/S cin (C: stdin) cout (C: stdout) cerr (C : stderr)

Entrées/sorties Opérateurs d’E/S plutôt que fonctions printf() et scanf() Exemple : affichage Diriger les sorties vers le flot de sortie cout cout << "bonjour" << endl; endl remplace le ‘\n’ du C : passage à la ligne

Entrées/sorties expression flot op données est de type flot flot << données; (données vers flot) flot >> données; (obtenir les données depuis le flot) expression flot op données est de type flot possibilité d’enchaîner les E/S

Entrées/sorties en C : en C++ : long a; printf("saisir a:"); scanf("%ld",&a); printf("%ld au carre vaut %ld\n",a,a*a); en C++ : cout << "saisir a :"; cin >> a; // et hop, plus de format ni de & cout << a << "au carre vaut " << a*a << endl;

Variables définitions de variables à tout endroit du code pas de retour au bloc de définition des variables durée de vie de la variable adaptée à son rôle

Variables exemple : for (long cpt=0; cpt < nb; cpt++) { double val; instructions; } cpt et val n'existent que pour l'exécution de la boucle

Références alternative à l'utilisation des pointeurs créer un alias pour une variable deux noms différents désignent la même variable (même adresse). opérateur &

Références syntaxe : pas de référence à une expression type &nom_de_référence = variable; int i; int &j = i; pas de référence à une expression référence = pointeur dont on ne manipule que le contenu

Références long i; long k; long &j; long &j=4; long &j=i+2; long &j=i; j=k; référence vers rien référence vers une constante référence vers une expression

Références passage de paramètres l'échange est effectif ! void f(long &a, long &b) { long tmp; tmp=a; a=b; b=tmp; return; } l'échange est effectif !

Références inconvénients : impossible de distinguer un passage de références à l'appel long x, y; f(x,y); // par valeur ? par référence ? les arguments doivent être des variables

Références dangers : fonction retournant une référence référence  adresse quelles précautions prendre ?

Références char &f(void) { char let='x'; return let; let créée ici } char &f(char t) return t; char &f(char &t) let créée ici et détruite ici… t créée ici et détruite ici… t fait référence à une autre variable. ouf !

Arguments par défaut initialiser des arguments au niveau du prototype : valeurs prises si argument absent à l'appel liste des valeurs à partir des derniers arguments

Arguments par défaut prototype : utilisation : void fonction(int, int=0, int=1); utilisation : void main() { int x,y; x=4; y=x+5; fonction(y); // fonction(y,0,1); fonction(2,x); // fonction(2,x,1); fonction(x,y,x+y); // ok, 3 arguments }

Arguments par défaut définition : void fonction(int a, int b, int c) { cout << a << "," << b << "," << c; cout << endl; return; } Ne pas rappeler les valeurs par défaut.

Surcharge de fonctions signature de fonction : carte d'identité auprès du compilateur en C : son nom en C++ : son nom + types des paramètres unicité de l'identité

Surcharge de fonctions exemple prototype signature void f(int,int); f_int_int void f(int,double); f_int_double void f(double,int); f_double_int les 3 fonctions coexistent dans un programme

Surcharge de fonctions erreur du compilateur si on ajoute : int f(int,int); le type de retour ne fait pas partie de la signature. choix de la fonction à l'appel.

Surcharge et références le compilateur accepte la surcharge… void f(int&,int&); // connue comme f_int&_int& mais on ne peut plus appeler f_int_int ni f_int&_int& !

Surcharge et références void main() { int i,j; int &k=i; f(i,j); // ambiguïté ! }

Utiliser des fonctions du C incompatibilité des signatures ! indiquer que le langage d'origine est le C : extern "C" précédant le prototype. généralisable à tout un fichier .h

Utiliser des fonctions du C symbole de langage à définir pour la compilation rappel : #ifdef / #ifndef / #define / #endif définir les symboles en ligne de commande : option –Dsymbole Z:\> g++ -c monprog.cpp -DDEBUG ouvrons le fichier complex.h de Dev

fonctions inline mécanisme d'appel de fonction: overhead (temps supplémentaire) car : calcul des arguments placement sur la pile placement de l'@ de retour de la fonction saut à la fonction la fonction est exécutée placement de la valeur de retour sur la pile saut à l'@ de retour

fonctions inline désavantageux si : code de la fonction court appels nombreux supprimer cet overhead en transformant l'appel de fonction en : expansion de code

fonctions inline expansion : remplace l'appel par le code de la fonction : programme plus volumineux similaire aux macros du C, mais vérifications faites par le compilateur sécurité accrue !

fonctions inline en C : #define CARRE(x) x*x int main() { long a=CARRE(2+4); printf("%ld",a); } affiche : 14 car calcul de 2+4*2+4

fonctions inline en C++ : affiche 36 inline long carre(long); int main() { cout << carre(2+4) << endl; } long carre(long t) return t*t; affiche 36

ah, ca on le saura que c'est un int ! Allocation dynamique malloc() et calloc() remplacées informations fournies redondantes : int *p; long nb; nb=12; p=(int *)malloc(nb*sizeof(int)); ah, ca on le saura que c'est un int ! tout-à-fait, Thierry !

Opérateurs new et delete new : indiquer le type et le nombre de données à réserver. pour une seule valeur : double *p_doub; p_doub = new double; // allocation libérer la mémoire avec : delete p_doub; // libération

Opérateurs new[] et delete[] tableaux dynamiques : char *txt; long taille; taille=42; txt = new char[42]; // allocation de 42 char // libération avec l'opérateur delete[] delete []txt;

mais encore… C++ utilise des instructions du C les tests les boucles mais apporte beaucoup pour : les fonctions sans les changer les structures