3. Programa d'aprenentatge de l'Script-Fu

En aquest curs, començarem amb una introducció als fonaments de «Scheme» necessaris per a utilitzar l'Script-Fu. Llavors construirem un script pràctic que pugueu afegir a la caixa d'eines dels scripts. L'script requereix un text per a l'usuari, i es crea una imatge nova que s'adapta a la mida del text. Aleshores, es millora l'script afegint un marc al voltant del text. Es conclou amb maneres d'augmentar el vostre coneixement de l'Script-Fu.

[Nota] Nota

Aquesta secció és una adaptació d'un programa d'aprenentatge escrit per Mike Terry per al GIMP 1 Manual d'usuari.

3.1. Coneixent l'Scheme

3.1.1. Inicia amb l'Scheme

L'esquema https://en.wikipedia.org/wiki/Scheme_(programming_language) és un dialecte de la família Lisp de llenguatges de programació. El GIMP utilitza TinyScheme, que és un intèrpret lleuger d'un subconjunt de l'anomenat estàndard R5RS.

El primer que aprendrem és:

Totes les declaracions en Scheme van entre parèntesis ().

La segona cosa que heu de saber és:

El nom d'una funció/operador és sempre el primer element en el parèntesi, i la resta són paràmetres de la funció.

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.

La tercera cosa a entendre és:

Els operadors matemàtics també es consideren funcions, i per tant apareixen en primer lloc quan s'escriuen les fórmules matemàtiques.

Això és conseqüència lògica de la notació de prefix.

3.1.2. Exemples de notacions de prefix, infix i sufix

Alguns exemples ràpids que il·lustren les diferències entre notacions de prefix, infix, i sufix. Vam sumar 1 i 23 a la vegada:

  • Notació de prefix: + 1 23 (Així és com ho vol l'Scheme)

  • Notació de sufix: 1 + 23 (és la manera «natural» d'escriure)

  • Notació de sufix: 1 23 + (utilitzada per a moltes calculadores HP)

3.1.3. Pràctiques de Scheme

En el GIMP seleccioneu FiltresDesenvolupamentScript-FuConsola Script-Fu des del menú principal. Això iniciarà la finestra de la consola Script-Fu, que permet treballar interactivament a Scheme.

3.1.4. La finestra de la Consola de Script-Fu

En la part inferior d'aquesta finestra hi ha un camp d'entrada amb el títol Ordre actual. Ací podeu provar interactivament les ordres Scheme. Comenceu amb alguna cosa fàcil i hi afegiu alguns nombres:

(+ 3 5)

Teclejant aquesta seqüència i prémer Retorn, s'obté el resultat esperat: 8, al centre de la finestra.

Figura 13.1. Ús de la consola Script-Fu.

Ús de la consola Script-Fu.

La funció «+» pot prendre més arguments, de manera que podem afegir més d'un nombre:

(+ 3 5 6)

I, com era d'esperar, s'obté 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. Aneu amb compte amb els parèntesis extres

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 = ?

Sabent que l'operador «+» pot utilitzar una llista de nombres per a sumar, podríeu estar temptats a escriure:

(+ 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.

La forma correcta d'escriure-la seria:

(+ 3 (+ 5 6) 7)

3.1.6. Assegureu-vos de tenir l'espai apropiat

Si esteu familiaritzats amb altres llenguatges de programació, com el C/C++, Perl o Java, se sap que no necessitareu espais blancs al voltant dels operadors matemàtics per a formar una expressió:

        3+5, 3 +5, 3+ 5
      

Aquestes formulacions són acceptades per C / C ++, Java o Perl. Però aquest no és el cas de l'Scheme, ja que per a ser correctament interpretat ha de tenir un espai després d'un operador matemàtic o qualsevol altra funció o operador.

Practiqueu una mica amb operacions matemàtiques simples en la consola de Script-Fu fins que estigueu còmodes amb aquests conceptes inicials.