Diaporama n°2¶

Python "restreint"¶

I. Langage, code, exécution d'un programme¶

II. Les outils du programmeur¶

III. Python "restreint"¶

IV. Mini-projet¶

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 ...

Un élève en TP ...¶

"(l'interpréteur) Python fait n'importe quoi !!"¶

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é¶

image.png

image.png

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¶

image.png

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

image.png

A savoir faire avec Pyzo (suite):¶

  • Exécuter un programme (menu Run)

image.png

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

image.png

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 poursuit

  • si 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éens bool
  • 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

Variables globales / variables locales¶

variable globale :¶
  • définie à l'extérieur de toute fonction
  • utilisable partout dans le programme
variable locale :¶
  • définie à l'intérieur d'une fonction
  • utilisable à l'intérieur de cette fonction
  • -> à privilégier

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¶

In [ ]:
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é
In [ ]:
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
  • la valeur renvoyée est stockée dans la variable z (affectation)

Structures de contrôle¶

Instructions conditionnelles et itératives

  • if
  • for
  • while

IV. Mini-projet¶

Mastermind¶

image.png

Objectif : implémenter le jeu en Python "restreint"¶

(en 1 heure de préparation + 2 heures de programmation)¶

Règles du jeu¶

Noir : bonne couleur, bien placée

Blanc : bonne couleur, mal placée

image-3.png