Está en la página 1de 4

1.

Modelado y especificacin de algoritmos


El xito de esta asignatura se basa en el desarrollo de la capacidad para analizar, modelar y resolver

problemas a travs de la implementacin de algoritmos en el lenguaje de programacin Java. Veamos, en


detalle, este proceso.
Partimos inicialmente de un problema o una situacin que nos interesa. Por ejemplo, un problema sencillo de
fsica: En la Media Maratn realizada en Bogot el 2 de agosto de 2009, un atleta corri siete kilmetros a
una velocidad constante de 15.142km/h, ocho kilmetros a velocidad constante de 11.537km/h y los ltimos
seis a velocidad tambin constante de 12.979km/h. Se desea saber cul 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 informacin 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 adems es constante, y la longitud de cada tramo:
Tabla 1. Ejemplo de resultados de la carrera

Tramo de la
carrera

Velocidad

Longitud

1
2
3

15.142 km/h
11.537 km/h
12.979 km/h

7
8
6

Adems de estos datos, debemos saber qu informacin 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 travs 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 identificacin de estos elementos lo
llamaremos modelado.
Hablamos de modelado porque pretendemos trabajar con un modelo del mundo y del problema. Un modelo
es una representacin que hacemos de una situacin o de un objeto especfico, teniendo en cuenta un
POLITCNICO GRANCOLOMBIANO EN ALIANZA CON WHITNEY INTERNATIONAL UNIVERSITY SYSTEM

AdrianNicolsMalaverBarrera

conjunto menor y usualmente pequeo de variables que nos puedan llevar a la interpretacin de una
situacin que tomemos como vlida. El modelo de la situacin presentada no tiene en cuenta la incertidumbre
en la medicin de las distancias o en la medicin del tiempo, no tiene en cuenta las caractersticas del terreno
donde se realiz la carrera ni los tiempos gastados en hidratacin o pausas causadas por la logstica misma
de la competencia. Sin embargo, a partir de la informacin de las variables del modelo, es posible establecer
un valor cercano a la realidad y a partir de l, hacer algn tipo de juicio comparativo frente a los dems
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 construccin de algoritmos sern los mismos que se
utilizan al trabajar con expresiones. Veamos:
Tabla 2. Tipos de datos usados en expresiones

Tipo de dato
Entero

Almacena
Valores numricos positivos y negativos del conjunto de los enteros

Real

Cualquier valor numrico que guarda valores decimales

Booleano

Valores que pueden ser verdaderos (V) o falsos (F)

Carcter

Smbolos del lenguaje definidos entre comillas: a, b, Q, T

1.2

Especificacin

Hemos establecido cules son las variables involucradas en el problema y podramos pensar en su solucin,
pero an faltan aspectos por definir; por ejemplo, Qu pasara 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 podra ser simple: no es posible especificar distancias negativas dado
que representan el valor de una medicin. Sin embargo, es necesario especificar las caractersticas o las
condiciones que deben cumplir los datos de un problema para contar con una solucin que responda a
situaciones excepcionales. A estas condiciones las llamaremos precondiciones.

Veamos cules podran 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 podramos decir que:

Debe ser un valor numrico de tipo real porque requerimos medir dicha velocidad con precisin.
No debe ser un nmero negativo porque dicha cantidad no tendra sentido.

AdrianNicolsMalaverBarrera

Debe ser mayor que cero porque sabemos que cada deportista tuvo que terminar la prueba en
algn momento.

Estas mismas precondiciones son aplicables a V2 y V3.


Por otro lado, de D1, D2 y D3, podramos decir que:

Deben ser valores numricos de tipo real porque requerimos medir distancias con precisin.
No deben ser nmeros negativos porque dicha cantidad no tendra 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 solucin 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 vlidas y acertadas, podemos definir condiciones
sobre las salidas del problema. A estas salidas las llamaremos poscondiciones. Estas condiciones definen
todas las caractersticas que conocemos de una salida vlida. 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 nmeros reales dado que al hacer los clculos se obtendrn datos de

este tipo.
Cada tiempo, adems, 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 programacin 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 ms fcilmente. Pensando en lograr esa
comunicacin, 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, podramos definir el proceso de modelado y especificacin para el problema
mencionado de la siguiente manera:

AdrianNicolsMalaverBarrera

Entradas:
V1,V2,V3,D1,D2,D3: Real

Mencionamos el tipo de dato que esperamos

Precondiciones:

Salidas:

V1>0 Y V2>0 Y V3>0


D1>0 Y D2>0 Y D3>0
D1+D2+D3 = 21

T1,T2,T3,T: Real

Cada pre o poscondicin debe usar los operadores definidos y estar bien
formada.
Mencionamos el tipo de dato de las salidas

Poscondiciones:

T1>0 Y T2>0 Y T3>0


T = T1+T2+T3

En resumen
Para resolver un problema debemos identificar correctamente cules son las entradas requeridas y las
salidas esperadas; a este proceso lo llamamos modelado. Adems, debemos definir las pre y las
poscondiciones que estos datos deben cumplir a travs del proceso de especificacin, usando expresiones.
Todo esto con el objetivo de contar con informacin que cualquier persona pueda entender y que podamos
validar fcilmente de forma ordenada. En la siguiente lectura definiremos el proceso de construccin de la
solucin de problemas de manera algortmica.

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 pasara si se define un conjunto ms grande de variables en el modelo analizado? los resultados


obtenidos seran mejores, iguales o peores?, Sera ms sencillo o ms difcil plantear la solucin al
problema?

AdrianNicolsMalaverBarrera