Clube de Programação — Dia 3

O terceiro encontro do Clube de Programação aconteceu no último dia 15 de outubro e o conteúdo trabalhado foi função e recursividade em python.
A função é uma sequência de comandos que realiza uma tarefa e tem como principal finalidade organizar o programa que está sendo construído em blocos. Ou seja, dividir seu problema maior em partes menores e mais simples [1]. Dessa forma sua principal finalidade é nos ajudar a organizar programas em pedaços que correspondam a como imaginamos uma solução do problema [1].
COMANDOS
NOME é o nome dado a função
PARÂMETROS são especificações da função e pode ser 0, 1 um ou mais parâmetros em cada função.
COMANDO são as instruções a ser executadas quando a função é chamada
Vamos aos exemplos. Calcular fatorial:
Entrada:
def calcularFatorial (numero):
if (numero < 0):
return numero
fatorial = 1
for contador in range (1, numero +1):
fatorial *= contador
return fatorial
resultado = calcularFatorial (4) #você pode substituir o número que está entre parênteses. Esse será número fatorado.
if (resultado >0):
print (resultado)
else:
print (‘Erro.’)
Saída:
>>>
24
>>>
Calcular Combinação:
Entrada:
def calcularFatorial (numero):
if (numero < 0):
return numero
fatorial = 1
for contador in range (1, numero +1):
fatorial *= contador
return fatorial
def calcularCombinacao (n,p):
return calcularFatorial (n)/(calcularFatorial(p)*calcularFatorial(n-p))
print (calcularCombinacao (10,2)) #onde n=10 e p=2. Para alterar a combinação você altera os números aqui.
Saída:
>>>
45.0
>>>
Como vimos você pode criar qualquer nome para as suas funções, exceto aquelas que são usadas pelo python com alguma função já pré-definida. Além disso, também é possível uma função citar a si mesma. Para isso damos o nome de recursão! Lembra do for e do while que criavam formas de loops? Agora a recursão permite a você criar um loop até chegar ao seu resultado [3].
Segue um exemplo de recursividade:
Entrada:
def contar ():
if (inicio>10):
return inicio
print (inicio)
inicio += 1
contar (inicio)
def calcularFatorialRecursivo (n):
if (n==1):
return 1
return n*calcularFatorialRecursivo (n-1)
print (calcularFatorialRecursivo (5))
Saída:
>>>
120
>>>
Mas cuidado para não escrever algo que nunca termina, como por exemplo:
Entrada:
def infinita ():
print (‘infinito’)
infinita()
infinita()
Você pode conferir o primeiro texto sobre o Clube de programação e encontrar maiores informações em nosso github para treinar em casa!
Acompanhem as nossas mídias para saber mais sobre essa e outras atividades!
Fontes:
[1] https://python.ime.usp.br/pensepy/static/pensepy/05-Funcoes/funcoes.html
[2] https://www.dcc.ufrj.br/~fabiom/mab225/07func.pdf
[3] http://www.dca.fee.unicamp.br/courses/EA072/lisp9596/node17.html
Para saber mais sobre o tema:
https://github.com/instituto-hub/ClubeDeProgramacao
http://orion.lcg.ufrj.br/python/_08%20-%20Programando%20em%20Python%20-%20Recursao.pdf
http://algol.dcc.ufla.br/~monserrat/icc/Introducao_linguagens.pdf
https://wiki.python.org.br/ListaDeExercicios
Livros:
Introdução à Programação com Python (Português) — Nilo Ney Coutinho Menezes
Automate the Boring Stuff with Python — Practical programming for total beginners. — Al Sweigart.
https://wiki.python.org.br/DocumentacaoPython
Assine a nossa newsletter quinzenal e receba conteúdo do Instituto HUB e parceiros em primeira mão!
Quer levar essa experiência e outras para a sua organização? Veja o que já foi feito por nós e entre em contato conosco. Conte-nos suas ideias!

