Változó (számítógép)

A számítógép-tudomány , változók vannak jelek , amelyek összefüggésbe a nevét (az azonosító ) értéke alapján. A legtöbb nyelvben és különösen a leggyakoribb változók idővel megváltoztathatják az értéküket ( dinamikusan ). Bizonyos paradigmák , különösen a funkcionális programozás nyelvén értékük éppen ellenkezőleg, időben fagyos ( statikus ).

Változók és állandók

Ellentétben egy változó, konstans egy azonosító társított rögzített érték. Szintaktikusan ez az azonosító a változó összes aspektusával rendelkezik. Hozzá van rendelve azonban egy végső érték, vagyis állandó , például egy sakktábla mérete (8x8). Egy konstans tartalmaz egy értéket, amelynek a végrehajtásoktól függően különböző értékei lehetnek, például az aknavető játék, ahol a játékos kiválaszthatja a tábla méretét.

Változók programozása

Egy programozási nyelvben egy változó az eredmény tárolási területe . A változó lehetőségei Azonban szorosan kapcsolódnak ahhoz a programozási nyelvhez, amelyre hivatkozunk. Például egy C ++ változónak hat jellemzője lesz:

Megtalálható azonban olyan nyelv, amely korlátozza ezeket a jellemzőket:

Változók és mutatók

Minden olyan nyelven, amely lehetővé teszi a címek dinamikus létrehozását (új a C ++ vagy a Java nyelven), a változó fogalmát kiegészíti a mutató fogalma (egy változóhoz társított adattípus, amelynek értékei címek) . A mutatóváltozóban szereplő cím elérhetetlen lehet a programozó számára (PHP, Java, Python), vagy közvetlenül elérhető (C ++) .

Változók neve

Egyes nyelvekben a változók nevének (például az azonosítóknak ) feltétlenül betűvel (nagy vagy kisbetűvel) vagy _ ( aláhúzott ) betűvel kell kezdődnie . A változó nevét alkotó többi karakternek betűnek, számnak vagy _- nek kell lennie . A kis- és nagybetűk (kis- és nagybetűk) közötti különbségtétel a változó nevében a figyelembe vett nyelvtől függ.

Példák érvényes változónevekre C-ben  :

Példa érvénytelen változónévre a C-ben:

Így az első karakter nem lehet szám, mert ez megkönnyíti a program összeállítását vagy értelmezését a kétértelműség megszüntetésével: amikor a fordító elolvas egy számot, tudja, hogy az utána következő karakterek számértéket alkotnak. Hasonlóképpen, ha betűt vagy aláhúzást olvas, akkor tudja, hogy változóval foglalkozik.

Mindezek a változónevek Lisp-ben érvényesek .

Gépelés

Amikor a változó típusát a fordítás során meghatározzuk (kifejezetten a programozó által vagy automatikusan a típus következtetése alapján ), akkor statikus tipizálásról beszélünk . Ennek a változónak az értékeinek ilyen típusúaknak kell lenniük (tág értelemben, azaz azonos típusú vagy származtatott típusnak).

A statikus gépelés hatékonyabb objektumkód előállításában segít (a memóriafogyasztás és a végrehajtás sebessége szempontjából). Megtiltja azonban a reflexivitást a végrehajtás során.

Egyébként azokban az esetekben, amikor nem a változóknak van típusa, hanem az értékeknek, dinamikus vagy látens gépelésről beszélünk .

Erős gépelésről beszélünk, amikor a nyelv megköveteli, hogy a változókat egy típusban deklarálják, és ebben a típusban használják (pl .: Ada vagy C ++). Gyenge gépelésről akkor beszélünk, amikor a nyelv elismeri, hogy egy változó létezése során megváltoztathatja a típust (különösen azért, hogy megfeleljen egy kifejezés szemantikájának).

A változók életciklusa

A változókon általában öt művelet van, amelyek mindegyike különböző szintaktikai formákat ölthet.

Az olyan nyelvek, mint a C , a Caml vagy a Pascal , használatuk előtt megkövetelik egy változó deklarálását vagy akár egy típus megadását. A változók kényszerített deklarálása lehetővé teszi a fordító vagy tolmács számára a tipográfiai hibák be nem jelentett vagy homonim változóként történő azonosítását. Más nyelvek a deklarációt az első hozzárendeléskor teszik meg (ez a legtöbb szkriptnyelv esetében van ), vagy amikor először megjelennek a kódban (mint a Prologban).

A változók inicializálása, vagyis az érték hozzárendelése a definícióval egyidejűleg, egyes nyelvek megkövetelik a változó inicializálását az első olvasat előtt, mások implicit (meghatározott vagy határozatlan) értéket adnak meg, végül mások hagyják, hogy a változó meghatározatlan értékkel rendelkezzen. Az olyan nyelvek, mint az Oz vagy a Prolog, szigorúan véve nem hajtanak végre inicializálást. A változók deklarálásakor nincs társítva érték, azt mondjuk, hogy a változó nincs kötve . A változó értékét a program végrehajtásakor határozzuk meg, ezt unifikációnak nevezzük .

A funkcionális programozás vagy logikai programozási nyelvek , változó csak egyetlen érték alatt a létezésüket.

Reflexivitás

A legtöbb nyelvben a változók csak a programozó eszközeként léteznek. Így a változó összes előfordulásának átnevezése nem módosítja a program működését.

Éppen ellenkezőleg, a további kifejezőképesség biztosítása érdekében egyes nyelvek lehetővé teszik, hogy a változó nevét értéknek tekintjük, mint bármely más nevet (például ezek a Common Lisp és a Smalltalk szimbólumai ). Ez egy nagyon hasznos technika a szimbolikus számítási algoritmusok hatékony megvalósításához .

Megjegyzések és hivatkozások

  1. C-ben nem változik az idő múlásával, ha az const kulcsszót használjuk

Lásd is