A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Estudo de caso: Interface de função

Apresentações semelhantes


Apresentação em tema: "Estudo de caso: Interface de função"— Transcrição da apresentação:

1 Estudo de caso: Interface de função
EWERTON AMORIM DE OLIVEIRA LUCAS HENRIQUE SILVA CHRISTOPHER FREIRE SOUZA

2 Estudo de caso: Interface gráfica para interação com o usuário Pesquise sobre a linguagem Logo
A biblioteca turtle permite criar desenhos com uma tartaruga. Execute o seguinte código: Crie um arquivo Python e digite o seguinte código: A função mainloop() faz o Windows esperar por alguma resposta do usuário, que, no momento, consegue apenas acionar o botão de fechar a janela aberta neste caso >>> import turtle >>> duda = turtle.Turtle() import turtle duda = turtle.Turtle() print(duda) turtle.mainloop()

3 Estudo de caso: Interface gráfica para interação com o usuário
Uma vez que você criou uma tartaruga, você pode chamar métodos para fazê-la se mover pela tela. Um método é semelhante a uma função, mas tem uma sintaxe diferente. Veja que o indivíduo ‘duda’ e não o módulo aparece antes. Por exemplo, para mover a tartaruga para frente: Alguns métodos interessantes são: penup, pendown, left,right,backward,circle, setposition Para criar um ângulo reto, por exemplo, você deve adicionar o seguinte código no seu arquivo (adicione no lugar da linha “print(duda)”): duda.forward(100) duda.forward(100) duda.left(90) #Vira 90 graus à esquerda

4 Estudo de caso: Interface gráfica para interação com o usuário
Modifique o programa para que ele desenhe um quadrado! #Simples repetição: duda.forward(100) duda.left(90)

5 Estudo de caso: Interface gráfica para interação com o usuário
Diminua a quantidade de código! Você consegue lembrar de alguma forma de fazer isso? Crie uma função para criar um ângulo reto e a repita 4 vezes! Adicione a seguinte linha no seu arquivo: O que aconteceu de diferente? def angulo_reto(): duda.forward(100) duda.left(90) for i in range(4): print(“Olá”)

6 Estudo de caso: Interface gráfica para interação com o usuário
‘for’ é uma estrutura que veremos mais à frente, mas você deve ter percebido que ela serve para repetir código. Desta forma, nosso programa utilizando a estrutura ‘for’ ficaria assim: import turtle duda = turtle.Turtle() for i in range(4): duda.forward(100) duda.left(90) turtle.mainloop()

7 Exercícios resolvidos
Crie uma função chamada quadrado(t), onde o argumento t é uma tartaruga. Em seguida execute a função passando duda como argumento e execute o programa. O que acontece?

8 Encapsulamento def quadrado(t): for i in range(4): t.forward(100)
Respondendo o primeiro exercício temos: Perceba que é possível executar a função com um nome de argumento diferente do que foi dado ao declarar função. Isto acontece por causa de um processo chamado encapsulamento, uma das vantagens de se utilizar funções. Vamos a um caso mais simples... def quadrado(t): for i in range(4): t.forward(100) t.left(90) quadrado(duda)

9 Exercícios resolvidos
Crie uma função chamada quadrado(t), onde o argumento t é uma tartaruga. Em seguida execute a função passando duda como argumento e execute o programa. O que acontece? Modifique a sua função para receber também o argumento tamanho, que é o tamanho das linhas desenhadas. Modifique o corpo de sua função para que o tamanho que for passado no argumento seja o tamanho da linha.

10 Generalização def quadrado(t, tamanho): for i in range(4):
Resolvendo a questão 2 do exercício temos o seguinte: def quadrado(t, tamanho): for i in range(4): t.forward(tamanho) t.left(90) quadrado(duda, 100)

11 Exercícios resolvidos
Crie uma função chamada quadrado(t), onde o argumento t é uma tartaruga. Em seguida execute a função passando duda como argumento e execute o programa. O que acontece? Modifique a sua função para receber também o argumento tamanho, que é o tamanho das linhas desenhadas. Modifique o corpo de sua função para que o tamanho que for passado no argumento seja o tamanho da linha. Crie uma cópia da função quadrado() e a modifique para que ela desenhe um polígono de n lados: Dica: Os ângulos de rotação dos lados de um polígono regular de lado ‘n’ são dados por 360/n.

12 Generalização def poligono(t, n, tamanho): angulo = 360/n
Resolvendo a questão 3 do exercício temos o seguinte: Quando a função tem muitos argumentos é comum esquecer a ordem dos parâmetros. Para facilitar, é comum informar o nome dos parâmetros ao executar as funções. def poligono(t, n, tamanho): angulo = 360/n for i in range(n): t.forward(tamanho) t.left(angulo) poligono(duda, 7, 50) poligono(duda, n= 7, tamanho=50)

13 Exercício A partir do que foi visto, crie uma função para desenhar um círculo de raio r. DICA: O círculo pode ser desenhado a partir de “pequenas retas”.

14 Interface de uma função
Adote um polígono de 50 lados para aproximar o círculo (o valor 50 foi definido arbitrariamente) A função para criar um círculo precisa de um parâmetro r (raio) Até então estávamos trabalhando com a medida dos lados do polígono. Dado um raio r qual será o comprimento adotado? Respondendo as questões, o resultado será: import math def circulo(t, r): circunferência = 2 * math.pi * r n = 50 comprimento = circunferência / n polígono(t, n, comprimento)

15 Interface de uma função
Note que uma limitação dessa função é que o número de seguimentos para se criar o círculo é constante. Para raios grandes este número de segmentos pode não ser suficiente e o círculo parecerá mais com um polígono de muitos lados mesmo. Para pequenos raios, desenha-se muitos segmentos sem necessidade. Consideremos, então, que um comprimento próximo a 3 seja razoável. A interface de uma função é um sumário de como ela é usada: Quais são os parâmetros? O que a função faz? Que valor a função retorna? Uma interface é limpa se ela permitir ao usuário fazer o que ele quiser sem se preocupar com detalhes desnecessários.

16 Exercício resolvido import math def circulo(t, r):
Assim obtemos o seguinte código: import math def circulo(t, r): circunferência = 2 * math.pi * r n = int(circunferência / 3) + 1 comprimento = circunferência / n polígono(t, n, comprimento)

17 Exercício Crie uma cópia da função ‘círculo’ e crie uma função para desenhar um arco de raio r e ângulo alfa.

18 Plano de desenvolvimento
Comece escrevendo um programa pequeno sem definição de funções Uma vez que seu programa funcione, identifique módulo, encapsule esta parte em uma função e dê um nome. Generalize a função adicionando parâmetros apropriados Repita os passos de 1 a 3 até que você tenha um conjunto de funções úteis. Copie e cole o código, evitando redigitação. Procure por oportunidades de melhorar o código por refatoração. Por exemplo, se você tem códigos similares em vários locais, considere refatorar em uma função generalizada.

19 Exercícios Volte para o primeiro estudo de caso (Desenhando um círculo a partir de polígono), melhore o script com o que aprendemos agora e não se esqueça de generalizar! Modifique os programas criados para receber dados do usuário.

20 BÔNUS

21 Refatoração import math def arco(t, r, alfa):
Em relação ao exercício do slide 44, sabe-se que o arco é aberto e o círculo e o polígono são fechados e, portanto, não podemos reutilizar as funções com suas interfaces, mas podemos fazer algo parecido: import math def arco(t, r, alfa): comprimento_arco = 2 * math.pi * r * alfa / 360 n = int(comprimento_arco / 3) + 1 comprimento_segmento = comprimento_arco / n angulo_segmento = alfa / n for i in range(n): t.forward(comprimento_segmento) t.left(angulo_segmento)

22 Refatoração def poli_linha(t, n, tamanho, alfa): for i in range(n):
Note que a segunda parte da função se parece com a função polígono, mas não podemos utilizar a função polígono que tínhamos, ao invés disso, vamos generalizar nossa função para que ela receba como argumento um ângulo. Mas polígono não é um nome adequado, vamos chamar de poli_linha: def poli_linha(t, n, tamanho, alfa): for i in range(n): t.forward(tamanho) t.left(alfa)

23 Refatoração def poligono(t, n, tamanho): angulo = 360/n
Agora reescrevemos arco() e poligono() para usar a função poli_linha(): def poligono(t, n, tamanho): angulo = 360/n poli_linha(t,n,tamanho,angulo) def arco(t, r, alfa): comprimento_arco = 2 * math.pi * r * alfa / 360 n = int(comprimento_arco / 3) + 1 comprimento_segmento = comprimento_arco / n angulo_segmento = alfa / n poli_linha(t,n, comprimento_segmento, angulo_segmento )

24 Refatoração def circulo(t, r): arco(t, r, 360)
E assim podemos utilizar a função arc() para escrever a função circulo(): Este processo de rearranjar um programa, melhorando interfaces e facilitando o reuso de código é chamado de refatoração. def circulo(t, r): arco(t, r, 360)

25 Estudo de caso 2: Dê um Tempo!
Assista o vídeo a seguir: Você consegue imaginar como será este código? Pense um pouco. Enquanto isso vamos continuar nossa aula!

26 Estudo de Caso 2: Dê um tempo!
De volta para nosso estudo de caso, assista o vídeo a seguir: Você consegue criar os passos para criar este código? Descreva a sequência de tarefas, como foi feito anteriormente.

27 Estudo de Caso 2: Dê um tempo!
Este é o passo a passo para criar nosso programa: E agora? Como fazer um programa esperar por quinze minutos para executar? Pesquise no google! EXECUTAR A SEQUÊNCIA A SEGUIR: Passo 1 – Aguardar 15 minutos Passo 2 – Abrir o navegador de internet

28 Fazendo um programa esperar para executar
Não é necessário criar uma função para fazer um programa esperar para executar, pois ela já existe! Podemos fazer isso utilizando a função sleep(), a partir da biblioteca time: A função sleep() da biblioteca time permite determinar um tempo para que o programa seja executado >>> import time >>> time.sleep(5) #Espera 5 segundos.

29 Estudo de Caso 2: Dê um tempo!
Voltamos para nossa sequência: Já sabemos como fazer o programa esperar para executar! E como fazer o programa abrir um navegador de internet a partir do Python? Pesquise no google! EXECUTAR A SEQUÊNCIA A SEGUIR: Passo 1 – Aguardar quinze minutos (ok) Passo 2 – Abrir o navegador de internet

30 Abrindo um navegador de Internet a partir do Python
Também não é necessário criar uma função para abrir um navegador de internet em Python. A biblioteca webbrowser tem a função open() que faz isso: Agora crie um arquivo Python com uma função que receba dois argumentos: dando_um_tempo(url, tempo)! Onde url é um link para uma música e tempo é o tempo a esperar. >>> import webbrowser >>> webbrowser.open(“

31 Assim temos nosso script completo!
import time import webbrowser #nossa função: def dando_um_tempo(url,tempo): time.sleep(tempo) webbrowser.open(url) #definindo nossa url e tempo desejados: url = “ tempo = 15*60 #executando a função dando_um_tempo(url,tempo)


Carregar ppt "Estudo de caso: Interface de função"

Apresentações semelhantes


Anúncios Google