Programación estructurada – ¿Qué es?

La programación estructurada (también conocida como programación modular) es un paradigma de programación que sirve para la creación de programas con código legible y componentes reutilizables. Todos los lenguajes de programación modernos soportan la programación estructurada, pero los mecanismos de soporte, al igual que la sintaxis de los lenguajes de programación, varían. 

Cuando los módulos o elementos de código pueden reutilizarse a partir de una biblioteca, también puede ser posible construir código estructurado utilizando módulos escritos en distintos lenguajes. Siempre que puedan obedecer a una interfaz de módulo común o a una especificación de interfaz de programa de aplicación (API).

Lo valioso de la estructuración

Sin embargo, cuando se reutilizan módulos, es posible comprometer la seguridad y la gobernanza de los datos. Por ello es importante definir y aplicar una política de privacidad que controle el uso de módulos que conlleven derechos implícitos de acceso a los datos. 

La programación estructurada promueve la división de un programa de aplicación en una jerarquía de módulos o elementos independientes. Estos a su vez, pueden contener otros elementos comunes. Dentro de cada elemento, el código puede estructurarse mediante bloques de lógica relacionados, diseñados para mejorar la legibilidad y el mantenimiento.

Estos bloques pueden incluir case, que comprueba una variable frente a un conjunto de valores; Repeat, while y for, que construyen bucles que continúan hasta que se cumple una condición. Puedes mas sobre ellos aquí. En todos los lenguajes de programación estructurados, la transferencia incondicional de control, o sentencia goto, está en desuso y a veces ni siquiera está disponible. 

Aquí te dejo un video que puede ser útil para conocer como se hacen los algoritmos y diagramas. Este sirven de aprendizaje para iniciar en la programación estructurada.

Algoritmos y Diagramas de flujos

Veamos algunos aspectos interesantes que pueden aclarar la utilidad de usar una programación ordenada, sencilla y con lógica.

Diferencia entre programación estructurada y no estructurada

Un lenguaje de programación estructurado facilita o impone prácticas de programación de forma modular. Estas prácticas también pueden apoyarse con lenguajes no estructurados, pero eso requerirá pasos específicos en el diseño y la implementación del programa.

La base teórica de esta forma de programación data sobre la década de 1950, cuando aparecieron los lenguajes ALGOL 58 y 60.

Hasta entonces, la claridad del código se veía reducida por la necesidad de construir pruebas de condición/acción haciendo que los programadores escribieran explícitamente pruebas y acciones enlazadas (utilizando la sentencia goto o su equivalente), lo que daba lugar a lo que a menudo se denominaba código espagueti. ALGOL incluía la estructura de bloques, en la que un elemento de código incluía una condición y una acción. 

La programación modular, que hoy se considera un sinónimo, surgió una década después, cuando se hizo evidente que la reutilización de código común podía mejorar la productividad de los desarrolladores.

En la programación modular o estructurada, un programa se divide en módulos semi-independientes, cada uno de los módulos es llamado cuando se necesitan. Los puristas sostienen que la programación modular requiere la independencia real de los módulos, pero la mayoría de los equipos de desarrollo consideran modular cualquier programa que divida la lógica en elementos separados, aunque esos elementos existan dentro del mismo programa. 

La Sentencia Go To

Tipos de estructuras usados en lenguajes de programación estructurada
Símbolos usados para tipos de Estructuras

Los lenguajes de programación actuales son universalmente capaces de generar código estructurado. Del mismo modo, también son capaces de producir código justamente descrito como no estructurado si se utiliza incorrectamente.

En 1968, Dijkstra publicó un destacado artículo que dejo huellas en la computación Go To Statement Considered Harmful. debido a que famoso científico holandés apoyaba intensamente el uso de lenguajes de programación estructurada, como una forma de realizar la verificación formal de programas y la eliminación de la dichosa sentencia Goto. Para estos tiempo, la sentencia se usaba de forma indiscriminada interrumpiendo las secuencias lógicas de muchas estructuras de programación. De hecho, Dijkstra participó en el comité que construyó Algol 60.

Algunos dirían que un lenguaje de programación no estructurado contiene sentencias Goto y, por lo tanto, no requiere una «llamada» a una rutina o módulo apartado, que luego retorna cuando está completo. Es mejor decir que los mecanismos para imponer la estructura varían según el lenguaje: algunos lenguajes exigen estructuras y otros aceptan códigos menos estructurados. 

Tipos de programación estructurada  

Esta programación puede dividirse en varias categorías, a saber:  

  • Programación procedimental. Define los módulos como «procedimientos» o «funciones» que se llaman con un conjunto de parámetros para realizar una tarea. Un lenguaje procedimental iniciará un proceso, al que despues se le suministrará datos. También es la categoría más conocida y se ha dividido en las siguientes:  
  • La programación orientada a servicios simplemente define los módulos reutilizables como «servicios» con interfaces anunciadas. 
  • La programación de microservicios se centra en la creación de módulos que no almacenan datos internamente, por lo que son escalables y resistentes en el despliegue en la nube.  
  • La programación funcional, técnicamente, significa que los módulos se escriben a partir de funciones, y que las salidas de estas funciones se derivan únicamente de sus entradas. Diseñada para la computación sin servidor, la definición de programación funcional se ha ampliado desde entonces para ser en gran medida sinónimo de microservicios. 
  • Programación orientada a objetos (POO). Define un programa como un conjunto de objetos o recursos a los que se envían órdenes. Un lenguaje orientado a objetos definirá un recurso de datos y lo enviará para procesar comandos. Por ejemplo, el programador procedimental podría decir «Imprimir(objeto)» mientras que el programador de POO podría decir «Decir al objeto que imprima». 
Leer  Usando la Inteligencia Artificial para resolver problemas matemáticos.

Modelos recientes

  • Programación basada en modelos. El ejemplo más común son los lenguajes de consulta de bases de datos. En la programación de bases de datos, las unidades de código se asocian a los pasos de acceso a la base de datos y se actualizan o ejecutan cuando se producen dichos pasos. La base de datos y la estructura de acceso a la base de datos determinarán la estructura del código.
  • Notación Inversa: Otro ejemplo de estructura basada en modelos es la Notación Polaca Inversa (RPN), una estructura de problemas matemáticos que se presta a la resolución eficiente de expresiones complejas. La informática cuántica, que acaba de emerger, es otro ejemplo de programación estructurada basada en modelos; el ordenador cuántico exige un modelo específico para organizar los pasos, y el lenguaje simplemente lo proporciona.

Componentes de la programación modular 

A alto nivel, los programas estructurados constan de una jerarquía estructural que comienza con el proceso principal y se descompone en niveles inferiores según dicte la lógica. Estas estructuras inferiores son los módulos del programa, y los módulos pueden contener tanto llamadas a otros módulos (de nivel inferior) como bloques que representen combinaciones estructuradas de condición/acción. Todo ello puede combinarse en un único módulo o unidad de código, o descomponerse en múltiples módulos, residentes en bibliotecas. 

Los módulos pueden clasificarse como «procedimientos» o «funciones». Un procedimiento es una unidad de código que realiza una tarea específica, normalmente haciendo referencia a una estructura de datos común disponible para el programa principal. Gran parte de los datos con los que operan los procedimientos son externos. Una función es una unidad de código que opera sobre entradas específicas y devuelve un resultado cuando se le llama. 

Ventajas de la programación estructurada 

Las principales ventajas que se tienen son: 

  1. Fomenta la implementación descendente, lo que mejora tanto la legibilidad como la mantenibilidad del código. 
  1. Fomenta la reutilización del código, ya que incluso los módulos internos pueden extraerse e independizarse, residir en bibliotecas, describirse en directorios y ser referenciados por muchas otras aplicaciones. 
  1. Está ampliamente aceptado que el tiempo de desarrollo y la calidad del código mejoran con la programación estructurada. 

Estas ventajas se consideran normalmente convincentes, incluso decisivas, y casi todo el desarrollo moderno de software emplea este estilo de programación de alguna forma. 

Desventajas de la programación estructurada 

La mayor desventaja de la programación estructurada es la reducción de la eficiencia de ejecución, seguida de un mayor uso de memoria. Ambos problemas surgen de la introducción de llamadas a un módulo o proceso, que luego vuelve al llamante cuando ha terminado.

Como esta programación es un paradigma que se basa en la división del código en estructuras de control como secuencias, bucles y decisiones, requiere mayor cuidado y compresión del desarrollador. Aunque la programación estructurada tiene muchas ventajas, también presenta algunas desventajas:

  1. Complejidad en programas grandes: A medida que los programas se vuelven más grandes y complejos, esta programación puede volverse difícil de mantener y comprender. La estructura jerárquica puede volverse confusa y dificultar la navegación por el código.
  2. Dificultad en el manejo de excepciones: La programación estructurada no proporciona un mecanismo natural para manejar excepciones o eventos inesperados. Esto puede hacer que el código sea más propenso a errores y dificultar la implementación de mecanismos de recuperación.
  3. Limitaciones en la reutilización de código: Con esta programación de forma básica no promueve la reutilización de código de manera eficiente. Debido a la falta de categorización de los módulos, puede resultar complicado extraer y reutilizar partes específicas de un programa en otros proyectos. Esto no sucede en la programación orientada a objetos.
  4. Rigidez en el diseño: Para esta programación se requiere un diseño cuidadoso y una planificación detallada antes de comenzar a escribir cualquier código. Esto puede limitar la flexibilidad y adaptabilidad del programa a medida que cambian los requisitos o surgen nuevas funcionalidades.

Desventajas ocasionales según el proyecto

  1. Falta de abstracción: La programación estructurada se enfoca en los detalles de implementación y puede carecer de la capacidad de abstracción necesaria para resolver problemas complejos de manera más intuitiva. Esto puede resultar en código más extenso y menos legible.
  2. Dificultad para el trabajo en equipo: Debido a su estructura lineal y jerárquica, la programación puede dificultar la colaboración entre múltiples programadores en un proyecto. La falta de modularidad ordenada y la dependencia de las variables globales pueden causar conflictos y dificultades en el trabajo conjunto.

Es importante tener en cuenta que muchas de estas desventajas pueden superarse mediante buenas prácticas de programación y el uso de técnicas avanzadas. Sin embargo, estas son algunas de las desventajas que se asocian comúnmente con la programación estructurada.

¿Qué opinas sobre la programación estructurada y sus características? Déjame tu comentario y revisamos para mejorar este articulo.

Hilmer Palomares
Últimas entradas de Hilmer Palomares (ver todo)

2 comentarios en «Programación estructurada – ¿Qué es?»

Deja un comentario

×