Discusión:Programación estructurada

Contenido de la página no disponible en otros idiomas.
De Wikipedia, la enciclopedia libre
Esta página le interesa al Wikiproyecto Informática.

Parte de "Elementos".--Manlleus (discusión) 20:33 22 jul 2022 (UTC)[responder]


No entiendo lo que quieres decir en ... La programación estructurada (llamada también "programación sin GOTO"). La programacion estructurada sigue un flujo imperativo (podiamos decir de principio a fin)que puede ser alterado por los resultados en sentencias condicionales (IF THEN ELSE, DO WHILE, etc.) pero GOTO, aunque ha sido mejorado por GOSUB, CALL Y OTRAS, se sigue usando, y aparece implementado en, por lo menos, la ultima version (la 7) de Quick Basic, resultando todavía un recurso útil en algunos casos. Rafael Soriano

Creo que el teorema al que haces referencia se denomina Teorema de Jacopini-Bohm, y por tanto no es de Dijkstra.

Yo no creo que tenga mucho sentido lo de "la programación orientada a objetos se enfoca en reducir la cantidad de estructuras de control y reemplazarlo con el concepto de polimorfismo.". En la se cambia la estructura interna del programa, no el control. Podemos decir que herencia y polimorfismo aportan un control implícito, pero no que lo reemplacen.

Ahondando en lo que dice Rafael Soriano. El rechazo del GOTO en la programación estructurada es más de cara a poder garantizar razonablemente que el programa hace lo que se supone que hace. El problema del goto es que si a un punto dado se puede llegar desde cualquier otro, no se puede establecer a priori ningún tipo de garantía sobre el estado del programa en la ejecución de la instrucción de destino. Aún así, hay situaciones en las que es la opción menos mala. Quedarse en que la programación estructurada es no usar GOTOs es un error. Eso es una parte anecdótica. La programación estructurada es estructurada porque el programa se estructura en diferentes capas, lo que proporciona niveles de abstracción al programador y potencialmente más limpia.

== Procedimientos y funciones en programación estructurada ==[editar]

El artículo parece indicar que las subrutinas (procedimientos y funciones) no son parte de la programación estructurada. Yo tengo entendido que sí (así lo aprendí y lo enseño en la Universidad). ¿En qué se basan los que dicen que no? --Tute 04:14 14 dic 2006 (CET)

Programas para ordenador o programas para programador[editar]

Yo fui informático en una vida anterior. Me libré por poco de las fichas perforadas y caí literalmente en un mundo donde nadie, ni yo mismo, sabía lo que era un ordenador, aunque éstos ya usaban discos magnéticos. Los programas se hacían para el ordenador y cada bit de memoria era un tesoro que había que ahorrar al máximo. Poco a poco las cosas cambiaron y uno podía dedicar más tiempo de máquina a programar y compilar. Empezaba a ser conveniente documentar los programas. El ordenador pasaba olímpicamente de los comentarios que se incluían en los programas fuente, pero se suponía que era una descortesía no explicar un bloque de código intrincado. Cuando escribes código que otra persona debe entender ya empiezas a hacerlo de otra manera. La programación estructurada consiste en que dentro de los bloques de código no haya bifurcaciones. Por su parte, la programación modular establece la separación entre el código de control y el de ejecución de los objetivos del programa, así como persigue el principio de evitar código redundante. Siempre oí que no había que usar GOTO (perdón por el grito, pero siempre programé con mayúsculas). Pero nunca he escuchado un argumento convincente. Soy partidario de la programación estructurada y modular, así como del uso de todas las herramientas al alcance. Cuando sea necesario usar GOTO, úsese.

Definición[editar]

"Utilizando únicamente subrutinas y tres estructuras: secuencia, selección (if y switch) e iteración (bucles for y while)"

Error. La programación estructurada, es una forma de pensar el programa. "Utilizando únicamente .. if, switch, for, while" Uno puede programar estructuradamente sin usar if, switch, etc..

En assembler no existe el IF directamente. Y vaya si no hay programas estructurados..