Aula 15
FOR LOOP
Revisões |
|
|
Completa o programa para
que seja possível o utilizador obter uma mensagem no caso de a idade ser diferente
de 1,2 ou 3 |
program FPProgT10_1; uses crt; var x,j:integer; rpta:char; begin rpta:='S'; While (rpta='s')
or (rpta='S') do begin writeln('digite
a sua idade'); readln(x); for j:=1 to 5 do begin if (x=1) or (x=2) or
(x=3) then begin writeln(); writeln('a sua idade corresponde a 1 , 2 ou 3') end; end; Write('Deseja continuar [S] Sim, [N] Nao
: '); Readln(rpta); end; end. |
|
|
|
|
Resumo
do ciclo FOR LOOP
|
O ciclo for usa uma variável contador de loop
adicionando 1 de cada vez para fazer um loop de um
primeiro número para um último número. |
Se quiser ter mais de um comando dentro de
um loop deve colocá-los entre um Begin e um End. |
Ciclo for decrescente DOWNTO |
Tratamento de texto Lowercase (minúsculas) UPCASE (maiúsculas) Length (tamanho) |
|
|
program Loops; var i: Integer; begin
for i := 1 to 10 do
Writeln('Hello'); end. |
program Loops; var i: Integer; begin
for i := 1 to 10 do begin
Writeln('Hello');
Writeln('This is loop ',i);
end; end |
program FPProgT10_1;
uses crt; var
x:integer; begin for
x:=10 downto 1 do writeln('ola ' , x); readln; end.. |
PROGRAM EJER69;
USES CRT;
VAR texto:STRING;
VAR i:INTEGER; BEGIN ClrScr; texto:='Pragama Pascal'; i:=0; FOR i:=1 TO length(texto)
DO texto[i]:=UPCASE(texto[i]); WRITE (texto); i:=
i + 1; readln; END. |
|
Comandos de repetição – for … to … do (de … até … faz) |
||
|
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: for contador:=ValorInicial to ValorFinal do begin comandos end; |
for variável := valor-inicial to valor-final do begin seqüência A de comandos; end ; for - to - do - são
palavras-chaves valor-inicial - é o primeiro valor que a variável assume valor-final - é o valor máximo que a variável pode
assumir Nesta estrutura,
a variável recebe
o valor-inicial; verifica se ele ultrapassa o
valor-final; se não ultrapassa, a sequência
de comandos é executada; a seguir, a variável recebe o
valor sucessor (o loop é crescente); verifica se ele ultrapassa o valor-final;
se não ultrapassa, a sequência
de comandos é executada; e assim sucessivamente. |
|
a) Recorrendo
ao ciclo FOR - Escreva um programa que imprima no ecrã o texto SDAC, 10
vezes. b)Recorrendo
ao ciclo FOR - Escreve um programa em pascal que imprima a tabuada de um
número digitado pelo utilizador. b1) Recorrendo
ao ciclo while - Adiciona um menu que solicite ao
utilizador se deseja continuar c) Recorrendo ao ciclo FOR – Escreve um
programa em pascal que transforme uma frase digitada pelo utilizador de maiúsculas
para minúsculas. |
|
|
Program
lesson4_Program2b; Uses Crt; Var Counter : Integer; {loop counter declared as integer} Begin For
Counter := 1 to 7 do {it's easy and
fast!} writeln('for loop'); Readln; End. |
program forLoop; var a: integer; begin for a := 10 to 20 do begin writeln('value
of a: ', a); end; end. |
|
|
|
|
d) Programa em pascal que calcula a soma e a média
dos números compreendidos entre 1 e 200. Altera o programa para que a quantidade de
números seja introduzida pelo utilizador. PROGRAM EJER75; USES CRT; VAR media_p,
media_i:REAL; VAR suma_p, suma_i:LONGINT; VAR i, total_p, total_i:LONGINT; BEGIN ClrScr;
FOR i:=1 TO 200 DO
BEGIN
IF (i mod 2)=0 THEN BEGIN suma_p:=suma_p + i; total_p:=total_p + 1; END
ELSE BEGIN suma_i:=suma_i + i; total_i:=total_i
+ 1; END;
END;
media_i:= suma_i / total_i; media_p:= suma_p / total_p; WRITELN ('La suma de los
impares es: ',suma_i); WRITELN ('La suma de los pares es :
',suma_p); WRITELN ('La media de los
impares es: ',media_i:5:2); WRITELN ('La media de los pares
es: ',media_p:5:2); readln; END. |
e) Altera os caracteres que
formam o quadrado por | - (barras e traves) de aforma a que o quadrado faça
sentido. { Desenhando um quadrado com o caractere
-X- em pascal, utilizando o comando for
e o gotoxy. O quadrado irá ter lados 20 por 20, o quadrado não
vai contér preenchimento interno. } Program
QUADRADO; uses crt; var
i, j, x : integer; begin writeln;
// Quebra de linha. // Lado superior do quadrado. for i := 1 to
20 do write('x'); writeln; {
Utilizando o gotoxy(COLUNA, LINHA) A variável x irá conter o valor da
coluna, alternando entre 1 e 20. A variável i irá conter o valor da
linha. } for i := 3 to 20 do begin x
:= 1; for
j := 1 to 2 do begin gotoxy(x, i);
write('x');
x := 20;
end; writeln; end; // Lado inferior do quadrado. for i := 1 to 20 do
write('x'); writeln; writeln; readkey; end. |
|
Altera
o algoritmo para que trabalhe com 4 dígitos inseridos pelo user PROGRAM EJER71;
USES CRT;
VAR i:INTEGER;
VAR dato,producto,suma,media:REAL; BEGIN ClrScr; producto:=1; suma:=0; FOR i:=1 TO 2 DO BEGIN WRITE('Dato
'); WRITE(i); WRITE('-> '); READLN(dato);
producto:=producto*dato;
suma:=suma+dato; END; media:=suma/i; WRITE('Producto: '); WRITELN(producto:5:2); WRITE('Suma: '); WRITELN(suma:5:2); WRITE('Media: '); WRITELN(media:5:2); readln; END.
|
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. |
|
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. |
program ex3; // 19 linhas uses crt; var numero, maior : real; n, i : integer; begin repeat write('Quantos numeros vai introduzir? (5-50) '); readln(n); until (n>=5) and (n<=50); maior := 0; for i:=1 to n do begin
write(i,'o numero: '); readln(numero); if (numero > maior) then maior
:= numero; end; writeln; writeln('O maior numero
foi: ',maior:0:10); readln; end. |
|
|
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. |
|
program ex4; // 24 linhas uses crt; var s : string;
i, j : integer; begin
writeln('Este programa
tira os espacos a mais de uma STRING'); writeln; write('Escreva uma STRING: '); readln(s); j :=
0; for i:=1 to length(s) do
begin
j :=
j+1; if (s[i]
= ' ') then begin s[j]
:= ' '; while
(s[i] = ' ') do i := i+1; j :=
j+1 end; s[j]
:= s[i]; end; writeln('Nova STRING: ',s); readln; end. |
program ex2; //
18 linhas uses crt; var i,
alunos, avaliacao, positivas : integer;
begin writeln('CONTADOR
DE AVALIACOES POSITIVAS'); write('Numero
de alunos? '); readln(alunos);
for i:=1 to
alunos do begin repeat write('Nota do
aluno ',i,': '); readln(avaliacao);
until
((avaliacao>=0) and (avaliacao<=20));
if (avaliacao>=10)
then positivas := positivas
+ 1; end; writeln; writeln('Existem
',positivas,' positivas (',(positivas/alunos)*100:0:1,'%)'); readln; end. |
|
VAR i:byte; a,suma,media:single; BEGIN suma:=0; Writeln('Ingrese
5 numeros para calcular su
media :'); for i:= 1 to 5 do Begin Write('[',i,']
');readln(a); suma:=suma+a; End; media:=suma/5; Writeln('La media de los numeros ingresado es : ',media:10:3) END. |
USES math; VAR rpta : char; n,i : integer; BEGIN rpta:='S'; Repeat Write('Ingrese n
: ');readln(n); for i:=1 to n do Begin Writeln(i:3,i**2:10,i**3:10); i+=1 End; Write('Desea
continuar [S] Si, [N] No : '); Readln(rpta) Until (rpta<>'s')
and (rpta<>'S') END. |
|
Em informática, uma flag
(termo da língua inglesa que significa, literalmente, "bandeira") é
um mecanismo lógico que funciona como semáforo: uma entidade (objecto) detém como ativa uma determinada flag se a característica associada a essa flag estiver presente. Em programação, a utilização de flags como interruptor (isto é, valores 1/0,
ligado/desligado, ativo/inativo) permite optimizar
as estruturas de dados, na medida em que basta apenas um bit para ativar
determinada característica. Assim, com um simples byte podem-se especificar 8
características de um objecto, conhecendo, de
antemão, o significado de cada bit. https://pt.wikipedia.org/wiki/Flag Escribir un programa en
Pascal que escriba los números comprendidos entre 1 y 1000. El programa escribirá
en la pantalla los
números en grupos de20, solicitando al usuario si quiere
o no continuar visualizando el siguiente grupo de
números. PROGRAM EJER74;
USES CRT;
VAR num, flag, x:INTEGER;
VAR resp:CHAR; BEGIN ClrScr; num:=0; x:=1;
FOR num:=1 TO 100 DO BEGIN IF (num
mod 20)= 0 THEN flag := x; WRITELN (num); IF flag = x THEN BEGIN WRITE('DESEA CONTINUAR: S/N
--> '); READLN(resp); IF UPCASE (resp)<>'S'
THEN BEGIN WRITE ('Este programa ha finalizado'); EXIT END; END; x:= x + 20; END; END. |
|
ENVIAR AO
PROFESSOR (PROFCARLOS2006@gmail.com) |