Dessins et manipulations d images en Python

Documents pareils
STAGE IREM 0- Premiers pas en Python

Initiation à l algorithmique

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Initiation à la programmation en Python

Le langage C. Séance n 4

Licence Sciences et Technologies Examen janvier 2010

TP 1. Prise en main du langage Python

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Consigne : je remplis le tableau en tenant compte des informations de la ligne supérieure et de la colonne de gauche (droite pour les gauchers)

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

MIS 102 Initiation à l Informatique

1 Lecture de fichiers

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

TD3: tableaux avancées, première classe et chaînes

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Représentation d un entier en base b

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Comment se connecter au VPN ECE sous vista

Premiers Pas en Programmation Objet : les Classes et les Objets

La mémoire. Un ordinateur. L'octet. Le bit

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Programmation C++ (débutant)/instructions for, while et do...while

Algorithmique et Programmation, IMA

Cours 7 : Utilisation de modules sous python

Troisième projet Scribus

INTRODUCTION A JAVA. Fichier en langage machine Exécutable


Algorithmique et programmation : les bases (VBA) Corrigé

PIC EVAL Dev Board PIC18F97J60

TP, première séquence d exercices.

Comment sélectionner des sommets, des arêtes et des faces avec Blender?

Procédure de sauvegarde pour AB Magique

SEANCE 2 : éléments de programmation

L informatique en BCPST

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var - E mail : bij@agasc.fr / Tel : CONSIGNE N 1 :

Cours d algorithmique pour la classe de 2nde

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

Logiciel SCRATCH FICHE 02

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

Compter à Babylone. L écriture des nombres

ACTIVITÉ DE PROGRAMMATION

Once the installation is complete, you can delete the temporary Zip files..

Cours d Algorithmique et de Langage C v 3.0

Programmation Web. Madalina Croitoru IUT Montpellier

My Custom Design ver.1.0

Introduction à MATLAB R

Support de TD ArcGIS Introduction à l automatisation et au développement avec ArcGIS 10.1 JEAN-MARC GILLIOT e année ingénieur

Une brique dans le cartable. Du Plan à l Ouvrage

CHAPITRE 3 : INTERNET

Programmation avec Xcas ou Python

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Cours d initiation à la programmation en C++ Johann Cuenin

Corrigé des TD 1 à 5

Logiciel PICAXE Programming Editor

NAVIGATION SUR INTERNET EXPLORER

Utilisation de la plateforme VIA ecollaboration

LES GRANDES ETAPES DE CREATION D UN WEB DESIGN

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Bases de programmation. Cours 5. Structurer les données

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

DM 1 : Montre Autoquartz ETA

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

Utilisation du logiciel GALAAD

JPEG, PNG, PDF, CMJN, HTML, Préparez-vous à communiquer!

NOTICE D' UTILISATION CAMWORKS FRAISAGE. Luc Vallée Lycée Blaise Pascal Segré

Modes Opératoires WinTrans Mai 13 ~ 1 ~

Conférence Web sur demande de TELUS Guide de référence rapide

Quelques algorithmes simples dont l analyse n est pas si simple

Utilisation du logiciel Epson Easy Interactive Tools

Présentation du langage et premières fonctions

Leçons et exemples de programmation en Logo

Retour table des matières

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

EXCEL TUTORIEL 2012/2013

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

TP JAVASCRIPT OMI4 TP5 SRC

OLYMPIADES ACADEMIQUES DE MATHEMATIQUES. 15 mars 2006 CLASSE DE PREMIERE ES, GMF

EVALUATIONS MI-PARCOURS CM2

Sommaire. I.1 : Alimentation à partir d un fichier Access (.mdb)...2

TP1 : Initiation à l algorithmique (1 séance)

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Guide de démarrage rapide. (pour la version 5.0.)

Notions fondamentales du langage C# Version 1.0

TP : Gestion d une image au format PGM

Les arbres binaires de recherche

Algorithmes récursifs

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Prezi. Table des matières

1. Structure d'un programme FORTRAN 95

Travaux dirigés n 10

Transcription:

Dessins et manipulations d images en Python Raymond Namyst et Marc Zeitoun 3 avril 2014 1 Échauffement : réveillons le Python Que fait le programme suivant? Vous pouvez le récupérer dans le fichier start.py pour le tester (en l ouvrant avec IDLE, et en l évaluant avec F5). def : print("------------") print ("Hello!") a = 5 print ("a, a*a") print (a, a*a) print ("a vaut", a, "et a*a vaut", a*a) if a*a == a**a: print("ok") if a*a == a**a: print("ok") else: print("ko") def f(): print (2) a = f() print ("a = ", a) def g(): return 2 b = g() print ("b = ", b) 1

for n in range(5): print (n) for n in range(10, 100, 5): print (n) Le programme suivant disponible dans erreurs.py contient des erreurs fréquentes. Essayez de les repérer et de les corriger. def : print("------------") # On veut afficher Hello print (Hello) a = 2 # On veut afficher OK1 si a vaut 2 if a = 2: print("ok1") if a*a == a+2 print("ok2") if a*a == a+2: print("ok3") # On veut afficher la liste de tous les cubes entre 0 et 9. k = 0 while k < 10: print ("Le cube de", k, "est", k*k*k) 2 Expériences avec la suite de Syracuse Dans cette partie, nous allons reprogrammer la suite de Syracuse, en partant d un entier n. Cette suite d entiers est facile à définir : le premier nombre de la suite est n. si n est égal à 1, la suite s arrête. si n est différent de 1, on construit le terme suivant de la façon suivante : si n est pair, le terme suivant est n/2. Sinon, le terme suivant est 3n+1. Par exemple, si on part de l entier 9 comme valeur de n, la suite d entiers obtenue est 9, 28, 14, 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 2

Les mathématiciens pensent que la suite finit toujours par arriver à l entier 1, comme dans l exemple précédent. Mais personne n est jamais arrivé à le prouver. Dans cette partie, on va essayer de vérifier que la suite arrive toujours à 1 si on part d un entier entre 1 et 1000000. Pour ces questions, un fichier squelette syracuse.py est fourni. 1. Commencer par écrire une fonction syracuse(n) qui prend en argument un entier n, et retourne la valeur n/2 si n est pair, ou 3n+1 sinon. Rappels : La division de nombres entiers se note // et la multiplication se note *. Pour faire retourner la valeur calculée par une fonction, on utilise le mot-clé return. 2. En se servant de cette fonction, écrire une nouvelle fonction suite_syracuse(n) qui prend en argument un entier n, et affiche la suite obtenue à partir de n (en espérant que cette suite est finie, c est-à-dire qu elle arrive à un moment à la valeur 1). Note : cette fonction ne retournera rien : elle se contente de produire un affichage, grâce à l utilisation de la fonction print(...). 3. Écrire une fonction longueur_syracuse(n) qui n affiche rien, mais qui retourne la longueur de la suite obtenue en partant de la valeur n. Par exemple, partant de la valeur 9, la fonction devra afficher 20 (qui est la longueur de la suite ci-dessus). Pour cela, on utilise une variable longueur initialisée à 1, et que l on augmente d une unité à chaque fois qu un nouveau nombre de la suite est calculé. 4. Écrire une fonction longueur_syracuse_jusqua(n) qui prend en argument un entier n, et qui affiche, pour chaque entier k entre 1 et n, la valeur de k et la longueur de la suite lorsqu on part de l entier k. 5. Écrire une fonction indice_et_longueur_maximale(n) qui prend en argument un entier n, et qui retourne 2 valeurs : le premier entier entre 1 et n pour lequel la longueur de la suite de Syracuse est la plus grande, et la longueur de cette suite. En langage Python, on peut faire retourner 2 valeurs à la fois, par exemple return 1, 2 retourne la valeur 1 et la valeur 2. 6. Utiliser la fonction indice_et_longueur_maximale(n) pour calculer le premier entier entre 0 et 1000000 qui donne la plus longue suite de Syracuse. 3 Le lièvre et la tortue Dans cette partie, on va utiliser le module turtle pour faire des dessins. Dans un nouveau fichier, commencer par écrire la ligne suivante : from turtle import * Les fonctions du module turtle sont maintenant disponibles. Les lignes suivantes permettent d afficher la fenêtre de dessin, et d initialiser le mode de couleurs. Screen() colormode(255) On peut ensuite déplacer une "tortue", qui laisse une trace de crayon lors de ses déplacements. Les fonctions les plus utiles pour dessiner avec cette tortue sont les suivantes : 3

reset() Efface l écran goto(x,y) Va au point de coordonnées (x, y) forward(d) Avance de la distance d up() Lève le crayon : si on fait un goto() ensuite, la tortue ne laisse pas de trace down() Abaisse le crayon : si on fait un goto() ensuite, la tortue laisse une trace color(r,g,b) Change la couleur du crayon. r (rouge), g (vert) et b (bleu) sont entre 0 et 255 setheading(angle) Positionne la tête left(angle) Tourne à gauche right(angle) Tourne à droite width(e) Change l épaisseur du crayon à e. speed(vitesse) Ajuste la vitesse de la tortue, par exemple fastest ou normal Comme on va tracer des polygones, on peut utiliser l instruction for qui permet de répéter le même bloc d instructions pour plusieurs valeurs d une variable. Un squelette de programme est fourni dans le fichier tortue.py, mais les fonctions demandées sont vides : il ne reste plus qu à les écrire... 1. Écrire une fonction carre(taille) qui dessine un carré dont les bords ont la taille donnée en paramètre. 2. Écrire une fonction polygone(taille, cotes) qui dessine un polygone régulier dont la taille et le nombre de côtés sont donnés en paramètres. 3. Tester la fonction polygone en écrivant une fonction triangle(taille), et... en dessinant un cercle grâce à la fonction polygone. 4. Écrire une fonction rosace(taille, cote) qui dessine une rosace en dessinant plusieurs polygones dont la taille et le côté sont donnés en paramètres. Le premier côté du k-ième polygone dessiné sera incliné d un angle 10k, et on fera varier cet angle de 0 à 350 degrés, par pas de 10 degrés. On dessine donc au total 36 polygones, inclinés de 10 degrés en 10 degrés. 5. Écrire une fonction rosace_coloree(taille, cote) qui fait la même chose que la fonction précédente, mais qui en plus change progressivement la couleur des polygones dessinés. On part d une première couleur, par exemple rouge (noté 255,0,0 dans le codage r,g,b) pour arriver à une couleur de fin, par exemple bleu (noté 0,0,255). A chaque nouveau polygone, on modifie progressivement et uniformément la couleur. Par exemple, rosace_coloree(100,5) donne ce dessin : Figure 1 Une rosace colorée créée par juxtaposition de 36 pentagones. 4

4 Modifications d images Lors des séances suivantes, nous modifierons des images. 5