You are on page 1of 31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Programacion estructurada
Funciones
Oscar Alvarado Nava
oscar.alvarado.nava@gmail.com
Departamento de Electr
onica
Divisi
on de Ciencias B
asicas e Ingeniera
Universidad Aut
onoma Metropolitana, Unidad Azcapotzalco

13O, octubre de 2013

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

1/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Contenido
1

Funciones en lenguaje C
Funciones en lenguaje C
Reglas de ambito

Declaracion, definici
on y llamada
Declaracion
Definicion
Llamada

Calculadora y esdigito10
Calculadora
esdigito10

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

2/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Funciones en lenguaje C

Lenguaje estructurado

Una caracterstica importante de los lenguajes estructurados


es la compartimentaci
on de c
odigo y datos
Es la habilidad del lenguaje de seccionar el programa en
bloques o m
odulos de sentencias

Cada bloque de sentencias lleva a cabo una tarea especfica


Los bloques son utilizados y escondidos del resto del
programa cuando es necesario

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

3/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Funciones en lenguaje C

Programa estructurado

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

4/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Funciones en lenguaje C

El lenguaje estructurado C

El lenguaje C logra la compartimentaci


on de codigo y datos
por medio de de uso de funciones
Las funciones son compuestas por un conjunto de sentencias y
utilizan variables que no afectan a las variables de otros
bloques del programa
Las variables que pertenecen a una funci
on son llamadas
variables locales o variables privadas o variables temporales, o
variables automaticas

Esta caracterstica permite compartir o reutilizar facilmente


secciones de codigo de un programa

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

5/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Funciones en lenguaje C

Funciones en C

Las funciones son bloques en donde se lleva a cabo toda la


actividad del programa
Las funciones permiten al programador definir tareas
especficas, permitiendo que el programa sea modular
Crear un programa en m
odulos (funciones) tiene grandes
ventajas
Enfocarse en el desarrollo de tareas especficas
La verificaci
on de un m
odulo no afecta a todo el programa
Varios programadores puden participar en el desarrollo

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

6/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Reglas de
ambito

Reglas de ambito en sentencias

Las sentencias de una funci


on en C, solamente puede ser
accedidas al llamar a la funci
on
Esta prohibido acceder por medio de una salto incondicional
como goto a una sentencia de una funci
on

Las sentencias que constituyen la funci


on estaran escodidas
para el resto del programa

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

7/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Reglas de
ambito

Reglas de ambito en variables

Las sentencias de la funci


on s
olo podran afectar sus variables
locales sin poder afectar las variables de otras funciones
Las variables de las funciones son creadas cuando se llama a
la funci
on y son destruidas cuando se sale de ella
Lo que implica que el valor de las variables locales persisten
solamente cuando la funci
on se esta ejecutando

Una excepcion a la regla anterior, es cuando se le aplica a una


variable local el modificador de acceso static
Las funciones tambien podran modificar las variables globales
del codigo

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

8/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Reglas de
ambito

Reglas de ambito entre funciones

Todas las funciones en C tienen el mismo nivel de ambito


No es posible definir una funci
on dentro de otra funcion

Una funcion puede ser llamada dentro de otra funcion


El que una funci
on se llame as misma, se utiliza para crear la
recursi
on de una funci
on

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

9/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Reglas de
ambito

f hola.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

/* Programacion estructurada , 13 O , Oscar Alvarado Nava */


# include < stdio .h >
/* declaracion de la funcion */
void funcion_hola () ;
/* definicion de la funcion */
void funcion_hola ()
{
printf ( " hola desde la funcion \ n " ) ;
}
int main ()
{
/* llamada de la funcion */
funcion_hola () ;
return 0;
}

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

10/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Reglas de
ambito

f parametro.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# include < stdio .h >


// Declaracion de las funciones
void funcionInicio () ;
void funcionFin () ;
// Definicion de las funciones
void funcionInicio ()
{
printf ( " Programacion estructurada \ n " ) ;
printf ( " Oscar Alvarado Nava \ n " ) ;
}
void funcionFin ( int var )
{
printf ( " Resultado %d \ n " , var ) ;
printf ( " Fin del programa \ n " ) ;
}
int main ()
{
int x =15 , y =9 , z =0;
// llamada a la funcion
funcionInicio () ;
z = x + y;
// llamada a la funcion
funcionFin ( z ) ;
return 0;
}

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

11/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Reglas de
ambito

Funciones en C

Una funcion en C debe cumplir lo siguiente


Debe ser declarada
Debe ser definida
Debe ser llamada

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

12/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Declaraci
on

Declaracion de una funcion


La declaracion de una funci
on (o protitipo) consiste en
especificar el nombre, lista de argumentos y el valor de retorno
de la funcion
tipo nombre funcion(lista de par
ametros);
tipo es el tipo de valor que la funci
on regresa por medio de la
sentencia return
lista de par
ametros es una lista de variables separadas por
comas, las cuales recibiran una copia del valor de la variables
utilizadas como argumentos en la llamada a la funcion

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

13/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Declaraci
on

Ubicacion de la declaracion

tipo nombre funcion(lista de par


ametros);
Al ser una declaraci
on debe terminar con punto y coma
La declaracion de una funci
on debera estar antes de la
definicion y de la llamada
Comunmente las declaraciones de las funciones se agrupan en
archivos de cabecera (headers), archivos con extencion .h

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

14/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Declaraci
on

Lista de parametros en la declaracion

tipo1 nombre funcion(tipo1, tipo2,..., tipo);


La lista de par
ametros esta conformada por la
declaracion de variables separadas por comas
En la declaracion de una funci
on, s
olo es necesario indicar los
tipos de la lista de variables

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

15/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Declaraci
on

Omisiones
nombre funcion();
Las omisiones en el tipo y lista de parametros dependera del
compilador
Si no se especifica un tipo de regreso, el compilador asume
que es de tipo int
Una funcion puede no tener lista de parametros
En algunos compiladores estas omisiones deberan ser
declaradas como el tipo de datos generico void
void nombre funcion(void);

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

16/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Declaraci
on

Declaracion de la funcion suma

float suma(float, float);


La funcion sumar recibe dos n
umeros de tipo float y
regresara un valor float

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

17/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Definici
on

Definicion de una funcion


La definicion de una funci
on consiste en especificar las
sentencias que contendra la funci
on. El cuerpo de una funcion
es un bloque de sentencias
tipo nombre funcion(tipo var1, tipo var2,.., tipo varN)
{
sentencia1;
sentencia2;
...
sentenciaN;
}

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

18/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Definici
on

Definicion de una funcion

tipo nombre funcion(tipo var1, tipo var2)


{
sentencia1;
sentencia2;
...
sentenciaN;
}

La definicion debera concordar con la declaracion: nombre,


tipo, lista de parametros
Si existe la lista de par
ametros, en la definicion se
deberan especificar los identificadores de cada variable

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

19/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Definici
on

Definicion de la funcion suma

float suma(float x, float y)


{
float temp;
temp = x + y;
return temp;
}

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

20/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Definici
on

Declaracion y definicion de la funcion suma

/*Declaracion*/
float suma(float, float);
/*Definicion*/
float suma(float x, float y)
{
float temp;
temp = x + y;
return temp;
}

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

21/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Llamada

Llamada a una funcion


La llamada a una funci
on se puede realizar en cualquier parte
del codigo, siempre y cuando se tenga acceso a su declaracion
y definicion
Para llamar a la funci
on, basta con cumplir con el n
umero de
parametros y sus tipos que la funci
on solicita
nombre funcion(lista de par
ametros);
De manera opcional, el valor de retorno puede ser almacenado
en una variable del mismo tipo que la funci
on
var = nombre funcion(lista de par
ametros);

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

22/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Llamada

Declaracion, definicion y llamada de la funcion suma


/*Declaracion*/
float suma(float, float);
/*Definicion*/
float suma(float x, float y)
{
float temp;
temp = x + y;
return temp;
}
...
/*Llamada*/
resultado = suma(a ,b);
...
Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

23/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Calculadora

calculadora.c (1/4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

/* Programacion estructurada , 13 O , Oscar Alvarado Nava


Realiza operaciones aritmeticas basicas a traves de funciones
*/
# include < stdio .h >
/* declaraciones de las funciones */
float suma ( float , float ) ;
float resta ( float , float ) ;
float multiplica ( float , float ) ;
float divide ( float , float ) ;
float pide_dato () ;
int menu () ;
/* definiciones de las funciones */
float suma ( float x , float y )
{
float tmp ;
tmp = x + y ;
return tmp ;
}
float resta ( float x , float y )
{
float tmp ;
tmp = x - y ;
return tmp ;
}

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

24/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Calculadora

calculadora.c (2/4)
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

float multiplica ( float x , float y )


{
float tmp ;
tmp = x * y ;
return tmp ;
}
float divide ( float x , float y )
{
float tmp ;
if ( y == 0.0 )
{
printf ( " error \ n " ) ;
return 0;
}
tmp = x / y ;
return tmp ;
}
float pide_dato ()
{
float tmp ;
printf ( " dame un numero : " ) ;
scanf ( " %f " , & tmp ) ;
return tmp ;
}

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

25/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Calculadora

calculadora.c (3/4)
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

int menu ()
{
int op ;
do
{
printf ( " 1. suma \ n " ) ;
printf ( " 2. resta \ n " ) ;
printf ( " 3. multiplica \ n " ) ;
printf ( " 4. divide \ n " ) ;
printf ( " op : " ) ;
scanf ( " %d " , & op ) ;
}
while ( op < 1 || op > 4 ) ;
return op ;
}
/* funcion principal */
int main ()
{
float x , y ;
int op ;
float r ;
x = pide_dato () ;
y = pide_dato () ;
op = menu () ;

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

26/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

Calculadora

calculadora.c (4/4)
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97 }

switch ( op )
{
case 1:
r = suma ( x , y ) ;
break ;
case 2:
r = resta ( x , y ) ;
break ;
case 3:
r = multiplica ( x , y ) ;
break ;
case 4:
r = divide ( x , y ) ;
break ;
default :
printf ( " desconocido \ n " ) ;
}
printf ( " el resultado es %f \ n " , r ) ;
return 0;

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

27/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

esdigito10

esdigito10.c (1/2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

/* Programacion Estructurada 13 O , Oscar Alvarado Nava


El programa prueba a traves de una funcion si un caracter dado
es o no un digito decimal
Regresa uno si es un digito decimal
Regresa cero si NO es un digito decimal
*/
# include < stdio .h >
/* declaracion */
int esdigito10 ( char ) ;
/* definicion */
int esdigito10 ( char caracter )
{
if ( caracter >= 48 && caracter <=57 )
return 1;
else
return 0;
}

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

28/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

esdigito10

esdigito10.c (2/2)

20 int main ()
21 {
22
char var1 ;
23
int r ;
24
25
printf ( " dame un caracter que sea un digito decimal : " ) ;
26
scanf ( " %c " ,& var1 ) ;
27
28
/* llamada */
29
r = esdigito10 ( var1 ) ;
30
printf ( " el resultado fue : %d \ n " ,r ) ;
31
32
return 0;
33 }

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

29/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

esdigito10

esdigito10 cadena.c (1/2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

/* Programacion Estructurada 13 O , Oscar Alvarado Nava


El programa prueba a traves de una funcion si un caracter en una cadena
es o no un digito decimal
Regresa uno si es un digito decimal
Regresa cero si NO es un digito decimal
*/
# include < stdio .h >
/* declaracion */
int esdigito10 ( char ) ;
/* definicion */
int esdigito10 ( char caracter )
{
if ( caracter >= 48 && caracter <=57 )
return 1;
else
return 0;
}

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

30/31

Funciones en lenguaje C

Declaraci
on, definici
on y llamada

Calculadora y esdigito10

esdigito10

esdigito10 cadena.c (2/2)

20 int main ()
21 {
22
char var1 [10];
23
int r , i ;
24
25
printf ( " dame un numero de maximo 9 digitos decimales : " ) ;
26
scanf ( " %s " , var1 ) ;
27
28
i =0;
29
/* llamada */
30
while ( var1 [ i ] != \0 )
31
{
32
r = esdigito10 ( var1 [ i ] ) ;
33
printf ( " Para %c el resultado fue : %d \ n " , var1 [ i ] , r ) ;
34
i ++;
35
}
36
37
return 0;
38 }

Oscar Alvarado Nava

UAM Azcapotzalco

Funciones

31/31

You might also like