0- Le langage C++ 1- Du langage C au langage C++ 2- Quelques éléments sur le langage. 3- Organisation du cours



Documents pareils
Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Évaluation et implémentation des langages

Chapitre 1 : Introduction aux bases de données

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Méthodes de développement. Analyse des exigences (spécification)

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

Générer du code à partir d une description de haut niveau

Systeme d'exploitation

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

TP1. Outils Java Eléments de correction

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

Introduction aux Bases de Données Relationnelles Conclusion - 1

Programme et contenus Licence d'informatique de Lille, parcours MIAGE, en alternance ou en formation continue (13:40)

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

Chapitre I Notions de base et outils de travail

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

SECTION 5 BANQUE DE PROJETS

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et

Alfresco Guide Utilisateur

webmestre : conception de sites et administration de serveurs web 42 crédits Certificat professionnel CP09

LOGICIEL DE GESTION DE DOCUMENTS PDF : PROJET INFO 1

Application 1- VBA : Test de comportements d'investissements

L informatique en BCPST

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

Chapitre 1 I:\ Soyez courageux!

Le Framework.Net. Introduction. Pourquoi.Net?

Introduction. I Étude rapide du réseau - Apprentissage. II Application à la reconnaissance des notes.

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

1.6- Génération de nombres aléatoires

Cours 1 : Qu est-ce que la programmation?

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Extensions, Documentation, Tutoriels, Astuces

Le génie logiciel. maintenance de logiciels.

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Programmation Objet - Cours II

Programmation des Applications Réparties. Parsers XML DOM et SAX

Brique BDL Gestion de Projet Logiciel

GUIDE DE L UTILISATEUR Recoveo Récupérateur de données

Université de Bangui. Modélisons en UML

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

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

Une protection antivirus pour des applications destinées aux dispositifs médicaux

Chapitre 1 Qu est-ce qu une expression régulière?

Pourquoi l apprentissage?

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Trier les ventes (sales order) avec Vtiger CRM

ATELIERS APPRENDRE 2015

1 Repérer les paramètres d installation (.exe ou.msi).

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Télécom Nancy Année

Diagramme de classes

Utilisation de l analyse statique comme outil d aide au développement. par. Yves Gauthier

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Formation VBA 3 Interagir

QUELQUES CONSEILS POUR LA MAINTENANCE DE VOTRE ORDINATEUR

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

modélisation solide et dessin technique

Chapitre 2 : Abstraction et Virtualisation

MODE OPERATOIRE OPENOFFICE BASE

Les bases de données Page 1 / 8

Installation et prise en main

(VM(t i ),Q(t i+j ),VM(t i+j ))

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Jexcel. V1.1.4 Manuel d'utilisation. modifié le 16 nov. 2004

Programmation parallèle et distribuée (Master 1 Info )

Windows serveur 2008 installer hyperv

PROSOP : un système de gestion de bases de données prosopographiques

Bases de données Cours 1 : Généralités sur les bases de données

Algorithme. Table des matières

Convertisseur BBAN/IBAN

Devenez un véritable développeur web en 3 mois!

Programmation C. Apprendre à développer des programmes simples dans le langage C

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

Utiliser Freemind à l'école

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Cours 1 : La compilation

INTRODUCTION AUX TECHNOLOGIES D INGENIERIE DES DONNEES DIRIGEE PAR LES MODELES

Utilisez Toucan portable pour vos sauvegardes

Éléments de programmation et introduction à Java

1. Considérations sur le développement rapide d'application et les méthodes agiles

Ateliers Python+Qt : Premiers pas : Comment développez ses propres interfaces graphiques sur le RaspberryPi?

Application de lecture de carte SESAM-Vitale Jeebop

Introduction aux Bases de Données

Entraînement au concours ACM-ICPC

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Structure et fonctionnement d'un ordinateur : hardware

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

LECTURE CRITIQUE. Accompagner les enseignants et formateurs dans la conception d une formation en ligne

ORACLE TUNING PACK 11G

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

TEXT MINING von 7

Cours 14 Les fichiers

Cours Bases de données

PC Check & Tuning 2010 Optimisez et accélérez rapidement et simplement les performances de votre PC!

Manuel d'utilisation français

Transcription:

0- Le langage C++ 1- Du langage C au langage C++ 2- Quelques éléments sur le langage 3- Organisation du cours Le présent cours constitue une introduction pour situer le langage C++, beaucoup des concepts qui y sont évoqués peuvent paraître difficiles ici : leur évocation reste très abstraite. Ils seront pour la plupart explicités au fil des différents cours. 1 Du langage C au langage C++ La transition du C au C++ a été continue. C++ n'est pas entièrement un nouveau langage à acquérir pour le programmeur C. Quasiment tout ce qui fonctionnait en C continue de fonctionner en C++. La lecture du C++ peut de fait être complexe : les syntaxes du C et du C++ coexistent. Le C++ par rapport au C : Améliorations par rapport au C Code C qui continue de fonctionner en C++ Librairies communes au C et au C++ C++ est orienté objet, C ne l'est pas C++ introduit les templates : il est possible de produire du code générique en s'abstrayant du type des données. C++ permet une gestion des erreurs efficace Le langage C++ a été écrit par Bjarne Stroustrup. Il fait aujourd'hui l'objet d'une normalisation ISO. Une version de la norme

peut être trouvée à : http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf http://www.open-std.org/jtc1/sc22/wg21/ Cette norme a été actualisée en 2003. Une nouvelle actualisation prévue pour 2009 a été renvoyée à 2010. 2 Quelques éléments sur le langage Langage compilé Contrairement aux langages interprétés pour lesquels les instructions sont directement transformées en actions exécutées par la machine, dans les langages compilés, il existe une étape intermédiaire dite compilation qui consiste en la création d'un fichier objet intermédiaire. Le compilateur, après avoir créé ce fichier objet utilise un éditeur de liens (linker) pour transformer le fichier objet en un programme exécutable. La compilation consiste donc dans le passage d'un fichier de code source (lisible par un éditeur de texte et compréhensible par un utilisateur averti) à un fichier objet (lisible uniquement par la machine) puis à un fichier exécutable (lisible uniquement par la machine). Il est possible de délivrer directement le fichier exécutable à une autre personne qui pourra l'utiliser sans avoir besoin du compilateur, sous réserve qu'elle utilise le fichier exécutable sur la plateforme pour laquelle le compilateur utilisé produit du code source (un compilateur compile du code pour une plateforme donnée : un compilateur sous Windows produit un exécutable pour Windows, les fichiers qu'il produit ne fonctionneront pas sous Linux et vice-versa). Langage objet La programmation procédurale a longtemps été la plus utilisée : elle consistait à séparer un programme en de multiples procédures/fonctions, chaque procédure étant une série d'opérations s'exécutant séquentiellement. Les données et le programme étaient séparés. On parle de programmation procédurale parce que l'élément central de cette démarche est la procédure. La programmation objet vise à éliminer la séparation entre les données et leurs traitements. A la notion de procédure, on substitue la notion d'objet. L'utilisation d'un langage objet va rendre plus lisible le code. Celui-ci consistera en la manipulation d'objets explicites, en l'appel d'opérations nommées explicitement sur ces objets. Les objets pourront être de tout type :

Des objets qui sont des représentations d'objets réels : "Facture", "Machine"... Des objets qui sont des éléments / interfaces vers des objets de la machine : "Flux sur fichier", "Fichier", "Repertoire", "Fenetre" etc... Des objets qui sont des collections d'objets. Des objets qui sont plus conceptuels : "Historique du cours" C++ et Java Le grand concurrent du langage C++ est le langage Java. Les deux sont les langages orientés objets les plus utilisés. Java a pour lui sa portabilité, C++ a pour lui la puissance. Dans le domaine de la finance, dans l'esprit duquel le présent cours est conçu, le langage C++ est largement plus utilisé et la littérature sur la programmation en finance concerne plus C++ que Java. En tout état de cause, les deux langages présentent des syntaxes proches et, pour celui qui apprend C++, l'apprentissage de Java ne présente pas de difficultés (l'inverse étant moins certain). Pour approfondir le débat entre les deux langages, on peut se reporter à l'article wikipedia sur le sujet. La pleine appréciation de cet article ne pourra en réalité se faire qu'à la fin de la lecture de ce cours : http://en.wikipedia.org/wiki/comparison_of_java_and_c%2b%2b Pourquoi C++? Pour évaluer un langage de programmation, on peut retenir les critères suivants : productivité : rapidité de la production du code, librairies pré-existantes (on pourrait rajouter la taille de la communauté qui pratique le langage et qui participe de sa documentation en ligne). efficience sécurité : ce critère doit s'entendre comme le fait que le code s'exécutera toujours de la manière attendue maintenance : il est relativement aisé de lire le code et donc de le modifier. En C++ : hausse de la productivité du fait notamment des librairies. Un des buts de C++ est de faciliter l'utilisation des librairies qui n'est pas évidente en C. C++ est intermédiaire entre des langages de haut niveau (COBOL par exemple) et des langages de bas niveaux (proches du fonctionnement de la machine), comme l'assembleur : il offre donc une forte capacité sémantique, permet d'optimiser le code, tout en restant compréhensible. Le langage supporte différents niveaux de

compétences : un utilisateur débutant peut profiter des fonctionnalités du C++, un utilisateur averti le pourra également en optimisant son code. Sans rentrer dans les autres aspects de la performance d'un langage, on peut noter que C++ se comporte bien sur les autres critères de performance d'un langage. Comme sa normalisation et son évolution se poursuivent, ses performances continuent par ailleurs d'évoluer favorablement. Enfin, l'utilisation de ce langage au sein de la communauté financière justifie que son apprentissage soit préféré à celui de tout autre langage, à l'exception notoire de VBA, utilisé non pas en raison de ses performances, mais d'une grande facilité d'utilisation et d'une grande souplesse syntaxique. 3 Organisation du cours Le cours se sépare en plusieurs parties. Dans une première partie, on développe approximativement tout ce qui est la partie C du C++ : les syntaxes, les instructions de contrôle, les fonctions etc... Sont également introduits les pointeurs et leur manipulation. A partir de cette première partie, il est possible de réaliser tout programmes standard qu'il est possible de concevoir en langage procédural. Cette première partie se veut une transition aisée vers le C++. La deuxième partie introduit l'objet en C++. Les concepts de la première partie permettent de passer sur une large part des difficultés. Est d'abord donnée une explication de la perspective de l'objet, puis les éléments sur les techniques d'implémentation, puis des informations sur les objets classiques de la librairie standard, ainsi que sur les démarches de programmation. La troisième partie concerne les techniques avancées en programmation objet. Sont introduites les notions d'héritages, est précisée la notion de polymorphisme. Sont également évoquées la programmation générique et la gestion d'erreurs. La quatrième partie traite de l'utilisation de C++ en finance, à grand renfort d'exemples et de codes sources. La cinquième partie concerne la réalisation d'interfaces graphiques à partir de C++. Jusqu'à ce point, la programmation aura consisté en des calculs dont les résultats (outputs) ou les données (input) sont donnés soit en ligne de commande, soit via des fichiers. A partir de ce cours, on pourra envisager la réalisation d'interfaces graphiques à l'appui des applications développées. Tous les éléments du cours ne sont pas au même niveau. Une partie des éléments qui sont fournis va au delà de la possibilité de faire du code qui fonctionne pour résoudre un problème particulier ou accomplir une tache, ils apportent des

éléments pour écrire un code performant. La notion de performance du code a deux dimensions : la performance de l'algorithme retenu et la performance dans les techniques de programmation qui sont utilisées. Dans le premier cas, il s'agit de concevoir un algorithme qui s'exécute plus vite, en prenant moins de temps et moins d'espace en mémoire. Il existe un nombre considérable de résultats sur la complexité des algorithmes pour produire de telles optimisations. Dans le second cas, il s'agit de concevoir d'écrire un code avec les meilleures techniques possibles, donc de retenir la technique la plus élégante, la plus efficace. A partir d'un problème identique, deux programmeurs différents pourront produire des codes différents. Par exemple, leurs modélisations en terme de classes seront différentes, les choix de programmation seront différents etc... Il existe un certain nombre de bonnes techniques de programmation, de bonnes conceptions du découpage en classes. Elles ne seront cependant pas abordées dans le cadre de ce cours qui se contentera ponctuellement de comparer telle ou telle démarche de programmation et d'expliquer l'intérêt qu'il y a eu à introduire de nouvelles formes dans le langage, d'introduire telle ou telle syntaxe.