Sign in Join
Wiki copytemporary

Becomes/fi: what changed

Revision 3 to 4. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11=
22
33Kirjainyhdistelmä `:=` 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ä.
44
55## Arvon liittäminen
66
77Hyvä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.
88
99``` pascal
1010program assignmentDemo(input, output, stderr);
1111
1212const
1313 diameter = 6;
1414
1515var
1616 n: integer;
1717 area: real;
1818 givenName: string;
1919
2020begin
2121 n := 42;
2222 area := pi() * diameter;
2323 givenName := 'Smith';
2424 n := 1000 - n div 2;
2525end.
2626```
2727
2828Arvon 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.
2929
3030``` pascal
3131program assignmentRange(input, output, stderr);
3232
3333type
3434 naturalNumber = 1..high(longword);
3535
3636var
3737 n: naturalNumber;
3838
3939begin
4040 {$rangechecks on}
4141 n := 1; // on OK
4242 n := -42 + n; // aiheuttaa RTE 201:n
4343end.
4444```
4545
4646## Erilaisten tietotyyppien käsittely
4747
4848Kun 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 )]]
4949
50-```
50+```text
5151tarvitsevat erityistä huolellisuutta.
5252```
5353
5454Kääntäjä tuottaa asianmukaiset koodin kopiointitiedot seuraaville tietotyypeille.
5555
5656- [[String|string]]
5757- [[Object|object]]
5858- [[Record|record]]
5959
6060Näiden kaikkia osasia ei tarvitse erikseen toistaa kopioinnissa, kuten joissakin muissa ohjelmointikielissä vaaditaan.
6161
6262## Valitun syntaksin perustelut
6363
6464Periaate 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.
6565
6666Jossain muissa ohjelmointikielissä kuin Pascal:ssa on sallittua kirjoittaa
6767
6868``` C
6969n = m = x;
7070```
7171
7272Tä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ä.
7373
7474Pascalissa edellä oleva koodirivi on virheellinen. Toimimattomat lauseet eivät ole sallittuja, eli jotain on silloin tehtävä .
7575
7676---
7777*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