i i “Mohar-pascal” — 2010/5/12 — 12:46 — page 1 — #1 i i i i i i List za mlade matematike, fizike, astronome in računalnikarje ISSN 0351-6652 Letnik 13 (1985/1986) Številka 3 Strani 185–192 Bojan Mohar: OXFORD PASCAL Ključne besede: računalništvo, programski jeziki, pascal. Elektronska verzija: http://www.presek.si/13/785-Mohar.pdf c© 1986 Društvo matematikov, fizikov in astronomov Slovenije c© 2010 DMFA – založništvo Vse pravice pridržane. Razmnoževanje ali reproduciranje celote ali posameznih delov brez poprejšnjega dovoljenja založnika ni dovo- ljeno. 185 Trenutno najboljši prevajalnik za pascal na računalniku Commodore 64 je Oxford pascal. Dobiti seda tako verzijo na disketi kot na kaseti. Njegova velika prednost je v tem, da se skoraj brez izjem drži standardov . Razen tega vsebuje ukaze za delo z grafiko in zvokom. Njegov operacijski sistem je enostaven, a dovolj močan, da je delo z njim kar seda udobno. Oxford pascal lahko upo rabljamo na dva načina. Pri prvem, enostavnejšem, sta v pomni lniku istočasno tako prevajaln ik kot naš program. Ta način je ide- alen za pisanje krajših programov, na primer tak ih , kot jih najdemo v učben i­ k ih. Poleg velikosti programa je edina omejitev, ki jo postav lja t a nač in, da ne moremo uporabljati nekaterih ukazov za delo z disketno enoto . Pri pisanju daljših, profesionalnih programov pa bomo izbrali način, pr i katerem je preva- j alnik ves čas na disketi. V nadaljevanju bomo v glavnem opisova li le prvi nač in . (Kaj več o diskretnem načinu pa bomo povedali kdaj druqič.) 1. Uporaba prevajalnika Najprej naložimo program za nalaganje prevajalnika: LOAD "*",8 Ko dobimo sporočilo READY, ukažemo RUN in zopet počakamo na sporoči lo READY. Tokrat čakamo malo dlje. Sedaj se namesto v basicovem nahajamo v pascalovem operacijskem sistemu. Oglejmo si, kako ga uporabljamo. Program v pascalu, ki ga želimo vtipkati , ima tako kot programi v basicu oštevilčene vrstice. Torej začnemo pisati : 100 program test ; Ko pritisnemo RETURN, je vrstica vnesena, sistem pa nam sam napiše številko nove vrstice (1101, da nam olajša delo. Če želimo končati z vnašanjem progra- ma, pritisnemo le RETU RN in sistem nam ne bo več vsiljeval novih številk vrstic. Program popravljamo in spreminjamo na enak način kot programe v basicu. Pascalov operacijski sistem uboga mnoge ukaze. Najpomembnejše bomo na kratko opisali. AUTO AUTO n LIST obm izključi avtomatični prikaz številk vrstic pri vnašanju programa. spremeni razmik med številkami vrstic pri avtomati- čnem vnašanju na n. Začetna vrednost razmika je n = = 10. izpiše del ali celoten program na ekran. Dodatek 'obrn' določa območje, ki naj se izpiše. Ima enako obliko kot območje v basicu. Primer : LIST LIST 210 LIST 100- LIST -100 LIST 100-200 izpis celega programa izpis vrste 210 izpis vsehvrst od 100 dalje izpis vseh vrst do vključno 100 izpis vrst s številkami med 100 in 200 tJPPER LOWER NEW DISK NUMBER n,m,k Opomba: Tudi območja pri drugih ukazih, ki jih bomo navedli v nadaljevanju, imajo enako obliko in pomen . vključi velike črke. vključi male črke. zbriše našprogram v pomnilniku. vključi disketni način (prevajalnik na disku). ponovno oštevilči vrstice. Začne z vrstico n, ki bo ime- la po novem številko m, korak med zaporednimi vrsti- cami pa bo enak k. v danem območju 'obrn' (glej ukaz LIST) poišče (in izpiše) vse vrstice, v katerih se nahaja zaporedje znakov 'niz'. Primer; FIND*VAR*, 100-500 CHANGE'miz1*niz2*,obm v danem območju nadomesti nize 'niz l ' z nizom 'niz2'. DELETE obm izbr iševrstice, določene z 'obrn'. PUT ime shrani program na disketo. Primer: PUT TEST je analogno basicovemu SAVE "TEST", 8. 186 GETime RUN (ali R) L P DUMP obm prebere program z diskete. izvede naš program. Če svojega programa še nismo prevedli, se najprej opravi prevajanje. prevede program in ga hkrati izpisuje na ekran. prevede program in ga hkrati izpisuje na tiskalnik. izpiše program na tiskalnik. Razen tega lahko uporabljamo še nekatere basicove ukaze, na primer PRINT, CMD, POKE, SYS. Za direktorij na disketi uporabimo LOAD "$",8 in LIST. Pri tem seveda izgubimo svoj program v pomnilniku. 2. Nekateri dodatni podprogrami Oglejmo si le tri podprograme. Prvi je VDU. Njegova oblika je naslednja: VDU (vrstica, kolona, znak) povzroči pa, da se v ustrezni vrstici in koloni izpiše dani znak. Gornji levi kot pomeni vrstico O in stolpec O. Funkcija GETKEY prebere znak s tipkovnice. Če ni bila pritisnjena še no- bena tipka, vrne vrednost CHR(O). Tako na primer zanka repeat ch := getkey until ch<>chr (O) čaka, dokler ne pritisnemo katerekoli tipke . Funkcija RAN DOM vrne naključno število med O in 255. 3. Zvok in grafika Prevajalnik ne bi bil vreden počenega groša, če nam ne bi omogočal dela z gra- fiko visoke ločljivosti in z zvokom. Za .zvok imamo na voljo tri podprograme. Prvega pokli černo takole: ENVEL (glas, naraščanje, upadanje, nivo zvoka, izzven) Z njim določimo obliko zvoka. Vsi parametri so celoštevilski: glas ima vredno- sti 1, 2 ali 3 in pove, za kateri glas gre. Ostali parametri pa imajo vrednosti med 1 in 15 in opisujejo vrsto zvoka. Drugi program je VOICE (glas, frekvenca, oblika zvočnih valov, trajanje) Glas je spet med 1 in 3, ravno tako oblika valov (trikotna, žagasta, pravokotna in šum). Frekvenca je med O in 65535 in jo dobimo tako, da frekvenco, izraže- 187 no v Hz, delimo s številom 0.059604645. Tabelo frekvenc, ki ustrezajo posa- meznim glasbenim notam, najdemo v priročniku, ki ga dobimo skupaj z ra- čunalnikom . Trajanje je tudi število med 1 in 65535 . Trajanje zvoka v glasbi je odvisno od tempa. Normalna vrednost za noto "četrtinko" bo okrog 500, za polovinko dvakrat več itd. Tretji podprogram določi glasnost (število med 1 in 15) in ga pokličemo z VOLUME (glasnost) Spodprogramom ENVEL določimo obliko zvoka, z VOLUME glasnost, z VOICE pa zvok aktiviramo. Oblika zvoka ostane nespremenjena do naslednje uporabe podprograma ENVEL. Morda ni odveč omeniti, da ima vsak od treh glasov lahko svojo obliko. Iz dosedanjega op isa zvoka bo le malokdo znal sprogramirati igranje na klavir . Priporočamo kakšno knjigo, v kateri je opisano generiranje zvoka na C-64, lahko t udi v basicu. Tu si oglejmo le nekaj parametrov za posamezne instrumente: klavir: f lavta: orgle: ksilofon: violina: Zaporedje stavkov: envel (1, O,9, O, O), oblika valov pravokotna envel (1,6, O, O,O), oblika valov trikotna envel (1, O, O, 15, O), oblika valov trikotna envel (1, O,9, O,9), oblika valov trikotna envel (1,5,8,5,9), ob lika valov žagasta envel (1, O,9, O, O); volume (15); voice (1,2500,1,5000); torej izvabi iz računalnika zvok, podoben pritisku na tipko malo slabšega kla- virja . Oglejmo si šepod programe za grafiko.Že v tekstovnem načinu imamo tri ukaze: BORDER (barva) določi barvo okvirja; med O in15 SCREEN (barva) določi barvo zaslona; med O in 15 PEN (barva) določi barvo znakov; med O in 15 Posamezne vrednosti barv predstavljajo naslednje odtenke: 188 O črna 1 bela 2 rdeča 3 .... turkizna 4 vijoličasta 5 .... zelena 6 modra 11 .... siva 1 7 rumena 12 .... siva 2 8 oranžna 13 .... svetlo zelena 9 rjava 14 .... svetlo modra 10 svetlo rdeča 15 ... . siva 3 Za risanje uporabljamo grafiko visoke ločljivosti. Najprej z ukazom PLOT (O, O, O,O, O) zahtevamo, naj se napravi čista slika visoke ločljivosti, ki pa je zaenkrat še ne vidimo. S klicem HIRES(1) pa se ta slika zares pojavi na zaslonu. Če smo pred tem že kaj r isali v grafiki vi- soke ločljivosti, bodo narisani liki še vedno vidni. Z ukazom PLOT (1, O, O, O, O) pa zaslon postane čist. Lahko mu šedoločimo barvo: PAPER (barva) kjer je barva med 1 in 15. Barvo peresa (črt) pa izberemo z INK (barva) Če se želimo vrniti iz grafike visoke ločljivosti v navadni, tekstovn i nač in, zo- pet uporabimo podprogram HI RES, tokrat z argumentom O: HIRES(O) Še en ukaz je, s katerim določamo grafični način. Klic WINDOW (vrstica) razdeli ekran na dva dela: od vrst ice O do 'vrst ica' je visoka ločljivost, v spod- njem delu ekrana pa imamo tekstovni način . V grafičnem načinu z visoko ločljivostjo ima zaslon našega računalnika 320 x 200 točk. Vsaka od teh točk je lahko osvetljena ali pa ne in s tem lahko tvorimo najrazličnejšeslike. Vsaka točka ima dve koordinati (x, V) , O~ x < < 320 , O~ Y < 200 . Točka (O, O) je v spodnjem levem kotu, smer osi x je od 189 leve proti desni, smer osi V pa od spodaj navzgor. Za risanje črt uporabljamo podprogram PLOT. Klic PLOT (p, xl, v l , x2, V2) dela črto od (xl, Vl) do točke (x2, V2). Če je vrednost prvega parametra enaka p = 2, se črta nariše, če pa je p = 3, se črta zbriše. Klic PLOT (2, x, V, x, V) osvetli točko (x, V). Funkcijski podprogram EXAMINE (x, V) vrne vrednost 1, če je točka (x, V) osvetljena, sicer pa vrne O. Za konec sestavimo še program, ki nariše lik, sestavljen iz koncentričnih kvadratov s središčem v točki (100, 100). program koncentricni; (* risanje koncentričnih kvadratov *) const sx= 100; SV = 100; var i: integer; procedure kvadrat (a : integer) ; (* nariše kvadrat s središčem (sx, sv) in stranico a *) var x, V, a2 : integer; begin a2 := a div 2; x := sx - a2; V := sV - a2; plot (2, x, V, x + a, V); plot (2, x + a, V, x + a, V + al; plot (2, x + a, V + a, x, V + a); plot (2, x, V + a, x, V) end; (* kvadrat *1 procedure zacetek; begin paper (5); ink (1); plot (O, O, O,O, O); plot (1, O, O, O, O) ; hires(l) end; procedure konec; 190 begin v (* preden se vrneš v navadni način, čakaj na pritisk katerekoli tipke . Ce bi se vrnil takoj, bi slika prehitro izginila *) repeat until getkey <> chr (O); hires (O) end; begin (* program *) zacetek; for i := 1 to 20 do kvadrat (10 * il; konec end. 4. Zunanje datoteke V navadnem načinu dela lahko uporabljamo le datoteki input in output za ko- munikacijo preko zaslona. V disketnem načinu pa so dovoljene datoteke polju- b nega tipa . Če datoteko odpremo le z REWRITE (datoteka), bo po izvajanju izginila. Če želimo uporabljati fizične datoteke na disketi, jih odpremo z razširjenim ukazom: RESET (f, 'ime') za branje in REWRITE (f, 'ime') za pisanje. Ime, navedeno v narekovaj ih , je tako, kot ga sprejme disketna enota . Namesto niza lahko kot ime navedemo tudi spremenljivko, v kateri so shranjeni znaki imena datoteke. Tudi enote, ki so priključene na vodilu IEEE , lahko uporabljamo kot dato - teke, na primer za pisanje na tiskalnik ali kaseto ali branje s kasete. To doseže- mo, če odpremo datoteko z ukazom RESET oziroma REWRITE v naslednji obliki: RESET (ime, št. enote, sekundarni naslov) ali RESET (ime, št . enote, sekundarni naslov, ime datoteke) Podobno za rewrite. Prvi parameter je ime datoteke v našemprogramu, številka enote je enaka 1 za kasetar, 4 za tiskalnik. Sekundarni naslov je navadno enak O. Kot zgled sestavimo program , ki sekvenčno datoteko z diskete prepiše na tiskalnik. 191