De todas
as vezes que precisamos repetir uma determinada sequência de comandos, usamos
um comando de repetição, o que corresponde a repetir a mesma operação um número
X de vezes sem ter de escrever o X vezes
Utilizamos
uma variável que será incrementada a cada repetição, isto é, a cada repetição adicionamos +1 à variável, até
um valor de acordo com o número de vezes que queremos repetir
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 um qualquer valor )
CONT:= CONT+1; ( Incrementar
o contador em +1, repare que em cada repetição ele irá aumentar +1)
Resumo
dos Comandos de repetição |
||
While(fazer enquanto)
|
Repeat until (repetir…até) |
for … to …
do (de … até … faz) |
program whileLoop; var a: integer; begin a := 10; while a < 20
do begin writeln('O
valor de a é: ', a); a := a + 1; end; end. |
program
whileLoop; var a: integer; begin a := 10; while a < 20
do begin
writeln('O valor de
a é: ', a);
a := a + 1; end; end. |
program forLoop; var a: integer; begin for a := 10 to 20 do begin writeln('value
of a: ', a); end; end. |
Comandos de repetição – While(fazer
enquanto) |
||
|
|
|
|
Em Pascal os principais comandos de repetição são Repeat(repetir) for (para repetir
de um número até outro número} |
While
(enquanto) Usando o while pedimos ao Pascal para
repetir "enquanto"
a expressão for verdadeira Sintaxe while <condição> do begin <comandos>; <comandos>; end; |
|
|
|
|
A) Altera o funcionamento do programa para que comece no nº 5; program
whileLoop; var a: integer; begin a := 10; while a < 20
do begin writeln('O valor de a é: ', a); a := a + 1; end; end. |
B) Explica o funcionamento do programa; B1) Explica porque
razão do código (Resp = 'S') or (Resp = 's') program
Historia; uses
crt; var Resp : char; begin clrscr; write ('Queres ler uma história? [S]im ou [N]ão '); readln (Resp); while (Resp = 'S') or
(Resp = 's')
do begin writeln ('Era uma vez um gato inglês...'); writeln ('Queres que eu conte outra vez? [S]im ou [N]ão '); readln (Resp); end; writeln ('Adeus...'); end. |
|
C) Altera o programa de forma a que o nº 7
possa ser qualquer nº digitado pelo utilizador. program tabuada; uses CRT; var contad:integer; begin clrscr; contad:=0; {iniciamos o contador a 0} 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. |
D) Compila o seguinte programa e descreve, por palavras tuas o seu
funcionamento 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); end else writeln('REPROVADO'); end; end. |
|
|
|
|
E) Completa e compila o seguinte programa. Program Exibe_Numeros_Inteiros_1a10; |
F) Compila o seguinte programa (resolvendo os erros) e descreve, por
palavras tuas o seu funcionamento VAR rpta : char; a,b,area : double; BEGIN rpta:='S'; While (rpta='s')
or (rpta='S') do Begin Write('Introduz lado a : ');readln(a); Write(' Introduz lado b : '); area=a*b; Writeln('area
= ',area:10:3); Write('Desea continuar [S] Sim, [N] Nao
: '); Readln(rpta) End; END. |
ENVIAR AO
PROFESSOR (PROFCARLOS2006@gmail.com) A) Altera o
funcionamento do programa para que comece no nº 5; B) Explica o
funcionamento do programa; B1) Explica porque razão
do código (Resp = 'S') or (Resp = 's') C) Altera o programa de forma a
que o nº 7 possa ser qualquer nº digitado pelo utilizador. D) Compila o seguinte programa e descreve, por
palavras tuas o seu funcionamento |
Comandos
de repetição – Repeat until (repetir…até) |
||
|
|
|
|
Repeat until (repita até) O comando repeat executa repetidamente uma
sequência de comandos "até" (until) que
uma dada condição seja verdadeira Sintaxe: repeat <comando1>; <comando2>; <comando3>; until <condição>; Observação: este comando não
precisa de begin
(início) e end (fim) para demarcar o corpo da
repetição |
repeat seqüência A de comandos; until condição; repeat - until - são palavras-chaves condição - é uma expressão lógica Nesta estrutura, a seqüência
A de comandos será repetida até que a condição se torne verdadeira. Quando isto ocorrer, a repetição é
interrompida e a sequência de comandos, que estiver logo após a estrutura, passa
a ser executada. Como o until é um
delimitador, não é necessário colocar-se um ponto-e-vírgula (;) após o
comando que o precede. |
|
|
|
|
A) Altera o funcionamento do programa para que comece no nº 5; program
repeatUntilLoop; var a: integer; begin a := 10; repeat writeln('value
of a: ', a); a := a + 1 until a = 20; end. |
B) Explica o funcionamento
do programa program Historia_2; uses crt; var Resp
: char; begin clrscr; repeat writeln
('Era uma vez um bolo inglês...'); writeln
('Quer que eu conte outra vez? [S]im ou [N]ão '); readln (Resp); until (Resp
= 'N') or (Resp = 'n'); writeln
('Adeus...'); end. |
|
C) Compila o seguinte programa e descreve, por palavras tuas o seu
funcionamento 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. |
D) Compila o seguinte programa e descreve, por palavras tuas o seu
funcionamento program xxxx; uses crt; VAR rpta : char; n,i
: integer; BEGIN rpta:='S'; Repeat Write('Ingrese n : '); readln(n); i:=1; Repeat Writeln(i:3,'corresponde',i*2:10,i*3:10); i:=i+1 Until i>n; Write('Desea continuar [S] Si, [N] No
: '); Readln(rpta) Until (rpta<>'s')
and (rpta<>'S') END. |
|
|
|
|
Prova da importância de “alinhar os programas no compilador” |
|
|
program ex1; // 33 linhas uses crt; var a, b : real; oper : string[1]; valido : boolean;
begin writeln('CALCULADORA SIMPLES'); write('Valor 1: '); readln(a); repeat write('Operador (+, -, /, *): '); readln(oper);
until (oper='+')
or (oper='-') or (oper='/')
or (oper='*'); repeat write('Valor 2: '); readln(b); if (oper='/')
and (b=0) then begin valido := false;
writeln('ERRO! Divisao por zero!'); end else valido := true; until valido; write('Resultado: '); if (oper='+')
then writeln(a+b:0:10) else begin if (oper='-')
then writeln(a-b:0:10) else begin if (oper='*')
then writeln(a*b:0:10) else writeln(a/b:0:10); end; end; write('Prima ENTER para fechar...'); readln; end. |
D) Compila o seguinte programa
e descreve, por palavras tuas o seu funcionamento program ex1; // 33 linhas uses crt; var a, b : real; oper : string[1]; valido : boolean;
begin writeln('CALCULADORA
SIMPLES'); write('Valor 1: '); readln(a);
repeat write('Operador (+, -, /, *): '); readln(oper); until (oper='+')
or (oper='-') or (oper='/')
or (oper='*'); repeat write('Valor 2: '); readln(b);
if (oper='/') and (b=0) then begin valido := false; writeln('ERRO! Divisao
por zero!'); end else valido := true; until valido;
write('Resultado:
'); if (oper='+') then writeln(a+b:0:10)
else begin if (oper='-') then writeln(a-b:0:10)
else begin if (oper='*') then writeln(a*b:0:10)
else writeln(a/b:0:10); end; end; write('Prima ENTER para fechar...'); readln; end. |
ENVIAR AO
PROFESSOR (PROFCARLOS2006@gmail.com) A) Altera o
funcionamento do programa para que comece no nº 5; B) Explica o
funcionamento do programa; B1) Explica porque razão
do código (Resp = 'S') or (Resp = 's') C) Altera o programa de forma a
que o nº 7 possa ser qualquer nº digitado pelo utilizador. D) Compila o seguinte programa e descreve, por
palavras tuas o seu funcionamento D) Compila o seguinte programa e descreve, por
palavras tuas o seu funcionamento |
Exercícios
01 Construa um programa que leia um conjunto de
dados contendo altura e sexo (MASCULINO ou FEMININO) de N pessoas e calcule e
escreva:
Resolução:
program
alturamf;
uses CRT;
var
quant,cont,cont_m,cont_f:integer;
sexo,sme_alt,sma_alt:string;
alt,alt_maior,alt_menor,alt_media,soma_alt,dif:real;
begin
{inicializa as variáveis}
cont_m := 0;
cont_f := 0;
alt_menor := 10;
alt_maior := 0;
soma_alt := 0;
writeln('Qual a
quantidade de pessoas?');
readln(quant);
while quant<1 do {obriga a quantidade de pessoas ser positiva}
begin
writeln('Quantidade
inválida! Digite uma quantidade maior que 1!');
readln(quant);
end;
for cont:=1 to quant do
begin
writeln('Qual
o sexo da ',cont,'o
pessoa?<m> masculino ou <f> feminino');
readln(sexo);
while (sexo<>'m') and (sexo<>'f')
do
begin
writeln('Sexo
inválido! Digite <m> para masculino ou <f> para feminino!');
readln(sexo);
end;
writeln('Qual a altura da ',cont,'o pessoa?');
readln(alt);
while (alt<0
2) or (alt>2 5) do
{obriga uma altura válida}
begin {repete até a altura ser válida}
writeln('Altura
inválida! Digite uma altura entre 0 2 e 2 5!');
readln(alt);
end;
if alt<alt_menor then {testa a menor altura}
begin
alt_menor:=alt; {guarda a menor altura}
sme_alt:=sexo;
{guarda o sexo da menor altura}
end;
if alt>alt_maior then {testa a maior altura}
begin
alt_maior:=alt; {guarda a maior altura}
sma_alt:=sexo;
{guarda o sexo da maior altura}
end;
if sexo='m' then {testa se o sexo e m}
cont_m:=cont_m+1;
{conta a quantidade de homens}
else
begin
cont_f
:= cont_f+1; {conta a quantidade de mulheres}
soma_alt
:= soma_alt+alt; {soma a altura feminina}
end;
end ;
clrscr;
writeln('Resultado:');
write('A maior altura é:
',alt_maior:2:2,'m de um');
if
sma_alt='m' then writeln(' homem')
else writeln('a
mulher');
writeln('A
média de alturas entre as mulheres é :',soma_alt/cont_f:2:2);
writeln('o
número de homens é: ',cont_m:3);
write('A
diferença percentual entre homens e mulheres é: ');
dif:=(cont_m/quant)*100-(cont_f/quant)*100;
if dif>0 then write(dif:2:2,'% a mais
de homens');
else write(abs(dif):2:2,'% a mais de
mulheres');
readkey;
end.