datos locales y globales

Upload: joine0

Post on 07-Aug-2018

212 views

Category:

Documents


0 download

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/