Programmation

publicité
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/
Téléchargement