Algoritmos e Lógica de Programação
C t ã d C t ã d Construção de Construção de Algoritmos
Algoritmos
Reinaldo Gomes reinaldo@cefet-al.br
Estruturas de Repetição
Estruturas de Repetição
Com o conhecimento adquirido até aqui, ainda não é possível fazer iterações!
é possível fazer iterações!
Como escrever algoritmos que façam iteração de instruções?
Usar Estruturas de Repetição!
2
Estruturas de Repetição
Existem situações que o processamento de um valor uma única vez não é suficiente para resolver valor uma única vez não é suficiente para resolver o problema
Quando isto ocorre, deve-se utilizar uma estrutura de repetição
Estruturas de repetição permitem que um ou mais instruções sejam executadas um número definido de vezes, ou enquanto uma determinada condição
não é alcançada
3Estruturas de Repetição
As estruturas de repetição também são conhecidas como Laços ou Loops
As estruturas de repetição das linguagens de programação são de dois tipos
Condicional
• Repetem até satisfazer a condição de repetição
• São usadas quando não se sabe previamente quantas vezes São usadas quando não se sabe previamente quantas vezes deve-se executar as instruções do bloco de repetição
Contada
• Repetem um número contado (pré-definido) de vezes
Estruturas de Repetição
As estruturas de repetição condicional podem executar seus testes:
executar seus testes:
No Início
• Enquanto/Faça
No Fim
• Repita/Até
As estruturas de repetição contada utilizam uma variável para controlar a quantidade de repetições
Para/Faça
5
Estruturas de Repetição Condicionais
Normalmente, a utilização de uma estrutura de repetição requer o uso de dois tipos de variáveis:
repetição requer o uso de dois tipos de variáveis:
Contadora: é inicializada antes da estrutura de repetição e é incrementada no interior desta por um valor constante
Acumuladora: é inicializada antes da estrutura de
Acumuladora: é inicializada antes da estrutura de repetição e é incrementada no interior desta por um valor variável
6
Estruturas de Repetição Condicionais
Exemplos
Algoritmo variávelAcumuladora:
...
soma ← 0;
<estrutura de repetição>
Algoritmo variávelContadora:
...
cont← 0;
<estrutura de repetição>
7 ...
soma ← soma + X;
... Variável
<fim estrutura de repetição>
...
...
cont← cont + 1;
... Constante
<fim estrutura de repetição>
...
Estruturas de Repetição Condicionais
Estrutura de repetição Enquanto/Faça
Semântica:
Semântica:
Faz o teste no início do laço. Se o resultado for V as instruções do laço e/são executadas. Volta-se para o início do laço e testa-se novamente a sua condição Isto é repetido enquanto a condição. Isto é repetido enquanto a condição testada for V.
Estruturas de Repetição Condicionais
Estrutura de repetição Enquanto/Faça
Resumindo
Resumindo...
Não se sabe de antemão quantas vezes o bloco de repetição será executado. Isto é, ele pode ser executado várias vezes ou nenhuma vez
Testa a condição antes de entrar na estrutura de repetição
repetição
Repete a execução do bloco de instruções toda vez que condição for V
O bloco de instruções A execução do bloco é finalizada
quando a condição for F 9
Estruturas de Repetição Condicionais
Algoritmo ExemploEnquantoFaça Inteiro : x;
Início
Escreva(“Digite um valor”);
Leia (x);
Enquanto (x<>0) faça Se (x > 0) Então
Escreva (“X > 0”);
Senão
Escreva (“X < 0”);
Escreva(“Digite um valor”);
Leia (x);
Fim Enquanto;
Escreva (“X = 0”);
Fim. 10
Estruturas de Repetição Condicionais
Estrutura de repetição Repita/Até
Sintaxe:
Repita
<Comando1>;
. . .
<ComandoN>;
Até <expressão lógica>;
11
Estruturas de Repetição Condicionais
Estrutura de repetição Repita/Até
Semântica:
Efetua um teste lógico no fim do laço, garantindo que pelo menos uma vez as instruções deste são
t d A t á i d executadas. Ao contrário do enquanto, esta só repete o laço se o resultado do teste for F
Estruturas de Repetição Condicionais
Estrutura de repetição Repita/Até
Resumindo
Resumindo...
Não se sabe de antemão quantas vezes o bloco de repetição será executado. Todavia é garantido que ele será executado pelo menos uma vez
Testa a condição depois de entrar na estrutura de repetição
repetição
Repete a execução do bloco de instruções toda vez que a condição for F
A execução do bloco é finalizada quando a condição for V 13
Estruturas de Repetição Condicionais
Algoritmo ExemploRepitaAté Inteiro : x;
I í i Início Repita
Escreva(“Digite um valor”);
Leia (x);
Se (x > 0) Então Escreva (“X > 0”);
S ã Senão
Se (x < 0) Então
Escreva (“X < 0”);
Até (x = 0);
Escreva (“X = 0”);
Fim. 14
Estruturas de Repetição Condicionais
Questão de Implementação I
Toda repetição condicional pode ser representada por Toda repetição condicional pode ser representada por uma estrutura do tipo Enquanto/Faça ou Repita/Até.
Todavia, perceba que a primeira repete somente
quando a condição é V e a segunda somente quando a condição é F. Por isso, a condição de uma é a negação da outra
15
Estruturas de Repetição Condicionais
Questão de Implementação II
Nos laços condicionais a variável que é testada deve Nos laços condicionais a variável que é testada, deve estar sempre associada a uma instrução que a atualize no interior do laço. Pois, se isto não ocorrer, o algoritmo ficará repetindo indefinidamente este laço, gerando uma situação conhecida como “laço/loop”
Estruturas de Repetição Condicionais
Algoritmo ExemploEnquantoFaça_LoopInfinito Inteiro : x;
Início Início
Escreva(“Digite um valor”);
Leia (x);
Enquanto (x<>0) faça Se (x > 0) Então
Escreva (“X > 0”);
Senão Senão
Escreva (“X < 0”);
Escreva(“Digite um valor”);
{Leia (x); - sem este Leia(x), o laço repete infinitamente!}
Fim Enquanto;
Escreva (“X = 0”);
Fim. 17
Estrutura de Repetição Contada
Estrutura de repetição Para/Faça
Sintaxe:
Para<Contador> de <Inicio> até <Fim>[, passo <N>] Faca
<Instrução1>;
. . .
<InstruçãoN>;
Fim_Para
18
Estrutura de Repetição Contada
Estrutura de repetição Para/Faça
Semântica:
Repete as instruções enquanto a variável contador não atingir o valor final. Ressalta-se que a
iá l t d é i t variável contador é previamente inicializada e incrementada ou decrementada de uma constante a cada repetição
19
Estrutura de Repetição Contada
Estrutura de repetição Para/Faça
Resumindo...
Sabe-se de antemão quantas vezes o bloco de repetição será executado. Isto é, repete enquanto o valor final não atingir o valor final da variável de controle
Incrementa automaticamente a variável de controle cada
Incrementa automaticamente a variável de controle cada vez que o bloco é executado (incremento 1 é o padrão)
A variável de controle deve ser um número inteiro
A variável de controle não pode ser modificada dentro do
Estrutura de Repetição Contada
Algoritmo ExemploParaFaça inteiro : x, i, contP;
Início contP← 0;
Para i← 1 até 20 faça Escreva(“Digite um valor”);
Leia (x);
S ( 0) E tã Se (x > 0) Então
contP←contP + 1;
Fim Para;
Escreva (“positivos = ”,contP);
Fim. 21
Estrutura de Repetição Contada
Atenção
Atenção
Pode-se implementar um laço PARA com um laço CONDICIONAL, entretanto o controle do
incremento/decremento da variável contadora é seu. O laço PARA faz isso implicitamente!
22
Estrutura de Repetição Contada
Algoritmo ExemploParaFaçaComEnquanto Var x, i, contP: inteiro
í Início
contP← 0; i← 1;
Enquanto (i <= 20) faça Escreva(“Digite um valor”);
Leia (x);
Se (x > 0) Então
contP←contP + 1;
i ←i+1; {Incremento explícito da variável contadora}
Fim Enquanto;
Escreva (“positivos = ”+contP);
Fim. 23
Estrutura de Repetição Contada
Algoritmo ExemploParaFaçaComRepita Var x, i, contP: inteiro
í Início
contP← 0; i← 1;
Repita
Escreva(“Digite um valor”);
Leia (x);
Se (x > 0) Então( )
contP←contP + 1;
i ←i+1; {Incremento explícito da variável contadora}
Até (i > 20);
Comparando as Estruturas de Repetição
Enquanto/Faca Repita/Ate Para/Faca Enquanto/Faca Repita/Ate Para/Faca Tipo de
Estrutura
Condicional Condicional Contada Ocorrência do
Teste Início Fim Início
Quantidade de 0 ou muitas No mínimo uma ((fim-início) div
25 Quantidade de
Repetições
0 ou muitas No mínimo uma ((fim início) div passo) + 1 Condição para
Repetir V F Início <= Fim ou
Início >= Fim
Encadeando Estruturas de Repetição
Semelhante as estruturas de decisão composta, as estruturas de repetição também podem ser
estruturas de repetição também podem ser encadeadas/aninhadas.
Esta abordagem é usada quando há a
necessidade de se usar laços dentro de laços.
Por exemplo: fazer um algoritmo para gerar toda a tabuada de soma de 1 a 10
26
Encadeando Estruturas de Repetição
Algoritmo TabuadaSoma Var r, n1, n2: inteiro Início
n1← 1;
Enquanto (n1<=10) faça Para n2 ← 1 até 10 faça
r ←n1 + n2;
E ( 1 “ ” 2 “ ” ) Escreva (n1,“ + ”,n2,“ = ”,r);
Fim Para n1 ← n1+1;
Fim Enquanto
Fim. 27
Encadeando Diversas Estruturas
Também pode-se encadear estruturas de repetição com estruturas de decisão
Algoritmo TabuadaSomaComParidade Var r, n1, n2: inteiro
Início n1← 1;
Enquanto (n1<=10) faça Para n2 ← 1 até 10 faça
r ←n1 + n2;
Se (r mod 2 = 0)( )
Escreva (n1,“ + ”,n2,“ = ”,r, “ = Par”);
Senão
Escreva (n1,“ + ”,n2,“ = ”,r, “ = Impar”);
Fim Para
Algoritmos e Lógica de Programação
C t ã d C t ã d Construção de Construção de Algoritmos
Algoritmos
Reinaldo Gomes reinaldo@cefet-al.br