Sign in Join
Wiki copytemporary

Becomes/fi: what changed

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

Title: Becomes/fi

OldNewLine
1+<div style="float:left; margin: 0 10px 20px 0; padding:40px; font-size:500%; font-family: Georgia; background-color: #f9f9f9; border: 2px solid #777777;">
2+
3+
4+=
5+
6+</div>
7+
8+Kirjainyhdistelmä `:=` jossa on ensin [[Colon|kaksoispiste]] ja heti sen perässä [[Equal|yhtäsuuruusmerkki]], Siitä käytetään nimitystä ​​"saa arvokseen" ja sitä käytetään [[Pascal|Pascalissa]] arvon liittäjänä.
9+
10+## Arvon liittäminen
11+
12+Hyväksytyissä käytössä merkkiparin `:=` vasemmalla puolen on yksittäisen [[Variable/fi|muuttujan]] [[Identifier/fi|tunniste]] ja lauseke, jonka arvo ratkaistaan tiettyyn [[Data type|tietotyyppiin]] on sen oikealla puolen.
13+
14+``` pascal
15+program assignmentDemo(input, output, stderr);
16+
17+const
18+ diameter = 6;
19+
20+var
21+ n: integer;
22+ area: real;
23+ givenName: string;
24+
25+begin
26+ n := 42;
27+ area := pi() * diameter;
28+ givenName := 'Smith';
29+ n := 1000 - n div 2;
30+end.
31+```
32+
33+Arvon liittäminen [[subrange types|rajoitettuihin tyyppeihin]] on käsiteltävä varoen. [[Compiler/fi|Kääntäjä]] voi antaa vain arvoalueen ulkopuolella olevan virheen *kiinteästi* ratkaistaville lausekkeille jotka ei riipu ajonaikaisesta datasta Kääntäjän ohjeella [[sRangechecks|{$rangeChecks}]] sallitaan ajoaikaiset virheiden luonti.
34+
35+``` pascal
36+program assignmentRange(input, output, stderr);
37+
38+type
39+ naturalNumber = 1..high(longword);
40+
41+var
42+ n: naturalNumber;
43+
44+begin
45+ {$rangechecks on}
46+ n := 1; // on OK
47+ n := -42 + n; // aiheuttaa RTE 201:n
48+end.
49+```
50+
51+## Erilaisten tietotyyppien käsittely
52+
53+Kun yksinkertaiset tietotyypit, kuten [[Integer/fi|kokonaisluvut (integer)]] ja [[Char|merkit (char)]] toteutetaan `mov` käskyinä tai vastaavina. Tietotyypit jotka edellyttävät alustusta ja viimeistelyä kuten [[Ansistring|ansistring]] tai [[Class/fi|luokat (class )]]
54+
55+`tarvitsevat erityistä huolellisuutta.`
56+
57+Kääntäjä tuottaa asianmukaiset koodin kopiointitiedot seuraaville tietotyypeille.
58+
59+- [[String|string]]
60+- [[Object|object]]
61+- [[Record|record]]
62+
63+Näiden kaikkia osasia ei tarvitse erikseen toistaa kopioinnissa, kuten joissakin muissa ohjelmointikielissä vaaditaan.
64+
65+## Valitun syntaksin perustelut
66+
67+Periaate kahden merkin käyttämisestä "saa arvokseen" toiminnossa yhden merkin sijasta , vaikkapa yhtäsuuruusmerkin = sijasta, on erottaa arvon sijoittaminen ja tasa-arvon vertailu toisistaan. Sillä on juuret matematiikassa, jossa yksi yhtäsuuruusmerkki luetaan tasa-arvon ilmaisuksi.
68+
69+Jossain muissa ohjelmointikielissä kuin Pascal:ssa on sallittua kirjoittaa
70+
71+``` C
72+n = m = x;
73+```
74+
75+Tämän koodin rivin semantiikka vaihtelee jokaisen ohjelmointikielen välillä. Esimerkiksi [[Fortran|Fortranissa]] ja Basicissa tämä rivi tarkoittaa "Vertaa arvoja m ja x , ja jos ne ovat yhtäsuuret niin n saa arvon true muuten false." Sen sijaan C-ohjelmointikieli antaa m:lle arvon x ja sen jälkeen n:lle m:n arvon, jolloin molemmilla n:llä ja m:llä on arvo x . Tällainen koodi on ollut yleinen virheenlähde, mutta kääntäjät nykyään jopa antavat varoituksia, kun he kohtaavat useampia sijoituksia yhdellä rivillä.
76+
77+Pascalissa edellä oleva koodirivi on virheellinen. Toimimattomat lauseet eivät ole sallittuja, eli jotain on silloin tehtävä .
78+
79+---
80+*From the Free Pascal wiki, page "Becomes/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