Curso de Cobol y PowerCobol

Creando una calculadora de tablas con COBOL

Capítulo 41: Calculadora de tablas de multiplicar autoincrementable

Veamos un ejemplo más de los muchos que hay con PERFORM TIMES. En este capítulo vas a crear una calculadora de tablas de multiplicar. Por ejemplo, ¿quieres la tablas del 7? Pues que la calculadora te haga toda la tabla hasta el número que quieras, como si llega al 7x1000.

Declaración de variables

Empecemos con la declaración de variables variables:

La variable Numero, será la que almacenará el número introducido por el usuario.

La variable Multiplicador, será autoincrementable, de la forma que te mostré en el capítulo anterior.

Resultado, almacenará el resultado de la multiplicación entre las dos variables anteriores y Salida, será solo una variable de control para salir del programa.

WORKING-STORAGE SECTION.
77  Numero PIC 99 VALUE ZEROS.
77  Multiplicador PIC 999 VALUE ZEROS.
77  Resultado PIC 9999 VALUE ZEROS.
77  Salida PIC XXXXX VALUE SPACES.

Procedimientos de la calculadora de tablas

Empecemos con el procedimiento de Inicio.

Se le pide al usuario pulsar la tecla ENTER para empezar con el programa o que introduzca salir literalmente para salir de él.

En realidad, la tecla ENTER no hace que empiece el programa, podemos poner con el teclado cualquier cosa y al pulsar esa tecla, puesto que no se cumple el IF, se ejecuta el ELSE.

Dicho ELSE, nos ca a llevar a los procedimientos o párrafos necesarios para realizar una tabla de multiplicar autogenerada.

       Inicio.
DISPLAY "Para salir introduce 'salir' en la consola.".
DISPLAY "Para multiplicar pulsa INTRO.".
ACCEPT Salida.
IF Salida = "salir" OR "SALIR"
    PERFORM Finalizar
ELSE
PERFORM ReiniciaPrograma.
PERFORM IntroduceNumero.
PERFORM MostrarTabla.

Si introduces 'salir' literalmente, se va al PERFORM Finalizar y finaliza el programa.

Finalizar.
STOP RUN.

Finalmente, los párrafos que faltan para que haga las operaciones.

Primero, en IntroduceNumero, vamos a pedir que se introduzca un número (cuando el nombre del párrafo es tan identificativo como este, me siento tan estúpido como cuando juegas a un juego que te dice, para saltar, pulse el botón de saltar).

En MostrarTabla, primero, se muestra el título con la tabla del número que se introduzca.

Por defecto, este programa está hecho para que haga la multiplicación hasta 10, si le cambias el número de PERFORM TIMES, va a realizar más operaciones.

Este párrafo, te llevará al Inicio del programa cuando termine, por si quieres calcular con otro número. Ventajas de utilizar bucles.

Finalmente, el párrafo Calculos es el responsable de ir incrementando el valor del multiplicador en 1 cada vez. Con el COMPUTE realiza las operaciones y con el DISPLAY, las muestra.

IntroduceNumero.
DISPLAY "INTRODUCE UN NUMERO.".
ACCEPT Numero.

MostrarTabla.
DISPLAY "LA TABLA DEL " Numero ":".
PERFORM Calculos 10 TIMES.
PERFORM Inicio.

Calculos.
ADD 1 TO Multiplicador.
COMPUTE Resultado = Numero * Multiplicador.
DISPLAY Numero " * " Multiplicador " = " Resultado.

Por cierto, tenemos un párrafo más, encargado de reiniciar el valor del multiplicador, para cuando termine y queramos empezar de nuevo, ya que si se multiplica 10 veces, el multiplicador habrá incrementado su valor en 10 al terminar de procesar la tabla.

ReiniciaPrograma.
MOVE 0 TO Multiplicador.

Ahora que ya he explicado cada parte, aquí tienes el programa completo, para que vayas haciendo pruebas.

⁠⁠       IDENTIFICATION DIVISION.
       PROGRAM-ID. Capitulo41.

       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.
	   77  Numero PIC 99 VALUE ZEROS.
	   77  Multiplicador PIC 999 VALUE ZEROS.
	   77  Resultado PIC 9999 VALUE ZEROS.
	   77  Salida PIC XXXXX VALUE SPACES.

       PROCEDURE DIVISION.

       Inicio.
       DISPLAY "Para salir introduce 'salir' en la consola.".
       DISPLAY "Para multiplicar pulsa INTRO.".
       ACCEPT Salida.
       IF Salida = "salir" OR "SALIR"
           PERFORM Finalizar
       ELSE
           PERFORM ReiniciaPrograma.
           PERFORM IntroduceNumero.
           PERFORM MostrarTabla.

       Finalizar.
       STOP RUN.

       ReiniciaPrograma.
       MOVE 0 TO Multiplicador.

       IntroduceNumero.
       DISPLAY "INTRODUCE UN NUMERO.".
       ACCEPT Numero.

       MostrarTabla.
       DISPLAY "LA TABLA DEL " Numero ":".
       PERFORM Calculos 10 TIMES.
       PERFORM Inicio.

       Calculos.
       ADD 1 TO Multiplicador.
       COMPUTE Resultado = Numero * Multiplicador.
       DISPLAY Numero " * " Multiplicador " = " Resultado.

       END PROGRAM Capitulo41.

Pruebo con la tabla del 30. Me la muestra con 10 multiplicaciones y me pregunta si quiero volver a multiplicar o salir. Le digo que salir y sale del programa.

Para salir introduce 'salir' en la consola.
Para multiplicar pulsa INTRO.

INTRODUCE UN NUMERO.
30
LA TABLA DEL 30:
30 * 001 = 0030
30 * 002 = 0060
30 * 003 = 0090
30 * 004 = 0120
30 * 005 = 0150
30 * 006 = 0180
30 * 007 = 0210
30 * 008 = 0240
30 * 009 = 0270
30 * 010 = 0300
Para salir introduce 'salir' en la consola.
Para multiplicar pulsa INTRO.
salir

Puedes cambiar los parámetros para que el comportamiento sea diferente. Por ejemplo, si cambias el valor de la línea 41, el incremento se va a hacer en saltos mayores. Por ejemplo, si le pones un 2, sería 30 x 2 = 60, 30 x 4 = 120...

Además, lo que te he dicho con la línea 37, si quieres 100 multiplicaciones, pon 100 TIMES.

Si no te caben los números en la variable resultado, amplia el tamaño del PICTURE, recuerda que ya dije que el PICTURE para los resultados de multiplicación, debe ser exactamente el doble de los operandos.


Comentarios

Si te quedan dudas sobre el temario, sobre Cobol, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.

Programación Fácil YouTube

Suscríbete

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.