76 400
editací
(upřesnění, opravy) |
(opravy) |
||
'''Globální proměnná''' je v počítačovém [[programování]] proměnná s globálním rozsahem, tím je myšleno, že je viditelná (tedy přístupná) v celém programu, až na kontexty, 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í
== Použití ==
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
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í 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.
== Systémové proměnné ==
Systémové proměnné jsou prostředky poskytované některými [[operační systém|operačními systémy]]. Uvnitř OS [[Shell_(programování)|shellu]] (ksh v [[unix|Unixu]], [[bash]] v [[linux|Linuxu]], COMMAND.COM v DOSu a CMD.EXE ve [[Microsoft_Windows|Windows]]). Například v Unixových systémech je možné z běžné proměnné vytvořit systémovou proměnnou pomocí klíčového slova „export“. Jiný kód než v shellu přistupuje k těmto proměnným pomocí API metod, jako například getev() a setenv().
Jsou lokální uvnitř [[Proces_(program)|procesu]], ve kterém jsou deklarovány.
Když je vytvořen podřízený proces,
== Global-only a global-by-default ==
Několik nestrukturovaných jazyků, jako například starší verze: [[BASIC]], COBOL a [[FORTRAN]] (1956) poskytují pouze globální proměnné. Později Fortran II (1968) představil podprogramy s lokálními proměnnými a klíčové slovo COMMON pro přístup ke globálním proměnným. Proměnné jsou implicitně globální také v jazycích FORTH, Lua, [[Perl]] a ve většině shellů.
== Podle jazyků ==
=== C a C++ ===
Programovací [[C_(programovací_jazyk)|jazyk C]] nemá klíčové slovo global. Nicméně proměnné deklarované vně funkcí jsou v rámci souboru dostupné odkudkoli.
=== Java ===
Některé jazyky jako [[Java_(programovací_jazyk)|Java]], nemají globální proměnné. V Javě jsou všechny proměnné, které nejsou lokální, součástí konkrétní třídy. Proto jsou proměnné dostupné pouze v rámci třídy či její metody. Položky typu „static public“ jsou použity pro většinu účelů jako globální proměnné v jiných jazycích protože jejich chování je velmi podobné.
=== PHP ===
[[PHP]] má klíčové slovo „global“ a množství neobvyklých způsobů použití. Proměnné, které jsou deklarovány vně funkce jsou dostupné z celého souboru. Nicméně nejsou dostupné uvnitř funkce, pokud nejsou deklarovány jako global.
Avšak některé předdefinované proměnné, známé jako superglobální, jsou dostupné vždy. Všechna jsou [[Pole_(datová_struktura)|pole]]. Obecně se používají tak, že super-globální proměnná obsahuje všechny proměnné definované mimo funkce. Změnou jejich elementů se změní obsah původních proměnných a přidáním elementu se vytvoří proměnná nová. Super-globální proměnné $_POST a $_GET jsou velmi využívány v programování [[Webová_aplikace|webových aplikací]].
=== Ostatní jazyky ===
* V jazyce [[Python]] a [[MATLAB]] může být globální proměnná deklarována kdekoliv pomocí klíčového slova.
* Globální proměnné v jazyce [[Ruby_(programovací_jazyk)|Ruby]] jsou vyznačené symbolem ‚$‘.
|