La Computación Avanzada es una disciplina que aborda los problemas de computación complejos
desde la perspectiva teórica y práctica. Considera los algoritmos, es decir, los procesos humanos o
automáticos para la transformación de datos como temas para su estudio sistemático. El objetivo
es entender sus limitaciones y potencial, y utilizar estos conocimientos para aportar soluciones
algorítmicas más innovadoras y eficientes.
La programación modular es un paradigma de programación que consiste en dividir un programa
en módulos o subprogramas con el fin de hacerlo más legible y manejable.
Al aplicar la programación modular, un problema complejo debe ser dividido en varios
subproblemas más simples, y estos a su vez en otros subproblemas más simples. Esto debe
hacerse hasta obtener subproblemas lo suficientemente simples como para poder ser resueltos
fácilmente con algún lenguaje de programación. Esta técnica se llama refinamiento sucesivo,
divide y vencerás o análisis descendente (Top-Down).
Un 'módulo' es cada una de las partes de un programa que resuelve uno de los subproblemas en
que se divide el problema complejo original. Cada uno de estos módulos tiene una tarea bien
definida y algunos necesitan de otros para poder operar. En caso de que un módulo necesite de
otro, puede comunicarse con éste mediante una interfaz de comunicación que también debe estar
bien definida.
Si bien un módulo puede entenderse como una parte de un programa en cualquiera de sus formas
y variados contextos, en la práctica se los suele tomar como sinónimos de procedimientos y
funciones. Pero no necesaria ni estrictamente un módulo es una función o un procedimiento, ya
que el mismo puede contener muchos de ellos. No debe confundirse el término "módulo" (en el
sentido de programación modular) con términos como "función" o "procedimiento", propios del
lenguaje que lo soporte.
La programación estructurada es un paradigma de programación orientado a mejorar la claridad,
calidad y tiempo de desarrollo de un programa de computadora recurriendo únicamente a
subrutinas y tres estructuras básicas: secuencia, selección (if y switch) e iteración (bucles for y
while); asimismo, se considera innecesario y contraproducente el uso de la instrucción de
transferencia incondicional (GOTO), que podría conducir a código espagueti, mucho más difícil de
seguir y de mantener, y fuente de numerosos errores de programación.
Programación Estructurada es una técnica en la cual la estructura de un programa, esto es, la
interpelación de sus partes realiza tan claramente como es posible mediante el uso de tres
estructuras lógicas de control:
1. Secuencia: Sucesión simple de dos o mas operaciones.
2. Selección: bifurcación condicional de una o mas operaciones.
3. Interacción: Repetición de una operación mientras se cumple una condición.
Estos tres tipos de estructuras lógicas de control pueden ser combinados para producir programas
que manejen cualquier tarea de procesamiento de información.
Un programa estructurado esta compuesto de segmentos, los cuales puedan estar constituidos
por unas pocas instrucciones o por una pagina o más de codificación. Cada segmento tiene
solamente una entrada y una salida, estos segmentos, asumiendo que no poseen lazos infinitos y
no tienen instrucciones que jamas se ejecuten, se denominan programas propios. Cuando varios
programas propios se combinan utilizando las tres estructuras básicas de control mencionadas
anteriormente, el resultado es también un programa propio.
La programación Estructurada esta basada en el Teorema de la Estructura, el cual establece que
cualquier programa propio (un programa con una entrada y una salida exclusivamente) es
equivalente a un programa que contiene solamente las estructuras lógicas mencionadas
anteriormente.
Una característica importante en un programa estructurado es que puede ser leído en secuencia,
desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple el programa, lo
contrario de lo que ocurre con otros estilos de programación. Esto es importante debido a que, es
mucho más fácil comprender completamente el trabajo que realiza una función determinada, si
todas las instrucciones que influyen en su acción están físicamente contiguas y encerradas por un
bloque. La facilidad de lectura, de comienzo a fin, es una consecuencia de utilizar solamente tres
estructuras de control y de eliminar la instrucción de desvío de flujo de control, excepto en
circunstancias muy especiales tales como la simulación de una estructura lógica de control en un
lenguaje de programación que no la posea.
Programación Orientada a Objetos, un paradigma de programación que permite desarrollar
aplicaciones complejas manteniendo un código más claro y manejable que otros paradigmas
anteriores.
La programación Orientada a objetos se define como un paradigma de la programación, una
manera de programar específica, donde se organiza el código en unidades denominadas clases, de
las cuales se crean objetos que se relacionan entre sí para conseguir los objetivos de las
aplicaciones.
La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a
como expresaríamos las cosas en la vida real que otros tipos de programación.
La POO no es difícil, pero es una manera especial de pensar, a veces subjetiva de quien la
programa, de manera que la forma de hacer las cosas puede ser diferente según el programador.
Aunque podamos hacer los programas de formas distintas, no todas ellas son correctas, lo difícil
no es programar orientado a objetos sino programar bien. Programar bien es importante porque
así nos podemos aprovechar de todas las ventajas de la POO.