Está en la página 1de 5

FUNCIONES

Son un grupo de sentencias bajo el mismo nombre que realizan una tarea especfica.
Sirven para facilitar la resolucin de problemas mediante la aplicacin del paradigma Dividir y
Conquistar
DIFERENCIAS ENTRE PROGRAMA Y FUNCIONES
as funciones y los programas se parecen muc!o" pero difieren#
os programas son usados por un usuario e$terno.
as funciones son utilizadas por un programador.
%l usuario del programa &ola 'undo no conoce que es la funcin printf.
%l programador que usa printf no siempre conocer( e$plcitamente como )sta !ace para mostrar informacin
en pantalla.
%l programador que escribi printf conoce e$actamente su funcionamiento interno
DEFINICIONES
*uncin
+rupo de sentencias bajo el mismo nombre que realizan una tarea especfica.
lamada a una funcin
%jecuta el grupo de sentencias de una funcin.
,etorno
-na vez llamada la funcin" esta !ace su trabajo" y regresa al mismo punto donde fue llamada
DECLARACION DE FUNCIONES
De forma similar a las variables" las funciones deben ser declaradas#
a forma de declarar una funcin es siguiendo la forma predefinida#
[tipo] nombre_de_!_"#n$ion %[i&t! de !r'#mento&](
%l tipo" se refiere a la naturaleza de la informacin que es asignada al nombre de la funcin. .ste puede ser
cualquiera de los tipos de datos primarios o variantes disponibles en C. Si este es el caso" el nombre de la
funcin tendr( asociado un valor. /simismo el tipo puede adoptar el valor void en cuyo caso" la funcin no
tendr( asociado valor alguno a su nombre.
%l nombre de la funcin es una etiqueta" que identifica de manera 0nica a la funcin dentro de un programa
y que servir( para !acer referencia a ella. %sta etiqueta puede estar constituida por !asta 12 caracteres que
pueden ser n0meros" letras del alfabeto anglosajn y algunos caracteres especiales. %l nombre de una
funcin nunca iniciar( con un n0mero.
as lista de argumentos est( constituida por la definicin de una serie de contenedores que servir(n como
recept(culo de la informacin que es transferida a la funcin al ser invocada su ejecucin.
3or ejemplo#
int potencia4int base" int e$ponente56
float faren!eit/Celsius4double celsius5
7mplementacin de *unciones
int potencia4int base" int e$ponente5
8
sentencias6
9
a primera lnea se escribe igual que en la declaracin" pero sin el punto y coma.
COMO RETORNA
Si la funcin debe generar un valor" lo retornar( usando la sentencia return dentro del cuerpo de la funcin.
a forma de usarla es#
return 4variable o e$presin que se debe retornar56
%sto especifica que la funcin debe terminar" retornando el valor calculado.
&ay funciones que no retornan datos" en este caso" se puede usar return" pero sin mencionar una e$presin.
Ret#rn)
USO DE LA FUNCIONES
Como las funciones siempre retornan un valor" el uso de una funcin consiste en utilizar el valor de retorno.
Se lo puede !acer de dos formas#
/lmacenar el valor de retorno en una variable que deber( ser del mismo tipo de dato que el tipo de dato de
retorno de la funcin.
-tilizar el valor de retorno en una e$presin
PASO PARAMETROS
%n el programa principal" se calcula el factorial de i.
%n la funcin se calcula el factorial de n
:Cmo es que !ay diferentes identificadores para el mismo valor;
a respuesta esta muy relacionada con el concepto de argumento#
%n el programa principal" i representa el argumento enviado a la funcin *actorial.
%n la funcin *actorial" alguna variable debe recibir el enviado" para representar dic!o valor. %sta variable
puede tener cualquier nombre" en este caso se le dio el nombre n.
-na variable definida en la cabecera de una funcin" que sirve para recibir el valor de un argumento" se
conoce como par(metro.
%<%'3=
>include ?stdio.!@
>include ?simpio.!@
AADeclaracin de funciones
int *actorial 4int n56
void main45
8
int i6
for 4i B C6 i ? 2C6 i DD5
printf4EdFn" *actorial4i556
9
int *actorial 4int n5
8
int fact" i6
fact B 26
for4i B 26 i ?Bn6 iDD5
fact B fact G i6
return 4fact56
9
FUNCION *OID
Hoid significa que una funcin no recibe o no devuelve ning0n tipo de dato.
%j# int algo4void56 AAsignifica que la funcin no recibe parametros" 4tambi)n se puede dejar en blanco5 y
devuelve un entero.
%jI# void algo4int dato56 es una funcin que !ace algo con el dato" pero no devuelve nada.
*ARIA+LES GLO+ALES Y LOCALES
-na ,!ri!be o$! es aquella cuyo (mbito se restringe a la funcin que la !a declarado se dice
entonces que la variable es local a esa funcin. %sto implica que esa variable slo va a poder ser
manipulada en dic!a seccin" y no se podr( !acer referencia fuera de dic!a seccin. Cualquier
variable que se defina dentro de las llaves del cuerpo de una funcin se interpreta como una
variable local a esa funcin.

Cuando una variable $ es local a una funcin func2" significa que la funcin func2 es la propietaria
de dic!a variable" y puede acceder a ella y modificarla. Si cualquier otra funcin del programa
necesita conocer el valor de la variable $" es la funcin func2 la que debe transferir el valor de $ a
trav)s del paso de argumentos en la llamada a la funcin. Si adem(s esta funcin desea modificar el
valor de dic!a variable" entonces tendr( que devolver el nuevo valor a func2" y ser( func2 quien se
encargue de asignar el valor devuelto a su variable $.
%<%'3=
func245
8
int $6
$ B 2C6
9
funcI45
8
int $6
$ B 22C6
9
/qui la variable $ se declara dos veces" una vez en la func245 y otra en func45. $ de la func245 no tiene
cone$ion o relacion con la $ de la funcI45 ya que cada $ se conoce slo por el cdigo que est( en el mismo
bloque que la declaracin de la variable
-na ,!ri!be 'ob! es aquella que se define fuera del cuerpo de cualquier funcin" normalmente al principio
del programa" despu)s de la definicin de los arc!ivos de biblioteca 4>include5" de la definicin de constantes
simblicas y antes de cualquier funcin. %l (mbito de una variable global son todas las funciones que
componen el programa" cualquier funcin puede acceder a dic!as variables para leer y escribir en ellas. %s
decir" se puede !acer referencia a su direccin de memoria en cualquier parde del programa.
%<%'3=#
>include ?stdio.!@
int cont6 AGcontador globalGA
void main45
8
cont B 2CC6
func2456
9
func245
8
funcI456
printf4Jcont es EdJ"cont56 AGimprimio 2CCGA
9
funcI45
8
int cont6
for 4contB26cont?2C6contDD5
printf4JGJ56
9
Si se estudia" se aclara que" ni la main45" ni func245 tienen declarada la variable cont" ambas la usan. Sin
embargo " la funcI45 !a declarado una variable local llamada cont. Cuando se referencia con" funcI45
referenciar( solo a su variable local. Ko a la global.
%l uso de variables globales no es aconsejable a pesar de que aparentemente nos parezca muy 0til" esto se
debe a varias razones fundamentales#


egibilidad menor.

Kos condiciona en muc!os casos que el programa slo sirvapara un conjunto de casos
determinados.

%l uso indiscriminado de variables globales produce efectos colaterales. %sto sucede cuando
e$iste una alteracin no deseada del contenido de una variable global dentro de una funcin"
bien por invocacin" bien por olvidar definir en la funcin una variable local o un par(metro
formal con ese nombre. a correccin de dic!os errores puede ser muy ardua.

/tenta contra uno de los principios de la programacin" la modularidad. %l bajo
acoplamiento supone no compartir espacios de memoria con otras funciones" y potenciar el
paso de informacin 4llamadas5 para que la funcin trate la informacin localmente.

as variables declaradas dentro de una funcin son autom(ticas por defecto" es decir" slo e$isten
mientras se ejecuta la funcin. Cuando se invoca la funcin se crean estas variables en la pila y se
destruyen cuando la funcin termina. a 0nica e$cepcin la constituyen las variables locales
declaradas como est(ticas 4 static 5. %n este caso" la variable mantiene su valor entre cada dos
llamadas a la funcin a0n cuando su visibilidad sigue siendo local a la funcin.

-na funcin siempre es conocida por todo el programa" e$cepto cuando se declara como est(tica" en
cuyo caso slo la podr(n utilizar las funciones del mismo mdulo de compilacin.


%n C" todas las funciones est(n al mismo nivel de (mbito. %s decir" no se puede definir una funcin
dentro de otra funcin. %sto es por lo que C no es t)cnicamente un lenguaje estructurado en bloques.


Lambi)n puede suceder que en un mismo (mbito aparezcan variables locales y globales con el
mismo nombre. Cuando sucede esta situacin" siempre son las variables locales y argumentos
formales los que tienen prioridad sobre las globales
%n la funcin *actorial se usa una variable i" y en el programa principal se usa otra variable i" pero no parece
que se usaran para lo mismo" :son diferentes;.
De !ec!o" si son diferentes.
Cada funcin puede usar sus propias variables" y estas slo ser(n v(lidas dentro de la funcin" se conocen
como variables locales
*ARIA+LES AUTOMATICAS
=tro aspecto relacionado con la definicin de da tos en C" son las clases de almacenamiento.
.stas est(n referidas al lugar de memoria donde se deposita la informacin correspondiente a una variable y
al alcance de la misma.
as clases de almacenamiento son cuatro# autom(ticas" registro" est(tica y e$terna.
AUTOM-TICAS
as variables autom(ticas son aquellas que usadas ordinariamente. /unque se puede utilizar la palabra clave
auto para declararlas" su uso no es obligatorio" de tal forma que al no colocar de manera e$plcita la clase de
almacenamiento de una variable" el compilador asumir( que se trata de una variable autom(tica.
%l alcance de una variable autom(tica se limita al bloque en el cual
aparece. 'ientras dic!o bloque se est) ejecutando" la variable e$iste. Lan pronto como el bloque en cuestin
finaliza su ejecucin" la variable deja de e$istir. %n este caso e$istir significa ocupar espacio en memoria.
Si una variable autom(tica es declarada fuera de cualquier funcin" su alcance ser( global 4cualquier funcin
podr( tener acceso a ella5 y su perodo de vida ser( igual al de la aplicacin donde se encuentra. 3or el
contrario" si una variable autom(tica es declarada dentro de una funcin" su alcance estar( restringido a la
funcin en cuestin y su tiempo de vida" ser( igual al tiempo que tome en ejecutarse dic!a funcin. Si la
funcin es invocada varias veces durante la ejecucin de una aplicacin" cada vez las variables locales
4autom(ticas declaradas dentro de la funcin5 comienzan su e$istencia y al finalizar la funcin" terminan.
Cada renacer de una misma variable local" no guarda relacin alguna con un caso anterior.
EST-TICA
as variables est(ticas proporcio nan a una funcin la capacidad de recordar lo !ec!o en una instancia
anterior.
a clase de almacenamiento est(tica" obliga al compilador a reservar espacio de memoria en el segmento de
datos para una variable a0n cuando )sta sea local. %sto provoca que dic!a variable tenga una vida 0til igual a
la de la aplicacin en su totalidad. %sto !ace que variables locales" una vez inicializadas" no desaparezcan
sino !asta que finalice su ejecucin la aplicacin. %sto permite que el contenido de dic!a variable local
conserve el 0ltimo valor de una instancia a otra de ejecucin de la funcin que la contiene.
a palabra clave para declarar una variable est(tica es static
a forma de declarar una variable est(tica es como se muestra a continuacin#
static int estatus6
static long double /justeB C.MNONOI1N6

También podría gustarte