• Nenhum resultado encontrado

Estrutura de repetição com teste no final (repete ate)

No documento Livro Logica Programacao b (páginas 103-112)

com teste no fnal

8.2 Estrutura de repetição com teste no final (repete ate)

Outra estrutura bastante semelhante a anterior, também com a condi- cional definida no final da estrutura, é a repete...ate. A sua diferença básica

em relação ao  faz...enquanto é que ela encerra a execução do laço apenas

quando a condição for verdadeira . Vejamos então sua sintaxe.

Quadro 2 Sintaxe de estrutura de repetição repete...ate e representação em fluxograma. SINTAXE EM

PSEUDOCÓDIGO FLUXOGRAMA

Compare o fluxograma dessa estrutura com o do faz ... enquanto para

identificar a diferença de funcionalidade.

Veja um pequeno exemplo, no qual o pseudocódigo apresenta na tela os números de 1 a 10, utilizando essa estrutura.

Você pôde notar, nesse exemplo, que o laço só encerra sua execução quando a sua condição retorna um valor verdadeiro; nesse caso, quando a

variável ié igual a dez.

Vamos exercitar um pouco? Tente resolver o seguinte problema e só depois de ter a sua versão do algoritmo funcionando confira com o pseudocódigo aqui apresentado para poder comparar detalhes e diferenças das implementações.

2 Problema : desenvolva um jogo no qual o computador escolhe um

número inteiro positivo entre 0 (zero) e 100 (cem) de forma alea- tória (já utilizamos antes essa função). Após determinar o número (sem exibi-lo ao usuário), o computador solicitará que você per- maneça “chutando” valores até acertar o número oculto. A cada tentativa do usuário, o computador deve informar se o número oculto é maior ou menor do que o informado pelo jogador. O jogo terminará no momento em que o número for localizado, quando então o computador deverá encerrar o laço, informando o número oculto e a quantidade de tentativas necessárias para encontrá-lo.

Fácil, não é verdade? E se não desejássemos que o jogo encerrasse ao ser encontrado o número? Pois bem. Se quisermos permitir que o jogador decida se quer parar de jogar ou tentar uma nova rodada do jogo, é necessário reali- zar uns pequenos ajustes no pseudocódigo. Pense um pouco antes de conferir o algoritmo pronto para ver se você consegue adequar o código anterior para permitir essa funcionalidade.

Pronto! Analise esse código e compare com o anterior para verificar quais foram as alterações implementadas.

Com isso, estamos encerrando o conteúdo desta aula e nos aproximando do final da nossa disciplina. Não deixe de executar as atividades do caderno e de acessar o material complementar disponibilizado pelos professores.

Síntese da aula 

 As estruturas de repetição com teste no final apresentam uma variante à estrutura de repetição com teste no início, tendo como principal diferença o fato de que a estrutura com teste no início pode ser executada nenhuma, uma ou diversas vezes. Já as estruturas com teste no final têm seu bloco de instru- ções executadas ao menos uma vez, independentemente do valor do seu teste lógico (condição). Assim esse tipo de estrutura é executado uma ou diversas vezes, mas nunca nenhuma vez.

Atividades

1. As estruturas de repetição possuem características particulares em sua construção e forma de execução. Considerando que há estruturas que permitem a repetição nenhuma, uma ou várias vezes, analise o

algoritmo a seguir sabendo que, sem modificar o tipo da estrutura de repetição, desejo efetuar uma pequena alteração para que o laço repita

nenhuma  vez. Assinale a alternativa mais adequada.

inicio

inteiro numero, contador   repete

escrever “Introduza um numero:” ler numero

contador <- contador + 1 ate contador > 5

fm

b) Apenas é necessário modificar o teste condicional para contador < 5

em vez de contador > 5.

c) É possível realizar a modificação adequadamente movendo a linha

contador <- contador + 1  para o início do bloco, logo abaixo de repete.

d) Não é possível fazer a modificação deseja, já que a estrutura em questão sempre executa o bloco pelo menos uma vez.

2. A função básica de um caixa de supermercado é apenas somar os preços dos produtos desejados para compra pelo cliente. Diante disso, um algo- ritmo básico para a soma dos produtos que o cliente comprará pode ser dado pelo algoritmo a seguir:

inicio

inteiro opcao, quantidade real total <– 0.0

  repete

escrever “Produto 1 - R$ 10,00\n” escrever “Produto 2 - R$ 25,00\n” escrever “Produto 3 - R$ 50,00\n”

escrever “Escolha um número de produto ou 0 para sair”:

ler opcao

escolhe opcao caso 0:

escrever “Total da compra:”, total caso 1:

ler quantidade

total <– total + quantidade * 10.0 caso 2:

ler quantidade

total <– total + quantidade * 25.0 caso 3:

ler quantidade

total <– total + quantidade * 50.0

  fmescolhe

ate (opcao = 0)

Diante do algoritmo, se forem entrados os valores 2, 5, 3, 1, 0, respec- tivamente, teremos a saída final mostrada pelo Portugol da seguinte forma:

a) total da compra: 275.0;

b) o algoritmo não executará devido à inexistência da cláusula defeito

na sintaxe do algoritmo escolhe...caso;

c) total da compra: 175.0;

d) o algoritmo entrará em uma repetição infinita.

3. Quando algoritmos são criados, algumas vezes há necessidade de controlar a ordem em que as instruções deverão ser executadas pelo computador de modo a solucionar um problema. Para permitir que o fluxo de execução seja controlado, devemos utilizar as estruturas de controle. Sobre fluxo de execução, leia as afirmativas a seguir e assinale a alternativa correta.

I. Na estrutura seqüencial, os comandos de um algoritmo são executados em uma seqüência pré-estabelecida, ou seja, cada comando é executado somente após o término do comando anterior.

II. Na estrutura de decisão (desvio condicional), são comuns situ- ações em que uma instrução, ou conjunto de instruções, devam ser executados sempre para situações verdadeiras e falsas.

III. Em todas as estruturas de repetição, uma sequência de comandos deverá ser executada obrigatoriamente uma ou várias vezes, de acordo com uma condição.

a) Somente as afirmativas I e II são verdadeiras. b) Somente a afirmativa II é falsa.

c) Somente a afirmativa III é verdadeira. d) Somente as afirmativas II e III são falsas.

4. Um algoritmo para selecionar o maior número entre N digitados, até o usuário digitar zero, poderia ser definido como:

inicio

inteiro maior <- 1 inteiro numeros   repete

escrever “Digite um numero (zero para sair): “ ler numeros

se numeros > maior entao maior <- numeros

  fmse

ate maior = 0

escrever “O maior numero digitado foi: “ , maior

fm

Dado o algoritmo anterior, o que está errado em relação ao que foi proposto?

a) O Número maior não será calculado de forma correta, pois o mesmo sempre estará com o valor zero.

b) A variável número não armazena o valor digitado pelo usuário.

c) O laço de repetição encerra após a leitura do número 1, não do zero. d) O laço de repetição ficará repetindo, pois nunca será atendida a

condição de parada.

Comentário das Atividades

 Ao resolver a atividade um você alcançou o objetivo da aula de dife-

renciar a aplicabilidade das estruturas de repetição com teste no início das estruturas de repetição com a aplicabilidade de teste no final.

Para a atividade um, a resposta correta é a alternativa (d). Segundo a

proposta da atividade, de modificar o algoritmo para que não seja executado o bloco interno ao laço sem que seja modificada a estrutura de repetição, podemos refletir que modificar a variável contador   para 6 não impede de

executar pelo menos uma vez o bloco de instruções do laço. Modificar o teste condicional para contador < 5 também não impede a execução do bloco de

instruções do laço, já que o teste da estrutura  repete...até é sempre realizado

dentro do bloco interno de instruções também não evita a execução do bloco. Portanto a alternativa (d) é a correta, já que a modificação desejada não é possível sem que se modifique a estrutura de repetição.

 Asatividades dois,três equatro ajudaram você a atingir o segundo obje-

tivo: entender a funcionalidade das estruturas de repetição com teste no final. Naatividade dois, a alternativa correta é a (c). Para resolver essa atividade,

é necessário analisar o algoritmo. No próprio enunciado são apresentados os valores que deverão ser entrados, na ordem em que foram apresentados: 2, 5, 3, 1, 0. O algoritmo iniciará execução e logo solicitará que o primeiro valor seja entrado na linha 9, que representa a opção selecionada. Como o primeiro dado entrado é 2, a estrutura de seleção múltipla desviará a execução do algoritmo para a linha 16 (caso 2). Na seqüência (linha 17), é pedido ao usuário que entre com o segundo valor (5, de acordo com o enunciado), que será atribuído à variável quantidade. Na linha 18, a variável total receberá o resultado do proces- samento de total + quantidade * 25. Total nesse momento é 0.0 (zero), como

atribuído na linha 3 e quantidade igual a 5. Reescrevendo, total vai receber o resultado do processamento de 0 + 5 * 25 que é igual a 125. Em seguida, por

causa do laço de repetição repete...até, parte do algoritmo será repetida. É soli-

citado ao usuário a entrada do terceiro dado (3, de acordo com o enunciado). A estrutura de seleção múltipla desviará a execução do algoritmo para a linha 19 (caso 3). Na seqüência (linha 20), é pedido ao usuário que entre com o quarto valor (1), de acordo com o enunciado, que será atribuído à variável quantidade. Na linha 21 a variável total vai receber o resultado do processamento de total + quantidade * 50. Sabendo que total é igual a 125 e quantidade igual a 1, pode-

mos reescrever para 125 + 1 * 50, que é igual a 175. Em seguida, por causa do

laço de repetição repete...até, parte do algoritmo será repetida. É solicitado ao

usuário a entrada do último dado (0). A estrutura de seleção múltipla desviará a execução do algoritmo para a linha 11 (caso 0). É impresso em tela Total da compra: 175.0 (lembrando que total é uma variável real) e sairá finalizando o

algoritmo.

Para a atividade três, a resposta é a alternativa (d). Isso porque a afir-

mativa ( I ) é verdadeira, pois como o próprio nome diz, estrutura seqüencial obedece a uma seqüência linear de execução. Já na afirmativa (II), sabemos que um teste condicional é baseado em lógica convencional e, portanto, deve resultar em um valor verdadeiro ou falso. Lembre-se dos tipos de desvios con-

dicionais: seleção simples, composta e encadeada. Repare que nessa afirma- tiva não é especificada qual o tipo de desvio condicional, ou seja, a afirmação generaliza para todos os tipos. Contudo, na seleção simples, uma instrução ou um conjunto de instruções é executado somente se o teste condicional espe-

cificado retornar o valor verdadeiro. Adicionalmente, na seleção composta, as instruções contidas nos desvios condicionais devem ser executadas sempre para situações verdadeiras ou falsas. Isso torna a afirmativa (II) incorreta. A afirmativa (III) também é falsa, pois uma seqüência de comandos pode ser executada nenhuma , uma ou várias vezes.

Para a  atividade quatro, a alternativa a ser assinalada é a (d), uma vez

que a variável maior  já inicia com um valor diferente de zero e, em nenhum

momento na execução do algoritmo ela poderá assumir o valor zero, pois o desvio condicional dentro do bloco do laço de repetição não permite essa atribuição. A variável que deveria servir para encerrar o laço seria a números,

pois é ela que recebe o valor digitado pelo usuário, enquanto a maior  sempre

irá armazenar o maior valor digitado.

Na próxima aula 

Encerraremos a disciplina abordando mais uma estrutura de repetição: estrutura de repetição com variável de controle. Realize uma leitura prévia desse conteúdo para uma melhor compreensão.

9

Estrutura de repetição

No documento Livro Logica Programacao b (páginas 103-112)