Programación Estructurada I.
QBASIC.

Cálculo del Indice de Masa Corporal.

    Este programa inicial, muy sencillo, servirá para realizar el cálculo de un índice nutricional denominado Indice de Masa Corporal (IMC) o índice de Quetelet (IQ) que es un buen evaluador del estado nutritivo en adultos. En él se muestran los elementos básicos de la estructura de un programa de ordenador, entrada, manipulación y salida de información.

    Siempre que se desea realizar un programa informático se ha de saber de antemano que se quiere calcular, como hacerlo y a partir de que datos. Una vez que se tiene estructurado esto, programarlo es muy sencillo.

  1. En primer lugar se pedirán los datos necesarios guardándolos en variables adecuadas. El peso y la talla del sujeto.
  2. A continuación se efectuarán las operaciones necesarias para obtener el resultado deseado. El cálculo del índice deseado obedece a la siguiente relación.
  3. Por último, se mostrarán los resultados obtenidos. El IMC.
    La realización práctica de todo esto consiste en:

    0. Preparar la pantalla del ordenador antes de empezar el verdadero programa.

' Indica líneas que no tiene en cuenta el procesador. Sirven para escribir comentarios de ayuda o recuerdo para el propio programador/a de la aplicación.
CLS Borra el contenido de la pantalla, permitiendo que el programa en ejecución empiece a trabajar sobre una pantalla en limpio, borrando los contenidos de anteriores programas.


    1. Introducir los datos iniciales en variables adecuadas.

INPUT "etiqueta", variable  Permite introducir datos en el programa desde el teclado del ordenador, asignándolos a la variable que se indica en el comando. Se puede anteponer un etiqueta para aclarar el tipo de datos que se espera.
Las variables pueden recibir cualquier nombre, empezando por una letra y mezclando letras y números si se desea, pero sin incluir caracteres especiales (vocales acentuadas, ñ, etc ... ) y su terminación indicará que tipo de datos contienen. Estos nombres no podrán superar los 40 caracteres. Las que usaremos habitualmente serán:


    2. Efectuar las operaciones necesarias.

Operaciones aritméticas, lógicas y uso de funciones predefinidas en BASIC. En este ejemplo " / " equivale a la división y  " ^ "a la exponenciación.

Operaciones permitidas:
 

ARITMETICAS
COMPARACIONES
LOGICAS
+ Suma.
- Resta y cambio de signo.
* Multiplicación.
/ División.
^ Exponenciación.
\ División entera.
MOD Resto de la división.
= Igual que...
<> Distinto de...
> Mayor que...
>= Mayor o igual que...
< Menor que...
<= Menor o igual que...
NOT Negación lógica.
AND Conjunción (y).
OR Disyunción (o).
XOR Disyunción excluyente.
EQV Equivalente.
IMP Implicación.

Y junto a ellas toda una serie de funciones preprogramadas que pueden usarse invocándolas con las 3 letras que las definen, como LOG, SIN, SQR, etc...


    3. Sacar los resultados.

PRINT "etiqueta"; variable Muestra los resultados (contenidos de las variables) en la pantalla del ordenador. Igual que las sentencias de entrada (INPUT), permite anteponer o posponer etiquetas a los datos para facilitar su lectura por el usuario/a.
USING "##.#" Es una función que fuerza una salida de resultados con formato, representando la # lugares para los dígitos que se han de mostrar; en el ejemplo 2 antes de la separación decimal y 1 tras ella; números con 1 decimal.
'*****************  IMC_0.BAS  ********************
'Realizado en QBasic, por ...      , el 6-XII-2001.
'Programa para calcular el Indice de Masa Corporal.

CLS

INPUT "Peso (kg) .... :"; peso
INPUT "Talla (m) .... :"; talla

imc = peso / talla ^ 2

PRINT "El Indice de Masa Corporal (IMC) es : "; USING "##.#"; imc

    El programa inicial de cálculo del IMC se ha completado con filtros de entrada de datos y presentación del resultado del índice y el diagnóstico asociado al mismo.

    Sobre la versión anterior se han añadido nuevas sentencias que permiten mejorar la introducción controlada de datos y la asociación de un diagnóstico al resultado hallado.

    Funciones usadas:

LEN Calcula el número de caracteres alfanuméricos de una variable o constante literal.
SPACE$(n) Asigna "n" espacios en blanco.
    Comandos introducidos:
LOCATE fila, columna   Coloca el cursor en un lugar concreto de la pantalla, fijado por la posición de la fila y la columna indicadas (las filas se numeran de arriba a abajo y las columnas de izquierda a derecha, comenzando por el 1).

DO                     Comienzo de un bucle.
     instrucción
     ...
LOOP WHILE condición Final de un bucle DO en función del valor de la condición.

IF condición THEN nueva instrucción Punto de bifurcación de la ejecución lineal del programa. La condición que decide la posible bifurcación puede ser compleja (varias condiciones simples unidas por operadores lógicos).

'*****************  IMC_1.BAS  ********************
'Realizado en QBasic, por ...      , el 6-XII-2001.
'Programa para calcular el Indice de Masa Corporal,
'con filtros para la entrada de datos y diagnóstico
'asociado a los valores calculados del IMC.

CLS
PRINT
mensaje$ = "Programa de cálculo del IMC."
PRINT SPACE$((80 - LEN(mensaje$)) / 2); mensaje$

DO
   LOCATE 6, 5
   PRINT SPACE$(40)
   LOCATE 6, 5
   INPUT "Peso (kg) .... :"; peso
LOOP WHILE peso < 40 OR peso > 120

DO
   LOCATE 8, 5
   PRINT SPACE$(40)
   LOCATE 8, 5
   INPUT "Talla (m) .... :"; talla
LOOP WHILE talla < 1.4 OR talla > 2.1

imc = peso / talla ^ 2

LOCATE 10, 5
PRINT "El Indice de Masa Corporal es : "; USING "##.#"; imc

IF imc < 18 THEN diag$ = "Delgadez muy preocupante: riesgo de anorexia, bulimia, ..."
IF imc >= 18 AND imc < 20 THEN diag$ = "Delgadez preocupante. Evite perder mas peso."
IF imc >= 20 AND imc < 25 THEN diag$ = "Indice correcto."
IF imc >= 25 AND imc < 30 THEN diag$ = "Tendencia al sobrepeso. Controle su peso."
IF imc >= 30 AND imc < 35 THEN diag$ = "Obesidad. Reduzca su peso."
IF imc >= 35 THEN diag$ = "Obesidad mórbida. Acuda al especialista."

LOCATE 12, 5
PRINT "Diagnóstico : "; diag$

    Con esta última versión, el programa podrá calcular y obtener el diagnóstico asociado al IMC de un sujeto. Recuerde que la exactitud del índice está condicionada por la precisión de los datos con los que se calcula, el peso y la talla del sujeto, y si estos no son exactos tampoco lo será el índice, y mucho menos el diagnóstico establecido a partir de él.

    Antes de usarlo grabe el programa desde la opción Archivo >> Guardar como ... poniendole un nombre de no más de 8 caracteres. La terminación será siempre .BAS y la pondrá el interprete automáticamente.

    El programa en ejecución, con un ejemplo con datos reales, presentará el siguiente aspecto.

    Puede utilizar los datos de este ejemplo para comprobar la corrección de los cálculos del programa efectuado.

    Recuerde que al tratarse QBASIC de un interprete deberá ejecutar los programas siempre dentro del ámbito de esta aplicación, no pudiendose generar programas ejecutables directamente desde el sistema operativo. Si es eso lo que desea, deberá contar con un compilador y generar un .EXE como programa final.



Ultima modificación: 6-XII-2001.