algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas...
TRANSCRIPT
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.