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)

(Voltar ao Índice)    

 

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)

 

 

(Voltar ao Índice)