DMarlon Studio

Lección 9 · 9 de 20

while y repeat…until · Pascal

Repita código en Pascal mientras se cumpla una condición: while la comprueba antes de cada vuelta y repeat…until, al final.

Pascal · while y repeat…until en DMarlon Studio: el código del ejemplo y su salida en la terminal

`while` condición `do` repite su orden mientras la condición sea verdadera, y la comprueba antes de cada vuelta. La hucha suma 15 euros por semana mientras haya menos de 100: tras 7 semanas hay 105 y el bucle se detiene.

Como en el if, si el bucle tiene que hacer varias cosas, van entre begin y end. Dentro tiene que cambiar algo que afecte a la condición (aquí, savings); si no, el bucle no terminaría nunca.

`repeat ... until` condición comprueba al final, así que se ejecuta al menos una vez, y para cuando la condición es verdadera (al revés que while). La pelota rebota a la mitad de altura cada vez, hasta bajar de 1 metro. Entre repeat y until caben varias órdenes sin necesidad de begin ni end.

`Inc(bounces)` suma 1 a la variable, igual que bounces := bounces + 1; `Dec` resta. El último while no se ejecuta ni una vez, porque savings < 50 ya es falso desde el principio.

Código · main.pas

program main;var  savings, weeks, bounces: Integer;  height: Double;begin  // while checks the condition before each turn.  savings := 0;  weeks := 0;  while savings < 100 do  begin    savings := savings + 15;    weeks := weeks + 1;  end;  WriteLn('After ', weeks, ' weeks: ', savings, ' euros saved');  // repeat runs at least once and stops when until is true.  height := 8.0;  bounces := 0;  repeat    height := height / 2;    Inc(bounces);  // the same as bounces := bounces + 1    WriteLn('Bounce ', bounces, ': ', height:0:2, ' m');  until height < 1;  // A while loop whose condition is false never runs.  while savings < 50 do    WriteLn('This line never appears.');  WriteLn('Done.');end.

Salida · fpc main.pas && ./main

After 7 weeks: 105 euros saved
Bounce 1: 4.00 m
Bounce 2: 2.00 m
Bounce 3: 1.00 m
Bounce 4: 0.50 m
Done.

Para recordar

  • while comprueba la condición antes de cada vuelta.
  • repeat ... until se ejecuta al menos una vez.
  • until para cuando su condición es verdadera.
  • Inc(x) y Dec(x) suman y restan 1.

Ejercicio

Calcule cuántos años tardan 1000 euros en duplicarse en una cuenta al 5 % anual: con un while, multiplique el saldo por 1.05 cada año hasta llegar a 2000.