Introdução à programação e aos algoritmos

João Araujo Ribeiro · Capítulo 53 de 103

Páginas do PDF

Introdução à programação e aos algoritmos

4.3.2 Funções com Retorno de Resultados

Escreva um programa capaz de criar outras formas, usando uma função

semelhante à que imprimiu a árvore.

 

EXERCÍCIO 4.6

 

Modi que o programa da árvore de natal para usar comandos for in

range() em vez de escrever explicitamente cada linha. Você vai precisar de 4

laços com for para desenhar a mesma árvore.

 

EXERCÍCIO 4.7

 

Escreva uma função que dada uma nota entre 0.0 e 10.0 imprima na tela um

conceito entre ‘A’ e ‘E’, segundo a tabela:

 

A ≥ 9.0 9.0 > B ≥ 8.0 8.0 > C ≥ 7.0 7.0 > D ≥ 5.0 E < 5.0

 

O que acontece com o seu programa se for digitada nota menor que zero ou maior

que dez?

 

4.3.2 FUNÇÕES COM RETORNO DE RESULTADOS

Normalmente as funções retornam algum resultado para quem as chamou. Assim, a informação corre nos dois sentidos, entre quem chamou e a função chamada.

Apesar de termos visto que o módulo math já tem uma função

fatorial, é instrutivo escrevermos nossa própria versão dessa função. Veja o Programa 4.13.

1 def fatorial(n):

2 fat = 1

3 for i in range(1, n + 1):

4 fat = fat * i

5 return fat

6

7 n = 5

8 resul1 = fatorial(n)

9 fat(4)

10 resul2 = fatorial(n + 1)

11 num = 10

12 resul3 = fatorial(num)

13 print(“Resultados:”, resul1, resul2, resul3) 14 print(“Resultados:”, fatorial(n), fatorial(n + 1) ,

15 fatorial(num))

 

■ Programa 4.13: Função fatorial.

 

A definição de fatorial segue a sintaxe já exposta. O corpo da função deve vir recuado.

Vale a pena analisar melhor como acontece o fluxo de execução desta função.

Como você percebe, os desvios de fluxo ocorrem não apenas para funções fora do seu arquivo-fonte, mas também para aquelas dentro dele. Para analisar os desvios, vamos ignorar as chamadas de print(). Olharemos apenas para os desvios dentro do programa

na Figura 4.4.

Figura 4.4 Desvios dentro do arquivo-fonte.

 

A cada chamada de fatorial(), o fluxo de execução desvia

para a função fatorial(), calcula o fatorial e retorna um valor para a linha original da chamada.

Nas linhas 8, 10 e 12 a função fatorial() é chamada e retorna

um valor que é atribuído a uma variável. As linhas de 7 a 14 compõem o chamado programa principal. O fluxo de execução inicia-se sempre no programa principal. Neste caso, a primeira linha executada é a linha 7.

Resumidamente, o fluxo de execução deste programa será: 7, 8,

(1, 2, (3, 4), 5), 8, 9, ()1, 2, (3, 4), 5), 9, 10, (1, 2, (3,4), 5), 10, 11, 12, (1,2,(3,4), 5), 12, 13, 14, (1, 2, (3, 4), 5), 14, (1, 2, (3, 4), 5), 14, (1, 2, (3, 4), 5), 14.

Apresentei diversas possibilidades de parâmetros da função.

Como está no programa, o valor de n em fatorial() pode ser substituído por qualquer expressão inteira. Uma tentativa de passar um valor não inteiro vai resultar em um erro de execução. Uma boa técnica de programação diria para evitar este tipo de erro, e o que foi passado para fatorial() deveria ser testado antes, para evitar o erro. Por enquanto, isso não é grave e vamos nos concentrar nos aspectos do fluxo de execução, mas no futuro você deverá ficar atento para evitar que o seu programa termine com tais tipos de erro.

O programa mostra que também pode ser usada uma expressão

inteira, como n+1 como argumento da função, ou um valor inteiro literal, como 4. Finalmente, você pode usar qualquer nome de variável inteira para passar para fatorial(). A relação dessas variáveis com o valor de n da função fatorial() será mais bem compreendida nas próximas seções.

 

EXERCÍCIO 4.8