Sign in Join
Wiki copytemporary

Becomes/fi: what changed

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

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-
41=
5-
6-</div>
72
83Kirjainyhdistelmä `:=` 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ä.
94
105## Arvon liittäminen
116
127Hyvä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.
138
149``` pascal
1510program assignmentDemo(input, output, stderr);
1611
1712const
1813 diameter = 6;
1914
2015var
2116 n: integer;
2217 area: real;
2318 givenName: string;
2419
2520begin
2621 n := 42;
2722 area := pi() * diameter;
2823 givenName := 'Smith';
2924 n := 1000 - n div 2;
3025end.
3126```
3227
3328Arvon 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.
3429
3530``` pascal
3631program assignmentRange(input, output, stderr);
3732
3833type
3934 naturalNumber = 1..high(longword);
4035
4136var
4237 n: naturalNumber;
4338
4439begin
4540 {$rangechecks on}
4641 n := 1; // on OK
4742 n := -42 + n; // aiheuttaa RTE 201:n
4843end.
4944```
5045
5146## Erilaisten tietotyyppien käsittely
5247
5348Kun 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 )]]
5449
5550`tarvitsevat erityistä huolellisuutta.`
5651
5752Kääntäjä tuottaa asianmukaiset koodin kopiointitiedot seuraaville tietotyypeille.
5853
5954- [[String|string]]
6055- [[Object|object]]
6156- [[Record|record]]
6257
6358Näiden kaikkia osasia ei tarvitse erikseen toistaa kopioinnissa, kuten joissakin muissa ohjelmointikielissä vaaditaan.
6459
6560## Valitun syntaksin perustelut
6661
6762Periaate 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.
6863
6964Jossain muissa ohjelmointikielissä kuin Pascal:ssa on sallittua kirjoittaa
7065
7166``` C
7267n = m = x;
7368```
7469
7570Tä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ä.
7671
7772Pascalissa edellä oleva koodirivi on virheellinen. Toimimattomat lauseet eivät ole sallittuja, eli jotain on silloin tehtävä .
7873
7974---
8075*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