Hola, bienvenido de nuevo.
En esta conferencia, quiero hablar sobre variables locales y globales.
Este es realmente el concepto de función alcance o en el alcance general del programa.
Tiene que ver con cuando puede usar variables y
cuándo no puede usarlas.
Sabemos qué son las funciones.
Entonces ahora quiero hablar sobre variables locales.
Las variables locales realmente tienen que ver aunque con algo más que funciones.
Las variables locales tienen que ver con cualquier cosa que tenga un bloque de código.
Entonces las variables definidas dentro de una función se conocen
como variables locales automáticas.
Entonces en ese cuerpo de función, en el medio esos corchetes de
inicio y final, si declara una variable, que variable es una variable local.
Se creará automáticamente cada vez que se llama a la función.
Además, cualquier valor en el el acceso a esa variable es solo
local a la función.
No puedes acceder a esa variable fuera de esa función.
Entonces no se puede acceder a la variable en otras funciones si es
local a una función específica.
Solo es accesible desde donde está definido.
Si se da un valor inicial a una variable
dentro de una función, ese valor inicial es asignado a la variable cada vez que
se llama a la función.
Si desea conservar un valor en una variable en cada llamada posterior, en realidad hay
una manera de hacerlo en c, se la denomina como una variable
estática dentro de una función.
Eso es, de nuevo, más avanzado concepto no en
una clase para principiantes, pero es una forma en que puede en realidad
tienen datos diferentes cada vez que invocas funciones.
Entonces, si quisieras, por ejemplo, mantener un contador de cuántas veces se llamó a una
función, declararías un variable local dentro de ese nombre de función
estática, con una palabra clave estática.
Pero sin solo regular las variables locales tendrán
nuevos valores cada vez.
Puede utilizar la palabra clave auto antes el tipo de datos, pero no es necesario.
Lo hace un un poco más preciso.
El compilador lo agregará predeterminado si no lo incluye.
Pero si lo incluye, es solo
voy a hacerlo más preciso, no es necesario.
Entonces se llama variable local automática.
Hay una palabra clave llamada auto en c, pero no es necesario que lo
proporcione de forma predeterminada, y es por eso que no lo ve en muchos
ejemplos donde se definen variables y declarado dentro de una función.
Las variables locales también son aplicables a cualquier código donde la variable se crea
en un bloque, bucles o sentencias if.
Nuevamente, si tiene una declaración if en lo que es un bloque para una declaración if,
es solo donde comienzan los corchetes.
Eso se conoce como bloque.
Los bloques pueden estar en funciones, los bloques pueden ser sentencias if, los
bloques pueden estar en bucles.
Los bloques pueden estar en cualquier lugar que hay corchetes, esencialmente.
En cualquier lugar que haya corchetes y creas esa variable.
La creación de la variable está declarando y tal vez asignándole valores.
Pero si declaras esa variable, creas esa variable dentro
de un bloque, solo puedes usar esa variable dentro del bloque.
Si intentas acceder a eso variable fuera del bloque, no
se utilizará.
Entonces, si tiene una declaración if, dentro de la declaración
if declaras una variable, puedes acceder esa variable fuera del bloque de instrucciones
if, lo mismo con los bucles.
Es muy importante para entender esto.
El compilador se va a quejar y le dará un error si
intenta acceder a él en otro lugar.
Y lo que esto significa es el Los valores en los datos solo
son aplicables a ese bloque.
No está compartiendo ningún dato.
Las variables globales son las opuesto a una variable local.
Se puede acceder a las variables globales por cualquier función en el programa.
La forma en que creas un variable es simplemente ponerla en la parte
superior fuera de cualquier función.
Entonces las variables globales se declaran fuera de la función y no
pertenecen a ninguna función.
Recuerde, la palabra clave principal el principal es una función.
Entonces, cualquier variable definida en la función principal solo es accesible
en la función principal.
Entonces las variables en el principal función no son accesibles en
ninguna otra función.
Si quieres una variable que sea utilizado por todas las funciones, coloca la variable fuera de
una función, por lo general en la parte superior del archivo de
origen y, por lo general, marcarlo como diciendo que esto es una variable global.
La variable global es una mentira para la totalidad del programa desde que comienza el
programa hasta que se detiene, esa variable global se ubicará
en la memoria.
Cualquier función del programa puede cambiar el valor de esa variable global porque tienen acceder a
él, pueden modificarlo.
Y entonces deberías empezar a pensar sobre wow que parece un poco peligroso porque ahora tienes código
que puede acceder a los mismos datos en cualquier
lugar, pero llegaremos a eso.
Si hay una variable local declarada en una
función con el mismo nombre que una variable global, entonces eso La función usará la variable local,
enmascarará la variable global.
Entonces, si tiene una variable global llamada x y tiene una variable local
llamada x dentro de una función, el local la variable va a tener prioridad.
No va a modificar los datos de las variables globales.
Si le asigna a eso variable, solo va
a modificar la variable local.
Entonces la variable global no es accesible cuando tienes el mismo
nombre, y en realidad no ser accedido dentro de esa función local, así
que no use el mismo nombres básicamente porque va
a ser confuso.
Para personas que han programado muchos, los programadores avanzados se dan
cuenta de esto de inmediato.
Ellos dirán hey esto solo actúa, es solo modificar la
variable local incluso si ven un verbo global con el mismo nombre.
Pero para los principiantes, es no siempre muy claro.
Dejame darte un ejemplo.
Aquí, en este ejemplo, estamos creando una variable global en la parte
superior antes de la función principal.
Y la forma en que quieres organizar su programa generalmente le
pide que incluya declaraciones en la parte superior después de algunas comentarios tal vez, y luego puede
tener algunas constantes definidas y luego tendría sus variables globales.
Las variables globales se ven simplemente como variables normales.
Es solo donde están realmente declarado.
Si se declaran fuera de una función, entonces son globales.
Entonces, en este ejemplo, tenemos un variable global llamada my global.
Lo estamos inicializando a 0.
También podemos inicializar estos variables globales en cualquier lugar.
Podemos inicializarlos cuando los declaramos o podemos
inicializarlos en cualquier función.
Es un entero.
También tenemos dos funciones, la función principal en una
función llamada mi función.
Allí dentro, tenemos locales variables a las que solo se puede
acceder dentro de esas funciones.
En la función principal, tenemos un mi principal local.
Solo puedes acceder a mi local main dentro de la función principal.
Pero porque mi global es una variable eso es global, también puede acceder a eso
en la función principal.
Entonces el principal puede acceder a dos variables, lo local y lo global.
Y mi función tiene una variable local llamado x porque se declara dentro
de los corchetes del cuerpo de la función y podemos acceder a la variable global
que es mi global.
También podemos acceder a x, pero no podemos acceder a mi local.
Mi principal local debería decir.
Porque mi principal local es solo dentro de la función principal.
No tenemos acceso a eso.
Si intentamos escribir o leer mi variable principal local dentro de la función
my, el compilador es te va a dar un error.
Necesitas entender esto concepto de local versus global.
Los locales están dentro de bloques de código.
Cuando se declaran, puedes Úsalos solo en el bloque.
Si una variable está fuera de un bloque y está solo en una función o solo en
el programa en sí, puedes acceder a él en cualquier función.
Deben evitarse las variables globales.
Las variables globales son algo malo.
El motivo de ellos para global las variables son malas y la razón
por la que debe evitarlas es porque promueve el acoplamiento entre funciones.
¿Qué significa acoplamiento?
Acoplamiento significa dependencias.
Si tienes una variable global y está siendo utilizado por
cuatro funciones, eso significa que cada una de esas funciones podría depender
de la otra función.
¿Qué pasa con la dependencia?
La dependencia hace que un programa sea mucho más difícil de depurar y encontrar errores.
Si tiene un error en su programa y estás usando una variable
global y la variable global está causando el error, ahora ese error podría estar en
cualquier lugar de cualquier función que usando esa variable global.
Complica las cosas cuando tienes datos globales.
Tienes una variable global, podría modificarse en la función uno, función
dos, función tres, función cuatro.
No estás restringiendo el acceso a eso. También es muy difícil una vez que
encuentra el error y lo aísla, puede ser
muy difícil arreglarlo.
Porque ahora, cuando lo arregles, puedes causar problemas en otras funciones
debido a estas dependencias.
Las variables globales deben ser evitado tanto como sea posible
debido a este acoplamiento, debido a estas dependencias.
Hay momentos en los que puede necesitar para usarlo, pero debes evitarlo.
Y para tener en cuenta la mayoría lenguajes modernos en la mayoría de lenguajes
orientados a objetos como c ++ y java, ni siquiera tienen el
concepto de variable global.
Tienen variables estáticas que pueden ser variables de clase, pero todavía están
encapsuladas dentro de una clase.
Porque los datos globales son tan Lo malo es que los
nuevos lenguajes intentan prohibirlo.
Y deberías intentar evitar porque simplemente complica su programa
y lo hace más difícil de encontrar y depurar errores.
En lugar de usar global datos, pasar datos a funciones.
Si una función necesita acceso a algunos datos, páselos.
Si, si es una gran cantidad de datos y no quiere tener muchos parámetros,
en teoría, nunca debería realmente tener más de cinco parámetros.
Hay un gran libro llamado Código limpio que habla sobre la calidad
del código y cosas que se deben evitar. cosas para evitar como variables globales.
También habla de cómo muchos parámetros que debe
tener en sus funciones.
Y si una función tiene 20 parámetros, es una indicación de que algo
anda mal, principalmente porque esa función probablemente esté haciendo demasiado.
Pero una función puede tener acceso a datos simplemente pasándole los datos y puede restringir el
uso de datos globales.
Y para una función que requiere mucho datos, puede usar
algo llamado estructura de la que no hemos hablado pero esa es otra forma de hacerlo.
Así que no uses tanto datos globales como sea posible solo cuando sea necesario.
Asegúrese de comprender el código.
Asegúrate de documentar realmente, muy bien.
Para que alguien más mire en el código sabe
inmediatamente que estás usando datos globales y sabe como funciona todo.
Este es el concepto de alcance de la función.
Deberías entender esto, así que preste atención a todas estas diapositivas.
Y también usaremos algunos datos globales y algunos datos locales
en nuestro próximo desafío. Gracias.