diff --git a/.gitignore b/.gitignore index c18dd8d..c13d2f1 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ __pycache__/ +*.tar diff --git a/04oct/ex2.py b/04oct/ex2.py new file mode 100644 index 0000000..f929681 --- /dev/null +++ b/04oct/ex2.py @@ -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() diff --git a/04oct/ex3.py b/04oct/ex3.py new file mode 100644 index 0000000..54bf7f5 --- /dev/null +++ b/04oct/ex3.py @@ -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() diff --git a/04oct/ex4.py b/04oct/ex4.py new file mode 100644 index 0000000..ac766de --- /dev/null +++ b/04oct/ex4.py @@ -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() diff --git a/04oct/ex5.py b/04oct/ex5.py new file mode 100644 index 0000000..a1c9d91 --- /dev/null +++ b/04oct/ex5.py @@ -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() diff --git a/04oct/ex6.py b/04oct/ex6.py new file mode 100644 index 0000000..a3ced0e --- /dev/null +++ b/04oct/ex6.py @@ -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() diff --git a/04oct/recursifs.py b/04oct/recursifs.py new file mode 100644 index 0000000..9e6e5fd --- /dev/null +++ b/04oct/recursifs.py @@ -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 diff --git a/04oct/serie3.pdf b/04oct/serie3.pdf new file mode 100644 index 0000000..87b4e37 Binary files /dev/null and b/04oct/serie3.pdf differ diff --git a/04oct/uturtle.py b/04oct/uturtle.py new file mode 100644 index 0000000..713ba9c --- /dev/null +++ b/04oct/uturtle.py @@ -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() + diff --git a/uturtle.py b/uturtle.py new file mode 100644 index 0000000..713ba9c --- /dev/null +++ b/uturtle.py @@ -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() +