Programación Estructurada

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).

Sin embargo, cuando se reutilizan módulos, es posible comprometer la seguridad y la gobernanza de los datos, por lo que 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 que, 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. 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. 

Diferencia entre lenguajes de programación estructurados y no estructurados 

Un lenguaje de programación estructurado facilita o impone prácticas de programación estructuradas. 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. Así pues, las prácticas de programación estructurada se remontan a la aparición de los lenguajes de programación estructurados. 

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

Leer  ¿Qué paso con los NFTs y el metaverso? 

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 sinónimo de programación estructurada, 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 modulo 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. 

Tipos de estructuras usados en lenguajes de programación estructurados
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 célebre artículo que impactó 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, pero esa definición es necesariamente correcta. Es mejor decir que los mecanismos para imponer la estructura varían según el lenguaje: algunos lenguajes exigen estructura y otros aceptan código menos estructurado. 

Tipos de programación estructurada  

La programación estructurada puede dividirse en tres categorías, a saber:  

Leer  5 preguntas necesarias en Gestión del Conocimiento

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”. 
  • 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. 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 estructurada 

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. 

Leer  Programación orientada a Objetos. Lo que debes saber.

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 de la programación estructurada 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 programación estructurada. 

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.

Los parámetros y recursos del sistema se guardan en una pila (una cola organizada como LIFO, o último en entrar, primero en salir) y se extraen cuando se necesitan. Cuanto más descompuesta esté la lógica del programa, es decir, cuantos más módulos intervengan, mayor será la sobrecarga asociada a la interfaz de módulos. Todos los lenguajes de programación estructurados tienen el riesgo de “sobreestructurarse” y perder efectividad.

Por Hilmer Palomares

Cinéfilo, Informático y enamorado de los viajes. Además, de programador de computadoras, ingeniero de sistemas y profesor universitario.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto: