Please enable JavaScript.
Coggle requires JavaScript to display documents.
Revisión a las Técnicas de Programación - Coggle Diagram
Revisión a las Técnicas de Programación
En términos generales, podemos distinguir la siguiente curva de aprendizaje de alguien que aprende a programar :
Programación no Estructurada.
Programación procedimental.
programación modular y
programación orientada a objetos.
Programación no Estructurada
Comúnmente, las personas empiezan a aprender a programar escribiendo programas pequeños y sencillos consistentes en un solo programa principal. Aquí "programa principal" se refiere a una secuencia de comandos o instrucciones que modifican datos que son a su vez globales en el transcurso de todo el programa.
Programación Procedimental
Con la programación procedimental tú puedes combinar las secuencias de instrucciones repetibles en un solo lugar. Una llamada de procedimiento se utiliza para invocar al procedimiento. Después de que la secuencia es procesada, el flujo de control procede exactamente después de la posición donde la llamada fue hecha
Programación Modular
En la programación modular, los procedimientos con una funcionalidad común son agrupados en módulos separados. Un programa por consiguiente, ya no consiste solamente de una sección. Ahora está dividido en varias secciones más pequeñas que interactúan a través de llamadas a procedimientos y que integran el programa en su totalidad.
Un ejemplo con Estructuras de Datos
Los programas usan estructuras de datos para almacenar información. Existen varias estructuras de datos, por ejemplo listas, árboles, arreglos, juegos, bags o colas, para nombrar unos pocos.
Manejo de Listas Sencillas
Todos ustedes conocen las listas ligadas sencillas, las cuáles usan una estructura muy simple, consistente en elementos que son empatados uno junto al otro, tal como se muestra
Manejo de Listas Múltiples
Este manejador se usa en cada procedimiento provisto para identificar en forma unívoca la lista en cuestión. El archivo de definición de interface de tu nuevo módulo de lista tiene el siguiente aspecto :
/*
Un módulo de lista para más de una lista.
*/
MODULE Singly-Linked-List-2
DECLARE TYPE list_handle_t;
list_handle_t list_create();
list_destroy(list_handle_t this);
BOOL list_append(list_handle_t this, ANY data);
ANY list_getFirst(list_handle_t this);
ANY list_getNext(list_handle_t this);
BOOL list_isEmpty(list_handle_t this);
END Singly-Linked-List-2;
Problemas de la Programación Modular
Creación y Destrucción Explícitas
En el ejemplo, cada vez que quieres usar una lista, tienes que declarar explícitamente un manejador y hacer una llamada a list_create() para obtener un manejador de lista válido.
Si quieres usar una lista dentro de un procedimiento, digamos, foo() , usas el siguiente esqueleto de código :
PROCEDURE foo() BEGIN
list_handle_t myList;
myList <- list_create();
/
Do something with myList
/
...
list_destroy(myList);
END
Datos y Operaciones Desacoplados
El desacoplamiento de datos y operaciones conduce usualmente a una estructura basada en las operaciones en lugar de en los datos : Los Módulos agrupan las operaciones comunes (tales como aquéllas operaciones list_...()) en forma conjunta.
Omisiones en la Consistencia de Datos
En nuestro ejemplo de la lista, tenemos que usar un tipo especial ANY para permitir a la lista contener cualquier dato que gustemos. Esto implica que el compilador no puede garantizar la consistencia de los tipos de datos. Considera el siguiente ejemplo que el compilador no puede checar si es correcto :
PROCEDURE foo() BEGIN
SomeDataType data1;
SomeOtherType data2;
list_handle_t myList;
myList <- list_create();
list_append(myList, data1);
list_append(myList, data2); /
Oops
/
...
list_destroy(myList);
END
Programación Orientada a Objetos
La programación orientada a objetos resuelve algunos de los problemas que se acaban de mencionar. En contraste con las otras técnicas, ahora tenemos una telaraña de objetos interactuantes, cada uno de los cuáles manteniendo su propio estado