Funciones
Roberto CarlosAbreu Dıaz
Outline
Funciones
Caso de Estudio
Estructura de unaFuncion
Llamada a funciones
Ambito
Call stack
Funciones
Roberto Carlos Abreu Dıaz
January 27, 2010
Funciones
Roberto CarlosAbreu Dıaz
Outline
Funciones
Caso de Estudio
Estructura de unaFuncion
Llamada a funciones
Ambito
Call stack
FuncionesCaso de EstudioEstructura de una FuncionLlamada a funcionesAmbitoCall stack
Funciones
Roberto CarlosAbreu Dıaz
Outline
Funciones
Caso de Estudio
Estructura de unaFuncion
Llamada a funciones
Ambito
Call stack
Funciones
I Entrada, procesamiento, SalidaI Se pueden llamar (”ejecutar”) un sin numero de veces.I Relativamente independientes del resto del codigoI Sinonimos: sub-programas, procedimientos, metodos,
funciones, rutinas
Funciones
Roberto CarlosAbreu Dıaz
Outline
Funciones
Caso de Estudio
Estructura de unaFuncion
Llamada a funciones
Ambito
Call stack
Caso de Estudio
Ejemplo de Kernighan y Ritchie
I Si tenemos que disenar y escribir un programa queimprima cada lınea de la entrada si esta contiene algunpatron de caracteres.
I El codigo serıa algo ası:while (haya mas lıneas)if (la lınea contiene el patron)imprımela
I Aunque podamos escribir todo el codigo en el main(),separar el codigo en varias funciones trae consigo susventajas
Funciones
Roberto CarlosAbreu Dıaz
Outline
Funciones
Caso de Estudio
Estructura de unaFuncion
Llamada a funciones
Ambito
Call stack
Continuacion...
Ejemplo de Kernighan y Ritchie (2)
I ”haya mas lıneas” es una funcion que lee datos tipocadena de la entrada
I ”(if) la lınea contiene el patron” es una funcion quebusca la ocurrencia de patrones de textos
I ”imprımela” es ya el printf!
I ¡Si queremos cambiar el patron de busqueda solotendrıamos que cambiar la funcion encargada de eso!
Funciones
Roberto CarlosAbreu Dıaz
Outline
Funciones
Caso de Estudio
Estructura de unaFuncion
Llamada a funciones
Ambito
Call stack
Estructura de una Funcion
I La lista de parametros es separada por coma
I Si la funcion no devuelve datos, el tipo de dato es: void
I La palabra reservada return se utiliza para devolver elresultado
Funciones
Roberto CarlosAbreu Dıaz
Outline
Funciones
Caso de Estudio
Estructura de unaFuncion
Llamada a funciones
Ambito
Call stack
Ejemplo!
Codigo
i n t f a c t o r i a l ( i n t n ){
i f ( n <= 2)return n ;
i n t p r o d u c t o = n ;
whi le ( n > 1)p r o d u c t o ∗= −−n ;
return p r o d u c t o ;}
Funciones
Roberto CarlosAbreu Dıaz
Outline
Funciones
Caso de Estudio
Estructura de unaFuncion
Llamada a funciones
Ambito
Call stack
Llamada a funciones
I ¡Ya lo hemos hecho! printf!
I Si la funcion devuelve un resultado . . . la llamada a lafuncion es una expresion valida!
I Ejemplo: factorial(5) + factorial(6)!
Funciones
Roberto CarlosAbreu Dıaz
Outline
Funciones
Caso de Estudio
Estructura de unaFuncion
Llamada a funciones
Ambito
Call stack
Ambito
I Las funciones pueden acceder a las variables globales
I Pero no pueden acceder a las variables de otras variables
I ¿Por que?
Funciones
Roberto CarlosAbreu Dıaz
Outline
Funciones
Caso de Estudio
Estructura de unaFuncion
Llamada a funciones
Ambito
Call stack
Call stack