Ouvrir le logiciel Pyscripter puis copier coller le programme ci-dessous dans l'éditeur.
from turtle import * # obligatoire au début de chaque fichier
# les commentaires sur le programme sont situés après le signe dièse
reset() # efface le dessin précédent
color('red') # choisis la couleur demandée
goto(100,100) # se rend au point de coordonnées (100,100)
color('blue') # choisis la couleur demandée
up() # lève le crayon
goto(0,0) # se rend au point de coordonnées (0,0)
down() # baisse le crayon
left(90) # tourne à gauche d'un angle de 90°
forward(100) # avance d'une distance de 100
done() # obligatoire à la fin de chaque fichier
Dans votre espace personnel, créer un dossier Python et enregistrer ce programme sous le nom TraceSegment.py
Les commentaires (précédés d'un dièse) ne sont pas interprétés par la machine.
Exécuter ce module en cliquant sur la flèche verte ou bien avec F5
Les instructions
Déplacements
Comme avec Scratch, il existe 2 manières de se déplacer :
Le déplacement absolu qui permet d’aller d’un point à un autre, donné par ses coordonnées dans un repère orthonormé.
En Python, nous allons utiliser l’instruction goto(0,0) ; up() et down() permettant de lever ou baisser le crayon pour écrire ou non.
Remarque : Le curseur est par défaut à la position (0,0) au début d'un programme.
Exemple :
from turtle import *
color('red')
goto(100,100)
done()
Le déplacement relatif qui permet, à partir du point où on se trouve, de tourner puis d’avancer.
En Python, nous allons utiliser les instructions right(110) ou left(15) pour tourner à droite de 15° ou à gauche de 110° puis forward(50) pour avancer de 50.
Exemple :
from turtle import *
color ('blue')
left(90)
forward(100)
done()
Exercice 1
Pour chaque question de chaque exercice, créer un nouveau fichier et l'enregistrer sous un autre nom dans votre répertoire personnel.
N'oublier pas l'extension .py à la fin de chaque nom de fichier.
Après chaque fichier, appeller le prof pour vérifier !
Fichier Segment_rouge.py : Tracer en rouge un segment qui relie les points de coordonnées (– 200 , 0) et (150 , 250).
Fichier Segment_vert.py : Tracer en vert un segment qui a pour origine le point de coordonnées (– 100 , 100) et qui avance de 200,
puis un 2ème segment de 200 qui forme un angle de 220° avec l'horizontale.
Fichier Segments_bleus.py : Tracer en bleu deux segments perpendiculaires.
Les boucles bornées
Exercice 2
Tracer en orange un carré de côté 100 à l'aide de la fonction goto() sans right ni left.
Tracer en rose un carré de côté 100 sans utiliser la fonction goto().
Tracer en violet un hexagone de côté 100.
On s'aperçoit très vite qu’on répète plusieurs mêmes instructions !
On peut donc utiliser une boucle avec la syntaxe :
for i in range(4):
forward(120)
left(90)
range(4) désigne les 4 premiers entier en partant de 0.
La variable i prend donc successivement les valeurs 0, 1, 2 et 3.
Le bloc des instructions répétées commence après le symbole : (deux points) et est matérialisé par le fait de décaler vers la droite (on dit indenter) les instructions.
Ce bloc se termine par le fait de revenir tout à gauche de la ligne en supprimant la tabulation.
Exercice 3
En utilisant la boucle for :
Tracer en jaune un carré de côté 150.
Tracer en violet un hexagone de côté 100.
Reproduire la figure ci-dessous, où tous les carrés sont de côté 50.
Les blocs et l'indentation
Comme avec Scratch, les éditeurs de langage de programmation permettent de donner une visualisation aux différents blocs.
Cela s'appelle l'indentation : on décale vers la droite les instructions qui appartiennent à la boucle. Lorsque l'on revient à gauche, cela signifie que la boucle est terminée.
Les fonctions
On peut en Python (et dans la plupart des langages de programmation) donner un nom à un bloc d'instructions, de la façon suivante :
def carre():
for i in range(4):
forward(50)
left(90)
De cette manière, à chaque fois qu'on écrira carre() dans le programme principal, on exécutera en réalité ces trois instructions.
On appelle ce bloc une fonction (ce qui n'est pas tout-à-fait la même chose qu'une fonction au sens mathématique).
Par exemple, pour reproduire la figure 3 de l'exercice 3 en définissant la fonction carre(),on pourrait écrire un programme tel que celui donné ci-dessous :
from turtle import *
def carre ():
"""Cette fonction trace un carré"""
for i in range(4):
forward(50)
left(90)
# debut du programme principal
color('red')
for i in range(6): # boucle pour répéter 6 fois
carre() # appel de la fonction carre dans le programme principal
forward(50)
done()
Exercice 4
Copier coller le programme ci-dessus, l'enregistrer sous 4carres.py et l'exécuter
Modifier ce fichier pour tracer la figure ci-dessous
Si maintenant on souhaite tracer un carré de taille différente à chaque fois, on peut fournir des arguments à notre fonction qui modifieront son comportement.
Pour la fonction carre() par exemple, on peut choisir la longueur des côtés du carré.
Voici ce qu'on écrit :
def carre(longueur):
for i in range(4):
forward(longueur)
left(90)
Exercice 5
Tracer la figure suivante. Le plus petit carré a un côté de longueur 20 et l'enregistrer sous 5carres.py.
Les variables
Le processus pour créer ou modifier une variable est simple avec Python.
Il n'est pas nécessaire de créer les variables à l'avance.
On utilisera le symbole = pour affecter une valeur à une variable. Par exemple longueur = 50.
Pour augmenter par exemple la valeur de la variable, l'instruction est : longueur = longueur + 1
Exercice 6
Reproduire la figure ci-dessous, où le plus petit carré est de côté 50.
Construire la figure similaire formée de n carrés emboîtés.
Exercice 7
Deviner quelle figure trace l'algorithme suivant :
Pour I allant de 1 à 360
Avancer de 1
Tourner à gauche de 1°
FinPour
Programmer cet algorithme en Python dans un nouveau fichier nommé Mystere1.py et vérifier votre conjecture.
On souhaite modifier cet algorithme pour réaliser la même figure en pointillés.
Pour cela, tous les 10 « pas », on lèvera ou on abaissera le crayon, inspirez-vous de ce qui suit :
On ajoute donc une variable pour compter les pas, nommée pas et lorsque celle-ci atteint 10 on modifie le crayon.
En python, voici un exemple de programme utilisant les tests, identifier le bloc correspond au test et sa
syntaxe :
from turtle import *
nombre_pas = 0
for i in range(360):
forward (1)
left(1)
if nombre_pas >= 10:
up()
else:
down()
if nombre_pas == 20:
nombre_pas = 0
nombre_pas= nombre_pas+1
done()
Les boucles non bornées
On souhaite construire la figure ci-dessous à partir d'un grand carré de côté c en continuant à diviser le carré en bas à gauche « indéfiniment ».
En réalité, à partir du moment où ce carré a pour côté 1 ou moins, il n'est plus nécessaire de le tracer puisque l'ordinateur ne saura pas l'afficher.
Il faut donc utiliser une boucle "Tant que".
En Python, celle-ci se nomme while, ce qui signifie « répéter Tant que ».
Utiliser le programme ci-dessous pour découvrir la syntaxe à utiliser :
from turtle import *
c = 256
for i in range(4):
forward(c)
left(90)
while c >= 1:
up()
goto(0,c/2)
down()
goto(c,c/2)
up()
goto(c/2,0)
down()
goto(c/2,c)
up()
goto(0,0)
down()
c = c/2
done()
Exercice 8
Devinez (sans lancer le programme) ce que fait chaque instruction dans ce programme et le résultat obtenu à l'issue de l'exécution.
Vérifiez ensuite vos conjectures en copiant le programme dans un fichier nommé Mystere2.py.
from turtle import *
up()
goto(-200,-100)
down()
i=0
while i < 12:
forward(400)
left(150)
i = i + 1
done()
Exercice 9
Tracer le carré extérieur de côté, puis tracer les n carrés intérieurs dont les sommets sont placés sur les milieux des côtés du carré précédent.
Proposer également une version de ce dessin où on construit les carrés intérieurs « à l'infini », en tous cas tant qu'ils sont visibles !