Sukrokieltä ei ole tarkoitettu, kuten vaikkapa Basic tai C, yleiseksi ohjelmointikieleksi. On silti usein kätevää toimittaa yksinkertaisia laskutoimituksia suoraan sukromuistissa tarvitsematta turvautua Survon varsinaisiin laskentakeinoihin, jotka ovat laajamittaisissa sovelluksissa tehokkaampia. Tietoa on myös, olipa se numeerista tai sanallista, joskus siirrettävä muistipaikasta toiseen ja yhdistettävä toisiin tietoihin. Näitä toimenpiteitä tehdään sukrokielessä seuraavilla käskyillä:
{Wi=Wj}
| Paikan Wj sisältö kopioidaan paikkaan Wi .
|
{Wi=Wj+Wk}
| Yhteenlasku |
{Wi=Wj-Wk}
| Vähennyslasku |
{Wi=-Wj}
| Etumerkinvaihto |
{Wi=Wj*Wk}
| Kertolasku |
{Wi=Wj/Wk}
| Jakolasku |
{Wi=Wj%Wk}
| Jakojäännös kokonaislukujen osamäärässä |
{Wi=Wj&Wk}
| Merkkijonojen asettaminen peräkkäin |
Muistipaikkojen asemasta operandeina saa olla myös vakioita eli
esim. {W3=W3-2}
pienentää paikan W3
sisältöä kahdella.
Merkkijonovakioissa ei saa esiintyä merkkejä
+ - * / % & { } @
Esim. {W1=SURVO 84C}
ja {W2= &W2}
ovat sallittuja käskyjä.
Jälkimmäisessä lisätään W2
:n sisältämän merkkijonon eteen 5 välilyöntiä.
W1
, W2
ja W3
sisältämien lukujen summa paikkaan
W4
, se tehdään kahdessa vaiheessa näin: {W4=W1+W2}{W4=W4+W3}
.
Laskutoimitusten tulokset muunnetaan merkkijonoiksi ja niille
käytetään lyhintä mahdollista luvun esitystapaa. Eteen ei siis jätetä
mitään välilyöntejä eikä loppuun turhia desimaalinollia.
Kokonaisluvuilla laskut tapahtuvat koneen long-tyyppisessä
kokonaislukuesityksessä. Jos operandina on desimaalilukuja tai tehdään
jakolasku, käytetään liukulukulaskentaa double-tyyppisillä luvuilla.
Jälkimmäinen on hitaampaa myös sikäli, että Survon toimitin (editor)
ei tee liukulukulaskentaa vaan siirtää sen erilliselle ohjelmalle,
jonka käynnistys vie oman aikansa. Näin säästetään kallista
keskusmuistia noin 10 kilotavua, jonka liukulukualiohjelmat
tarvitsisivat pysyvästi. (SURVO 98:n toimitin vastaa itse suoraan
myös liukulukulaskennasta.)
Sukro ALKUL
luettelee alkulukuja (jaottomia kokonaislukuja)
toimituskenttään, kunnes se keskeytetään painamalla pistettä. Ohjelma
tutkii peräkkäisiä parittomia lukuja jakamalla niitä itseään
pienemmillä parittomilla luvuilla. Tällöin se päätyy joko siihen, että
jako menee tasan (jakojäännös on 0), jolloin luku ei ole alkuluku tai
siihen, ettei jako mene koskaan tasan, jolloin luku on alkuluku.
Kunkin luvun kohdalla tekijöiden etsiminen saatetaan lopettaa silloin,
kun tekijän neliö ylittää tutkittavan luvun.
Ohjelma ja sen toiminta näyttää seuraavalta:
|
|
Jos vastaava ohjelma kirjoitetaan Basic-kielellä ja ajetaan
Basic-tulkin avulla samassa koneessa, se nopeutuu noin
viisinkertaisesti. Sukro-ohjelma häviää nopeudessa näin paljon, koska
sillä ei ole käytössään kokonaislukumuuttujia, vaan kaikki
laskutoimitukset lähtevät sukromuistin tekstimuodossa olevista
tiedoista. Jokaisessa laskutoimituksessa tekstimuodossa olevat luvut
muunnetaan ensin kokonaislukuesitykseen ja tuloksena saatu luku
palautetaan jälleen tekstimuotoon sekä talletetaan takaisin
sukromuistiin.
Laskutoimitusten hitaudella ei kuitenkaan ole mitään olennaista
merkitystä sukrokielen järkevissä sovelluksissa, joissa niiden osuus
on häviävän pieni verrattuna suoraan Survolla toteutuviin
toimintoihin. Sukrokielen tarjoamaa käyttöympäristöä ei toisaalta ole
syytä väheksyä esim. ohjelmoinnin opetuksessa, jolloin myös
aritmetiikalle löytyy mielekästä käyttöä.
Sukrokielessä ei ole ohjelmakierroksia varten erityistä for- tai
muuta vastaavaa rakennetta. Kierrokset on kuitenkin helppo hoitaa
ottamalla jokin muistipaikka laskuriksi, tyhjentämällä se ennen
kierroksen alkua, kasvattamalla sitä joka kierroksella ja testaamalla
if
-lauseella, joko tarvittava kierrosmäärä on saavutettu. Näin on
mahdollista synnyttää jopa sisäkkäisiä kierroksia.
Sukro KERTO10
laatii tavanomaisen 10-järjestelmän kertotaulun
kaikille kertojille 1,2,3,...,10. Ohjelmassa on kaksi sisäkkäistä
kierrosta, ulompi ensimmäiselle tekijälle WM
ja sisempi toiselle
tekijälle WN
.
|
|
Sukro KERTO10
tuottaa taulukon:
|
|
Sukroa KERTO10
ei ole vaikea yleistää sellaiseksi, joka laskee
kertotaulun mille tahansa kantaluvulle k niin, että tauluun tulevat
luvut merkitään k-kantaisina. Tässä otetaan avuksi Survon
muunnoskäskyt. Esim. kun aktivoidaan 249(10:16)=_
, saadaan
249(10:16)=F9
eli 10
-järjestelmän luku 249
on 16
-järjestelmässä
(heksadesimaalisena) F9
. Kun kantaluku on yli 10, tarvitaan lisää
numeromerkkejä. Sellaisiksi valitaan A=10
, B=11
, C=12
, ..., F=15
jne.
Esim. heksadesimaalinen F9
on 16*F+9=249
.
Sukro KERTO
varustettuna parametrilla K
laskee K
-kantaisen
lukujärjestelmän kertotaulun. Laskut tapahtuvat tietenkin
kymmenjärjestelmässä, mutta tulokset saatetaan aina lopuksi
K
-järjestelmään muuntamalla ne nykyisen rivin alapuolella.
|
|
Esim. heksadesimaalinen kertotaulu syntyy näin:
|
|