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 | |
---|---|
This section was adapted from a tutorial written for the GIMP 1 User Manual by Mike Terry. |
Scheme is a dialect of the Lisp family of programming languages. GIMP uses TinyScheme, which is a lightweight interpreter of a subset of the so-called R5RS standard.
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.
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)
Ara practicarem el que hem après. Inicieu el GIMP si encara no ho heu fet, després seleccioneu
→ → . Això obrirà la finestra de la Consola de Script-Fu, la qual cosa ens permet treballar interactivament amb l'Scheme: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.
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...
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)
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.