9. PROGRAMACIÓN EN PSEUDOCODIGO Y ESTRUCTURADO
La programación estructurada es un paradigma; ya que está orientada a mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora, utilizando únicamente subrutinas y tres estructuras: secuencia, selección (if y switch) e alternación (bucles for y while), considerando innecesario y contraproducente el uso de la instrucción de transferencia incondicional (GOTO), que podría conducir a "código espagueti", que es mucho más difícil de seguir y de mantener, y era la causa de muchos errores de programación.
Surgió en la década de 1960, particularmente del trabajo Böhm y Jacopini, y una famosa carta, La sentencia goto considerada perjudicial, de Edsger Dijkstra en 1968 y fue reforzado teóricamente por el teorema del programa estructurado, y prácticamente por la aparición de lenguajes como ALGOL con adecuadas y ricas estructuras de control.
9.1 Programación en pseudocodigo.
- Creación del algoritmo
En la creación de un programa, después del análisis del problema, se establecen las especificaciones del programa, es decir, qué debe hacer y cómo lo debe hacer. Si un algoritmo es correcto, es más fácil realizar la programación y se reduce la posibilidad de cometer errores.
El desarrollo de un algoritmo se realiza en tres fases:

Los algoritmos pueden ser expresados de muchas maneras, destacando el lenguaje natural, los diagramas de flujo y el pseudocódigo. En la práctica, se utilizan los dos últimos ya que el lenguaje natural es más extenso
- Diagramas de flujo.- permiten crear algoritmos mediante símbolos gráficos que representan operaciones específicas y que indican la secuencia de las operaciones mediante flechas. Están regidos por normas ISO.
- Pseudocódigo.- utilizan una sintaxis formada por frases o palabras en lenguaje común, instrucciones de programación y palabras clave que definen las estructuras básicas.
Para entenderlo mejor, te proponemos que estudies atentamente este ejemplo en el que se realiza el algoritmo de un programa que leerá dos número introducidos por el teclado y mostrará en pantalla el menor de los dos.
- Diseño de algoritmos
Para llegar a la realización de un programa es necesario el diseño previo de algoritmo, de modo que sin algoritmo no puede existir un programa.
Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de la computadora que lo ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programación y ejecutarse en una computadora distinta; sin embargo, el algoritmo será siempre el mismo.
Dada la importancia del algoritmo en la ciencia de la computación, un aspecto muy importante será el diseño de algoritmos. El diseño de la mayoría de los algoritmos requiere creatividad y conocimientos profundos de la técnica de la programación.
Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de la computadora que lo ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programación y ejecutarse en una computadora distinta; sin embargo, el algoritmo será siempre el mismo.
Dada la importancia del algoritmo en la ciencia de la computación, un aspecto muy importante será el diseño de algoritmos. El diseño de la mayoría de los algoritmos requiere creatividad y conocimientos profundos de la técnica de la programación.
Técnicas de diseño de algoritmos
- Algoritmos voraces (greedy): seleccionan los elementos más prometedores del conjunto de candidatos hasta encontrar una solución. En la mayoría de los casos la solución no es óptima.
- Algoritmos paralelos: permiten la división de un problema en problemas de forma que se puedan ejecutar de forma simultánea en varios procesadores.
- Algoritmos probabilísticos: algunos de los pasos de este tipo de algoritmos están en función de valores pseudoaleatorios.
- Algoritmos determinísticos: el comportamiento del algoritmo es lineal: cada paso del algoritmo tiene únicamente un paso sucesor y otro antecesor.
- Algoritmos no determinísticos: el comportamiento del algoritmo tiene forma de árbol y a cada paso del algoritmo puede bifurcarse a cualquier número de pasos inmediatamente posteriores, además todas las ramas se ejecutan simultáneamente.
- Divide y vencerás: dividen el problema en subconjuntos disjuntos obteniendo una solución de cada uno de ellos para después unirlas, logrando así la solución al problema completo.
- Metaheurísticas: encuentran soluciones aproximadas (no óptimas) a problemas basándose en un conocimiento anterior (a veces llamado experiencia) de los mismos.
- Programación dinámica: intenta resolver problemas disminuyendo su coste computacional aumentando el coste espacial.
- Ramificación y acotación: se basa en la construcción de las soluciones al problema mediante un árbol implícito que se recorre de forma controlada encontrando las mejores soluciones.
- Vuelta atrás (backtracking): se construye el espacio de soluciones del problema en un árbol que se examina completamente, almacenando las soluciones menos costosas.
- Simbologia y diagrama de flujo
Los diagramas de flujo usan formas especiales para representar diferentes tipos de acciones o pasos en un proceso. Las líneas y flechas muestran la secuencia de los pasos y las relaciones entre ellos. Estos son conocidos como símbolos de diagrama de flujo.
El tipo de diagrama dicta los símbolos de diagramas de flujo que se utilizan. Por ejemplo, un diagrama de flujo de datos puede contener un Símbolo de Entrada o Salida (también conocido como Símbolo de E/S), pero no es muy común verlo en la mayoría de los diagramas de flujo de procesos.
Con los años, la tecnología ha evolucionado, y con ella también la diagramacion. Algunos símbolos de los diagramas de flujo que se utilizaron en el pasado para representar tarjetas perforadas de computadora, o cinta perforada, han pasado a la historia.



No hay comentarios:
Publicar un comentario