La 'resolución de un problema' mediante un ordenador consiste en el proceso que a partir de la descripción de un problema, expresado habitualmente en lenguaje natural y en términos propios del dominio del problema, permite desarrollar un programa que resuelva dicho problema.
Este proceso exige los siguientes pasos:
Los dos primeros pasos son los más difíciles del proceso. Una vez analizado el problema y obtenido un algoritmo que lo resuelva, su transformación a un programa de ordenador es una tarea de mera traducción al lenguaje de programación deseado.
Cuando un usuario plantea a un programador un problema que resolver mediante su ordenador, por lo general ese usuario tendrá conocimientos más o menos amplios sobre el dominio del problema, pero no es habitual que tenga conocimientos de informática. Por ejemplo, un contable que necesita un programa para llevar la contabilidad de una empresa será un experto en contabilidad (dominio del problema), pero no tiene por qué ser experto en programación.
Del mismo modo, el informático que va a resolver un determinado problema puede ser un experto programador, pero en principio no tiene por qué conocer el dominio del problema; siguiendo el ejemplo anterior, el informático que hace un programa no tiene por qué ser un experto en contabilidad.
Por ello, al abordar un problema que se quiere resolver mediante un ordenador, el programador e informático necesita de la experiencia del experto del dominio para entender el problema. Al final, si se quiere llegar a una solución satisfactoria es necesario que:
Un algoritmo consiste en una especificación clara y concisa de los pasos necesarios para resolver un determinado problema, pero para poder diseñar algoritmos es necesario disponer de una notación, que llamaremos ‘notación algorítmica’, que permita:
Para poder describir cualquier tipo de acción de las que intervienen en un algoritmo, diversos autores proponen el uso de un conjunto de construcciones lógicas (secuencia, decisión e iteración) con las que es posible escribir cualquier programa. Lo que sigue a continuación es la descripción de las diferentes construcciones disponibles para el diseño de algoritmos.
Se entiende por acciones elementales aquellas que el ordenador es capaz de realizar y que serán de dos tipos:
Cuando en un algoritmo se deben ejecutar varias acciones sucesivamente, éstas se describen una detrás de otra según el orden en que deban ejecutarse. Si se desea se puede emplear algún tipo de símbolo para separar dos acciones consecutivas. En el siguiente ejemplo se muestra la descripción de acciones separadas por punto y coma (símbolo que habitualmente se emplea como separador).
Cuando en un algoritmo se quiere indicar que cierta acción solo se debe ejecutar bajo cierta condición se indica del siguiente modo:
Solo si la Condición (operación lógica) es verdadera se ejecutará la Acción. En este caso, la Acción puede referirse tanto a una acción elemental como a un conjunto de ellas.
En ocasiones, se deben ejecutar unas acciones u otras dependiendo de la ocurrencia de una determinada condición. Esta especificación se realiza del siguiente modo:
También es posible que a la hora de especificar la ejecución de una acción haya que escoger ésta entre varias dependiendo del valor de una determinada variable (o indicador). Este caso se expresa del siguiente modo:
En esta construcción Indicador debe tener un determinado valor que en caso de coincidir con alguno de los n valores provocará la ejecución de la acción asociada a dicho valor. Si el valor del Indicador no coincidiera con ninguno de los especificados se ejecutará la Acción X. No tiene por qué haber una Acción X para cuando el Indicador' no coincida con ninguno de los n valores; en ese caso, si el Indicador' no coincide con ningún valor no se ejecutaría ninguna acción.
Al igual que en los casos anteriores, todas las acciones que aparecen en esta estructura (Acción 1, Acción 2,..., Acción n y Acción X) pueden referirse a una única acción o a un conjunto de ellas.
Cuando una acción o conjunto de acciones debe ejecutarse varias veces se recurre a una estructura iterativa o bucle. En este tipo de estructuras se necesita una condición que determine cuando terminan las iteraciones. Dependiendo de si esa condición se evalúa al principio o al final de la estructura y de si la condición para que las iteraciones continúen debe ser verdadera o falsa, se pueden definir cuatro construcciones iterativas distintas:
Mientras Condición Hacer
FinMientras
Hasta Condición Hacer
FinHasta
Hacer
Mientras Condición;
Hacer
Hasta Condición;
Sobre las cuatro construcciones que se acaban de presentar cabe hacer las siguientes observaciones:
Existe una construcción especial para indicar una repetición de acciones que se suele emplear cuando se quiere que dicha repetición se realice un número determinado de veces:
En este caso la ‘Acción’ se repetirá n veces e ‘i’ será una variable que tomará todos los valores entre 1 y n (ambos inclusive) en cada una de las sucesivas repeticiones. Esta construcción, aunque de apariencia diferente a las anteriores, se podría expresar como un caso particular de la estructura 1 del siguiente modo:
En este caso la condición de finalización del bucle es que la variable ‘i’ sea mayor que ‘n’ y siempre, al finalizar la ejecución de la ‘Acción’, ‘i’ se incrementa en una unidad antes de volver a evaluar la ‘Condición’ para el nuevo valor de ‘i’.
Escribe un comentario o lo que quieras sobre Resolución de problemas de programación (directo, no tienes que registrarte)
Comentarios
(de más nuevos a más antiguos)