• Nenhum resultado encontrado

Considerações Sobre os Tipos de Repetição

Pode-se dizer que é possível construir a maioria dos algoritmos utilizando qualquer um dos três tipos de repetição, sendo possível substituir um tipo de repetição por outro, mantendo a mesma funcionalidade, com poucas mudanças no algoritmo. A única exceção é que não se pode utilizar uma repetição do tipo variável de controle para os casos em que o número de iterações é desconhecido.

Estruturas de Contr

ole

54

Atenção: Quando se diz que “o número de iterações é desconhe- cido” não se está fazendo referência a um valor inserido pelo usuário, pois quando o usuário informa um valor, então o algoritmo sabe quan- tas vezes terá que executar o bloco de comandos. Não saber quantas vezes o loop será executado significa que o número de iterações só será descoberto após o início da execução do loop. Por exemplo, ima- gine que estamos criando um algoritmo que leia arquivos gravados no disco e escreva na tela o conteúdo lido. A cada linha lida de um arquivo, o programa escreve uma linha na tela – isso exige uma estru- tura de looping. Não sabemos, porém, quantas linhas de informação existirão em cada arquivo a ser processado, pode ser 1 linha ou 500, e esta informação só será conhecida quando chegarmos ao fim do arquivo. Este é um caso típico em que a repetição com variável de controle não pode ser utilizada.

Para os casos em que não sabemos quantas vezes iremos executar o bloco de comandos, devem-se escrever loops com Pré e Pós-Teste. Porém, há um alerta: o algoritmo deve ser bem

testado para garantir que não ocorrerá um erro de repetição infinita, o chamado loop infinito

(também conhecido como loop eterno), que é uma condição em que a expressão responsável

pela saída do loop nunca é atendida.

Veja um exemplo de loop infinito em uma repetição do tipo Pré-Teste:

01 02 03 04 {Exemplo de loop infinito} Algoritmo ExemploLoopInfinito Variáveis contador : Inteiro; Início contador := 1; Enquanto(contador <= 5) Faça

Escreva(“Olá. Neste momento o contador vale ” + contador); Fim_Enquanto

Fim

Perceba que no exemplo acima o contador não é incrementado, o que faz com que seu valor seja sempre 1 e, consequentemente, que o bloco de comandos seja executado infinitamente.

Pela sua estrutura, a repetição baseada em variável de controle é menos propensa a este tipo de erro, pois as regras de execução são definidas em uma única linha e o controle das repe- tições é feito pela própria estrutura.

Na prática, a decisão sobre qual tipo de repetição utilizar vai depender em muito das pre- ferências pessoais de quem está criando o algoritmo. Conforme vamos avançando no conteúdo, vai ficando evidente que é extremamente difícil duas pessoas escreverem um algoritmo exa- tamente igual, pois além da lógica de resolução de problemas ser diferente, existem múltiplas opções de comandos para realizar uma mesma implementação.

55

Estruturas de Contr

ole

Assim como acontece com as estruturas de seleção, as estruturas de repetição também podem trabalhar de forma aninhada, ou seja, é possível inserir uma estrutura de repetição den- tro de outra em um mesmo algoritmo.

Veja um exemplo: 01 02 03 04 05 06 07 08 09 10 11

{Exemplo de loop aninhado} Algoritmo ExemploLoopAninhado Variáveis

numLido, resultado, contador : Inteiro; Início

Escreva(“Digite um número para ver sua tabuada ou 0 para sair:”);

Leia(numLido);

Enquanto(numLido > 0) Faça

Para contador De 1 Até 10 Passo 1 Faça resultado := contador * numLido;

Escreva(contador + “ x ” + numLido + “ = ” + resultado); Fim_Para

Escreva(“Digite um número para ver sua tabuada ou 0 para sair:”);

Leia(numLido); Fim_Enquanto

Escreva(“Fim do programa.”); Fim

No exemplo acima, temos uma repetição com variável de controle inserida dentro de uma repetição com Pré-Teste. Note que quando uma estrutura é inserida dentro de outra, ela

deve iniciar e encerrar dentro desta. No nosso exemplo, seria incorreto colocar o Fim_Para

depois do Fim_Enquanto, uma vez que o Para foi declarado dentro do Enquanto.

O correto é que uma estrutura de repetição ou seleção sempre encerre no mesmo nível em que foi declarada. Veja:

Incorreto Estrutura 1 Estrutura 2 Correto Estrutura 1 Estrutura 2

Estruturas de Contr

ole

56

Representado em fluxograma, o algoritmo anterior ficaria da seguinte forma:

contador, 1, 10, 1 Início numLido > 0 S N Fim <contador> x <numLido> = <resultado> resultado := contador * numLido

Digite um número para ver sua tabuada

ou 0 para sair: numLido

Digite um número para ver sua tabuada

ou 0 para sair: numLido

Na resolução de problemas mais complexos, é comum termos o aninhamento (ou encadeamento) de estruturas de repetição e estrutu- ras de seleção em um mesmo algoritmo.

57

Estruturas de Contr

ole

Atividades

1) Crie um algoritmo que leia dois números informados pelo usuá-

rio e, em seguida, exiba na tela uma mensagem dizendo se o maior deles é o primeiro, o segundo, ou se são iguais.

Represente seu algoritmo em pseudocódigo, fluxograma e dia- grama de Chapin. Também aplique o teste de mesa.

2) Crie um algoritmo que realize as seguintes atividades:

a. Solicite ao usuário três valores inteiros.

b. Multiplique o menor valor lido pelo maior e some o resultado

com o valor do meio.

c. Imprima na tela o resultado.

Seu algoritmo deverá ser representado em pseudocódigo e fluxograma. É necessário realizar o teste de mesa para garantir o funcionamento do algoritmo.

3) Desenvolva um algoritmo em pseudocódigo para aplicar um

percentual de desconto sobre o valor de uma compra infor- mado pelo usuário. Os percentuais de desconto são:

15% para compras acima de R$ 500,00;

10% para compras entre R$ 200,00 e R$ 499,99;

5% para compras abaixo de R$ 200,00.

O algoritmo deverá mandar para a impressora as seguintes informações:

Valor antes do desconto;

Valor do desconto;

Valor a ser pago.

4) Crie um algoritmo (pseudocódigo e fluxograma) que leia um

valor inteiro para X e escreva na tela X3. O algoritmo deve con-

tinuar pedindo o valor de X até que o usuário informe 0 (zero), então o programa encerra.

O algoritmo deve ser criado utilizando a estrutura de repetição com Pré-Teste.

Estruturas de Contr

ole

58

5) Desenvolva um algoritmo (pseudocódigo e fluxograma) capaz

de apresentar na tela o fatorial de um número inteiro informado pelo usuário.

O algoritmo deve ser criado utilizando a estrutura de repetição com Pré-Teste.

6) Crie um algoritmo (pseudocódigo e fluxograma) que solicite

ao usuário um nome e um número inteiro, que representará a quantidade de vezes que o nome informado deverá ser escrito na tela.

O algoritmo deve ser criado utilizando a estrutura de repetição com Pós-Teste.

7) Construa um algoritmo (pseudocódigo e fluxograma) que seja

capaz de calcular o valor total de uma compra, somando o preço de cada um dos produtos.

O algoritmo deverá solicitar o preço de cada produto e ir somando ao montante total, e deve entender que os produ- tos acabaram quando o preço informado for 0 (zero), então mostrará o número de itens comprados e o total da compra, encerrando a execução.

Caso seja informado algum valor menor do que zero, o pro- grama deve desconsiderá-lo e exibir uma mensagem de erro solicitando que o valor correto do produto seja digitado. O algoritmo deve ser criado utilizando a estrutura de repetição com Pós-Teste.

8) Crie um algoritmo (pseudocódigo e fluxograma) que realize as

seguintes atividades:

a. Pergunte a quantidade de alunos da turma.

b. Solicite ao usuário o nome de cada um dos X alunos.

c. Envie cada nome lido para a impressora.

O algoritmo deve ser criado utilizando a estrutura de repetição variável de controle.

9) Desenvolva um algoritmo (pseudocódigo e fluxograma) que

solicite ao usuário a entrada de 5 valores inteiros e, a cada valor lido, aplique a seguinte regra: se o número lido for maior que 10, subtrai 5 e escreve o resultado na tela, se não soma 2 e manda o resultado para a impressora.

O algoritmo deve ser criado utilizando-se a estrutura de repeti- ção variável de controle.

59

Estruturas de Dados Homogêneas

105

Estruturas de Dados

Documentos relacionados