Documents pareils
Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Programme Compte bancaire (code)

Bases de programmation. Cours 5. Structurer les données

Langage Java. Classe de première SI

LE LANGAGE C++ ENAC 1997 A. DANCEL

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

COMPARAISONDESLANGAGESC, C++, JAVA ET


Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Une introduction à Java

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Cours d initiation à la programmation en C++ Johann Cuenin

Cours 1: Java et les objets

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Présentation du langage et premières fonctions

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

as Architecture des Systèmes d Information

Cours d Algorithmique et de Langage C v 3.0

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

ALGORITHMIQUE ET PROGRAMMATION En C

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Les structures. Chapitre 3

Objets et Programmation. origine des langages orientés-objet

Cours de Programmation 2

Le langage C++ (partie I)

Introduction à C++ et à wxwidgets

Conventions d écriture et outils de mise au point

Généralités sur le Langage Java et éléments syntaxiques.

Département Automatisation et Informatisation Année Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

Programmer en JAVA. par Tama

Programmation en C/C++

Java Licence Professionnelle CISII,

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

TP 1. Prise en main du langage Python

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Introduction au langage C

Machines virtuelles fonctionnelles (suite) Compilation ML Java

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

IRL : Simulation distribuée pour les systèmes embarqués

Programmation stochastique

et Programmation Objet

I. Introduction aux fonctions : les fonctions standards

Avertissement : Ce cours suppose la connaissance et la maîtrise du langage C CONTENU DU COURS BIBLIOGRAPHIE

Introduction à l algorithmique et à la programmation M1102 CM n 3

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Introduction au C++ et à la programmation objet

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Algorithmique et Programmation, IMA

Plan du cours. Historique du langage Nouveautés de Java 7

Rappels Entrées -Sorties

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

TP1 : Initiation à Java et Eclipse

INITIATION AU LANGAGE JAVA

Java c est quoi? Java pourquoi?

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Introduction à l héritage en C++

Programmation en Java IUT GEII (MC-II1) 1

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

UE Programmation Impérative Licence 2ème Année

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Notions fondamentales du langage C# Version 1.0

Analyse de sécurité de logiciels système par typage statique

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Java DataBaseConnectivity

Claude Delannoy. 3 e édition C++

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

INTRODUCTION À LA PROGRAMMATION PRATIQUE DU LANGAGE C. M. Le Gonidec

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

TD3: tableaux avancées, première classe et chaînes

SUPPORT DE COURS. Langage C

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Plan Pédagogique du cours

STAGE IREM 0- Premiers pas en Python

Chap III : Les tableaux

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

ACTIVITÉ DE PROGRAMMATION

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Recherche dans un tableau

Structurer ses données : les tableaux. Introduction à la programmation

Cours 1 : Qu est-ce que la programmation?

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Gestion de la mémoire

Initiation. àl algorithmique et à la programmation. en C

Support de Cours de Langage C. Christian Bac

Transcription:

Historique C++ C++ : extension objet du langage C Bjarne Stroustrup, années 80 Java Inspiré de la partie objet du C++ Années 90 par SUN Vision discutable : Le C++ est un mélange de Java et de C Normalisé vers 97-98 et constamment actualisé 1/25

Le besoin Données structurées algorithmes Programme 2/25

Approche structurée Début init application répéter L fin jusqu'à fin terminer l'application Complétez cet algorithme de premier niveau quant aux traitements des données incluant la lecture/modification de celles-ci 3/25

Approche objet voiture couleur : enuméré distancetotaleparcourue : entier distanceavantplein : entier typevehicule : enuméré demarrer() : void arreter() : void mettreessence() : entier rouler(nbkm : entier) : void objet attributs opérations A quoi correspond l'état d'un objet? Qu'est-ce qui définit le comportement d'un objet? 4/25

Approche objet Principe de conception Interface limitée Communication limitée Protection des données : encapsulation Aucune variable globale Nombre réduit d'éléments publics Nombre réduit de méthodes publiques Les attributs sont privés 5/25

C++ proche du C même syntaxe de base code C "propre" directement compilable en C++ facilité d'intégration de fichiers C++ et C dans un même programme Principal inconvénient : compatibilité C/C++ Possibilité de créer une application non objet 6/25

C++ C++ = langage objet ET procédural contrairement à Java (purement orienté objet) langage riche et (relativement) complexe C++ = meilleure ET pire des choses le meilleur : OO + efficacité du C le pire : richesse du langage souvent utilisée à mauvais escient -> programmes inutilement complexes, "usines à gaz" 7/25

C++ Un programme C++ est constitué : de classes réparties dans plusieurs fichiers Éviter la déclaration de plusieurs classes dans le même fichier (éventuellement) de fonctions et variables globales (à la C) A éviter Pas de packages mais des namespaces 8/25

Déclaration et définition Même distinction qu'en langage C : déclarations dans les fichiers d'interface (ou en tête) : xxx.h ou xxx sans extension définition dans fichiers d'implémentation : xxx.cpp à chaque xxx.cpp doit correspondre : un xxx.h : déclaration de l'api "publique" Dans quel fichier (h ou cpp) va-t-on déclarer une classe? 9/25

C++ programmation structurée Les commentaires Comme en c : /* * commentaire traditionnel pour les en tête de fonctions et de fichier * sur plusieurs lignes * valide en C et C++ */ Sur une ligne // variable locale récurrente 10/25

C++ les variables Types de variables Tous les types en C plus le type bool {true, false}; Déclaration Au plus proche de l'utilisation Doit être initialisée avant leur utilisation Constantes typées Rappelez les types de variables en C Quel est le risque d'une non initialisation de variable? 11/25

C++ les constantes const devant un nom rend celui-ci non modifiable const int monentier = 10 : Exemple // commentez les lignes suivantes et indiquez les erreurs const float PI = 3.1415 ; const MAXINT = (int)(uint)(~0); const int MAX_ELEMENT = 10 ; int TAB[2 * MAX_ELEMENT] ; // autorisé en C++ interdit en C int i; PI = 3.0; i = MAXINT++; Quel est la valeur de MAXINT? En java, quel est le mot clé pour déclaré un objet constant? 12/25

C++ : constantes et pointeurs Cas où le pointeur est constant : char *const str = "salut à vous tous"; // str est un pointeur constant str ++ ; //erreur, message du compilateur cout << str; *str = A ; // autorisé, seul le pointeur est constant str = " Aujourd hui, c est mardi "; // interdit car strcpy(str, "Aujourd hui, c est lundi") ; // autorisé car Complétez les messages Faites le plan mémoire associé 13/25

C++ : constantes et pointeurs Cas où la donnée pointée est constante char *const str = "salut à vous tous"; // str est un pointeur constant const char *str2 = "bonjour à vous";// str2 pointe sur une chaîne constante str2++ ; // autorisé car *str2 = A ; // erreur, message du compilateur str2 = str ; // autorisé car str = str2 ; // interdit car strcpy(str, str2); // par contre acceptée car const char * const str = «salut à vous» ; // ici, qui est constant? Complétez les messages le modificateur const s'adresse à ce qui le suit immédiatement 14/25

C++ et les fonctions Comme en C Les déclarations dans le fichier d'interface Les définitions dans le fichier d'implantation Paramètres typés ou Void pour indiquer qu'il n'y a pas de paramètre Void en retour pour indiquer que la fonction ne renvoie rien Pourquoi ne doit-on pas définir des fonctions dans le fichier d'interface? 15/25

C++ et les fonctions (2) Les derniers paramètres peuvent avoir des valeurs par défaut Les valeurs sont fournies dans la déclaration uniquement void print(long valeur, int base = 10); Ce sont les derniers paramètres La définition demeure habituelle void print(long valeur, int base){...} L'utilisation a plusieurs écritures possibles print(65536); // affiche 65536 ( en base 10) print(65536, 16); // affiche 10000 ( en base 16) Pourquoi les paramètres par défaut sont-ils les derniers? 16/25

C++ et les fonctions (3) La surcharge (overload) de fonctions Même nom de fonction et Le nombre de paramètres est différents Ou le type des paramètres est différent Attention : la valeur de retour ne permet pas de différentier des fonctions surchargées Faites les exercices 1 et 2 Pourquoi n'y a t il pas de saut de ligne entre les 2 réponses de Q1 17/25

C++ et les fonctions (4) Les fonctions inline Elles sont définies lors de leur déclaration Elles sont précédées du mot clé inline Gain de temps en exécution Accroissement de la taille mémoire pour le programme Faites les exercices 3 et 4 18/25

C++ et les fonctions (5) Passage de paramètre par référence Lors de l'appel, l'adresse est passée en paramètre S'utilise comme une variable simple Le paramètre formel est précédé du symbole & Le paramètre référence doit être déclaré const pour éviter la modification de la variable référencée Faites les exercices 6 à 8 et 9 19/25

C++ les variables références(2) Les variables références Variable qui est une adresse Est initialisée lors de sa déclaration et est précédé du symbole & S'emploie comme une variable Est un alias d'une variable N'est pas un pointeur S'utilise principalement pour les fonctions lors du passage de paramètre Y a t il une analogie avec java? 20/25

C++ : les références int main() { } int i; int & ir = i; // ir est une référence à i int *ptr; int &autreref ; // interdit car i=1; cout << "i= " << i << " ir= " << ir << endl; // affichage de : ir=2; cout << "i= " << i << " ir= " << ir << endl; // affichage de : i= 2 ir= 2 ptr = &ir ; // attention à l'usage *ptr = 3; cout << "i= " << i << " ir= " << ir << endl; // affichage de : i= 3 ir= 3 return 0 ; Complétez les commentaires Faites le plan mémoire 21/25

C++ autres particularités enum Crée une liste de valeurs successives La première vaut 0 Chacune peut recevoir une valeur constante Struct existe comme en c Quel est le type des éléments d'un enum? Écrire une fonction affichecouleur(couleur) qui affiche la couleur du paramètre énuméré. On se limitera à 5 couleurs Comparez une structure et une classe 22/25

C++ new et delete Opérateur new et delete à la place de malloc et free Allocation d'une zone mémoire Initialisation de cette zone libère toute la zone allouée Déclarez deux pointeurs sur entier, allouez les pour un entier et un tableau de 10 entiers et initialisez les puis détruisez les 23/25

C++ les tableaux gérés par pointeurs Cas particulier : les tableaux Faites les exercices 10, 11 et 12 Complétez le 10 en initialisant le tableau ptabint et en détruisant le contenu 24/25

Espace de noms et opérateur :: Opérateur de résolution de portée :: L'espace de noms : Équivalent de package sous java Regroupement sous un même nom d'un ensemble de Classes Fonctions variables 25/25