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ó.

Tanmateix, no tot el que està tancat entre parèntesis és una funció — també poden ser articles d'una llista — es veurà més tard. Aquesta notació es refereix a la notació de prefix, ja que la funció hi és abans que tota la resta. Si esteu familiaritzats amb la notació de prefix, o teniu una calculadora que utilitza notació polonesa inversa (com moltes calculadores HP), no hauríeu de tenir problemes per a adaptar-vos a la formulació d'expressions en «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

In GIMP, select FiltersDevelopmentScript-FuScript-Fu Console from the main menu. This will start up the Script-Fu Console window, which allows us to work interactively in 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.

Fins ací, tot bé — escrivim una instrucció Scheme i s'executa immediatament a la finestra de la consola Script-Fu. Ara per auna paraula de precaució…

3.1.5. Aneu amb compte amb els parèntesis extres

Si sou com jo, estareu acostumats a utilitzar els parèntesis extres, com quan teclegeu una equació matemàtica complexa i en voleu separar les parts amb parèntesis, i així fer-la més clara. En l'Scheme, cal ser acurat i no inserir aquests parèntesis extres de manera incorrecta. Per exemple, dir que volem sumar 3 al resultat de sumar 5 més 6 i després sumar-hi 7:

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)

Tanmateix, això és incorrecte. Recordeu que cada declaració en Scheme comença i acaba amb parèntesi, així que l'intèrpret Scheme pensarà que intenta cridar una funció anomenada «5» en el segon grup de parèntesi, en lloc de sumar aquests nombres abans de sumar-hi el 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.