Funções

Kethllen Andrey Santos

 UFU 

2016

Informática para Biotecnologia

  • Funções são trechos de código que possuem nome e argumentos (algumas funções não possuem argumentos) e podem ser invocados em outras partes do programa 

 

  • É comum se dizer que uma função ‘recebe’ um ou mais valores e ‘retorna’ um resultado.
  • Este resultado é chamado de valor de retorno

 

  • Algumas funções já estão disponíveis no interpretador, por exemplo, a usada no cálculo do seno de um ângulo que está presente na biblioteca math.sin do Python.

O que são funções?

 

  • Quando escrevemos o trecho de um programa, eventualmente precisamos executá-lo várias vezes
  • À medida que evoluímos na programação pode ser necessário que o utilizemos em outros programas
  • É o que está acontecendo neste momento, os códigos começam a ficar maiores e tendem a aumentar cada vez mais
  • Se separarmos partes de um programa em trechos claros, simples e objetivos pode ser que consigamos um código menor, mais legível e mais organizado
  • Esta subdivisão de um programa mais complexo em partes menores é chamada modularização.

 

Importância das funções

  • Usaremos nesse caso, a palavra reservada def, que indica a definição de uma função
  • Em seguida, especificamos o nome da função e os nomes dos parâmetros de entrada
  • Estes parâmetros podem assumir várias formas como pode ser visto a frente
  • Eles nunca são usados para retornar dados para o programa principal ou para a função que a chama
  • Que fique claro que a única forma de retornar dados no Python é através da instrução return.

Definindo funções no Python

>>> def soma(x,y):
...   return x + y
... 

Funções

  • Função soma
    • São passados obrigatoriamente dois parâmetros e é retornada a soma dos dois
    • Esta função pode receber quaisquer objetos que suportem a operação de soma.
>>> def subtracao(x,y):
...   return x - y
... 

Funções

  • Função diferenca
    • ​São passados obrigatoriamente dois parâmetros e é retornada a subtração dos dois
    • Pode receber quaisquer objetos que suportem a operação e pode retornar valor negativo
>>> def multiplicacao(x,y):
...   return x * y
... 

Funções

  • Função produto
    • ​São passados obrigatoriamente dois parâmetros e é retornada a multiplicação dos dois
    • Pode receber quaisquer objetos que suportem a operação e pode retornar valor muito alto
>>> def divisao(x,y):
...   return x / y
... 

Funções

  • Função Quociente
    • ​São passados obrigatoriamente dois parâmetros e é retornada o quociente dos dois valores
    • Para dividendo menor que o divisor e 2 valores inteiros retorna apenas o quociente inteiro
    • Obrigatoriamente o divisor deve ser diferente de zero.

Funções

Executando funções

>>> soma(2,2)
4
>>> subtracao(2,2)
0
>>> multiplicacao(2,2)
4
>>> divisao(2,2)
1
>>> 

Algumas variações possíveis

>>> soma("casa","nova")
'casanova'
>>> subtracao(10.0,13.0)
-3.0
>>> multiplicacao("Ha",3)
'HaHaHa'
>>> divisao(20.0,2)
10.0

Algumas funções inadequadas

>>> soma("nro",23)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in soma
TypeError: cannot concatenate 'str' and 'int' objects
>>> 
KeyboardInterrupt
>>> multiplicacao("bola","3")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in multiplicacao
TypeError: can't multiply sequence by non-int of type 'str'
>>> divisao(2,0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in divisao
ZeroDivisionError: integer division or modulo by zero

Chamando funções dentro de programas

É possível invocar funções de outras funções

>>> def produto(x,y):
...   return x * y
... 
>>> def potencia(x):
...   return produto(x,x)
... 
>>> potencia(2)
4
>>> potencia(3)
9
>>> potencia(4)
16
>>> potencia(5)
25
>>> potencia(-2)
4
>>> potencia(2.5)
6.25
>>> 

Parâmetros com valor padrão

>>> def imprime_texto(resposta="sim"):
...   print(resposta)
... 
>>> imprime_texto() # Neste caso, sem argumentos
sim
>>> imprime_texto("Não") # Neste caso, comm argumentos
Não
>>> 
  • Funções com parâmetros com valor padrão podem receber um número variável de parâmetros na chamada, pois o valor padrão será assumido para o parâmetro omitido
  • Sempre deixamos o parâmetro com valor padrão para o final da tupla na definição da função
  • Observe:

 

Funções sem argumento

>>> def gosto():
...   print("Huummmm")
... 
>>> 
>>> gosto
<function gosto at 0x7f73179d2938>
>>> gosto()
Huummmm
>>> gosto("Arghhh")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: gosto() takes no arguments (1 given)
>>> 
  • Deve ficar bem claro, o padrão de chamada da função

 

  • Repare que na primeira chamada não está caracterizada a chamada de uma função
  • Na segunda, sim, invocação sem argumento
  • Na terceira, invocação com argumento sendo que na função original não existe argumento.

Funções vários argumentos

>>> def variosargs(a,b,c,d,e,f,g):
....   return(a+b+c+d+eF=g)
>>> 
>>> variosarg(1,1,1,1,1,1,1)
7
  • É possível termos vários argumentos:

 

  • Os parâmetros são enviados à função e processados de acordo com sua denominação

Exercícios

Criar as seguintes funções:

  1. Potencia: Retorna o potência de um determinado número
  2. Repete: Mostra uma palavra repetida n vezes
  3. Equacao1: Determina o valor de m na equação (m-5)x=2016
  4. Delta: Retorna o delta da fórmula de Baskhara
  5. Juro: Mostra um valor acrescido da taxa de juros
  6. Cubica: Retorna um valor elevado à 3a. potência
  7. Eq2: Imprime a expressão: "O valor da equação x = 2y - 3z / 5w é igual a " resultado.
  8. Eq3: Retorna o valor da equação a = bcd/e+4
  9. Eq4: Retorna o valor da equação z = x+2 / |y -4|
  10. Temperatura: Crie um aplicativo de conversão entre as temperaturas Celsius e Fahrenheit
  11. Aproveitando a função do exercício 4, desenvolva um programa que receba os coeficientes a, b e c e calcule as raízes de uma equação de segundo grau.

“É divertido fazer o impossível, pois lá a concorrência é menor.”

Walt Disney

Exercícios

>>> def potencia(x,y):
...   return pow(x,y)
... 
>>> potencia(2,3)
8
>>> potencia(3,3)
27
>>> potencia(2,-3)
0.125
>>> 

01

>>> def repete(x,y):
...   print(x*y)
... 
>>> repete("Ha",3)
HaHaHa
>>> repete("K",5)
KKKKK
>>> repete("zzz",10)
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
>>> 

02

>>> def equacao1(x):
...   print((2016/x)+5)
... 
>>> equacao1(2)
1013
>>> equacao1(4)
509
>>> equacao1(-5)
-399

03

>>> def delta(a,b,c):
...   print(b*b - 4*a*c)
... 
>>> delta(2,2,2)
-12
>>> delta(2,1,1)
-7
>>> 
>>> delta(-3,1,1)
13
>>> delta(-3,-2,1)
16

04

>>> def juro(p,t):
...   print(p+p*t/100)
... 
>>> juro(100,20)
120
>>> juro(80,10)
88
>>> juro(100,-10)
90
>>> juro(80,-10)
72

05

>>> def cubica(x):
...   return(pow(x,3))
... 
>>> cubica(2)
8
>>> cubica(4)
64
>>> cubica(-2)
-8

06

>>> def eq2(y,z,w):
...    return((2*y-3*z)/5*w)
... 
>>> y = 2
>>> w = 2
>>> z = 2
>>> print("O resultado da equacao de %d, %d e %d é %d" %(y,z,w,eq2(y,z,w)))
O resultado da equacao de 2, 2 e 2 é -2

07

>>> def eq3(b,c,d,e):
...   return(b*c*d/(e+4))
... 
>>> eq3(2,2,2,2)
1
>>> eq3(2.0,2.0,2.0,2.0)
1.3333333333333333
>>> eq3(2.0,2.0,2.0,2)
1.3333333333333333
>>> eq3(2.0,2.0,2,2)
1.3333333333333333
>>> eq3(2.0,2,2,2)
1.3333333333333333
>>> 

08

>>> def eq4(x,y):
...   return(x+2)/(abs(y-4))
... 
>>> eq4(2,2)
2
>>> eq4(2,0)
1
>>> eq4(2,-2)
0
>>> eq4(2,-4)
0
>>> eq4(2,4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in eq4
ZeroDivisionError: integer division or modulo by zero

09

Exercícios

>>> temp = int(raw_input("Digite o valor em graus Celsius: "))
Digite o valor em graus Celsius: 37
>>> print("A Temperatura em graus Fahrenheit é: %d" %(temp+273))
A Temperatura em graus Fahrenheit é: 310
>>> 
>>> temp = float(raw_input("Digite o valor em graus Celsius: "))
Digite o valor em graus Celsius: 37
>>> print("A Temperatura em graus Fahrenheit é: %f" %(temp+273))
A Temperatura em graus Fahrenheit é: 310.000000
>>> 

10

>>> def delta(a,b,c):
...   return(b*b - 4*a*c)
... 
>>> a = int(raw_input("Digite o valor de a: "))
Digite o valor de a: 2
>>> b = int(raw_input("Digite o valor de b: "))
Digite o valor de b: 2
>>> c = int(raw_input("Digite o valor de c: "))
Digite o valor de c: 2
>>> x1 = -b+pow(abs(delta(a,b,c)),0.5)
>>> x2 = -b-pow(abs(delta(a,b,c)),0.5)
>>> print("As raízes da equação são: %f e  %f" %(x1,x2)) 
As raízes da equação são: 1.464102 e  -5.464102
>>>
>>> a = int(raw_input("Digite o valor de a: "))
Digite o valor de a: 1
>>> b = int(raw_input("Digite o valor de b: "))
Digite o valor de b: 2
>>> c = int(raw_input("Digite o valor de c: "))
Digite o valor de c: 1
>>> x1 = -b+pow(abs(delta(a,b,c)),0.5)
>>> x2 = -b-pow(abs(delta(a,b,c)),0.5)
>>> print("As raízes da equação são: %f e  %f" %(x1,x2)) 
As raízes da equação são: -2.000000 e  -2.000000

11

Aula 05 - Funções

By Kethllen Andrey

Aula 05 - Funções

  • 851