• Aucun résultat trouvé

Programmation Impérative (en Python) 2015-2016

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation Impérative (en Python) 2015-2016"

Copied!
24
0
0

Texte intégral

(1)

Programmation Impérative (en Python)

2015-2016

H. Collavizza

helen@polytech.unice.fr

(2)

Vous avez dit informatique ?

(3)
(4)

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)

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

Programmation : le jeu des allumettes

• Prendre 1, 2 ou 3 allumettes chacun son tour

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

(14)

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

(15)

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é

(16)

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

(17)

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 …

(18)

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

(19)

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 ?

(20)

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

(21)

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

(22)

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 ?

(23)

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

(24)

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/

Références

Documents relatifs

● Un algorithme peut être traduit, grâce à un langage de programmation, en un programme exécutable par un ordinateur. Tout au long du cycle 4, nous utiliserons comme langage de

Compiler un programme signifie traduire le fichier le contenant en un langage compréhensible et exécutable par la machine cible4. On compile un fichier Prog.c par

Je veux écrire un programme qui calcule le nombre de fois qu'il faut diviser par deux un nombre réel x ( avec x >=1) pour obtenir un nombre inférieur ou égal à 1.. Ce

erreurs sur la portée des variables : une variable déclarée n’est utilisable que dans une certaine partie du programme erreurs sur le contrôle des types : les utilisations

Avec les coordonnées de tous les vecteurs vitesse, on pourra les tracer avec "quiver" et il faudra mettre le point d'application de chaque vecteur au milieu du bipoint formé

En tant que Directeur fondateur de cette école privée, professeur de mathématique au collège d’une expérience de 17 ans de classe ayant exploité

Un exemple : la fonction « valeur absolue » Différence entreprintet return Autre exemple de fonctions Encore un exemple de fonction Aléatoire : générer des entiers au hasard Pile

Tracer des segments Tracer des segments moins moches Tracer des ellipses et des rectangles Écrire sa propre fonction de tracer de cercle Les couleurs sous Tk. Exercices sur les