|
Selles peatükis käsitleme vahendeid, mis märgatavalt suurendavad wiris võimalusi. Soovitame enamikule kasutajatest neid vahendeid uurida, et nemad või nende õpilased saaksid programmeerimise maailmaga tutvust teha. Kuna programmeerimise mõisted on mõnevõrra abstraktsemad, siis selle peatüki keel võib olla natuke tehnilisem kui teistes peatükkides.
Selles peatükis on järgmised jaotised:
Informatsioon programmeerimises väga oluliste loogiliste operatsioonide kohta tuleb hiljem.
iga...:
nupp
, otsus
iga
R
täida
A
lõpp
Kordab käsklusi
A
muutuja iga piiridesse
R
kuuluva väärtuse korral.
|
Täiendame andmestruktuuride kirjeldust, mis oli peatükis matemaatilised objektid.
Piirid: Piirid on objektid kujul a..b või kujul a..b..d, kus a, b ja d on reaalarvud ( a..b tähendab sama mis a..b..1). Kui d on nullist erinev, siis märgib a..b..d loendit, kuhu kuuluvad need aritmeetilise jada a, a+d, a+2d, ... liikmed, mis ei ületa arvu b. Kui d on null, siis märgib a..b..dtühja loendit. Näiteks 1..6 märgib loendit
{1,2,3,4,5,6}, 1..6..2 loendit {1,3,5} ja 6..1..-3 loendit {6,3}.
Funktsioon loend, mille argumendiks on piiride tüüpi objekt, tagastab vastava loendi.
|
Tõeväärtused: loogilised väärtused tõene või väär. Põhiliselt tekivad need siis, kui rakendada operaatorit ? näiteks võrdustele ja võrratustele.
Loogilised tehted, mida kasutatakse tingimuste esitamiseks, on
| loogiline operaator |
sümbol |
| konjunktsioon - JA |
|
| disjunktsioon - VÕI |
|
| eitus - EI |
mitte
|
Vaatleme mõningaid näiteid:
|
Vallad: Matemaatilisi objekte saab wirises klassifitseerida erinevatesse matemaatilistesse hulkadesse. Me kutsume neid siinkohal valdadeks. Vallad on näiteks Täisarv, Ratsionaalarv, Irratsionaalarv, Reaalarv, Polünoom, ... Kasutades käsku kas? saab teada, kas objekt kuulub vastavasse valda.
Loogilised tehted ( & , | , mitte) toimivad nii nagu ühisosa, ühendi ja täiendi operaatorid. See lubab defineerida kergesti uusi valdu.
| loogiline operaator |
hulga operaator |
sümbol |
| konjunktsioon - JA |
ühisosa |
& |
| disjunktsioon - VÕI |
ühend |
| |
| eitus - EI |
täiend |
mitte
|
Lisaks võimaldab funktsioon sisaldub? teada saada, kas üks vald sisaldub teises või mitte, ning leia_vald näitab, missugusesse valda objekt kuulub.
Valdade kasutamine võimaldab funktsioone defineerida ka katkevate hulkade korral.
|
Reeglid ja asendused: Süntaktilisest vaatepunktist on reegel loend, mis koosneb objektidest kujul x=>y või x:=>y. Liiget xnimetame muutujaks või mudeliks vastavalt sellele, kas ta on muutuja või tal on kindel väärtus. Liiget y nimetame kujutiseks ning kirjutist x=>y või x:=>y nimetame paariks. Asendus on reegel, mis on defineeritud ainult muutujate korral. Sümbol => tähendab, et reegli defineerimisel kasutame x-i väärtust. Sümbol => aga tähendab, et reegli defineerimisel käsitleme x-i muutujana. Sümboleid => ja :=> saab luua vastavalt nuppudega
ja .
Kui rakendada reeglit avaldisele, siis mudeli (või muutuja) iga esinemine avaldises asendatakse selle mudeli (või muutuja) kujutisega. Liikmeid, mis ei vasta mudelile (või muutujale), ei asendata.
|
Jagajad (diviisorid?): Süntaktilisest vaatepunktist on jagaja vektor, mille elemendid on kujul x->y. Me ütleme, et x on indeks, y temaga seotud väärtus ja x->y jagaja koosseisu kuuluv paar. Leidmaks indeksiga seotud väärtust, rakendame jagajat. Kui indeksiga seotud väärtust pole, tagastatakse 0. Sümboli -> saab luua nupuga .
Jagajad on asjakohased mitmes kontekstis. Näiteks struktuur, mille annab funktsioon tegurda, on Diviisor, mille indeksiteks on tegurdatud objekti (näiteks täisarvu või polünoomi) algtegurid ja väärtusteks algtegurite astendajad.
|
Relatsioon: Süntaktilisest vaatepunktist on relatsioon loend, mille elemendid on kujul x->y. Ütleme, et x on indeks, y temaga seotud väärtus ja x->y relatsiooni koosseisu kuuluv paar. Relatsiooni kõige tähtsam aspekt on indeksiga seotud väärtuse (või väärtuste jada) esitamine. Selleks rakendatakse relatsiooni objektile. Kui indeksile vastavat väärtust pole, siis on relatsiooni rakendamise tulemus olematu. Sümboli -> saab luua nupuga .
|
|