Difference between revisions of "Becomes/fi"
(Created page with "{{Becomes}} <div style="float:left; margin: 0 10px 20px 0; padding:40px; font-size:500%; font-family: Georgia; background-color: #f9f9f9; border: 2px solid #777777;">:=</div>...") |
|||
Line 3: | Line 3: | ||
<div style="float:left; margin: 0 10px 20px 0; padding:40px; font-size:500%; font-family: Georgia; background-color: #f9f9f9; border: 2px solid #777777;">:=</div> | <div style="float:left; margin: 0 10px 20px 0; padding:40px; font-size:500%; font-family: Georgia; background-color: #f9f9f9; border: 2px solid #777777;">:=</div> | ||
− | Kirjainyhdistelmä <syntaxhighlight lang="pascal" | + | Kirjainyhdistelmä <syntaxhighlight lang="pascal" inline>:=</syntaxhighlight> 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]]issa arvon liittäjänä. | Siitä käytetään nimitystä "saa arvokseen" ja sitä käytetään [[Pascal]]issa arvon liittäjänä. | ||
== Arvon liittäminen == | == Arvon liittäminen == | ||
− | Hyväksytyissä käytössä merkkiparin <syntaxhighlight lang="pascal" | + | Hyväksytyissä käytössä merkkiparin <syntaxhighlight lang="pascal" inline>:=</syntaxhighlight> vasemmalla puolen on yksittäisen |
[[Variable/fi|muuttujan]] [[Identifier/fi|tunniste]] ja lauseke, jonka arvo ratkaistaan tiettyyn [[Data type|tietotyyppiin]] on sen oikealla puolen. | [[Variable/fi|muuttujan]] [[Identifier/fi|tunniste]] ja lauseke, jonka arvo ratkaistaan tiettyyn [[Data type|tietotyyppiin]] on sen oikealla puolen. | ||
Line 32: | Line 32: | ||
Arvon liittäminen [[subrange types|rajoitettuihin tyyppeihin]] on käsiteltävä varoen. | 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 | [[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|<syntaxhighlight lang="pascal" | + | Kääntäjän ohjeella [[sRangechecks|<syntaxhighlight lang="pascal" inline>{$rangeChecks}</syntaxhighlight>]] sallitaan ajoaikaiset virheiden luonti. |
<syntaxhighlight lang="pascal"> | <syntaxhighlight lang="pascal"> | ||
Line 53: | Line 53: | ||
== Erilaisten tietotyyppien käsittely == | == Erilaisten tietotyyppien käsittely == | ||
− | Kun yksinkertaiset tietotyypit, kuten [[Integer/fi| kokonaisluvut (<syntaxhighlight lang="pascal" | + | Kun yksinkertaiset tietotyypit, kuten [[Integer/fi| kokonaisluvut (<syntaxhighlight lang="pascal" inline>integer</syntaxhighlight>) ]] ja |
− | [[Char| merkit (<syntaxhighlight lang="pascal" | + | [[Char| merkit (<syntaxhighlight lang="pascal" inline>char</syntaxhighlight>)]] toteutetaan |
− | <syntaxhighlight lang="asm" | + | <syntaxhighlight lang="asm" inline>mov</syntaxhighlight> käskyinä tai vastaavina. Tietotyypit jotka edellyttävät alustusta ja viimeistelyä kuten |
− | [[Ansistring|<syntaxhighlight lang="pascal" | + | [[Ansistring|<syntaxhighlight lang="pascal" inline>ansistring</syntaxhighlight>]] tai [[Class/fi|luokat (<syntaxhighlight lang="pascal" inline>class</syntaxhighlight> )]] |
tarvitsevat erityistä huolellisuutta. | tarvitsevat erityistä huolellisuutta. | ||
Kääntäjä tuottaa asianmukaiset koodin kopiointitiedot seuraaville tietotyypeille. | Kääntäjä tuottaa asianmukaiset koodin kopiointitiedot seuraaville tietotyypeille. | ||
− | * [[String|<syntaxhighlight lang="pascal" | + | * [[String|<syntaxhighlight lang="pascal" inline>string</syntaxhighlight>]] |
− | * [[Object|<syntaxhighlight lang="pascal" | + | * [[Object|<syntaxhighlight lang="pascal" inline>object</syntaxhighlight>]] |
− | * [[Record|<syntaxhighlight lang="pascal" | + | * [[Record|<syntaxhighlight lang="pascal" inline>record</syntaxhighlight>]] |
Näiden kaikkia osasia ei tarvitse erikseen toistaa kopioinnissa, kuten joissakin muissa ohjelmointikielissä vaaditaan. | Näiden kaikkia osasia ei tarvitse erikseen toistaa kopioinnissa, kuten joissakin muissa ohjelmointikielissä vaaditaan. |
Latest revision as of 17:23, 6 August 2022
│
English (en) │
suomi (fi) │
français (fr) │
русский (ru) │
中文(中国大陆) (zh_CN) │
Kirjainyhdistelmä :=
jossa on ensin kaksoispiste ja heti sen perässä yhtäsuuruusmerkki,
Siitä käytetään nimitystä "saa arvokseen" ja sitä käytetään Pascalissa arvon liittäjänä.
Arvon liittäminen
Hyväksytyissä käytössä merkkiparin :=
vasemmalla puolen on yksittäisen
muuttujan tunniste ja lauseke, jonka arvo ratkaistaan tiettyyn tietotyyppiin on sen oikealla puolen.
program assignmentDemo(input, output, stderr);
const
diameter = 6;
var
n: integer;
area: real;
givenName: string;
begin
n := 42;
area := pi() * diameter;
givenName := 'Smith';
n := 1000 - n div 2;
end.
Arvon liittäminen rajoitettuihin tyyppeihin on käsiteltävä varoen.
Kääntäjä voi antaa vain arvoalueen ulkopuolella olevan virheen kiinteästi ratkaistaville lausekkeille jotka ei riipu ajonaikaisesta datasta
Kääntäjän ohjeella {$rangeChecks}
sallitaan ajoaikaiset virheiden luonti.
program assignmentRange(input, output, stderr);
type
naturalNumber = 1..high(longword);
var
n: naturalNumber;
begin
{$rangechecks on}
n := 1; // on OK
n := -42 + n; // aiheuttaa RTE 201:n
end.
Erilaisten tietotyyppien käsittely
Kun yksinkertaiset tietotyypit, kuten kokonaisluvut (integer
) ja
merkit (char
) toteutetaan
mov
käskyinä tai vastaavina. Tietotyypit jotka edellyttävät alustusta ja viimeistelyä kuten
ansistring
tai luokat (class
)
tarvitsevat erityistä huolellisuutta.
Kääntäjä tuottaa asianmukaiset koodin kopiointitiedot seuraaville tietotyypeille.
Näiden kaikkia osasia ei tarvitse erikseen toistaa kopioinnissa, kuten joissakin muissa ohjelmointikielissä vaaditaan.
Valitun syntaksin perustelut
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.
Jossain muissa ohjelmointikielissä kuin Pascal:ssa on sallittua kirjoittaa
n = m = x;
Tämän koodin rivin semantiikka vaihtelee jokaisen ohjelmointikielen välillä. Esimerkiksi 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ä.
Pascalissa edellä oleva koodirivi on virheellinen. Toimimattomat lauseet eivät ole sallittuja, eli jotain on silloin tehtävä .
single characters |
|
character pairs |
|