Вы находитесь на странице: 1из 23

Funciones en lenguaje C

Funciones
Definicin:
Las funciones son los bloques de construccin bsicos de C. Dentro de ellas se da toda la actividad del programa.

Criterios para crearlas:


Se usa la estrategia de Dividir y Conquistar, en otras palabras, es realizar la particin de la tarea en subtareas ms fciles de abordar. Todo problema se puede resolver con funciones o sin ellas, pero su uso adecuado hace que el programa sea ms eficiente, fcil de leer y probar.
2

Funciones: ventajas
1.- Facilita el diseo descendente. 2.- Los procedimientos dentro de ellas se pueden ejecutar varias veces. 3.- Facilita la divisin de tareas. 4.- Se pueden probar individualmente 5.- Con funciones apropiadamente diseadas, es posible ignorar como se realiza una tarea, sabiendo qu es lo que hacen.

Funciones: Especificacin formal


tipo nombre_funcion(lista de parmetros){ cuerpo de la funcin }

tipo : especifica el tipo de valor que devuelve la

funcin. Si no se especifica tipo, el compilador asume que es entero (int). lista de parmetros : es la lista de nombres de variables separados por comas con sus tipos asociados que reciben los valores de los argumentos actuales de la llamada a la funcin.

La sentencia return

Fuerza la salida inmediata de la funcin en que se encuentra. Se puede utilizar para devolver un valor.

Funciones

Las funciones terminan su ejecucin ya sea a travs de la ejecucin de la ltima instruccin o utilizando la sentencia return. Un funcin puede retornar valor slo cuando el tipo de retorno no es void. Las funciones que son de tipos distintos de void pueden ser utilizadas como operandos en otras expresiones del lenguaje.

Funciones: modos de uso


1.- Funciones diseadas para realizar operaciones a partir de sus argumentos y devolver un valor basado en sus clculos. 2.- Funciones que no reciben argumentos, realizan un proceso y devuelven un valor . 3.- Funciones que no tienen argumentos ni valor de retorno explcito, operan sobre el entorno de variables globales o atributos del sistema operativo.

Funcin main()
Mediante la sentencia return, el programa puede devolver un cdigo de terminacin al proceso de llamada (Ej.: entero a Shell de comandos en Unix). El valor devuelto puede ser 0 que indica terminacin normal o un valor que identifica un error detectado por el programa. El valor devuelto puede ser usado para ejecucin condicional de comandos en shell en Unix.
8

Variables locales y globales


Variables Locales:
Se declaran dentro de la funcin y slo estn disponibles durante su ejecucin. Se crean cuando se entra en ejecucin una funcin y se destruyen cuando se termina.

Variables globales:
Se declaran fuera de las funciones. Pueden ser utilizadas por todas las funciones. Existen durante toda la vida del programa.

Argumentos de funciones
Son variables locales conocidas como parmetros formales y se utilizan como un medio para entregarle informacin a la funcin. Los parmetros formales reciben sus valores iniciales desde los parmetros reales, es decir desde los valores que se les pasan a trave de la llamada. Ejemplo:
Parmetro real (llamada) main( ){ Parmetro formal (declaracin) imprimeEntero(5); } void imprimeEntero(int x){ printf(%d\n, x);/* x vale 5 */ }
10

Transferencia de Informacin
por valor: copia el valor de un argumento de la llamada en el parmetro formal de la funcin. Por lo tanto, los cambios en los parmetros de la funcin no afectan a las variables que se usan en la llamada. por referencia: se copia la direccin del argumento en el parmetro. Los cambios hechos a los parmetros afectan a las variables usadas en la llamada a la funcin.

11

Ejemplo

Construya un programa que calcule el cuadrado de los 10 primeros nmeros enteros.

12

Solucin
#include <stdio.h>
int cuadrado(int x){ int r; r=x*x; return r; } main(){ int i,resultado; for (i=0;i<10;i++){ resultado = cuadrado (i); printf("Cuadrado de %d: %d\n",i,resultado); } return 0; }
13

Ejemplo

Construya una funcin que calcule la suma de los k primeros nmeros enteros impares.

14

Solucin ?
#include <stdio.h>
int sumaImpares(-------){ -----------------return r; }

15

Ejemplo

Construya una funcin que realice intercambio de los valores entre 2 variables.

16

Solucin con error porqu?


#include <stdio.h> void intercambio(int x, int y){ int temp; temp=x; x=y; y=temp; printf( x=%d y=%d temp=%d\n,x,y,temp); } main(){ int a=1,b=2; printf("a=%d b=%d\n",a,b); intercambio(a,b); printf("a=%d b=%d\n",a,b); return 0; }
17

Solucin correcta
#include <stdio.h> void intercambio(int *x, int *y){ int temp; temp=*x; *x=*y; *y=temp; printf( x=%d y=%d temp=%d\n,*x,*y,temp); } main(){ int a=1,b=2; printf("a=%d b=%d\n",a,b); intercambio (&a,&b); printf("a=%d b=%d\n",a,b); return 0; }
18

Ejemplo
Realizar una funcin, en el cual se ingresa un nmero entero de varias cifras y un entero con una posicin y se retorna el dgito de dicha posicin.
Ejemplo:
Entrada: 987 2 Salida : 8

19

Programa
#include <stdio.h> int buscar(int x,int k){ int i,n; if (k<=0 || x<0) return -1; for (i=0;i<k-1;i++) x=x/10; return (x%10); } void main(){ int n,k,digito; printf("Ingrese numero y posicion:"); scanf("%d %d",&n,&k); digito=buscar(n,k); if (digito<0) printf("No encontrado\n"); else printf("El digito encontrado es: %d\n",digito); return 0; }
20

Prototipos
Uso:
Identificar el tipo de retorno de la funcin. Especificar el tipo y el nmero de argumentos que utiliza la funcin.

El prototipo debe aparecer antes de que se haga cualquier llamada a la funcin. No es necesario incluir los nombres reales de los parmetros.

21

Prototipo (cont.)
#include <stdio.h>
int cuadrado(int x); /*Prototipo*/ main(){ int i,resultado; for (i=0;i<10;i++){ resultado = cuadrado (i); printf("El cuadrado de %d es %d\n",i,resultado); } return 0; } int cuadrado(int x){ int a; a=x*x; return a; }
22

Prototipo (cont.)
#include <stdio.h> void intercambio(int *, int *) main(){ int a=5,b=3; printf("a=%d b=%d\n",a,b); intercambio (&a,&b); printf("a=%d b=%d\n",a,b);
return 0; } void intercambio(int *x, int *y){ int temp; temp=*x; *x=*y; *y=temp; }
23

/*Prototipo*/