Tipos de módulos
En programación un módulo es una porción de un programa de ordenador. De
las varias tareas que debe realizar un programa para cumplir con su función u
objetivos, un módulo realizará, comúnmente, una de dichas tareas (o varias, en
algún caso).
En general (no necesariamente relacionado con la programación), un módulo
recibe como entrada la salida que haya proporcionado otro módulo o los datos
de entrada al sistema(programa) si se trata del módulo principal de éste; y
proporcionará una salida que, a su vez, podrá ser utilizada como entrada de
otro un módulo o bien contribuirá directamente a la salida final del sistema
(programa), si se retorna al módulo principal.
Particularmente, en el caso de la programación, los módulos suelen estar (no
necesariamente) organizados jerárquicamente en niveles, de forma que hay un
módulo principal que realiza las llamadas oportunas a los módulos de nivel
inferior.
Cuando un módulo es convocado, recibe como entrada los datos
proporcionados por otro del mismo o superior nivel, el que ha hecho la llamada;
luego realiza su tarea. A su vez este módulo convocado puede llamar a otro u
otros módulos de nivel inferior si fuera necesario; cuando ellos finalizan sus
tareas, devuelven la salida pertinente al módulo inmediato llamador, en
secuencia reversa, finalmente se continúa con la ejecución del módulo
principal.
Características de un módulo
Cada uno de los módulos de un programa idealmente debería cumplir las
siguientes características:
Tamaño relativamente pequeño.- Esto facilita aislar el impacto que
pueda tener la realización de un cambio en el programa, bien para
corregir un error, o bien por rediseño del algoritmo correspondiente.
Independencia modular.- Cuanto más independientes son los módulos
entre sí más fácil y flexiblemente se trabajará con ellos, esto implica que
para desarrollar un módulo no es necesario conocer detalles internos de
otros módulos. Como consecuencia de laindependencia modular un
módulo cumplirá:
Características de caja negra, es decir abstracción.
Aislamiento de los detalles mediante encapsulamiento.
La independencia modular mejora el rendimiento humano, pudiendo realizarse
programación en equipo y desarrollar módulos paralelamente. También
contribuye a la reutilización de software.
Definición de funciones
En programación, una función es una sección de un programa que
calcula un valor de manera independiente al resto del programa.
En esencia, una función es un mini programa: tiene una entrada, un
proceso y una salida.
Una función tiene tres componentes importantes:
los parámetros, que son los valores que recibe la función
como entrada;
el código de la función, que son las operaciones que realiza la
función; y
el resultado o valor de retorno, que es el valor final que
entrega la función.
En un programa Pascal, las funciones deben ser definidas antes
delbegin que indica el comienzo del programa.
Variables locales y globales
Las variables que son declaradas en una función se llaman variables
locales. Ellas existen sólo mientras la función es llamada. Una vez
que la función entrega su resultado, las variables locales dejan de
existir, y no pueden ser utilizadas desde el resto del programa. Los
parámetros de la función también son variables locales.
Las variables que son declaradas en la sección var del programa se
llaman variables globales, y pueden ser utilizadas en cualquier
parte del programa, incluso dentro de una función.
Ventajas del uso de procedimientos y funciones
Las funciones y procedimientos son dos de las herramientas de la caja de
herramientas de cada programador que le permiten escribir un código más
eficiente. Mientras que puede ser un inconveniente el uso de estas opciones de
programación, las ventajas superan con mucho cualquier desventaja. Mediante
la implementación de funciones y procedimientos en tu programa, el
programador reduce el tiempo de codificación y el tiempo de depuración,
reduciendo así el tiempo total de desarrollo.
Procedimientos y funciones
Los procedimientos y funciones operan sobre el mismo principio de escribir un
pequeño fragmento de código que se puede llamar, en lugar de escribir el mismo
código en varios lugares en tu programa. Esta práctica, por lo menos, reduce el
tamaño del programa, y normalmente mejora la legibilidad del programa. La
mayoría de los lenguajes de programación contienen funciones incorporadas, y
apoyan la capacidad para crear procedimientos y funciones en tu código.
Reducción del tiempo de codificación
Una ventaja de utilizar funciones y procedimientos es que el tiempo de codificación
se reduce. Si sólo tienes que escribir una rutina una vez y sentencias de código que
la llaman, te ahorras tiempo de codificación de la misma rutina varias veces, incluso
si optas por cortar y pegar la rutina. La reducción del tiempo de codificación ayuda
a reducir el tiempo de entrega del proyecto.
Reducción del tiempo de depuración
Además de reducir el tiempo de programación, utilizar procedimientos y funciones
ayuda a reducir el tiempo de depuración. Cuando se pone el mismo código en varios
lugares, a veces es difícil hacer cambios de depuración en todos esos lugares. Si
haces el cambio a un solo lugar, pero no lo haces en los otros dos lugares, es fácil
confundirse. Esto hace que sea difícil encontrar el problema y eliminarlo de todos
los lugares del programa.
Efectos de mantenimiento
Los efectos sobre el mantenimiento del programa, que es la más costosa de las
etapas de desarrollo, pueden ser tanto buenos como malos. Al igual que con la
depuración, si el problema se encuentra en un procedimiento llamado, entonces
puedes encontrarlo una vez y eliminarlo rápidamente. Sin embargo, si el
programador que escribió el código, usó procedimientos y funciones en exceso, el
programa puede ser más difícil de entender. Entre más difícil sea de entender, más
tiempo se necesita para arreglar un programa.
ARREGLOS
Un arreglo es un conjunto de datos o una estructura de datos homogéneos
que se encuentran ubicados en forma consecutiva en la memoria RAM (sirve
para almacenar datos en forma temporal).
Definición
Un arreglo puede definirse como un grupo o una colección finita, homogénea y
ordenada de elementos. Los arreglos pueden ser de los siguientes tipos:
De una dimensión.
De dos dimensiones.
De tres o más dimensiones.
Tipos de arreglos
Arreglos unidimensionales.
Arreglos multidimensionales.
Arreglo con múltiple subíndices.
Arreglos unidimensionales
Es un tipo de datos estructurado que está formado de una colección finita y
ordenada de datos del mismo tipo. Es la estructura natural para modelar listas
de elementos iguales. Están formados por un conjunto de elementos de un
mismo tipo de datos que se almacenan bajo un mismo nombre, y se diferencian
por la posición que tiene cada elemento dentro del arreglo de datos. Al declarar
un arreglo, se debe inicializar sus elementos antes de utilizarlos. Para declarar
un arreglo tiene que indicar su tipo, un nombre único y la cantidad de
elementos que va a contener.
Arreglos multidimensionales
Es un tipo de dato estructurado, que está compuesto por dimensiones. Para
hacer referencia a cada componente del arreglo es necesario utilizar n índices,
uno para cada dimensión. El término dimensión representa el número de
índices utilizados para referirse a un elemento particular en el arreglo. Los
arreglos de más de una dimensión se llaman arreglos multidimensionales.
Arreglos con múltiple subíndices
Es la representación de tablas de valores, consistiendo de información
arreglada en renglones y columnas. Para identificar un elemento particular de
la tabla, deberemos de especificar dos subíndices; el primero identifica el
renglón del elemento y el segundo identifica la columna del elemento. A los
arreglos que requieren dos subíndices para identificar un elemento en particular
se conocen como arreglo de doble subíndice. Note que los arreglos de
múltiples subíndices pueden tener más de dos subíndices. El estándar ANSI
indica que un sistema ANSI C debe soportar por lo menos 12 subíndices de
arreglo.
Operaciones con arreglos
Las operaciones en arreglos pueden clasificarse de la siguiente forma:
Lectura: este proceso consiste en leer un dato de un arreglo y asignar un
valor a cada uno de sus componentes
Escritura: Consiste en asignarle un valor a cada elemento del arreglo.
Asignación: No es posible asignar directamente un valor a todo el arreglo
Actualización: Dentro de esta operación se encuentran las operaciones de
eliminar, insertar y modificar datos. Para realizar este tipo de operaciones
se debe tomar en cuenta si el arreglo está o no ordenado.
Ordenación.
Búsqueda.
Insertar.
Borrar.
Modificar.
Ordenaciones en Arreglos
La importancia de mantener nuestros arreglos ordenados radica en que es
mucho más rápido tener acceso a un dato en un arreglo ordenado que en uno
desordenado.
Existen muchos algoritmos para la ordenación de elementos en arreglos,
algunos de ellos son:
Selección directa
Este método consiste en seleccionar el elemento más pequeño de nuestra lista
para colocarlo al inicio y así excluirlo de la lista. Para ahorrar espacio, siempre
que vayamos a colocar un elemento en su posición correcta lo
intercambiaremos por aquel que la esté ocupando en ese momento.
Ordenación por burbuja
Es el método de ordenación más utilizado por su fácil comprensión y
programación, pero es importante señalar que es el más ineficiente de todos
los métodos. Este método consiste en llevar los elementos menores a la
izquierda del arreglo ó los mayores a la derecha del mismo. La idea básica del
algoritmo es comparar pares de elementos adyacentes e intercambiarlos entre
sí hasta que todos se encuentren ordenados.
Ordenación por mezcla
Este algoritmo consiste en partir el arreglo por la mitad, ordenar la mitad
izquierda, ordenar la mitad derecha y mezclar las dos mitades ordenadas en un
array ordenado. Este último paso consiste en ir comparando pares sucesivos
de elementos (uno de cada mitad) y poniendo el valor más pequeño en el
siguiente hueco.
Algoritmos de búsqueda que existen
Búsquedas en Arreglos: Una búsqueda es el proceso mediante el cual
podemos localizar un elemento con un valor específico dentro de un
conjunto de datos. Terminamos con éxito la búsqueda cuando el elemento
es encontrado.
Búsqueda secuencial: A este método también se le conoce como
búsqueda lineal y consiste en empezar al inicio del conjunto de elementos,
e ir a través de ellos hasta encontrar el elemento indicado ó hasta llegar al
final de arreglo. Este es el método de búsqueda más lento, pero si nuestro
arreglo se encuentra completamente desordenado es el único que nos
podrá ayudar a encontrar el dato que buscamos.
Búsqueda binaria: Las condiciones que debe cumplir el arreglo para poder
usar búsqueda binaria son que el arreglo este ordenado y que se conozca
el número de elementos. Este método consiste en lo siguiente: comparar el
elemento buscado con el elemento situado en la mitad del arreglo, si
tenemos suerte y los dos valores coinciden, en ese momento la búsqueda
termina. Pero como existe un alto porcentaje de que esto no ocurra,
repetiremos los pasos anteriores en la mitad inferior del arreglo si el
elemento que buscamos resulto menor que el de la mitad del arreglo, o en
la mitad superior si el elemento buscado fue mayor. La búsqueda termina
cuando encontramos el elemento o cuando el tamaño del arreglo a
examinar sea cero.
Búsqueda por hash: La idea principal de este método consiste en aplicar
una función que traduce el valor del elemento buscado en un rango de
direcciones relativas. Una desventaja importante de este método es que
puede ocasionar colisiones.