6. Polymorphisme, étude d'un exemple - Edouard Lopez

Cours ; exercices sur machine en TD ... synthèse vocale, agents animés (
Microsoft Agent) ... Pascal (un polycopié en ligne est disponible pour ceux qui ont
besoin d'une mise à niveau, avec cours et exercices corrigés). ..... anneedeces=
1978.

Part of the document


Licence SHS
Université Bordeaux 2
Support du cours ASD
Algorithmique et Structures
de Données avec Delphi
Jean Marc Salotti Résumé |Intitulé |ASD : Algorithmes et structures de |Langue : Français |
| |données, plateforme Delphi | |
|Crédits : 3 |Code : |Responsable : Jean Marc Salotti |
|Cours : 12 h |Heures/semaine : 1 |Total semaines : 12|Semestre : 5 |
|T D : 18 h |Heures/semaine : 1,5 |Total semaines : 12|Semestre : 5 |
|Pré requis |Introduction à la programmation, algorithmique de base |
|Contenu |Révisions sur Pascal et Delphi. Introduction au langage objet |
| |Delphi, à la programmation événementielle, aux composants |
| |graphiques de Delphi, utilisation des structures de données |
| |listes, piles, manipulation de fichiers textes .ini |
|Objectifs |Conception structurée de programmes avec Delphi |
|Méthode |Cours ; exercices sur machine en TD |
|Évaluation |examen écrit | Sommaire 1. Rappels sur le langage Pascal 6
1.1 Syntaxe générale 6
1.2 Types prédéfinis 6
1.3 Création de type 6
1.4 Instructions de base 6
1.5 Exercices de révision sur les boucles 7
2. Révision sur les booléens et les tableaux 9
2.1 Les booléens 9
2.2 Exercices sur les booléens 10
2.3 Exercices sur les tableaux 10
3. Fichiers textes génériques TInifile 12
3.1 Introduction 12
3.2 Organisation d'un fichier .ini 12
3.3 Utilisation d'un objet TInifile 12
3.4 Propriétés et méthodes des objets TInifile 12
3.4.1 Lecture dans un fichier .ini 13
3.4.2 Ecriture dans un fichier .ini 13
3.5 Exemple 13
4. Introduction au langage objet 15
4.1 Utilité des objets 15
4.2 Exemple 15
4.3 Classe TForm 16
4.4 Public / Private 16
4.5 Constructeur 17
4.6 Destructeur 17
4.7 Affectation 17
4.8 Héritage simple 17
4.9 Exercice 18
5. Héritage et polymorphisme 20
5.1 Surcharge 20
5.2 Méthode statique 20
5.3 Méthodes virtuelles 21
5.4 Méthode abstraite 21
5.5 Self 22
5.6 Opérateurs de classe 22
6. Polymorphisme, étude d'un exemple 23
6.1 Problème 23
6.2 Solution 23
6.3 Extension 25
7. Listes chaînées 26
7.1 Représentation 26
7.2 Gestion d'une liste chaînée 26
7.3 Liste chaînée dans un tableau 26
7.4 Tableaux dynamiques 27
7.5 TList 27
7.6 Exemple 28
7.7 Exercices 29
8. Piles 30
8.1 Représentation 30
8.2 Gestion d'une pile 30
8.3 Exemples de piles 30
8.4 Objets TStack 30
8.5 Méthodes de TStack 31
8.6 Exercice 31
9. Files 33
9.1 Représentation 33
9.2 Gestion d'une file 33
9.3 Exemple de file 33
9.4 Objets TQueue 34
9.5 Méthodes de TQueue 34
9.6 Exercice 34
10. Listes ordonnées 36
10.1 Concepts 36
10.2 Tri par insertion 36
10.3 Tri avec TList 37
10.4 Exemple 37
10.5 Exercice 37
11. Images 39
11.1 Structures de données 39
11.2 Algorithmes sur les images 39
12. Révision, synthèse 40
12.1 Exercices de synthèse 40
12.2 Bilan 40
ANNEXES : LISTE DES TD-TP 42
INTRODUCTION Pourquoi Delphi : - parce que le temps est révolu de "programmer dans un langage", on
développe des applications informatiques avec une "plateforme de
développement".
- parce que Delphi permet la programmation événementielle
- parce que le langage Pascal Objet est simple et pédagogiquement
acceptable
- parce que la programmation sous Delphi est très rapide
- parce que Delphi permet la conception d'interfaces professionnelles
- parce que Delphi est gratuit
- parce qu'il existe un grand nombre de programmeurs Delphi dans le monde
et que de nombreux composants sont proposés sur le web pour faire par
exemple de la reconnaissance vocale, pour récupérer l'image d'un scanner ou
d'une caméra, etc. Exemples d'applications présentées en cours et nécessitant très peu de code
:
- reconnaissance vocale
- synthèse vocale, agents animés (Microsoft Agent)
- live vidéo et capture d'image en utilisant une webcam Autres applications présentées en cours :
- traitement d'images
- synthèse d'images
- mouvements elliptiques de planètes et astéroïdes autour du soleil
- gestion d'arbre généalogique
- jeu de simulation de type Age of Empires : Marsbase Connaissances requises pour suivre le cours ASD :
Bases du langage Pascal (un polycopié en ligne est disponible pour ceux qui
ont besoin d'une mise à niveau, avec cours et exercices corrigés). Justification de la maîtrise d'une plateforme de développement :
Les logiciels du commerce ne font pas tout ce qu'on voudrait faire. Il est
donc nécessaire d'apprendre à créer soi-même les applications informatiques
qui relèvent du domaine des mathématiques appliquées aux sciences humaines
et sociales (SHS).
Dans le domaine de la recherche, on peut également noter l'application des
principaux concepts et méthodes utilisés dans les modèles de systèmes
complexes adaptatifs proposés en sciences humaines et sociales (travaux des
sociologues, politologues, historiens, ou des économistes Axelrod, Bowles
et Gintis, Epstein et Axtell, Schelling). Ils portent sur l'émergence de la
communication et du langage, de la coopération, la sélection des normes et
l'émergence des institutions, l'étude de systèmes économiques, en
particulier des marchés
et réseaux de production et d'échange, ou encore sur l'organisation sociale
de l'espace.
Parmi les concepts et méthodes développés dans ce domaine de recherche
figurent les notions d'émergence, d'attracteurs, de lois d'échelle, de
régime dynamique, et de transition, de percolation, d'apprentissage, de
jeux évolutionnaires etc., dont la modélisation nécessite souvent le
développement d'applications informatiques dédiées. Rappels sur le langage Pascal
1 Syntaxe générale Pas de différenciation minuscule / majuscule,
Les commentaires commencent par /* et finissent par */ ou commencent par (*
et par *)
Sur une ligne, ce qui est après // est considéré comme commentaires.
L'espace et le retour à la ligne sont des séparateurs. Il faut au moins 1
séparateur entre chaque mot-clé ou variable. 2 Types prédéfinis Il existe 5 grands types de base :
integer, real, boolean = {true, false}, char, string
En cas de nécessité, les entiers et les réels peuvent toutefois se décliner
en :
byte, longint, currency et double
La déclaration d'un tableau statique se fait de la façon suivante :
array[indice1..indice2] of nom_de_type 3 Création de type La création d'un nouveau type est précédée du mot-clé "type".
Exemples :
type ttab = array[1..100] of real;
entier = integer;
La déclaration d'une structure composée nécessite le mot clé record et se
termine par end;
Exemple : rpoint = record x,y : real; end; 4 Instructions de base Remarques préliminaires :
Dans les descriptions ci-dessous, une expression est une formule
mathématique quelconque (par exemple 3*x+1 ou sin(4)) qui aura une valeur à
l'exécution du programme, alors qu'une instruction est une opération qui
exploite des expressions et éventuellement d'autres instructions mais qui
n'a aucune valeur à l'exécution. . Instruction d'affectation :
nom_de_variable := expression // La variable prend la valeur de
l'expression . Instruction conditionnelle :
if expression booléenne then instruction1 else instruction2 //
Jamais de ; avant else
Le else est optionnel. Si plusieurs if then else sont imbriqués et qu'il y
a ambiguïté, le else se rapporte toujours au then le plus proche qui le
précède. . Instruction "tant que" :
while expression booléenne do instruction
Tant que l'expression booléenne est évaluée à true l'instruction après do
est répétée. . Instruction composée :
begin instruction1; instruction2; instruction3; ... end; . Instruction "répéter jusqu'à" :
repeat instruction until expression booléenne . Instruction d'itération "pour" :
for nom_variable := expression1 to expression2 do instruction //
variable non réelle
est équivalent à :
nom_de_variable := expression1;
while nom_de_variable