Saltar al contenido
Codif铆ca.me | Desarrollo web | Programaci贸n

Ejemplo de c贸digo SQL de Bloque An贸nimo II

27 marzo, 2019

Al igual que el caso anterior, antes de comenzar el bloque an贸nimo se debe activar la salida por pantalla de la siguiente forma:



Ahora ya se puede comenzar el bloque an贸nimo:

 

      En primer lugar, se establece la estructura de todo bloque an贸nimo. Se almacena el valor del a帽o que se introduzca por teclado en una variable. Adem谩s, se inicializa el valor de una variable booleana que indicar谩 si el a帽o es bisiesto a false. (Explico en el siguiente paso el algoritmo y la raz贸n de esta variable)

 

      Para realizar el algoritmo, vamos a buscar los casos en los que un a帽o es bisiesto. Si el a帽o introducido es bisiesto se modificar谩 el valor de la variable bisiesto. Si ning煤n caso es v谩lido, la variable mantiene el valor original, indicando el a帽o no es bisiesto. La primera condici贸n en los que un a帽o es bisiesto es que sea divisible entre 4 pero no entre 100:

En caso de que esta condici贸n no se cumpla, tambi茅n ser谩n bisiestos los a帽os que sean divisibles entre 400. Por ello, a帽ado una condici贸n:

 

Alternativamente podr铆a haberse incluido todo en una s贸la condici贸n en el primer if mediante un or. No se ha optado por esta opci贸n para mejorar la legibilidad.

Por 煤ltimo, se debe mostrar por pantalla si el a帽o es o no bisiesto con el formato indicado:

 

 

      Se prueba el primer valor 1990 que NO es bisiesto:

 

      Se prueba el primer valor 2000 que es bisiesto:

Se prueba el primer valor 1996 que es bisiesto:



 

      Se prueba el primer valor 1886 que NO es bisiesto:

 

      Se prueba el primer valor 1992 que es bisiesto:

 

    Se prueba el primer valor 1824 que es bisiesto:

 

Este ser铆a el c贸digo SQL

 

 

SET SERVEROUTPUT ON;
 
DECLARE
  anyo NUMBER(4);
  bisiesto BOOLEAN := FALSE;
BEGIN
  anyo := &anyo_introducido;
  IF MOD(anyo, 4) = 0 AND MOD(anyo, 100) <> 0 THEN
    bisiesto := TRUE;
  elsif MOD(anyo, 400) = 0 THEN
    bisiesto := TRUE;
  END IF;
 
  IF bisiesto THEN
    dbms_output.put_line(anyo || ' es un a帽o bisiesto');
  ELSE 
    dbms_output.put_line(anyo || ' no es un a帽o bisiesto');
  END IF;
END;