Curso de Programação em Python aula 10 – Funções em Python

Bem vindos á décima aula de programação em PythonEste artigo faz parte do curso de programação em Python do INFOmoz. Para acessar outras aulas do curso, por favor visite o índice do curso de programação em Python .

OBJECTIVOS DA AULA

  • Conceito de função
  • Declaração de Função
  • Parámetros de entrada e valor de retorno
  • Chamada de Funções e passagem de parámetros
  • Exemplos

Estamos agora a entrar nos conceitos avançados da programação procedimental! Para hoje trataremos do estudo das funções( em programação).

Conceito de função

Antes de começarmos a usar funções nos nossos programas e jogos, primeiro devemos saber o que é função em programação? Não adianta pegar no dicionário porque lá você não terá a resposta.Na aula passada vimos o conceito de ciclos, que serviam para repetir instruções sem ter que escreve-las novamente. Pudeste notar que as instruções só podiam ser repetidas numa determinada área do programa. Imagina que temos a seguinte situação num programa qualquer:

instrução 1bloco 1instrução 2bloco 1…

Queremos que o bloco 1 seja repetido em várias partes diferentes do programa. Ai já não podemos usar ciclos for ou while, pois temos outras instruções que não devem ser repetidas entre as duas repetições. Dai que torna-se necessário criar um conjunto de instruções e codifica-los com uma palavra chave, e em qualquer parte do programa, ao referenciarmos a palavra chave são executadas todas as instruções do conjunto. A este conjunto de instruções chamamos função.Uma função normalmente contém instruções para realizar uma operação especifica e devolver o resultado. Mas como eu disse normalmente, também podem existir instruções “fora de conteúdo” numa função.

Declaração de uma função

Para criar uma função em Python usa-se a palavra reservada def, com a seguinte sintâxe:

def ():….. return #Este comando é opcional

Veja um exemplo de uma função simples:

def minhafuncao():    pass

Esta é a função mais simples de Python. Ela não contém nenhum parámetro de entrada e nem valor de retorno(sobre isso falaremos daqui a pouco), e só contém a instrução pass, que vimos na aula passada, quando falamos sobre ciclos em Python.

Parámetros de entrada ou argumentos da função

Os parámetros de entrada são os valores que são passados para serem processados pela função. A função usa os valores de entrada para determinar os resultados das suas instruções. Uma função pode ter vários valores de entrada, assim como pode não ter nenhum, como vimos no exemplo acima. Quando a função contém mais de um parámetro, eles são separados por virgulas. Um exemplo de uma função que contém parámetros de entrada é a função pow da classe math, que calcula a potência de um número dadas a base e o expoente. A base e o expoente devem ser passados para a função como parámetro de entrada. Provavelmente a definição da função pow é algo parecido com:

def pow(base,expoente):….

Valor de retorno de uma função

O valor de retorno de uma função é o valor que a função irá devolver. Assim como parámetros, a função pode não ter nenhum valor de retorno ou ter vários. Quando há mais de um valor de retorno, a função devolve uma tupla de valores de retorno. Ter vários valores de retorno é algo meio exclusivo de Python.Notar que depois da return nenhuma instrução pode ser acrescentada a função( a identação termina automaticamente em IDEs ). Para dar um exemplo de valor de retorno, vamos voltar para a função pow. Depois de calcular a potência, a função deve devolver este valor para ser usado pelo resto do programa. Então para isso vamos usar a palavra reservada return, para indicar o valor a retornar:

def pow(base,expoente):    potencia=<Ops, esqueci-me da fórmula da potência >;    return potencia #Depois de calculada, retorna-mos o valor da potência e a função deve terminar aqui!!!

Mas chega de conversa e vamos logo aos exemplos!!!O exemplo mais clássico de uma função em Python é a função que imprime os números da série de Fibonacci até um certo limite, que para nós será um parâmetro de entrada:

def fibo(n):    a,b=0,1    while b        print(b)        a,b=b,a+b

A função tem como parámetro de entrada o índice final da sequência(n), e não retorna nenhum valor. Dissemos a pouco tempo que uma função pode não retornar nenhum valor. Note que imprimir algo não é retornar valor.Mas você deve estar se perguntando: De onde sera que virá este parámetro? Se adivinhei então veja o que se segue…

Passagem de parámtros e chamada de funções

Primeiro dizer que diferentemente de outras linguagens como o caso do Pascal, as funções em Python podem ser declaradas em qualquer parte do programa, mas só podem ser usadas depois de declaradas. Isto quer dizer que qualquer referencia á uma função antes da linha de declaração da mesma resultará num erro.Como já criamos a nossa função, está na hora de pôr ela p’ra funcionar, para isso, procedemos da seguinte maneira:Para chamar uma função que possui um valor de retorno, como ela vai devolver alguma coisa, é lógico que devemos ter um recipiente para armazenar o valor retornado, uma variável. Mas é também possível usar o valor retornado de outras maneiras, como imprimindo-na tela com a instrução printPara os parámetros, eles podem ser passados por referência ou por valor mesmo. Passagem por referencia é quando usamos uma variável para indicar o valor a ser passado e por valor é quando indicamos o próprio valor. Veremos mais sobre a passagem de parámetros num artigo especial para isto.Indo aos exemplos, poderiamos ter as seguintes formas de chamar a função:

fibo(3)fibo(j) # sendo j uma váriavelfibo(n+5)

Vamos agora ver o caso de uma função que retorna algum valor. A função soma é uma função simples que calcula a soma de dois valores passados por parâmetro:

def soma(valor1,valor2):    resultado=valor1+valor2    return resultado

Agora, para invocar esta função, teremos uma variável que possa receber este valor e usar no resto do programa:

valor=soma(3,5)#Ou então se quisessemos imprimir o valor directamente:print(soma(3,6))

Aliás, a partir da versão 3 do Python print passou a ser uma função. Podes dizer quais os parámetros de entrada e o valor de retorno da função print?Em todos os casos acima citados, o valor passado passa a ser o valor de n no interior da função(por isso chama-se passagem de parámetro).Para o caso de uma função com mais de um parámtro, os parámetros são passados na ordem que a função indica. Por exemplo:

def minha_funcao(n1,n2):    print n1

Se chamarmos a função da seguinte forma:

minha_função(2,7)

O valor passado ao parámetro n1 será 2 e o de n2 será 7.É importante verificar esta ordem, pois em casos em que os parámetros são de tipos diferentes, o programa pode resultar numa catástrofe como podes ver a seguir:

def imprime(nome,idade) # A função tem dois parámetros de diferentes tipos, String e inteiro.    print idade+5 # imprime a idade acrescentada cinco anos.Ao chamarmos essa função:    imprime(“Elisio”,19) # Até aqui nenhum problemaMas se fizermos isso:    imprime(19,”Elisio”) # Uma desgraça acontecerá com certeza

O problema é que como os parámetros são passados na ordem que foram declarados, o parámetro idade recebeu uma string no segundo caso e tentou fazer a operação “Elisio”+5, que é impossivel.Para o caso de retorno, podemos retornar qualquer valor, mas também deve-se ter atenção ao tipo de valor retornado. Para verificar qual o tipo do valor retornado pode-se usar a função type(), já que agora já sabes que isto é uma função.

def m():    pass    x=m()    type(x)

Podes fazer isso com qualquer função.Mais um exemplo de um programa usando funções:

def quadrado(num):    return num*numn=float(raw_input(”Introduza o numero a determinar o seu quadrado”))quad=quadrado(n)print “O seu quadrado e %f” %(quad)

Este programa determina o quadrado de um numero a partir de funções.Agora você pode criar funçês para quase tudo, por exemplo, determinar se um trianglo é equilátero, tendo como parámetro os seus lados, ou então calcular o mmc(menor múltiplo comum) e mdc(maior divisor comum) dados dois números. Ao longo do curso veremos mais funções, mas pra próxima aula continuaremos com o estudo de  funcões em Python!Até lá!!!

Receba nossas actualizações por email

Ver Campanhas anteriores.

(Visited 382 times, 1 visits today)
Share