Aula 14

Ciclo de Repetição

 

 

Comandos de repetição – Repeat until (repetir…até)

(Voltar ao Índice)   

 

 

 

 

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

 

 

(Voltar ao Índice)

 

Spanish never hurt

Comandos de repetição – Repeat until (repetir…até)

mais sobre repeat   

 

 

 

 

Spanish never hurt

 

 

Escreve o enunciado do programa.

 

PROGRAM EJER49;

        USES CRT;

        VAR respuesta:CHAR;

BEGIN

     ClrScr;

     REPEAT

         WRITELN ('DESEA CONTINUAR: S/N '); READLN (respuesta);

     UNTIL respuesta='N';

END. 

Escreve o enunciado do programa

1.  PROGRAM EJER50;

2.          USES CRT;

3.   

4.          VAR tiempo:REAL;

5.          VAR cap_ini,cap_fin:REAL;

6.          CONST interes = 0.05;

7.  BEGIN

8.       ClrScr;

9.   

10.     WRITE ('Intruduzca el capital para calcular cuanto tardara ');

11.     WRITE ('en duplicarse, con un interes del 5%: ');

12. 

13.     READLN (cap_ini);

14.     WRITELN ('');

15. 

16.     IF cap_ini < 0 THEN

17.     BEGIN

18.        WRITE ('No se puede incluir un capital negativo');

19.        EXIT;

20.     END;

21. 

22.     tiempo:=0;

23.     cap_fin:= cap_ini;

24. 

25.     REPEAT

26.     cap_fin:=cap_fin + (cap_fin * interes);

27.     tiempo:= tiempo + 1;

28.     UNTIL cap_fin > (cap_ini * 2);

29. 

30.     WRITELN ('Tardara',tiempo:3:0,' años en duplicarse');

31.     WRITELN ('Capital final: ',cap_fin:5:2,' pts');

32.END.

 

 

 

PROGRAM EJER50;

        USES CRT;

        VAR cap_ini,cap_fin:REAL;

        VAR num_year:INTEGER;

        const INTERES=0.05;

BEGIN

     ClrScr;

     num_year:=0;

 

     WRITE('Capital inicial -----: ');  READLN(cap_ini);

 

     cap_fin:=cap_ini;

 

     WHILE cap_fin < (cap_ini*2) DO

     BEGIN

          cap_fin:=cap_fin+(cap_fin*interes);

          num_year:=num_year + 1;

     END;

 

     WRITE('Capital inicial -----: ');  WRITELN(cap_ini:5:2);

     WRITE('Capital final -------: ');  WRITELN(cap_fin:5:2);

     WRITE('Capital duplicado en ');     WRITE(num_year);  WRITE

(' años');

END.