You are on page 1of 11

PROGRAMACION UNIDAD III: FUNCIONES APUNTES

3.1 Funcin

3.1.1 Definicin de funcin Una funcin es un fragmento de cdigo que realiza una tarea bien definida. Por ejemplo, la funcin printf imprime por la salida estndar los argumentos que le pasamos. Al igual que esta funcin, existen otras funciones que realizan diversas tareas ya definidas en el estndar ANSI C y que pueden ser utilizadas por el programador. Este tipo de funciones predefinidas son denominadas funciones de biblioteca. Sin embargo, cada programador puede definir sus propias funciones de acuerdo a sus necesidades. Las funciones que define el programador son conocidas como funciones de usuario. La utilizacin de funciones nos permite dividir un programa extenso en pequeos segmentos que realizan tareas concretas. Probablemente, dentro de un mismo programa se realicen las mismas tareas varias veces, lo que se facilita mediante la utilizacin de funciones. Sin embargo, es probable que ciertas funciones no sean reutilizables, pero al usarlas se mejora la legibilidad del programa. La filosofa en la que se base el diseo de C es el empleo de funciones. Por esta razn, un programa en C contiene al menos una funcin, la funcin main. Esta funcin es particular dado que la ejecucin del programa se inicia con las instrucciones contenidas en su interior. Una vez iniciada la ejecucin del programa, desde la funcin main se puede llamar a otras funciones y, posiblemente, desde estas funciones a otras. Otra particularidad de la funcin main es que se llama directamente desde el sistema operativo y no desde ninguna otra funcin. De esta manera, un programa en C slo puede contener una funcin main. Con el propsito de permitir un manejo eficiente de los datos, las funciones en C no se pueden anidar. En otras palabras, una funcin no se puede declarar dentro de otra funcin, por lo que todas las funciones son globales o externas, lo que hace que puedan llamarse desde cualquier parte de un programa.

3.1.2 Estructura de una funcin La estructura general de una funcin en C es la siguiente: tipo_de_retorno nombre_de_la_funcin (lista_de_parmetros) { cuerpo_de_la_funcin return expresin } Donde: tipo_de_retorno: es el tipo del valor devuelto por la funcin, o, en caso de que la funcin no devuelva valor alguno, la palabra reservada void. nombre_de_la_funcin: es el nombre o identificador asignado a la funcin. lista_de_parmetros: es la lista de declaracin de los parmetros que son pasados a la funcin. stos se separan por comas. Debemos tener en cuenta que pueden existir funciones que no utilicen parmetros. cuerpo_de_la_funcin: est compuesto por un conjunto de sentencias que llevan a cabo la tarea especfica para la cual ha sido creada la funcin. return expresin: mediante la palabra reservada return, se devuelve el valor de la funcin, en este caso representado por expresin. Vamos a suponer que queremos crear un programa para calcular el precio de un producto basndose en el precio base del mismo y el impuesto aplicable. A continuacin mostramos el cdigo fuente de dicho programa:

L.I. Hilda Olivia Albarrn Padilla http://www.mcgraw-hill.es/bcv/guide/capitulo/8448148681.pdf http://informatica.uv.es/mguia/asignatu/INF/2003_04/PR8/pract08_2003.pdf

Pgina 1

PROGRAMACION UNIDAD III: FUNCIONES APUNTES #include <stdio.h> float precio(float base, float impuesto); /* declaracin */ main() { float importe = 2.5; float tasa = 0.07; printf("El precio a pagar es: %.2f\n", precio(importe, tasa)); return 0; } float precio(float base, float impuesto) /* definicin */ { float calculo; calculo = base + (base * impuesto); return calculo; } El ejemplo anterior se compone de dos funciones, la funcin requerida main y la funcin creada por el usuario precio, que calcula el precio de un producto tomando como parmetros su precio base y el impuesto aplicable. La funcin precio calcula el precio de un producto sumndole el impuesto correspondiente al precio base y devuelve el valor calculado mediante la sentencia return. Por otra parte, en la funcin main declaramos dos variables de tipo float que contienen el precio base del producto y el impuesto aplicable. La siguiente sentencia dentro de la funcin main es la llamada a la funcin de biblioteca printf, que recibe como par-metro una llamada a la funcin precio, que devuelve un valor de tipo float. De esta manera, la funcin printf imprime por la salida estndar el valor devuelto por la funcin precio. Es importante tener en cuenta que las variables importe y tasa (argumentos) dentro de la funcin main tienen una correspondencia con las variables base e impuesto (parmetros) dentro de la funcin precio respectivamente. En el ejemplo anterior, justo antes de la funcin main, hemos declarado la funcin precio. La intencin es que la funcin main sea capaz de reconocerla. Sin embargo, la definicin de dicha funcin aparece despus de la funcin main. Las definiciones de funcin pueden aparecer en cualquier orden dentro de uno o ms ficheros fuentes. Ms adelante, en esta unidad, veremos en detalle la declaracin y definicin de funciones. Por otra parte, hemos aadido la sentencia return 0 al final de la funcin main, puesto que se trata de una funcin como otra cualquiera y puede devolver un valor a quien le ha llamado, en este caso el entorno en el que se ejecuta el programa. Generalmente, el valor 0 implica un fin de ejecucin normal, mientras que otro valor diferente implica un final de ejecucin inusual o errneo. Antes de empezar a utilizar una funcin debemos declararla. La declaracin de una funcin se conoce tambin como prototipo de la funcin. En el prototipo de una funcin se tienen que especificar los parmetros de la funcin, as como el tipo de dato que devuelve. Los prototipos de las funciones que se utilizan en un programa se incluyen generalmente en la cabecera del programa y presentan la siguiente sintaxis: tipo_de_retorno nombre_de_la_funcin(lista_de_parmetros); En el prototipo de una funcin no se especifican las sentencias que forman parte de la misma, sino sus caractersticas. Por ejemplo: int cubo(int numero); En este caso se declara la funcin cubo que recibe como parmetro una variable de tipo entero (numero) y devuelve un valor del mismo tipo. En ningn momento estamos especificando qu se va a hacer con la variable nmero, slo declaramos las caractersticas de la funcin cubo. Cabe sealar que el nombre de los parmetros es opcional y se utiliza para mejorar la comprensin del cdigo fuente. De esta manera, el prototipo de la funcin cubo podra expresarse de la siguiente manera: L.I. Hilda Olivia Albarrn Padilla http://www.mcgraw-hill.es/bcv/guide/capitulo/8448148681.pdf http://informatica.uv.es/mguia/asignatu/INF/2003_04/PR8/pract08_2003.pdf Pgina 2

PROGRAMACION UNIDAD III: FUNCIONES APUNTES int cubo(int); Los prototipos de las funciones son utilizados por el compilador para verificar que se accede a la funcin de la manera adecuada con respecto al nmero y tipo de parmetros, y al tipo de valor de retorno de la misma. Veamos algunos ejemplos de prototipos de funciones: int potencia(int base, int exponente); double area_rectangulo (float base, float altura); int mayor(int, int); struct direccion entrada(void); Las funciones de biblioteca se declaran en lo que se conocen como ficheros de cabecera o ficheros .h (del ingls headers, cabeceras). Cuando deseamos utilizar alguna de las funciones de biblioteca, debemos especificar el fichero .h en que se encuentra declarada la funcin, al inicio de nuestro programa. Por ejemplo, si deseamos utilizar la funcin printf en nuestro programa, debemos incluir el fichero stdio.h que contiene el prototipo de esta funcin.

Definicin de funciones
Tras declarar una funcin, el siguiente paso es implementarla. Generalmente, este paso se conoce como definicin. Es precisamente en la definicin de una funcin donde se especifican las instrucciones que forman parte de la misma y que se utilizan para llevar a cabo la tarea especfica de la funcin. La definicin de una funcin consta de dos partes, el encabezado y el cuerpo de la funcin. En el encabezado de la funcin, al igual que en el prototipo de la misma, se tienen que especificar los parmetros de la funcin, si los utiliza y el tipo de datos que devuelve, mientras que el cuerpo se compone de las instrucciones necesarias para realizar la tarea para la cual se crea la funcin. La sintaxis de la definicin de una funcin es la siguiente: tipo_de_retorno nombre_de_la_funcin(lista_de_parmetros) { sentencias; } El tipo_de_retorno representa el tipo de dato del valor que devuelve la funcin. Este tipo debe ser uno de los tipos simples de C, un puntero a un tipo de C o bien un tipo struct. De forma predeterminada, se considera que toda funcin devuelve un tipo entero (int). En otras palabras, si en la declaracin o en la definicin de una funcin no se especifica el tipo_de_retorno, el compilador asume que devuelve un valor de tipo int. El nombre_de_la_funcin representa el nombre que se le asigna a la funcin. Se recomienda que el nombre de la funcin est relacionado con la tarea que lleva a cabo. En caso de que la funcin utilice parmetros, stos deben estar listados entre parntesis a continuacin del nombre de la funcin, especificando el tipo de dato y el nombre de cada parmetro. En caso de que una funcin no utilice parmetros, se pueden dejar los parntesis vacos o incluir la palabra void, que indica que la funcin no utiliza parmetros. Despus del encabezado de la funcin, debe aparecer, delimitado por llaves ({ y }), el cuerpo de la funcin compuesto por las sentencias que llevan a cabo la tarea especfica de la funcin. Veamos la definicin de la funcin cubo declarada en el apartado anterior: int cubo(int base) { int potencia; potencia = base * base * base; return potencia; } L.I. Hilda Olivia Albarrn Padilla http://www.mcgraw-hill.es/bcv/guide/capitulo/8448148681.pdf http://informatica.uv.es/mguia/asignatu/INF/2003_04/PR8/pract08_2003.pdf Pgina 3

PROGRAMACION UNIDAD III: FUNCIONES APUNTES Como ya hemos visto, a los argumentos que recibe la funcin tambin se les suele llamar parmetros. Sin embargo, algunos autores consideran como parmetros a la lista de variables entre parntesis utilizada en la declaracin o en la definicin de la funcin, y como argumentos los valores utilizados cuando se llama a la funcin. Tambin se utilizan los trminos argumentos formales y argumentos reales, respectivamente, para hacer esta distincin. Cuando un programa utiliza un nmero elevado de funciones, se suelen separar las declaraciones de funcin de las definiciones de las mismas. Al igual que con las funciones de biblioteca, las declaraciones pasan a formar parte de un fichero cabecera (extensin .h), mientras que las definiciones se almacenan en un fichero con el mismo nombre que el fichero .h, pero con la extensin .c. En algunas ocasiones, un programador no desea divulgar el cdigo fuente de sus funciones. En estos casos, se suele proporcionar al usuario el fichero de cabecera, el fichero compilado de las definiciones (con extensin .o, de objeto) y una documentacin de las mismas. De esta manera, cuando el usuario desea hacer uso de cualquiera de las funciones, sabe qu argumentos pasarle y qu tipo de datos devuelve, pero no tiene acceso a la definicin de las funciones. El siguiente programa calcula el cubo de los nmeros del 1 al 5 utilizando una funcin definida por el usuario. #include <stdio.h> int cubo(int base); main() { int numero; for(numero=1; numero<=5; numero++) { printf("El cubo del nmero %d es %d\n", numero, cubo(numero)); } return 0; } int cubo(int base) { int potencia; potencia = base * base * base; return potencia; } La salida es: El cubo del nmero 1 es 1 El cubo del nmero 2 es 8 El cubo del nmero 3 es 27 El cubo del nmero 4 es 64 El cubo del nmero 5 es 125 3.1.4 Valor de retorno Una funcin en C slo puede devolver un valor. Para devolver dicho valor, se utiliza la palabra reservada return cuya sintaxis es la siguiente: return <expresin>; Donde <expresin> puede ser cualquier tipo de dato salvo un array o una funcin. Adems, el valor de la expresin debe coincidir con el tipo de dato declarado en el prototipo de la funcin. Por otro lado, existe la posibilidad de devolver mltiples valores mediante la utilizacin de punteros o estructuras. Dentro de una L.I. Hilda Olivia Albarrn Padilla http://www.mcgraw-hill.es/bcv/guide/capitulo/8448148681.pdf http://informatica.uv.es/mguia/asignatu/INF/2003_04/PR8/pract08_2003.pdf Pgina 4

PROGRAMACION UNIDAD III: FUNCIONES APUNTES funcin pueden existir varios return dado que el programa devolver el control a la sentencia que ha llamado a la funcin en cuanto encuentre la primera sentencia return. Si no existen return, la ejecucin de la funcin contina hasta la llave del final del cuerpo de la funcin (}). Hay que tener en cuenta que existen funciones que no devuelven ningn valor. El tipo de dato devuelto por estas funciones puede ser void, considerado como un tipo especial de dato. En estos casos, la sentencia return se puede escribir como return o se puede omitir directamente. Por ejemplo: void imprime_cabecera(); { printf("esta funcin slo imprime esta lnea"); return; } equivale a: void imprime_cabecera(); { printf("esta funcin slo imprime esta lnea"); } 3.1.3 Llamada de funcin Para que una funcin realice la tarea para la cual fue creada, debemos acceder o llamar a la misma. Cuando se llama a una funcin dentro de una expresin, el control del programa se pasa a sta y slo regresa a la siguiente expresin de la que ha realizado la llamada cuando encuentra una instruccin return o, en su defecto, la llave de cierre al final de la funcin. Generalmente, se suele llamar a las funciones desde la funcin main, lo que no implica que dentro de una funcin se pueda acceder a otra funcin. Cuando queremos acceder a una funcin, debemos hacerlo mediante su nombre seguido de la lista de argumentos que utiliza dicha funcin encerrados entre parntesis. En caso de que la funcin a la que se quiere acceder no utilice argumentos, se deben colocar los parntesis vacos. Cualquier expresin puede contener una llamada a una funcin. Esta llamada puede ser parte de una expresin simple, como una asignacin, o puede ser uno de los operandos de una expresin ms compleja. Por ejemplo: a = cubo(2); calculo = b + c / cubo(3); Debemos recordar que los argumentos que utilizamos en la llamada a una funcin se denominan argumentos reales. Estos argumentos deben coincidir en el nmero y tipo con los argumentos formales o parmetros de la funcin. No olvidemos que los argumentos formales son los que se utilizan en la definicin y/o declaracin de una funcin. Los argumentos reales pueden ser variables, constantes o incluso expresiones ms complejas. El valor de cada argumento real en la llamada a una funcin se transfiere a dicha funcin y se le asigna al argumento formal correspondiente. Generalmente, cuando una funcin devuelve un valor, la llamada a la funcin suele estar dentro de una expresin de asignacin, como operando de una expresin compleja o como argumento real de otra funcin. Sin embargo, cuando la funcin no devuelve ningn valor, la llamada a la funcin suele aparecer sola. Veamos un ejemplo: z = potencia( a, b); imprime_valores (x, y, z); L.I. Hilda Olivia Albarrn Padilla http://www.mcgraw-hill.es/bcv/guide/capitulo/8448148681.pdf http://informatica.uv.es/mguia/asignatu/INF/2003_04/PR8/pract08_2003.pdf Pgina 5

PROGRAMACION UNIDAD III: FUNCIONES APUNTES Vamos a acceder a las funciones primera y segunda desde la funcin main. #include <stdio.h> void primera(void); void segunda(void); main() { printf("La primera funcin llamada, main\n"); primera(); segunda(); printf("Final de la funcin main\n"); return 0; } void primera(void) { printf("Llamada a la funcin primera\n"); return; } void segunda(void) { printf("Llamada a la funcin segunda\n"); return; } La salida es: La primera funcin llamada, main Llamada a la funcin primera Llamada a la funcin segunda Final de la funcin main 3.2 Parmetros 3.2.1 mbito de una variable mbito y clases de almacenamiento.- Como hemos visto en unidades anteriores, en C, las variables se pueden clasificar de acuerdo a su tipo de dato. Por ejemplo, una variable puede ser de tipo entero (int) o de tipo carcter (char). Sin embargo, las variables tambin pueden clasificarse de acuerdo a su mbito, es decir, la parte del programa en la que la variable es reconocida. De acuerdo con su mbito, las variables pueden ser locales o globales. Por otro lado, existen los modificadores de tipo o clases de almacenamiento que permiten modificar el mbito y la permanencia de una variable dentro de un programa. Existen cuatro modificadores de tipo, automtico, externo, esttico y registro, que se corresponden con las palabras reservadas auto, extern, static y register, respectivamente. Variables locales.- Cuando declaramos variables dentro de la funcin principal del programa, es decir, dentro de la funcin main, estn nicamente asociadas a esta funcin, en otras palabras, son variables locales de la funcin main y no se puede acceder a ellas a travs de ninguna otra funcin. Al igual que sucede con las variables declaradas dentro de la funcin main, cualquier variable que declaremos dentro de una funcin, es local a esa funcin, es decir, su mbito est confinado a dicha funcin. Esta situacin permite que existan variables con el mismo nombre en diferentes funciones y que no mantengan ninguna relacin entre s. L.I. Hilda Olivia Albarrn Padilla http://www.mcgraw-hill.es/bcv/guide/capitulo/8448148681.pdf http://informatica.uv.es/mguia/asignatu/INF/2003_04/PR8/pract08_2003.pdf Pgina 6

PROGRAMACION UNIDAD III: FUNCIONES APUNTES Debemos tener en cuenta que cualquier variable declarada dentro de una funcin se considera como una variable automtica (auto) a menos que utilicemos algn modificador de tipo. Una variable se considera automtica porque cuando se accede a la funcin se le asigna espacio en la memoria automticamente y se libera dicho espacio tan pronto se sale de la funcin. En otras palabras, una variable automtica no conserva un valor entre dos llamadas sucesivas a la misma funcin. Con el propsito de garantizar el contenido de las variables automticas, stas deben inicializarse al entrar a la funcin para evitar que su valor sea indeterminado. Todas las variables que hemos utilizado en los ejemplos vistos hasta ahora son variables automticas. La utilizacin de la palabra reservada auto es opcional, aunque normalmente no se utiliza, por ejemplo: auto int contador; equivale a int contador; Utilizacin del mismo identificador de variable en diferentes funciones mostrando su localidad. #include <stdio.h> void imprimeValor(); main() { int contador = 0; contador++; printf("El valor de contador es: %d\n", contador); imprimeValor(); printf("Ahora el valor de contador es: %d\n", contador); return 0; } void imprimeValor() { int contador = 5; printf("El valor de contador es: %d\n", contador); } La salida es: El valor de contador es: 1 El valor de contador es: 5 Ahora el valor de contador es: 1 VARIABLES GLOBALES A diferencia de las variables locales cuyo mbito estaba confinado a la funcin donde estaban declaradas, el mbito de las variables globales se extiende desde el punto en el que se definen hasta el final del programa. En otras palabras, si definimos una variable al principio del programa, cualquier funcin que forme parte de ste podr utilizarla simplemente haciendo uso de su nombre. La utilizacin de variables globales proporciona un mecanismo de intercambio de informacin entre funciones sin necesidad de utilizar argumentos. Por otra parte, las variables globales mantienen el valor que se les ha asignado dentro de su mbito, incluso despus de finalizar las funciones que modifican dicho valor. Debemos tener en cuenta que el uso de variables globales para el intercambio de informaciones entre funciones puede resultar til en algunas situaciones (como cuando se desea transferir ms de un valor desde una funcin), pero su utilizacin podra llevarnos a programas de difcil interpretacin y complejos de depurar. Utilizacin de variables globales como mecanismo de intercambio de informacin entre funciones. L.I. Hilda Olivia Albarrn Padilla http://www.mcgraw-hill.es/bcv/guide/capitulo/8448148681.pdf http://informatica.uv.es/mguia/asignatu/INF/2003_04/PR8/pract08_2003.pdf Pgina 7

PROGRAMACION UNIDAD III: FUNCIONES APUNTES #include <stdio.h> void unaFuncion(); void otraFuncion(); int variable; main() { variable = 9; printf("El valor de variable es: %d\n", variable); unaFuncion(); otraFuncion(); printf("Ahora el valor de variable es: %d\n", variable); return 0; } void unaFuncion() { printf("En la funcin unaFuncion, variable es: %d\n", variable); } void otraFuncion() { variable++; printf("En la funcin otraFuncion, variable es: %d\n",variable); } La salida es: El valor de variable es: 9 En la funcin unaFuncion, variable es: 9 En la funcin otraFuncion, variable es: 10 Ahora el valor de variable es: 10 Cuando trabajamos con variables globales debemos distinguir entre la definicin de una variable global y su declaracin. Cuando definimos una variable global, lo hacemos de la misma forma en que se declara una variable ordinaria. La definicin de una variable global se realiza fuera de cualquier funcin. Adems, las definiciones de variables globales suelen aparecer antes de cualquier funcin que desee utilizar dicha variable. La razn es que una variable global se identifica por la localizacin de su definicin dentro del programa. Cuando se define una variable global automticamente, se reserva memoria para el almacenamiento de sta. Adems, podemos asignarle un valor inicial a la misma. Si una funcin desea utilizar una variable global previamente definida, basta con utilizar su nombre sin realizar ningn tipo de declaracin especial dentro de la funcin. Sin embargo, si la definicin de la funcin aparece antes de la definicin de la variable global, se requiere incluir una declaracin de la variable global dentro de la funcin. Para declarar una variable global se utiliza la palabra reservada extern. Al utilizar extern, le estamos diciendo al compilador que el espacio de memoria de esa variable est definido en otro lugar. Es ms, en la declaracin de una variable externa (extern) no se puede incluir la asignacin de un valor a dicha variable. Por otro lado, el nombre y el tipo de dato utilizados en la declaracin de una variable global debe coincidir con el nombre y el tipo de dato de la variable global definida fuera de la funcin. Debemos recordar que slo se puede inicializar una variable global en su definicin. El valor inicial que se le asigne a la variable global debe expresarse como una constante y no como una expresin. Es importante sealar L.I. Hilda Olivia Albarrn Padilla http://www.mcgraw-hill.es/bcv/guide/capitulo/8448148681.pdf http://informatica.uv.es/mguia/asignatu/INF/2003_04/PR8/pract08_2003.pdf Pgina 8

PROGRAMACION UNIDAD III: FUNCIONES APUNTES que si no se asigna un valor inicial a la variable global, automticamente se le asigna el valor cero (0). De esta manera, las variables globales siempre cuentan con un valor inicial. Cabe sealar que la declaracin de una variable global puede hacer referencia a una variable que se encuentra definida en otro fichero. Por esta razn, podemos decir que el especificador de tipo extern hace referencia a una variable que ha sido definida en un lugar distinto al punto en el que se est declarando y donde se va a utilizar. En aplicaciones grandes compuestas de varios ficheros, es comn que las definiciones de variables globales estn agrupadas y separadas del resto de ficheros fuente. Cuando se desea utilizar cualquiera de las variables globales en un fichero fuente, se debe incluir el fichero en el que estn definidas las variables mediante la directiva de precompilacin #include Utilizacin del modificador de tipo extern. #include <stdio.h> void unaFuncion(); void otraFuncion(); main() { extern variable; variable = 9; printf("El valor de variable es: %d\n", variable); unaFuncion(); printf("Ahora el valor de variable es: %d\n", variable); return 0; } void unaFuncion() { extern variable; printf("En la funcin unaFuncin, variable es: %d\n", variable); } int variable; Su salida es: El valor de variable es: 9 En la funcin unaFuncion, variable es: 9 Ahora el valor de variable es: 9 3.2.2 Parmetros por valor 3.2.3 Parmetros por referencia Los parmetros de una funcin se pueden definir de dos maneras: Por valor o por referencia. Paso por valor: Este mtodo copia el valor de los argumentos sobre los parmetros formales, de manera que los cambios de valor de los parmetros no afectan a las variables utilizadas como argumentos en la llamada. Lo importante en el paso por valor es el valor del argumento, por eso es indiferente si este argumento es una variable, una constante o una expresin. Paso por referencia en C. A diferencia del paso por valor, en el paso por referencia los parmetros no copian el valor del argumento, sino que comparten su valor. Por lo que cuando cambia el valor del parmetro tambin cambia el valor de la variable utilizada como argumento en la llamada. L.I. Hilda Olivia Albarrn Padilla http://www.mcgraw-hill.es/bcv/guide/capitulo/8448148681.pdf http://informatica.uv.es/mguia/asignatu/INF/2003_04/PR8/pract08_2003.pdf Pgina 9

PROGRAMACION UNIDAD III: FUNCIONES APUNTES La forma de indicar un parmetro por referencia es anexar el smbolo & al final del nombre de la variable de tipo en la lista de parmetros formales, tanto en el prototipo de la funcin como en el encabezado de su definicin. NOTAS: En una misma funcin podemos utilizar parmetros por valor y parmetros por referencia. Utilizar el paso por referencia si queremos que la funcin modifique el valor de la variable y en caso contrario usar paso por valor. Cuando una funcin ha de devolver ms de un valor es normal devolverlos mediante el uso de argumentos de la funcin pasados por referencia. Los argumentos de una funcin pueden utilizarse de dos formas, bien simplemente pasamos el valor de una variable:
#include <stdio.h> #include <conio.h> void fn(int); int main() { int i=0; fn(i);

/*Le estamos pasando el valor de i, cero*/

printf("PASO POR VALOR: El valor de i sigue siendo %d",i); getch(); return 0; } void fn(int i) { i=10; }

O si por el contrario lo que buscamos es cambiar el valor de la variable que pasamos entonces tendremos que utilizar su direccin de memoria con un puntero de esta forma:
#include <stdio.h> #include <conio.h> void fn(int*); int main() { int i=0; fn(&i); /* Ahora le pasamos la direccin de memoria */ printf("PASO POR REFERENCIA: El valor de i ahora es %d",i); getch(); return 0; } void fn(int *i) { *i=10; }

L.I. Hilda Olivia Albarrn Padilla http://www.mcgraw-hill.es/bcv/guide/capitulo/8448148681.pdf http://informatica.uv.es/mguia/asignatu/INF/2003_04/PR8/pract08_2003.pdf

Pgina 10

PROGRAMACION UNIDAD III: FUNCIONES APUNTES 1.- Elaborar un programa que permita leer dos nmeros diferentes e imprimir el mayor. Todo se har en una funcin. 2.- Elaborar un programa que permita leer un nmero de 3 dgitos y obtener el promedio entre ellos. El numero se leer en una funcin llamada lee_numero, y el promedio obtenido se mostrara en main(). 3.- Escriba un programa que en una funcin solicite al usuario una letra mayscula y determinar e imprimir si la letra es una vocal (a,e,i,u), una semivocal (y), o una consonante. 4.- En una empresa se desea llevar el control de la productividad de un mes dado de acuerdo a lo siguiente: Enero, febrero y marzo tienen factor 15 Abril, mayo y junio factor 17 Julio y Agosto factor 19 Septiembre, Octubre y Noviembre factor 20 Diciembre factor 21 Elaborar un programa que permita calcular y mostrar la productividad de un mes dado en una funcin, si se sabe que esta es igual al nmero de artculos producidos en el mes multiplicado por el factor que le corresponde al mes proporcionado 5.- Una empresa clasifica a sus empleados en dos grupos de empleados, los del grupo 1 son aquellos que laboran dentro de la misma y desea darles un aumento de sueldo siguiendo el siguiente criterio: si el empleado trabaj mas de 40 horas, su sueldo ser incrementado en $50.00, si el empleado es mujer o es mayor de 25 aos y tiene en la empresa mas de 30 aos su sueldo se incrementar en $800.00 y si no cumple con estas condiciones solo se incrementa en $100.00 (esto ultimo es independiente de las horas trabajadas), Para los empleados del grupo 2 (los que aspiran a ingresar a la empresa)si es mayor de 18 aos y tiene mas de 85 puntos en una prueba presentada entonces ser contratado. Elaborar un programa para determinar el sueldo en el caso de los empleados del grupo 1 y si ser o no contratado en el caso de los del grupo 2. Se pide realizar todo lo anterior en una funcin. 6.- Elaborar un programa que permita generar la tabla de multiplicar de un nmero dado utilizando funciones de la siguiente manera: se va a solicitar el nmero en una funcin NUMERO y en otra funcin GENERA_TABLA se va a generar la tabla de multiplicar. 7.- Elaborar un programa que permita calcular el rea de un triangulo, as como la longitud y el rea de una circunferencia. Lo anterior lo realizara en una funcin. 8.- Elaborar un programa que evale la siguiente expresin en una funcin. -b+ (b2-4*a*c)/2*a

(es la solucin positiva de una ecuacin de segundo grado) Longitud de la circunferencia=2*PI*Radio rea de la circunferencia=PI * Radio2

L.I. Hilda Olivia Albarrn Padilla http://www.mcgraw-hill.es/bcv/guide/capitulo/8448148681.pdf http://informatica.uv.es/mguia/asignatu/INF/2003_04/PR8/pract08_2003.pdf

Pgina 11

You might also like