Está en la página 1de 4

Funciones

Del libro recomendado página 208

Como ya habrán visto en el libro, en la teoría, todo el lenguaje C se considera una función,
siendo la principal la función main()

Aparte de las funciones que proporciona el lenguaje, el usuario puede generar sus propias
funciones que dependiendo de la forma de pasar los parámetros podemos clasificarlas de dos
maneras

Por pasaje de valor (PPV)

Por referencia (PR)

Ambas funciones tiene la misma sintaxis

Que devuelven el nombre de la función (que parámetros le pasamos)

¿Que devuelven?

void ……………..no devuelve nada

int………………….devuelve un valor entero

float………………devuelve un valor flotante, etc

El nombre puede ser cualquiera, en general y lo mejor es que sea representativo de lo que
hace

Por último que le pasamos a la función, que vendrían a ser los parámetros de la función

¿Cómo y dónde escribimos las funciones?

Básicamente hay dos formas

La primera es más usada en lenguajes tipo Pascal, pero puede ser usada en C también

Declarar y definir las funciones

Main()

Llamar a las funciones

}
La segunda forma es

Declarar las funciones

Main ()

Llamar a las funciones

Definir las funciones

El orden en se declaran y definen las funciones NO interesa, SI interesa el orden en que son
llamadas

¿Qué se entiende por declarar la función?

Es el momento en que le decimo sal compilador que hemos creado una función nueva, que me
devuelve y que necesita para trabajar

¿Qué se entiende por llamar a las funciones?

Es el momento en que necesitamos y deseamos que la función se ejecute dentro de nuestro


programa

¿Qué se entiende por definición de una función?

Es donde decimos que es lo que hace una función, que operaciones se desarrollaran en ella

Como ya habrán visto, podemos tener variables definidas en las funciones, o sea que serán
locales a la función

Entonces ya tenemos dos tipos de variables , unas locales del main y otras locales de las
funciones, y aquí surge algo interesante que por más que ambas variables se llamen igual, NO
son la misma variable, ocupan distinta posición de memoria, salvo que se haya pasado una
variable como referencia

Acá surge entonces la diferencia entre una función PPV y una PR

En las funciones PPV nosotros pasamos copias de los valores de las variables del main a la
función para que estas ejecuten algún proceso, mientras que en las funciones PR pasamos la
dirección de memoria donde se encuentra la variable del main para que pueda o no ser
modificada en la función

Acá surgen ahora otras consideraciones

La mayoría de ls funciones tienen en sus parámetros mezcla de como pasar sus variables,
pueden ser como copia o como puntero

Cuando pasamos un array sea uni o bidireccional siempre por definición del lenguaje pasa por
referencia no necesitando hacerlo como puntero
Veamos algunos ejemplos, donde calcular sdo puede hacerse PPV o PR, todo depende como lo
planteemos

Zona de declaración

int calcularsdo (int, int);

void imprimir (int);

void calcularsdo1( int*, int, int);

void sumasdocat ( int[], int, int);

int main( )

sdo = calculasdo( ch, vh );

imprimir (sdo);

calcularsdo1 ( & sdo, ch, vh );

sumasdocat( vectorsuma, sdo, cat);

int calcularsdo (int a, int b)

Int c;

Return c;

void imprimir (int sdo)

void calcularsdo1( int * sdo, int a, int b)

void sumasdocat ( int vectorsuma[10], int sdo, int cat)

Si Uds. se fijan por una cuestión de facilidad usamos todas las variables de tipo int, pero dentro
de una función pueden haber variables y arrays de todo tipo tanto como parámetros como de
devolución
Ejercitación de funciones

Donde sea posible aplique pasaje de parámetros por ambos métodos PPV y PR

 Transforme a funciones 4 ejercicios de estructuras secuenciales


 Transforme a funciones 4 ejercicios de estructuras condicionales
 Transforme a funciones 4 ejercicios de estructuras repetitivas de tipo exacto
 Transforme a funciones 4 ejercicios de estructuras repetitivas de tipo no exacto
 Transforme a funciones 4 ejercicios de vectores
 Transforme a funciones 4 ejercicios de matrices
 ¿Qué ocurre si se aplicó una función de tipo PR a una función que hace un scanf de un
dato?

También podría gustarte