Informática II -
UTN - FRT
UTN – Facultad Regional Tucumán
Informática II Funciones parte 2 Funciones en C Prof. Ing. Oscar Gálvez A.T.P. Ing. César Ovejero
Informática II -
Contenidos
UTN - FRT
1.Localidad (ámbito) de variables. 1. Variables globales. 2. Variables locales. 3. Parámetros (argumentos). 2. Paso de argumentos. 1. Paso por valor. 2. Paso por referencia.
2
Informática II -
Ámbito de una variable
UTN - FRT
Ámbito de una variable: Es la porción de código en que se ve esa variable. Una variable sólo puede utilizarse dentro de su ámbito. En función de su ámbito, las variables se clasifican en variables globales y variables locales.
Variables globales Son aquellas variables que se definen fuera de cualquier función del programa. Su ámbito es todo el código posterior a su declaración. Se pueden ver y usar en cualquier función definida después.
Variables locales Son aquellas variables definidas dentro de una función. Sólo pueden verse y usarse dentro de la función en que se declaran.
Parámetros (o argumentos) Aparecen siempre en la cabecera de una función. Su ámbito es la función en la que aparecen. Al igual que las variables locales, sólo pueden verse y usarse dentro de la función en la que están.
3
Informática II -
Ejemplo de ámbito de variables
UTN - FRT
#include int b = 5, d = 4; /* Variables globales */ int f1(int a, int b) /* Argumentos */ { int c; /* Variables locales de f1 */ c = a + b; d += c; return c; } int f2(int a, int d) /* Argumentos */ { int c; /* Variables locales de f2 */ c = a + b; return c; } int main() { int a, b = 1, c = 2; /* Var. locales de main */ a = f1(b,c); printf("f1 da %d\n", a); printf("d = %d\n", d); a = f2(b,c); printf("f2 da %d\n", a); return 0; }
4
Informática II -
Ejemplo de ámbito de variables (II)
UTN - FRT
Función
Variables globales
Argumentos
Variables locales
f1
d
a, b
c
f2
b
a, d
c
main
d
a, b, c
Salida por pantalla (sólo lo de color): (globales: d=4, main: a=¿? b=1 c=2) f1 da 3 (globales: d=7, f1: a=1 b=2 c=3) (globales: d=7, main: a=3 b=1 c=2) d = 7 f2 da 6 (globales: b=5, f2: a=1 d=2 c=6) (globales: d=7, main: a=6 b=1 c=2) 5
Informática II -
Paso de argumentos
UTN - FRT
Por valor A la función se le pasa el valor de la variable/constante/expresión. Si dentro de la función se modifica el argumento, no afecta al exterior de la función, pero sí a su valor dentro de la función. Como argumentos pasados por valor se pueden usar variables, constantes y expresiones (incluyendo valores devueltos por otras funciones). Las variables que no sean vectores se pasan siempre por valor, a menos que se les ponga el & delante en la llamada a la función. ¡Ojo! No se puede pasar una variable por referencia a una función si la función no la espera por referencia.
Los argumentos son datos de entrada a la función.
Por referencia Ala función se le pasa la dirección de la variable, con lo que si dentro de la función se modifica el argumento,se verá modificada la variable que se pasó. Por referencia sólo pueden pasarse variables. Los vectores se pasan siempre por referencia. Los argumentos pueden ser datos de entrada y/o de salida a/de la función. 6
Informática II -
Ejemplo de paso de argumentos
UTN - FRT
#include void f1(int a) /* Paso por valor */ { a++; printf("f1: a = %d\n", a); } void f2(int v[1]) /* Paso por referencia */ { v[0]++; printf("f2: v[0] = %d\n", v[0]); } int main() { int v[1], a; v[0] = 10; printf("main1: v[0] = %d\n", v[0]); f1(v[0]); printf("main2: v[0] = %d\n", v[0]); f2(v); printf("main3: v[0] = %d\n", v[0]); a = 1; printf("main4: a = %d\n", a); f1(a); printf("main5: a = %d\n", a); f2(&a); printf("main6: a = %d\n", a); return 0; } 7
Informática II -
Ejemplo de paso de argumentos (II)
UTN - FRT
Salida por pantalla: main1: v[0] = 10 f1: a = 11 main2: v[0] = 10 f2: v[0] = 11 main3: v[0] = 11 main4: a = 1 f1: a = 2 main5: a = 1 f2: v[0] = 2 main6: a = 2
8