Programmation Impérative (en Python) 2015-2016 H. Collavizza [email protected] Vous avez dit informatique ? Un peu de vocabulaire Matériel (hardware) Logiciel (software) • Information en binaire • Suite d'instructions pour (0/1), organisée en mots de effectuer des actions sur le 8 bits (octets) matériel • Unité centrale : mémoire • Doit être traduit en binaire vive (RAM), cache, unité • Système d’exploitation de calcul, unité de contrôle, • Outils : excel, word,... ... • Périphériques : clavier, écran, souris, imprimante, ... • Butineurs • Jeux • Programmes applicatifs Informatique en PeiP PeiP1 • Environnement informatique • Programmation (langage Python) • Jeux et stratégies (TPs en Python) • Environnement informatique (Python) PeiP2 • Introduction au WEB • Programmation (langage Java) • Algorithmique (langage Java) • Applications du WEB Sem1 Sem2 Informatique au PeiP... Environnement informatique : savoir se servir de sa machine Semestre 1: connaissance de l'ordinateur, fonctions de base Semestre 2 : programmation en Python de fonctions élaborées (traitement par lots des fichiers, connection à un serveur, ...) Informatique au PeiP ... Programmation : écrire des programmes PeiP1: impérative en Python (stocker les données, séquencer les opérations, structurer le code) PeiP2 : objet avec Java (opérations et données sont rassemblées dans des boîtes à outil) Jeux et stratégies : formaliser, résoudre des problèmes Introduction et applications du WEB : savoir faire des pages web, un serveur Programmation ... • Programme : suite d'instructions que la machine doit exécuter. Le programme s'écrit dans un langage de programmation. • Langage : règles lexicales (les mots), règles syntaxiques (les phrases), règles sémantiques (le sens) Exemples : • x1 est un nom en Python, 1x ne l’est pas • cos(x) est la bonne syntaxe pas cos x • On ne peut pas diviser un texte par un entier Programmation ... Le programme doit être traduit en code exécutable pour la machine. Langages compilés : traitement du programme en entier et génération d’un fichier exécutable (phases d’analyse, génération de code objet et binaire) Langages interprétés : les instructions sont exécutées au fur et à mesure par un interprète Langages hybrides : génération d’un bytecode et interprétation du bytecode Python • Langage interprété (génération de bytecode) • Simple à utiliser mais complet (scripts de quelques lignes ou programmes) • Programmation modulaire (et objet) • De nombreuses bibliothèques (compression des données, cryptographie, ...) Python ... • Interpréteur : là où s'exécutent les programmes Utile aussi pour faire des petits essais • Éditeur : pour garder les programmes et les modifier • Une démo ... Programmation Ecouter le besoin de l'utilisateur Modéliser le Programmer problème : l'algorithme algorithme, plan de validation Ne pas casser la machine si ça ne marche pas !!! Tester puis s'assurer que l'utilisateur est satisfait Programmation : le jeu des allumettes • Prendre 1, 2 ou 3 allumettes chacun son tour • Celui qui prend la dernière allumette a gagné Modélisation : données et actions Données : nombre d'allumettes Actions – Afficher les allumettes restantes – Demander au joueur de retirer des allumettes – Faire « jouer » l'ordinateur Modélisation : l'algorithme Tant qu'il reste des allumettes : – Faire jouer le joueur – Mettre à jour le nombre d'allumettes – S'il n'y a plus d'allumettes : le joueur a gagné – S'il reste des allumettes : • Faire jouer l'ordinateur • Mettre à jour le nombre d'allumettes • S'il n'y a plus d'allumettes, l'ordinateur a gagné Besoins • Stocker une valeur : variable • Tester une condition : if else • Répéter des actions : while • Tirer un nombre au hasard : random • Décomposer les tâches : les fonctions Une démo en Python ... Extensions • Interface : affichage graphique des allumettes, afficher le temps de réflexion de l'ordinateur • Robustesse (le programme ne plante pas) : vérifier que le joueur retire un nombre d'allumettes correct (1,2 ou 3) • Une démo … Extensions... • Algorithme : il existe une stratégie gagnante – Nombre d'allumettes de la forme 4*p – Le joueur commence – A chaque étape, l'ordinateur retire 4-i allumettes où i est le nombre choisi par le joueur – Puisque i=1,2 ou 3, (4-i) = 1,2 ou 3 – On va arriver à 0 allumettes : 4*(p-1), 4*(p-2), ..., 4*0 • Le joueur retire i allumettes → il reste 4*p-i allumettes • L'ordinateur retire (4-i) allumettes → il reste 4*p-i-(4-i) = 4*(p-1) allumettes Extensions... • Tirer aléatoirement qui commence • Tirer aléatoirement le nombre maximum max d'allumettes que l'on peut retirer et avoir (max+1)*k allumettes au départ • L'ordinateur n'applique pas la stratégie gagnante pendant x tours • Autres idées ? Programmation : conclusion 1. Analyser le problème : décomposition, algorithme, plan de validation 2. Programmer : tous les langages de programmation permettent de stocker des valeurs, tester des conditions, répéter des actions, décomposer le programme en fonctions 3. Tester : penser à tous les cas possibles Programmation : conclusion ... 4. Étendre : il ne suffit pas que ça marche, il faut que le programme soit BIEN écrit ! • Commentaires : aide indispensable quand on reprend le code • Clarté : les noms utilisés doivent avoir un sens (bannir a, b, c, ...) • Structure : répétition et fonctions Exemple : programme BIEN écrit Dessin d’un carré de longueur 100 avec la tortue Python : • La tortue sait avancer d'une certaine distance d en traçant un trait forward(d) • Elle sait tourner à gauche d'un certain angle a à partir de sa direction actuelle left(a) Peut-on facilement étendre le programme du carré pour dessiner un octogone ? Programmation Impérative PeiP1 • http://users.polytech.unice.fr/~helen/pythonCIP1/ • Contrôles de TD type QCM/exercices de cours coeff 1 • Contrôle écrit intermédiaire 1h : 4 Novembre coeff 1 • Contrôle final 1h30 : 20 Janvier coeff 1.5 • Projet en binômes : en fin de semestre coeff 1.5 Installation de Python 3 LINUX •Vous assurez que vous êtes connecté à internet •Ouvrir une fenêtre « terminal » •Tapez : sudo apt-get install idle, mot de passe •Répondez « oui » aux questions •Tester en tapant « idle3 » dans un terminal WINDOWS / MAC https://www.python.org/download/