Download - Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

Transcript
Page 1: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

Algoritmos com laços(ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

Page 2: 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)

Page 3: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas 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!);

Page 4: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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).

Page 5: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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

Page 6: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

Aula 5 - V. 2 - Cida Livi

6

Comando FOR

permite

a criação de

LAÇOS CONTADOS

Page 7: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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.

Page 8: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas 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

Page 9: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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´)

Page 10: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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.

Page 11: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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.

Page 12: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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

Page 13: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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...

Page 14: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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);

Page 15: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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);

Page 16: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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)

Page 17: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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.

Page 18: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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´);

Page 19: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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;

Page 20: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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}

Page 21: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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

Page 22: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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

Page 23: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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

Page 24: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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:

Page 25: Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)

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.