Globální proměnná: Porovnání verzí

Přidáno 74 bajtů ,  před 6 lety
upřesnění, opravy
(zřejmý {{Překlad|en|Global variable|679535911}})
(upřesnění, opravy)
{{ověřit}}
'''Globální proměnná''' je v počítačovém [[programování]] proměnáproměnná s globálním rozsahem, tím je myšleno, že je viditelná (tedy přístupná) v celém programu, pokud nenína skrytá-shadowedkontexty, v nichž je ''zastíněná'' (tj. překrytá lokální proměnnou se stejným jménem). Soubor všech globálních proměnných je známý jako globální prostředí nebo globální stav. V komplikovaných jazycích, globální proměnné jsou obecně statické proměnné, které jsou dostupné po celou dobu běhu [[program|programu]]. Ačkoliv v případě interpretovaných [[programovací jazyk|programovacích jazycích]] (včetně [[příkazová řádka|příkazové řádky]]), jsou globální proměnné alokovány dynamicky při jejich [[deklarace (programování)|deklaraci]], jelikož nejsou známy předem.
 
V některých jazycích jsou ve výchozím nastavení všechny [[proměnná|proměnné]] globální , ale ve většině moderních jazyků mají proměnné omezenou působnost (například Lexikální omezení). Globální proměnné jsou pak deklarovány často ve vyšší úrovní programu. V jiných jazycích globální proměnné neexistují. Obecně to jsou [[modulární programování|modulární programovací jazyky]], které prosazují modulární strukturu, nebo [[objektově orientované programování|objektově orientované programovací jazyky]], které dostupnost proměnných řeší strukturou [[třída (programování)|tříd]].
Interakce mechanismů s globálními proměnnými se nazývá globální prostředí. Paradigma globálního prostředí je opakem pro paradigma lokálního prostředí, kde mají všechny proměnné lokální, nesdílnou paměť (a proto veškeré interakce mezi nimi pracují pomocí přeposílání zpráv).
 
Jsou obvykle považovány za nepřesné. Globální proměnáproměnná může být potencionálně upravována odkudkoliv a kterákoliv část programu na ni může záviset. (pokud není umístěna v [[Počítačová paměť|chráněné paměti]] anebo určená pouze pro čtení). Globální proměnná proto má neomezený potenciál pro vytváření vzájemné závislosti, a přidáním vzájemné závislosti zvyšuje složitost. Globální proměnné ztěžují včlenění modulů, protože v [[software|softwaru]], kerýkterý byl napsán někdýmněkým jiným, mohla být použítapoužita stejná globální jména s vyjímkouvýjimkou jmen, které byly vloženy na základě dohody nebo konvecekonvence pojmenování. Nicméně v některáchněkterých případech může být použití globálních promněnýchproměnných vhodné. Například můžou být využity k tomu, aby se zabránilo nutnosti neustále procházet často využívané proměnné v několika [[podprogram|funkcích]]. V praxi je to tak, že velké programy mohou vysloveně vyžadovat velký počet globálních proměnných, Velké programy obsahovajíobsahují mnoho [[parametr funkce|parametrů]], které jsou sdíleny mezi různými funkcemi. V tomto případě musíme dbát na to, abychom se ujistili, že sdílení globálních dat mezi funkcemi bude probíhat bez nehody.
 
Globální proměnné jsou značně používány pro předávání informací mezi částmi [[kód|kódu]], které nesdílí takzavanýtakzvaný vztah volajícího/volaného (caller/callee) jako souběžné podprocesy či signální manipulátory. V jazycích (včetně C), kde každý soubor definuje implicitní jmenný prostor, se většina problémů s globálními proměnnými eliminuje oproti jazykům s globálním jmenným prostorem. Bez správného zamykání (jako např. [[Vzájemné_vyloučenívzájemné vyloučení|mutex]]), je kód používající globální proměnné nebezpečný s výjimkou proměnných jen pro čtení, které se nacházejí v chráněné paměti.
 
==Systémové proměnné==