Está en la página 1de 4

1. Modelado y especificación de algoritmos

El éxito de esta asignatura se basa en el desarrollo de la capacidad para analizar, modelar y resolver
problemas a través de la implementación de algoritmos en el lenguaje de programación Java. Veamos, en
detalle, este proceso.

Partimos inicialmente de un problema o una situación que nos interesa. Por ejemplo, un problema sencillo de
física: En la Media Maratón realizada en Bogotá el 2 de agosto de 2009, un atleta corrió siete kilómetros a
una velocidad constante de 15.142km/h, ocho kilómetros a velocidad constante de 11.537km/h y los últimos
seis a velocidad también constante de 12.979km/h. Se desea saber cuál fue el tiempo gastado en cada uno
de los tres tramos y el tiempo total de la carrera, medido en horas.

Dentro del planteamiento siempre encontraremos información que será importante para modelar y resolver el
problema. Estos son los datos del problema. ¿Qué datos tenemos en este caso? La velocidad del atleta en
cada tramo, que además es constante, y la longitud de cada tramo:
Tabla 1. Ejemplo de resultados de la carrera
Tramo de la Velocidad Longitud
carrera
1º 15.142 km/h 7
2º 11.537 km/h 8
3º 12.979 km/h 6

Además de estos datos, debemos saber qué información necesitamos hallar para resolver el problema. En
este caso es necesario encontrar cuatro resultados: el tiempo total de cada uno de los tres tramos y el
tiempo total, todos medidos en horas.

1.1 Modelado
Debemos tener en cuenta que los datos de un problema pueden ser constantes o variables. Los datos
constantes no cambian a través del tiempo, los datos variables, sí. En este caso, las velocidades en cada
tramo son datos que pueden variar de un deportista a otro, bajo ciertas condiciones. A los datos (constantes
o variables) que requerimos para solucionar el problema los llamaremos entradas y a los datos que
representan la o las respuestas los llamaremos salidas. Al proceso de identificación de estos elementos lo
llamaremos modelado.

Hablamos de modelado porque pretendemos trabajar con un modelo del mundo y del problema. Un modelo
es una representación que hacemos de una situación o de un objeto específico, teniendo en cuenta un

POLITÉCNICO GRANCOLOMBIANO EN ALIANZA CON WHITNEY INTERNATIONAL UNIVERSITY SYSTEM

Adrian
Nicolás
Malaver
Barrera


conjunto menor y usualmente pequeño de variables que nos puedan llevar a la interpretación de una
situación que tomemos como válida. El modelo de la situación presentada no tiene en cuenta la incertidumbre
en la medición de las distancias o en la medición del tiempo, no tiene en cuenta las características del terreno
donde se realizó la carrera ni los tiempos gastados en hidratación o pausas causadas por la logística misma
de la competencia. Sin embargo, a partir de la información de las variables del modelo, es posible establecer
un valor cercano a la realidad y a partir de él, hacer algún tipo de juicio comparativo frente a los demás
participantes de la carrera o frente a los tiempos obtenidos por el mismo deportista en pruebas anteriores.

Sobre los tipos de datos: al definir las entradas y salidas de un problema es necesario definir de qué
tipo son estos datos. Los tipos usados en el proceso de construcción de algoritmos serán los mismos que se
utilizan al trabajar con expresiones. Veamos:

Tabla 2. Tipos de datos usados en expresiones


Tipo de dato Almacena
Entero Valores numéricos positivos y negativos del conjunto de los enteros
Real Cualquier valor numérico que guarda valores decimales
Booleano Valores que pueden ser verdaderos (V) o falsos (F)
Carácter Símbolos del lenguaje definidos entre comillas: ‘a’, ‘b’, ‘Q’, ‘T’

1.2 Especificación
Hemos establecido cuáles son las variables involucradas en el problema y podríamos pensar en su solución,
pero aún faltan aspectos por definir; por ejemplo, ¿Qué pasaría si alguna de las distancias dadas para un
atleta fuera negativa o si la suma de las distancias fuera mayor que la longitud total de la prueba, que para
este caso es de 21km? La respuesta podría ser simple: no es posible especificar distancias negativas dado
que representan el valor de una medición. Sin embargo, es necesario especificar las características o las
condiciones que deben cumplir los datos de un problema para contar con una solución que responda a
situaciones excepcionales. A estas condiciones las llamaremos precondiciones.

Veamos cuáles podrían ser las precondiciones aplicadas a las variables de entrada del problema. Se le
asigna un nombre a cada variable: V1, V2 y V3 para la velocidad alcanzada en cada tramo y D1,D2 y D3 para
las distancias de cada tramo. Entonces:

Para V1 podríamos decir que:

• Debe ser un valor numérico de tipo real porque requerimos medir dicha velocidad con precisión.
• No debe ser un número negativo porque dicha cantidad no tendría sentido.

Adrian
Nicolás
Malaver
Barrera


• Debe ser mayor que cero porque sabemos que cada deportista tuvo que terminar la prueba en
algún momento.

Estas mismas precondiciones son aplicables a V2 y V3.

Por otro lado, de D1, D2 y D3, podríamos decir que:

• Deben ser valores numéricos de tipo real porque requerimos medir distancias con precisión.
• No deben ser números negativos porque dicha cantidad no tendría sentido.
• Deben ser mayores que cero.
• La suma de D1, D2 y D3 debe ser igual a 21km, que es la distancia total definida para la carrera.

Con este nivel de detalle será sencillo formular una solución y contaremos con un resultado generalizado,
dado que nos permite calcular el tiempo total de carrera para cualquier conjunto de variables de entrada
que cumpla con las anteriores precondiciones.

Por otro lado, con el objetivo de contar con respuestas válidas y acertadas, podemos definir condiciones
sobre las salidas del problema. A estas salidas las llamaremos poscondiciones. Estas condiciones definen
todas las características que conocemos de una salida válida. Para el caso del ejemplo, definamos que T1, T2
y T3 son los tiempos de gastados por un deportista en cada tramo y T es el tiempo total. Entonces:

• T1, T2 y T3 deben ser números reales dado que al hacer los cálculos se obtendrán datos de
este tipo.
• Cada tiempo, además, deberá ser estrictamente mayor que cero, dado que las velocidades y las
distancias son mayores que cero y no tiene sentido que un tiempo sea negativo.
• Finalmente, T debe ser igual a la suma de los tiempos parciales.

Ahora, como sabemos, uno de los asuntos que motiva la necesidad de aprender programación de
computadores es el hecho de tener que comunicarnos con un computador lo cual implica aprender a hablar
su idioma, o por lo menos, un idioma que éste pueda entender más fácilmente. Pensando en lograr esa
comunicación, debemos formalizar las restricciones y definiciones hechas para el problema; para ello,
usaremos expresiones booleanas. Las expresiones, ya lo hemos mencionado, son agrupaciones de
operadores y operandos que deben cumplir reglas de sintaxis y precedencia.

Entonces, formalmente, podríamos definir el proceso de modelado y especificación para el problema


mencionado de la siguiente manera:

Adrian
Nicolás
Malaver
Barrera


Entradas: Mencionamos el tipo de dato que esperamos


V1,V2,V3,D1,D2,D3: Real
Precondiciones:
• V1>0 Y V2>0 Y V3>0 Cada pre o poscondición debe usar los operadores definidos y estar bien
• D1>0 Y D2>0 Y D3>0 formada.
• D1+D2+D3 = 21
Salidas: Mencionamos el tipo de dato de las salidas
T1,T2,T3,T: Real
Poscondiciones:
• T1>0 Y T2>0 Y T3>0
• T = T1+T2+T3

En resumen
Para resolver un problema debemos identificar correctamente cuáles son las entradas requeridas y las
salidas esperadas; a este proceso lo llamamos modelado. Además, debemos definir las pre y las
poscondiciones que estos datos deben cumplir a través del proceso de especificación, usando expresiones.
Todo esto con el objetivo de contar con información que cualquier persona pueda entender y que podamos
validar fácilmente de forma ordenada. En la siguiente lectura definiremos el proceso de construcción de la
solución de problemas de manera algorítmica.

Para tener en cuenta:


• Verifique que los datos proporcionados en el ejemplo cumplan las precondiciones definidas; luego
resuelva el problema y compruebe que las salidas del problema cumplan las poscondiciones.

• ¿Qué pasaría si se define un conjunto más grande de variables en el modelo analizado? ¿los resultados
obtenidos serían mejores, iguales o peores?, ¿Sería más sencillo o más difícil plantear la solución al
problema?

Adrian
Nicolás
Malaver
Barrera


También podría gustarte