miércoles, 3 de mayo de 2023

PROGRAMACION ESTRUCTURA

 Qué es la programación estructurada y qué aportó al mundo del desarrollo. Qué componentes básicos encontramos en la programación estructurada.


Dentro de los paradigmas de la programación, la estructurada es una de los más comunes y a menudo el primer paso de los estudiantes que comienzan a tratar con el código. En este artículo queremos explicarte qué es exactamente y qué aportó en el mundo de la programación, hasta qué punto es importante hoy en día y otros detalles interesantes.




Si no tienes claro lo que es un paradigma te recomendamos la lectura del artículo sobre los paradigmas de la programación.




Qué es la programación estructurada


Es un paradigma de la programación, es decir, un estilo de codificar los algoritmos que se aplica en los lenguajes de programación.




La programación estructurada se establece como paradigma de programación en torno a los años 70, siendo uno de sus principales padres Dijkstra, con el objetivo de mejorar las prácticas de programación y facilitar la creación de programas más complejos, aumentando también la facilidad de mantenimiento del software.




Consiste en un estilo de programación en el que encontramos las estructuras básicas ya conocidas en los lenguajes de programación anteriores, como ciclos y condicionales, a los que se le añade la posibilidad de ejecutar subrutinas o funciones.




Qué había antes de la programación estructurada


Antes de aparecer la programación estructurada existía ya un estilo de programación imperativo, en el que se definían paso por paso las acciones para resolver un problema, el algoritmo, con las estructuras de control mencionadas anteriormente, como bucles o condicionales. Ese estilo imperativo ha perdurado hasta hoy y sigue siendo usado en la mayoría de los casos, sin embargo, para controlar el flujo de ejecución de las sentencias, antes de la programación estructurada, se usaba una instrucción denominada "GOTO".




El "GOTO", que viene de las palabras "go to" (ir a), permitía mencionar una línea de código a la que el flujo de ejecución debía saltar. Gracias a esta instrucción era posible volver a ejecutar un pedazo de código, saltarse unas cuantas líneas de código y cosas así. Durante mucho tiempo se había programado con esa costumbre pero daba como resultado programas difíciles de entender, ya que no existía una clara distribución de las responsabilidades y tampoco facilitaba la organización del código.




Probablemente muchos de los lectores no habrán tenido que lidiar con la sentencia "GOTO" y no se hagan una idea de cómo eran los programas en aquella época. Básicamente consistían en bloques de código lineal, carentes de forma y estructura, con muy complicado mantenimiento. Sobre todo, era imposible ver a simple vista cómo iba a ejecutarse en programa y para hacerse una idea era necesario seguir una traza, que saltaba de un lugar a otro del maremagnum de sentencias, de manera enredada.




De hecho, el término del "código spaghetti" viene justamente de esa falta de forma y la disposición del código sin una estructura definida, todo mezclado.




Qué aportó la programación estructurada


En lugar del "GOTO" la programación estructurada propone una pieza nueva que no existía anteriores paradigmas de la programación, que es la subrutina, o función.




Gracias a las funciones era posible organizar el código de una manera mucho más clara, creando pequeñas piezas de código que eran fácilmente utilizables, que aportaban semántica al código y que conseguían definir una estructura jerárquica.




Con las funciones se pudo comenzar a separar las partes del código en pequeñas piezas fácilmente comprensibles y mantenibles, a delegar la responsabilidad en rutinas que eran capaces de resolver un problema y sobre las cuales el programador podía despreocuparse de su funcionamiento interno, porque sabía que ellas serían capaces de resolver sus problemas.




A la capacidad de ser capaces de obviar los detalles no relevantes de algo es a lo que llamamos "abstracción". En términos de programación vino gracias a las funciones. El programador puede simplemente entender qué hace una función sin preocuparse en cómo está desarrollada por dentro, lo que le permite centrarse en las partes que le interesan en cada momento y deshacer la complejidad del software.




En resumen, algunas de las ventajas que nos aporta este estilo de programación son las siguientes:




Capacidad de organización jerárquica del código. Unas funciones principales llaman a otras funciones secundarias y éstas llaman a otras, creando una jerarquía de funciones fácilmente entendibles.


Permiten la abstracción, evitando que el programador necesite entender todo el código como un único bloque.


Aumenta la capacidad de depuración, ya que cada una de las unidades "función" se pueden probar por separado.


Se puede aumentar drásticamente el número de líneas de las aplicaciones sin que éstas se vuelvan un caos.


Aumenta la velocidad de desarrollo y, además, la capacidad de que varias personas puedan participar en el desarrollo de un proyecto.


Todo ello reduce la complejidad del software y los costes de desarrollo.


Tipos de funciones


A las subrutinas, el concepto que hoy conocemos por simplemente como "funciones", algunos lenguajes de programación lo dividieron en dos tipos de estructuras:




Las funciones tenían la particularidad de devolver valores.


Los procedimientos realizaban procesos pero no devolvían ningún valor.


Los lenguajes de programación que se usan comúnmente en la actualidad no difieren entre funciones y procedimientos, los tratan de la misma manera, con la misma estructura.




¿Se usa hoy la programación estructurada?


Aunque la programación estructurada es algo que ya viene de lejos hoy en día todavía es altamente usada en muchos proyectos y son la base de la mayoría de los lenguajes de programación actuales. De hecho, muchos lenguajes populares como Javascript o PHP la fomentan de base, igual aunque también incorporan otros paradigmas distintos.




Cuando una persona comienza con la programación a menudo se empieza conociendo la programación estructurada, porque resulta más fácil y posibilita una curva de aprendizaje más suavizada. Como los lenguajes de programación actuales incorporan todo lo que la programación estructurada ha aportado, es muy sencillo aplicarla en la ruta de aprendizaje con tecnologías comúnmente utilizadas.




Pero, que se use para aprender, no quiere decir que no se use todavía para resolver los problemas actuales. Lenguajes como Javascript, aunque soportan otros paradigmas, la tienen muy arraigada y aplicaciones realmente complejas están resueltas en Javascript con una organización del código basada en funciones. Igual ocurre con otros lenguajes como PHP.




Muchos otros lenguajes de programación como Java usan cosas de programación estructurada, pero requiere el desarrollo de clases, de programación orientada a objetos, por lo que no siempre son usados como primer lenguaje para aprender a programar. también hay que decir que en la actualidad los equipos de desarrollo están más y más organizando el código con clases, aunque los lenguajes puedan ser usados solo con funciones. Quizás la comunidad donde más se usan las funciones para organizar el código sea la de Javascript, aunque en este lenguaje se usan mucho los objetos, incluso objetos creados de manera literal, como con JSON.

Qué vino después de la programación estructurada

Después de la programación estructurada aparecieron otros paradigmas como la programación orientada a objetos, que es la que domina el panorama actual de la programación.


La programación orientada a objetos hereda todo lo que tiene la programación estructurada, trayendo un nuevo concepto que es la "clase", la cual permite agrupar datos heterogéneos y funcionalidades asociadas a esos datos. Es un tema que puedes aprender mejor en el manual de programación orientada a objetos. Java es el lenguaje de programación más popular que nos obliga a programar siempre con clases.


Otros paradigmas como la programación funcional también vinieron después y son capaces de resolver de manera muy elegante ciertos problemas. Actualmente hay muchos lenguajes de programación funcional como Haskell o Scala, aunque a decir verdad no terminan de cuajar al 100% porque no faciltan el desarrollo de todos los tipos de aplicaciones.

Programación estructurada: características, ejemplos, ventajas, aplicaciones

La programación estructurada es una disposición en el diseño y construcción de programas informáticos, con el objetivo de mejorar la gestión de su complejidad, teniendo en cuenta las peculiaridades del pensamiento humano. Todo programa se basa en un algoritmo y puede representarse mediante un esquema lógico.



Surgió por la creciente complejidad de los programas computarizados. Se ha convertido en un nuevo esquema de programación que creó nuevas técnicas para poder producir programas seguros de operar por más tiempo.




Estructura de decisión y estructura de secuencia en programación estructurada. Fuente: I.hidekazu CC BY-SA (httpscreativecommons.orglicensesby-sa4.0)


Gracias al vertiginoso desarrollo del procesamiento de datos computarizado, a fines de los años 60 era posible resolver problemas cada vez más complejos. Sin embargo, comprender, depurar y modificar estos programas presentaba dificultades que los hacían poco confiables.


Los programas de computación grandes realizados para estos problemas tenían códigos fuentes tan largos y desestructurados que se habían vuelto bastante complicados de acceder y navegar con cierta lógica, incluso para sus propios autores.

[toc]

Origen


Los programadores utilizaban en los lenguajes de programación el comando “goto” para realizar una bifurcación condicional, lo que conllevaba muchas veces a que se dificultara la legibilidad y a que no se conservara un contexto lógico.


En esa crisis de software se comenzó a plantear si se podía desarrollar de forma sistemática una metodología general y disciplinada que permitiera realizar programas más refinados. Como respuesta a este planteamiento nació el método de programación estructurada.


En 1968, Dijkstra publicó el artículo “Goto, el comando considerado perjudicial”, donde señalaba que el uso indiscriminado de este comando tenía un efecto negativo en la legibilidad y comprensión de los programas de computadora.


Niklaus Wirth diseñó un nuevo lenguaje de programación, llamado Pascal, lanzado en 1970. Desde entonces ha sido utilizado ampliamente para enseñar el diseño de la programación estructurada.


Características

Este modo de programación se caracteriza porque los programadores pueden fragmentar el código fuente de sus programas en bloques lógicamente estructurados, que consisten en bucles, bloques lógicos y comandos condicionales.


Teoría de la programación estructurada


Dijkstra ideó una teoría vinculada a la programación estructurada, la cual indicaba que al diseñar cualquier programa es conveniente tomar en cuenta los siguientes fundamentos:


– El teorema estructural, que expresa que se puede compilar cualquier programa utilizando solo tres estructuras de control esenciales: estructura secuencial, estructura de alternativas y estructura repetitiva.


– Al delinear los programas se exhorta a aplicar la técnica descendente, llamada también de arriba hacia abajo.


Puede servirte:   Recursos multimedia: concepto, tipos y ejemplos


– Deben limitarse los rangos de validez y visibilidad de las variables y las estructuras de datos.


Estructuras de control


El teorema estructural indica que cualquier algoritmo con un único punto de inicio y de culminación se puede constituir como una composición de tres estructuras de control.


Al programar de forma lógica y clara estas estructuras de control admitidas, la programación estructurada permite un enfoque eficiente de las funciones con cualquier grado de dificultad.


Estructura de secuencia o lineal


Esta estructura es simplemente la secuencia o sucesión de dos o más operaciones o comandos.


Estructura de decisión o de alternativas


Es la selección de un comando entre dos posibles alternativas. También se permite elegir entre más de dos alternativas.


Estructura de ciclo o repetitiva con una pregunta inicial


Se repiten ciertos comandos siempre que se cumpla una determinada condición. También el ciclo se puede realizar con un contador.


Independiente del lenguaje de programación


La programación estructurada se basa en módulos funcionales bien definidos, jerarquizados según la naturaleza específica del problema. Esta programación es un método independiente del lenguaje de programación, actuando más bien como un estilo de programar.


Es una forma de idear los programas siguiendo reglas bien establecidas, utilizando para ello un cierto conjunto de estructuras de control.


La programación estructurada permite que los programas se escriban en pseudocódigo, independientemente del lenguaje de la máquina, cercano al natural, convertible en cualquier lenguaje de programación.


Ejemplos de programación estructurada


Casi cualquier fragmento de código de muestra en cualquier lenguaje de programación moderno será un ejemplo de programación estructurada.


Esta programación utiliza bucles, condicionales y subrutinas para controlar el flujo y modularidad para así facilitar la lectura y poder reutilizar el código.


Secuencia


Se puede ejecutar una lista de sentencias en orden, de arriba hacia abajo. En este caso se da como ejemplo un programa en lenguaje natural para hornear pan:


– Agregar harina.


– Añadir levadura.


– Agregar sal.


– Mezclar.


– Añadir agua.


– Amasar.


– Dejar que se levante la masa.


– Hornear.


Repetición


Se repite un bloque de sentencias mientras una condición sea verdadera. Por ejemplo: lavar platos.


Selección


Se elige como máximo una acción entre varias condiciones alternas. Por ejemplo: ordenar el correo.


Programación estructurada en Visual Basic


Secuencia


Las líneas o bloques de código se escriben y ejecutan en un orden secuencial. Por ejemplo, se tiene:


x= 6


y= 12


z= x + y


WriteLine(z)


Repetición


Se repite un bloque de código mientras se cumple una condición. No hay límite para la cantidad de veces que se puede ejecutar el bloque. Ejemplo:


x= 2


Mientras x<100


Puede servirte:   Bit de paridad: para qué sirve, cómo funciona


WriteLine(x)


x= x * x


Fin


Selección


Se ejecuta un bloque de código si una condición es verdadera. El bloque de código se ejecuta como máximo una vez. Ejemplo:


x= ReadLine()


Si x Mod 2= 0


WriteLine(“El número es par”)


Fin de Si


Ventajas


– Son programas que satisfacen las necesidades de los clientes.


– Aunque inicialmente se lleva más tiempo generar el código, resulta a menudo en un código que se ejecuta sin errores cuando se ejecuta por primera vez.


– Es similar al vocabulario de palabras y símbolos en inglés.


– Resulta fácil manejar cambios en el programa ante nuevas especificaciones en el futuro.


– Son más fáciles de mantener.


– Es fácil de usar y de entender. Eventualmente se requiere menos tiempo para escribir el código. Es más fácil de aprender,


– El programa escrito en un lenguaje de alto nivel se puede traducir a muchos lenguajes de máquina. Por tanto, se puede ejecutar en cualquier computadora para la que exista un traductor o compilador adecuado.


– Están orientados principalmente a los problemas en lugar de a la máquina.


– Es independiente de la computadora en la que se utiliza. Es decir, los programas desarrollados en lenguajes de alto nivel se pueden ejecutar en cualquier computadora.


Programas más claros



La programación estructurada reduce la posibilidad que una función afecte a otra. Esto hace que se escriban programas más claros, ya que se eliminan las variables globales para ser reemplazadas por variables locales.


Debido a este cambio, se puede ahorrar el espacio de asignación de memoria que ocupa una variable global.


Fácil comprensión


La organización ayuda a comprender fácilmente la lógica de programación, para así poder entender la lógica detrás de los programas.


También ayuda a los recién llegados de cualquier empresa de tecnología a comprender los programas creados por otros trabajadores de la industria, facilitando así una posible depuración del código.


Desventajas


– El traductor o compilador tiene que traducir el lenguaje de alto nivel al lenguaje de máquina. Por tanto, se tiene que pagar un precio en el uso de tiempo de la computadora.


– El código objeto generado por el compilador puede ser ineficiente si se compara con un programa equivalente en lenguaje ensamblador.


Mismo código repetido


El código que está escrito puede aparecer en diferentes partes del programa. Puede ser vulnerable a varios problemas debido a su ubicación. Los programas tienen variables, lo que significa que pueden tomar diferentes valores en diferentes partes del programa.


Resulta engorroso cambiar tipos de datos


El tipo de los datos proviene de muchas funciones. Por tanto, cuando se produzcan cambios en ese tipo de datos, se debe realizar el cambio correspondiente en cada ubicación que actúe sobre ese tipo de datos dentro del programa. Esta es una tarea que realmente consume mucho tiempo si el programa es muy grande.


Puede servirte:   Puerto paralelo: características, tipos y funciones


Se puede considerar el caso de un desarrollo de software, donde varios programadores trabajan en equipo en una aplicación. En un programa estructurado, a cada programador se le asignará construir un conjunto específico de funciones y tipos de datos.


Por tanto, diferentes programadores manejarán por separado diferentes funciones que tienen tipos de datos compartidos entre sí.


Los demás programadores del equipo deberán reflejar los cambios en los tipos de datos realizados por un programador, en los tipos de datos que hayan manejado. De lo contrario, se deberán reescribir varias funciones.


Aplicaciones


La programación estructurada ha funcionado bien para millones de programas y miles de millones de líneas de código. No hay ninguna razón para desecharla.


En particular, ha funcionado extremadamente bien para programas que procesan datos y para el procesamiento de números, los cuales se ejecutan una vez para producir una respuesta.


Dos características tienden a definir bien los problemas que se pueden abordar de una manera puramente estructurada:


– Los datos a manejar coinciden estrechamente con los tipos de datos que están integrados en el lenguaje, siendo generalmente números y cadenas de caracteres.


– El programa sigue un flujo de control bien definido para producir un único resultado basado en alguna entrada.


Los programas de computadora con estas características incluyen muchas aplicaciones científicas, de ingeniería y de procesamiento de texto, además de muchos de los ejemplos de los libros de texto de los cursos tradicionales de informática.


No resulta sorprendente que estos sean exactamente los tipos de programas que las primeras personas que inventaron los lenguajes de programación querían resolver.


Manejo de objetos


La mayoría de los lenguajes de programación modernos están estructurados de esta manera: lo que se tiene en el programa son objetos, y la mayoría del código consiste en diferentes métodos para utilizar los datos almacenados en esos objetos.


Un programa estructurado generalmente tiene control sobre lo que sucede y cuándo sucede, mientras que un programa basado en eventos debe ser capaz de responder a los sucesos en momentos impredecibles.





PROGRAMACION ESTRUCTURA

  Qué es la programación estructurada y qué aportó al mundo del desarrollo. Qué componentes básicos encontramos en la programación estructur...