Variable/fi

From Free Pascal wiki

English (en) suomi (fi) русский (ru)

Muuttuja

Muuttuja on tunniste, joka liittyy muistiin, joka voidaan tarkastaa (tai lukea) ja käsitellä ajon aikana.

Määrittely

Muuttujat määritellään var-osiossa. Pascalissa jokaisella muuttujalla on tietotyyppi, joka on jo tunnettu käännösaikana (Tai sen data typpi on variant). Muuttuja ilmoitetaan (tunniste, tietotyyppi) parina, erotettuna kaksoispisteellä. Muuttujat määritellään var osiossa.

var
	foo: char;


Tietotyypin tilavaatimusten mukaan pino pitää varatun muistin määrän heti, kun vastaava laajuus syötetään. Riippuen siitä, mihin var-osio on sijoitettu, voidaan "puhua" joko globaaleista tai paikallisista muuttujista.

Käsittely

Muuttujien arvoja käsitellään saa arvokseen operaattorilla := Tämän lisäksi on joukko sisäänrakennettuja aliohjelmia jotka määrittää implisiittisesti arvot muuttujalle:

Määrittely

Muuttuja voidaan määritellä niin että se on esitelty ja alustettu yhdellä lausekkeella seuraavasti:

var
	x: integer = 42;

Huomaa, että tämä syntaksi ei ole alkuperäistä Pascalia. Siinä esittely ja tehtävät pidetään erillään suunnittelusta. Tämä syntaksi rikkoo tätä periaatetta.

Saatavuus

Muuttuja on saatavilla, mikä tarkoittaa sitä, että viitataan viitattuun muistipaikkaan arvoon yksinkertaisesti määrittelemällä sen tunnus (missä tahansa lauseketta odotetaan).

Huomaa, että on olemassa pari tietotyyppiä, jotka ovat itse asiassa viitteitä, mutta jotka poistetaan automaattisesti, mukaan lukien, mutta ei rajoittuen, luokat, dynaamiset taulukot ja ANSI-merkkijonot. Kun {$modeSwitch autoDeref+} (ei suositella), myös tyypitetyt osoittimet poistetaan hiljaa ilman, että ^ ("hattu symboli") on läsnä. Tämä tarkoittaa, että ettei välttämättä toimi varsinaiseen muistilohkoon, johon muuttuja on aidosti yhteydessä, mutta jossain muualla.

Yleensä muuttujan muistipalaa tulkitaan sen tietotyypin mukaan, jossa se on määritelty. 'Typecastauksen' avulla voidaan muuttaa tietyn muuttujan muistilohkoa (ilmaisua kohti).

Muisti alias

Avainsanan absolute yhteydessä tunniste voidaan liittää aiemmin varattuun muistiin. Vaikka tavallisesti (tunniste, tietotyyppi)-pari asettaa tietyn määrän muistia syrjään, seuraava c:n esittely ei vie mitään lisätilaa, vaan linkittää tunnisteen c muistilohkoon, joka on varattu xlle:

var
	x: byte;
	c: char absolute x;

Tässä muistialiasta käytettiin yhtenä strategiana vakuuttamaan kääntäjä sallimaan char type-tyyppiä koskevat toiminnot, kun taustalla oleva muisti oli alunperin varattu byte-tyyppiselle arvolle. Tämä ominaisuus on valittava viisaasti. Se edellyttää että on tietoa tietotyypin muistirakenteesta, joka ei aiheuta minkäänlaista käyttöoikeusvirhettä.

Tärkeintä on, että tällä tavoin ylimääräisesti viitattu muisti käsitellään ikään kuin se olisi määritelty normaalien sääntöjen mukaisesti.

Katso myös