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

En aquest curs, començarem amb una introducció als fonaments de «Scheme» necessaris per 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 «User manual».

3.1. Coneixent l'Scheme

3.1.1. Comencem amb l'Scheme

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 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 naturald'escriure)

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

3.1.3. Pràctiques d'Scheme

Ara practicarem el que hem après. Inicieu el GIMP si encara no ho heu fet, després seleccioneu FiltresScript-FuConsola. Això obrirà la finestra de la Consola de Script-Fu, la qual cosa ens permet treballar interactivament amb l'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. Aquí 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.3. Ús de la consola Script-Fu.

Ús de la consola Script-Fu.

Ara bé, si volem afegir més d'un nombre, cap problema; la funció + pot tenir més de dos arguments:

(+ 3 5 6)

I, com era d'esperar, s'obté 14.

Bé, teclegem una declaració en Scheme i s'executarà immediatament en la finestra de la consola de Script-Fu. No obstant això, calen algunes precaucions...

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