Pascal/Estrutura de repetição: diferenças entre revisões

Origem: Wikilivros, livros abertos por um mundo aberto.
[revisão pendente][revisão pendente]
Conteúdo apagado Conteúdo adicionado
Linha 92: Linha 92:
Usando o while pedimos ao Pascal para repetir "enquanto" a expressão for verdadeira
Usando o while pedimos ao Pascal para repetir "enquanto" a expressão for verdadeira


'''Sintaxe'''
<syntaxhighlight lang="pascal"> while <condição> do
begin
<comandos>;
<comandos>;
end;
</syntaxhighlight>
Veja o exemplo acima usando while:
Veja o exemplo acima usando while:
<syntaxhighlight lang="pascal">
<syntaxhighlight lang="pascal">
Linha 135: Linha 128:
O comando repeat executa repetidamente uma sequência de comandos "até" (until) que uma dada condição seja verdadeira
O comando repeat executa repetidamente uma sequência de comandos "até" (until) que uma dada condição seja verdadeira


Sintaxe:
<syntaxhighlight lang="pascal">
repeat
<comando1>;
<comando2>;
<comando3>;
until <condição>;
</syntaxhighlight>
Observação: este comando não precisa de begin (início) e end (fim) para demarcar o corpo da repetição
Observação: este comando não precisa de begin (início) e end (fim) para demarcar o corpo da repetição


Linha 174: Linha 159:
O comando for, diferentemente dos comandos de repetição repeat e while, permite que uma sequência de comandos seja executada um número definido de vezes A variável usada para contador já recebe um valor inicial e é incrementada pelo comando
O comando for, diferentemente dos comandos de repetição repeat e while, permite que uma sequência de comandos seja executada um número definido de vezes A variável usada para contador já recebe um valor inicial e é incrementada pelo comando


Sintaxe:
<syntaxhighlight lang="pascal">
for contador:=ValorInicial to ValorFinal do
begin
comandos;
end;
</syntaxhighlight>
Exemplo:
Exemplo:
Programa para calcular a média de 3 notas de 10 alunos:
Programa para calcular a média de 3 notas de 10 alunos:

Revisão das 01h56min de 9 de abril de 2018

Toda vez que precisamos repetir determinado número de vezes uma determinada seqüência de comandos, usamos um laço de repetição, que corresponderia repetir o mesmo trecho um número X de vezes sem ter de escrever o mesmo trecho X vezes

Exemplo: Calcular a média de 50 alunos (sem repetição)

 program media_notas;
 var
 NOME: string;
 N1, N2, N3, MEDIA: real;
 begin
 {1º ALUNO}
	read(NOME,N1,N2,N3);
	if (N1>=0)  and  (N2>=0)  and  (N3>=0) and (N1<=10) and (N2<=10) and (N3<=10) then
		begin
			MEDIA :=(N1+N2+N3)/3;
			writeln( 'O aluno de nome ',NOME,' tem a média ',MEDIA,' em suas notas ');
		end
	else
		begin
			 writeln('Não são aceites notas negativas ');
		end;
 {2º ALUNO}
	read(NOME,N1,N2,N3);
	if (N1>=0)  and  (N2>=0)  and  (N3>=0) and (N1<=10) and (N2<=10) and (N3<=10) then
		begin
			MEDIA :=(N1+N2+N3)/3;
			writeln( 'O aluno de nome ',NOME,' tem a média ',MEDIA', em suas notas ');
		end
	else
		begin
			 writeln('Não são aceitas notas negativas ');
		end;
 {3º ALUNO}
     
     
 {50º ALUNO}
	read(NOME,N1,N2,N3);
	if (N1>=0)  and  (N2>=0)  and  (N3>=0) and (N1<=10) and (N2<=10) and (N3<=10) then
		begin
			MEDIA :=(N1+N2+N3)/3;
			writeln( 'O aluno de nome ',NOME,' tem a média ',MEDIA,' em suas notas ');
		end
	else
		begin
			 writeln('Não são aceitas notas negativas ');
		end;
 end.

Contador

Utilizamos uma variável que será incrementada a cada repetição, isto é, a cada repetição contamos +1 na variável, até um valor de acordo com o número de vezes que queremos repetir

No exemplo acima, como queremos 50 alunos, contaríamos 50 repetições

Sintaxe:

 CONT:integer; ( Variável inteira que irá contar o número de repetições )
 CONT:=1; ( Iniciação do contador, ele deve começar com algum valor )
 CONT:= CONT+1; ( Incrementar o contador em +1, repare que em cada repetição ele irá aumentar +1)

Testes lógicos

Usamos testes lógicos para saber quando parar a repetição, ou seja, estabelecemos uma condição para a repetição continuar, caso contrário o programa ficaria preso na repetição eternamente Por exemplo, usando o contador, a cada repetição testamos o número do contador até que ele alcance quantidade desejada, caso o contador atinja a quantidade de vezes que queremos repetir, o loop (repetição) pára

Exemplo: programa para fazer a tabuada de multiplicação do número 7:

 program tabuada;
 uses CRT;
 var
 contad:integer;
 begin
  clrscr;
  contad:=0;       {iniciamos o contador declarando seu primeiro valor}
  while contad<10 do {Enquanto cont<10, condição é testada a cada repetição}
   begin
    writeln('7 x ',contad,' = ',7*contad);
    contad:=contad+1; {incrementamos o contador a cada repetição}
   end;
  readkey;
 end.

Comandos de repetição

Em Pascal os principais comandos de repetição são

While(faça enquanto)
Repeat(repita)
for  (para repetir de um número até algum número}

While (enquanto)

Usando o while pedimos ao Pascal para repetir "enquanto" a expressão for verdadeira

Veja o exemplo acima usando while:

 program  media_notas;
 uses crt;
 var
 NOME: string;
 N1, N2, N3, MEDIA: real;
 CONT: integer;
 begin 
  clrscr;
       CONT:=0;  
       while CONT<=50 do
	 begin
	     CONT:=CONT+1;
	     write ('Digite o nome: ');
             read (NOME);
             write ('nota 1: ');
             read (N1);
             write ('nota 2: ');
             read (N2);
             write ('Nota 3: ');
             read (N3);
	     MEDIA:=(N1+N2+N3)/3;
	     if (MEDIA >= 6) then
	  	begin
	  		writeln('O aluno de nome ',NOME,' tem a média ',MEDIA,' em suas notas ');
	  	end
	     else
	  	writeln('REPROVADO');
	 end;
 end.

Repeat until (repita até)

O comando repeat executa repetidamente uma sequência de comandos "até" (until) que uma dada condição seja verdadeira

Observação: este comando não precisa de begin (início) e end (fim) para demarcar o corpo da repetição

Exemplo: Faça um programa para pedir um número, em seguida escrever uma tabuada de multiplicação deste número, caso for digitado o número 0, parar o programa

 program tabuada;
 uses CRT;
 var
  num:real;
  cont:integer;
 begin
  repeat 
    clrscr;
    write('Digite um número para ver sua tabuada de multiplicação ');
    read(num);
    cont:=0;
      while cont<10 do  {temos aqui uma repetição dentro de outra}
	 begin
	   writeln(num:4:2,' x ',cont,' = ',(num*cont):6:2);
	   cont:=cont+1; {a cada repetição o cont aumenta +1}
	 end;
    readkey; {parada para ver o resultado até ser teclado algo}
  until num=0; {condição para parar a repetição principal}
  clrscr;
  write('Foi digitado o número 0! programa encerrado!');
  readkey;
 end.

for to (para de até)

O comando for, diferentemente dos comandos de repetição repeat e while, permite que uma sequência de comandos seja executada um número definido de vezes A variável usada para contador já recebe um valor inicial e é incrementada pelo comando

Exemplo: Programa para calcular a média de 3 notas de 10 alunos:

 program  media_notas;
 var
 NOME:string;
 N1,N2,N3,MEDIA:real;
 CONT:integer;
 begin
   FOR CONT:=1 to 10 do	 {para cont de 1 a 10 faça}
    begin
      write('Digite o nome e as 3 notas do ',cont,'o  aluno ');
      read(NOME,N1,N2,N3);
      if (N1>=0) and (N2>=0) and (N3>=0) and (N1<=10 00) and (N2<=10 00) and (N3<=10 00) then
	begin
	  MEDIA:=(N1+N2+N3)/3;
	  writeln('O aluno de nome ',NOME,' tem a média ',MEDIA,' em suas notas ');
	end
      else
	begin
	  writeln('Notas invalidas!');
	end;
    end;
 end.

Crítica

Usamos uma crítica para conferir se foi digitado um valor correto, usando para isso um teste lógico, dentro de uma repetição (laço), de onde só sairá quando for digitado um valor desejado, ou seja, obrigando que seja digitado um valor válido

Exemplo: Programa para calcular a média de 3 notas de 10 alunos, criticando a nota digitada:

 program  media_notas;
 var
 NOME:string;
 N1,N2,N3,MEDIA:real;
 CONT:integer;
 begin
   clrscr;
   FOR CONT:=1 to 10 do 
    begin
      write('Digite o nome e as 3 notas do ',cont,'o  aluno ');
      readln(NOME,N1,N2,N3);
      while (N1<0) or (n1>10) or (N2<0) or (N2>10) or (N3<0) or (N3>10) do
	begin {repete enquanto as notas forem menores que 0 ou maiores que 10!}
	  writeln('Notas inválidas! Digite notas de 0 a 10!');
	  readln(N1,N2,N3);
	end;
      MEDIA:=(N1+N2+N3)/3;
      writeln('A média do aluno ',NOME,' é: ',MEDIA:2:2);
    end;
   readkey;
 end.