## 3. Ei innføring i Script-Fu

Dette er eit kortkurs i bruk av programmeringsspråket Scheme, som vert brukt for å skriva 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.

### 3.1. Bli kjent med Scheme

#### 3.1.1. Byrja med Scheme

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.

However, not everything enclosed in parentheses is a function they can also be items in a list but we'll get to that later. This notation is referred to as prefix notation, because the function prefixes everything else. If you're familiar with postfix notation, or own a calculator that uses Reverse Polish Notation (such as most HP calculators), you should have no problem adapting to formulating expressions in Scheme.

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.

#### 3.1.2. Eksempel på «Prefix-», «Infix-» og «Postfix-» notasjonar

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 me skriv til vanleg)

- Postfiks-notasjon: `1 23 +` (slik t.d. mange HP-kalkulatorar brukar)

#### 3.1.3. Praktiske øvingar i Scheme

I GIMP vel du Filter → Utvikling → Script-Fu → Script-Fu-konsoll frå hovudmenyen. Dette vil opna konsollvindauget for Script-Fu som let oss arbeida interaktivt i Scheme.

#### 3.1.4. Script-Fu konsoll vindauget

Nedst i dette vindauget finn du eit innskrivingsfelt for kommandoar. Her kan me prøva ut enkle Scheme-kommandoar interaktivt. 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.

Figur 13.1. Å bruka Script-Fu-konsollen.

Funksjonen «+» kan ta fleire argument slik at me kan leggja til fleire tal:

    (+ 3 5 6)

Dette gjev også det venta svaret på 14.

So far, so good we type in a Scheme statement and it's executed immediately in the Script-Fu Console window. Now for a word of caution

#### 3.1.5. Sjå opp for ekstra parentesar

If you're like me, you're used to being able to use extra parentheses whenever you want to like when you're typing a complex mathematical equation and you want to separate the parts by parentheses to make it clearer when you read it. In Scheme, you have to be careful and not insert these extra parentheses incorrectly. For example, say we wanted to add 3 to the result of adding 5 and 6 together:

    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)

However, this is incorrect remember, every statement in Scheme starts and ends with parens, so the Scheme interpreter will think that you're trying to call a function named «5» in the second group of parens, rather than summing those numbers before adding them to 3.

Den rette måten å skriva uttrykket ovanfor i Scheme er:

    (+ 3 (+ 5 6) 7)

#### 3.1.6. Pass på mellomromma

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.

2.4. Ulike typar av Script-Fu |  | 3.2. Variablar og funksjonar

Report a bug in GIMP Report a documentation error