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

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

Transcript of Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas...

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.