Introdução à Programação Aula 4 Definição de funções

Documentos relacionados
Programação I Aula 4 Definição de procedimentos e funções

1 Definição de funções 1. 2 Valores boleanos e condicionais 5. Podemos depois usar as novas funções tal qual as pré-definidas

Introdução à programação orientada a objetos. Nesta aula... Turtle graphics. Primeiro programa com objetos. Exercício. Métodos.

Nesta aula... 1 Orientação a objetos. 2 Utilização de bibliotecas. 3 Definição de funções/procedimentos

Nesta aula... Diagramas da stack. Recursão. 1 Funções. 2 Valores booleanos e condicionais. 3 Execução condicional e recursão

Computação 1. Aula 2 Teórica professor: Leonardo Carvalho

Computação 1 - Python 1/ 41

Computação 1 - Python Aula 2 - Teórica. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 39

Computação I - Python

1/ 26. Computação 1 - Python Aula 1 - Prática: Primeiros Passos - Função

Laboratório de Programação 1 Aula 04

Computação I - Python Aula 1 - Prática: Primeiros Passos- Função

Programação I Aula 15 Definições recursivas

1 Expressões, valores e tipos 1. 2 Variáveis e atribuições 5. cálculo de expressões segue a estrutura de parênteses e as prioridades dos operadores

1/ 23. Computação 1 - Python Aula 1 - Prática: Primeiros Passos - Função

Programação I Aula 17 Correção de programas Pedro Vasconcelos DCC/FCUP

Programação I Aula 15 Definições recursivas Pedro Vasconcelos DCC/FCUP

Programação I Aula 16 Mais exemplos de recursão

Programação I Aula 16 Mais exemplos de recursão Pedro Vasconcelos DCC/FCUP

Introdução à Programação Aula 19 Programação com objetos

Programação I Aula 18 Programação com objetos Pedro Vasconcelos DCC/FCUP

Introdução à Programação Aula 16 Mais exemplos de recursão

Introdução a programação em Python Flávio Filipe L. S. Porto

Programação de Computadores

Programação I Aula 11 Mais sobre ciclos e iteração

Programação Python. Nesta aula... 1 Programação. 2 Python. Operadores e Operandos Variáveis, Expressões, Instruções Funções Ciclos Comentários

Introdução à Programação Aula 13 Manipulação de ficheiros

Introdução à Programação / Programação I

Python 3.x Estrutura de Repetição while

Informática Aplicada à Engenharia Florestal

Entrada e saída. Marco A L Barbosa malbarbo.pro.br. Departamento de Informática Universidade Estadual de Maringá

Introdução à Programação Aula 17 Deteção e correção de erros

Introdução à Programação / Programação I

Programação I Aula 13 Manipulação de ficheiros

INFORMÁTICA PARA ENGENHARIA MODULARIZAÇÃO E ORGANIZAÇÃO DE CÓDIGO

Pedro Vasconcelos DCC/FCUP. Programação Funcional 11 a Aula Gráficos usando Gloss

Tutorial Klogo Turtle

Introdução à Programação Aula 3 Primeiros programas

3 - Programação Estruturada

Python: Funções. Claudio Esperança

Programação I Aula 8 Cadeias de carateres

Introdução à Programação Aula 5 Ciclos e condicionais

Programação I Aula 3 Primeiros programas

4 - Implementação ICE-B. Ludwig Krippahl 3/13/2019 ICE-B-04

Programação I Aula 6 Números pseudo-aleatórios

TCC 00308: Programação de Computadores I Organização de programas em Python

MC-102 Aula 02 Shell Interativa, Programa Básico, Variáveis, Atribuições, Tipos Simples. Instituto de Computação Unicamp

Introdução à Programação / Programação I

Introdução à Programação / Programação I

Programação I Aula 6 Números pseudo-aleatórios Pedro Vasconcelos DCC/FCUP

ICE-B. 4 - Implementação. Ludwig Krippahl

Comandos de Entrada e Saída. Prof. Alberto Costa Neto Programação em Python

Informática para Ciências e Engenharias 2014/15. Teórica 7

Organização de programas em Python. Vanessa Braganholo

Introdução à Programação

Informática para Ciências e Engenharias 2013/14. Teórica 7

Listas, conjuntos e dicionários

Python 3.x Estrutura de Repetição for Estrutura de Decisão if then else

Programação I Aula 12 Mais sobre cadeias e listas

MCG114 Programação de Computadores I. Strings. Strings. Strings. Strings. Strings 3/26/18. Profa. Janaína Gomide

Introdução à Programação / Programação I

AMBIENTE DE PROGRAMAÇÃO PYTHON II

Vetores. Vanessa Braganholo

Computação 1. Aula 4 - Teórica Professor: Leonardo Carvalho

Programação Funcional 9 a Aula Programas interativos

Computação 2. Aula 3 Teórica professor: Leonardo Carvalho

Listas e Tuplas. Vanessa Braganholo

Introdução à Ciência da Computação Disciplina:

Funções. Prof. Alberto Costa Neto Programação em Python

COLÉGIO OBJETIVO JÚNIOR

Computação 1 - Python Aula 4 - Teórica Variáveis e Atribuição, Strings. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 30

Aula passada. Aula passada... Sequências Funções puras e modificadores. Listas Tuplos

Python Funções. Introdução à Programação SI1

Linguagens de Programação

Computação 2. Aula 11 Teórica professor: Leonardo Carvalho

Computação I - Python Aula 4 - Teórica: Variáveis e Atribuição, Strings

Python: Módulos. Claudio Esperança

Introdução à Programação Aula 10 Processamento de listas

Subprogramação. Vanessa Braganholo

Python: Exceções, Iteradores e Geradores. Claudio Esperança

Computação 1 - Python Aula 1 - Prática: Primeiros Passos - Função 1/ 19

Introdução à Programação / Programação I

Programação para GI. Subprogramas

Minicurso de Python Aula 2. Raphael Lupchinski Marcelo Millani

1. O programa StarLogo

Computadores e Programação o semestre. Aula Helmut Wolters, Jorge Landeck, Miguel Oliveira

Introdução à Programação Aula 9 Listas e tuplos

Programação I Aula 9 Listas e tuplos

Linguagens de Programação

Introdução à Computação

Computação 1. Aula 8 Teórica professor: Leonardo Carvalho

Programação I Aula 7 Resolução numérica de equações

Computação 1. Aula 7 Teórica professor: Leonardo Carvalho

Computação II (MAB 225)

ICE-B. 2 - Variáveis. Ludwig Krippahl

1 - Ambiente de desenvolvimento

Variáveis e instruções de repetição

Transcrição:

Introdução à Programação Aula 4 Definição de funções Pedro Vasconcelos DCC/FCUP 2015 Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 1 / 28

Nesta aula... 1 Definição de funções 2 Funções que calculam resultados 3 Módulo turtle Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 2 / 28

Definição de funções Na aula passada vimos como usar as funções matemáticas pré-definidas Nesta aula vamos ver como definir novas funções Programação estruturada Decompor um problema em componentes mais simples até chegar às operações elementares. Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 3 / 28

Definição de novas funções def nome(lista de parâmetros): primeira instrução segunda instrução. instrução final O início e fim da função são marcados pela indentação A lista de parâmetros pode ser vazia Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 4 / 28

Exemplo def refrao(): print("se um elefante incomoda muita gente") print("dois elefantes incomodam muito mais.") def repete_refrao(): refrao() refrao() Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 5 / 28

Exemplo (cont.) Vamos experimentar estas funções no interpretador: >>> refrao() Se um elefante incomoda muita gente Dois elefantes incomodam muito mais. >>> repete_refrao() Se um elefante incomoda muita gente Dois elefantes incomodam muito mais. Se um elefante incomoda muita gente Dois elefantes incomodam muito mais. Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 6 / 28

Fluxo da execução 1 Começa na primeira instrução do programa 2 As instruções são executadas por ordem sequencial 3 A definição de uma função não altera fluxo de execução 4 A invocação de uma função 1 executa as instruções da definição por ordem 2 no final regressa ao ponto de onde partiu 5 Funções podem chamar outras funções Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 7 / 28

Parâmetros e argumentos Normalmente as funções usam argumentos: >>> import math >>> math.sin() Traceback (most recent call last): File "<stdin>", line 1, in? TypeError: sin() takes exactly 1 argument (0 given) O valor dos argumentos é associado a variáveis chamadas parâmetros Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 8 / 28

Exemplo do livro def print_twice(bruce): print(bruce) print(bruce) >>> print_twice( Spam ) Spam Spam >>> print_twice(5) 5 5 >>> print_twice(math.pi) 3.14159265359 3.14159265359 Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 9 / 28

Funções que calculam resultados As funções podem calcular resultados O resultado deve ser indicado com a instrução return A instrução return termina a função e define o resultado Exemplo: calcular o volume V de uma esfera de raio r. V = 4 3 πr 3 Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 10 / 28

Funções que calculam resultados (cont.) import math def volumes(r): V = 4/3 * math.pi * r**3 return V >>> volumes(1.0) 4.1887902047863905 >>> volumes(1.5) 14.137166941154067 >>> volumes(2.0) 33.510321638291124 Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 11 / 28

Âmbito das variáveis Os parâmetros duma função são variáveis locais não são visíveis fora da função As variáveis definidas dentro da função também são locais Exemplo: >>> r = 42 >>> volumes(1) 4.1887902047863905 >>> r 42 >>> V NameError: name V is not defined Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 12 / 28

Âmbito das variáveis (cont.) As variáveis definidas fora das funções (globais) podem ser usadas dentro destas. Exemplo: uma função para acrescentar a taxa de IVA a um preço. taxa_iva = 0.23 def precofinal(valor): return valor*(1+taxa_iva) Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 13 / 28

Documentação É boa idea documentar usando comentários e/ou docstrings. taxa_iva = 0.23 # taxa de IVA em percentagem def precofinal(valor): Acrescenta a taxa de IVA a um valor. Usa a variável global taxa_iva. return valor*(1+taxa_iva) Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 14 / 28

Documentação (cont.) Os comentários e docstrings são para quem lê o código As docstrings são também usadas pelo sistema de ajuda. >>> help(precofinal) Help on function precofinal in module main : precofinal(valor) Acrescenta a taxa de IVA a um valor. Usa a variável global taxa_iva. Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 15 / 28

Return ou print? return termina a execução da função e devolve um resultado print apenas imprime um resultado Só podemos usar um resultado se a função terminar com return: def f(x): return x*x print(f(f(3))) 81 def g(x): print(x*x) print(g(g(3)) 9 Erro Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 16 / 28

Módulo turtle Vamos fazer programas que desenham usando o módulo turtle: o programa controla um robot virtual (tartaruga); desloca-se para frente, para trás e roda sobre si próprio; usa uma caneta para deixar um rasto; muito simples, mas permite fazer desenhos impressionantes. Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 17 / 28

Primeiros passos Devemos começar por importar o módulo: >>> import turtle Os comandos têm a forma turtle.comando(...): >>> turtle.clear() # limpar a janela >>> turtle.forward(100) # avançar 100 pixels >>> turtle.left(90) # rodar 90 graus à esquerda >>> turtle.forward(200) # avançar 200 pixels Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 18 / 28

Primeiros passos (cont.) Em alternativa, podemos usar >>> from turtle import * e omitir o nome do módulo: >>> clear() >>> forward(100) >>> left(90) >>> forward(200) Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 19 / 28

Comando principais forward(n) avançar n pixels backward(n) retroceder n pixels left(α) rodar α graus à esquerda right(α) rodar α graus à direita color(c) mudar a cor do traço pensize(n) mudar a largura do traço penup() levantar a caneta pendown() baixar a caneta speed(n) mudar a velocidade da tartaruga clear() limpar a janela reset() limpar a janela e re-inicializar a tartaruga Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 20 / 28

Desenhar um quadrado Vamos definir uma função sem argumentos para desenhar um quadrado com 100 pixels de lado. Desenhar quatro lados, rodando 90 para a esquerda após cada lado Alternativa: também poderiamos rodar para a direita Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 21 / 28

Desenhar um quadrado (cont.) def quadrado(): forward(100) # primeiro lado left(90) forward(100) # segundo lado left(90) forward(100) # terceiro lado left(90) forward(100) # quarto lado left(90) # terminar na orientação original Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 22 / 28

Evitando repetições Repetimos quatro vezes as instruções: forward(100) left(90) Podemos evitar a repetição usando um ciclo for Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 23 / 28

Evitando repetições (cont.) def quadrado(): for lado in [1,2,3,4]: forward(100) left(90) # repetir 4 vezes A variável lado não é usada dentro do ciclo Poderiamos usar qualquer outra lista de quatro valores Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 24 / 28

Alternativas def quadrado(): for i in [1,2,3,4]: forward(100) left(90) def quadrado(): for i in range(4): # 0, 1, 2, 3 forward(100) left(90) def quadrado(): for c in [ red, green, blue, black ]: color(c) forward(100) left(90) Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 25 / 28

Generalizando Vamos agora generalizar a função para desenhar um quadrado de qualquer lado. Basta tomar a medida do lado como um parâmetro da função. Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 26 / 28

Generalizando (cont.) def quadrado(lado): "Desenhar um quadrado dado o comprimento do lado." for i in range(4): forward(lado) left(90) Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 27 / 28

Exemplo final espiral.py from turtle import * def quadrado(lado): for c in [ red, blue, green, black ]: color(c) forward(lado) left(90) reset() speed(10) for i in range(36): quadrado(50+i*5) left(10) Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 4 Definição de funções 2015 28 / 28