Bonjour, bienvenue à nouveau.
Dans cette conférence, je veux parler sur les variables locales et globales.
C'est vraiment le concept de fonction portée ou dans la portée générale du programme.
Cela a à voir avec quand vous pouvez utiliser des variables et lorsque vous
ne pouvez pas les utiliser.
Nous savons ce que sont les fonctions.
Alors maintenant je veux parler sur les variables locales.
Les variables locales doivent vraiment faire avec plus que de simples fonctions.
Les variables locales ont à voir avec tout ce qui a un bloc de code.
Donc les variables définies à l'intérieur d'une fonction sont
appelées variables locales automatiques.
Donc dans ce corps de fonction, entre les deux ces parenthèses de début
et de fin, si vous déclarez une variable, que variable est une variable locale.
Il sera automatiquement créé chaque fois que la fonction est appelée.
De plus, toutes les valeurs du l'accès à cette variable est uniquement
local à la fonction.
Vous ne pouvez pas accéder à cette variable en dehors de cette fonction.
Donc, la variable n'est pas accessible dans d'autres fonctions si elle est
locale à une fonction spécifique.
C'est seulement accessible d'où il est défini.
Si une valeur initiale est donnée à une variable
à l'intérieur d'une fonction, cette valeur initiale est affectée à la variable à chaque
appel de la fonction.
Si vous souhaitez conserver une valeur dans une variable à chaque appel suivant, il existe en
fait un moyen de le faire en c, on l'appelle comme une
variable statique à l'intérieur d'une fonction.
C'est, encore une fois, plus avancé concept pas dans une classe
pour débutants, mais c'est un moyen que vous pouvez ont en fait des données
différentes à chaque fois que vous appelez des fonctions.
Donc si vous vouliez par exemple garder un compteur du nombre de fois qu'une fonction a été
appelée, vous déclareriez un variable locale à l'intérieur de ce nom de
fonction static, avec un mot-clé static.
Mais sans juste régulier les variables locales auront de nouvelles
valeurs à chaque fois.
Vous pouvez utiliser le mot-clé auto avant le type de données, mais ce n'est pas nécessaire.
Cela en fait un un peu plus précis.
Le compilateur va l'ajouter par par défaut si vous ne l'incluez pas.
Mais si vous l'incluez, c'est juste pour
le rendre plus précis, ce n'est pas nécessaire.
Donc ça s'appelle un variable locale automatique.
Il y a un mot-clé nommé auto en c, mais vous n'avez pas besoin de
le fournir par défaut, et c'est pourquoi vous ne le voyez pas dans beaucoup
d'exemples où des variables sont définies et déclaré à l'intérieur d'une fonction.
Les variables locales sont également applicables à tout code où la variable est créée dans
un bloc, des boucles ou des instructions if.
Encore une fois, si vous avez une instruction if dans qu'est-ce qu'un bloc
pour une instruction if?
C'est ce qu'on appelle un bloc.
Les blocs peuvent être dans des fonctions, les blocs peuvent être des instructions if,
les blocs peuvent être en boucles.
Les blocs peuvent être n'importe où il y a des crochets, essentiellement.
Partout où il y a des crochets et vous créez cette variable.
La création de la variable déclare et peut-être lui attribuer des valeurs.
Mais si vous déclarez cette variable, vous créez cette variable à l'intérieur
d'un bloc, vous ne pouvez utiliser que cette variable à l'intérieur du bloc.
Si vous essayez d'y accéder variable en dehors du bloc, il ne
sera pas utilisé.
Donc, si vous avez une instruction if, dans l'instruction if,
vous déclarez une variable, vous pouvez accéder cette variable en dehors du bloc
d'instructions if, idem pour les boucles.
C'est très important pour comprendre cela.
Le compilateur va se plaindre et vous donner une erreur
si vous essayez d'y accéder ailleurs.
Et ce que cela signifie est le les valeurs dans les données
ne s'appliquent qu'à ce bloc.
Vous ne partagez aucune donnée.
Les variables globales sont les l'opposé d'une variable locale.
Les variables globales sont accessibles par n'importe quelle fonction du programme.
La façon dont vous créez un global variable est que vous la placez simplement en
haut à l'extérieur de toute fonction.
Les variables globales sont donc déclarées en dehors de la fonction et ils
n'appartiennent à aucune fonction.
Rappelez-vous, le mot-clé principal le principal est une fonction.
Donc, toutes les variables définies dans la fonction principale n'est accessible que
dans la fonction principale.
Donc, les variables dans le principal ne sont accessibles dans
aucune autre fonction.
Si vous voulez une variable utilisé par toutes les fonctions, vous mettez la
variable en dehors d'une fonction, généralement en haut du fichier
source et marquez-le généralement comme dire que c'est une variable globale.
La variable globale est un mensonge pour l'intégralité du programme depuis le début du programme
jusqu'au moment où il s'arrête, cette variable globale va être
localisée en mémoire.
Toute fonction du programme peut changer la valeur de cette variable globale car ils ont y accéder, ils
peuvent le modifier.
Et donc tu devrais commencer à penser à propos de wow qui semble un peu dangereux parce que maintenant
vous avez code qui peut accéder aux mêmes données n'importe
où, mais nous y reviendrons.
S'il y a une variable locale déclarée dans
une fonction avec le même nom qu'une variable globale, alors que La fonction utilisera la variable locale, elle
masquera la variable globale.
Donc, si vous avez une variable globale nommée x et vous avez une
variable locale nommée x à l'intérieur d'une fonction, le local variable va avoir la priorité.
Ça ne va pas changer les données des variables globales.
Si vous assignez à cela variable, il ne
modifiera que la variable locale.
Donc, la variable globale n'est pas accessible lorsque vous avez le même
nom, et il ne sera en fait pas être accessible dans cette fonction locale,
alors n'utilisez pas la même noms essentiellement parce que ça
va être déroutant.
Pour les personnes qui ont programmé beaucoup de programmeurs
avancés l'ont immédiatement remarqué.
Ils diront hé ça juste agit simplement en modifiant
la variable locale même s'ils voient un verbe global du même nom.
Mais pour les débutants, c'est pas toujours très clair.
Laisse moi te donner un exemple.
Ici, dans cet exemple, nous sommes créer une variable globale tout
en haut avant la fonction principale.
Et la façon dont tu veux t'organiser votre programme vous fait
généralement inclure des déclarations en haut après quelques des commentaires peut-être, puis vous aurez peut-être
des constantes définies et vous aurait vos variables globales.
Les variables globales semblent justes comme des variables normales.
C'est juste là où ils sont effectivement déclaré.
S'ils sont déclarés en dehors de une fonction, alors ils sont globaux.
Donc, dans cet exemple, nous avons un variable globale appelée my global.
Nous l'initialisons à 0.
Nous pouvons également initialiser ces variables globales n'importe où.
On peut les initialiser quand nous les déclarons ou nous pouvons
les initialiser dans n'importe quelle fonction.
C'est un entier.
Nous avons également deux fonctions, la fonction principale dans
une fonction appelée ma fonction.
À l'intérieur, nous avons des locaux variables qui ne sont accessibles
qu'à l'intérieur de ces fonctions.
Dans la fonction principale, nous avons mon principal local.
Vous ne pouvez accéder qu'à mon local main à l'intérieur de la fonction principale.
Mais parce que mon global est une variable c'est global, vous pouvez également y accéder
dans la fonction principale.
Ainsi, le principal peut accéder à deux variables, le local et le global.
Et ma fonction a une variable locale nommé x car il est déclaré entre les
crochets du corps de la fonction et nous pouvons en fait accéder à la variable globale
qui est mon global.
Nous pouvons également accéder à x, mais nous ne pouvons pas accéder à ma section locale.
Mon principal local devrais-je dire.
Parce que mon principal local est seulement à l'intérieur de la fonction principale.
Nous n'y avons pas accès.
Si nous essayons d'écrire ou de lire mon variable principale locale dans la
fonction my, le compilateur est va vous donner une erreur.
Vous devez comprendre cela concept de local versus global.
Les locaux sont à l'intérieur de blocs de code.
Quand ils sont déclarés, vous pouvez utilisez-les uniquement dans le bloc.
Si une variable est en dehors d'un bloc et c'est juste dans une fonction ou c'est juste dans
un programme lui-même, vous pouvez y accéder dans n'importe quelle fonction.
Les variables globales doivent être évitées.
Les variables globales sont sorte de mauvaise chose.
La raison pour eux de global les variables sont mauvaises et pourquoi
vous devriez les éviter favorise le couplage entre les fonctions.
Que signifie le couplage?
Le couplage signifie des dépendances.
Si vous avez une variable globale et il est
utilisé par quatre fonctions, cela signifie que chacune de ces fonctions pourraient
dépendre de l’autre fonction.
Quel est le problème avec la dépendance?
La dépendance fait qu'un programme est beaucoup plus difficile à déboguer et à trouver des erreurs.
Si vous avez un bogue dans votre programme et vous utilisez une
variable globale et la variable globale cause le bogue, maintenant ce bogue pourrait être n'importe
où dans n'importe quelle fonction en utilisant cette variable globale.
Ça complique les choses lorsque vous avez des données globales.
Vous avez une variable globale, cela pourrait être modifié dans la fonction un, la fonction
deux, la fonction trois, la fonction quatre.
Vous ne restreignez pas l'accès à cela. C'est aussi très difficile une fois que vous
trouvez l'erreur et vous l'isolez, il peut être très
difficile de le réparer.
Parce que maintenant, quand vous le réparez, vous pouvez causent des problèmes dans d'autres fonctions
à cause de ces dépendances.
Les variables globales doivent être évité autant que possible du
fait de ce couplage, à cause de ces dépendances.
Il y a des moments où vous pourriez avoir besoin pour l'utiliser, mais vous devez l'éviter.
Et à garder à l'esprit le plus langages modernes dans la plupart des langages
orientés objet comme le c ++ et java, n'ont même pas le
concept de variable globale.
Ils ont des variables statiques qui peuvent être des variables de classe, mais elles sont
toujours encapsulées à l'intérieur d'une classe.
Parce que les données mondiales sont telles une mauvaise chose, de nouvelles langues
essaient en fait d'interdire.
Et tu devrais essayer d'éviter parce que cela complique simplement votre
programme et le rend plus difficiles à trouver et à déboguer les erreurs.
Au lieu d'utiliser global data, transmettez les données aux fonctions.
Si une fonction a besoin d'un accès à certaines données, transmettez-lui.
Si - si c'est beaucoup de données et que vous ne le faites pas voulez avoir beaucoup
de paramètres, en théorie, vous ne devriez jamais vraiment ont plus de cinq paramètres.
Il y a un grand livre appelé là-bas Code propre qui parle de la
qualité du code et des choses à éviter choses à éviter comme les variables globales.
Il explique également comment de nombreux paramètres que vous devriez
avoir dans vos fonctions.
Et si une fonction a 20 paramètres, c'est une indication que quelque chose
ne va pas, principalement parce que cette fonction fait probablement trop.
Mais une fonction peut avoir accès aux données en lui passant simplement les données et vous pouvez restreindre
l'utilisation des données globales.
Et pour une fonction qui prend beaucoup de data, vous pouvez utiliser
quelque chose appelé une structure dont nous n'avons pas parlé mais c'est une autre façon de faire cela.
Alors n'utilisez pas autant les données globales que possible uniquement lorsque cela est nécessaire.
Assurez-vous de bien comprendre le code.
Assurez-vous de documenter c'est vraiment très bien.
Pour que quelqu'un d'autre regarde au code sait immédiatement
que vous utilisez des données globales et sait comment tout fonctionne.
C'est le concept de portée de la fonction.
Vous devriez avoir besoin de comprendre cela, alors faites attention à toutes ces diapositives.
Et aussi nous utiliserons certains des données mondiales et des données
locales dans notre prochain défi. Merci.