La solución de un problema exige el diseño del algoritmo. Un algoritmo es la
especificación de la secuencia ordenada de pasos a realizar para solucionar un
problema en un tiempo finito.
Está vinculado a una maquina abstracta. Por lo tanto, los algoritmos son
independientes de los lenguajes de programación y de las maquinas en las que se
lo ejecutara.
Está constituido por un conjunto de acciones. Una acción es un hecho o
acontecimiento que sucede en un periodo de tiempo finito, es llevado a cabo por
un ejecutante y tiene un objetivo. La unión de varias acciones organizadas que
se ejecutan en un tiempo finito se denomina proceso. Tanto los procesos como las
acciones son componentes de los algoritmos.
a) Características de los algoritmos.
Todo algoritmo debe cumplir con tres características:
1. Debe ser preciso. No debe existir
acción alguna que presente ambigüedades en cuanto a su estado previo y su estado
posterior.
2. Debe estar definido. Si todas sus
acciones son precisas y se sigue dos veces el mismo algoritmo con los mismos
datos, se debe obtener el mismo resultado cada vez.
3. Debe ser finito. Los resultados de la ejecución de un algoritmo se
deben obtener en un tiempo finito. Todo algoritmo debe tener un inicio y un
fin.
b) Diseño de algoritmos.
En primer término, es necesario definir y analizar el problema a resolver. Una
buena comprensión del problema, mas la descripción detallada de entradas (datos
necesarios) y salidas requerida (datos requeridos del proceso) son los
requisitos más importantes para hallar una solución del problema. Los datos
proporcionados al algoritmo constituyen su entrada y los datos producidos por el
su salida.
Una buena estrategia para resolver problemas complejos es descomponer al
problema en varios problemas menores más fáciles de solucionar. La
descomposición del problema en otros más simples y así sucesivamente hasta
hallar una solución a ellos, esto se denomina diseño descendente (top-down
design).
Las principales ventajas del diseño descendente
son:
El problema se comprende más fácilmente al dividirse en partes mas simples
denominadas módulos, Las modificaciones en módulos son mas fáciles;
La comprobación del problema se puede verificar fácilmente.
c) Representación e algoritmos.
La elección depende del uso futuro, del objetivo y
la experiencia de quien lo escriba. Entre las alternativas se pueden encontrar:
Diagrama de flujo;
Diagrama N-S (Nassi-Scheiderman);
Lenguaje natural humano;
Pseudocódigo;
Formulas;
Lenguajes de programación.
Si bien los diagramas son mas cómodos para los
inexpertos, es verdaderamente mas difícil codificarlo luego a un lenguaje de
programación, ya que los diagramas no tienen en cuenta las limitaciones de los
lenguajes de programación.
d) Diagrama de flujo.
Un diagrama de flujo es un diagrama basado en un conjunto de símbolos gráficos
que muestran la secuencia de pasos del algoritmo a través de flechas denominadas
líneas de flujo.

Algunos de los principales símbolos son:

e) Diagrama Naassi-Scheiderman.
Estos diagramas omiten el uso de flechas de unión
y los símbolos se utilizan en forma continua. Las acciones sucesivas se
simbolizan en cajas contiguas. la dificultad en el uso de estos diagramas está
en que ocupan mucho lugar en forma horizontal cuando varias estructuras se
anidan una dentro de otra.

f) Lenguaje natural.
Puede ser muy útil para una escritura inicial. Posee muchas limitaciones para la
escritura de algoritmos que luego serán programados, ya que las estructuras de
los lenguajes humanos son muy distintas a las de los lenguajes de programación.

g) Pseudocódigo.
Es una alternativa intermedia entre los lenguajes naturales y los lenguajes de
programación. Involucra un conjunto limitado de palabras, las reglas de
utilización y unas pocas limitaciones similares a las de los lenguajes de
programación, sin llegar a la escritura de programas. Con el pseudocódigo, el
programador centra su atención en la lógica y la secuencia de las acciones sin
la preocupación por las reglas propias de un lenguaje de programación
particular.

h) Formulas.
Una formula es una combinación de valores y símbolos, como por ejemplo una
ecuación aritmética. Para ciertos tipos de problemas, las formulas suelen ser la
alternativa más valida.

i) Lenguaje de programación.
Una alternativa valida es escribir directamente la
solución utilizando un lenguaje de programación. tiene la limitación de no poder
utilizar el total del potencial de un algoritmo, ya que los lenguajes de
programación tiene reglas que limitan la creatividad de la solución.

Se recomienda realizar todos los trabajos
prácticos hasta dominar las técnicas de pensamiento algorítmico. Presionando
Aquí podrá bajar un
archivo en Word que contiene todos los problemas para su resolución y que deberá
realizarlos y entregarlos para su corrección.
También se podrán realizar consultas al profesor
en clases en caso de no poder resolver alguno de ellos.
Se recomienda una vez realizado los diagramas de
flujo o pseudo código se pasen al programa DFD que
le permitirá simular su funcionamiento y comprobar si esta bien hecho el
programa o no.