programmation impérative (en python)...

24
Programmation Impérative (en Python) 2015-2016 H. Collavizza [email protected]

Upload: nguyenkhuong

Post on 31-Jan-2018

224 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

Programmation Impérative(en Python)

2015-2016

H. [email protected]

Page 2: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

Vous avez dit informatique ?

Page 3: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de
Page 4: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

Un peu de vocabulaire

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

•Périphériques : clavier, écran, souris, imprimante, ...

•Suite d'instructions pour effectuer des actions sur le matériel

•Doit être traduit en binaire

•Système d’exploitation

•Outils : excel, word,...

•Butineurs

•Jeux

•Programmes applicatifs

Matériel (hardware) Logiciel (software)

Page 5: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

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

Page 6: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

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

Page 7: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

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

Page 8: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

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

Page 9: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

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

Page 10: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

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

Page 11: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

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

Page 12: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

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

Page 13: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

Programmation :

le jeu des allumettes

• Prendre 1, 2 ou 3 allumettes chacun son tour

• Celui qui prend la dernière allumette a gagné

Page 14: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

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

Page 15: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

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é

Page 16: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

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

Page 17: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

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 …

Page 18: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

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

Page 19: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

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 ?

Page 20: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

Programmation : conclusion1. 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

Page 21: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

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

Programmation : conclusion ...

Page 22: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

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 ?

Page 23: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

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

Page 24: Programmation Impérative (en Python) 2015-2016users.polytech.unice.fr/~helen/pythonCIP1/coursIntro.pdf · langage de programmation. ... • Contrôles de TD type QCM/exercices de

Installation de Python 3LINUX

•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/