You are on page 1of 17

Programa c ao I

Licenciatura em Engenharia Inform atica 20122013

PI VBN Mundo das Tartarugas Mundo das Tartarugas Encapsulation Generaliza c ao Interface Design Refactoring

Vitor Beires Nogueira Escola de Ci encias e Tecnologia Universidade de Evora


1.1

Mundo das Tartarugas


PI VBN Mundo das Tartarugas

Swampy

Mundo das Tartarugas Encapsulation Generaliza c ao Interface Design Refactoring

M odulo que fornece um conjunto de fun c oes para desenhar linhas. Para mais informa c ao consultar http://greenteapress.com/thinkpython/swampy/ A vers ao acima s o funciona com Python2 no entanto existe no Moodle uma adapta c ao para Python3
Exemplo

from swampy . T u r t l e W o r l d i m p o r t world = TurtleWorld () bob = T u r t l e ( ) p r i n t ( bob ) wait for user ()

1.2

Fun c oes do mundo das tartarugas I


PI VBN Mundo das Tartarugas Mundo das Tartarugas Encapsulation Generaliza c ao

Fun c oes

Interface Design Refactoring

fd e bk: mover a tartaruga para a frente e para tr as, respectivamente lt e rt: mover a tartaruga para a esquerda e para a direita, respectivamente. pu e pd: p(en) u(p) e d(own), ou seja, a tartaruga n ao deixa ou deixa car rasto, respectivamente

1.3

Fun c oes do mundo das tartarugas II


PI VBN Mundo das Tartarugas

Exemplo

Mundo das Tartarugas Encapsulation

from swampy . T u r t l e W o r l d i m p o r t world = TurtleWorld () bob = T u r t l e ( ) p r i n t ( bob ) f d ( bob , 1 0 0 ) l t ( bob ) f d ( bob , 1 0 0 ) wait for user () Como e que poder amos desenhar um quadrado?

Generaliza c ao Interface Design Refactoring

1.4

Quadrado (com repeti c oes) I


PI VBN Mundo das Tartarugas

Exemplo

Mundo das Tartarugas Encapsulation

f d ( bob , 1 0 0 ) l t ( bob ) f d ( bob , 1 0 0 ) l t ( bob ) f d ( bob , 1 0 0 ) l t ( bob ) f d ( bob , 1 0 0 ) wait for user ()

Generaliza c ao Interface Design Refactoring

1.5

Ciclo for I
PI VBN Mundo das Tartarugas Mundo das Tartarugas

Exemplo

Encapsulation Generaliza c ao

f o r i in range ( 4 ) : print ( Hello ! )

Interface Design Refactoring

Exemplo

f o r i in range ( 4 ) : f d ( bob , 1 0 0 ) l t ( bob )

1.6

Encapsulation
PI VBN Mundo das Tartarugas Mundo das Tartarugas Encapsulation Generaliza c ao Interface Design Refactoring

Dena uma fun c ao square que recebe como par ametro uma tartaruga e utiliza-a para desenhar um quadrado

1.7

Quadrado com ciclo


PI VBN Mundo das Tartarugas Mundo das Tartarugas Encapsulation Generaliza c ao

Exemplo

Interface Design Refactoring

def square ( t ) : f o r i in range ( 4 ) : fd ( t , 100) lt (t) s q u a r e ( bob )

1.8

Generaliza c ao
PI VBN Mundo das Tartarugas Mundo das Tartarugas Encapsulation Generaliza c ao Interface Design Refactoring

Adicione ` a fun c ao square um par ametro length que indique o tamanho de cada lado do quadrado.

1.9

Quadrado com indica c ao do tamanho


PI VBN Mundo das Tartarugas Mundo das Tartarugas Encapsulation Generaliza c ao

Exemplo

Interface Design Refactoring

def square ( t , length ) : f o r i in range ( 4 ) : fd ( t , length ) lt (t)

1.10

Generaliza c ao II
PI VBN Mundo das Tartarugas Mundo das Tartarugas Encapsulation

Para al em das fun c oes lt e rt tamb em existem outras com o mesmo nome mas onde e poss vel especicar o n umero de graus da viragem. Por exemplo, lt(bob, 45) gira o bob 45 graus para a esquerda. A partir da fun c ao square dena uma outra denominada polygon que desenhe um poligono regular com n lados.
Dica

Generaliza c ao Interface Design Refactoring

Os angulos externos de um pol gono regular de n-lados s ao de 360/n graus.

1.11

Pol gono
PI VBN Mundo das Tartarugas Mundo das Tartarugas Encapsulation

Exemplo

Generaliza c ao Interface Design

def polygon ( t , n , length ) : angle = 360.0 / n f o r i in range (n ) : fd ( t , length ) l t ( t , angle ) p o l y g o n ( bob , 4 , 1 0 0 )

Refactoring

1.12

C rculo
PI VBN Mundo das Tartarugas Mundo das Tartarugas Encapsulation Generaliza c ao Interface Design Refactoring

Escreva uma fun c ao para desenhar um c rculo que recebe como par ametro o raio r

1.13

Circle I
PI VBN Mundo das Tartarugas Mundo das Tartarugas Encapsulation

Exemplo

Generaliza c ao Interface Design

def c i r c l e ( t , r ) : c i r c u m f e r e n c e = 2 math . p i r n = 50 length = circumference / n polygon ( t , n , length ) c i r c l e ( bob , 5 0 )

Refactoring

1.14

Circle I
PI VBN Mundo das Tartarugas Mundo das Tartarugas Encapsulation

Exemplo

Generaliza c ao Interface Design

def c i r c l e ( t , r ) : c i r c u m f e r e n c e = 2 math . p i r n = i n t ( c i r c u m f e r e n c e / 3) + 1 length = circumference / n polygon ( t , n , length ) c i r c l e ( bob , 5 0 )

Refactoring

1.15

Arc I
PI VBN Mundo das Tartarugas Mundo das Tartarugas Encapsulation Generaliza c ao Interface Design Refactoring

Escreva uma vers ao mais geral circle denominada por arc que recebe um par ametro adicional angle que determina que frac c ao do c rculo se deve desenhar. Quando angle for igual a 360, arc deve desenhar um c rculo completo.
Exemplo

def arc ( t , r , angle ) : a r c l e n g t h = 2 math . p i r a n g l e / 360 n = i n t ( a r c l e n g t h / 3) + 1 step length = arc length / n step angle = f l o a t ( angle ) / n f o r i in range (n ) : fd ( t , step length ) lt (t , step angle )

1.16

Arc II
Exemplo
PI VBN Mundo das Tartarugas Mundo das Tartarugas Encapsulation Generaliza c ao Interface Design Refactoring

def p o l y l i n e ( t , n , length , angle ) : f o r i in range (n ) : fd ( t , length ) l t ( t , angle ) def polygon ( t , n , length ) : angle = 360.0 / n p o l y l i n e ( t , n , length , angle ) def arc ( t , r , angle ) : a r c l e n g t h = 2 math . p i r a n g l e / 360 n = i n t ( a r c l e n g t h / 3) + 1 step length = arc length / n step angle = f l o a t ( angle ) / n polyline (t , n , step length , step angle ) def c i r c l e ( t , r ) : a r c ( t , r , 360)

1.17

You might also like