Cours informatiques de programmation
L’objectif de ces cours est d’apprendre à programmer avec les deux langages de programmation:Python
et Delphi Pascal
Pour chaque cours vous trouverez une liste d’objectifs à atteindre aussi bien au niveau du savoir que du
savoir faire.
Les principaux cours de programmation ainsi que leur objectif correspondant ci-dessous:
Programmation Python
Eléments de programmation en langage Python
Savoir
1. Expliquer le rôle des différents niveaux de langages informatiques, depuis le binaire jusqu’aux
langages de haut niveau
2. Expliquer l’intérêt des langages de haut niveau
3. Expliquer la différence de fonctionnement entre un compilateur et un interpréteur
4. Citer les avantages et les inconvénients des interpréteurs par rapport aux compilateurs
5. Citer, en donnant des exemples, les différents types de données évoquées dans ce cours en
langage Python
6. Donner les règles pour les noms des variables en Python
7. Décrire la méthode de travail pour résoudre un problème en informatique
Savoir faire
1. Démarrer et arrêter l’interpréteur Python
2. Utiliser des valeurs entières et des valeurs flottantes
3. Réaliser des calculs à l’aide de l’interpréteur Python
4. Exécuter des commandes dans l’interpréteur Python
5. Utiliser une méthode de travail rigoureuse pour résoudre des problèmes de programmation
6. Ecrire et exécuter des programmes Python en utilisant la fonction input()
7. Rendre un programme Python exécutable
L’alternative en langage Python
Savoir
1. Schématiser la méthode de résolution d’un problème en informatique.
2. Citer, dans l’ordre, les étapes de la résolution d’un problème en informatique
3. Citer les symboles des comparaisons utilisés en langage Python
4. Justifier la notion de bibliothèque en informatique
Savoir faire
1. Utiliser les opérateurs "/" et "%"
2. Déterminer si un nombre est pair ou impair
3. Décrire une situation d’alternative dans le formalisme si...alors...sinon et graphiquement (arbre
binaire)
4. Décrire une situation d’alternative simple ou composée en Python
5. Décrire une situation d’alternative à une branche en Python
6. Décrire une situation d’alternative complexe dans le formalise si...alors...sinon et graphiquement
(arbre binaire)
7. Transposer la description de l’alternative complexe en langage Python
8. Utiliser les bibliothèques math, random et turtle du langage Python
Programmation Delphi Pascal
Eléments de programmation en langage Pascal Delphi
Savoir
1. Citer et commenter les deux types d’informations que peut traiter un ordinateur ;
2. Expliquer la structure d’une application Delphi en montrant le rôle de chacun des fichiers qui la
constituent ;
3. Expliquer la nature du travail à réaliser avec Delphi : réalisation d’interfaces utilisateur et du
code Pascal.
4. Expliquer la nécessité des langages d’ordinateur, à mi-chemin entre le langage machine et le
langage humain ;
5. Expliquer le rôle de l’éditeur de textes, du compilateur et de l’interpréteur dans le cadre de la
programmation des ordinateurs ;
6. Situer les différents éléments de l’interface du programme Delphi ;
7. Expliquer la notion d’objet dans le cadre de la programmation et montrer comment des " objets "
de la vie courante ressemblent à des " objets " de la programmation ;
8. Illustrer la notion d’" événement " dans le cadre de la programmation par objets ;
Savoir faire
1. Enregistrer un projet Delphi avec la (ou les) fiche(s) qu’il utilise ;
2. Compiler et exécuter un programme Delphi ;
3. Visualiser et modifier les propriétés d’un objet à l’aide de l’inspecteur d’objets de Delphi ;
4. Modifier la valeur d’une propriété lors de l’exécution d’un programme Delphi et en réponse à un
événement.
Cours informatique
Eléments de programmation en Python
Objectif
1. Plan du cours
2. Auteur CC Pages : | 1 | 2 | 3 | 4 | 5 | 6| 7 | 8 |
1. Le langage et l'interpréteur Python
Cette partie du cours aura pour but de nous familiariser avec les
concepts principaux de la programmation des ordinateurs.
Nous y apprendrons les rudiments de la programmation dans le cadre
du langage Python.
Ce que nous aurons acquis en programmation Python pourra ensuite
être réinvesti dans la programmation en d'autres langages.
Ce cours sera largement basé sur l'ouvrage de G. Swinnen, Apprendre
à programmer avec Python. Ce livre est disponible dans le commerce
et peut aussi être téléchargé gratuitement et légalement.
Pourquoi ce langage s'appelle-t-il Python?
Ce langage a été conçu par Guido van Rossum, fan inconditionnel des
Monty Python. D'où le nom.
Comment disposer du langage Python sur son
ordinateur?
Les compilateurs du langage Python sont disponibles pour Linux/Unix,
Mac OS/X ou Windows. Le langage Python est distribué sans frais sous
licence "Open Source". On peut donc télécharger le compilateur
Python gratuitement.
Il figure souvent par défaut dans les modules installés dans les
distributions Linux les plus classiques (Ubuntu, Fedora,...). Il est facile
à installer sous Windows.
Que peut-on faire avec le langage Python?
Il n'existe aucune limite connue à ce qu'il est possible de réaliser à
l'aide du langage Python.
Il peut servir à apprendre la programmation ou à réaliser des
applications très complexes et très puissantes, dans tous les
domaines.
Comment démarrer l'interpréteur Python sous Linux?
Pour démarrer l'interpréteur Python, il est nécessaire d'ouvrir une
fenêtre de
Sous Linux, la commande d'ouverture d'un terminal se trouve souvent
dans le menu Accessoires ou dans le menu Outils système.
Ouvre une fenêtre de terminal.
Dans le terminal, frappe la commande python.
Ferme l'interpréteur Python en frappant CTRL + D au clavier.
Quand tu es assuré(e) de disposer du langage Python sur ton
ordinateur, passe à la page suivante.
2. Les programmes informatiques: de la
machine à l'humain
Les langages d'ordinateurs
Un programme informatique est une liste d'instruction destinée à
un ordinateur et dont le but est d'accomplir une tâche donnée.
Bah, dans ce cours, il y a aussi plein de listes d'instructions.
Chaque fois qu'il y a le logo , on a droit à une liste
d'instructions. Et ce ne sont pas des programmes, que je sache.
Et pourtant, en quelques sortes, on pourrait dire qu'il s'agit de
programmes. A la différence que ceux-ci sont rédigés en français et
destinés à des humains.
L'ordinateur est donc capable d'exécuter ces instructions à ma
place? Bonne nouvelle! Enfin un peu de repos.
Malheureusement, il y a un petit détail qui bloque tout: l'ordinateur
est incapable de comprendre une liste d'instructions rédigées en
français courant.
Puisque les ordinateurs ne comprennent pas des listes d'instructions
en français, voyons comment on peut se faire comprendre d'eux.
Le problème est un peu technique.
Le langage machine
Les seules informations que puisse stocker un ordinateur sont
des séries de 0 et de 1. Les données qu'il peut traiter doivent
donc être codées sous cette forme.
De même, les instructions destinées aux
ordinateurs sont formées d'ensembles de 0 et de 1, compréhensibles
par le processeur. Un programme d'ordinateur se présente donc
comme sur l'illustration ci-dessous :
00110110 11010101 10100011 00111001 10011000
00100101 01011010 01110110 11011010 10110111
Dans cette illustration, chaque groupe de 8 bits correspond
à une instruction (copier, additionner, déplacer,... une donnée)
ou
à une donnée
On ne peut, bien sûr, donner que des instructions connues de
l'ordinateur. Pour programmer, il faut donc savoir quelle série de bits
correspond à quelle instruction. Ensuite, il faut être capable d'utiliser
toutes ces instructions simples pour réaliser des tâches complexes.
Si je comprends bien, programmer, c'est apprendre à faire des
choses très complexes à un idiot de première catégorie?
Ce n'est pas tout à fait faux. C'est un exercice dans lequel il faut
être intelligent à la place de l'ordinateur.
Les premiers ordinateurs se programmaient dans ce langage : le
langage binaire encore appelé langage machine.
L'assembleur et les langages de haut niveau
On a vite trouvé qu'il serait plus facile
d'écrire les programmes dans des langages plus simples à
comprendre pour l'être humain.
L'assembleur
Le premier langage inventé fut l'assembleur qui permet de
représenter les instructions connues du processeur par des mots très
courts (add, mov,...). L'avantage est qu'il ne faut plus connaître les
instructions du processeur en termes de 0 et de 1.
Ah oui, superbe idée! Mais, en attendant, l'ordinateur attend
toujours sa pâtée de 0 et de 1. Et rien d'autre. Ou alors, je n'ai rien
compris à ce qui est indiqué un peu plus haut.
C'est bien correct, l'ordinateur attend bien des 0 et des 1. Et rien
d'autre.
On va donc embaucher un traducteur. Et le traducteur sera
simplement... un ordinateur.
Dans ce processus, l'ordinateur est muni d'un programme appelé
compilateur dont le but est de traduire les instructions écrites en
assembleur vers le langage machine composé de 0 et de 1.
Quand la traduction est terminée, le code binaire obtenu peut
éventuellement être enregistré, confié à un autre ordinateur et
exécuté.
On ne peut qu'apprécier le progrès. Mais, pour ma part, je trouve
que cela ressemble fort à du martien, ce code "assembleur". Je me
demande si je ne vais pas étudier la philosophie plutôt que la
programmation...
La philosophie est une belle discipline. Mais les progrès ne se sont
pas arrêtés au langage assembleur. Il existe des langages "de haut
niveau" qui sont un peu plus proches du langage humain.
Les langages de haut niveau
Dans les langages de haut niveau, on permet au programmeur de
donner des instructions qui sont plus complexes que celles du langage
machine. Du type "calcule la racine cubique du nombre qui se trouve
dans telle case de la mémoire".
A nouveau, il faut disposer d'un programme capable de transformer
ces instructions "complexes" en code binaire, compréhensible par
l'ordinateur.
L'avantage des langages de haut niveau pour le programmeur
est que le texte des programmes est plus facile à comprendre.
En contre-partie, il est nécessaire qu'un ordinateur intervienne
pour les traduire en langage machine.
Quelques exemples
Un programme qui écrit « Salut tout le monde » à l'écran
En langage C
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("Salut tout le monde!\n");
return EXIT_SUCCESS;
}
En langage Pascal
Program salut ;
Begin
Writeln ('Salut tout le monde') ;
End.
En langage Python
#! /usr/bin/python
print "Salut tout le monde"
D'autres exemples de langages informatique sont illustrés dans
l'encyclopédie Wikipedia. Vérifie, pour quelques langages, qu'il s'agit
bien d'un moyen terme entre le langage humain et un langage de
machine (vois les rubriques Smalltalk, Perl, C++, Cobol,...).
Un ordinateur qui sort de la chaîne de fabrication comprend
Uniquement l'anglais
Uniquement les langages informatique de haut niveau
Uniquement le code binaire
Uniquement l'assembleur
Le programme qui permet à un ordinateur de traduire un
langage de haut niveau en code binaire est
Un assembleur
Un interpréteur ou un compilateur
Un traitement de textes
L'avantage des langages informatiques de haut niveau est que
On n'a plus besoin de connaître le langage machine pour
composer un programme
On n'a plus besoin d'ordinateur pour exécuter les programmes
Il suffit, grâce à eux, d'écrire des programmes en code binaire
Il n'y a aucun avantage
La traduction des programmes écrits en langage de haut
niveau vers le code binaire est réalisée par
Personne: il n'y a aucune traduction à réaliser
Des employés spécialisés dans les firmes de développement de
logiciels
Un ordinateur muni d'un programme spécialisé
Le premier ordinateur venu
Les langages informatiques de haut niveau sont utilisés pour
simplifier le travail des programmeurs
simplifier le travail des ordinateurs
rendre compréhensible le travail des ordinateurs
Le langage directement compréhensible par les ordinateurs
est :
le code binaire
les langages de haut niveau comme Pascal ou Basic
l'assembleur
Quand tu as répondu à toutes les questions et bien compris les
réponses, passe à la page suivante.
3. La traduction en langage machine
Notion de "code source"
Lorsque l'on dispose d'un programme exécutable par un ordinateur,
on dispose de la traduction en binaire du programme rédigé en
langage de haut niveau.
Le texte du programme en langage de haut niveau est appelé
"code source".
Un logiciel "Open Source" est un programme pour lequel on dispose
du code source.
Un logiciel "fermé" est un programme qui est la propriété d'une
personne ou d'une société qui ne souhaite pas diffuser le code source.
Il est extrêmement difficile de reconstituer le code source à partir du
code binaire. Si l'on souhaite pouvoir réaliser des modifications au
programme, il est presque indispensable de disposer du code source.
Si l'on dispose du code source d'un programme, il est toujours
possible d'étudier son fonctionnement et de le modifier en cas de
besoin.
Le compilateur
Le code source d'un programme doit être traduits en langage
machine. Ce travail est réalisé par un programme spécialisé appelé
compilateur.
Le compilateur examine les
instructions écrites par le programmeur et les transforme en langage
binaire, compréhensible par le processeur.
Il existe un grand nombre de compilateurs. Chacun est spécialisé dans
le traitement de l'un ou l'autre langage évolué.
Un texte écrit dans un langage doit être compilé à l'aide d'un
compilateur approprié à ce langage précis.
Un texte écrit en langage C doit être compilé par un compilateur C.
Les interpréteurs
Dans certains langages, le code source n'est pas préalablement
traduit en langage machine par un compilateur.
Dans ce cas, la transformation en langage machine se fait au
moment de l'exécution du programme : un interpréteur traduit le
programme, ligne par ligne.
Le langage Python est un langage interprété.
Comme pour les langages compilés, il est nécessaire de disposer d'un
interpréteur approprié pour chaque langage utilisé. Un programme
écrit en langage Python doit être traité par un interpréteur Python.
Quand une ligne du programme doit être exécutée un grand nombre
de fois, l'interpréteur la traduit autant de fois qu'elle est exécutée. Il
en résulte une perte de temps et donc une moins grande rapidité des
programmes en langage interprété par rapport aux langages
compilés.
Par contre, il est plus rapide d'exécuter quelques lignes de
programme afin de les tester dans un langage interprété.
Le rôle du compilateur est de:
transformer le langage évolué en code binaire
écrire le texte des programmes d'ordinateurs
traduire le code binaire en langage compréhensible
Un programme complexe qui doit s'exécuter très rapidement
sera plutôt écrit
dans un langage compilé
Dans un langage interprété
Indifféremment dans un langage compilé ou interprété
Si l'on souhaite pouvoir disposer du code source d'un
programme, il vaut mieux choisir un logiciel écrit
Dans un langage compilé
Dans un langage interprété
Indifféremment dans un langage compilé ou interprété
Un programme binaire est obtenu suite au travail
D'un compilateur
D'un interpréteur
Indifféremment dans un langage compilé ou interprété
La différence entre un interpréteur et un compilateur est que:
Le compilateur est spécialisé dans un langage alors qu'un
interpréteur peut traiter tous les langages évolués
L'interpréteur traduit une ligne de code à la fois, cependant que le
compilateur traduit tout le programme en une fois
Le compilateur traduit une ligne de code à la fois, cependant que
l'interpréteur traduit tout le programme en une fois
Il n'y a pas de différence entre un compilateur et un interpréteur
Quand tu as répondu à toutes les questions et bien compris les
réponses, passe à la page suivante.
4. Types de données en Python
Les programmes informatiques traitent des données de différents
types. Voyons ce que cela signifie.
Le type "chaîne de caractères" (string)
Assure-toi que l'interpréteur Python est actif
En veillant bien à entourer la phrase par des guillemets, frappe
la commande
>>> print "Bonjour tout le monde"
En veillant à ne pas mettre les guillemets, frappe ensuite la
commande
>>> print Bonjour tout le monde
Note la différence de comportement
En veillant bien à entourer la phrase par des guillemets, frappe
la commande
>>> print "oP78 %@__98[##"
Ouaahh, puissant!! Et il faut vraiment un ordinateur pour faire ça?
L'intérêt de l'ordinateur est plutôt minime. L'expérience nous
permet toutefois de tirer une leçon.
Lorsque l'on souhaite faire écrire une suite de caractères en
langage Python (même si cette suite n'a aucun sens pour nous), les
caractères doivent être entourés de guillemets.
Nous venons ainsi de faire la connaissance d'un premier type de
données appelé "chaîne de caractères".
En informatique, on désigne souvent les "chaînes de caractères" par
le nom "string" (qui signifie "chaîne", en anglais).
Le type "entier" (int)
L'interpréteur Python est toujours actif
En veillant bien à entourer la phrase par des guillemets, frappe
la commande
>>> print "5+3"
En veillant à ne pas mettre les guillemets, frappe ensuite la
commande
>>> print 5+3
Note la différence de comportement
Effectue ensuite quelques autres additions, soustractions et
multiplications (opérateur *)
Dans le premier cas, l'ordinateur écrit la suite de caractères
"5", le signe + et "3". Il s'agit bien d'une chaîne.
Quand l'écriture n'est pas entourée de guillemets, l'ordinateur
écrit le résultat du calcul
Toujours sans guillemets, frappe la commande
>>> print 4 / 2
Frappe ensuite les commandes
>>> print 5 / 2
>>> print 14 / 4
>>> print 31 / 9
Pouaaah!! Ridicule. On a trouvé le premier ordinateur incapable de
calculer correctement. Le voilà bon pour la casse, le pauvre.
Contrairement à ce que l'on pourrait croire, les résultats des
opérations précédentes sont parfaitement corrects. Simplement,
l'ordinateur calcule en nombre entiers, comme vous le faisiez au
début de l'école primaire.
>>> print 5/2
2
Le résultat est 2 et il reste 1 (ce que l'ordinateur ne dit pas puisque
nous ne l'avons pas demandé)
>>> print 14/4
3
Les résultat est bien 3 et il reste 2
>>> print 31/9
3
Le résultat est 3 et il reste 4
En informatique, le type "entier" est encore appelé "integer" ou
"int" (en anglais).
Bon, d'accord, tout ça est bien gentil. Mais on n'ira jamais sur la
lune avec un ordinateur qui ne connaît que les nombres entiers.
Pas de panique: il peut aussi traiter les nombres réels.
Le type "réel" (float)
En n'omettant pas d'indiquer un point à la place de la virgule,
frappe les commandes
>>> print 5.7 / 3
>>> print 31/9.0
>>> print 1E3 / 20
>>> print 882.567E15 / 20
Note les résultats
Pour que l'interpréteur Python travaille dans l'ensemble des réels,
il suffit que l'un des termes de l'opération à effectuer:
contienne un "point" décimal (équivalent de la virgule utlisée
en français)
le signe "E" qui signifie "x 10 exposant" (comme sur les
calculatrices scientifiques)
En informatique, le type "réel" est encore appelé "flottant" ou "float"
(en anglais).
Flottant? J'aimerais bien savoir ce qui flotte là-dedans, moi.
Tout simple: c'est la virgule qui flotte.
Exemple: 6482 est noté 6.482 E 3
Si ce nombre est divisé par 10000, il devient 6.482 E -1
En fait, l'exposant de 10 utilisé indique de combien de rangs il faut
déplacer la virgule pour obtenir le nombre, en notation plus
traditionnelles. Cet exposant sert donc bien à faire "flotter" la virgule.
Dans la mémoire de l'ordinateur, ce type de nombre est représenté
comme en notation scientifique:
un seul chiffre devant la virgule suivi d'un certain nombre
de décimales
l'exposant de 10 nécessaire pour obtenir la valeur correcte
du nombre
Remarque: le reste de la division entière
Appliqué aux nombres entier, l'opérateur "/" permet de calculer le
résultat de la division entière de deux nombres.
L'opérateur "%" permet de calculer le reste de la division entière.
Frappe les commandes
>>> print 5 / 3
>>> print 5 % 3
>>> print 20 / 7
>>> print 20 % 7
Note les résultats
Quand tu as bien noté les caractéristiques des trois types de données
décrits ci-dessus, passe à la page suivante.
5. Utilisation des variables
En informatique, les variables sont des zones de la mémoire centrale
dans lesquelles sont notées la valeur de certaines données.
Frappe les commandes suivantes
>>> toto = 7
>>> print "schtroumpf"
>>> schtroumpf = "Bonjour le monde"
>>> print "toto"
>>> print toto
>>> print schtroumpf
Note les résultats
Dès qu'ils ont été utilisés, les noms "toto" et "schtroumpf" ont
servi à désigner des zones de la mémoire centrale de l'ordinateur où
des données sont stockées. On les appelle des variables
Le contenu d'une variable est indiqué dans l'expression d'affectation
nom_de_variable = valeur
Frappe les commandes suivantes
>>> hauteur = 10
>>> largeur = 20
>>> perimetre = (hauteur + largeur) * 2
>>> print hauteur * largeur
>>> print perimetre
Les instructions ci-dessus permettent bien de calculer la surface et le
périmètre d'un rectangle
Le contenu d'une variable peut être utilisé dans un calcul.
Noms des variables
Sous Python, les noms de variables doivent en outre obéir à quelques
règles simples :
Un nom de variable est une suite de lettres et/ou de chiffres, et
doit toujours commencer par une lettre.
Les lettres accentuées, les cédilles, les espaces, les caractères
spéciaux tels que $, #, @, etc. sont interdits, à l'exception du
caractère _ (souligné).
Les caractères majuscules et minuscules sont distincts
Exercices
En utilisant le même type de procédé que dans les calculs du
rectangle ci-dessus, réalise les calculs suivants. Soumets chacun de
tes calculs au professeur avant de passer au suivant.
Calcule le volume et la surface d'un parallélépipède rectangle
dont on fournit les trois dimensions.
Calcule la circonférence et la surface d'un disque dont on
fournit le rayon. La valeur de pi est approximée à 3.1416.
Calcule le montant de la TVA (21%) et le prix net d'un article
dont on fournit le prix hors TVA.
Calcule la vitesse d'un mobile en mouvement rectiligne
uniforme si l'on fournit la distance parcourue et le temps
correspondant.
Quand tu as réalisé les exercices en utilisant des variables, passe à la
page suivante.
6. De vrais programmes
Jusqu'à ce point, nous avons écrit des suites d'instructions dont nous
avons observé l'exécution immédiate.
Nous allons maintenant passer à de vrais programmes dont le code
source pourra être exécuté ultérieurement et le nombre de fois que
nous voulons.
En cas de problème, nous allons pouvoir le corriger ou l'améliorer.
Ouvre un simple
éditeur de textes. Attention, un logiciel de traitement de textes
ne conviendra pas.
Dans l'éditeur, frappe le texte suivant, en prenant garde de ne
pas utiliser de caractères accentués:
longueur = 10
largeur = 20
surface = longueur * largeur
perimetre = 2 * (longueur + largeur)
print "SURFACE = ", surface
print "PERIMETRE = ", perimetre
Enregistre le document sous le nom exercice1.py à la
racine de ton répertoire personnel (pas dans un sous-répertoire
pour l'instant).
S'il est encore ouvert, ferme l'interpréteur Python (CTRL + D)
ou ouvre une nouvelle fenêtre de terminal.
Dans la fenêtre de terminal, frappe la commande
~$ python exercice1.py
Vérifie que l'effet obtenu est identique à celui obtenu lors de
l'exécution instruction par instruction.
En cas de problème pendant l'exécution d'un programme, il suffit de
suivre les indications données par l'interpréteur pour tenter de
localiser la faute et pour la corriger.
Exemple:
toto@info17:~$ python exercice1.py
Traceback (most recent call last):
File "exercice1.py", line 4, in <module>
surface = longueurs * largeur
NameError: name 'longueurs' is not defined
Le programme signale une probable faute de frappe à la ligne 4: le
nom da la variable longueur a été écrite longueurs.
Méthode de travail pour
programmer
La programmation est une discipline très rigoureuse qui demande
beaucoup de soin et de précision. Pour être efficace, il est
indispensable de se donner une bonne méthode de travail.
1. Chercher toutes les données du problème à résoudre
2. Chercher tous les résultats qui sont attendus
3. Définir la méthode qui permet de passer des données aux
résultats
Exemple
Quelle masse de chocolat est nécessaire pour couvrir entièrement un
cake de forme parallélépipédique?
1. Données du problème: la surface du cake, l'épaisseur de la
couche de chocolat, la masse volumique du chocolat
2. Résultat attendu: la masse de chocolat
3. Méthode:
o calculer le volume de chocolat = surface * épaisseur
o calculer la masse de chocolat = volume * masse
volumique
On peut ensuite passer à la rédaction du programme dont la structure
est présentée ci-contre.
Ouups, excusez-moi: vous n'auriez pas interverti les points 2 et 3 ?
Il y a inversion par rapport au schéma précédent...
Pas du tout: il n'y a pas d'inversion. D'abord, on rassemble les
données du problème; ensuite, on s'interroge sur la nature des
informations attendues; finalement, on détermine la méthode pour
aller des données aux résultats.
Il est impossible de déterminer un chemin (le point 3) sans savoir d'où
l'on vient et où l'on va!!
Le premier schéma décrit le processus qui se déroule dans
l'ordinateur. Le deuxième décrit la méthode de réflexion qui permet
d'écrire le programme d'ordinateur.
Reprends chacun des exercices de la page 5 et présente-les
sous forme de vrais programmes.
Enregistre-les dans les fichiers nommés parallelepipede.py ,
disque.py , TVA.py et MRU.py .
Modifie les valeurs des données de chacun des problèmes et
exécute chacun des programmes avec ces nouvelles données.
Soumets ton travail au professeur.
Quand tes programmes ont été approuvés, passe à la page suivante.
7. La fonction input ()
Tout à fait entre nous, je ne trouve quand même pas terrible l'idée
de devoir modifier le texte d'un programme quand je dois modifier les
données.
Voilà qui justifie parfaitement l'introduction de cette petite fonction
simple mais bien utile: input ().
Recopie le texte du programme suivant dans l'éditeur de
textes:
longueur = input ("Quelle est la longueur? ")
largeur = input ("Quelle est la largeur? ")
surface = longueur * largeur
perimetre = 2 * (longueur + largeur)
print "SURFACE = ", surface
print "PERIMETRE = ", perimetre
Enregistre le document sous le nom input.py .
Exécute le programme.
La fonction input() demande un argument (qui peut être vide) qui est
de type chaîne de caractère.
Elle attend que l'utilisateur frappe quelque chose au clavier.
Elle renvoie une valeur de type correspondant à ce qui a été frappé au
clavier.
En utilisant la fonction input(), revois chacun des
programmes précédents (parallelepipede.py , disque.py ,
TVA.py et MRU.py ) afin de le rendre interactif.
Résous chacun des exercices suivants:
1. On peut calculer la masse idéale d'une personne adulte de la
manière suivante :
Pour une femme : M.I. = (taille en cm - 100) -
Pour un homme : M.I. = (taille en cm - 100) -
On te demande d'écrire un programme qui détermine la masse idéale
pour une personne de sexe féminin et de sexe masculin étant donné
une taille qui doit être fournie.
Enregistre le programme dans un fichier nommé BMI.py
2. Une entreprise européenne réalise des affaires avec des
partenaires anglais et américains. Afin de convertir ses prix en dollars
et en livres sterling, elle souhaite disposer d'un programme
convertisseur. Etablis ce programme. Cherche le cours du dollar et de
la livre.
Enregistre le programme dans un fichier nommé conversion.py
3. L'organisateur d'une course automobile sur circuit fermé d'une
longueur de 4,6 km souhaite tenir les spectateurs régulièrement
informés des performances réalisées par les différents concurrents. A
cet effet, il pose le problème suivant : Etant donné le temps mis par
un concurrent pour effectuer un tour du circuit (temps détaillé en
minutes, secondes et centièmes de secondes), il souhaite connaître
instantanément la vitesse (exprimée en km/h) à laquelle le concurrent
a parcouru un tour du circuit.
Enregistre le programme dans un fichier nommé automobile.py
Quand tes programmes sont approuvés par le professeur, passe à la
page suivante.
8. Mais où est donc Python
Pour lancer un programme écrit en Python, nous avons pris l'habitude de
frapper une commande du type
~$ python programme.py
Mais les programmes, même écrits en Python, se lancent généralement
plus simplement: on indique simplement le nom du fichier qui contient le
programme:
~$ programme.py
ou même plus simplement
~$ programme
Comment cela est-il possible?
Ouvre l'un des programmes Python écrits précédemment; prenons
input.py.
Ouvre la première ligne et indiques-y la notation suivante:
#! /usr/bin/python
Le programme devient donc:
#! /usr/bin/python
longueur = input ("Quelle est la longueur? ")
largeur = input ("Quelle est la largeur? ")
.....
Très joli. Vous avez emprunté ça au catalogue d'insultes du capitaine
Haddock ?
Il est vrai que la notation peut paraître curieuse. Cela demande
quelques explications.
Sous Linux, la commande qui lance l'interpréteur Python se trouve dans
le répertoire /usr/bin .
La directive contient, en fait, le chemin vers l'interpréteur.
Sous Linux, la commande qui lance l'interpréteur Python se trouve dans
le répertoire /usr/bin .
La directive contient, en fait, le chemin vers l'interpréteur.
Dans une console Linux, frappe la commande
~$ /usr/bin/python
L'interpréteur Python démarre.
Les signes #! placés en tête de la ligne
#! /usr/bin/python
indiquent qu'il s'agit d'une directive qu'il faut traiter séparément des
instructions. Ce n'est pas du code Python.
Lorsque la directive figure en tête d'un programme, l'interpréteur de
commandes est averti qu'il doit démarrer l'interpréteur Python situé à
l'adresse /usr/bin pour pouvoir exécuter les instructions qui suivent.
Vérifie que la directive #! /usr/bin/python figure en première
ligne du programme.
Enregistre le texte du programme et quitte l'éditeur de textes.
Dans la console, frappe la commande:
~$ input.py
Observe le résultat
toto@info17:~$ input.py
bash: input.py : commande introuvable
Ouaah, ça marche du tonnerre votre truc. Je crois qu'un peu de repos
vous fera du bien.
Bah non, tout était prévu. Tirons les conclusions.
Lorsqu'un programme est lancé dans une console, l'interpréteur
de commande cherche cette commande dans un certain nombre
de répertoires.
S'il ne trouve pas la commande dans ces répertoires, il annonce
qu'elle est introuvable.
Quels sont les répertoires visités? Ceux qui figurent dans une variable
système nommée $PATH
Dans une console, frappe la commande suivante, en respectant
les majuscules et les minuscules
~$ echo $PATH
Observe le résultat. Tu devrais obtenir quelque chose de
semblable à:
~$ /home/toto/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
qui indique les répertoires par défaut, séparés par un signe " : ".
/home/toto/bin (si tu t'appelles "toto")
/usr/local/sbin
/usr/local/bin
...
Ton répertoire personnel (sans doute /home/toto si tu t'appelles "toto")
ne figure pas dans la liste.
Dans la console, frappe la commande:
~$ ./input.py
où la notation " ./ " désigne le répertoire actuellement actif. Là où se
trouve le programme input.py
Observe le résultat
toto@info17:~$ ./input.py
bash: ./input.py: Permission non accordée
Caramba! Encore raté!! Vous n'en avez pas assez d'être ridicule?
Tout est toujours sous contrôle. En fait, personne n'a encore reçu
l'autorisation d'exécuter ce programme. Mais nous progressons.
Dans une console, frappe la commande
~$ ls -l
Parmi les résultas, observe la ligne
-rw-r--r-- 1 toto root 141 2008-06-05 15:59 input.py
le propriétaire du fichier peut le lire et l'écrire (rw - read, write)
les membres de son groupe peuvent le lire (r - read)
toute autre personne peut le lire (r - read)
Nous allons rendre le programme exécutable par le propriétaire, c'est-à-
dire l'utilisateur, c'est-à-dire toi-même.
Frappe la commande
~$ chmod u+x input.py
afin de rendre l'utilisateur (u) capable d'exécuter (+x) le programme.
~$ ls -l
-rwxr--r-- 1 toto root 141 2008-06-05 15:59 input.py
Le programme est exécutable, mais seulement par son propriétaire: toi-
même.
~$ input.py
Hé mais, ça marche!!
Bien sûr. Et plus fort encore: cela fonctionne aussi si l'on supprime
l'extension .py du fichier. On peut alors lancer la commande sans même
savoir qu'il s'agit d'un programme écrit en Python.
Modifie et exécute tes autres programmes déjà écrits.
Renomme temporairement l'un ou l'autre d'entre-eux en
supprimant l'extension .py du nom du fichier. Vérifie qu'il est
toujours exécuté.
L'extension .py devrait être laissée afin de caractériser le programme aux
yeux des humains. Mais l'interpréteur de commandes n'en a plus besoin.
Quand tes programmes fonctionnent, Bravo tu as fini ce cours.
L'alternative en langage Python
1. Un jeu à programmer
Enoncé du problème
Deux joueurs A et B cachent la main
derrière le dos. Au signal du meneur de jeu, les deux joueurs tendent
la main en même temps. Chacun choisit de présenter un certain
nombre de doigts (de 0 à 5).
Si la somme des doigts montrés est paire, A gagne; dans le cas
contraire, B gagne.
L'ordinateur doit être capable de décider du gagnant.
Super! Voilà un jeu qui va nous faire gagner beaucoup d'argent si
nous le mettons dans le commerce!
Je crains que cette remarque légèrement ironique soit fondée. En
tous les cas, ce petit jeu va nous permettre, pour la première fois, de
voir l'ordinateur prendre des décisions.
Ah! On va enfin voir un ordinateur capable de réfléchir?
Malheureusement, l'ordinateur intelligent, ce n'est pas encore pour
tout de suite. Nous allons encore devoir être intelligents à sa place et
lui indiquer comment prendre une décision dans des cas relativement
simples.
Comment faire ?
Comme dans tout problème à résoudre avec un ordinateur, il faut se
poser les trois questions classiques :
Il faut déterminer, dans l'ordre chronologique, quelles sont:
Les données, les résultats, la méthode de travail
La méthode de travail, les résultats, les données
Les données, la méthode de travail, les résultats
C'est la façon de travailler qui a déjà été exposée dans une leçon
antérieure. Si la réponse à la question qui précède n'est pas évidente
pour toi, il est sans doute utile de revoir cette leçon.
Quand tu as répondu à la question et bien compris les raisons de
l'ordre des opérations, passe à la page suivante.
2. Analyse du problème et de sa résolution
Données
1. le nombre de doigts montrés par le joueur A
2. le nombre de doigts montrés par le joueur B
Résultat
Le nom du gagnant
Résolution
1. Prendre connaissance du nombre de doigts montrés par le
joueur A.
2. Prendre connaissance du nombre de doigts montrés par le
joueur B.
3. Calculer une information complémentaire: la somme des
nombres de doigts montrés.
4. Décider qui est le vainqueur: si la somme est paire, dire que le
joueur A est gagnant, sinon dire que le joueur B est gagnant
5. communiquer le nom du gagnant: le joueur A ou le joueur B.
Comment faire faire?
S'il nous est assez facile d'exprimer la façon de résoudre ce problème
par nous-mêmes, il se pose maintenant le problème de savoir
comment faire résoudre le problème par un ordinateur.
Nous reconnaissons cependant une situation déjà bien connue et
étudiée dans le cadre de l'étude du tableur : l'alternative.
L'étape 4 pourrait s'exprimer
Si < la somme est paire >
Alors déclarer que le gagnant est A
Sinon déclarer que le gagnant est B
Fin Si
Cette analyse est absolument imparable et digne d'un génie, mais
ça ne nous dit rien sur la façon dont l'ordinateur peut déterminer si un
nombre est pair!
Relativement exact! Il va donc peut-être falloir ruser un peu. Et
utiliser les connaissances acquises durant la leçon précédente.
Pair ou impair ?
Comment l'ordinateur peut-il déterminer qu'un nombre est pair?
Par définition, un nombre est pair si le reste de la division entière de
ce nombre par 2 est nul.
Exemples
le reste de la division de 24 par 2 est 0 (le quotient est 12,
mais cela n'a pas d'importance); donc 24 est pair.
le reste de la division de 7 par 2 est 1; donc 7 n'est pas pair.
En Python, on dispose de deux opérateurs:
division: opérateur "/"
reste de la division: opérateur "%"
Ces opérateurs fonctionnent comme la bonne vieille division du début de
l'école primaire.
1 7 3 8
1 6 ·
· 21
1 3
8
Reste: 5
173 / 8 = 21, et il reste 5.
c'est-à-dire
173 % 8 = 5
Effectue les opérations indiquées ci-dessous. Clique sur le bouton OK
pour vérifier chacune d'elles.
Vérifie les opérations suivantes dans l'interpréteur Python
>>> print 24 % 2
....
>>> print 7 % 2
....
Traduction
L'expression "la somme est paire" peut donc être traduite dans un
langage mathématique sous la forme:
(Somme % 2) == 0
Il s'agit d'une expression logique, une expression qui peut être vraie
ou fausse.
Ah, je crois que j'ai repéré une faute de frappe. Vous avez écrit
deux fois le signe "=" dans l'epression précédente.
Eh bien non, ce n'est pas une faute de frappe. C'est la façon
conventionnelle, en Python, d'indiquer une égalité.
En langage Python, les principaux symboles pour les comparaisons
s'écrivent:
En français En Python
A est égal à B A == B
A est strictement plus grand
A>B
que B
A est strictement plus petit
A<B
que B
A est plus petit ou égal à B A <= B
A est plus grand ou égal à B A >= B
A != B ou A <>
A est différent de B
B
De cette manière, on distingue bien le symbole de l'affectation "=" du
symbole de la comparaison "==".
Révision
Revois les pages 2 à 6 de la leçon concernant l'alternative dans le
cadre du tableur.
Comment pourrait-on traduire l'expression logique: " le nombre X est
impair " ?
(NombreX % 3) == 0
(NombreX % 2) == 1
(NombreX / 2) == 1
Quand tu as compris la méthode de détermination de la parité d'un
nombre, passe à la page suivante.
3. Résolution commentée
La résolution proposée à la page précédente est assez facile à mettre
en oeuvre.
1. Prendre connaissance du nombre de doigts montrés par le
joueur A.
2. Prendre connaissance du nombre de doigts montrés par le
joueur B.
3. Calculer une information complémentaire: la somme des
nombres de doigts montrés.
4. Décider qui est le vainqueur: si la somme est paire, dire que le
joueur A est gagnant, sinon dire que le joueur B est gagnant
5. communiquer le nom du gagnant: le joueur A ou le joueur B.
Il suffit maintenant de traduire ce texte en langage Python
Ligne 1 et 2: à l'aide de la fonction input(), il est simple de prendre
connaissance du nombre de doigts montrés par chacun des deux
joueurs.
Ligne 3: le calcul de la somme dans une variable ne pose pas de
problème.
Ligne 5: écrire une information déterminée à l'étape 4 est très aisé.
Ah, aaah! Je vois que vous avez eu peur de la ligne 4.
Soigneusement passée sous silence.
La ligne 4 est effectivement la seule pour laquelle il existe une vraie
nouveauté. Je vous propose donc de la rédiger ensemble.
Ouvre l'éditeur de texte et recopies-y les lignes suivantes
correspondant aux ligne 1, 2, 3 et 5 de la méthode décrite.
#! /usr/bin/python
joueurA = input ("Nombre de doigts du joueur A: ")
joueurB = input ("Nombre de doigts du joueur B: ")
somme = joueurA + joueurB
********
print "Le vainqueur est ", gagnant
Enregistre ce texte sous le nom doigts.py .
Vérifie que tu comprends bien le rôle de chacune des
instructions.
Toujours aussi téméraire: rien pour la ligne 4. Prudemment
remplacée par des *
Passons donc à cette ligne 4 tant attendue.
Comme dans la leçon sur l'alternative dans le tableur (à revoir si
nécessaire), nous pouvons écrire la situation selon la forme
Si < la somme est paire >
Alors le joueur A gagne
Sinon le joueur B gagne
Fin Si
ou selon la forme de l'arbre binaire
Nous allons maintenant l'exprimer en langage Python.
Supprime les * du texte précédent
Frappe la première ligne de l'alternative, y compris le double
point ":" final
if (somme % 2 == 0):
Le symbole ":" annonce que l'instruction n'est pas finie.
Complète le code avec la première branche de l'alternative.
if (somme % 2 == 0):
gagnant = "le joueur A"
Vérifie que tu as bien inséré une tabulation ou, éventuellement,
quelques espaces avant la deuxième ligne. TRES
IMPORTANT.
Toutes les instructions à exécuter si l'expression logique est vraie sont
maintenant notées. Même s'il n'y en a qu'une seule ici.
Poursuis le texte en annonçant la suite de l'alternative
if (somme % 2 == 0):
gagnant = "le joueur A"
else:
"else" est la traduction en anglais de "sinon".
Le mot "else" est suivi d'un double point ":" pour annoncer qu'il y a
une suite.
Termine le texte de l'alternative avec les instructions à
exécuter si l'expression logique est fausse.
if (somme % 2 == 0):
gagnant = "le joueur A"
else:
gagnant = "le joueur B"
Vérifie que tu as bien inséré une tabulation ou, éventuellement,
quelques espaces avant la quatrième ligne. TRES
IMPORTANT.
Le texte final qui doit se trouver dans l'éditeur de texte est
donc bien:
#! /usr/bin/python
joueurA = input ("Nombre de doigts du joueur A: ")
joueurB = input ("Nombre de doigts du joueur B: ")
Somme = joueurA + joueurB
if (Somme % 2 == 0):
gagnant = "le joueur A"
else:
gagnant = "le joueur B"
print "Le vainqueur est ", gagnant
Vérifie que tu peux prévoir ce qui se passera lors de l'éxécution
de ce programme.
Enregistre une dernière fois le document et exécute le
programme doigts.py .
L'insertion d'un espacement devant l'instruction à exécuter
permet de mettre en évidence un "bloc d'instructions" (composé ici
d'une seule instruction).
Cette technique très importante dans le langage Python est appelée
Indentation du code.
Nous verrons mieux son importance dans un prochain exemple.
Quand le programme fonctionne et que tu as bien compris son mode
de fonctionnement, passe à la page suivante.
4. L'alternative avec instruction composée
On demande d'écrire un programme capable de conseiller deux objets
utiles à emporter en voyage, en fonction de la température de l'air.
Si la température est supérieure à 20°, il conseille "maillot" et "crème
bronzante". Sinon, il conseille "parapluie" et "pull".
Données
1. la température
Résultat
Les noms des deux objets.
Résolution
1. Prendre connaissance de la température
2. Déterminer la nature des deux objets
3. communiquer les noms des deux objets trouvés à l'étape 2
Comment faire faire
L'étape 2 pourrait s'exprimer
Si tempéreture > 20
Alors objet1 = "maillot"
objet2 = "crème bronzante"
Sinon objet1 = "parapluie"
objet2 = "pull"
Fin Si
Résolution en langage Python
Ouvre l'éditeur de texte et recopies-y les lignes suivantes
correspondant aux ligne 1, 2, 3 et 4 de la méthode décrite.
#! /usr/bin/python
# -*- encoding: ISO-8859-1 -*-
print "Conseils gratuits pour le voyage"
temperature = input ("Quelle est la température? ")
********
print "Vous emporterez ", objet1, " et ", objet2
Enregistre ce texte sous le nom equation.py .
Vérifie que tu comprends bien le rôle de chacune des
instructions.
Si j'ai bien compris, vous recommencez le coup de remettre à plus
tard les choses plus délicates.
Tout à fait exact. Concentrons-nous sur le point plus difficile.
Supprime les * du texte précédent
Frappe la première ligne de l'alternative, y compris le double
point ":" final
if (temperature > 20):
Le symbole ":" annonce que l'instruction n'est pas finie.
Complète le code avec la première branche de l'alternative.
if (temperature > 20):
objet1 = "maillot"
objet2 = "crème bronzante"
Après else: , nous indiquerons le deuxième bloc d'instructions.
Poursuis le texte en annonçant la suite de l'alternative. Nous
utilisons l'indentation pour mettre en évidence ce bloc
d'instructions.
if (temperature > 20):
objet1 = "maillot"
objet2 = "crème bronzante"
else:
objet1 = "parapluie"
objet2 = "pull"
Vérifie que les indentations du texte sont correctement
réalisées. Chacun des deux blocs est bien mis en évidence.
Le texte final qui doit se trouver dans l'éditeur de texte est
donc bien:
#! /usr/bin/python
# -*- encoding: ISO-8859-1 -*-
print "Conseils gratuits pour le voyage"
temperature = input ("Quelle est la température? ")
if (temperature > 20):
objet1 = "maillot"
objet2 = "crème bronzante"
else:
objet1 = "parapluie"
objet2 = "pull"
print "Vous emporterez ", objet1, " et ", objet2
Vérifie que tu peux prévoir ce qui se passera lors de l'éxécution
de ce programme.
Enregistre une dernière fois le document et exécute le
programme temperature.py .
Quand le programme fonctionne correctement dans les deux cas
possibles et que tu comprends bien son fonctionnement, passe à la
page suivante.
5. L'alternative avec instruction composée
(version 2)
Le cas du jeu traité à la page précédente était très simple.
Que se passe-t-il si plusieurs instructions doivent être exécutées dans
l'un ou l'autre cas de l'alternative?
C'est maintenant que nous allons avoir besoin de la notion de "bloc
d'instructions" introduite à la page précédente.
Soit une équation du premier degré du type a.x + b = 0 d'inconnue
x.
On demande d'écrire un programme qui permet de déterminer la
valeur de x quand on lui donne les valeurs de a et de b.
Mais c'est hyper-facile. Encore plus simple que l'exercice
précédent!! x = -b/a et c'est terminé.
Mmmhhh... Il y a une petite difficulté quand même: on ne sait rien
des valeurs qui seront choisies pour a et b. Or, le cours de maths nous
apprend qu'il y a trois cas possibles selon les valeurs de a et b.
Données
1. le paramètre a
2. le paramètre b
Résultat
La valeur de x.
Résolution
1. Prendre connaissance du paramètre a.
2. Prendre connaissance du paramètre b.
3. Déterminer la valeur de x si possible.
4. communiquer la solution trouvée à l'étape 3.
Comment faire faire
L'étape 3 pourrait s'exprimer
Si a est différent de 0
Alors S = {-b/a}
Sinon Si b = 0
Alors l'équation est indéterminée
Sinon l'équation est impossible
Fin Si
Fin Si
Résolution en langage Python
Ouvre l'éditeur de texte et recopies-y les lignes suivantes
correspondant aux ligne 1, 2, 3 et 4 de la méthode décrite.
#! /usr/bin/python
# -*- encoding: ISO-8859-1 -*-
print "Résolution d'une équation du type ax + b = 0"
a = input ("paramètre a: ")
b = input ("paramètre b: ")
********
print "La solution est ", solution
Enregistre ce texte sous le nom equation.py .
Vérifie que tu comprends bien le rôle de chacune des
instructions.
Ça devient une manie, le coup des étoiles...
Supprime les * du texte précédent
Frappe la première ligne de l'alternative, y compris le double
point ":" final
if (a <> 0):
Le symbole ":" annonce que l'instruction n'est pas finie.
Complète le code avec la première branche de l'alternative.
if (a <> 0):
solution = -b/a
else:
Après else: , nous indiquerons le deuxième bloc d'instructions.
Poursuis le texte en annonçant la suite de l'alternative. Nous
utilisons l'indentation pour mettre en évidence ce bloc
d'instructions.
if (a <> 0):
solution = -b/a
else:
if (b == 0):
solution = "indéterminé"
else:
solution = "impossible"
Vérifie que les indentations du texte sont correctement
réalisées.
Le texte final qui doit se trouver dans l'éditeur de texte est
donc bien:
#! /usr/bin/python
# -*- coding: ISO-8859-1 -*-
print "Résolution d'une équation du type ax + b = 0 "
a = input ("paramètre a: ")
b = input ("paramètre b: ")
if (a <> 0):
solution = -b/a
else:
if (b == 0):
solution = "indéterminé"
else:
solution = "impossible"
print "La solution est ", solution
Vérifie que tu peux prévoir ce qui se passera lors de l'éxécution
de ce programme.
Enregistre une dernière fois le document et exécute le
programme equation.py .
Quand le programme fonctionne correctement dans tous les cas
possibles et que tu comprends bien son fonctionnement, passe à la
page suivante.
6. L'alternative à une branche
Exemples
L'alternative classique présente deux branches:
" Lucky Luke est prisonnier des indiens qui l'ont attaché au poteau de
torture pour le scalper. La cavalerie arrivera-t-elle à temps ? "
Si la cavalerie arrive
Alors Lucky Luke est sauvé
Sinon Lucky Luke est scalpé
Fin Si
Dans certains cas, il n'est pas nécessaire d'envisager le sinon de
l'alternative.
"Il ne faut pas allumer de feu près d'une réserve de dynamite de peur
de provoquer une explosion."
Si on allume du feu près de la dynamite
Alors on risque une explosion
Sinon ???
Fin Si
On optera alors pour une version " allégée " de la phrase alternative,
dans laquelle on n'envisage qu'une seule branche.
Si on allume du feu près de la dynamite
Alors on risque une explosion
Fin Si
Une application simple
On demande d'écrire un programme qui transforme un nombre fourni
par l'utilisateur dans une zone de saisie en sa valeur absolue.
Principe de résolution
si le nombre X fourni est négatif, on renvoie -X
si le nombre X fourni est positif, on laisse la valeur telle qu'elle.
Si le nombre X fourni est négatif
Alors changer la valeur de X en (-X)
Sinon ne rien faire
Fin Si
Dans ce cas précis, il ne faut strictement rien changer à la valeur du
nombre donné s'il est positif.
Le modèle de l'alternative complète peut donc être simplifié.
Si le nombre X fourni est négatif
Alors changer la valeur de X en (-X)
Fin Si
Au cas où aucune instruction n'est donnée quand l'expression logique
n'est pas vérifiée, l'alternative ne contient qu'une seule branche. On
omet alors simplement la partie « else ».
Résolution
Données
Le nombre
Résultat attendu
La valeur absolue du nombre
Résolution
1. Prendre connaissance du nombre
2. Rendre le nombre positif, si nécessaire
3. communiquer la valeur absolue du nombre
Comment faire faire
L'étape 3 pourrait s'exprimer
Si nombre < 0
Alors nombre = -nombre
Fin Si
Résolution en langage Python
Ouvre l'éditeur de texte et recopies-y les lignes suivantes
correspondant aux ligne 1, et 3 de la méthode décrite.
#! /usr/bin/python
# -*- encoding: ISO-8859-1 -*-
print "Retourner la valeur absolue d'un nombre donné"
nombre = input ("Quel est ce nombre? ")
********
print "La valeur absolue est ", nombre
Enregistre ce texte sous le nom valAbsolue.py .
Ne vous fatiguez plus pour les étoiles, j'ai compris
Supprime les * du texte précédent
Frappe la première ligne de l'alternative, y compris le double
point ":" final
if (nombre < 0):
Le symbole ":" annonce que l'instruction n'est pas finie.
Complète le code avec la première et unique branche de
l'alternative.
if (nombre < 0):
nombre = -nombre
Vérifie que l'indentation du texte est correctement réalisée.
Le texte final qui doit se trouver dans l'éditeur de texte est
donc bien:
#! /usr/bin/python
# -*- encoding: ISO-8859-1 -*-
print "Retourner la valeur absolue d'un nombre donné"
nombre = input ("Quel est ce nombre? ")
if (nombre < 0):
nombre = -nombre
print "La valeur absolue est ", nombre
Vérifie que tu peux prévoir ce qui se passera lors de l'éxécution
de ce programme.
Enregistre une dernière fois le document et exécute le
programme valAbsolue.py .
Quand le programme fonctionne correctement dans les deux cas
possibles et que tu comprends bien son fonctionnement, passe à la
page suivante.
7. Alternative complexe
Dans certains cas, il n'est pas possible d'exprimer aisément la
situation d'alternative parce que les conditions ne sont pas simples. Si
l'on se trouve dans une telle situation, alors il faut utiliser une
méthode pour construire l'alternative. Nous utiliserons la méthode par
construction d'un arbre binaire de décision.
Problème
Écrire un programme qui détermine si une année dont on donne le
millésime est bissextile (ce problème est traité ailleurs, dans ce cours,
dans le cadre de l'étude de l'alternative dans le tableur).
Une année est bissextile si son millésime est multiple de 4;
cependant, les années dont le millésime est multiple de 100 ne sont
bissextiles que si c'est aussi un multiple de 400 (1900 n'était pas
bissextile, 2000 l'a été).
Il faut bien mettre en évidence toutes les conditions particulières à
envisager lors de la résolution du problème. Il faut évaluer si:
le millésime est un multiple de 4;
le millésime est un multiple de 100;
le millésime est un multiple de 400.
Construction d'un arbre binaire de décision
Examine attentivement l'arborescence ci-dessous durant la lecture de
l'explication de sa construction.
Choisissons une
de ces conditions particulières et voyons ce qu'il convient de faire si
elle est vraie et si elle est fausse. Nous commencerons par la
condition « multiple de 4 ».
Si la condition est fausse, l'année n'est pas bissextile et c'est fini,
sinon, il faut encore travailler.
Quelle question faut-il se poser si le millésime est multiple de 4? Il
faut voir si c'est un multiple de 100.
Si la condition est fausse, alors l'année est bissextile et c'est fini,
sinon, il faut encore travailler.
Si la condition est vraie, alors l'année est bissextile, sinon, elle n'est
pas bissextile. Dans tous les cas, le travail est terminé.
La structure de décision se présente sous la forme d'un arbre inversé,
c'est-à-dire dont la racine serait en haut et les branches en bas.
Dans le formalisme Si...Alors...Sinon..., ce tableau pourrait s'exprimer:
Si <Millésime multiple de 4>
Alors
Si <Millésime multiple de 100>
Alors
Si <Millésime multiple de 400>
Alors " Bissextile "
Sinon " Non Bissextile "
Fin Si
Sinon " Non bissextile "
Fin Si
Sinon " Non bissextile "
Fin Si
Vérifie, à l'aide de l'abre binaire de décision ou de la structure
si...alors...sinon, que les années 1930, 2003 et 2100 ne sont
pas bissextiles.
Vérifie ensuite que 1980, 1800 et 2400 sont des années
bissextiles.
Résolution commentée
L'interface du programme Python correspondant peut s'imaginer sur
le modèle ci-dessous.
La donnée
Le texte " Oui " ou " Non " qui s'indique en fonction du
caractère bissextile ou non de l'année s'appelle reponse.
Si l'on suit l'exemple de formalisme " si ... alors ... sinon... " présenté
ci-dessus, on peut alors écrire le texte Python correspondant selon la
forme présentée ci-dessous.
#! /usr/bin/python
# -*- encoding: ISO-8859-1 -*-
an = input ("Quel est le millesime ?")
if (an % 4 == 0):
if (an % 100 == 0):
if (an % 400 == 0):
bissextile = "Oui"
else:
bissextile = "Non"
else:
bissextile = "Oui"
else:
bissextile = "Non"
print "Année bissextile: ", bissextile
Recopie et exécute l'exemple.
Vérifie qu'il fonctionne correctement dans tous les cas
possibles.
Serait-il possible de reconstruire complètement l'arbre binaire ou la
structure " si... alors... sinon..." , pour l'exemple de l'année bissextile,
en commençant par le test " le millésime est un multiple de 400 "?
On commencerait donc par :
Si <Millésime multiple de 400>
Alors
.......
Reconstitue l'ensemble de la structure puis modifie le
programme Python afin qu'il corresponde à cette nouvelle
analyse.
Exécute et vérifie le bon fonctionnement du programme.
Quand le programme fonctionne correctement dans tous les cas
possibles et que tu comprends bien son fonctionnement, passe à la
page suivante.
8. Notion de bibliothèque en programmation
Pour pouvoir réaliser la moindre action, un ordinateur a toujours
besoin de connaître une méthode.
Pour chacune des actions qu'il doit pouvoir exécuter, la méthode
devrait donc être disponible dans la mémoire vive.
Mais, disposer en mémoire vive toutes les méthodes susceptibles
d'être utilisées risque d'encombrer fortement cette mémoire. Et, un
grand nombre de méthodes risquent de ne jamais être utilisées. Ce
serait donc de la mémoire utilisée inutilement.
Analogie culinaire
Lorsque je reçois des amis, j'aime leur préparer un repas succulent.
Dans ces occasions, j'utilise un livre de recettes.
1. Je prends dans ma bibliothèque le livre qui contient la recette
que je vais préparer.
2. Je réalise la recette.
3. Je remets le livre dans la bibliothèque.
Mais je ne retiens pas toutes mes recettes par coeur.
On peut procéder de manière similaire en programmation.
Ouvre une console de commande et démarre l'interpréteur
Python.
Frappe la commande
>>> print cos(3.141592)
La réaction de l'interpréteur Python est immédiate:
>>> print cos(3.141592)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'cos' is not defined
Quand Python fâché, lui toujours dire des gros mots comme cela...
Ne nous laissons pas impressionner et voyons ce qu'il nous dit.
L'interpréteur
Python ne reconnaît pas le mot 'cos'. Ce qu'il indique par le message
NameError: name 'cos' is not defined
Effectivement, pour ne pas encombrer la mémoire, aucune
information sur la façon de calculer un cosinus n'a encore été fournie.
Il va falloir aller chercher la recette dans une bibliothèque.
Utilisation de quelques bibliothèques
Vérifie que l'interpréteur Python est toujours actif.
Frappe la commande
>>> from math import cos
Ce qui signifie que nous lui demandons de charger en mémoire la
"recette" pour calculer un cosinus. Cette recette se trouve dans une
bibliothèque nommée math.
Frappe la commande
>>> print cos(3.141592)
Vérifie que le résultat est mathématiquement correct.
Frappe la commande
>>> print sin(3.141592)
Observe le résultat et tire la conclusion
Hé, hé... Je m'y attendais un peu à ce message d'erreur.
Et bien sûr, aucune difficulté pour trouver le remède...
Bien sûr que non, mais je sens que ça va vite devenir fatiguant de
lui faire faire le moindre calcul mathématique. Il faut vraiment lui dire
d'aller chercher fonction par fonction dans cette bibliothèque?
Heureusement non. Si l'on sait que l'on aura besoin d'un grand
nombre de fonctions, on peut importer toute la bibliothèque en une
fois.
Vérifie que l'interpréteur Python est toujours actif.
Frappe la commande
>>> from math import *
Cette instruction provoque l'importation de toutes les fonctions de la
bibliothèque math.
Frappe les commandes suivantes puis interprète ce que fait
chacune d'elles.
>>> print tan(0)
>>> print sqrt(9)
>>> print sqrt(16)
>>> print sqrt(-1)
>>> print degrees(pi)
>>> rayon = 4
>>> surface = 2*pi*rayon
>>> print surface
La librairie math est certainement la plus importante que nous
utiliserons. Elle est décrite à la page
http://docs.python.org/lib/module-math.html. La plupart de ses
fonctions seront utiles.
Il en existe toutefois d'autres.
La librairie random ("hasard", en anglais) contient un certain nombre
de fonctions qui permettent de générer des nombres au hasard. Elle
est décrite à la page http://docs.python.org/lib/module-random.html.
Les fonctions principales à connaître de cette librairie sont randint(),
random(), uniform().
La librairie turtle ("tortue", en anglais) contient un certain nombre de
fonctions qui permettent de faire apparaître et de diriger une tortue à
l'écran. Elle est décrite à la page http://docs.python.org/lib/module-
turtle.html
Vérifie que l'interpréteur Python est toujours actif.
Frappe la commande
>>> from random import *
Puis les commandes
>>> rayon = randint(2,10)
>>> surface = 2*pi*rayon
>>> print surface
Interprète le résultat de ces opérations.
Répète ces trois instructions.
Le résultat obtenu est-il identique? Pour quelle raison?
Frappe plusieurs fois la commande
>>> print random()*30
Peux-tu interpréter les résultats obtenus?
Vérifie que l'interpréteur Python est toujours actif.
Frappe les commandes
>>> from turtle import *
>>> clear()
>>> forward (150)
>>> right (90)
>>> forward (150)
>>>
Poursuis jusqu'à ce que la tortue ait dessiné un carré complet.
Quand le programme fonctionne correctement dans tous les cas
possibles et que tu comprends bien son fonctionnement, passe à la
page suivante.
9. Exercices
Pour chacun de ces exercices, l'écriture de l'arbre binaire de décision
ou de la phrase alternative est indispensable.
1. L'ordinateur prend connaissance de deux nombres a et b frappés
au clavier; il indique ensuite lequel de ces deux nombres est le plus
grand. Il faut traiter le cas d'égalité.
2. On demande d'écrire un programme qui soit capable de calculer la
somme, la différence, le produit et le quotient de deux nombres
fournis au clavier par l'utilisateur.
L'énoncé de ce problème paraît extrêmement simple; il existe
cependant une petite difficulté liée au fait qu'il est possible que
l'utilisateur fournisse un second nombre = 0. Le calcul du quotient
pose alors un problème: il n'est pas possible de diviser un nombre par
0 ! Le programme doit refuser de réaliser l'opération et inviter
l'utilisateur à être plus attentif.
3. Le prix d'entrée à un spectacle est de 4,30 Eur par personne;
toutefois les groupes peuvent avoir droit à une réduction. Si le
nombre d'étudiants constituant le groupe est supérieur au nombre de
personnes non étudiantes, le prix par personne, étudiante ou non, est
de 2,50 Eur. Ecrire le programme qui calcule le prix d'entrée à ce
spectacle.
4. Variante du jeu des doigts: l'ordinateur est le joueur B. Il choisit, au
hasard, le nombre de doigts et annonce ce nombre après le jeu. Ci-
dessous, un exemple présentant deux parties (l'ordinateur est un peu
arrogant):
toto@info10:~$ python doigts.py
Combien de doigts montrez-vous? 2
L'ordinateur gagne
L'ordinateur avait choisi 1 doigt(s)
toto@info10:~$ python doigts.py
Combien de doigts montrez-vous? 3
Par chance vous avez gagné
L'ordinateur avait choisi 5 doigt(s)
5. Écrire un programme d'utilité contestable, mais qui permet de
remplacer une pièce de monnaie par un ordinateur dans le jeu de pile
ou face. L'ordinateur doit donc simuler le lancer d'une pièce et
annoncer " pile " ou " face ".
Exécuter un grand nombre de fois le programme pour s'assurer que le
nombre de "piles" est bien équivalent au nombre de " faces ".
6. Écrire un programme qui demande à l'utilisateur de réaliser une
addition. Si le résultat fourni est correct, le programme félicite l'élève;
sinon, il lui signale son erreur en des termes très polis (une variante
consisterait à faire envoyer une bordée
d'injures du type de celles du capitaine
Haddock en cas d'erreur).
Les deux termes à additionner sont
choisis au hasard pour chaque exercice.
7. On reprend le programme du jeu de doigts. L'ordinateur est
toujours le joueur B. Mais il va tricher un peu.
Lorsque le joueur A gagne, l'ordinateur choisit un nouveau nombre de
doigts au hasard. Et la partie se termine avec ce nouveau choix.
Quand tu as réalisé l'analyse complète de chacun des exercices
proposés et exécuté avec succès chacun des exercices proposés,
passe à la page suivante.
======Parmi les fonctions disponibles dans Excel, nous disposons
de tout ce qui est nécessaire pour programmer un jeu de dés
palpitant.
La fonction =alea() est un peu particulière: elle ne demande aucun
argument et renvoie une valeur, au hasard, comprise dans l'intervalle
[0 ; 1[.
Une autre fonction nous sera encore utile: la fonction =ent() demande
un seul argument dont elle retourne la partie entière.
Ouvre une nouvelle feuille de calcul.
Dans la cellule A1, indique la formule =alea(). Frappe la touche
F9 (qui force le recalcul de l'ensemble de la feuille).
Dans la cellule A2, indique la formule =alea()*10. Frappe la
touche F9. Observe le résultat.
En utilisant les informations données ci-dessus, imagine maintenant
quelle formule devrait être introduite dans la cellule A1 pour simuler
un lancer de dé. Quand tu penses avoir la solution, discutes-en avec
le professeur.
Simule un jeu avec 3 dés indépendants. La feuille de calcul
détermine, de plus, la somme des points obtenus pour le
lancer.
Ajoute 3 dés pour un adversaire ; la somme est également
calculée.
Tu es autorisé(e) à jouer quelques instants contre ton voisin le plus
immédiat dans la salle de cours. Tu as les bleus, ton adversaire à les
jaunes. Bonne chance!!
fin du cours.
1. Les deux types d'informations traitées par un
ordinateur
Cette partie du cours aura pour but de nous familiariser avec les
concepts principaux de la programmation des ordinateurs.
Nous y apprendrons les rudiments de la programmation dans le cadre
du langage Pascal Objet proposé par Delphi.
Ce que nous aurons acquis en programmation Delphi pourra ensuite
être réinvesti dans la programmation en d'autres langages.
Qu'est-ce qu'un programme d'ordinateur?
Un programme d'ordinateur est formé d'un ensemble d'instructions
dont l'exécution permet d'atteindre un objectif.
Glups... N'auriez rien en français, dans le même genre?
Disons que l'on pourrait un peu illustrer sur la base d'un exemple.
En cliquant sur l'image ci-dessous, tu peux télécharger un petit
programme tout simple appelé "L'additionneur". Comme il s'agit d'un
exécutable, il faut bien vérifier que l'antivirus de ton ordinateur soit à
jour avant de télécharger.
Quand on clique sur le bouton « Somme », l'additionneur calcule le
total du Nombre A et du Nombre B.
Pour ce faire, il est muni d'une liste d'instructions du type suivant :
1. recherche la valeur indiquée dans la zone « Nombre A »
2. recherche la valeur indiquée dans la zone « Nombre B »
3. calcule leur somme et
4. indique cette somme dans la zone marquée « Somme ».
Les deux types d'informations traitées par l'ordinateur
Dans le cadre de l'additionneur et des programmes d'ordinateur, en
général, celui-ci traite des informations de deux sortes :
1. des informations variables (les différents nombres qui
interviennent)
2. des instructions qui lui ont été fournies
En général, les informations variables peuvent être essentiellement
du type numérique, de type texte ou de type « valeur logique » (vrai
ou faux).
Les instructions doivent lui être fournies dans un langage
compréhensible par le processeur. Ce langage est toujours
extrêmement simple, et très différent du langage courant.
Toute la difficulté de la programmation des ordinateurs repose donc
dans l'art d'établir les instructions des programmes.
Les deux grands types d'informations traitées par un ordinateur sont:
Les grandeurs numériques et les textes
Les informations variables et les instructions
Les informations de type numérique et les informations de type
"valeur logique"
Un programme est formé de:
Un ensemble d'instructions qui permet d'atteindre un but
Un ensemble d'instructions et d'informations variables
Un ensemble d'informations variables de type numérique, texte ou
logique
Dans l'additionneur, les informations Nombre A et Nombre B sont:
Des instructions
Des variables
Des valeurs logiques
Quand tu as répondu aux questions et parfaitement compris les
réponses, passe à la page suivante.
2. De l'humain à la machine
On a indiqué, à la page précédente, que la difficulté de la
programmation des ordinateurs consiste à leur donner des listes
d'instructions qu'ils peuvent comprendre.
Cela pose tout d'abord un problème technique.
Le langage des ordinateurs
Le langage machine
Les seules informations que puisse stocker un ordinateur sont
des séries de 0 et de 1. Les données qu'il peut traiter doivent
donc être codées sous cette forme.
De même, les instructions destinées aux
ordinateurs sont formées d'ensembles de 0 et de 1, compréhensibles
par le processeur. Un programme d'ordinateur se présente donc
comme sur l'illustration ci-dessous :
00110110 11010101 10100011 00111001 1100110001
00100101 01011010 01110110 11011010 1101101110
Ce que chacun trouvera difficile à comprendre. Un ordinateur, par
contre, s'y retrouve très bien.
Les premiers ordinateurs se programmaient dans ce langage : le
langage binaire encore appelé langage machine.
Pour des raisons de facilité, on utilise généralement une variante dans
laquelle les instructions sont codées en hexadécimal (notation en
base 16).
L'assembleur et les langages évolués
On a ensuite trouvé plus facile de
composer les programmes dans des langages plus simples à
comprendre pour l'être humain. On charge ensuite un ordinateur
de traduire le texte composé par le programmeur vers le langage
machine.
C'est ainsi que sont nés le langage « assembleur », encore très
proche du code machine, puis les langages plus évolués comme
Fortran, Cobol, Basic, Pascal, C et bien d'autres.
L'avantage de ces langages pour le programmeur est que le texte des
programmes est plus facile à comprendre pour un humain.
En contre-partie, il est nécessaire qu'un ordinateur intervienne pour
les traduire en langage machine.
Exemples : un programme qui écrit « Salut tout le monde » à l'écran
En langage C
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("Salut tout le monde!\n");
return EXIT_SUCCESS;
}
En langage Pascal
Program salut ;
Begin
Writeln ('Salut tout le monde') ;
End.
D'autres exemples de langages informatique sont illustrés dans
l'encyclopédie Wikipedia. Vérifie, pour quelques langages, qu'il s'agit
bien d'un moyen terme entre le langage humain et un langage de
machine (vois les rubriques Smalltalk, Perl, C++, Cobol,...).
Tu dois maintenant être capable de citer les langages informatiques
évoqués ci-dessus et d'expliquer l'intérêt de chacun d'eux. Vérifie que
c'est le cas, sans regarder l'écran.
Les langages informatiques "évolués" sont utilisés pour :
simplifier le travail des programmeurs
simplifier le travail des ordinateurs
rendre compréhensible le travail des ordinateurs
Le langage directement compréhensible par les ordinateurs est :
le code binaire
les langages comme Pascal ou Basic
l'assembleur
Les étapes de la traduction en langage machine
L'éditeur de code
Les textes qui constituent les programmes d'ordinateur pourraient
être écrits à l'aide de n'importe quel programme de traitement de
textes.
Cependant, on préfèrera le plus souvent utiliser des logiciels
spécialisés dans la rédaction de ces textes. En plus des fonctions
traditionnelles de traitement de textes, on y disposera d'un certain
nombre d'outils qui facilitent le travail (autocomplétion du code,...).
L'éditeur de code est donc un programme de traitement de textes un
peu spécialisé.
Le compilateur
Les textes composés en assembleur ou dans ces langages évolués
doivent être traduits en langage machine. Ce travail est réalisé par un
programme spécialisé appelé compilateur.
Le compilateur examine les instructions écrites par le programmeur et
les transforment en langage binaire, compréhensible par le
processeur.
Il existe un grand
nombre de compilateurs. Chacun est spécialisé dans le traitement de
l'un ou l'autre langage évolué.
Un texte écrit dans un langage doit être compilé à l'aide d'un
compilateur approprié à ce langage précis. Un texte écrit en langage
C doit être compilé par un compilateur C.
Le logiciel Delphi inclut, entre-autres, un module de composition de
texte en langage Pascal (l'éditeur) et un compilateur Pascal. Ce cours
aurait pu également utiliser le langage C (plus difficile à aborder) ou le
langage Basic (beaucoup moins structuré), par exemple.
Remarque : les interpréteurs
Dans certains langages, le code source n'est pas préalablement
traduit en langage machine par un compilateur.
Dans ce cas, la transformation en langage machine se fait au moment
de l'exécution du programme : un interpréteur traduit le programme,
ligne par ligne.
Quand une ligne du programme doit
être exécutée un grand nombre de fois, l'interpréteur la traduit autant
de fois qu'elle est exécutée. Il en résulte une perte de temps et donc
une plus grande lenteur des langages interprétés (comme certaines
versions de Basic) par rapport aux langages compilés.
Tu dois maintenant être capable de citer les noms des trois logiciels
évoqués ci-dessus et d'indiquer leur rôle. Vérifie que c'est le cas, sans
regarder l'écran.
Le rôle de l'éditeur de code est de:
transformer le langage évolué en code binaire
écrire le texte des programmes d'ordinateurs
traduire le code binaire en langage compréhensible
Détermine l'ordre chronologique dans lequel les trois processus
suivants interviennent
L'édition du texte, la compilation, l'exécution
La compilation, l'édition du texte, l'exécution
L'exécution, l'édition du texte, la compilation
La compilation, l'interprétation, l'exécution
Le rôle du compilateur est de:
transformer le langage évolué en code binaire
écrire le texte des programmes d'ordinateurs
traduire le code binaire en langage compréhensible
La différence entre un interpréteur et un compilateur est que:
Le compilateur est spécialisé dans un langage alors qu'un
interpréteur peut traiter tous les langages évolués
L'interpréteur traduit une ligne de code à la fois, cependant que le
compilateur traduit tout le programme en une fois
Le compilateur traduit une ligne de code à la fois, cependant que
l'interpréteur traduit tout le programme en une fois
Il n'y a pas de différence entre un compilateur et un interpréteur
Quand tu distingues bien le rôle des logiciels et des langages entre
l'humain et l'ordinateur, passe à la page suivante.
Cours informatique de programmation
Eléments de programmation en langage Pascal Delphi
3. Principe du travail avec Delphi Pascal
Interface utilisateur
Lorsque nous utilisons un ordinateur, le logiciel avec lequel nous
travaillons nous propose généralement d'interagir avec lui dans des
fenêtres contenant différents éléments classiques : des zones d'édition,
des cases à cocher, des boutons à cliquer,...
L'ensemble des éléments cités plus haut figure alors dans ce que l'on
appelle une fenêtre, une boîte de dialogue ou plus généralement une
interface utilisateur :l'endroit où l'humain communique avec la
machine, lui fournit des données et reçoit les résultats des traitements
par l'ordinateur.
Le travail de l'ordinateur se fait en sous-sol
Lorsque l'ordinateur reçoit l'instruction de traiter les données fournies
par l'utilisateur, il exécute une série plus ou moins longue d'instructions
afin de produire les résultats souhaités.
Mais j'aimerais bien voir l'ordinateur travailler, moi. Le travail des
autres m'a toujours fasciné.
Malheureusement, il est impossible de voir ce travail se réaliser. Tout
se passe dans les circuits électroniques du processeur. Quelques
mouvements (complexes) d'électrons, tout au plus...
En gros, il se confirme que l'essentiel est invisible pour les yeux !
Quelle culture!
Le travail du concepteur du logiciel
Lorsque l'on conçoit un logiciel, il y a donc au moins deux tâches à
réaliser :
1. concevoir une interface utilisateur claire et pratique
2. imaginer les instructions nécessaires à l'ordinateur pour produire
les résultats espérés.
Lorsque nous travaillerons à concevoir des logiciels avec Delphi Pascal,
nous aurons donc deux types d'activités :
1. concevoir des interfaces utilisateurs encore appelées des
fiches dans le vocabulaire de Delphi
2. imaginer les instructions qui constitueront les programmes.
La conception des fiches
L'interface utilisateur contient un certain nombre de " contrôles " (cases
à cocher, zones d'édition, listes déroulantes,...) qui permettent :
1. à l'utilisateur de
fournir des informations à l'ordinateur (les entrées) et
2. à l'ordinateur de fournir les résultats de ses traitements (les
sorties).
Lors de la conception des fiches, nous allons donc disposer les
" contrôles " nécessaires sur les fiches.
Dans le vocabulaire de Delphi, les " contrôles " sont appelés des
composants.
Dans l'exemple ci-dessus, une fiche en cours d'élaboration contient des
composants de différents types : zones d'édition, boutons d'options,
étiquettes, bouton d'action,...
La rédaction des programmes
A un signal donné (un clic sur un bouton, la frappe d'une touche au
clavier,...), l'ordinateur devra exécuter une série plus ou moins
complexe d'instructions.
Ces instructions seront décrites en langage Pascal dans l'éditeur de
code de Delphi.
La fenêtre dans laquelle l'utilisateur entre en contact avec l'ordinateur
est appelée
Interface utilisateur
Interface ordinateur
Compilateur
Fiche
Dans le vocabulaire de Delphi Pascal, une fiche est
Une interface utilisateur en construction
Un " contrôle " à placer dans une interface utilisateur
Un programme d'ordinateur
Dans le vocabulaire de Delphi Pascal, un composant est
Un programme d'ordinateur
Un "contrôle" à placer sur une fiche
Une interface utilisateur
Quand les notions d'interface utilisateur et de programme sous-jacent
sont clairement définies dans ton esprit, passe à la page suivante.
4. Structure d'un "projet" en Delphi Pascal
Interfaces utilisateur et application Delphi Pascal
En général, dès qu'un logiciel devient un peu complexe, il présente plusieurs
interfaces utilisateur. Ainsi, un logiciel de traitement de textes offrira des interfaces
utilisateur pour :
mettre en forme les paragraphes (retraits, espacements, tabulations,...)
mettre en forme les caractères (couleur, police de caractère, taille,...)
imprimer les documents (choix des pages à imprimer, orientation des pages,
nombre d'exemplaires,...)
enregistrer les documents (nom de fichier, format,...)
...
Un logiciel complexe réalisé avec Delphi Pascal pourrait donc demander de concevoir
plusieurs fiches.
Comment enregistrer son travail
Une application réalisée avec Delphi Pascal est encore appelée un projet. Chaque
projet peut comporter un nombre indéfini de fiches, selon les besoins.
Lorsque l'on veut enregistrer son travail, il faut donc sauvegarder :
le projet, dans un fichier qui porte l'extension .dpr (qui rappelle qu'il s'agit
d'un projet en Delphi ;
chaque fiche et les instructions liées aux composants qu'elle contient dans un
fichier .pas (qui rappelle qu'il s'agit de langage Pascal).
L'illustration ci-dessous présente deux projets. Le premier contient 3 fiches ; le
deuxième en contient seulement deux.
Dites, ils ne se sont pas trop foulés, les concepteurs de Delphi. Ils n'auraient pas
pu penser à enregistrer toutes les fiches ensemble dans le projet ?
Si je compte bien, il faut 4 enregistrements différents rien que pour l'application
projet 1.dpr.
Tout à fait exact : quatre enregistrements sont nécessaires : le projet et chacune
des trois fiches.
Mais nous allons voir l'avantage que présente cette méthode maintenant.
Dans l'exemple suivant, le programmeur du projet 4 s'est rendu compte qu'il a déjà
élaboré une fiche qui répond à ses besoins dans le projet 3.
Plutôt que de recommencer tout le travail, il pourra indiquer qu'il souhaite
simplement reprendre la fiche 6 de l'autre projet.
Super, cette méthode de recyclage. Elle convient tout à fait à mon naturel
paresseux. J'espère que je pourrai souvent l'utiliser.
Pas de chance, dans le cadre de ce cours, les applications compteront rarement
plus d'une seule fiche.
Attention, danger
Le " recyclage " des fiches conçues précédemment est évidemment un gros avantage
lorsque l'on conçoit de nombreux projets de grande ampleur. Mais il présente un
piège, si l'on n'y prend pas garde.
Dans l'exemple ci-dessous, deux projets différents contiennent chacun une seule
fiche nommée FicheX.pas.
Ces deux projets ne peuvent pas être enregistrés dans le même répertoire.
Pour quelle raison ?
Parce que deux projets, c'est vraiment trop gros pour un seul répertoire.
Deux fichiers situés dans le même répertoire porteraient le même nom.
Parce que le nombre de fichiers possibles dans un répertoire est trop limité.
Combien de fiches peut compter un projet Delphi, au maximum?
Aucune
Une seule
Maximum 4
Il n'y a pas de limite
Derniers conseils
Avant de démarrer, essaie de bien comprendre l'intérêt des différents conseils qui
suivent. N'oublie pas d'en profiter durant ton travail.
Chaque exercice proposé dans le cours fait l'objet d'une nouvelle application.
Chaque application est enregistrée dans un fichier .dpr qui porte un nom
évocateur (et non projetx.dpr comme le propose Delphi).
Chaque fiche est enregistrée dans un fichier .pas qui porte un nom évocateur
(en nom UnitX.pas).
Chaque projet est enregistré dans un répertoire qui permet de retrouver
facilement tel exercice présenté à telle page du cours.
Et donc, l'exercice 3 de la page 8 de la leçon 7, je l'enregistre dans un répertoire
appelé Chap7p8ex3, par exemple ?
Voilà un nom qui n'est guère joli, mais qui a le mérite d'être efficace !
Quand tu es prêt(e) à tenir compte des derniers conseils présentés ci-dessus, passe à
la page suivante.
5. Utiliser l'interface de Delphi et exécuter un
programme
Avant d'utiliser le logiciel Delphi, voyons comment se présente l'écran
principal et tentons d'indiquer les différents éléments qui le composent.
Structure de l'interface
Au lancement de Delphi, on est confronté à une interface du type illustré ci-
dessous. On y distingue :
1. la palette des composants
2. le concepteur de fiches
3. l'éditeur de code (généralement caché derrière la fenêtre du
concepteur de fiches)
4. l'explorateur des objets
5. l'inspecteur d'objets
Si ce n'est déjà fait, démarre le logiciel Delphi.
Inspecte les différents éléments de l'interface.
Déplace la fenêtre du concepteur de fiches pour apercevoir la fenêtre
de l'éditeur de code.
Utilisation de l'interface utilisateur de Delphi
Nous allons, en quelques instants, concevoir un micro-programme de
traitement de textes.
Dans la palette des
composants, sélectionne, si nécessaire l'onglet Standard.
Clique sur le composant Memo
Clique ensuite n'importe où dans le concepteur de fiche : un
composant Memo y est déposé.
Redimensionne le Memo pour qu'il occupe la plus grand partie de la
fiche.
Nous avons déjà fini d'utiliser l'éditeur de Delphi : la partie du logiciel qui sert
à concevoir les programmes.
Enregistrer le projet en cours
Il est temps, maintenant, d'enregistrer le travail dans ton répertoire
personnel. L'enregistrement va se faire en deux temps.
Dans un premier temps, tu vas enregistrer la fiche contenant le composant
Memo que tu viens de composer.
Dans un deuxième temps, tu vas enregistrer l'ensemble du projet de
traitement de textes.
Prépare l'enregistrement en créant un
nouveau répertoire nommé ch1p5 dans ton répertoire personnel.
Dans le menu Fichier, sélectionne la commande Enregistrer le
projet sous...
Dans la première boîte de dialogue d'enregistrement, sélectionne ton
répertoire personnel puis dans ch1p5.
Remplace le nom par défaut Unit1.pas par le nom tdt.pas
Clique sur Enregistrer pour... enregistrer la fiche
Dans la deuxième boîte de dialogue d'enregistrement, remplace le
nom par défaut Projectx.dpr par le nom tdtxt.dpr.
Le nom du projet doit être différent du nom des unités qu'il contient.
Il est très important d'enregistrer tout projet avant l'étape suivante
qui est la compilation. Lors de cette dernière étape, le compilateur va
tenter d'écrire le programme exécutable sur le disque dans le répertoire par
défaut qui, pour des raisons de sécurité, se trouve... dans un répertoire
protégé contre l'écriture.
S'il ne peut pas écrire le programme, le compilateur va signaler l'erreur et
interrompre le processus de traduction.
Nous allons finalement demander au compilateur d'entrer en jeu et de
transformer le code Pascal qui a été écrit automatiquement en langage
machine.
Compiler le projet
Dans le menu Projet, sélectionne la commande Compiler tdtxt.
Après quelques instants de travail, le logiciel nous redonne la main. La
compilation a eu lieu : le code machine se trouve
dans la mémoire de l'ordinateur ;
dans ton répertoire personnel, sous la forme d'un fichier exécutable
(.exe).
Notre programme peut maintenant être exécuté.
Vous êtes sûr' Je ne l'ai rien vu faire, moi !
Tout à fait sûr. Simplement, le processus est très rapide et silencieux...
tant que tout se passe bien.
Nous allons d'ailleurs pouvoir exécuter le programme.
Exécuter le programme
Dans le menu Exécuter , sélectionne la commande Exécuter ou clique
sur l'outil ou frappe la touche F9.
Le programme s'exécute. Nous pouvons écrire comme bon nous semble dans
la fenêtre de notre micro-traitement de textes.
Pour interrompre, clique sur ou ALT + F4
Quand tu es capable de compiler un programme, passe à la page suivante.
6. Notion d'objet et de programmation objet
Notion d'objet
Dans le cadre de la programmation par objets, nous allons travailler
avec des entités du même type que la Fiche ou le Memo utilisés
dans le micro-programme de traitement de textes précédent.
Ces objets sont munis de deux types de caractéristiques principales :
ils disposent
1. D'un certain nombre de propriétés et
2. D'un certain nombre de méthodes, des actions que peut
réaliser l'objet
Analogie
Une automobile peut être comparée à un objet de la programmation.
Effectivement, elle dispose d'un certain nombre de
1. Propriétés : sa couleur, sa cylindrée, sa puissance moteur, le
nombre de places, le nombre d'airbags,...
2. Méthodes : démarrer le moteur, freiner, ouvrir une portière,
dégivrer la lunette arrière, klaxonner,...
Exercices
1. Montre qu'un lecteur de cassettes vidéo est comparable à un objet
de la programmation.
2. Même question pour un radio-réveil.
Quand tu as répondu aux deux questions, propose tes réponses au
professeur puis passe à la page suivante.
7. Les propriétés des objets de Delphi
Lors de la programmation en Delphi, nous allons manipuler des objets
qui disposent également
de propriétés et
de méthodes
Commençons par évoquer les propriétés.
Propriétés de l'objet Fiche dans l'inspecteur d'objets
La propriété Caption de la fiche
Si nécessaire, démarre
Delphi ou commence une nouvelle application: Fichier >
Nouvelle application
Dans l'inspecteur d'objets, repère le nom de l'objet en cours :
Form1 et recherche la propriété Caption ;
Modifie le contenu de la propriété Caption en y écrivant Fiche
numéro 1
Observe, pendant la frappe, le titre de la fiche.
La propriété Color de la fiche
Repère la propriété Color et clique
dans la zone indiquant la couleur
Une liste déroulante des différentes couleurs disponibles apparaît
Sélectionne la couleur bleue référencée par la notation clBlue
(signifiant, bien sûr, couleur bleue)
La couleur de la fiche se modifie instantanément.
La propriété Name de la fiche
Chaque objet porte un nom qui permet de l'identifier durant le
déroulement du programme qui le contient.
Recherche la propriété Name de la
fiche et indiques-y la valeur Fiche suivie de tes initiales (sans
espace entre Fiche et tes initiales) ; par exemple, Dominique
Dupont indiquera FicheDD.
Aucun effet visuel ne se manifeste ici : la propriété est pourtant bien
fixée, mais tout se passe au niveau de la mémoire de l'ordinateur ;
Examine maintenant l'éditeur de code (déplace éventuellement
la fiche) : le logiciel a tenu compte du nouveau nom ;
Examine le haut de la fenêtre de l'inspecteur d'objets et vérifie
que le nouveau nom est également pris en compte.
Autres propriétés à examiner
D'autres propriétés intéressantes de la fiche peuvent encore être
examinées et testées. Passe quelques minutes à expérimenter sur les
propriétés suivantes :
Left
Top
Width
Height
Cursor
Conclusion
Delphi est un outil de programmation visuelle. Dans ce concept, la
mise au point des programmes se fait dans une interface
ordinateur/programmeur qui facilite, au maximum, la visualisation des
effets souhaités à l'écran dès la conception.
En programmation non visuelle, il faut préciser manuellement
chacune des propriétés de l'objet.
Certaines propriétés ne peuvent cependant être répercutées
visuellement (Ex : le nom de la fiche) ou ne sont répercutées qu'à
l'exécution (Ex : la forme du curseur).
Delphi fait partie de la même famille de logiciels que Visual Basic ou
C++ Builder, par exemple.
Applications
Propriétés de l'objet Label dans l'inspecteur d'objets
Da
ns la palette standard, sélectionne l'objet Label à l'aide d'un
simple clic ;
Déplace la souris vers la fiche ;
Fais un nouveau clic à l'endroit où tu souhaites déposer l'objet
Label.
Vérifie la présence de deux objets, dans cette application, par
l'intermédiaire de l'inspecteur d'objets : la fiche et le Label ;
Pour activer la Fiche dans l'inspecteur d'objets, clique
n'importe où dans la fiche ;
Pour activer le Label dans
l'inspecteur d'objets, clique sur le Label sur la fiche.
Tu peux aussi sélectionner les objets dans la fenêtre de
l'arborescence des objets.
L'objet Label dispose d'un autre jeu de propriétés que la Fiche, bien
que certaines propriétés soient communes.
Passe quelques minutes à expérimenter sur les propriétés suivantes :
Caption
Color
Width
Height
Cursor
Name
La propriété
Font est constituée de plusieurs sous-items. On peut les atteindre en
cliquant dans la zone de définition de la propriété puis en cliquant sur
le bouton qui y apparaît. La boîte de dialogue classique de police de
caractères apparaît alors.
En cliquant sur le signe + à gauche du nom de la propriété, on ouvre
plusieurs lignes supplémentaires dans l'inspecteur d'objet. Chacune
des lignes permet de régler certains aspects
de la propriété Font.
Parmi les items qui apparaissent, la ligne
Style peut également être ouverte de la
même façon.
Propriétés de l'objet TEdit dans l'inspecteur d'objets
Sur une fiche vierge, dépose un
composant TEdit.
Dans l'inspecteur d'objets, modifie sa propriété Text de
manière à ce que la mention Edit1 soit remplacée par ton
prénom
Modifie également la fonte de la police de caractères et sa
couleur selon ton goût.
Autres objets
Etablis une fiche
semblable à celle de l'exemple ci-contre .
Modifie les propriétés des différents objets présentés de
manière à obtenir la plus grande ressemblance possible. Le
pointeur de souris a la forme de sablier uniquement lorsqu'il
passe sur le composant Memo.
Examine quelques autres propriétés de ces objets.
Quand tu es capable de modifier les propriétés des objets de Delphi,
passe à la page suivante.
8. Les propriétés "événements" des objets
Dans la programmation pour Windows, l'ensemble des logiciels en
fonctionnement est géré par des événements : telle touche a été frappée
au clavier, un clic du bouton droit de la souris a eu lieu, tel élément a été
activé, on a fait glisser la souris,...
Delphi gère les événements comme des propriétés des objets.
Les objets de Delphi sont également capables
de répondre aux événements.
Pour chaque objet, on trouve dans l'inspecteur d'objets l'ensemble des
événements auxquels il est capable de répondre.
L'illustration ci-contre présente l'inspecteur d'objets d'un composant de
type Tedit. Parmi les événements auxquels il est sensible, on voit :
OnChange : quand le contenu du composant change ;
OnClick : quand on y fait un clic de souris ;
OnDblClick : quand on y fait un double clic ;
OnEnter : quand on entre dans le composant (début d'édition)
OnKeyDown : quand on frappe une touche dans le composant ;
...
Pour indiquer une action à exécuter quand tel événement a eu lieu,
double clic dans la zone correspondant à l'événement.
Automatiquement, l'éditeur de code s'ouvre au bon endroit : il suffira
ensuite de compléter le texte de la procédure correspondante.
Nous apprendrons à utiliser l'éditeur de code sur une page ultérieure.
Pour ouvrir l'éditeur de code à partir de la fenêtre de l'inspecteur d'objet,
il faut
Faire un simple clic dans une propriété de l'objet visé
Faire un simple clic dans un événement de l'objet visé
Faire un double clic dans un événement de l'objet visé
Frapper la touche F9
Dites, j'ai malgré tout un petit soucis, parce que cela fait un peu
" charabia ", toutes ces expressions comme " onDragDrop " et autres.
Il est vrai que la connaissance d'un peu d'anglais n'est pas nuisible, ici.
Cependant, pour avoir toutes informations utiles, il suffit de faire un
simple clic dans la zone correspondant à l'événement et de frapper la
touche F1 pour déclencher l'aide intégrée du logiciel.
Ouah ! C'est magique !!
Quand tu es capable d'atteindre l'éditeur de textes pour associer du code
à un événement, passe à la page suivante.
9. Modifier les propriétés des objets
La qualification des objets
Jusqu’à présent, nous avons modifié les propriétés des objets en
changeant leurs valeurs dans l’inspecteur d’objet.
Cela peut aussi se faire dans le déroulement d’un programme.
Pour indiquer un objet et une de ses propriétés, on fait suivre le nom
de l’objet de la propriété que l’on souhaite désigner ; on sépare le
nom de l'objet de sa propriété par un « . ».
On écrira, par exemple :
OBJET . PROPRIETE
Label1 . Color
Fiche1 . Top
L’affectation d’une valeur à une propriété
En programmation, l’affectation est l’action de donner une valeur à
une propriété ou à une variable.
Le symbole qui sert à désigner l’affectation en langage Pascal est « :=
». Ce symbole varie en fonction du langage dans lequel on travaille :
en langage C et en Basic, le symbole est « = ».
Donc, pour changer la valeur d’une propriété sous Delphi, on écrira, par
exemple :
Label1.Color := Ce qui confèrera la couleur rouge au composant
clred appelé Label1.
Ce qui déplacera le coin supérieur gauche de la
Fiche1.Top :=
120 fiche à la coordonnée 120 depuis le haut de
l’écran.
Quand tu peux citer la syntaxe de l'instruction permettant d'affecter
une valeur à une propriété, passe à la page suivante.
6. Applications dans l'éditeur de code
Nous avons vu, à la page précédente, que la syntaxe pour l'affectation d'une
valeur à une propriété est du type objet.propriété := valeur.
Voyons ce que cela donne en pratique.
Changement de couleur d'un composant de type Tedit
Sur une fiche, dépose un composant de type Tedit dont tu
conserveras le nom Edit1 ;
Si nécessaire, active l'objet Tedit ;
Active l'onglet Evénements de l'inspecteur d'objets ;
Fais un double clic dans l'événement OnChange ;
L'éditeur de texte s'ouvre, le curseur se trouve dans la procédure
Tform1.Edit1Change, entre les mots begin et end.
A cet endroit, frappe l'instruction Edit1.Color:=clred, comme sur
l'illustration ci-dessous.
Compile et exécute ce programme.
Tente de modifier la valeur indiquée dans le composant TEdit : il vire
immédiatement au rouge.
Termine le programme en cliquant sur la case de fermeture .
Recommence en choisissant une autre couleur. La liste des couleurs
disponibles est indiquée dans la propriété Color de l'objet Tedit dans
l'inspecteur d'objets.
Changement de position d'un composant TButton
Sur une fiche, dépose un composant de type Tbutton dont tu
conserveras le nom et que tu placeras à la position 20 pixels du haut
de l'écran ;
Si nécessaire, active l'objet TButton ;
Active l'onglet Evénements de l'inspecteur d'objets ;
Fais un double clic dans l'événement OnClick ; l'éditeur de texte
s'ouvre, le curseur se trouve dans la procédure
TForm1.Button1Click, entre les mots begin et end ;
A cet endroit, frappe l'instruction Button1.Top := 50 ;
Compile et exécute ce programme.
Lors d'un clic de souris sur le bouton, celui-ci se déplace à la position 50
pixels depuis le haut de la fiche.
Fais de même avec une autre grandeur numérique du composant
TButton.
Modification d'une valeur de type texte
Sur une fiche, dépose un composant de type Tbutton dont tu
conserveras le nom et la valeur de Caption ;
Dans l'événement OnClick, indique l'instruction qui permettra de
changer la valeur de Caption : Button1.Caption := 'Cliqué' ;
Les informations de type Texte doivent être indiquées entre des apostrophes
en langage Pascal.
Compile et exécute ce programme.
Quand les trois applications demandées fonctionnent, passe à la page
suivante.
Cours informatique de programmation
Eléments de programmation en langage Pascal Delphi
Objectif
1. Plan
2. Auteur Pages : | 1| 2| 3| 4| 5| 6| 7| 8| 9| 10 | 11 | 12|
7. Exercices
1. Etablis une fiche dans laquelle un composant TLabel prend la
couleur rouge si l'on clique sur un bouton et la couleur bleue si l'on
clique sur un autre bouton. Enregistre le projet dans le sous-répertoire
RougeBleu dans ton répertoire personnel.
2. Etablis une fiche dans laquelle tu placeras un composant TEdit
quand le curseur entre dans le composant TEdit, ce dernier
prend la couleur rouge ;
quand le curseur sort de ce composant, il retrouve une couleur
bleue.
Conseil : examine attentivement les événements qui pourraient être
utiles. Enregistre le projet dans le sous-répertoire RougeBleuBis
dans ton répertoire personnel.
3. Etablis une fiche dans laquelle tu placeras un TButton et deux
zones TEdit. Quand on clique sur le bouton, le contenu de la première
zone TEdit se recopie dans la deuxième zone. Enregistre le projet
dans le sous-répertoire CopieEdit dans ton répertoire personnel.
4. Etablis une fiche dans laquelle tu placeras deux composants de
type TEdit ; le contenu du deuxième composant doit être
automatiquement identique à celui du premier composant, dès que
celui-ci change. Enregistre le projet dans le sous-répertoire CloneEdit
dans ton répertoire personnel.
5. Etablis une fiche dans laquelle tu places un composant de type
TButton à 100 pixels du bord gauche et un TLabel à proximité;
quand la souris se déplace au-dessus du bouton, celui-ci se déplace à
la position 200 pixels du bord gauche. Quand elle se déplace au-
dessus du TLabel, le bouton reprend sa place. Enregistre le projet
dans le sous-répertoire BoutonFarceur dans ton répertoire
personnel.
Quand tu as terminé les exercices, passe à la page suivante.
6. Exercices complémentaires avec un
composant non visuel
Le composant de type "Timer" est un composant non-visuel mais doté
également de propriétés et de méthodes. Leur nombre est toutefois
assez limité.
Nous allons voir que ce type de composant est très utile.
Les
composants de type "Timer" sont disponibles dans la palette des
composants, dans l'onglet Système.
Ils sont munis de deux propriétés importantes:
Enabled: qui indique si le
composant est actif ou ne l'est pas
Interval: qui indique combien de temps doit se passer avant
l'activation du seul événement que gère l'objet, OnTimer. Le
temps est indiqué en millisecondes.
Application 1
Démarre une nouvelle application.
Sur la fiche vierge, dépose
o un composant de type TTimer;
o un composant de type TButton;
o un composant de type TLabel.
La position du composant de type "Timer" sur la fiche est sans
importance. On ne le verra pas durant l'exécution du programme:
c'est un composant non visuel.
Affecte la valeur false à la propriété Enabled du composant
TTimer. Il est donc désactivé.
Affecte la valeur 3000 à la propriété Interval. Il va donc se
passer 3000 millisecondes, c.à.d. 3 secondes avant le
déclenchement de l'événement.
A l'événement OnTimer, affecte la procédure qui permet de
passer le composant TLabel en couleur rouge.
A l'événement OnClick du bouton, affecte la procédure qui
remet la propriété Enabled à la valeur True.
Que se passe-t-il lors de l'exécution de cette application?
Un clic sur le bouton provoque le démarrage du composant
"Timer".
Lorsque le temps prévu est écoulé, le composant "Timer"
provoque l'exécution de la procédure prévue: le changement
de couleur du composant TLabel.
Nous assistons donc une cascade de deux événements.
Application 2
Réalise une application qui contient
trois composants de type "Label" et un bouton.
Lorsque l'on clique sur le bouton, les trois composants de type "Label"
changent continuellement de couleur selon le schéma illustré sur
l'animation ci-contre.
Pour réaliser l'animation, il serait, par exemple, possible d'utiliser trois
composants de type "Timer" qui s'activent et se désactivent
successivement l'un l'autre.
Au départ, le premier "Timer" est activé par le clic sur le bouton.
Ensuite, il faut organiser correctement la cascade d'événements.
Fin de la leçon.