Você está na página 1de 6

UNIVERSIDAD DE EL Salvador FACULTAD DE INGENIERA Y ARQUITECTURA ESCUELA DE INGENIERA DE SISTEMAS INFORMTICOS PROGRAMACIN I

COMO UTILIZAR MODULARIDAD EN C.


Para aprender a escribir en C un programa modular, debemos saber que un sub algoritmo (o mdulo) codificado en C se conoce como funcin; y, que todo programa en C est formado por una o varias funciones, la que no debe faltar nunca es la funcin principal o funcin main. Se hace necesario algunos nuevos: 1 recordar algunos conocimientos ya adquiridos y, desde luego, estudiaremos

Estructura de todo programa en C:


#include #define // Directivas del Preprocesador // Macros del procesador

Declaracin de funciones o Prototipos de funciones //propias del usuario

Declaracin de variables globales main() // Funcin Principal { Declaracin de variables locales; Sentencias; } Definicin de funciones propias del usuario

2 Funcin: Una funcin es un conjunto de sentencias que realizan una tarea especfica, dicho de otra manera, una funcin es la codificacin en C de un mdulo; puede ser llamada o invocada desde cualquier parte del programa y devuelven un nico valor o ninguno. Para codificar en C una funcin necesitamos de las siguientes acciones: Declarar la funcin Definir la funcin Invocar la funcin. 6.3 Parmetros de una Funcin: Los parmetros o argumentos de una funcin son los datos, con los que se declara, define y se invoca la misma, una funcin puede tener o no parmetros. Los parmetros se comportan como variables locales, crendose al entrar a la funcin y destruyndose al salir de ella; es decir que, los parmetros reciben sus valores del mdulo o funcin que invoca la funcin, y con estos valores se trabajara en la funcin. Parmetros Formales, son los nombres de las variables con que se declaran y definen las funciones, estos se listan dentro de parntesis, separados por comas y cada parmetro debe indicar su tipo de dato. Parmetros Actuales, son variables que contienen los valores con que se invoca una funcin, es decir, las variables (que contienen los valores) con que se va a ejecutar la funcin.

Paso de parmetros: Los parmetros pueden ser trasladados a la funcin por valor o referencia, en esta asignatura utilizaremos nicamente el paso de parmetros por valor. El paso de parmetros por valor se conoce tambin como paso por copia, y significa que cuando C ejecuta la funcin y la sentencia que invoca la funcin, la funcin recibe una copia de los valores de los parmetros, si se cambia un parmetro afecta slo la funcin y no tiene efecto fuera de ella.

4 Declaracin de una Funcin o Prototipo de la funcin: Con la declaracin una funcin indicamos que el programa trabaja con esa funcin. A la declaracin de una funcin se le conoce tambin como prototipo de la funcin. Un prototipo de funcin consta de los siguientes elementos: tipo de dato que devuelve la funcin, nombre de la misma, lista de argumentos o parmetros tipificados y un punto y coma, su escritura correcta se detalla a continuacin:

SINTAXIS del Prototipo de una funcin (o declaracin de una funcin):


Tipo_retorno En donde: Tipo_retorno: Nombre_funcin: Nombre_funcin (lista_de_declaracin_parmetros);

Es el tipo de dato del valor que devuelve la funcin: int, float, char, si no devuelve ningn valor se usa el tipo void. Nombre o identificador de la funcin, se deben de seguir las normas para cualquier identificador.

Lista_de_parmetros: Lista de las declaraciones de los parmetros que utiliza la funcin, separados por comas, conocidos como parmetros formales. Ejemplo: (int x, float y) Como ejemplo de la sintaxis de la declaracin de una funcin, mostramos el siguiente prototipo de la funcin suma, que trabaja con dos parmetros enteros (n1 y n2) devuelve un valor entero:

int suma (int n1, int n2);


Las funciones en C no se pueden anidar, lo que significa que una funcin no se puede declarar dentro de otra funcin; por lo tanto: TODAS LAS FUNCIONES UTILIZADAS EN UN PROGRAMA DEBEN SER DECLARADAS AL INICIO DE ESTE, DESPUS DE LAS MACROS DEL PREPROCESADOR y FUERA DE LA FUNCIN main()

5 Definicin de una Funcin: Cuando definimos una funcin, se hace despus de la funcin main, indicamos lnea por lnea que hace la funcin; es decir, contiene la codificacin de la solucin de un sub-problema. La definicin de una funcin consta de la cabecera de la funcin y, encerradas en llaves, el grupo de sentencias que detallan que hace. La primera lnea o cabecera es igual al prototipo de la funcin, pero sin el punto y coma al final. La estructura general de toda funcin se muestra a continuacin: Tipo_retorno nombre_Funcin (Lista_ Parmetros) { Declaraciones_variables_locales; Sentencias; return Expresin; } En donde: Tipo_retorno: Nombre_funcin: Lista_parmetros:

Tipo de valor que devuelve la funcin o void si no devuelve ninguno. Identificador de la funcin. Lista de declaraciones de los parmetros de la funcin separados por comas. sus tipos de datos, en la funcin.

Declaraciones_variables_locales: Detalle de las variables que se utilizan y

Sentencias: Expresin:

Cuerpo de la funcin. Valor que devuelve la funcin, normalmente es el nombre de una variable. La palabra return indica que el control de ejecucin se regrese al mdulo principal o que invoc. Y la expresin, es el valor a regregresar o valor de retorno; normalmente es una variable, pero puede tambin utilizarse una expresin que se evala y retorna el resultado.

Return Expresin:

Si la funcin no devuelve ningn valor, es de tipo void, en tal caso la lnea de return no es obligatoria, puede omitirse o escribir return; en ambos casos, el control de ejecucin regresa al mdulo (o funcin) que la invoc. Para ilustrar la definicin de una funcin utilizamos el siguiente ejemplo:
La siguiente funcin suma dos nmeros enteros, es la definicin del prototipo del ejemplo de la pgina 2.

int suma (int n1, int n2) { int sum; sum = n1+n2; return sum; }

// n1 y n2 son los parmetros

// devuelve el valor de sum

6 Invocacin o Llamada a una Funcin: Las funciones para poder ser ejecutadas, deben ser llamadas o invocadas dentro de cualquier parte del programa. Para llamar una funcin basta con escribir el nombre de la funcin y la lista de sus parmetros encerrados en parntesis, conocidos como parmetros actuales. En la siguiente sentencia o lnea de programa, se invoca la funcin suma, declarada en el ejemplo de pg. 9 y definida en el numeral 7 de esta misma pgina: total = suma(2, 3); En esta lnea se utiliz la funcin suma con los valores (parmetros actuales) 2 y 3; el resultado de la funcin es asignado a la variable total; es decir, que al finalizar la ejecucin de esa lnea, total toma el valor resultante de ejecutar la funcin suma; en este caso total tendr el valor de 5. Cualquier expresin puede contener una llamada a una funcin que dirige el control de ejecucin del programa a la funcin invocada. La funcin invocada o llamada recibe el control de ejecucin, se ejecuta desde el principio y cuando termina sta, el control del programa vuelve a la funcin main o la funcin que la llam si no es main, segn se muestra a continuacin: ... void funcion1 ( ); void funcion2 ( ); int main() { ...; funcion1 ( ); funcion2 ( ); ...; return 0; } void funcion1 ( ) { ... return 0; } void funcion2 ( ) { ...; return 0; }

El siguiente programa utiliza dos funciones que imprimen un mensaje, y se llaman desde la funcin principal, que tambin imprime otro mensaje:

#include <stdio.h> #include <conio.h> void funcion1 ( ); void funcion2 ( ); main( ) { puts (Esta es la FUNCION PRINCIPAL); funcion1( ); funcion2( ); getch(); return 0; }

// prototipos //funcin principal

//llamadas a funciones

//fin de funcion main

void funcion1 ( ) //definicin primera funcion { puts(Estamos en la FUNCION UNO); } void funcion2( ) //definicin segunda funcin { puts(Estamos en la FUNCION DOS), return; }
Ejemplo de un programa completo, que utiliza la funcin suma: El siguiente programa calcula el promedio de 2 nmeros, utiliza la funcin suma de las pginas 2 y 3 //Este programa calcula el promedio de dos nmeros #include <stdio.h> #include <conio.h> #define div 2.0 int suma(int n1, int n2); //declaracin de funcin suma main() { int total; float media; puts(digite dos nmeros positivos); scanf(%i %i, &a, &b); while ((a<=0) || (b<=0)) //validacin de datos { puts(debe ser positivo, digite de nuevo); scanf(%i %i, &a, &b); } total = suma(a,b) //invocacin a la funcin suma, el resultado de esta, se asigna a total. media= total/div; printf(\n La media es igual a: \t %.2f, media); getch(); return 0; }

int suma(int n1, int n2) { int sum; sum = n1 + n2; return sum; }

//Definicin de la funcin suma

NOTAS IMPORTANTES: Tipo de resultado: Es el tipo de dato que devuelve la funcin y aparece antes del nombre de la misma. Lista de parmetros: Es una lista de parmetros tipificados que utiliza la funcin. Cuerpo de la funcin: Se encierra entre llaves. No hay punto y como despus de la llave de cierre. No se pueden declarar funciones anidadas. Declaraciones locales: Las constantes y variables declaradas dentro de una funcin, son locales a la misma; por lo tanto se usan dentro de la misma y no existen fuera de ella. Antes de utilizar una funcin o de invocarla, debe ser declarada. La declaracin de una funcin contiene solo la cabecera de la misma, conocida tambin como prototipo. No se puede definir una funcin dentro de otra, las definiciones se hacen funcin por funcin y despus de la funcin principal.

Material editado por Milagro Castillo P. y Carolina Ayala de Hernndez. Ciclo II 2013