Sub-rotinas
Uma sub-rotina é uma parte separada do programa que tem um nome e resolve sua própria tarefa separada. A sub-rotina está localizada no início do programa principal e pode ser iniciada (chamada) a partir do programa principal especificando o nome.
O uso de sub-rotinas permite evitar a duplicação de código, caso seja necessário escrever o mesmo código em locais diferentes do programa.
As bibliotecas que são importadas para um programa (por exemplo, a biblioteca math math) consistem em sub-rotinas que já foram compiladas por alguém. Os programadores não precisam pensar em quais algoritmos implementam, mas simplesmente aplicá-los, pensando apenas no que exatamente estão fazendo. Esta é uma grande economia de tempo. Não há necessidade de escrever um algoritmo que já foi escrito por outra pessoa.
Cada sub-rotina
deve executar apenas uma tarefa, apenas calcule algo, ou forneça alguns dados, ou faça outra coisa.
Existem dois tipos de sub-rotinas -
procedimentos e
funções.
Os subprocedimentos executam alguma ação, como exibir um resultado na tela de uma determinada forma (um exemplo simples, a instrução
print()
é um subprocedimento padrão que imprime dados na tela).
As sub-rotinas de função
retornam um resultado (número, cadeia de caracteres, etc.) que podemos usar no programa principal.
Vamos tentar escrever um procedimento simples:
Suponha que precisamos exibir a string "Error" na tela toda vez que pode ocorrer um erro no código por falha do usuário, por exemplo, quando ele insere dados incorretos.
Isso pode ser feito escrevendo a declaração
print("Erro")
E agora imagine que tal linha precise ser inserida em vários lugares do programa. Claro, você pode simplesmente escrevê-lo em todos os lugares. Mas esta solução tem duas desvantagens.
1) Esta string será armazenada na memória muitas vezes.
2) Se quisermos alterar a saída em caso de erro, teremos que alterar esta linha ao longo do programa, o que é bastante inconveniente
Para tais casos, são necessários procedimentos.
Um programa com um procedimento pode se parecer com isto:
def printError(): # descrição do procedimento
print("Erro")
...
printError() # inicia o procedimento para execução.
# Basta especificar o nome do procedimento que queremos executar
...
printError()
É preciso lembrar!
- O procedimento começa com a palavra
def
(do inglês - define - definir). Após o nome do procedimento, colchetes vazios e dois pontos são escritos . Os parâmetros podem ser especificados dentro dos colchetes (falaremos sobre isso mais tarde).
- Todas as instruções executadas em um procedimento são recuadas.
- Para executar um procedimento, no programa principal você precisa chamá-lo pelo nome e lembre-se de colocar parênteses!
- Você pode chamar um procedimento em um programa quantas vezes quiser.