sábado, 3 de outubro de 2009

Entradas e Saídas

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:



def raiz_2(n,aprox):
"""
Calcula o valor aproximado da raiz quadrada de n.
"""
x= n/2.0
for i in range(aprox):
x = (1/2.0) * (x + (n/x))
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.


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