Buscar

Laços com FOR em Pascal

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Click to edit Master title style
Click to edit Master subtitle style
*
*
*
Algoritmos com laços
(ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)
*
*
*
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)
*
*
*
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!);
*
*
*
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). 
*
*
*
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
*
*
*
Comando FOR 
permite 
a criação de 
LAÇOS CONTADOS
*
*
*
	for I := 1 to 100 do
		Writeln (´Não devo conversar em aula!´);
Resultado: 
		´Não devo conversar em aula!´ 
		será escrito 100 vezes.
	
*
*
*
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 da
condição de término, 
com o valor final 
indicado no comando
Não devo
 conversar em
 aula
*
*
*
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´)
*
*
*
Diagrama de Chapin: 
Operação Repetitiva
<condição>
<comando>
Semântica: 	enquanto condição for verdadeira, 
		comando será executado.
*
*
*
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.
*
*
*
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
*
*
*
Impressão de inteiros 
entre 1 e 50:
		For J := 1 to 50 do
			write (J:4);
Resultado:	 
			1 2 3 4 5 6 … 20
		 21 22 23 24	… 40
			 etc...	 
*
*
*
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);
*
*
*
Duas formas de imprimir o alfabeto em ordem inversa:
	for I := 122 downto 97 do
		write(chr(I):4);
	(função CHR fornece o caracter ASCII correspondente a um determinado valor)
 
	for carac := ´z´ downto ´a´ do
		write (carac:4);
*
*
*
FOR
identificador
expressão1
expressão2
Comando*
:=
do
to
downto
Sintaxe
* Simples ou 
 composto 
 (dois ou mais comandos delimitados
 por begin…end)
*
*
*
	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. 
*
*
*
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 do
			writeln(´Só executa uma vez´);
		 for Y := 12 to 10 do
			writeln(´Nunca vai executar este write´);
*
*
*
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;
*
*
*
Levantamento de uso da Internet, por número de horas, realizado em um universo de 200 usuários: 
For I := 1 to 200 do
	begin
		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}
*
*
*
Funcionamento:
Para cada variação de valor da variável de controle do FOR externo, 
todo o FOR interno será executado integralmente.
FORs aninhados
*
*
*
Início
Fim
I <-- 1
I <-- I + 1
Sim
Não
I > 10
J <-- 1
J <-- J + 1
Não
J > 10
J , ´ x ´ , I , ´ = ´,
J * I
Sim
FORs Aninhados
Impressão
das tabuadas de multiplicação do 1 ao 10
Em Fluxograma
*
*
*
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
*
*
*
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:
*
*
*
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.

Continue navegando