Le langage Python
INFOS DU JOUR :
- Comme indiqué dans la rubrique "Contrôle des Connaissances", la date limite
de l'envoi de la version 2 de votre projet est placée au samedi 9
décembre. Je vous rappelle les modalités d'envoi :
- Créer une archive ZIP contenant l'intégralité des fichiers nécessaires à
l'exécution de votre programme, et nommer cette archive
"nombinomeA+nombinomeB+2.zip"
- Envoyer cette archive en pièce-jointe à l'adresse habituelle
miashs.prog2@gmail.com en mettant Version 2 comme titre de votre
mail
- Sujets d'examens des années précédentes :
Comme d'habitude, pour vous permettre d'être efficace dans vos révisions, je
vous mets en ligne, les sujets d'examen des trois années précédentes, ainsi
qu'un corrigé rapide pour chacun d'eux. Pour vous entraîner, essayez de faire
les sujets dans les conditions réelles du jour de l'examen, c'est-à-dire 1H30
d'épreuve, avec accès aux documents :
Sujet 2020
Corrigé 2020
Sujet 2021
Corrigé 2021
Sujet 2022
Corrigé 2022
- J'ai mis à jour la
répartition des binômes/monômes
entre les 3 groupes de TD pour tenir compte de quelques demandes de permutation
et pour équilibrer au maximum le nombre de projets dans les séances de suivi de
code. Merci de respecter cette répartition pour les deux séances restantes
(cette semaine et la prochaine)
- Note : Les infos du jour qui ne sont plus d'actualité,
sont systématiquement décalées en fin de page pour archivage. Vous y avez donc
toujours accès, mais elles n'encombrent plus le haut de la page...
1 - Objectifs :
Cette page a pour but de regrouper diverses ressources permettant
une introduction au langage de programmation Python. On y trouve
notamment :
- Des exemples de programmes, des exercices d'application
avec leur solution, ainsi que des projets plus complexes,
tous classés par niveaux de difficulté
- Des pointeurs vers quelques-uns des documents disponibles
sur le Web, pour l'apprentissage de la syntaxe et des fonctionnalités
du langage Python
- Un petite aide à l'installation et au démarrage de l'environnement
de développement Python sous Windows
Le contenu de l'UE comporte trois éléments pédagogiques principaux :
- Les diaporamas (cf. Rubrique 4, ci-dessous) qui fournissent les notions
théoriques
- Les exemples de programmes (cf. Rubrique 2) qui montrent ces notions
théoriques mises en pratique dans un code informatique
- Les exercices de programmation (cf. Rubrique 2) qui permettent une réflexion
et une pratique autonome par les étudiants
2 - Exemples, Exercices et Projets
3 - Contrôle des connaissances
Comme indiqué dans les modalités de contrôle des connaissances, la note
finale de l'UE est composée pour 2/3 de la note obtenue lors de l'examen
final et pour 1/3 de la note obtenue pour le projet. L'examen final aura
lieu lors de la session de janvier. Le sujet se composera de deux ou trois
exercices de programmation, similaires à ceux réalisés en TD. Les documents
sont autorisés, mais en fait, vous n'aurez besoin que des exemples et des
solutions des exercices vus en cours et en TD.
Les projets sont à réaliser en binôme. Quelques dérogations peuvent être
accordées pour la réalisation d'un projet en monôme (notamment pour les
étudiants qui ont déjà une très bonne maîtrise de la programmation), par contre
les trinômes ne sont pas autorisés. Ces sujets sont tous à difficulté variable
en fonction des éléments qui vous allez y intégrer, et une notation adaptée à
cette difficulté sela utilisée. Cette notation portera dans une très large
majorité sur la qualité du code (structuration, lisibilité, adéquation des
structures de données et des algorithmes) et dans une moindre mesure sur les
différentes fonctionnalités incluses dans le programme. En particulier, la
structuration du code en classes bien choisies, ainsi qu'un bon usage des
commentaires et des docstrings sur l'ensemble du programme seront des critères
de notation très importants. Par conséquent, la note finale d'un projet
avec peu de fonctionnalités mais bien conçu, peut largement dépasser celle d'un
projet très fourni mais bâclé.
La présentation des projets se déroulera durant une séance spécifique durant la
semaine 42 et vous aurez jusqu'à la fin de la semaine 43 pour constituer les
binômes. Un compte mail spécifique est mis en place, destiné à tous les échanges
liés aux projets: miashs.prog2@gmail.com (à utiliser impérativement).
Afin de suivre le projet en cours de réalisation, les séances de TD à partir de
la semaine 46 seront consacrées au suivi du projet.
Comme expliqué lors de la séance de présentation des projets, chaque binôme
devra envoyer des versions intermédiaires de son travail tous les 15 jours
durant la période allouée au projet. Plus précisément, les dates limites
pour l'envoi des deux versions intermédiaires correspondent à la fin des
semaines 47 (samedi 25 novembre) et 49 (samedi 9 décembre) respectivement.
La version finale sera envoyée à la fin de la semaine 01 (samedi 6 janvier).
Tous les envois se feront par courrier électronique à l'adresse mail
ci-dessus avec, en pièce-jointe, une archive ZIP ou RAR contenant l'ensemble des
fichiers sources du programme ainsi qu'un fichier "readme.txt" qui résumera
les travaux réalisés durant la quinzaine. Afin de permettre un classement
efficace des versions successives du projet, le nom de l'archive devra
impérativement être "nombinomeA+nombinomeB+N.zip" où 'N' représente le
numéro de la version envoyée (donc 1, 2 ou 3). Pour simplifier, les deux
patronymes des membres du binôme seront mis dans l'ordre alphabétique. Enfin,
le sujet du message correspondant contiendra également le nom de cette archive.
Comme la gestion de ces courriers électroniques utilise des filtres automatiques
sur les messages, il est IMPERATIF de respecter scrupuleusement ces modalités.
Le non-respect engendrera des points de pénalités sur la note finale.
La version finale devra contenir, en plus du code source, une courte (4 pages
max) documentation du programme (impérativement au format PDF). Cette
documentation ne doit pas faire double emploi avec le code source, mais au
contraire, doit permettre de préciser des éléments additionnels (choix
algorithmiques, limitations actuelles du projet, bilan chronologique de la
réalisation, etc) qu'il vous semblera utile de communiquer pour mieux faire
comprendre comment vous avez géré la réalisation de votre projet. Un message
d'accusé de réception sera envoyé pour chaque version finale, n'hésitez pas à
me relancer si vous n'avez pas eu de réponse après le 7 janvier.
Enfin, une séance de démonstration des différents projets sera organisée en
salle informatique durant la première semaine de rentrée, début janvier (la
date exacte sera établie en fonction des autres enseignements planifiés pour
cette semaine). Il faut compter entre 10 et 15 minutes par binôme, selon le
nombre de questions à poser. Un ordre de passage sera établi pour éviter les
embouteillages.
4 - Ressources pédagogiques
- Le site officiel de Python :
www.python.org
- La version courante (Python 3.11.5) pour Windows, Linux, Max OS :
téléchargement sur www.python.org
Remarque : les machines du CREMI utilisent une version plus
ancienne, mais cela ne change rien car toute version de Python >= 3.6.0 convient
pour l'ensemble des exemples/exercices qui seront vus durant le semestre
- Les diaporamas que j'ai utilisés durant les séances de cours,
en version imprimable (4 diapos par page):
Programmation 1
Programmation 2
Modélisation UML
- Pour une introduction générale au langage Python, il y a l'excellent
ouvrage "Apprendre à programmer avec Python",
par Gérard Swinnen (473 pages) :
téléchargement sur Inforef ou (plus rapide)
copie locale
- Pour la création d'interfaces graphiques en Python, il y a le manuel
"Tkinter Reference: a GUI for Python",
par John Shipman (168 pages) :
téléchargement sur NewMexicoTech ou (plus rapide)
copie locale
- Deux excellents mémos (résumé sur une feuille A4) sur le langage Python
ont été réalisés par Laurent Pointal :
- Le mémento Python,
résume la syntaxe de base et les éléments liés au paradigme procédural.
- L'abrégé Python, contient des
informations complémentaires sur la bibliothèque standard et
les éléments liés au paradigme objet
5 - Installation et utilisation de l'environnement Python sous Windows
Après avoir téléchargé le fichier, "python-X.Y.Z.msi"
(où X.Y.Z correspond au numéro de la version récupérée),
un double-clic sur celui-ci permet de lancer l'installation de
l'environnement Python sous Windows. A la fin de l'installation, il
doit y avoir une nouvelle entrée "Python X.Y" dans le menu Démarrer.
L'environnement de programmation se lance alors en cliquant sur
l'entrée "IDLE" de ce menu. La fenêtre suivante s'affiche :
A partir de ce moment, on peut soit entrer des commandes Python
directement dans la fenêtre "Python Shell",
soit créer une fenêtre d'édition (raccourci
clavier : Ctrl+N) pour saisir un programme
complet :
A tout moment, un appui sur F5 permet d'exécuter le contenu de
la fenêtre d'édition sélectionnée.
ARCHIVAGE DES ANCIENNES "INFOS DU JOUR"
- Travail préparatoire pour les séances de TD du 13/09 et 14/09 :
- Installer l'environnement Python sur votre ordinateur personnel
- Récupérer et décompresser le fichier EXP-C.zip (Exemples Niveau C)
- Tester et lire les codes des exemples pour vous (re)familiariser avec la bibliothèque ezTK
- Travail préparatoire pour les séances de TD du 20/09 et 21/09 :
- Finir les exercices E2 et E3 en prenant modèle sur l'exercice E1, et en
utilisant les squelettes fournis dans la rubrique "Solutions Niveau E"
- J'ai mis en ligne, dans la rubrique Solution Niveau E, les
corrections des exercices E1, E2 et E3. Pour chaque exercice, deux codes de
complexités différentes sont fournis : la version A est une version minimale,
alors que la version B inclut des fonctionnalités plus avancées. Il est
important de passer du temps en travail personnel pour comprendre tous ces codes
et notamment les différences entre les deux versions d'un même programme
- Travail préparatoire pour les séances de TD du 27/09 et 28/09 :
- Finir l'exercice E4 en rajoutant un retour visuel quelconque (affichage d'un
message, changement de couleur, animation des grenouilles, ou autre) pour
indiquer au joueur qu'il a gagné la partie
- Travail préparatoire pour les séances de TD du 04/10 et 05/10 :
- Finir l'exercice E6 en rajoutant les lignes de code permettant de détecter
la configuration gagnante
- J'ai mis en ligne, dans la rubrique Solution Niveau E, les
corrections des exercices E4 et E6. Pour chacun des deux exercices, la version
A est celle qui se pilote à la souris, et la version B celle qui se pilote au
clavier avec les touches flèches
- J'ai mis en ligne, dans la rubrique Solution Niveau E, deux versions
de la correction de l'exercice E9. La version A correspond à celle faite en TD,
elle affiche un carré de couleur pour chaque pixel du fichier "pixelart" choisi.
La version B est celle qui remplace les pixels carrés par des disques dont la
position est perturbée aléatoirement, et qui rajoute une animation durant
laquelle les disques s'effacent de manière séquentielle. Comme d'habitude, je
vous conseille de prendre du temps pour bien étudier le code fourni, car vous
pourrez y trouver des éléments importants pour les différents sujets de
projets
- Travail préparatoire pour les séances de TD du 18/10 et 19/10 :
- Finir l'exercice D1 en rajoutant les lignes de code permettant de compléter
les méthodes manquantes de la classe deck
- Les sujets des projets 2023 sont disponibles dans la rubrique Projets de
Programmation ci-dessous. Lors de la séance de cours du jeudi 19 octobre,
je donnerai des explications plus complètes sur ces 4 sujets, ainsi que sur le
calendrier et les modalités pour la remise des différentes versions du projet.
Pendant les séances de TD des 25 et 26 octobre, je ferai passer une feuille
d'inscription pour récupérer la répartition des binômes et le choix des sujets
par binôme
- Pour les étudiants ayant choisi le sujet 2, j'ai rajouté
une archive ZIP qui contient un squelette
pour le code à réaliser, similaire à celui fourni pour le sujet 1. J'ai
également rajouté quelques explications dans la présentation du sujet.
- Comme promis, voici les noms des étudiants qui n'ont pas encore trouvé de
binôme pour le projet. Je vous laisse vous contacter entre vous pour tenter
de trouver un binôme qui souhaite travailler sur le même sujet :
BAGHI Abdel / EZIN Philia / FOFANA Adama Rakim / GARNIER
Mathis
De même, pour les personnes qui n'étaient pas présents au dernier TD, il faut
vous inscrire de manière urgente en m'envoyant un mail à l'adresse
miashs.prog2@gmail.com.
- Comme indiqué dans la rubrique "Contrôle des Connaissances" ci-dessous,
la date limite de l'envoi de la version 1 de votre projet est placée au samedi
25 novembre. Je vous rappelle les modalités d'envoi pour les différentes
versions du projet :
- Créer une archive ZIP contenant l'intégralité des fichiers nécessaires à
l'exécution de votre programme, et nommer cette archive
"nombinomeA+nombinomeB+N.zip" où N représente le numéro de la
version du projet (donc forcément N=1 pour l'envoi de ce samedi)
- Envoyer cette archive en pièce-jointe à l'adresse habituelle
miashs.prog2@gmail.com en mettant Version N comme titre de votre
mail (où N représente à nouveau le numéro de version)
- J'ai rajouté les corrigés de l'ensemble des exercices de Niveau D dans la
rubrique "Solutions Niveau D", y compris des exercices qui n'ont pas été traités
en TD. J'ai également rajouté au même endroit un fichier SOL-D.pdf qui
contient le listing sous forme compact (double colonne) de l'ensemble des codes
Python pour ces exercices. De même, il y a un fichier SOL-E.pdf dans la
rubrique "Solutions Niveau E". Et je rappelle que j'avais mis au début du
semestre les fichiers EXP-D.pdf et EXP-E.pdf dans les rubriques
correspondantes.
Il est fortement conseillé d'imprimer ces quatre fichiers et de les amener
avec vous le jour de l'examen.
...
Christophe Schlick