Linha 36: Linha 36:




  #definindo funções
  >>> def soma(x,y):
def soma(x, y):
...  return x + y
    return x + y
  ...
  def quadrado(x):
>>> def diferenca(x,y):
    return x*x
...  return x - y
  def soma_quadrado(x, y):
...
    x2 = quadrado(x)
>>> def produto(x,y):
    y2 = quadrado(y)
...  return x * y
    return (x2, y2, soma(x2, y2))
...
  view rawfuncoes.py hosted with ❤ by GitHub
>>> def divisao(x,y):
...  return x/y
...
 
Se executarmos estas funções no prompt:
 
 
>>>
>>> soma(10,13)
23
>>> diferenca(10,13)
-3
>>> produto(10,13)
130
>>> divisao(10,13)
  0
>>>
 




* Função soma
* Função soma
** S são passados obrigatoriamente dois parâmetros e é retornada a soma dos dois
** 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.
** Esta função pode receber quaisquer objetos que suportem a operação de soma.




* Função quadrado
* Função diferenca
** Recebe somente um parâmetro e retorna seu quadrado
** São passados obrigatoriamente dois parâmetros e é retornada a subtração dos dois
** Se aplica somente a valores numéricos.
** Esta função pode receber quaisquer objetos que suportem a operação de soma e pode retornar valor negativo
 


* Função produto
** São passados obrigatoriamente dois parâmetros e é retornada a multiplicação dos dois valores
** Esta função pode receber quaisquer objetos que suportem a operação de soma e pode retornar valor muito alto


* Função soma_quadrado
** Recebe duas variáveis numéricas e retorna uma tupla contendo os quadrados das variáveis de entrada mais a soma desses quadrados.


* Função divisao
** São passados obrigatoriamente dois parâmetros e é retornada o quociente dos dois valores
** Quando o dividendo é menor que o divisor e os dois valores são inteiros retorna apenas o quociente inteiro
** Deve existir uma regra para a divisão por sero
<br>


== Chamando funções dentro do seu programa ==
== Chamando funções dentro do seu programa ==

Edição das 10h59min de 9 de janeiro de 2016

Funções




Importância das funções em um programa


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.


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.


Definindo funções no Python!



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 abaixo.

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.


>>> def soma(x,y):
...   return x + y
... 
>>> def diferenca(x,y):
...   return x - y
... 
>>> def produto(x,y):
...   return x * y
... 
>>> def divisao(x,y):
...   return x/y
... 

Se executarmos estas funções no prompt:


>>>

>>> soma(10,13)
23
>>> diferenca(10,13)
-3
>>> produto(10,13)
130
>>> divisao(10,13)
0
>>> 


  • 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.


  • Função diferenca
    • São passados obrigatoriamente dois parâmetros e é retornada a subtração dos dois
    • Esta função pode receber quaisquer objetos que suportem a operação de soma e pode retornar valor negativo


  • Função produto
    • São passados obrigatoriamente dois parâmetros e é retornada a multiplicação dos dois valores
    • Esta função pode receber quaisquer objetos que suportem a operação de soma e pode retornar valor muito alto


  • Função divisao
    • São passados obrigatoriamente dois parâmetros e é retornada o quociente dos dois valores
    • Quando o dividendo é menor que o divisor e os dois valores são inteiros retorna apenas o quociente inteiro
    • Deve existir uma regra para a divisão por sero


Chamando funções dentro do seu programa


#chamando funções
soma(2, 2)
quadrado(3)
soma_quadrado(3, 4)
view rawfuncoes2.py hosted with ❤ by GitHub



  • Primeira chamada => retorna 4
  • Segunda chamada => retorna 9
  • Terceira chamada => retorna (9, 16, 25)

No lugar dos números poderiam ter sido usadas variáveis que contivessem estes valores.


Existem algumas características interessantes da passagem de parâmetros em Python. Veremos algumas a seguir.

Parâmetros com valor padrã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:


#parâmetros com valores padrão
def gosta_cachorros(op='sim'):
   if op == 'sim':
 print 'Eu gosto de cachorros'
   elif op == 'nao':
 print 'Eu nao gosto de cachorros'
   else:
 print 'Responda com sim ou nao'
view rawfuncoes3.py hosted with ❤ by GitHub


Neste caso se chamássemos esta função no shell do python, ficaria assim:

>>> gosta_cachorros()
Eu gosto de cachorros
>>> gosta_cachorros('sim')
Eu gosto de cachorros
>>> gosta_cachorros('nao')
Eu gosto nao de cachorros
>>> gosta_cachorros('gato')
Responda com sim ou nao


Assim, se o parâmetro com valor padrão for omitido, o valor padrão será usado.

Um caso particular desta propriedade da passagem de parâmetros das funções é a utilização de vários argumentos com valores padrão. Estas são as funções com argumentos chave.

Exemplo:

#argumentos chave
def gosta_de(acao='comer', objeto1 = 'batata frita', objeto2 = 'bife'):
   print 'Eu gosto de ', acao, ' ', objeto1, ' com ', objeto2
view rawfuncoes4.py hosted with ❤ by GitHub


As chamadas a esta função podem ocorrer da seguinte maneira:

>>> gosta_de()
Eu gosto de comer batata frita com bife
>>> gosta_de(objeto1 = 'lasanha')
Eu gosto de comer lasanha com bife
>>> gosta_de(acao = 'cozinhar')
Eu gosto de cozinhar batata frita com bife
>>> gosta_de('beber', 'agua')
Eu gosto de beber agua com bife
>>> gosta_de('beber', 'suco de laranja', 'acerola')
Eu gosto de beber suco de laranja com acerola
>>> gosta_de('beber', objeto2 = 'agua')
Eu gosto de beber batata frita com agua
>>> gosta_de(1, 2, 3)
Eu gosto de 1 2 com 3

Os parâmetros passados vão para o argumento ao qual são atribuídos. Caso não haja atribuição, os valores serão atribuídos da esquerda para a direita, por isso a diferença entre gosta_de('beber', 'agua') e gosta_de('beber', objeto2 = 'agua').


Note na última chamada que esta função aceita qualquer tipo de dado que seja imprimível (suporte print)


Com estas informações, você já será capaz de começar a fazer suas próprias funções!

Lembre-se que se a função não retorna nada o return pode ser omitido.