I. Langage, code, exécution d'un programme¶
Langage (de programmation)¶
Un langage de programmation est :
- un mode de communication écrit ("langage"),
avec une syntaxe (façon d'écrire) et une sémantique (sens de ce qui est écrit)
- qui vise à faire réaliser ("programmation") une tâche à un exécutant (un esclave, un petit frère, l'interpréteur Python, un microprocesseur ...)
Code (source)¶
Le code (source) ou programme est écrit par un Programmeur
il représente ce que l'exécutant doit faire, de manière détaillée et non ambiguë.
pour ce début d'année ...¶
- Le langage de programmation : le langage Python
- le programmeur : vous
- le code source : le fichier
.py
- l'exécutant : l'interpréteur Python
NB : ne pas confondre
- le langage Python : les règles d'écriture d'un programme ("en (langage) Pyhon, on indente obligatoirement le code")
- l' interpréteur Python : le programme qui lit puis exécute le code ("(l'interpréteur) Python me dit que mon code est mal écrit ...")
NBNB : c'est un programme qui exécute votre programme ...
Exécution d'un programme¶
A la demande (Ctrl + E
ou autre ...), l'ordre est donné à la Machine (l'exécutant) d'exécuter le code.
- 1ère étape : lecture du code (est-ce que l'exécutant comprend ce qui est écrit ?). Possibilité d'Erreur de Syntaxe (et pas d'exécution du code)
- 2ème étape : exécution du code, ce qui est écrit dans le code est réalisé, pas à pas, par l'exécutant. Possiblité d'Erreur à l'exécution
NB : bien distinguer ces deux types d'erreur¶
- erreur de syntaxe : le code n'est pas parfaitement écrit en langage Python
- erreur d'exécution : le code est parfaitement écrit en langage Python, mais une opération invalide est réalisée au cours de l'exécution
ATTENTION : si le code contient une erreur de syntaxe, l'exécution du code ne démarre pas !
Au cours de l'exécution du code, l'exécutant :
- va aussi vite qu'il le peut.
- affiche parfois des informations dans la console (il exécute un appel
print(...)
)- et se fiche complètement de savoir si quelqu'un les lit ...
- sollicite parfois un utilisateur via la console (il exécute un appel
input(...)
)- et attend patiemment que quelqu'un lui réponde ...
L'exécutant est très bête, mais très rigoureux et très rapide
Le programmeur est beaucoup plus intelligent, mais fait parfois souvent des erreurs
La mise au point d'un programme peut être assez "douloureuse"
et nécessite souvent de nombeux allers-retours entre le programmeur et l'exécutant ...
l'exécutant ne fait que ce qu'on lui dit de faire (et il le fait de manière rigoureuse ...)
c'est donc le code de l'élève qui fait n'importe quoi !
Le problème se trouve toujours du côté du programmeur ou de l'utilisateur (" entre la chaise et le clavier ")
NB
Prenez l'habitude d'exécuter votre script entièrement
Si le code est clair et vous semble correct, redémarrez la console (parfois l'interpréteur Python a effectivement un comportement étrange ...)
Résumé¶
NB : vous jouez souvent le rôle de programmeur et utilisateur. Mais ce sont deux rôles fondamentalement différents
II. Les outils du programmeur¶
Outils de programmation (Environnement de développement)¶
Au minimum :¶
Un éditeur de texte (le code source est une simple suite de caractères dans un fichier)
Un interpréteur Python : le programme qui fait le travail de l'exécutant (dans le cas du langage Python)
Une console/un terminal : qui permet de déclencher l'exécution, et interagir avec l'utilisateur
NB : certains les éditeurs sont spécialisés pour la programmation :
- colorisation automatique,
- fonctionnalité de mise en commentaire d'une partie du code ...
Attention : word, libreoffice ne conviennent pas (ils manipulent des fichiers qui contiennent beaucoup plus que le texte)
Le plus souvent :¶
On utilise un Environnement de Développement Intégré (IDE en anglais) qui regroupe les éléments précédents dans une seule application.
Pour le langage Python : Edupython, Spyder, Idle, Pyzo ...
Interface graphique Pyzo¶
A savoir faire avec Pyzo :¶
- Gestion de fichier (menu File) : ouvrir / enregistrer / fermer un fichier
- Edition de texte (menu Edit) : undo-redo / copier-coller (?) / indenter-désindenter / commenter-décommenter
A savoir faire avec Pyzo (suite):¶
- Exécuter un programme (menu Run)
NB : exécuter le programme en entier plutôt qu'utiliser la console
A savoir faire avec Pyzo (suite):¶
- Interrompre l'exécution d'un programme, redémarrer l'interpréteur Python, fermer la console
III. Python "restreint"¶
le langage Python n'est pas au programme d'informatique MP2I / MPI
mais
il y a un peu de Python en maths et en Physique
possibilité d'utiliser Python en TIPE
Python "restreint" :
une toute petite partie du langage Python
qui nous permettra d'écrire simplement nos premiers algorithmes à analyser
en prévision de l'apprentissage du C
fiche Mémo-Python (restreint)¶
A distribuer
Généralités¶
- indentation : spécificité Python
- assert : pour tester le bon fonctionnement de votre code
assert(
condition)
¶
si condition s'évalue en
True
, l'exécution se poursuitsi condition s'évalue en
False
, l'exécution s'arrête : message d'erreur "Assertion failure"
exemple d'utilisation : assert(ma_fonction_min([7,5,11])==5)
permet de vérifier que ma_fonction_min
fonctionne correctement ... sur cet exemple
Types et opérateurs¶
- types numériques
int
float
et booléensbool
- type
None
: certaines fonctions ne renvoient rien - types séquentiels
str
tuple
list
NB (Python restreint) : liste d'éléments de même type uniquement (liste homogène)
Variable et affectation¶
NB (Python restreint) : on s'interdit d'utiliser une même variable pour stocker des valeurs de types différents
NB : algorithme d'échange de contenu de deux variables a
et b
- sans affectation simultanée
- avec affectation simultanée
Fonctions¶
fonctions de conversion :
int(...)
,str(...)
,float(...)
fonctions prédéfinies (sans import) :
abs(...)
fonctions prédéfinies (avec import) :
sqrt(...)
,randint(...)
fonctions d'entrée/sortie vers la console :
input
,print
définir une fonction :
def maFonction(a,b,c) :
appeller une fonction :
z = maFonction(2,4,7)
Rappel sur le mécanisme d'appel de fonction¶
def maFonction(a,b,c):
"""additionne les 3 paramètres"""
res = a+b+c
return res # ou directement return a+b+c
- la fonction
maFonction
est définie (variable globale) - aucun calcul n'est réalisé
x = 2
z = maFonction(3,x,x-1)
- la fonction
maFonction
est appelée - ici plusieurs calculs sont réalisés
- étape1: calcul des valeurs des paramètres :
3
,2
,1
- étape2: exécution du corps de la fonction avec
a=3
,b=2
,c=1
- étape3: valeur renvoyée :
6
- étape1: calcul des valeurs des paramètres :
- la valeur renvoyée est stockée dans la variable
z
(affectation)