Programación Estructurada I.
QBASIC.

Análisis de la Composición Corporal.

    Este programa permitirá calcular la composición de grasa corporal de un sujeto en función de su sexo y el espesor del panículo adiposo periférico medido en algunas zonas muy concretas del organismo. Al igual que en el caso anterior, antes de acometer la realización práctica del mismo, recordemos que habremos de tener en cuenta que deberá disponer de 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, efectuarlo es muy sencillo.

  1. En primer lugar se pedirán los datos necesarios guardándolos en variables adecuadas. El espesor de los pliegues cutáneos en las regiones tricipital y subescapular.
  2. A continuación se efectuarán las operaciones necesarias para obtener el resultado deseado. El cálculo de la proporción de grasa corporal obliga a calcular un dato intermedios, como es la densidad corporal asociada a los espesores de los pliegues en función de su sexo, para obtener posteriormente la cantidad de grasa del sujeto.
  3. Por último, se mostrarán los resultados obtenidos. El porcentaje de grasa corporal.
    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.
LEN (variable$)  Cuenta el número de caracteres de un a variable alfanumérica.
LOCATE fila, columna  Coloca el cursor en la fila y columna especificadas en la instrucción.


    1. Introducir los datos iniciales.

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.


    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 multiplicación, " - " a la resta, y " LOG " a la función que calcula los logaritmos naturales del argumento contenido entre paréntesis.

IF condición THEN
     instrucción
     ...
ELSE
     instrucción
     ...
END IF  Bifurcación que realiza el primer bloque de instrucciones si la condición contenida junto al IF es verdadera y en caso contrario el segundo bloque.
 

    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.
'***************** GRASAC_1.BAS ******************
'Realizado en QBasic, por ...     , el 6-XII-2001.
'Programa para calcular la grasa corporal total de
'un sujeto en función de su sexo  y espesor de sus
'pliegues cutáneos tricipital y subescapular.

CLS
titulo$ = "Cálculo de la grasa corporal de un sujeto."
LOCATE 3, (80 - LEN(titulo$)) / 2
PRINT titulo$

LOCATE 7, 1
INPUT "Pliegue cutáneo tricipital (mm) ..... : ", trici
INPUT "Pliegue cutáneo subescapular (mm) ... : ", subes
INPUT "Sexo (v, m) ......................... : ", sexo$

IF LCASE$(LEFT$(sexo$, 1)) = "v" THEN
   c = 1.1528
   m = .0687
ELSE
   c = 1.1582
   m = .0813
END IF
d = c - m * LOG(trici + subes) / LOG(10)
grasa = (4.95 / d - 4.5) * 100

LOCATE 13, 1
PRINT "Grasa corporal total = "; USING "##.#"; grasa;
PRINT " %"
 

    El programa inicial de cálculo de la grasa corporal se ha de completar con filtros de entrada de datos y presentación del resultado final 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, evitando valores incorrectos,  y la asociación de un diagnóstico al resultado hallado.

    Funciones añadidas:

SPACE$(n)  Asigna "n" espacios en blanco (usada para borrar un dato anterior erroneo ya escrito en la pantalla del ordenador).
    Comandos nuevos introducidos:
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. Con estos bucles se evita que sean introducidos datos incorrectos, ya que se pedirán incesantemente mientras (WHILE) la condición de dato erróneo siga verificándose.
'***************** GRASAC_2.BAS ******************
'Realizado en QBasic, por ...     , el 6-XII-2001.
'Programa para calcular la grasa corporal total de
'un sujeto en función de su sexo  y espesor de sus
'pliegues cutáneos tricipital y subescapular.

CLS
titulo$ = "Cálculo de la grasa corporal de un sujeto."
LOCATE 3, (80 - LEN(titulo$)) / 2
PRINT titulo$

DO
   LOCATE 7, 1
   PRINT SPACE$(70)
   LOCATE 7, 1
   INPUT "Pliegue cutáneo tricipital (mm) ..... : ", trici
LOOP WHILE trici < 3 OR trici > 40

DO
   LOCATE 8, 1
   PRINT SPACE$(70)
   LOCATE 8, 1
   INPUT "Pliegue cutáneo subescapular (mm) ... : ", subes
LOOP WHILE subes < 3 OR subes > 40

DO
   LOCATE 9, 1
   PRINT SPACE$(70)
   LOCATE 9, 1
   INPUT "Sexo (v, m) ......................... : ", sexo$
LOOP UNTIL LCASE$(LEFT$(sexo$, 1)) = "v" OR LCASE$(LEFT$(sexo$, 1)) = "m"

IF LCASE$(LEFT$(sexo$, 1)) = "v" THEN
   c = 1.1528
   m = .0687
ELSE
   c = 1.1582
   m = .0813
END IF
d = c - m * LOG(trici + subes) / LOG(10)
grasa = (4.95 / d - 4.5) * 100

LOCATE 13, 1
PRINT "Grasa corporal total = "; USING "##.#"; grasa;
PRINT " %  ";

diag$ = "Proporción de grasa correcta."
IF LCASE$(LEFT$(sexo$, 1)) = "v" THEN
   IF grasa < 10 THEN diag$ = "Proporción de grasa insuficiente."
   IF grasa > 20 THEN diag$ = "Proporción de grasa muy elevada."
ELSE
   IF grasa < 20 THEN diag$ = "Proporción de grasa insuficiente."
   IF grasa > 30 THEN diag$ = "Proporción de grasa muy elevada."
END IF
PRINT diag$

    Con esta última versión, el programa podrá calcular y obtener el contenido en grasa corporal del sujeto y el diagnóstico asociado para su sexo. Recuerde que la exactitud del resultado está condicionada por la precisión de los datos con los que se calcula, el espesor de los pligues cutaneos en las regiones tricipital y subescapular, y si estos no son exactos tampoco lo será el contenido estimado de grasa corporal, y mucho menos el diagnóstico establecido a partir de él.

    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.



Ultima modificación: 6-XII-2001.