Programmation en C++ Autres langages Marianne Morris 1 Plan du reste du semestre Chapitres 8, 9, 10 Réseaux et Intelligence Artificielle Devoir 4 est dû le mardi 28 novembre Labo final est le 30 novembre Examen final est le 5 décembre Tout ce qu’on a étudié (emphase sur la deuxième partie du cours après l’examen mi-session) Notes du cours Exemples en classe Exercices de labo 2 Chapitres 8 et 9 Programmation en C++ Révision de concept orienté objet Hiérarchie des classes orienté objet Exemple de fonctions et de programme orienté objet 3 Stockage virtuel de données Array Groupe une collection de cellules de mémoires pour stocker des données du même type 4 Figure 8.22 The Outline for a C++ Function 5 Utilisation des fonctions Fonctions « functions » Un module de code en C++ Nommée d’après les identificateurs en C++ Fonctions d’opérations: optionnelles Fonction main : obligatoire! 6 Programmation orientée objet La programmation par objet Object-Oriented Programming - OOP Paradigme de programmation Consiste en la définition et l'assemblage de briques logicielles appelées objets Objet Représente un concept, une idée ou une chose du monde réel, de l'entreprise ou celui des idées. Définition selon Wikipedia.org 7 Programmation orientée objet Héritage de type Mécanisme par lequel est raffiné un type père en un autre type, le sous-type Mécanisme de restrictions des espaces de valeurs du type Père Sous-type 8 Programmation orientée objet Rédéfinition Permet à un sous-type de raffiner l'implémentation d'un message défini dans le type père Overriding (en anglais) 9 Programmation orientée objet Polymorphisme Permet d'utiliser des objets de types différents là où est attendue une valeur d'un type précis, dès que ceux-ci satisfont le type requis Concept d’héritage – façon de réaliser le polymorphisme 10 Programmation orientée objet Encapsulation L'idée de cacher l'information contenue dans un objet et de ne proposer que des méthodes de manipulation de cet objet Permet à l'instance d'une classe d'accéder aux attributs d'une super-classe 11 Programmation orientée objet Hiérarchie des classes Forme Cercle Rectangle Triangle Carré Figure 8.31 (page 395) 12 Programmation orientée objet et fonctions en C++ Discussion de l’exemple 8.8.1: Figure 8.29 Pages 392 – 394 13 Programmation (autres langages) C/C++ Java SQL HTML JavaScript 14 Programmation en langage procédural C Développé au début des années 1970 aux labos AT & T Fait pour UNIX Utilisé pour les logiciels du système et les systèmes d’exploitation Utilisé pour des buts généraux 15 Programmation en langage procédural C Pourquoi est-ce C très populaire? Relation entre le langage C et UNIX C est très efficace C est proche du langage assembleur C contient une syntaxe de haut niveau La portabilité de C 16 C++ (langage orienté objet) Développé au début des années 1980 aux labos AT & T Un « superset » de C Langage à avantages industriels Standard Conception orientée objet Collection de librairies de code 17 Java Créé originairement pour le marché des électroniques Orienté objet (basé sur C++) Les programmes en Java sont: Applications: Un programme ordinaire Applet: Programme à interface fait pour les pages Web Compilé à bytecode et puis interprété 18 Langages à buts spéciaux Créés pour tâches spécifiques SQL HTML JavaScript 19 SQL Structured Query Language Pour les bases de données Stocker et accéder à des données On pose des questions aux bases de données: «query » SQL est le langage qu’on utilise pour faire des « query » 20 HTML HyperText Markup Language C’est le langage qu’on utilise pour écrire des documents HTML pour le Web Une page Web Un document HTML qu’on peut lire en utilisant un logiciel navigateur pour le Web Internet Explorer, Mozilla, FireFox 21 HTML Un document HTML Du texte avec des « tags » Tags sont des caractères spéciaux Format Effets spéciaux Références à d’autres documents HTML 22 Figure 9.4 HTML Code for a Web Page 23 Figure 9.5 Body of the Web Page Generated by Figure 9.4 24 Figure 9.6 Some HTML Tags 25 JavaScript Un langage pour écrire des scripts Interprété: traduit/exécuté ligne par ligne Les morceaux de code en JavaScript peuvent être implantés dans les pages Web pour rendre ces pages actives! 26 D’autres langages de programmation Il y a bien plusieurs d’autres langages Voir Figure 9.15 (page 463 dans votre manuel de cours) 27 Chapitre 10: Compilateurs et traduction de langages Le processus de compilation (quatre phases) Analyse lexicale Analyse grammaticale Sémantique et création de code Optimisation de code 28 Compilateurs et traduction de langages Compilateur Un logiciel qui traduit les langages de haut niveau en langage machine Traduction doit être correcte Le code en langage machine doit être efficace et concis 29 Figure 10.1 General Structure of a Compiler 30 Processus de compilation Phase I: Analyse lexicale Le compilateur examine les caractères individuelles dans le programme source et les groupe en unités syntactiques qui s’appellent « tokens » 31 Processus de compilation Phase II: Analyse grammaticale La vérification de la séquence d’unités syntactiques « tokens » formée par un scanner pour assurer qu’elle est correcte syntaxiquement 32 Processus de compilation Phase III: Analyse sémantique Le compilateur analyse le sens des instructions du langage évolué et les traduit en instructions de langage machine pour être exécutées 33 Processus de compilation Phase IV: Optimisation de code Le compilateur essaye de rendre plus efficace le code créé en phase III. 34 Figure 10.2 Overall Execution Sequence on a High-Level Language Program 35 Processus de compilation Étape finale Programme source Le programme objet est écrit à un fichier objet Programme originaire en langage évolué Programme objet Traduction du programme source en langage machine 36 • Example (Phase II: Parsing) – High-level language statement: a = b + c 37 Prochaine classe (le mardi 28 novembre) Réseaux Intelligence Artificielle 38