Pràctica 4 (enunciat + solucions) (2013)

Pràctica Catalán
Universidad Universidad de Barcelona (UB)
Grado Física - 1º curso
Asignatura Informatica
Año del apunte 2013
Páginas 15
Fecha de subida 10/04/2016
Descargas 4
Subido por

Vista previa del texto

Practica 4 els Professors October 16, 2013 Part I Sessió introductòria 4: Programació gràfica amb Turtle 1 Objectiu La llibreria turtle té per objectiu ajudar en l’aprenentatge de la programació a través d’una activitat tant natural com dibuxar. De forma intuitiva, fa possible entendre i practicar conceptes com condicionals, bucles o funcions. A més a més, les seves eines permeten realitzar dibuixos senzills essent una bona introducció a la programació de gràfics.
Com qualsevol llibreria de Python, cal importar-la; només una vegada i abans de fer-la servir.
import turtle 2 Preparació del dibuix amb Screen Les eines d’Screen permeten definir l’àrea de dibuix, per tant, cal utilitzar-la abans de començar a dibuixar.
En essència, només cal: 1. Crear la finestra de treball finestra = turtle.Screen() 2. Definir la mida de la finestra de treball finestra.setup(320,240) # defineix un espai de treball de # 320 punts horitzonals i 240 vericals 3. Establir un color de fons finestra.backgroundcolor("white") # estableix el fons blanc # accepta qualsevol color en anglès 4. Establir un títol a la capçalera finestra.title("El meu primer dibux amb turtle") 5. Després de dibuixar . . . cal definir una forma de sortir del dibuix finestra.exitonclick() #ATENCIÓ: col·loqueu aquest comanda # DESPRÉS D’HAVER ACABAT de dibuixar 3 La llibreria Turtle A continuació, ja podem començar a dibuixar! Tal i com indica el seu nom, Turtle assumeix que els nostres dibuixos els realitzen unes tortuguetes pintores que obeeixen les nostres instruccions.
Aquestes tortugues s’arrosseguen per la finestra de treball amb un pinzell a la panxa deixant un rastre de color.
Abans de començar a dibuixar, hem de cridar una tortuga. Per això només cal fer alex = turtle.Turtle() # crea una nova tortuga, li direm alex Les tortugues obeeixen instruccions simples, com ara avançar, retrocedir, girar a l’esquerra o a la dreta, canviar de color de pinzell, etc.
Vejem un exemple amb les instruccions de moviment més rellevants.
alex.forward(100) # La tortuga alex avança 100 punts alex.right(90) # La tortuga alex gira 90 graus cap a la dreta alex.backwards(200) # La tortuga alex retrocedeix 200 punts alex.left(45) # La tortuga alex gira 45 graus cap a l’esquerra Les instruccions anteriors desplacen la tortuga de forma relativa a la seva posició i orientació actuals. També és possible utilitzar coordenades absolutes, en les que el centre de la finestre de treball és la posició (0,0) i els eixos cartesians tenen el signe i horientacions habituals: alex.goto(45, -34) # alex es trasllada a les coordenades (45, -34) alex.setx(10) # alex es desplaça, en horitzonal, a la posició d’abscissa 10 alex.sety(-50) # alex es desplaça, en vertical, a la posició d’ordenada -50 alex.setheading(180) # alex gira i apunta cap a la dreta alex.home() # alex es desplaça al centre de la pantalla i s’orienta cap a dalt Les accions anteriors fan que la tortuga es desplaci pel dibuix deixant el seu rastre. Si el que volem és desplaçar la tortuga a un altre punt, però sense dibuixar disposem de les següents eines alex.penup() # aixeca el pinzell, després la tortuga no deixa rastre alex.pendown() # abaixa el pinzell, després la tortuga torna a dibuixar També és possible cambiar les caractarístiques del rastre de la tortuga.
Per exemple alex.pensize("3") # El pinzell de la tortuga alex té un gruix de 3 punts alex.color("red") # El rastre de la tortuga alex serà vermell Podem també modificar l’aspecte de la tortuga alex.shape("circle") # La tortuga alex tindrà aspecte de cercle.
# # altres valors possible són: “arrow”, “turtle”, “circle”, “square”, “triangle”, “classic” O bé fer que deixi la seva empremta alex.stamp() # La tortuga alex deixarà la seva emprempta en el lloc actual Si us desespera la lentitud de la tortuga, o bé voleu veure més lentament la construcció del dibuix, podeu configurar la velocitat del desplaçament amb alex.speed("fast") # La tortuga alex és desplaçarà més ràpidament.
# # altres valors possible són: “fastest”, “fast”, “normal”, “slow”, “slowest” Finalment, és possible reiniciar totes les propietats d’una tortuga.
alex.reset() # alex torna a la posició inicial amb els paràmetres # de color, etc. incials i s’esborra tot el que hagi dibuixat!! Com a comentari final, recordeu que podeu cridar tantes tortugues com volgueu en un mateix dibuix. L’únic requisit és que s’anomenin diferent por poder donar’ls-hi instruccions de forma independent! Podeu trobar una referència complerta a totes les comandes de turtle en el següent enllaç http://docs.python.org/2/library/turtle.html El següent codi exemplifica totes les comandes vistes en aquest apartat.
# Exemple bàsic amb Turtle In [15]: import turtle finestra = turtle.Screen() # creem finestra.setup(350, 350) finestra.bgcolor("lightgreen") finestra.title("La tortuga Maria!") una nova finestra de dibuix # mida 350x350 punts # color verd clar # amb un títol maria = turtle.Turtle() # creem la tortuga maria maria.forward(40) maria.left(120) maria.pensize("5") maria.forward(40) maria.left(120) maria.color("blue") maria.speed("slowest") maria.forward(40) maria.left(120) # dibuixem un triangle equilater maria.penup() maria.goto(-100, -100) # desplacem la tortuga sense dibuixar # amb diferents gruixos de línia # i de color # també volem alentir el moviment maria.stamp() maria.setheading(90) maria.forward(30) maria.shape("turtle") maria.stamp() # deixem una emprempta (fletxa) maria.home() # tornem a la posició inicial finestra.exitonclick() # cambiem l’emprempta a tortuga # deixem una emprempta (tortuga) # definim la forma de tancar la finestra de treball 3.1 Exercici 4.1 1.Feu un programa que dibuixi un quadrat de 100 punts de costat.
2.Modifiqueu el programa per que: • • • • El quadrat sigui vermell Tigui la vora groixuda Estigui girat 45 graus Estigui centrat fora de l’orígen 3.2 Exercici 4.2 Fent servir la funcio circle(), dibuixeu una cara rodona amb ulls quadrats, nas triangular i boca de mig cercle.
Ajuda: Consulteu la documentació de Turtle per saber com fer servir les diferents opcions de la funció circle() que us permetran dibuixar TOTES les figures necessàries.
3.3 Exercici 4.3 Dibuixeu ara: 1. una cara trista 2. una cara adormida 3. una cara picant l’ullet 3.4 Exercici 4.4 1.Modifiqueu els programes de les 4 cares anteriors per que es canvïi la mida de la cara en funció d’una variable entera escala.
Compte: La majoria de funcions de Turtle només accepten nombres enters! Recordeu com fer operacions amb aritmètica d’enters.
2.Modifiqueu els 4 programes per que, a més a més, es pugui cambiar l’origen (centre) del dibux en funció de dues variables origenX i origenY que continguin les coordenades.
4 Números aleatoris • random: La llibreria random, conté un seguit d’eines per generar números (pseudo)aleatoris. Per utilitzar-la, cal importar-la al nostre programa, només una vegada i abans d’utilitzar-la.
• random.randint(min,max): genera un enter aleatori entre min i max (ambdós inclosos).
• random.random(): genera un número de coma flotant entre 0.0 i 1.0.
Exemple: números aleatoris import random enter = random.randint(1,3) # genera un enter aleatori que pot valdre 1, 2 o 3.
decimal = random.random() # genera un real aleatrori entre 0.0 i 1.0 4.1 Exercici 4.5 Fent servir les funcions de la llibreria random, dibuixeu les 4 cares anteriors, centrades ens els 4 quadrants de la pantalla de dibuix, i cada una d’elles amb una escala donada pel resultat de randint() 5 Exercici a entregar Construiu un Notebook que resolgui, amb les explicacions i comentaris adequats per que s’entenguin els programes, els 4 exercicis anteriors.
En acabar, entregeu el fitxer Notebook generat a través de Campus Virtual ...