O documento aborda o conceito de funções em Python, incluindo sua definição, utilização, retorno e reutilização. Ele também discute regras básicas para a criação de funções, escopo de variáveis e exemplos práticos, como o cálculo de fatorial e validação de entradas. Além disso, menciona a passagem de parâmetros, funções como parâmetros e funções lambda.
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0 notas0% acharam este documento útil (0 voto)
5 visualizações30 páginas
Prog t06 Funcoes
O documento aborda o conceito de funções em Python, incluindo sua definição, utilização, retorno e reutilização. Ele também discute regras básicas para a criação de funções, escopo de variáveis e exemplos práticos, como o cálculo de fatorial e validação de entradas. Além disso, menciona a passagem de parâmetros, funções como parâmetros e funções lambda.
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 30
Programação de Computadores:
Funções
2019 Tópicos
- Sobre Funções
- Definição de Funções
- Utilização de Funções
- Retorno de Funções
- Reutilização de Funções em Outras Funções
- Regras Básicas para Criação de Funções
- Escopo das Variáveis (locais e globais)
Sobre Funções - Podemos definir nossas próprias funções em Python. - Já sabemos como usar várias funções, como len, int, float, print e input. - Agora veremos como declarar novas funções e como utilizá-las em programas. - Funções são especialmente interessantes para isolar uma tarefa específica em um trecho de programa. Isso permite que a solução de um problema seja reutilizada em outras partes do programa, sem precisar repetir as mesmas linhas. - Conforme formos criando funções, podemos armazená-las para uso em outros programas. Com o tempo, você vai colecionar essas funções, criando uma biblioteca ou módulo.
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Definição de Funções Para definir uma nova função, utilizaremos a instrução def. Vejamos como declarar uma função de soma que recebe dos números como parâmetros e os imprime na tela: Definição de uma nova função: def soma(a,b): #1 print(a+b) #2 soma(2,9) #3 soma(10,15)
Usamos a instrução def seguida pelo nome da função, no caso, soma.
Após o nome e entre parênteses, especificamos o nome dos parâmetros que a função receberá. Chamamos o primeiro de a e o segundo de b. Usamos também : para indicar o início de um bloco. Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014. Utilização de Funções Usamos a função print para exibir a+b. Observe que escrevemos esse comando dentro do bloco da função, ou seja, mais à direita. Diferentemente do que já vimos até agora, essas linhas não serão executadas imediatamente. Na realidade, a definição prepara o interpretador para executar a função quando esta for chamada em outras partes do programa. Para chamar uma função definida no programa, faremos da mesma forma que as funções já definidas na linguagem, ou seja, nome da função seguido dos parâmetros entre parênteses. Os parâmetros são substituídos na mesma ordem em que foram definidos, ou seja, o primeiro valor como a e o segundo como b.
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Retorno de Funções O exemplo anterior utiliza dois parâmetros e imprime sua soma. Essa função não retorna valores como a função len ou a int. Vamos reescrever essa função de forma que o valor da soma seja retornado. Definição do retorno de um valor: def soma(a,b): return(a+b) print(soma(2,9))
Veja que agora utilizamos a instrução return para indicar o valor a
retornar. Observe também que retiramos o print da função. Isso é interessante porque a soma e a impressão da soma de dois números são dois problemas diferentes. Nem sempre vamos somar e imprimir a soma, por isso, vamos deixar a função realizar apenas o cálculo. Se precisarmos imprimir o resultado, podemos utilizar a função print. Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014. Retorno de Funções Vejamos outro exemplo, uma função que retorne verdadeiro ou falso, dependendo se o número é par ou impar. Retornando se o valor é par ou não: def isEven(x): return(x%2==0) print(isEven(2)) print(isEven(3))
Imagine agora que precisamos definir uma função para retornar a
palavra par ou impar. Podemos reutilizar a função isEven.
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Reutilização de Funções em Outras Funções Reutilização da função isEven em outra função: def isEven(x): return(x%2==0) def oddOrEven(x): if isEven(x): return "even" else return "odd" print(oddOrEven(2)) print(oddOrEven(3))
Chamamos a função isEven dentro da função oddOrEven. Se a
função retornar verdadeiro, retornaremos par, caso contrário, impar. Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014. Reutilização de Funções em Outras Funções Utilizamos dois return na função oddOrEven. A instrução return faz com que a função pare de executar e que o valor seja retornado imediatamente ao programa ou função que a chamou. Assim, podemos entender a instrução return como uma interrupção da execução da função, seguido do retorno do valor. As linhas da função após a instrução return são ignoradas de forma similar à instrução break dentro de um while.
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Exercícios - Escreva uma função que retorne o maior de dois números.
- Escreva uma função que receba dois números e retorne True se o
primeiro número for múltiplo do segundo.
- Escreva uma função que receba o lado (L) de um quadrado e retorne
sua área (A = L*L).
- Escreva uma função que receba a base e a altura de um triângulo e
retorne sua área (A = (base * altura)/2).
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Regras Básicas para Criação de Funções Por enquanto, tente fixar duas regras: uma função deve resolver apenas um problema e, quanto mais genérica for sua solução, melhor ela será em longo prazo. Para saber se sua função resolve apenas um problema, tente define-la sem utilizar a conjunção “e”. Se ela faz isso e aquilo, já é um indicativo que efetua mais de uma tarefa e que talvez tenha que ser desmembrada em outras funções. Não se preocupe agora em definir funções perfeitas, pois à medida que você for ganhando experiência na programação esses conceitos se tornarão mais claros. Resolver os problemas da maneira mais genérica possível é se preparar para reutilizar a função em outros programas.
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Função para Cálculo do Fatorial Um problema clássico de programação é o cálculo do fatorial. O fatorial de um número é utilizado em estatística para calcular o número de combinações e permutações de conjuntos. Seu cálculo é simples, por isso, é muito utilizado como exemplo em cursos de programação. Para calcular o fatorial, multiplicamos o número por todos os números que o precedem até chegarmos em 1. Por exemplo: - Fatorial de 3: 3 x 2 x 1 = 6 - Fatorial de 4: 4 x 3 x 2 x 1 = 24 E assim por diante... Um caso especial é o fatorial de 0 que é definido como 1.
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Função para Cálculo do Fatorial Função que calcula o fatorial de um número: def fatorial(n): fat = 1 while n>1: fat*=n n-=1 return fat
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Função para Cálculo do Fatorial Função que calcula o fatorial de um número: def fatorial(n): def fatorial(n): fat = 1 fat=1 while n>1: x=1 fat*=n while x<=n: n-=1 fat*=x return fat x+=1 return fat
Existem várias forma de resolver o problema, e todas podem estar
corretas. Para decidir se nossa implementação está correta, temos que observar os valores retornados e compará-los aos valores de referência. Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014. Passagem de Parâmetro (por valor ou referência?) Troca de valores entre duas variáveis: a = 4 b = 2 print("valor de a antes: %d" % a) print("valor de b antes: %d" % b) temp = b b = a a = temp print("valor de a depois: %d" % a) print("valor de b depois: %d" % b)
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Passagem de Parâmetro (por valor ou referência?) Troca de valores entre duas variáveis usando função : def swap(a,b): temp = b b = a a = temp print("valor de a dentro: %d" % a) print("valor de b dentro: %d" % b) a = 4 b = 2 swap(a,b) print("valor de a depois: %d" % a) print("valor de b depois: %d" % b)
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Escopo das Variáveis (Locais e Globais) Quando usamos funções, começamos a trabalhar com variáveis internas ou locais e com variáveis externas ou globais. A diferença entre elas é a visibilidade ou escopo. Uma variável local a uma função existe apenas dentro dela, sendo normalmente inicializada a cada chamada. Assim não podemos acessar o valor de uma variável local fora da função que a criou e, por isso, passamos parâmetros e retornamos valores nas funções, de forma a possibilitar a troca de dados no programa. Uma variável global é definida fora de uma função, pode ser vista por todas as funções do módulo e por todos os módulos que importam o módulo que a definiu. Variáveis globais devem ser evitadas o máximo possível, pois dificultam a leitura e violam o encapsulamento da função.
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Escopo das Variáveis (Locais e Globais) Uso de variável global dentro de função: a = 5 b = 6 def muda_e_imprime(): a=7 print("a dentro da função: %d" % a) print("b dentro da função: %d" % b) print("a antes da função: %d" % a) print("b antes da função: %d" % b) muda_e_imprime() print("a depois da função: %d" % a) print("b depois da função: %d" % b)
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Escopo das Variáveis (Locais e Globais) Uso de variável global dentro de função: a = 5 b = 6 def muda_e_imprime(): a=7 print("a dentro da função: %d" % a) print("b dentro da função: %d" % b) print("a antes da função: %d" % a) print("b antes da função: %d" % b) muda_e_imprime() print("a depois da função: %d" % a) print("b depois da função: %d" % b)
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Escopo das Variáveis (Locais e Globais) Se quisermos modificar uma variável flobal dentro de uma função, devemos informar que estamos usando uma variável global antes de inicializa-la, com a instrução global, na primeira linha de nossa função: a = 5 def muda_e_imprime(): global a a=7 print("a dentro da função: %d" % a) print("a antes da função: %d" % a) muda_e_imprime() print("a depois da função: %d" % a)
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Funções Recursivas Uma função pode chamar a si mesma, e quando isso ocorre temos uma função recursiva. O problema de fatorial é interessante para demonstrar o conceito de recursividade. Podemos definir o fatorial de um número como sendo esse número multiplicado pelo fatorial do seu antecessor. Função recursiva para cálculo do fatorial: def fatorial(n): if n==0 or n==1: return 1 else return n*fatorial(n-1)
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Validação Funções são muito úteis para validar a entrada de dados. Exemplo de validação sem usar função: while True: v=int(input("Digite um valor entre 0 e 5:")) if v<0 or v>5: print("Valor invalido.") else: break
Código para ler um valor inteiro, limitado por um valor de mínimo e
máximo. Esse código repete a entrada de dados até termos um valor válido.
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Validação Validação de inteiro usando função: def faixa_int(pergunta, minimo, maximo): while True: v=int(input(pergunta)) if v<minimo or v>maximo: print("Valor invalido. Digite um valor entre %d e %d" % (minimo,maximo)) else: return v
Esse tipo de verificação é muito importante quando nosso programa
só funciona com uma faixa de valores. Quando verificamos os dados do programa, estamos realizando uma validação, que é importante para evitarmos erros difíceis de detectar após a escrita do programa. Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014. Parâmetros Opcionais Nem sempre precisaremos passar todos os parâmetros para uma função, preferindo utilizar um valor previamente escolhido como padrão, mas deixando a possibilidade de alterá-lo, caso necessário. Função para imprimir uma barra na tela: def barra(): print("*" * 40)
Função para imprimir uma barra na tela com parâmetros opcionais:
Parâmetro opcionais são úteis para evitar a passagem desnecessária
dos mesmos valores, mas preservando a opção de passar valores, se necessário. Os parâmetros opcionais devem sempre ser os últimos!
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Nomeando Parâmetros Quando especificamos o nome dos parâmetros, podemos passá-los em qualquer ordem. Função retângulo com parâmetros obrigatórios e opcionais: def retângulo(largura, altura, caractere="*"): linha = caractere * largura for i in range(altura): print(linha)
Chamando a função retângulo nomeando os argumentos:
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Funções como Parâmetro Um poderoso recurso em Python é permitir a passagem de funções como parâmetro, permitindo combinar vária funções para realizar uma tarefa. Funções como parâmetro: def soma(a,b): return a+b def subtracao(a,b): return a-b def imprime(a,b,foper): print(foper(a,b)) imprime(5,4,soma) imprime(10,1,subtracao)
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Funções Lambda Função lambda que recebe um valor e retorna o dobro dele: a=lambda x: x*2 print(a(3))
Funções lambda que recebe mais de um parâmetro :
aumento=lambda a,b: (a*b/100) aumento(100,5)
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.