Dividir para reinar é um velho princípio de resolução de problemas. Em programação isso significa usar mecanismos de abstracção que promovam, entre outras coisas, a clareza, a economia e a reutilização de código. As linguagens de programação de alto nível todas possuem uma forma de concretizar esses objectivos. Chamam-se funções. Conhecemos a noção equivalente da matemática: uma correspondência que estabelecemos entre objectos de dois conjuntos. Por exemplo, a função raiz quadrada: dado um número devolve o correspondente valor da raiz quadrada. Em Python a definição de uma função obedece à sintaxe seguinte:
1.
def
raiz_2(n,aprox):
2.
"""
3.
Calcula o valor aproximado da raiz quadrada de n.
4.
"""
5.
x
=
n
/
2.0
6.
for
i
in
range(aprox):
7.
x
=
(
1
/
2.0
)
*
(x
+
(n
/
x))
8.
return
x
Na linha 1 temos o cabeçalho da definição: formado pela palavra reservada def, seguido do nome da definição, seguido da lista separada por vírgulas dos parâmetros de entrada, seguido dos dois pontos. Os dois pontos em Python marcam o início de um novo bloco de código, devendo as instruções seguintes estarem indentadas. Deste modo, temos uma forma natural de introduzir os dados através dos parâmetrosda definição, e um modo de devolver o resultado através do comando return(linha 8). Mas em programação existem outros modos de comunicar dados e extrair resultados: input() ou raw_input(), parta introduzir os dados, print, para comunicar resultados. Dadas estas 4 situações são possíveis (quase) todas as combinações possíveis. A opção depende do problema em concreto. Para concluir: uma coisa é definir uma função. Se apenas fizesse-mos isso nada ganharíamos. É preciso também usar a definição.
1.
print
raiz_2(
2
,
20
)
Quando usamos uma nova função é feita associação entre os objectos que passamos como argumentos (neste caso, 2 e 20) e os nomes dos parâmetros (neste caso n e aprox). Esta associação mantém-se durante a activação e no contexto da definição. Em síntese, o argumento passa ao parâmetro a sua identidade (referência).
Sem comentários:
Enviar um comentário