Proměnná (počítač)

V informatice , proměnné jsou symboly, které přiřadit jméno ( identifikátor ) s hodnotou. Ve většině jazyků a zejména v těch nejběžnějších mohou proměnné v průběhu času měnit hodnotu ( dynamickou ). V jazycích určitých paradigmat , zejména funkčního programování , je jejich hodnota naopak zmrazena v čase ( statická ).

Proměnné a konstanty

Na rozdíl od proměnné, je konstantní, je identifikátor spojený s pevnou hodnotu. Syntaxicky má tento identifikátor všechny aspekty proměnné. Je jí však přiřazena konečná hodnota, to znamená konstantní , jako je například velikost šachovnice (8x8). Konstanta obsahuje hodnotu, která může mít různé hodnoty v závislosti na provedeních, jako je hra s hledáním min, kde si hráč může vybrat velikost desky.

Programovací proměnné

V programovacím jazyce je proměnnou úložný prostor pro výsledek. Nicméně možnosti Of proměnné jsou úzce souvisí s programovacím jazykem, na který máme na mysli. Například proměnná v C ++ bude mít šest charakteristik:

Lze však najít jazyky, které tyto charakteristiky omezují:

Proměnné a ukazatele

Ve všech jazycích, které umožňují dynamické vytváření adres (nové v C ++ nebo Javě), je pojem proměnné doplněn pojmem ukazatel (typ dat spojených s proměnnou, jejichž hodnoty jsou adresy). Adresa obsažená v proměnné ukazatele může být pro programátora nepřístupná (PHP, Java, Python) nebo přímo přístupná (C ++) .

Název proměnných

V některých jazycích musí názvy proměnných (jako názvy identifikátorů ) nutně začínat písmenem (velká nebo malá písmena) nebo znakem _ ( podtrženo ). Ostatní znaky tvořící název proměnné musí být písmeno, číslo nebo _ . Rozlišování mezi velkými a malými písmeny (rozlišování velkých a malých písmen) ve jménu proměnné závisí na uvažovaném jazyce.

Příklady platných názvů proměnných v jazyce C  :

Příklad neplatného názvu proměnné v C:

První znak tedy nemůže být číslo, protože to umožňuje usnadnit kompilaci nebo interpretaci programu odstraněním nejednoznačnosti: když překladač přečte číslo, ví, že znaky, které budou následovat, budou tvořit číselnou hodnotu . Stejně tak, pokud čte písmeno nebo podtržítko, bude vědět, že jde o proměnnou.

Všechny tyto názvy proměnných jsou platné v Lispu .

Psaní na stroji

Když je typ proměnné určen při kompilaci (explicitně programátorem nebo automaticky podle odvození typu ), mluvíme o statickém psaní . Hodnoty této proměnné musí být tohoto typu (v širším slova smyslu, tj. Stejného typu nebo odvozeného typu).

Statické psaní pomáhá generovat efektivnější kód objektu (z hlediska využití paměti a rychlosti provedení). Zakazuje však reflexivitu během provádění.

Jinak v případech, kdy typ nemají proměnné, ale hodnoty, mluvíme o dynamickém psaní nebo latentním psaní.

O silném psaní mluvíme, když jazyk vyžaduje, aby byly proměnné deklarovány v typu a použity v tomto typu (např. Ada nebo C ++). Mluvíme o slabém psaní, když jazyk připouští, že proměnná může během své existence měnit typ (zejména aby odpovídala sémantice výrazu).

Životní cyklus proměnných

Obecně existuje pět operací s proměnnými, z nichž každá může mít různé syntaktické formy.

Jazyky, jako je C , Caml nebo Pascal , vyžadují deklaraci proměnné nebo dokonce její typ před použitím. Nucený deklarace proměnných umožňuje kompilátor nebo interpret na jaké překlepy jsou nedeklarované proměnné nebo homonymních proměnných. Jiné jazyky učiní deklaraci v době prvního přiřazení (to je případ většiny skriptovacích jazyků ) nebo když se poprvé objeví v kódu (jako v Prologu).

Pokud jde o inicializaci proměnných, tj. Přiřazení hodnoty současně s definicí, některé jazyky vyžadují inicializaci proměnné před jejím prvním čtením, jiné poskytují implicitní hodnotu (určenou nebo neurčitou) a nakonec jiní nechají proměnnou neurčitou hodnotu. Jazyky jako Oz nebo Prolog, přesně řečeno, neprovádějí inicializaci. Při deklaraci proměnných není přidružena žádná hodnota, říkáme, že proměnná není vázána . Hodnota proměnné se určuje při provádění programu, kterému se říká unifikace .

Ve funkčních programovacích nebo logických programovacích jazycích mohou mít proměnné během své existence pouze jednu hodnotu.

Reflexivita

Ve většině jazyků existují proměnné pouze jako nástroje pro programátora. Přejmenování všech výskytů proměnné tedy nezmění fungování programu.

Naopak, poskytnout další expresivitu, některé jazyky umožňují název proměnné, které mají být považovány za hodnoty, jako jakýkoli jiný (například to jsou symboly na Common Lisp a Smalltalk ). Toto je velmi užitečná technika pro efektivní implementaci symbolických výpočetních algoritmů .

Poznámky a odkazy

  1. V jazyce C se časem nemění, pokud použijeme klíčové slovo const

Podívejte se také