1. MODULO
En programación un módulo es una porción de un programa de computadora. De las varias tareas que
debe realizar un programa para cumplir con su función u objetivos, un módulo realizará una de dichas
tareas. En general 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 módulo o bien contribuirá directamente a la
salida final del sistema (programa), si se retorna al módulo principal.
En programación, los módulos suelen estar 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
nivel o de nivel superior, el que ha hecho la llamada; luego realiza su tarea.
A su vez este módulo
A su vez este módulo
convocado puede llamar a otro u otros módulos de nivel inferior si fuera necesario; cuando ellos
finalizan su tarea, devuelven la salida pertinente al módulo inmediato llamador, en secuencia reversa,
finalmente se continúa con la ejecución del módulo principal.
En un lenguaje de programación un modulo se puede llamar procedimiento o función.
2. PROCEDIMIENTOS Y FUNCIONES
Las funciones y los procedimientos son conjuntos de instrucciones que realizar una tarea en particular
y permiten crear programas complejos, mediante un reparto de tareas que permite construir el
programa de forma estructurada y modular.
Desde un punto de vista académico, se entiende por procedimiento el conjunto de sentencias a las
que se asocia un identificador (un nombre), y que realiza una tarea que se conoce por los cambios
que ejerce sobre el conjunto de variables.
Y entendemos por función el conjunto de sentencias a las que se asocia un identificador (un nombre)
y que genera un valor nuevo, calculado a partir de los argumentos que recibe.
Los elementos que componen un procedimiento o función son:
1. Un identificador, que es el nombre que sirve para invocar a esa función o a ese
procedimiento.
2. Una lista de parámetros, que es el conjunto de variables que se facilitan al procedimiento o
función para que realice su tarea modularizada. Al hacer la abstracción del sistema, y
modularlo en partes más accesibles, hay que especificar los parámetros formales que
permiten la comunicación y definen el dominio (tipo de dato) de los datos de entrada. Esa lista
de parámetros define el modo en que podrán comunicarse el programa que utiliza la función y
la función usada.
3. Un cuerpo o conjunto de sentencias. Las necesarias para poder realizar la tarea para la que
ha sido definida la función o el procedimiento. Dentro de las sentencias también se encuentran
las declaraciones de variables locales.
4. Un entorno. Entendemos por entorno el conjunto de variables globales al procedimiento o
función, que pueden ser usadas y modificadas dentro del ámbito de la función. Esas variables,
por ser globales y por tanto definidas en un ámbito más amplio al ámbito local de la función,
no necesitan ser explicitadas en la lista de parámetros de la función.
Es una práctica desaconsejable trabajar con el entorno de la función desde el ámbito local de la
función. Hacerlo lleva consigo que esa función deja de ser independiente de ese entorno y, por tanto,
deja de ser exportable. Perderíamos entonces el valor de la independencia funcional, que es una de
las propiedades de la programación por módulos.
Podemos pues concluir que el uso de variables globales dentro del cuerpo de un procedimiento o
función es altamente desaconsejable.
En el lenguaje C no se habla habitualmente de procedimientos, sino sólo de funciones. Pero existen
de las dos tipos de módulos. Procedimientos serían, por ejemplo, la función printf no se invoca para
calcular valores nuevos, sino para realizar una tarea sobre las variables. Más claro se ve con la
función scanf que, efectivamente, realiza una tarea que se conoce por los cambios que ejerce sobre
una variable concreta. Y funciones serían, por ejemplo, la función strlen, que a partir de una cadena
de caracteres que recibe como parámetro de entrada calcula un valor, que es la longitud de esa
cadena; o la función sin, que a partir de un ángulo que recibe como valor de entrada, calcula el seno
de ese ángulo como valor de salida.
En definitiva, una función o procedimiento es una porción de código, identificada con un nombre
concreto (su identificador), que realiza una tarea concreta, que puede ser entendida de forma
independiente al resto del programa, y que tiene muy bien determinado cómo se hace uso de ella, con
qué parámetros se la invoca y bajo qué condiciones puede ser usada, cuál es la tarea que lleva a
cabo, y cuál es el valor que calcula y devuelve.
Tanto los procedimientos como las funciones pueden ser vistos como cajas negras: un código del que
desconocemos sus sentencias, al que se le puede suministrar unos datos de entrada y obtener
modificaciones para esos valores de entrada y/o el cálculo de un nuevo valor, obtenido a partir de los
valores que ha recibido como entrada.
Con eso se consigue programas más cortos; que el código pueda ser usado más de una vez; mayor
facilidad para gestionar un correcto orden de ejecución de sentencias; que las variables tengan mayor
carácter local, y no puedan ser manipuladas fuera del ámbito para el que han sido creadas.
3. FUNCIONES EN C
3.1 QUE ES UNA FUNCIÓN
Una función, en C, es un segmento independiente de código fuente, diseñado para realizar una tarea
específica.
Las funciones son los elementos principales de un programa en C. Cada una de las funciones de un
programa constituye una unidad, capaz de realizar una tarea determinada. Quizá se podría decir que
un programa es simplemente un conjunto de definiciones de distintas funciones, empleadas luego de
forma estructurada.
La primera función que aparece en todo programa C es la función principal, o función main. Todo
programa ejecutable tiene una, y sólo una, función main. Un programa sin función principal no genera
un ejecutable. Y si todas las funciones se crean para poder ser utilizadas, la función principal es la
única que no puede ser usada por nadie: nadie puede invocar a la función principal de un programa.
Tampoco puede llamarse a sí misma.