Dette er eit kortkurs i bruk av programmeringsspråket Scheme, som vert brukt for å skrive Script-Fu. I løpet av kurset vil du også laga eit nyttig skript som du kan supplera skriptsamlinga di med. Skriptet let deg skriva inn ein tekst og lagar deretter eit bilete nøyaktig like stort som teksten. Seinare vert skriptet utvida slik at du kan leggja litt luft rundt teksten. Til slutt vil du få nokre tips om korleis du kan bruka dei nye kunnskapane dine.
Notat | |
---|---|
Denne bolken er henta frå ei innføring skrive for handboka for GIMP 1 av Mike Terry. |
Scheme er ein dialekt i Lisp-familen av programmeringsspråk. GIMP brukar TinyScheme, som er ei lettvektsutgåve av den såkalla R5RS-standarden.
Det første du må lære er at:
Alle utsegner i Scheme er omgitt av parentesar ().
Det andre du må lære er at:
Funksjonsnamnet eller funksjonsoperatøren er alltid det første elementet i parentesen. Resten av elementa i parentesen er parametrar til funksjonen.
Ikkje alt som står i parentesar er ein funksjon, det kan også vera element i ei liste. Meir om dette seinare. Denne måten å skriva program på, vert kalla «prefiksnotasjon» fordi funksjonen vert sett framføre alt anna. Dersom du er van med «etterskriftsnotasjon» , eller har brukt ein kalkulator med «Reversert polsk notasjon» (som mange større HP-kalkulatorar brukar), burde ikkje dette vert noko stort problem for deg.
Det tredje du må lære deg er at:
Matematiske operandar er å sjå på som funksjonar. Difor skal desse skrivast først i eit matematisk uttrykk.
Dette følgjer eigentleg logisk ut frå det som tidlegare er nemnd.
Her er nokre eksempel som viser skilnaden mellom notasjonane «prefiks», «innfiks» og «postfiks». Eksempla legg saman tala 1 og 23:
Prefiks-notasjon: + 1 23
(slik Scheme vil ha det)
Infiks-notasjon: 1 + 23
(slik vi skriv til vanleg)
Postfiks-notasjon: 1 23 +
(slik t.d. mange HP-kalkulatorar brukar)
Dermed er vi klare for å praktisera kunnskapane våre. Start opp GIMP, dersom du ikkje alt har gjort det, og finn fram til
→ → . Klikk på denne, og vindauget «Script-Fu konsoll», som vi skal arbeida på, vil dukka opp på skjermen:Nedst i dette vindauget finn du eit innskrivingsfelt kalla «Aktiv kommando». Her kan vi prøva ut enkle Scheme-kommandoar direkte. Lat oss byrja svært enkelt med å leggja saman nokre tal:
(+ 3 5)
Skriv du inn dette, og trykker Enter -tasten, vil funksjonen dukka opp i det store vindauget saman med svaret 8.
Kva om vi ønskjer å leggja saman fleire enn to tal? Ingen problem. Funksjonen «+» kan ta fleire argument:
(+ 3 5 6)
Dette gjev også det venta svaret på 14.
Fint. – Vi har altså skrive inn ei utsegn i Scheme, og fått svar på dette i Script-Fu vindauget. No ei lita åtvaring …
Mange likar å kunna setja inn ekstra parentesar der det måtte vera ønskeleg, t.d. for å gjera eit komplekst matematisk uttrykk lettare å forstå. I Scheme må du vera nokså nøye med kvar og korleis du brukar slike parentesar. Sett at du ønskjer å addera 3 til resultatet av addisjonen 5 + 6 og deretter leggja til 7:
3 + (5 + 6) + 7 = ?
I og med at du no har lært at operanden + kan addera ei heil liste med tal, vert du kanskje freista til å skriva:
(+ 3 (5 6) 7)
Dette er feil. Hugs at kvart utsegn i Scheme er inneslutta i parentesar. Tolkaren i Scheme reknar med at du prøver å kalla opp ein funksjon med namnet «5» i den andre parentesgruppa. Det du eigentleg meinte, var at programmet først skulle rekne ut den innarste parentesen og deretter addere resultatet til den yttarste parentesen, slik du er van med frå «vanleg» matematikk. Du og Scheme tenkjer altså litt ulikt her.
Den rette måten å skriva uttrykket ovanfor i Scheme er:
(+ 3 (+ 5 6) 7)
Dersom du har arbeidd med andre programmeringsspråk som t.d. C/C++, Perl, Delphi eller Java, er du kanskje van med at det ikkje er nødvendig med mellomrom (blankteikn) rundt matematiske operandar:
3+5, 3 +5, 3+ 5
Alle desse vert oppfatta likt og slik du reknar med det skal vera i dei nemnde språka. I Scheme må du derimot ha mellomrom etter desse, og alle andre operandar og funksjonsnamn for den saks skuld.
Eksperimenter litt med det du har lært på denne sida før du går vidare til neste leksjon. Skrivemåtane er svært viktige også i Scheme.