tp d'informatique 04 octobre 2022

This commit is contained in:
Debucquoy 2022-10-06 16:13:06 +02:00
parent 53f5808f7f
commit 2c97733d86
No known key found for this signature in database
GPG Key ID: 3B9EEB701C9E2919
10 changed files with 368 additions and 0 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
__pycache__/
*.tar

28
04oct/ex2.py Normal file
View File

@ -0,0 +1,28 @@
from uturtle import *
def triangle(t, n, size):
if n == 0:
moveForward(t, size)
turnLeft(t, 120)
moveForward(t, size)
turnLeft(t, 120)
moveForward(t, size)
turnLeft(t, 120)
else:
triangle(t, n-1, size/2)
moveForward(t, size/2)
triangle(t, n-1, size/2)
moveBackward(t, size/2)
turnLeft(t, 60)
moveForward(t, size/2)
turnRight(t, 60)
triangle(t, n-1, size/2)
turnLeft(t, 60)
moveBackward(t, size/2)
turnRight(t, 60)
if __name__ == "__main__":
t= umonsTurtle()
moveBackward(t, 250)
triangle(t, 5, 500)
wait()

37
04oct/ex3.py Normal file
View File

@ -0,0 +1,37 @@
from uturtle import (
umonsTurtle, wait,
moveForward, moveBackward,
turnLeft, turnRight,
dropPen, usePen)
def koch(t: umonsTurtle, x: int, seuil: int):
"""Dessine une courbe de koch
:t: the turtle used
:x: the length
:seuil: seuil of smallest step
:returns: None
"""
if x < seuil:
moveForward(t, x)
return
koch(t, x/3, seuil)
turnLeft(t, 60)
koch(t, x/3, seuil)
turnRight(t, 120)
koch(t, x/3, seuil)
turnLeft(t, 60)
koch(t, x/3, seuil)
if __name__ == "__main__":
turtle = umonsTurtle()
turtle.speed(0)
dropPen(turtle)
moveBackward(turtle, 250)
usePen(turtle)
koch(turtle, 500, 1)
wait()

27
04oct/ex4.py Normal file
View File

@ -0,0 +1,27 @@
from uturtle import (
umonsTurtle, wait,
moveForward, moveBackward,
turnLeft, turnRight,
dropPen, usePen)
from ex3 import koch
def flocon(t, x, seuil, sides=3):
"""draw a star with koch """
flocon_rec(t, x, seuil, sides, sides)
def flocon_rec(t, x, seuil, sides, i):
"""recursion function of flocon()"""
if i > 0:
koch(t, x, seuil)
turnRight(t, 360/sides)
flocon_rec(t, x, seuil, sides, i-1)
if __name__ == "__main__":
turtle = umonsTurtle()
turtle.speed(0)
flocon(turtle, 100, 5, sides=5)
wait()

28
04oct/ex5.py Normal file
View File

@ -0,0 +1,28 @@
from uturtle import (
umonsTurtle, wait,
moveForward, moveBackward,
turnLeft, turnRight,
dropPen, usePen)
def carre(t: umonsTurtle, x: int, seuil: int):
"""draw an alternative to koch witch is based on squares"""
if x < seuil:
moveForward(t, x)
return
carre(t, x/3, seuil)
turnLeft(t)
carre(t, x/3, seuil)
turnRight(t)
carre(t, x/3, seuil)
turnRight(t)
carre(t, x/3, seuil)
turnLeft(t)
carre(t, x/3, seuil)
if __name__ == "__main__":
turtle = umonsTurtle()
turtle.speed(0)
carre(turtle, 200, 1)
wait()

40
04oct/ex6.py Normal file
View File

@ -0,0 +1,40 @@
from uturtle import (
umonsTurtle, wait,
moveForward, moveBackward,
turnLeft, turnRight,
dropPen, usePen)
def arbre(t, x, a, n):
"""draw a tree
:t: turtle
:x: taille du tronc de base
:a: angle des branches
:n: profondeur de l'arbre
"""
moveForward(t, x)
arbre_rec(t, x, a, n)
def arbre_rec(t, x, a, n):
if n == 0:
return
turnLeft(t, a/2)
moveForward(t, x)
arbre_rec(t, x*5/6, a*5/6, n-1)
moveBackward(t, x)
turnRight(t, a)
moveForward(t, x)
arbre_rec(t, x*5/6, a*5/6, n-1)
moveBackward(t, x)
turnLeft(t, a/2)
if __name__ == "__main__":
turtle = umonsTurtle()
turnLeft(turtle)
arbre(turtle, 50, 45, 4)
wait()

31
04oct/recursifs.py Normal file
View File

@ -0,0 +1,31 @@
def somme1(n):
if n == 0:
return 0
else:
somme1(n-1)+n
def somme2(n):
if n == 0:
return 0
else:
return somme2(n)+n
def somme3(n):
if n == 0:
return 0
else:
return n+somme3(n-1)
def somme4(n):
if n == 0:
res = 0
else:
somme4(n)+n
return res
def somme5(n):
return somme5(n-1)+n

BIN
04oct/serie3.pdf Normal file

Binary file not shown.

88
04oct/uturtle.py Normal file
View File

@ -0,0 +1,88 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
""" Module permettant de manipuler une tortue en mode procédural
Utilisé dans le cadre du cours de Programmation et Algorithmique 1
(H. Mélot, Université de Mons, à partir de 2013)
"""
import turtle
turtle.setup(500, 400)
def umonsTurtle():
""" Retourne une tortue qui peut évoluer dans un écran
(déjà initialisé).
"""
t = turtle.Turtle()
return t
def wait(msg = 'Press enter to quit.'):
""" Affichage un message à l'écran et attend une interaction de
l'utilisateur.
msg - le message à afficher.
"""
input(msg)
def moveForward(t, x):
""" Fait avancer une tortue t de x pixels.
t - une tortue
x - nombre de pixels
"""
t.fd(x)
def moveBackward(t, x):
""" Fait reculer une tortue t de x pixels.
t - une tortue
x - nombre de pixels
"""
t.bk(x)
def turnRight(t, a=90):
""" Fait tourner une tortue t de a degrés vers la droite.
t - une tortue
a - angle en degrés
"""
t.rt(a)
def turnLeft(t, a=90):
""" Fait tourner une tortue t de a degrés vers la gauche.
t - une tortue
a - angle en degrés
"""
t.lt(a)
def dropPen(t):
""" Demande à une tortue t de soulever son stylo
t - une tortue
"""
t.up()
def usePen(t):
""" Demande à une tortue t d'abaisser son stylo
t - une tortue
"""
t.down()
if __name__ == '__main__':
bob = umonsTurtle()
moveForward(bob, 100)
turnRight(bob)
moveForward(bob, 100)
wait()

88
uturtle.py Normal file
View File

@ -0,0 +1,88 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
""" Module permettant de manipuler une tortue en mode procédural
Utilisé dans le cadre du cours de Programmation et Algorithmique 1
(H. Mélot, Université de Mons, à partir de 2013)
"""
import turtle
turtle.setup(500, 400)
def umonsTurtle():
""" Retourne une tortue qui peut évoluer dans un écran
(déjà initialisé).
"""
t = turtle.Turtle()
return t
def wait(msg = 'Press enter to quit.'):
""" Affichage un message à l'écran et attend une interaction de
l'utilisateur.
msg - le message à afficher.
"""
input(msg)
def moveForward(t, x):
""" Fait avancer une tortue t de x pixels.
t - une tortue
x - nombre de pixels
"""
t.fd(x)
def moveBackward(t, x):
""" Fait reculer une tortue t de x pixels.
t - une tortue
x - nombre de pixels
"""
t.bk(x)
def turnRight(t, a=90):
""" Fait tourner une tortue t de a degrés vers la droite.
t - une tortue
a - angle en degrés
"""
t.rt(a)
def turnLeft(t, a=90):
""" Fait tourner une tortue t de a degrés vers la gauche.
t - une tortue
a - angle en degrés
"""
t.lt(a)
def dropPen(t):
""" Demande à une tortue t de soulever son stylo
t - une tortue
"""
t.up()
def usePen(t):
""" Demande à une tortue t d'abaisser son stylo
t - une tortue
"""
t.down()
if __name__ == '__main__':
bob = umonsTurtle()
moveForward(bob, 100)
turnRight(bob)
moveForward(bob, 100)
wait()