Anda di halaman 1dari 11

USO DE FUNCIONES EN C

www.inacap.cl

Funciones en C
Para el lenguaje C, las funciones son bloques de cdigo utilizados para dividir un programa en partes ms pequeas, cada una de las cules tendr una tarea determinada.
Su sintaxis es: tipo_funcin nombre_funcin (tipo y nombre de argumentos) { bloque de sentencias } Donde: Tioo_funcin: puede ser de cualquier tipo de datos de los que conocemos. El valor devuelto por la funcin ser de este tipo. Por defecto, es decir, si no indicamos el tipo, la funcin devolver un valor de tipo entero ( int ) (Debe revisar si en la versin de C usada es soportado esto o no). Si no queremos que retorne valor deberemos indicar el tipo vaco ( void ).

nombre_funcin: es el nombre que le daremos a la funcin. tipo y nombre de argumentos: son los parmetros que recibe la funcin. Los
argumentos de una funcin no son ms que variables locales que reciben un valor. Este valor se lo enviamos al hacer la llamada a la funcin. Pueden existir funciones que no reciban argumentos. realice la llamada a la funcin.

bloque de sentencias: es el conjunto de sentencias que sern ejecutadas cuando se

www.inacap.cl

Funciones en C
Nota: Las funciones pueden ser llamadas desde la funcin main o desde otras funciones. Nunca se debe llamar a la funcin main desde otro lugar del programa. Por ltimo recalcar que los argumentos de la funcin y sus variables locales se destruirn al finalizar la ejecucin de la misma. Ejemplo: Este ejemplo consiste en una funcin que es llamada desde el programa principal con dos argumentos: La base y la altura. Dicha funcin retornar el clculo del rea a la funcin principal. int calcula_area(int a, int b) { int r; r= a*b; return(r); } Nota: Para este ejemplo se consider que los valores de base, altura y area son Enteros. www.inacap.cl

Llamada a una Funcin en C


Considerando el ejemplo anterior la solucin completa sera: #include <stdio.h>

int calcula_area(int a, int b) { int r; r= a*b; return(r); }


main() { int base, alt, area; printf("ingrese la base : "); scanf("%d",&base); printf("ingrese la altura : "); scanf("%d",&alt); area=calcula_area(base,alt); printf("El area es : %d\n",area); system("PAUSE"); }

www.inacap.cl

Definicin de prototipo de Para el mismo ejemplo: Funcin:


#include <stdio.h> /*crea prototipo de la funcin:*/ Int calcula_area(int, int); int main() { int base, alt, area; printf("ingrese la base : "); scanf("%d",&base); printf("ingrese la altura : "); scanf("%d",&alt); area=calcula_area(base,alt); printf("El area es : %d\n",area); system("PAUSE"); } int calcula_area(int a, int b) { int r; r= a*b; return(r); }

www.inacap.cl

Procedimientos en C
En Lenguaje C, no existe el procedimiento como tal, sino que las funciones pueden trabajar como si fueran un procedimiento, simplemente se debe indicar que no retornen un valor, usando el tipo vacio (void). Las opciones para los procedimientos son varias, pueden entregar resultados dentro del mismo cdigo, o bien modificando valores de variables existentes en el lugar donde se realiz la llamada. Ejemplo: void promedia(int *numero,int *tipo,int edad) { *numero = *numero+1; *tipo = *tipo+edad; }

www.inacap.cl

Llamada a un procedimiento en C
En C, la solucin la solucin al problema del promedio sera: #include <stdio.h> void promedia(int *,int *,int); main() { int per,x,Nmujer,Nhombre,Nnina,Nnino,edad,mujer,hombre,nina,nino; float Pmujer,Phombre,Pnina,Pnino; Nhombre=Phombre=Nmujer=Pmujer=Nnina=Pnina=Nnino=Pnino=0; edad=mujer=hombre=nina=nino=0; printf("Ingreso de personas para calculo de promedio de edades\n"); printf("===============================================\n"); for(x=1; x <5;x++) { do { printf("Para ingresar digite :\n"); printf(" Hombre = 1, Mujer = 2, Nia = 3, Nio = 4 \n"); scanf("%d",&per); } while(per<1 || per>4); printf("Ingrese la edad :\n"); scanf("%d",&edad); switch(per){ case 1: promedia(&Nhombre,&hombre,edad); break; case 2: promedia(&Nmujer,&mujer,edad); break; case 3: promedia(&Nnina,&nina,edad); break; case 4: promedia(&Nnino,&nino,edad); break; } }
Phombre= hombre / Nhombre; Pmujer= mujer / Nmujer; Pnina= nina / Nnina; Pnino= nino / Nnino; printf("El promedio de edad de Hombres es %.0f\n",Phombre); printf("El promedio de edad de Mujeres es %.0f\n",Pmujer); printf( "El promedio de edad de Nias es %.0f\n",Pnina); printf("El promedio de edad de Nios es %.0f\n",Pnino); system("PAUSE"); return 0; } void promedia(int *numero,int *tipo,int edad) { *numero = *numero+1; *tipo = *tipo+edad; }

www.inacap.cl

Paso de parmetros en C
Ejemplo en C, del paso de parmetro por valor: Este ejemplo realiza un intercambio de valores entre las variables a y b. /* Paso por valor. */ #include <stdio.h> void intercambio(int,int); La funcin para este ejemplo sera: main() void intercambio (int x,int y) /* Intercambio de valores */ { { aux; int int a=1,b=2; aux=x; printf("valores iniciales son a=%d y b=%d\n",a,b); x=y; /* llamada */ y=aux; intercambio(a,b); printf("En la funcion los valores son a=%d y b=%d\n",x,y); printf("Despues de la funcion intercambio a=%d y b=%d\n",a,b); } system(pause); }

En este ejemplo se puede ver que al pasar las variables por valor, lo que realiza la funcin con ellas solo queda en la funcin, por lo tanto su contenido en el programa principal no se ve alterado. www.inacap.cl

Paso de parmetros en C
Ejemplo en C, del paso de parmetro por Referencia: Este ejemplo realiza un intercambio de valores entre las variables a y b, pero ahora se usa el paso de parmetros por referencia.
/* Paso por referencia. */ #include <stdio.h> void intercambio(int *,int *); main() /* Intercambio de valores */ { int a=1,b=2; printf("valores iniciales a=%d y b=%d\n",a,b); /* llamada */ intercambio(&a,&b); printf("Despues de la funcion intercambio los valores son a=%d y b=%d\n",a,b); system("pause"); }

En este caso se utiliza el smbolo & (ampersand) delante de la variable enviada como parmetro, indicando as al compilador que la funcin que se ejecutar tendr que obtener la direccin de memoria en que se encuentra la variable, logrando con esto el paso de parmetros por referencia.

www.inacap.cl

Paso de parmetros en C
La funcin para este ejemplo sera: void intercambio (int *x,int *y) { int aux; aux=*x; *x=*y; *y=aux; printf("En la funcion los valores son a=%d y b=%d\n",*x,*y); } Las variables usadas en la funcin x, y, son de tipo puntero, el nico dato en C, que puede almacenar una direccin de memoria. Esto se especifica colocando el smbolo * (asterisco) delante de la variable.

www.inacap.cl

Ejercicios Propuestos
1.- Construya un algoritmo que realice el clculo de rea y el permetro de una circunferencia a travs del diseo de funciones (una para calcular permetro y otra para calcular rea). Area = PI * R2 Permetro = 2 * PI * R. Su algoritmo debe permitir ingresar los datos e imprimir en el programa principal. 2.- Realice un programa que permita imprimir la sumatoria de 10 nmeros pares al cuadrado. Considere: Su algoritmo debe permitir ingresar los datos e imprimir el resultado en el programa principal. Construya este programa solo con procedimiento. 3.- Realice un programa que calcule la funcin X, definida por: X = (3 + b3 2) / (5ac) Los valores de a, b y c son ingresados. Su algoritmo debe permitir ingresar los datos e imprimir en el programa principal. 4.- Realice un programa que pueda leer X y luego pueda calcular la funcin Y definida por: Y = (3X + 2) / (X-2) * X Considere: Que X no puede ser 0 ni 2, porque no tiene solucin la funcin. X es ingresado. Son 25 valores de X. Su algoritmo debe permitir ingresar los datos e imprimir en el programa principal. Construya este programa con funcin. 5.- Existe una lista de 10 alumnos con sus nombres y las notas de 2 pruebas y 2 controles los que tienen las siguientes ponderaciones, la prueba 1 (20%), prueba 2 (40%) y el promedio de controles (40%). Construya un programa que lea los valores de las notas y luego imprima el promedio de cada alumno. Su algoritmo debe ingresar los datos e imprimir en el programa principal. Construya este programa con funcin.

www.inacap.cl

Anda mungkin juga menyukai