1. Funciones
Roberto Carlos
Abreu D´ıaz
Outline
Funciones
Caso de Estudio
Estructura de una
Funci´n
o
Funciones Llamada a funciones
´
Ambito
Call stack
Roberto Carlos Abreu D´
ıaz
January 27, 2010
2. Funciones
Roberto Carlos
Abreu D´ıaz
Outline
Funciones
Caso de Estudio
Estructura de una
Funci´n
o
Funciones Llamada a funciones
´
Ambito
Caso de Estudio Call stack
Estructura de una Funci´n
o
Llamada a funciones
´
Ambito
Call stack
3. Funciones
Funciones
Roberto Carlos
Abreu D´ıaz
Outline
Funciones
Caso de Estudio
Estructura de una
Funci´n
o
Llamada a funciones
´
Ambito
Call stack
Entrada, procesamiento, Salida
Se pueden llamar (”ejecutar”) un sin n´mero de veces.
u
Relativamente independientes del resto del c´digo
o
Sin´nimos: sub-programas, procedimientos, m´todos,
o e
funciones, rutinas
4. Funciones
Caso de Estudio
Roberto Carlos
Abreu D´ıaz
Outline
Ejemplo de Kernighan y Ritchie Funciones
Caso de Estudio
Estructura de una
Funci´n
o
Si tenemos que dise˜ar y escribir un programa que
n Llamada a funciones
´
Ambito
imprima cada l´
ınea de la entrada si esta contiene alg´n
u Call stack
patr´n de caracteres.
o
El c´digo ser´ algo as´
o ıa ı:
while (haya m´s l´
a ıneas)
if (la l´
ınea contiene el patr´n)
o
impr´ ımela
Aunque podamos escribir todo el c´digo en el main(),
o
separar el c´digo en varias funciones trae consigo sus
o
ventajas
5. Funciones
Continuaci´n...
o
Roberto Carlos
Abreu D´ıaz
Outline
Funciones
Caso de Estudio
Ejemplo de Kernighan y Ritchie (2) Estructura de una
Funci´n
o
Llamada a funciones
´
Ambito
”haya m´s l´
a ıneas” es una funci´n que lee datos tipo
o Call stack
cadena de la entrada
”(if) la l´
ınea contiene el patr´n” es una funci´n que
o o
busca la ocurrencia de patrones de textos
”impr´
ımela” es ya el printf!
¡Si queremos cambiar el patr´n de b´squeda s´lo
o u o
tendr´
ıamos que cambiar la funci´n encargada de eso!
o
6. Funciones
Estructura de una Funci´n
o
Roberto Carlos
Abreu D´ıaz
Outline
Funciones
Caso de Estudio
Estructura de una
Funci´n
o
Llamada a funciones
´
Ambito
Call stack
La lista de par´metros es separada por coma
a
Si la funci´n no devuelve datos, el tipo de dato es: void
o
La palabra reservada return se utiliza para devolver el
resultado
7. Funciones
Ejemplo!
Roberto Carlos
Abreu D´ıaz
Outline
C´digo
o Funciones
Caso de Estudio
Estructura de una
int f a c t o r i a l ( int n) Funci´n
o
Llamada a funciones
{ ´
Ambito
Call stack
i f ( n <= 2 )
return n ;
int producto = n ;
while ( n > 1)
p r o d u c t o ∗= −−n ;
return producto ;
}
8. Funciones
Llamada a funciones
Roberto Carlos
Abreu D´ıaz
Outline
Funciones
Caso de Estudio
Estructura de una
Funci´n
o
Llamada a funciones
´
Ambito
Call stack
¡Ya lo hemos hecho! printf!
Si la funci´n devuelve un resultado . . . la llamada a la
o
funci´n es una expresi´n v´lida!
o o a
Ejemplo: factorial(5) + factorial(6)!
9. ´
Ambito
Funciones
Roberto Carlos
Abreu D´ıaz
Outline
Funciones
Caso de Estudio
Estructura de una
Funci´n
o
Llamada a funciones
´
Ambito
Call stack
Las funciones pueden acceder a las variables globales
Pero no pueden acceder a las variables de otras variables
¿Por qu´?
e
10. Funciones
Call stack
Roberto Carlos
Abreu D´ıaz
Outline
Funciones
Caso de Estudio
Estructura de una
Funci´n
o
Llamada a funciones
´
Ambito
Call stack