Sign in Join
Wiki copytemporary

Becomes/fi: what changed

Revision 2 to 3. 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-`tarvitsevat erityistä huolellisuutta.`
50+```
51+tarvitsevat erityistä huolellisuutta.
52+```
5153
5254Kääntäjä tuottaa asianmukaiset koodin kopiointitiedot seuraaville tietotyypeille.
5355
5456- [[String|string]]
5557- [[Object|object]]
5658- [[Record|record]]
5759
5860Näiden kaikkia osasia ei tarvitse erikseen toistaa kopioinnissa, kuten joissakin muissa ohjelmointikielissä vaaditaan.
5961
6062## Valitun syntaksin perustelut
6163
6264Periaate 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.
6365
6466Jossain muissa ohjelmointikielissä kuin Pascal:ssa on sallittua kirjoittaa
6567
6668``` C
6769n = m = x;
6870```
6971
7072Tä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ä.
7173
7274Pascalissa edellä oleva koodirivi on virheellinen. Toimimattomat lauseet eivät ole sallittuja, eli jotain on silloin tehtävä .
7375
7476---
7577*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