Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ASIGNATURA: Programación
TEMA: Modularidad
ING. QUÍMICA
La optimización de código es el
conjunto de fases de un
compilador que transforman un
fragmento de código en otro
fragmento con
un comportamiento
equivalente y que se ejecuta de
forma más eficiente, es decir,
usando menos recursos de cálculo como memoria o tiempo de ejecución. Es
importante destacar que:
Existen diferentes técnicas para optimizar el código, cada una de las cuales intenta
mejorar un aspecto diferenciado del código. En general pueden clasificarse en dos
categorías, las de flujo de datos (data-flow) y las de flujo de control (control-flow).
Las optimizaciones del flujo de datos pretenden mejorar la eficiencia de los
diferentes cálculos realizados en el programa: precalculando expresiones con valor
conocido en tiempo de compilación, reaprovechando cálculos ya realizados en otras
partes del código o suprimiendo cálculos innecesarios. Por contra, las
optimizaciones del flujo de control intentan utilizar las instrucciones de salto
condicional e incondicional de la forma más eficiente posible (ya sea desplazando
código o eliminando saltos innecesarios). Puede definirse también una tercera
categoría, las optimizaciones de bucles (loop optimization), intenta mejorar el
rendimiento de las instrucciones iterativas como for, while … do o repeat … until.
En este caso, los cambios realizados al código del bucle afectan tanto al flujo de
datos como al flujo de control.
La ventaja de todas estas técnicas es que se aplican de forma automática cada vez
que compilamos nuestro código, de forma que podemos centrarnos en hacer
nuestro código legible en lugar de intentar optimizar «a mano». Como dijo Donald
Knuth, «la optimización prematura es la raíz de todos los males». Dejemos a los
compiladores los detalles de bajo nivel y dediquémonos a diseñar un buen
algoritmo, que ya es un trabajo suficientemente complejo.
Esto implica que el gran problema original será resuelto por medio de varios
módulos, cada uno de los cuales se encarga de resolver un subproblema
determinado. Esos módulos, se conocen con el nombre de subalgoritmos.
Los subalgoritmos se escriben sólo una vez, luego es posible hacer referencia a
ellos ("llamarlos") desde diferentes puntos de un pseudo código. La ventaja obvia
es que nos permite reuGlización y evita la duplicación de códigos.
Una función es una expresión que toma uno o más valores llamados argumentos y
produce un valor que se llama resultado. Este resultado es además, único.
Esto hace que en los lenguajes de programación, debamos especificar de qué Gpo
es una función. Una función será de Gpo numérica cuando devuelva un número y
será de Gpo alfanumérica o string cuando devuelva una cadena
La llamada a una función MES que devuelva el nombre del mes, pasándole el valor
numérico correspondiente será: nombre_mes ß MES(2) (esto devolvería "Febrero")
4.4 Paso de argumentos.
Este tipo puede ser simulado en cualquier lenguaje que permita el paso de valores
por referencia de la siguiente forma:
Aquí se exponen unos ejemplos que demuestran las diferencias de estos tipos:
++a;
b += 2;
}
int a = 0;
función(a, a);