Sign in Join
Wiki copytemporary

Variable/fi: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Variable/fi

OldNewLine
1+# Muuttuja
2+
3+**Muuttuja** on [[Identifier/fi|tunniste]], joka liittyy muistiin, joka voidaan tarkastaa (tai lukea) ja käsitellä [[runtime|ajon aikana]].
4+
5+## Määrittely
6+
7+Muuttujat määritellään [[Var|var-osiossa]]. [[Pascal/fi|Pascalissa]] jokaisella muuttujalla on [[Data type/fi|tietotyyppi]], joka on jo tunnettu käännösaikana (Tai sen [[Variant|data typpi on variant]]). Muuttuja ilmoitetaan (tunniste, tietotyyppi) parina, erotettuna [[Colon|kaksoispisteellä]]. Muuttujat määritellään [[Var/fi|var osiossa]].
8+
9+``` pascal
10+var
11+ foo: char;
12+```
13+
14+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 [[Global variables/fi|globaaleista]] tai [[Local variables/fi|paikallisista]] muuttujista.
15+
16+## Käsittely
17+
18+Muuttujien arvoja käsitellään [[Becomes/fi|saa arvokseen operaattorilla :=]] Tämän lisäksi on joukko sisäänrakennettuja aliohjelmia jotka määrittää implisiittisesti arvot muuttujalle:
19+
20+- input/output rutiinit kuten, `get` ja `put`, [[Read/fi|read]] ja `readLn`, `assign` ja `close`
21+- `new` ja `dispose` kun käsitellään [[Pointer/fi|osoittimia]] ja [[Object/fi|olioita]]
22+- `setLength` kun käsitellään [[Dynamic array|dynaamisia taulukoita]]
23+
24+## Määrittely
25+
26+Muuttuja voidaan määritellä niin että se on esitelty ja alustettu yhdellä lausekkeella seuraavasti:
27+
28+``` pascal
29+var
30+ x: integer = 42;
31+```
32+
33+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.
34+
35+## Saatavuus
36+
37+Muuttuja on saatavilla, mikä tarkoittaa sitä, että viitataan viitattuun muistipaikkaan arvoon yksinkertaisesti määrittelemällä sen tunnus (missä tahansa lauseketta odotetaan).
38+
39+Huomaa, että on olemassa pari tietotyyppiä, jotka ovat itse asiassa viitteitä, mutta jotka poistetaan automaattisesti, mukaan lukien, mutta ei rajoittuen, [[Class/fi|luokat]], dynaamiset taulukot ja [[AnsiString|ANSI-merkkijonot]]. Kun `{$modeSwitch autoDeref+}` (ei suositella), myös tyypitetyt osoittimet poistetaan hiljaa ilman, että [[^/fi|^ ("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.
40+
41+Yleensä muuttujan muistipalaa tulkitaan sen tietotyypin mukaan, jossa se on määritelty. [[Typecast/fi|'Typecastauksen']] avulla voidaan muuttaa tietyn muuttujan muistilohkoa (ilmaisua kohti).
42+
43+## Muisti alias
44+
45+[[Keyword/fi|Avainsanan]] [[Absolute/fi|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 `x`lle:
46+
47+``` pascal
48+var
49+ x: byte;
50+ c: char absolute x;
51+```
52+
53+Tässä muistialiasta käytettiin yhtenä strategiana vakuuttamaan [[Compiler/fi|kääntäjä]] sallimaan [[Char/fi|char type]]-tyyppiä koskevat toiminnot, kun taustalla oleva muisti oli alunperin varattu [[Byte/fi|byte]]-tyyppiselle arvolle. Tämä ominaisuus on valittava viisaasti. Se edellyttää että on tietoa tietotyypin muistirakenteesta, joka ei aiheuta minkäänlaista käyttöoikeusvirhettä.
54+
55+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.
56+
57+## Katso myös
58+
59+- [[Constant/fi|vakiot]]
60+
61+---
62+*From the Free Pascal wiki, page "Variable/fi", as it stood on 2022-08-06 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history