PDF de programación - 4. Funciones - Introducción al lenguaje C

Imágen de pdf 4. Funciones - Introducción al lenguaje C

4. Funciones - Introducción al lenguaje Cgráfica de visualizaciones

Publicado el 26 de Septiembre del 2020
1.022 visualizaciones desde el 26 de Septiembre del 2020
870,6 KB
11 paginas
Creado hace 12a (29/11/2011)
Introducción al lenguaje C
4. Funciones

Un programa C va a estar compuesto de una o más funciones repartidas en uno o más
módulos de código. Como ya se vio, en un programa en C al menos siempre existirá una
función main que será el punto de entrada al programa.

4.1. Declaración y definición de funciones
En C, se hace distinción entre una declaración y una definición. Una declaración, simplemente
indica al programa que se va a utilizar un identificador y cómo se va a utilizar. Una definición
indica al compilador cómo se va a almacenar un identificador.

Cuando se declara una variable, por ejemplo con

double total;

se está haciendo al mismo tiempo una declaración y una definición: se indica al programa que
se va a utilizar una variable total como un dato de tipo double y, al mismo tiempo, se está
reservando espacio en memoria para almacenar un dato de tipo double.

Sin embargo, cuando se trata de funciones se considera diferente la declaración de la función
de la definición de la misma.

4.1.2. Definición de funciones
El formato de definición de una función sería el siguiente:

tipoDato nombreFunción([listaParámetrosFormales]){
//Cuerpo de la función

[return expresiónDeRetorno]
}

Una función devuelve un dato, por lo que será necesario indicar el tipo de dato que devuelve.
tipoDato podrá contener alguno de los tipos de datos utilizados para la declaración de
variables y que aparecen en la tabla 1

Tabla 1. Tipos de datos

Especificador de tipo
char
signed char
unsigned char
short, signed short, short int, o signed short int
unsigned short, o unsigned short int
int, signed, or signed int
unsigned, or unsigned int
long, signed long, long int, o signed long int



Introducción al lenguaje C
UPSAM, Escuela Superior de Ingeniería y Arquitectura, Luís Rodríguez Baena, 2011



1

Especificador de tipo
unsigned long, or unsigned long int
long long, signed long long, long long int, o signed long long int
unsigned long long, o unsigned long long int
float
double
long double

En algunos casos la función no devolverá un valor. En esos casos se utiliza la palabra reservada
void como tipo de la función para indicar que el valor de retorno de la función no está
requerido, como ocurre en los procedimientos.

El nombreFunción será un identificador válido. Normalmente, una función devolverá un
valor a partir de los datos que se le pasan como argumentos. En la cabecera de la declaración
deberán constar el nombre de los argumentos y el tipo de cada uno de ellos en la
listaParámetrosFormales. Si una función no tiene parámetros, en su llamada se
incluirá un parámetro void para indicar que se trata de un dato no requerido.

Dentro del cuerpo de la función podrá aparecer la sentencia return. return indicará cuál
es el valor de retorno de la función. Por ejemplo, en la siguiente función:

int funcion1(void){
return 2;
}

se devolverá el valor entero 2.

Ejemplo: Función Factorial
int factorial(int n){
int f=1;

for(int i=2;i<=n;i++)
f *= i;
return f;
}

La función factorial recibe un argumento entero (n) y devuelve el acumulador de
multiplicaciones f que, al final del proceso, guardará el factorial de n.

La llamada a la función factorial se podría hacer…

printf(“Factorial de 5: %i”,factorial(5));
b = factorial(a+3);
scanf(“%i”,n);
printf(“Factorial de 5: %i”,factorial(n));
c = factorial(factorial(3));
factorial(6);

La última llamada devolvería el valor 720. En C no sería sintácticamente incorrecta, pero no
tendría ningún efecto en el programa.



Introducción al lenguaje C
UPSAM, Escuela Superior de Ingeniería y Arquitectura, Luís Rodríguez Baena, 2011



2

La función main
La función main de un programa C es una función como cualquier otra. Su formato estándar
es:

int main(void){

return 0;
}

Esto indica que se trata de una función que devuelve un argumento de tipo entero y que no
recibe parámetros. Normalmente no se indica el valor de retorno, aunque es posible ponerlo.
El valor de la expresión de retorno sería el que la función devolvería al sistema operativo.

Existe otro formato de la función main.

int main(int argc,char *argv[]){
...
return 0;
}

En este caso, la función recibe dos argumentos, un argumento entero (argc) con el número
de parámetros que se le pasan y array de cadenas (argv) con cada uno de los argumentos que
se han pasado. En ambos casos el nombre del programa al que se llama se trataría también de
un argumento.

Por ejemplo, en el siguiente programa:

int main(int argc, char *argv[]){
int i;
printf("Nombre del programa: %s\n",argv[0]);
printf("Primer argumento: %s\n",argv[1]);
printf("Segundo argumento: %s\n",argv[2]);
return 0;
}

La llamada miprograma hola adios

argc se cargaría con el valor 3 y argv tendría tres elementos: el propio nombre del
programa (en el elemenento 0, al que se accede con argv[0]), la cadena “hola” (en el
elemento 1 al que se accede por argv[1]) y la cadena “adios” (en el elemento 2 al que se
accede por argv[2]).

4.1.3. Declaración de funciones: prototipos de funciones
Cuando se define una función se indica, además del nombre, tanto el tipo de dato que
devuelve como el número, orden y tipo de argumentos. Sin embargo el compilador de C no
comprueba si el tipo de la función o el tipo, número y posición de los argumentos coinciden.
Por ejemplo si tenemos definida la siguiente función…

int f1(int a, int b){
return a+b;
}



Introducción al lenguaje C
UPSAM, Escuela Superior de Ingeniería y Arquitectura, Luís Rodríguez Baena, 2011



3

y se la llama con un número de argumentos distinto,

c=f1(3);

el compilador no detecta ningún error sintáctico, pero, sin embargo, los resultados serán
incongruentes ya que en la llamada falta un argumento entero.

Para evitar esto, es conveniente declarar previamente la función para indicar al compilador la
existencia de una función de un tipo determinado, con un nombre concreto y unos
argumentos precisos. A esta declaración se le llama el prototipo de la función y advierte al
compilador de la existencia de la función. Si añadimos un prototipo de la función y se realiza
una llamada errónea, el compilador dará un error.

El prototipo de la función se declara de la siguiente forma:

tipoDato nombre(tipoArgumento1, tipoArgumento2,…tipoArgumentoN);

Los prototipos de funciones se declaran en el módulo de código principal fuera de cualquier
función y antes de realizar la primera llamada a la función. Normalmente se agruparán todos
los prototipos de funciones al comienzo del archivo fuente, después de las directivas del pre-
procesador.

En el siguiente archivo fuente…

#include <stdio.h>

int f1(int,int); //Prototipo de la función

int main(void){
//Llamada a la función con un solo argumento
printf(“%i”,f1(3));
}

El compilador detectará que la llamada a la función f1 sólo presenta un argumento entero,
mientras que el prototipo requiere dos enteros, por lo que se generará un error de
compilación. Es preferible que el compilador detecte un error sintáctico que intentar averiguar
por qué los resultados no son los esperados, por lo que siempre que se utilicen funciones es
conveniente definir su prototipo.

4.1.4. Funciones que no devuelven ningún valor
Aunque en C podemos hacer caso omiso del valor que devuelve una función, también es
posible definir funciones que no devuelven ningún valor. El tipo de dato void se utiliza para
referenciar un tipo de dato en aquellos casos en los que no está definido (ver más abajo la
función contador).

También es posible definir funciones que no devuelven ningún valor (procedimientos)
indicando que el tipo de dato devuelto es void. Por ejemplo, una función que escriba un
número al revés.

void escribirNumeroAlReves(int n){



Introducción al lenguaje C
UPSAM, Escuela Superior de Ingeniería y Arquitectura, Luís Rodríguez Baena, 2011



4

printf("%i",n % 10);
n = n / 10;

while(n >= 10){


}
printf("%i\n",n);



}

La función no devuelve ningún valor, simplemente se limita a realizar una acción: escribir un
número al revés

4.2. Ámbito o alcance de las variables
El ámbito o alcance de un identificador es la parte del programa dónde se puede utilizar, es
decir, la parte del programa desde dónde es visible. En C podemos distinguir tres tipos de
ámbitos:

 Global. Su ámbito es el archivo fuente dónde han sido definidas. Se trata de variables o



funciones externas que se definen en el archivo fuente fuera de cualquier función y
antes de su definición.
Local. Su ámbito es el bloque dónde han sido definidas. Se trata de aquellas variables
definidas dentro de un bloque, es decir entre los símbolos { y }. Las variables
declaradas dentro de una función, serán variables locales.

 Ámbito del prototipo. Cuando se declaran los argumentos en un prototipo de función,

su ámbito queda reducido a la declaración del propio prototipo.

4.2.1. Variables externas
Las variables externas se definen fuera de cualquier función y estarán disponibles desde
cualquier función. En C todas las funciones son externas ya que no es posible definir una
función dentro de otra.

El ámbito de una variable externa abarca desde el punto en que se declara hasta el final del
archivo que se está compilando. Por ejemplo, en este fragmento de código…

int main(void){
a = f1(3);
f2(4);
}
int a = 0; //definición de la variable a

int f1(double b){
return a;
}
int f2(double c){
return a;
}



Introducción al lenguaje C
UPSAM, Escuela Superior de Ingeniería y Arquitectura, Luís Rodríguez Baena, 2011



5

a la variable a se puede acceder desde f1 o desde f2, pero no desde main. El compilador
detectaría un error, ya que la variable a no ha sido declarada cuando se ha utilizado en la
  • Links de descarga
http://lwp-l.com/pdf18268

Comentarios de: 4. Funciones - Introducción al lenguaje C (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad