Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas...
Transcript of Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas...
Algoritmos com laços(ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)
Aula 5 - V. 2 - Cida Livi
2
Problema do Aluno Conversador:
Aluno deve escrever 100 vezes:
Não devo conversar em aula!
(ou seja, uma ação deve ser realizada um número preciso e conhecido de vezes)
Aula 5 - V. 2 - Cida Livi
3
Primeira solução:Fazer um programa em Pascal com 100
writeln´s, ou seja, fazendo 100 vezes a ação :Writeln (´Não devo conversar em aula!);
Writeln (´Não devo conversar em aula!);Writeln (´Não devo conversar em aula!);(…)Writeln (´Não devo conversar em aula!);
Aula 5 - V. 2 - Cida Livi
4
Segunda solução: fazer com que a instrução de escrita seja
repetida o número necessário de vezes (100)
Elementos para implementar este tipo de solução:
• a ação a ser realizada;
• uma forma de indicar a repetição da ação;
• um contador que registre o número de vezes que a ação foi realizada;
• um teste para verificar, com base no contador, quando a ação deve parar de ser repetida (executada).
Aula 5 - V. 2 - Cida Livi
5
Semântica do FOR:Permite a execução de um ou mais comandos um número determinado de vezes. O controle das execuções é por contagem , utilizando uma variável contador. Execuções acontecem até que um valor limite para a variável contador seja ultrapassado.
Implementação da segunda solução uso do comando FOR
Aula 5 - V. 2 - Cida Livi
6
Comando FOR
permite
a criação de
LAÇOS CONTADOS
Aula 5 - V. 2 - Cida Livi
7
for I := 1 to 100 do
Writeln (´Não devo conversar em aula!´);
Resultado: ´Não devo conversar em aula!´ será escrito 100 vezes.
Aula 5 - V. 2 - Cida Livi
8
Diagrama de funcionamento do FOR:
Início
I := 1
I > 100
I := I + 1
Fim
Não
Sim
Inicialização da variável de controle, com valor inicial indicado no comando
Incremento da variável de controle a cada nova iteração
Avaliação dacondição de término, com o valor final indicado no comando
Não devo conversar em
aula
Aula 5 - V. 2 - Cida Livi
9
Início
Fim
I <-- 1
I <-- I + 1
Representação do FOR em um fluxograma:
Sim
Não
Inicialização do I (só ocorre 1
vez)
Incremento do I ( da 2a iteração em
diante)
Teste do I quanto a seu valor final, a
cada iteração
I > 100
Escrever (´Não devo conversar
em aula´)
Aula 5 - V. 2 - Cida Livi
10
Diagrama de Chapin: Operação Repetitiva
<condição>
<comando>
Semântica: enquanto condição for verdadeira, comando será executado.
Aula 5 - V. 2 - Cida Livi
11
Para I de 1 até 100
Escrever “Não devo conversar em aula”
FOR usando diagrama de CHAPIN:
Obs.: neste caso, condição é I <= 100.
Aula 5 - V. 2 - Cida Livi
12
Duas modalidades do FOR em TURBO PASCAL:
FOR …TO: incremento da variável do FOR é de +1, a cada
iteração
FOR…DOWNTO: decremento da variável do FOR é de -1, a cada iteração
Aula 5 - V. 2 - Cida Livi
13
Impressão de inteiros entre 1 e 50:
For J := 1 to 50 dowrite (J:4);
Resultado: 1 2 3 4 5 6 … 20
21 22 23 24… 40 etc...
Aula 5 - V. 2 - Cida Livi
14
Impressão da tabuada de multiplicação de um número informado:
Readln(Valor);for K := 1 to 10 do
writeln(K:4 ,´ X ´, Valor:4 , ´ = ´ ,K * Valor:5);
Aula 5 - V. 2 - Cida Livi
15
Duas formas de imprimir o alfabeto em ordem inversa:
for I := 122 downto 97 dowrite(chr(I):4);
(função CHR fornece o caracter ASCII correspondente a um determinado valor)
for carac := ´z´ downto ´a´ do
write (carac:4);
Aula 5 - V. 2 - Cida Livi
16
FOR identificador expressão1
expressão2 Comando*
:=
doto
downto
Sintaxe
* Simples ou composto (dois ou mais comandos delimitados por begin…end)
Aula 5 - V. 2 - Cida Livi
17
Identificador (ou variável de controle):
tipo ordinal simples (integer, char, etc.).
Expressões 1 e 2:Seu tipo deve coincidir com aquele do identificador.
Aula 5 - V. 2 - Cida Livi
18
Cuidados:
Valores Inicial e Final (expressões 1 e 2) devem ser molde a permitir pelo menos uma execução do FOR.
Ex.: for K := 7 to 7 dowriteln(´Só executa uma vez´);
for Y := 12 to 10 dowriteln(´Nunca vai executar este
write´);
Aula 5 - V. 2 - Cida Livi
19
Cuidados:
Variável de controle não deve ser modificada durante a execução do FOR(mas seu conteúdo pode ser utilizado em testes, expressões ou ser escrito).Ex.: for J := 5 to 35 do {J é a variável de controle}
begin if J mod 5 = 0 then
writeln else
write(J:5) end;
Aula 5 - V. 2 - Cida Livi
20
Levantamento de uso da Internet, por número de horas, realizado em um universo de 200 usuários:
For I := 1 to 200 dobegin
readln(Horas);case Horas of
1..10: Cont1 := Cont1 + 1; 11..40: Cont2 := Cont2 + 1;
41..744: Cont3 := Cont3 + 1 end; {do Case}
end; {do begin do For}
Aula 5 - V. 2 - Cida Livi
21
Funcionamento:
Para cada variação de valor da variável de controle do FOR externo,
todo o FOR interno será executado integralmente.
FORs aninhados
Aula 5 - V. 2 - Cida Livi
22
Início
Fim
I <-- 1
I <-- I + 1
Sim
Não
I > 10
J <-- 1
J <-- J + 1Não
J > 10
J , ´ x ´ , I , ´ = ´,J * I
Sim
FORs Aninhados
Impressão
das tabuadas de
multiplicação do 1 ao 10
Em Fluxograma
Aula 5 - V. 2 - Cida Livi
23
Para I de 1 até 10
Para J de 1 até 10
Escrever J , ´ x ´ , I , ´ = ´, J * I
FORs Aninhados
Em diagrama de Chapin
Impressão
das tabuadas de multiplicação do 1 ao 10
Aula 5 - V. 2 - Cida Livi
24
for I := 1 to 10 do
for J := 1 to 10 do
writeln(J , ´ X´, I , ´ = ´, J * I);{ mesmo writeln acima, apenas agora editado:
writeln(J:5 , ´X´ , I:5 , ´=´ , J * I: 5)}
Trecho em PASCAL que imprime as tabuadas de multiplicação de 1 a 10:
Aula 5 - V. 2 - Cida Livi
25
USO DO COMANDO FOR
Em Algoritmos com LAÇOS CONTADOS!!!!
O Comando FOR deve ser utilizado tão somente nos casos de laços contados, em que a repetição de ações deve acontecer
um número determinado e conhecido de vezes.