Programmation
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
Savoir
1. Expliquer le rôle des différents niveaux de langages informatiques, depuis le binaire jusqu’aux
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
Savoir faire
5. Utiliser une méthode de travail rigoureuse pour résoudre des problèmes de programmation
Savoir
Savoir faire
binaire)
(arbre binaire)
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 ;
code Pascal.
4. Expliquer la nécessité des langages d’ordinateur, à mi-chemin entre le langage machine et le
langage humain ;
7. Expliquer la notion d’objet dans le cadre de la programmation et montrer comment des " objets "
8. Illustrer la notion d’" événement " dans le cadre de la programmation par objets ;
Savoir faire
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
Objectif
1. Plan du cours
2. Auteur CC Pages : | 1 | 2 | 3 | 4 | 5 | 6| 7 | 8 |
Cette partie du cours aura pour but de nous familiariser avec les
concepts principaux de la programmation des ordinateurs.
Ce langage a été conçu par Guido van Rossum, fan inconditionnel des
Monty Python. D'où le nom.
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.
Le langage machine
Ce n'est pas tout à fait faux. C'est un exercice dans lequel il faut
être intelligent à la place de l'ordinateur.
L'assembleur
Quelques exemples
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"
Le compilateur
Les interpréteurs
>>> print 4 / 2
>>> print 5 / 2
>>> print 14 / 4
>>> print 31 / 9
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.
>>> print 5 / 3
>>> print 5 % 3
>>> print 20 / 7
>>> print 20 % 7
>>> toto = 7
>>> print "schtroumpf"
>>> schtroumpf = "Bonjour le monde"
>>> print "toto"
>>> print toto
>>> print schtroumpf
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
Exercices
6. De vrais programmes
Jusqu'à ce point, nous avons écrit des suites d'instructions dont nous
avons observé l'exécution immédiate.
longueur = 10
largeur = 20
~$ python exercice1.py
Exemple:
Exemple
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.
La fonction input() demande un argument (qui peut être vide) qui est
de type chaîne de caractère.
~$ python programme.py
~$ programme.py
~$ programme
#! /usr/bin/python
#! /usr/bin/python
longueur = input ("Quelle est la longueur? ")
largeur = input ("Quelle est la largeur? ")
.....
~$ /usr/bin/python
#! /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.
~$ input.py
Observe le résultat
toto@info17:~$ input.py
bash: input.py : commande 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
~$ /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
...
~$ ./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.
~$ ls -l
Frappe la commande
~$ ls -l
~$ 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.
1. Un jeu à programmer
Enoncé du problème
Comment faire ?
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.
Données
Résultat
Le nom du gagnant
Résolution
Pair ou impair ?
Exemples
1 7 3 8
1 6 ·
· 21
1 3
8
Reste: 5
c'est-à-dire
173 % 8 = 5
>>> 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.
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
Révision
3. Résolution commentée
#! /usr/bin/python
if (somme % 2 == 0):
if (somme % 2 == 0):
gagnant = "le joueur A"
if (somme % 2 == 0):
gagnant = "le joueur A"
else:
if (somme % 2 == 0):
gagnant = "le joueur A"
else:
gagnant = "le joueur B"
#! /usr/bin/python
Données
1. la température
Résultat
Résolution
Si tempéreture > 20
Alors objet1 = "maillot"
objet2 = "crème bronzante"
Sinon objet1 = "parapluie"
objet2 = "pull"
Fin Si
#! /usr/bin/python
# -*- encoding: ISO-8859-1 -*-
********
#! /usr/bin/python
# -*- encoding: ISO-8859-1 -*-
Données
1. le paramètre a
2. le paramètre b
Résultat
La valeur de x.
Résolution
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
#! /usr/bin/python
# -*- encoding: ISO-8859-1 -*-
********
if (a <> 0):
if (a <> 0):
solution = -b/a
else:
if (a <> 0):
solution = -b/a
else:
if (b == 0):
solution = "indéterminé"
else:
solution = "impossible"
#! /usr/bin/python
# -*- coding: ISO-8859-1 -*-
if (a <> 0):
solution = -b/a
else:
if (b == 0):
solution = "indéterminé"
else:
solution = "impossible"
" 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
"Il ne faut pas allumer de feu près d'une réserve de dynamite de peur
de provoquer une explosion."
On optera alors pour une version " allégée " de la phrase alternative,
dans laquelle on n'envisage qu'une seule branche.
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.
Résolution
Données
Le nombre
Résultat attendu
Résolution
Si nombre < 0
Alors nombre = -nombre
Fin Si
#! /usr/bin/python
# -*- encoding: ISO-8859-1 -*-
********
#! /usr/bin/python
# -*- encoding: ISO-8859-1 -*-
7. Alternative complexe
Problème
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 vraie, alors l'année est bissextile, sinon, elle n'est
pas bissextile. Dans tous les cas, le travail est terminé.
Résolution commentée
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 -*-
if (an % 4 == 0):
if (an % 100 == 0):
if (an % 400 == 0):
bissextile = "Oui"
else:
bissextile = "Non"
else:
bissextile = "Oui"
else:
bissextile = "Non"
Analogie culinaire
Quand Python fâché, lui toujours dire des gros mots comme cela...
L'interpréteur
Python ne reconnaît pas le mot 'cos'. Ce qu'il indique par le message
NameError: name 'cos' is not defined
Frappe la commande
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.
9. Exercices
Une autre fonction nous sera encore utile: la fonction =ent() demande
un seul argument dont elle retourne la partie entière.
fin du cours.
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.
2. De l'humain à la machine
Le langage machine
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.
L'éditeur de code
Le compilateur
Il existe un grand
nombre de compilateurs. Chacun est spécialisé dans le traitement de
l'un ou l'autre langage évolué.
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
Interface utilisateur
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.
Quelle culture!
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).
Dans le vocabulaire de Delphi, les " contrôles " sont appelés des
composants.
Un logiciel complexe réalisé avec Delphi Pascal pourrait donc demander de concevoir
plusieurs fiches.
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.
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).
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.
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.
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.
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.
Structure de l'interface
Nous avons déjà fini d'utiliser l'éditeur de Delphi : la partie du logiciel qui sert
à concevoir les programmes.
Le nom du projet doit être différent du nom des unités qu'il contient.
Compiler le projet
Exécuter le programme
Le programme s'exécute. Nous pouvons écrire comme bon nous semble dans
la fenêtre de notre micro-traitement de textes.
Notion d'objet
Analogie
Exercices
de propriétés et
de méthodes
Conclusion
Applications
L'objet Label dispose d'un autre jeu de propriétés que la Fiche, bien
que certaines propriétés soient communes.
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.
Autres objets
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.
OBJET . PROPRIETE
Label1 . Color
Fiche1 . Top
Donc, pour changer la valeur d’une propriété sous Delphi, on écrira, par
exemple :
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.
Les informations de type Texte doivent être indiquées entre des apostrophes
en langage Pascal.
Objectif
1. Plan
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.
Application 1
Application 2
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.
Fin de la leçon.