Programmation Impérative (en Python) 2015-2016 H. Collavizza helen@polytech.unice.fr
Vous avez dit informatique?
Un peu de vocabulaire Matériel (hardware) Information en binaire (0/1), organisée en mots de 8 bits (octets) Unité centrale : mémoire vive (RAM), cache, unité de calcul, unité de contrôle,... Logiciel (software) Suite d'instructions pour effectuer des actions sur le matériel Doit être traduit en binaire Système d exploitation 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 problème : algorithme, plan de validation Programmer l'algorithme 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/