0% ont trouvé ce document utile (0 vote)
33 vues78 pages

Programmation

Transféré par

guildarte
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
33 vues78 pages

Programmation

Transféré par

guildarte
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 78

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.

Vous aimerez peut-être aussi