290 likes | 520 Views
DIAMS-2. Programmeerimiskeeled Andres Luuk 03.05.2004. Üldine. Jooksis kolmanda põlvkonna väikearvutil CM-4 Operatsioonisüsteem DIAMS-2 Arvuti võimaldas mitut kasutajat Mälu kasutus: 40 kuni 55 KB – töötamise ajal Kuni 16 KB – iga kasutaja. Üldine.
E N D
DIAMS-2 Programmeerimiskeeled Andres Luuk 03.05.2004
Üldine • Jooksis kolmanda põlvkonna väikearvutil CM-4 • Operatsioonisüsteem DIAMS-2 • Arvuti võimaldas mitut kasutajat • Mälu kasutus: • 40 kuni 55 KB – töötamise ajal • Kuni 16 KB – iga kasutaja
Üldine • Ette nähtud tekstiinfo töötlemiseks ja tööks andmebaasidega • Enne kasutamist tuleb registreeruda (sisse logida) • Programmeerija režiimid: • Dialoogrežiim • Programmirežiim
Andmed • Kõiki andmaid kujutatakse arvutis sõnedena (kodeeringus ДКОИ-7). • Andmete interpretatsioon sõltub kontekstist. • Arvud: Mõned näited arvudest: -256, +4.7, 12E-2, 12.3E-1
Andmed • Tõeväärtused: 1 - “tõene” 0 - “väär” • Sõnekonstandid: Põhisümbolite jada, mis on jutumärkide sees Näiteks: “23. juuni”
Identifikaatorid • Tähtede ja numbrite jada, mis algab tähega • Erandiks teekprogrammid, süsteemi muutujad ja standardfunktsioonid • Kasutatakse: Muutujate tähistena Programminimedena Märgenditena
Muutujad muutujad Kasutaja muutujad Süsteemsed muutujad lokaalsed globaalsed liht- indeksiga liht- indeksiga
Muutujad • Kasutaja muutujad Kasutaja saab teha direktiiviga SET ja hävitada direktiiviga KILL • Süsteemsed muutujad Loob ja korrigeerib operatsioonisüsteem
Muutujad • Lokaalsete muutujate väätust säilitatakse operatiivmälus Kättesaadavad ainult sellel tarbijale selle sessiooni vältel • Globaalseid muutujaid säilitatakse magnetkettal Kättesaadavad kõigile sama identifitseerimiskoodiga kasutajatele
Muutujad: Massiivid • Puudub massiivikirjeldus • Operatsioonisüsteem jaotab mälu dünaamiliselt, vastavalt vajadusele • Kui on olemas elemendid M(1), M(1,2,1), M(2,1), M(2,2) siis hoitakse seda mälus: M M(1) M(2) M(1,2) M(2,1) M(2,2) M(1,21)
Avaldised • Kõiki tehete arvutamisi teostatakse vasakult paremale • NB! Mingit muud tehete prioriteeti ei ole • Tehete järjekorra muutmiseks võib kasutada sulge • Kuna kõiki andmeid hoitakse sõnedena siis andmete interpretatsioon sõltub sellest missugust operanti nõuab tehe.
Avaldised • Sõne interpreteerimine arvuna algab esimesest sümbolist ja kestab, kuni pole leitud sümbolit, mis arvu süntaksiga ei ole kooskõlas. • Näiteks: “1982 juuni” + 1 on samaväärne 1982+1 “juuni 1982” +1 on samaväärne 0+1
Avaldised • Näide tehete järjekorrast: 2<3+1 väärtuseks on 2 sest 2<3 on tõeväärtus “tõene ”ja see on 1, nii et 1+1=2 2<(3+1) väärtuseks on “tõene” (1) sest 3+1=4 ja 2<4
Programmi Struktuur • Programm koosneb ridadest • Iga rida algab sümboliga Ꚗ või märgendiga, millele järgneb Ꚗ • Reas võib olla 1 või mitu direktiivi • Iga direktiivi vahel peab olema täpselt üks tühik • Kui direktiivil pole argumente siis täpselt 2 tühik • Kommentaarid algavad sümboliga ; ja kestavad rea lõpuni • Märgendid ei tarvitse olla unikaalsed
Programmi Struktuur • Iga direktiiv koosneb ingliskeelsest võtmesõnast ja argumentidest • Võtmesõna ja argumentide vahel võib paikneda tingimus • Näiteks: WRITE:N>0 “JAH” • Argumendid eraldatakse komadega • Interpretaator tunneb võtmesõnu esitähe järgi (v.a. Z kus ta tunneb 2 esimese tähe järgi) • Näiteks: WRITE “tere” = W “tere”
Direktiivid: SET • Omistab väärtuse muutujale • Saab omistada lokaalseid, globaalseid, liht- ja indeksiga muutujaid • Näiteks: SET summa=A+B lokaalne muutuja SET ^M=7 globaalne muutuja SET mas(1)=1,mas(2)=3 indeksiga muutuja
Direktiivid: WRITE • Kasutatakse tulemuse väljastamiseks • Automaatselt pärast rea väljastamist reavahetust ei tehta, tuleb käskida erikäsuga ! mine uuele reale = mine uuele leheküljele ?n trüki n-dast positsioonist
Direktiivid: WRITE • Näiteprogramm kirjutamisest: Ꚗ; Teksti trükkimine, kirjutab TIIT A Ꚗ WRITE ?24 “*** * * ***”,! ꚖSET x = “ * * * *” ꚖWRITE ?24,x,!,?24,x ꚖHALT
Direktiivid: DO • Direktiiv programmi täitmiseks. • Programm peab olema terminalilt sisestatud programmi puhvrisse • Näiteks: DO A
Direktiivid: QUIT ja HALT • QUIT Lõpetab programmi töö ja laseb kasutajal arvutiga edasi töötada • HALT pärast programmi töö lõppu registreerib kasutaja arvutist välja
Direktiivid: GOTO • Suunatakse märgendi või programmi nime juurde, mida täita edasi • Võib anda ka suhtelise märgendi • Näiteks: GOTO M GOTO M+1
Direktiivid: FOR • Direktiiv tsüklite programmeerimiseks • Korratakse kõiki käske, mis on samal real peale FOR käsku • Saab anda ette kolm parameetrit: algväärtus, samm ja maksimumväärtus
Direktiivid: IF • IF-i järgi on avaldiste loetelu, eraldatud komadega, kui kõik avaldised on tõesed, siis täidetakse IF järel olev käsk • Kui kõik avaldised on tõesed, omistatakse ka süsteemsele muutujale TEST=1, kui väärad aga TEST=0 • Kui IF-i kasutakse ilma argumentideta, siis täidetakse IF-i järel olev käsk juhul kui TEST=1
Direktiivid: ELSE • ELSE järel olevat käsku täidetakse juhul kui TEST=0 • Näiteks: ꚖIF C=2 WRITE “JAH” ꚖELSE WRITE “EI” ꚖIF WRITE “TEIST KORDA JAH” ꚖSET C=C+1
Silumisest • Programmi silumine on keeles DIAMS-2 raske ja keeruline • Selleks saab kasutada mõnda süsteemset käsku ja Redaktorit(autor Raivo Käi)
Alamprogrammid • DIAMS-2 lubab ka alamprogramme • Nende poole pöördutakse programmi seest: DO rea_number ^programmi nimi • DO ja GOTO vahe on see, et pärast DO-ga välja kutsutud programmi lõppu naastakse vanasse programmi. • Alamprogrammi ja põhiprogrammi vahel käib andmete vahetus ainult muutujate vahendusel
Mittetäielik süntaks • Kui on kasutatud globaalset muutujat ^AB(1,1) ja siis on vaja omistada muutujale B globaalse muutuja ^AB(1,2) väärtust, siis saab seda teha: SET B= ^(2) • Või kui on vaja ^AB(1,2,1) väärtust SET A=^(2,1)
Kaudne nimi, šabloon või argument • Kasutatakse elementide dünaamiliseks ette andmiseks • Näiteks: SET A=“X1”, @A=4 muutujale X1 omistatakse väärtus 4 SET B=“MAR” GOTO @B+2 Antakse juhtimine 2 ritta alates märgendist MAR
Näidisprogramm Programm nimega KESKM: M1 Ꚗ;15 hinde keskmise arvutmine ꚖREAD “HINDED: ” SET S=0 FOR J=1:1:15 READ A(J) SET S=S+A(J) ;Hinnete sisestamine ja summeerimine ꚖSET K=S/15 QUIT ;Alamprogrammi lõpp Programm nimega KOOND: MꚖ;Nimede ja keskmiste hinnete trükk ꚖREAD “N=”,N,! FOR I=1:1:N READ NIMI(I) WRITE NIMI(I) DO ^KESKM WRITE ?20,K,! ꚖQUIT ;Põhiprogrammi lõpp