Buscar

EC Capitulo6

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sumário 
 
CAPÍTULO 6 – COMANDOS DE REPETIÇÃO____________________________ 74 
6.1 – INTRODUÇÃO ______________________________________________________74 
6.2 – REPETIÇÃO COM TESTE NO INÍCIO ( Enquanto .. faça )_________________74 
6.3 - CONTADORES E ACUMULADORES ________________________________77 
6.4 – REPETIÇÃO COM TESTE NO FINAL ( Repita .. até)______________________81 
6.5 – DIFERENÇAS DE “ENQUANTO FAÇA” e “REPITA ATÉ”________________84 
6.6 - CONCEITO DE FLAG (bandeira sinalizadora) _________________________84 
6.7 – REPETIÇÃO COM VARIÁVEL DE CONTROLE ( Para ... faça )____________85 
6.8 – COMPARAÇÃO ENTRE ESTRUTURAS DE REPETIÇÃO________________87 
 
 
 
 74 
CAPÍTULO 6 – COMANDOS DE REPETIÇÃO 
 
 
6.1 – INTRODUÇÃO 
 Existem ocasiões que é necessário efetuar a repetição de um trecho de programa 
um determinado número de vezes. Nesse caso, poderá ser criado um looping que efetue o 
processamento de um determinado trecho, tantas vezes quantas forem necessárias. Os 
loopings também são chamados de: laços de repetição ou malhas de repetição. 
 Neste capítulo serão estudados os laços de repetição ou malhas de repetição. Serão 
abordados os comandos “enquanto faça”, “repita até” e “para faça”. 
 
 
6.2 – REPETIÇÃO COM TESTE NO INÍCIO ( Enquanto .. faça ) 
 Consiste numa estrutura de controle do fluxo lógico que permite executar diversas 
vezes um mesmo trecho do algoritmo, porém, sempre verificando antes de cada execução 
se é “permitido” repetir o mesmo trecho. 
 Para realizar a repetição com teste no início, utilizamos a estrutura enquanto, que 
permite que um bloco ou uma ação primitiva seja repetida enquanto uma determinada 
<condição> for verdadeira. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Quando o resultado de <condição> for falso, o comando é abandonado. Se já da 
primeira vez o resultado for falso, os comandos não são executados nenhuma vez. 
 
Enquanto <condição> faça 
 
 Comando 1; 
 Comando 2; 
 . 
 . 
Comando n; 
 
 
Fim_enquanto; 
<condição> 
 
 
<bloco de instrução> 
N 
S 
 
 75 
 
 
 
 
 
 
 
 
 
Para inserir o cálculo da média dos alunos em um laço de repetição – utilizando a 
estrutura enquanto – que <condição> utilizaríamos? 
 A condição seria que a quantidade de médias calculadas fosse menor ou igual a 50; 
porém, o que indica quantas vezes a média foi calculada? A estrutura (enquanto) não 
oferece este recurso; portanto, devemos estabelecer um modo de contagem, o que pode ser 
feito através de um contador representado por uma variável com um dado inicial, o qual é 
incrementado a cada repetição. 
 Exemplo (contador): 
 Inteiro CONTADOR; 
 CONTADOR � 17; { inicializar o contador } 
 CONTADOR � CONTADOR + 1; { incrementar o contador de 1 } 
 
 Aplicando estes conceitos, temos: 
Início 
 { declaração de variáveis } 
 real N1, N2, N3, N4; { notas bimestrais } 
 real MA; { média anual } 
 inteiro CONTADOR; { CONTADOR } 
 CONTADOR � 0; 
 ENQUANTO CONTADOR < 50 FAÇA { teste da condição } 
 Leia (N1, N2, N3, N4); 
 MA � (N1 + N2 + N3 + N4) / 4; 
 Escreva (“Media Anual = “, MA); 
 SE MA >= 6 então 
 Início { bloco verdade } 
 Escreva (“Aluno Aprovado!”); 
 Escreva (“Parabéns!”); 
 Fim; { bloco verdade } 
 
 
 76 
 Senão 
 Início { bloco falso } 
 Escreva (“Aluno Reprovado!”); 
 Escreva (“Estude Mais!”); 
 Fim; { bloco falso } 
 Fim_se; 
 CONTADOR � CONTADOR + 1; 
 FIMENQUANTO; 
Fim. 
 
 Numa variação do exemplo anterior, poderíamos calcular a média geral da turma, 
que seria a média aritmética das 50 médias anuais, utilizando uma expressão matemática 
gigantesca: 
 (M1 + M2 + M3 + M4 + M5 + ... + M49 + M50) / 50; 
o que se tornaria inviável. Podemos utilizar nessa situação as vantagens dos loops, fazendo 
um laço de repetição que a cada execução acumule em uma variável, chamada 
acumulador, o somatório das médias anuais de cada aluno. Após o término da repetição, 
teríamos a soma de todas as médias, na variável de acumulação, restando apenas dividi-la 
pela quantidade de médias somadas (50). 
 Exemplo (acumulador): 
 Inteiro CONT, { contador } 
 ACUM; { acumulador } 
 ACUM � 17; { inicializar o acumulador } 
 Leia (CONT); 
 ACUM � ACUM + CONT; { somar no acumulador o contador } 
 Execute mais algumas vezes estas duas últimas ações, observando o que acontece 
com a variável ACUM. 
 início 
 { declaração de variáveis } 
 real media_anual, acum, { acum = acumulador } 
 media_anual_turma; 
 inteiro contador; 
 contador � acum � 0; 
 ENQUANTO contador < 50 faça { teste de condição } 
 Leia (media_anual); 
 acum � acum + media_anual; 
 contador � contador + 1; 
 
 77 
 FIMENQUANTO; 
 media_anual_turma � acum / 50; 
 escreva (“media anual da turma = “, media_anual_turma); 
 fim. 
 O algoritmo anterior utilizava um pré-conhecimento da quantidade de alunos da 
turma da qual se desejava a média geral. Se não soubéssemos quantos eram os alunos, o 
que faríamos para controlar o laço de repetição? Teremos de encontrar outro critério de 
parada, o que pode ser feito utilizando um valor predefinido como finalizador de uma 
seqüência de valores. 
 Para aplicar tal conceito ao algoritmo da média geral da turma usaremos como 
finalizador o valor –1, que quando encontrado encerra o laço sem ter seu valor computador 
ao acumulador. 
 início 
real media_anual, acum, media_anual_turma; 
inteiro contador; 
acum � 0; 
escreva (“Para finalizar o algoritmo deve-se informar –1 para a média anual”); 
leia (media_anual); 
ENQUANTO media_anual <> -1 faça 
 acum � acum + media_anual; 
 leia (media_anual); 
 contador � contador + 1; 
FIMENQUANTO; 
Media_anual_turma � acum / contador; 
Escreva (“media anual da turma = “, media_anual_turma); 
 fim. 
 
 
6.3 - CONTADORES E ACUMULADORES 
 
Juntamente com as instruções de repetição aparece o conceito de acumuladores e 
contadores. 
Acumuladores e contadores são variáveis com um propósito específico: 
Acumuladores : acumulam um valor a cada passo de repetição do laço, normalmente é 
utilizado para cálculos; 
Contadores: contam a quantidade de repetições de execução de um determinado laço. 
São sempre incrementadas de uma unidade de valor. 
 
 78 
Um exemplo de contador pode ser descrito no algoritmo abaixo: deseja-se saber ao final 
do algoritmo quantos nomes foram lidos: 
{ ALGORITMO EXEMPLOENQUANTO } 
 INICIO 
CARACTER NOME ; 
INTEIRO CONT:; 
 
 CONT � 0; {INICIALIZA O CONTADOR COM ZERO} 
 LEIA (NOME); 
 CONT � CONT + 1; 
 ENQUANTO (NOME <> “FIM”) FAÇA 
 ESCREVA (NOME); 
 LEIA (NOME); 
 CONT ���� CONT + 1; 
 FIM ENQUANTO; 
 ESCREVA (“FORAM LIDOS”, CONT, “ NOMES”); 
 FIM. 
 
O princípio básico do contador e do acumulador é inicializar o valor dos mesmos 
e atribuir a variável, o valor já contido nela somado de um incremento. 
 
Todo contador ou acumulador deve receber um valor inicial 
 
Exemplo: 
 
CONTADOR � 0; 
CONTADOR � CONTADOR + 1; 
 
SOMA � 0; 
SOMA � SOMA + 10; 
 
 79 
EXERCÍCIO DE APRENDIZAGEM 
 Considere o seguinte problema: “Elaborar o algoritmo através da linguagem natural, 
diagrama de blocos e codificação em pseudocódigo (português estruturado) de um 
programa que efetue o cálculo do fatorial do número 5, 5!”. Dessa forma, temos que 5! = 5 * 
4 * 3 * 2 * 1 ou 5! = 1 * 2 * 3 * 4 * 5, equivalente a 120. 
 Fatorial é o produto dos números naturais desde 1 até o inteiro n. Sendo assim, o 
cálculo de uma fatorial é conseguido pela multiplicaçãosucessiva do número de termos. No 
caso de uma fatorial de número 5, este é o número de termos a ser utilizado. Desta forma, o 
programa deverá executar as multiplicações sucessivamente e acumulá-las a fim de possuir 
o valor 120 após 5 passos. O número de passos deverá ser controlado por um contador. 
Veja a seguir: 
 
Algoritmo 
1. Inicializar as variáveis FATORIAL e CONTADOR com 1; 
2. Multiplicar sucessivamente a variável FATORIAL pela variável CONTADOR; 
3. Incrementar 1 à variável CONTADOR efetuando o controle até 5; 
4. Apresentar ao final o valor obtido. 
Pelo fato de se ter que efetuar o cálculo de uma fatorial de 5 (5!), isto implica que o 
contador deverá variar de 1 a 5, por este motivo a variável CONTADOR deverá ser 
inicializada com valor 1. 
Pelo fato de a variável FATORIAL possuir ao final o resultado do cálculo do fatorial 
pretendido, esta deverá ser inicializada com valor 1. Se ela for inicializada com zero, não 
existirá resultado final, pois qualquer valor multiplicado por zero resulta zero. 
Multiplicar sucessivamente implica em se efetuar a multiplicação de variável 
CONTADOR com o valor atual da variável FATORIAL a cada passo controlado pelo looping. 
No caso por 5 vezes. Abaixo é indicado esta ocorrência na linha 2 do algoritmo. 
 
1. Inicializar as variáveis FATORIAL e CONTADOR com 1; 
2. Repetir a execução dos passos 3 e 4 por 5 vezes; 
3. FATORIAL � FATORIAL * CONTADOR; 
4. Incrementar 1 à variável CONTADOR; 
5. Apresentar ao final o valor obtido. 
 
 
 
 
 
 80 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Observe dentro do looping a indicação de dois contadores, sendo que o primeiro 
funciona como um acumulador, pois é este que terá no final o valor do resultado da fatorial, 
e o segundo sendo utilizado para controlar a execução do looping e ser a base para o 
cálculo do acumulador. 
 
CONTADOR FATORIAL FATORIAL � FATORIAL * 
CONTADOR 
COMENTÁRIOS 
1 1 1 Valor inicial das variáveis e da fatorial 
2 1 2 Cálculo da fatorial com o contador em 2 
3 2 6 Cálculo da fatorial com o contador em 3 
4 6 24 Cálculo da fatorial com o contador em 4 
5 24 120 Cálculo da fatorial com o contador em 5 
 
Perceba que quando a variável CONTADOR está com valor 5, a variável FATORIAL 
está com o valor 120. Neste ponto, o looping é encerrado e é apresentado o valor da 
variável FATORIAL. 
Início 
Fatorial � 1 
Contador � 1 
Contador 
<= 5 
Fatorial � Fatorial * 
Contador 
Contador � 
Contador + 1 
S 
N 
Fatorial 
Fim 
Diagrama de Blocos 
 
 81 
 
Pseudocódigo (Português Estruturado) 
Início 
 inteiro CONTADOR, FATORIAL; 
 FATORIAL � 1; 
 CONTADOR � 1; 
 Enquanto (CONTADOR <= 5) Faça 
 FATORIAL � FATORIAL * CONTADOR; 
 CONTADOR � CONTADOR + 1; 
 Fimenquanto; 
 Escreva (“Fatorial de 5 é = “, FATORIAL); 
Fim. 
 
 Vamos reescrever o algoritmo do fatorial, mas agora possibilitando fornecer qualquer 
número, para que o mesmo seja calculado. 
Início 
 inteiro CONTADOR, FATORIAL, NUMERO; 
 FATORIAL � 1; 
 CONTADOR � 1; 
Leia (NUMERO); 
 Enquanto (CONTADOR <= NUMERO) Faça 
 FATORIAL � FATORIAL * CONTADOR; 
 CONTADOR � CONTADOR + 1; 
 Fimenquanto; 
 Escreva (“Fatorial de “, NUMERO, “ é = “, FATORIAL); 
Fim. 
 
6.4 – REPETIÇÃO COM TESTE NO FINAL ( Repita .. até) 
 Para realizar a repetição com teste no final, utilizamos a estrutura repita, que permite 
que um bloco ou ação primitiva seja repetido até que uma determinada condição seja 
verdadeira. 
 
 
 
 
 
 
 
 
 
Laço com no mínimo um ciclo 
 
 
<bloco de instrução> 
<condição> 
 
N 
S 
Repita 
 Comando 1; 
 Comando 2; 
 . 
 . 
 Comando n; 
 
Até <condição> 
 
 82 
 Pela sintaxe da estrutura, percebemos que o bloco (Comando 1 ... Comando n) é 
executado pelo menos uma vez, independente da validade da condição. Isto ocorre porque 
a inspeção da condição é feita após a execução do bloco. 
 
 
 
 
 
 
 
Exemplos: 
a) início 
{ declaração de variáveis } 
real media_anual, acumulador, media_anual_turma; 
inteiro contador; 
contador � 0; 
acumulador � 0; 
repita 
 leia (media_anual); 
 acumulador � acumulador + media_anual; 
 contador � contador+ 1; 
até contador >= 50; { teste da condição } 
media_anual_turma � acumulador / 50; 
escreva (“media anual da turma = “, media_anual_turma); 
fim. 
 A utilização de uma estrutura repita no lugar de uma estrutura enquanto corresponde 
a utilizar como <condição> para o repita a negação da <condição>do enquanto. 
 
 
 83 
 
b) Construa um algoritmo que permita fazer um levantamento do estoque de vinhos de 
uma adega, tendo como dados de entrada tipos de vinho (branco, tinto e rose). 
Especifique a porcentagem de cada tipo sobre o total geral de vinhos; a quantidade de 
vinhos é desconhecida (usar como finalizador a constante “fim”). 
 
Início 
 caractere tipo_vinho; 
 inteiro cont_vinhos, cont_tinto, cont_branco, cont_rose; 
 real perc_tinto, perc_branco, perc_rose; 
 cont_vinhos � cont_tinto � cont_branco � cont_rose � 0; 
 repita 
 leia (tipo_vinho); 
 escolha tipo_vinho 
 caso “tinto”: cont_tinto � cont_tinto + 1; 
 caso “branco”: cont_branco � cont_branco + 1; 
 caso “rose”: cont_rose � cont_rose+ 1; 
 fimescolha; 
 cont_vinhos� cont_vinhos + 1; 
 até tipo_vinho = “fim”; 
 cont_vinhos � cont_vinhos – 1; 
 se cont_vinhos > 0 então 
 início 
 perc_tinto � cont_tinto * 100 / cont_vinhos; 
 perc_branco � cont_branco * 100 / cont_vinhos; 
 perc_rose � cont_rose * 100 / cont_vinhos; 
 escreva (“porcentagem de tintos = “, porc_tinto); 
 escreva (“porcentagem de brancos = “, porc_branco); 
 escreva (“porcentagem de roses = “, porc_rose); 
 fim; 
 senão 
 escreva (“nenhum tipo foi fornecido!”); 
 fimse; 
fim. 
 
c) Voltemos ao cálculo do fatorial do número 5. 
Início 
 inteiro CONTADOR, FATORIAL; 
 FATORIAL � 1; 
 CONTADOR � 1; 
 repita 
 FATORIAL � FATORIAL * CONTADOR; 
 CONTADOR � CONTADOR + 1; 
 até CONTADOR > 5; 
 escreva (“Fatorial de 5 é = “, FATORIAL); 
Fim. 
 
 84 
6.5 – DIFERENÇAS DE “ENQUANTO FAÇA” e “REPITA ATÉ” 
 
É importante saber diferenciar as instruções para saber quando utiliza-las. No 
enquanto, a condição é verificada antes de qualquer instrução contida no bloco ser 
executada, isto significa que, se a condição não for satisfeita na primeira execução, as 
instruções contidas no bloco não serão executadas nenhuma vez. Para o repita, é 
necessária a execução, de pelo menos uma vez, do bloco de instruções para poder testar a 
condição, pois a condição sempre é tentada no final da instrução, ao contrário do enquanto 
que testa a condição no início. 
Verifique os algoritmos de exemplo de cada uma das instruções e veja as diferenças 
do resultado obtido para o mesmo conjunto de valores. 
 
6.6 - CONCEITO DE FLAG (bandeira sinalizadora) 
 
Um Flag, ou uma bandeira, é um variável sinalizadora que possibilita cria pontos de 
controle em um algoritmo de modo a otimizar um processo, marcar um estado, entre outras 
funções. O flag pode ser uma variável de qualquer tipo, desde que se estabeleça dois 
estados para a mesma, ou estado. Uma variável flag pode ser lógica, onde seus estados 
serão V ou F. 
O exemplo abaixo mostra o uso de um flag para controlar se em determinado 
momento na cadeia de caracteres digitada pelo usuário fora inserido o caracter ‘A’. A 
condição de parada do algoritmo é a leitura do caracter ‘F’. 
 
{ ALGORITMO EXEMPLO_FLAG } 
 
INICIO 
 LOGICO FLAG; 
 CARACTER LETRA; 
 
 FLAG � F; 
 REPITA 
 LEIA(LETRA); 
 ESCREVA (LETRA); 
 SE LETRA = “A” ENTAO FLAG � V; 
 ATE (LETRA = “F”); 
 SE FLAG ENTAO ESCREVA (“NAS LETRAS O (A) FOI 
 DIGITADO”); 
 FIM. 
 
O Flag sempre possui um estado inicial, definido pelo algoritmo, a troca de estado 
acontece quando uma condição de controle é satisfeita. 
 
 85 
6.7 – REPETIÇÃO COM VARIÁVEL DE CONTROLE ( Para ... faça ) 
 Nas estruturas de repetição vistas até agora, ocorrem casos em que se torna difícil 
determinar quantas vezes o bloco será executado. Sabemos que ele será executado 
enquanto uma condição for satisfeita – enquanto -, ou até que uma condição seja satisfeita 
– repita. A estrutura para repete a execução do bloco um número finito de vezes, pois ela 
possui limites fixos: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Onde: var é a variável de controle; 
 vi é o valor inicial da variável var; 
 vf é o valor final da variável var, ou seja, o valor até o qual ela pode chegar; 
 p é o valor do incremento dado à variável var. 
 Possuímos então um contador de forma compacta, em que sempre temos uma 
inicialização (vi) da variável de controle (var), um teste para verificar se a variável atingiu o 
limite (vf) e um acréscimo (incremento de p) na variável de controle após cada execução do 
bloco de repetição. 
Var � 
Início, Fim, 
Incremento 
 
Instruções 
N 
S 
Para var de vi até vf passo p faça 
 
 Comando 1; 
 Comando 2; 
 . 
 . 
 Comando n; 
 
Fimpara; 
 
 
 86 
Exemplos: 
 
a) voltemos ao cálculo da média aritmética de uma turma fixa 50 alunos. 
Início 
 real media_anual, { média anual de um dado aluno} 
 acumulador, media_anual_turma, var_controle; 
 acumulador � 0; 
 para var_controle de 1 até 50 passo 1 faça 
 leia (media_anual); 
 acumulador � acumulador + media_anual; 
 fimpara; 
 media_anual_turma � acumulador /50; 
 escreva (“media anual da turma = “, media_anual_turma); 
fim. 
 
b) Elabore um algoritmo que efetue a soma de todos os números ímpares que são 
múltiplos de três e que se encontram no conjunto dos números de 1 até 500. 
Início 
 Inteiro soma_impares, {soma dos números ímpares múltiplos de três } 
 var_controle; 
 soma_impares � 0; 
 para var_controle de 1 até 500 passo 1 faça 
 se (int (var_controle / 2) <> var_controle / 2) {o número é impar?} 
 então início 
 se (int (var_controle / 3) = var_controle / 3) {múltiplo de três?} 
 então soma_impares � soma_impares+ 1; 
 fimse; 
 fim; 
 fimse; 
 fimpara; 
 escreva (“soma = “, soma_impares); 
fim. 
 
 87 
c) Voltemos ao cálculo do fatorial do número 5. 
Início 
 inteiro CONTADOR, FATORIAL; 
 FATORIAL � 1; 
 para CONTADOR de 1 até 5 passo 1 faça 
 FATORIAL � FATORIAL * CONTADOR; 
 fimpara; 
 Escreva (“Fatorial de 5 é = “, FATORIAL); 
 Fim. 
 
6.8 – COMPARAÇÃO ENTRE ESTRUTURAS DE REPETIÇÃO 
 Podemos estabelecer dois “postulados”que relacionam as estruturas de repetição: 
• Toda estrutura Enquanto pode ser convertida para Repita e vice_versa; 
• Toda estrutura Para pode ser convertida em Enquanto, mas nem toda estrutura 
Enquanto pode ser convertida em Para. 
Temos também a seguinte tabela comparativa que relaciona as características de 
cada estrutura de repetição: 
 
Estrutura Condição Quantidade de 
Execuções 
Condição de 
Existência 
Enquanto Início ? Condição verdadeira 
Repita Final Mínimo 1 Condição falsa 
Para Não tem (vf – vi + p) div p var < vf 
 
Exemplos: 
a) elabore um algoritmo que, utilizando as três estruturas de repetição, imprima a 
tabuada do número 5. 
• Utilizando Enquanto: 
Inicio 
 inteiro contador; 
 contador � 1; 
 enquanto contador <= 10 faça 
 escreva (contador, “ x 5 = “, contador * 5); 
 contador � contador + 1; 
 fimenquanto; 
fim. 
 
 
 88 
• Utilizando Repita: 
Inicio 
 Inteiro contador; 
 contador � 1; 
 repita 
 Escreva (contador, “x 5 = “, contador * 5); 
 contador � contador + 1; 
 até contador > 10; 
Fim. 
 
• Utilizando Para: 
Inicio 
 Inteiro contador; 
 para contador de 1 até 10 passo 1 faça 
 Escreva (contador, “ x 5 = ”, contador * 5); 
 fimpara; 
Fim. 
 
b) Modifique o algoritmo para que este imprima a tabuada de quaisquer números, sendo 
que estes números são fornecidos pelo usuário, até encontrar como finalizador –1. 
Sabendo que primeiro número-base fornecido não é –1: 
• Utilizando Enquanto: 
Inicio 
 Inteiro numero, contador; 
 Leia (numero); 
 Enquanto numero <> -1 faça 
 Contador � 1; 
 Enquanto contador <= 10 faça 
 Escreva (contador, “ x “, numero, “ = “, contador * numero); 
 Contador � contador + 1; 
 Fimenquanto; 
 Leia (numero); 
 Fimenquanto; 
Fim. 
 
 
 89 
• Utilizando Repita: 
Inicio 
 Inteiro numero, contador; 
 Leia (numero); 
 Repita 
 Contador � 1; 
 Repita 
 Escreva (contador, “ x “, numero, “ = “, contador * numero); 
 Contador � contador + 1; 
 Até contador > 10; 
 Leia (numero); 
 Até numero = -1; 
Fim. 
 
• Utilizando Para: 
Inicio 
 Inteiro numero, contador, var_controle; 
 Leia (numero); 
 Para var_controle de 1 até ????? passo 1 faça 
 Contador � 1; 
 Para contador de 1 até 10 passo 1 faça 
 Escreva (contador, “ x “, numero, “ = “, contador * numero); 
 Contador � contador + 1; 
 fimpara; 
 ????? Leia (numero); ????? 
 fimpara; 
Fim. 
 
Verificamos neste exemplo o segundo “postulado”, ou seja, a impossibilidade de 
construir este algoritmo utilizando a estrutura Para. 
 
� Do Enquanto ao PARA-FAÇA 
 
Podemos verificar a diferença do enquanto e o para-faça, não somente no sentido de 
laço infinito e finito. Abaixo temos uma instrução para-faça e logo após uma instrução 
enquanto que realizam a mesma função ler 10 valores e exibir a soma dos mesmos. Com o 
para-faca, muitas coisas não precisam ser controladas como acontece no enquanto deste 
 
 90 
exemplo. No enquanto é utilizado um contador para limitar o laço, todo o controle deste 
contador deve ser realizado pelo desenvolvedor do algoritmo. No para-faça, o controle de 
contagem é feito pela própria instrução. 
 
{ ALGORITMO COM_ENQUANTO } 
 
INICIO 
 INTEIRO SOMA, CONTADOR, NUMERO; 
 
 LEIA (NUMERO); 
 CONTADOR � 1; 
 SOMA � NUMERO; 
 ENQUANTO (CONTADOR < 10) FACA 
 LEIA (NUMERO); 
 SOMA � SOMA + NUMERO; 
 CONTADOR � CONTADOR + 1; 
 FIM ENQUANTO; 
 ESCREVE (SOMA); 
FIM. 
 
 
{ ALGORITMO COM_PARA_FACA } 
 
INICIO 
 INTEIRO SOMA, CONTADOR, NUMERO; 
 
 PARA (CONTADOR � 1 ATE 10 PASSO 1) FACA 
 LEIA (NUMERO); 
 SOMA � SOMA + NUMERO; 
 FIM PARA; 
 ESCREVE (SOMA); 
FIM. 
 
 
 
1
 Material baseado na apostila da Profa Jusane Farina/Tatiana Pazeto/Sediane Lunardi

Continue navegando