Programmation en C++ Autres langages Marianne Morris
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
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
Stockage virtuel de données Array Groupe une collection de cellules de mémoires pour stocker des données du même type
The Outline for a C++ Function Figure 8.22 The Outline for a C++ Function
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!
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
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
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)
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
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
Programmation orientée objet Hiérarchie des classes Forme Triangle Cercle Rectangle Carré Figure 8.31 (page 395)
Programmation orientée objet et fonctions en C++ Discussion de l’exemple 8.8.1: Figure 8.29 Pages 392 – 394
Programmation (autres langages) C/C++ Java SQL HTML JavaScript
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
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
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
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é
Langages à buts spéciaux Créés pour tâches spécifiques SQL HTML JavaScript
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 »
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
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
Figure 9.4 HTML Code for a Web Page
Body of the Web Page Generated by Figure 9.4
Figure 9.6 Some HTML Tags
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!
D’autres langages de programmation Il y a bien plusieurs d’autres langages Voir Figure 9.15 (page 463 dans votre manuel de cours)
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
Compilateurs et traduction de langages 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
General Structure of a Compiler Figure 10.1 General Structure of a Compiler
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 »
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
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
Processus de compilation Phase IV: Optimisation de code Le compilateur essaye de rendre plus efficace le code créé en phase III.
Overall Execution Sequence on a High-Level Language Program Figure 10.2 Overall Execution Sequence on a High-Level Language Program
Processus de compilation Étape finale Le programme objet est écrit à un fichier objet Programme source Programme originaire en langage évolué Programme objet Traduction du programme source en langage machine
Example (Phase II: Parsing) High-level language statement: a = b + c
Prochaine classe (le mardi 28 novembre) Réseaux Intelligence Artificielle