101 - Control de flujo (for)


Vimos que hay tres estructuras repetitivas, o bucles, ya estudiamos "loop". Continuamos con "for".

En la sentencia "for... loop" se especifican dos enteros, un límite inferior y un límite superior, es decir, un rango de enteros, las sentencias se ejecutan una vez por cada entero; en cada repetición del bucle, la variable contador del "for" se incrementa en uno.

Sintaxis:

 for VARIABLECONTADOR in LIMITEINFERIOR..LIMITESUPERIOR loop
  SENTENCIAS;
end loop;

"Variablecontador" debe ser una variable numérica entera; "limiteinferior" y "limitesuperior" son expresiones numéricas. La variable que se emplea como contador NO se define, se define automáticamente de tipo entero al iniciar el bucle y se liberará al finalizarlo.

En el siguiente ejemplo se muestra la tabla del 3. La variable "f" comienza en cero (límite inferior del for) y se va incrementando de a uno; el ciclo se repite hasta que "f" llega a 5 (límite superior del for), cuando llega a 6, el bucle finaliza.

 set serveroutput on;
 begin
  for f in 0..5 loop
   dbms_output.put_line('3x'||to_char(f)||'='||to_char(f*3));
  end loop;
 end;

Si queremos que el contador se decremente en cada repetición, en lugar de incrementarse, debemos colocar "reverse" luego de "in" y antes del límite inferior; el contador comenzará por el valor del límite superior y finalizará al llegar al límite inferior decrementando de a uno. En este ejemplo mostramos la tabla del 3 desde el 5 hasta el cero:

 begin
  for f in reverse 0..5 loop
   dbms_output.put_line('3*'||to_char(f)||'='||to_char(f*3));
  end loop;
 end;

Se pueden colocar "for" dentro de otro "for". Por ejemplo, con las siguientes líneas imprimimos las tablas del 2 y del 3 del 1 al 9:

begin
  for f in 2..3 loop
   dbms_output.put_line('tabla del '||to_char(f));
   for g in 1..9 loop
     dbms_output.put_line(to_char(f)||'x'||to_char(g)||'='||to_char(f*g));
   end loop;--fin del for g
  end loop;--fin del for f
end;


Retornar