Está en la página 1de 29

Funciones

Ing. Manuel Castaeda


Funciones
En la mayora de los casos aquellos programas
que estn diseados para resolver problemas de
la vida real son mucho mas grande que los que
se presentan como ejemplo.
Funciones
Sera lgico pensar en utilizar la tcnica de
divide y vencers, es decir la mejor forma de
desarrollar y mantener un programa grande
es construirlo a partir de piezas menores o
mdulos, siendo cada una de ellas ms fcil
de manipular que el programa original.
Funciones
En C los mdulos se llaman funciones.

Por lo general en C, los programas se escriben


combinando nuevas funciones que el programador
escribe, con funciones prediseadas", disponibles
en la biblioteca estndar de C.

Poco a poco iremos conociendo mas funciones de


dicha biblioteca
Funciones
La biblioteca estndar de C contiene una amplia
coleccin de funciones para llevar a cabo clculos
matemticos comunes, manipulaciones con
cadenas, manipulaciones con caracteres,
entrada/salida, y muchas otras operaciones tiles.

Esto facilita la tarea del programador, porque


estas funciones proporcionan muchas de las
capacidades que los programadores requieren.
Funciones
Funciones definidas por el programador

Se puede escribir funciones para definir tareas


especficas, que puedan ser utilizadas en muchos
puntos de un programa.

Los enunciados que definen la funcin se


escriben slo una vez, quedando los enunciados
ocultos de otras funciones
Funciones
Las funciones se invocan mediante una llamada a
funcin.

La llamada a funcin especifica el nombre de la misma


y proporciona informacin (en forma de argumentos),
que la funcin llamada necesita a fin de llevar a cabo
su tarea designada.

Las funciones en C son como en clculo para un valor o


varios valores independientes tendremos un
correspondiente valor dependiente, aunque hay funciones
que no necesariamente regresan algn valor
Funciones
Las funciones necesitan:

Ser declaradas (prototipo de una funcin)(no es


obligatorio pero si aconsejable)
Ser definidas (escribir el cdigo que ejecutar)
Ser llamadas(invocarlas dndole los
argumentos que necesita)
Funciones
Definicin de una funcin

Sintaxis

Tipo nombre(tipo1 arg1, tipo2 arg2, ...,tipo NargN)


{
/*CUERPO DE LAFUNCION*/
}
Funciones
Definicin de una funcin

Se debe especificar que tipo de dato retornar la funcin (valor


dependiente).

Si no se necesita que la funcin regrese algn valor, se


especifica un tipo void

Si no tiene argumento en algunos compiladores, tambin se


especifica void

Ej void funcion(void)
Funciones
Definicin de una funcin

Entre llaves se pondr el cuerpo de la funcin y la


terminaremos con la palabra reservada return que nos
regresar el valor que necesitemos segn sea el caso.

En C no se pueden anidar funciones

Lo mas comn es definir las funciones despus de la


funcin principal main()
Funciones
Prototipo de una funcin

Tipo nombre(tipo1 arg1, tipo2 arg2, ...,tipo NargN);

Ser el mismo encabezado que en la definicin pero ahora en vez


de { } escribimos ;

Permite la comprobacin de errores entre las llamadas a una


funcin y la definicin correspondiente.

Lo mas comn es escribir el prototipo antes de la funcin main


Funciones
Ejemplo

float potencia(float x, int y); /*prototipo*/

float potencia(float x, int y) /*definicion*/


{
int i;
float prod=1;
for(i=0; i<y; i++)
prod=prod*x;
return(prod);
}
Funciones
Llamadas a una funcin

Para llamar a una funcin se especifica el nombre de la


misma y los argumentos que recibe

nombre(3,4);

Argumentos formales. Son lo declarados en la definicin

Argumentos reales. Son los que se pasan cuando se llama a


la funcin
Funciones
Llamadas a una funcin

Argumento real

En la llamada, debe existir un argumento por cada argumento


formal declarado

Pueden ser:

- Constantes
- Variables simples
- Expresiones
Funciones
Llamadas a una funcin

Argumento real

Deben ser del mismo tipo de dato que el argumento formal declarado

Cuando se pasa valor a una funcin se copia el argumento real en el


formal

Se puede modificar el argumento formal dentro de la funcin, pero el


valor del argumento real no cambiar, pues solo se trabajo con una copia,
a esto se le llama paso de argumentos por valor
Funciones
Proceso
de la llamada
Funciones
Ejemplo. Programa que cuenta los caracteres introducidos desde el teclado hasta que se presiona enter

#include<stdio.h>
#include<stdlib.h>

int cuenta_caracteres(void); //prototipo

main()//inicia main
{
int num_car;
num_car=cuenta_caracteres();//llamada a la funcin
printf("Hay %d caracteres\n",num_car);
system("pause");
}//fin de main

int cuenta_caracteres(void)//declaracin de funcin


{
char c;
int cont=0;
c=getchar();

while(c!='\n')
{
cont=cont+1;
c=getchar();
}
return cont;
}
Funciones
Recursividad

No se permite la anidacin de funciones, es decir


declarar una funcin dentro de otra

Pero si se puede llamar a si misma de forma


repetida hasta que se cumpla alguna condicin
Funciones
Recursividad, ejemplo

El factorial de un nmero es 1 si n=0 y n*f(n-1) si n > 0


Entonces :

long int factorial(int n)


{
if(n<=1)
return(1);
else
return(n*factorial(n-1));
}
Funciones
Macros

La sentencia #define se puede utilizar para


definir

Una macro es un identificador equivalente a una


expresin, sentencia o grupos de sentencias
Funciones
Macros, ejemplo

#include<stdio.h>
#include<stdlib.h>

#define maximo(a,b) ((a>b)?a:b)

main()
{
int x,y;
int max;
printf("Introduzca dos numeros:");
scanf("%d %d",&x,&y);

max=maximo(x,y); /*uso de la macro*/

printf("Elmaximoes%d\n",max);

system("pause");
}
Funciones
Macros,

No puede haber espacios entre el identificador y el


parntesis izquierdo #define maximo(a,b) ((a>b)?a:b)

Una macro no es una funcin

El preprocesador sustituye todas las referencias a la


macro que aparezcan en el cdigo antes de realizar la
compilacin
Funciones
Macros,

main()
{
Int x,y;
Int max;
printf("Introduzca dos numeros:");
scanf("%d %d",&x,&y);
max= ((x>y)?x:y); //en vez de maximo(a,b)
printf("Elmaximoes%d\n",max);
}
Funciones
Macros,

Con las macros se gana velocidad pues no se


producen llamadas a una funcin

Se tiene mayor cdigo objeto

Sin embargo, normalmente las funciones no son tan


pequeas como lo sera una macro, debido a esos
casos es ms comn el uso de funciones
Descripcin de Funciones de
Bibliotecas
<asser.h> Contiene macros as como informacin para
aadir diagnsticos que ayudan a la
depuracin de programas.

<ctype.h> Contiene prototipos de funcin para


funciones que prueban caracteres en relacin
con ciertas propiedades, y prototipos de
funciones que pueden ser utilizadas para la
conversin de minsculas a maysculas y
viceversa.

<errno.h> Define macros que son tiles para la


informacin de condiciones de error.
Descripcin de Funciones de
Bibliotecas
<float.h> Contiene los lmites de tamao de punto flotante del
sistema.

<limits.h> Incluye los lmites de tamao integral del sistema.

<locale.h> Contiene los prototipos de funcin y otra informacin


que le permite a un programa ser modificado en
relacin con la localizacin actual en la cual se est
ejecutando. La nocin de localizacin le permite al
sistema de cmputo manejar diferentes reglas
convencionales para la expresin de datos como son
fechas, horas, monedas y nmeros grandes en diferentes
reas del mundo.
Descripcin de Funciones de
Bibliotecas
<math.h> Contiene prototipos para funciones matemticas de
biblioteca.

<setjmp.h> Contiene prototipos para funciones que permiten pasar


por alto la secuencia usual de llamadas de funcin y
regreso.

<signal.h> Contiene prototipos de funcin y macros para manejar


varias condiciones que pudieran ocurrir durante la
ejecucin de un programa.

<stdarg.h> Define macros para manejar con una lista de argumentos


a una funcin cuyo nmero y cuyo tipo son desconocidos.
Descripcin de Funciones de
Bibliotecas
<stddef.h> Contiene definiciones comunes de tipos utilizados en C
para ejecutar ciertos clculos.

<stdio.h> Contiene prototipos para las funciones de biblioteca de


entrada y salida estndar y la informacin que stas utilizan.

<stdlib.h> Contiene prototipos de funcin para las conversiones de


nmeros a texto y de texto a nmeros, para la asignacin de
memoria, para nmeros aleatorios y otras funciones de utilera.

<string.h> Contiene prototipos para las funciones de procesamiento de


cadenas.

<time.h> Contiene prototipos de funcin y tipos para manipular hora y


fecha.

También podría gustarte