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.

`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
whilecomprueba la condición antes de cada vuelta.repeat ... untilse ejecuta al menos una vez.untilpara cuando su condición es verdadera.Inc(x)yDec(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.