datos locales y globales
TRANSCRIPT
-
8/20/2019 Datos Locales y Globales
1/3
DATOS LOCALES Y GLOBALES
En un programa procedimental (que es un conjunto de
instrucciones y sentencias) por ejemplo en c , existen dos
tipos de datos.
Las reglas de ámbito de un lenguaje son las reglas que
controlan si un fragmento de código conoce o tiene acceso aotro fragmento de código o de datos.
Datos locales que son ocultos de la función y son utilizados,
exclusiamente por la función. Estos datos locales están
estrec!amente relacionados con sus funciones y están
protegidos de modi"caciones por otras funciones
Una variable local es aquella cuyo ámbito se restringe a lafunción que la !a declarado se dice entonces que la ariable
es local a esa función. Esto implica que esa ariable sólo a a
poder ser manipulada en dic!a sección, y no se podrá !acer
referencia fuera de dic!a sección. #ualquier ariable que se
de"na dentro de las llaes del cuerpo de una función se
interpreta como una ariable local a esa función.
#uando una ariable x es local a una función func1, signi"ca
que la función func$ es la propietaria de dic!a ariable, ypuede acceder a ella y modi"carla. %i cualquier otra funcióndel programa necesita conocer el alor de la ariable x, es lafunción func1 la que debe transferir el alor de x a tra&s delpaso de argumentos en la llamada a la función. %i ademásesta función desea modi"car el alor de dic!a ariable,entonces tendrá que deoler el nueo alor a func$, yserá func$ quien se encargue de asignar el alor deuelto asu ariable x.
El argumento formal (los eremos en la siguiente sección)ámbito de un argumento formal es el mismo que el de unaariable local' el argumento formal de"nido en la cabecera deuna función sólo podrá ser accedido dentro del cuerpo dedic!a función, y no en otros lugares del programa.
-
8/20/2019 Datos Locales y Globales
2/3
Ejemplo: Se muestra la diferencia entre las variables
locales y globales, con la consiguiente diferenciación
en los ámbitos que abarcan:
Una variable global es aquella que se de"ne fuera delcuerpo de cualquier función, normalmente al principiodel programa, despu&s de la de"nición de los arc!iosde biblioteca (#include! de la de"nición deconstantes simbólicas y antes de cualquier función. Elámbito de una ariable global son todas las funcionesque componen el programa, cualquier función puedeacceder a dic!as ariables para leer y escribir en ellas.Es decir, se puede !acer referencia a su dirección dememoria en cualquier parde del programa.El u"o de aria$le" glo$ale" no e" acon"e%a$le a &e"arde 'ue a&arentemente no" &areca mu) *til! e"to "ede$e a aria" raone" fundamentale"+
• Legibilidad menor.
• os condiciona en muc!os casos que el programa sólosirapara un conjunto de casos determinados.
• El uso indiscriminado de ariables globales produce
efectos colaterales. Esto sucede cuando existe unaalteración no deseada del contenido de una ariableglobal dentro de una función, bien por inocación, bien
-
8/20/2019 Datos Locales y Globales
3/3
por olidar de"nir en la función una ariable local o unparámetro formal con ese nombre. La corrección dedic!os errores puede ser muy ardua.
• tenta contra uno de los principios de la programación,
la modularidad. El bajo acoplamiento supone nocompartir espacios de memoria con otras funciones, ypotenciar el paso de información (llamadas) para que lafunción trate la información localmente.
Las ariables declaradas dentro de una función sonautomáticas por defecto, es decir, sólo existen mientras seejecuta la función. #uando se inoca la función se crean estasariables en la pila y se destruyen cuando la función termina.La *nica excepción la constituyen las ariables localesdeclaradas como estáticas ( static ). En este caso, la ariablemantiene su alor entre cada dos llamadas a la función a*n
cuando su isibilidad sigue siendo local a la función.
+na función siempre es conocida por todo el programa,excepto cuando se declara como estática, en cuyo caso sólola podrán utilizar las funciones del mismo módulo decompilación.
En #, todas las funciones están al mismo niel de ámbito. Esdecir, no se puede de"nir una función dentro de otra función.Esto es por lo que # no es t&cnicamente un lenguajeestructurado en bloques. ambi&n puede suceder que en un mismo ámbito aparezcanariables locales y globales con el mismo nombre. #uandosucede esta situación, siempre son las ariables locales yargumentos formales los que tienen prioridad sobre lasglobales. -ara er reejado todo esto más grá"camente semuestra un ejemplo a continuación/