3. Un tutorial de Script-Fu

En este curso de entrenamiento, le introduciremos en los fundamentos de «Scheme», necesarios para usar Script-Fu, y entonces construir un script práctico que pueda añadir a su caja de herramientas de scripts. El script pide al usuario algún texto, entonces crea una imagen nueva del tamaño perfecto para el texto. Entonces, se mejora el script para permitir un búfer de espacio alrededor del texto. Se concluye con unas pocas sugerencias de las maneras de aumentar su conocimiento de Script-Fu.

[Nota] Nota

This section was adapted from a tutorial written for the GIMP 1 User Manual by Mike Terry.

3.1. Conociendo el Scheme

3.1.1. Start with Scheme

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.

Lo primero que aprenderemos es que:

Todas las declaraciones en Scheme van entre paréntesis ().

La segunda cosa que debe saber es que:

El nombre de una función/operador es siempre el primer elemento en los paréntesis, y el resto son parámetros de la función.

Sin embargo, no todo lo encerrado entre paréntesis es una función — también pueden ser artículos de una lista — se verá más tarde. Esta notación se refiere a la notación prefija, porque la función prefija todo lo demás. Si está familiarizado con la notación posfija, o posee una calculadora que usa notación polaca inversa (como muchas calculadoras HP), no debería tener problemas para adaptarse a la formulación de expresiones en «Scheme».

La tercera cosa a entender es que:

Los operadores matemáticos también se consideran funciones y así se listan primero cuando se escriben expresiones matemáticas.

Esto seguido, lógicamente, de la notación prefija que mencionamos.

3.1.2. Ejemplos de notaciones prefija, infija y posfija

Aquí están algunos ejemplos rápidos que ilustran las diferencias entre notaciones prefija, infija, y posfija.Sumamos un 1 y 23 juntos:

  • Notación prefija: + 1 23 (la manera en Scheme lo quiere)

  • Notación infija: 1 + 23 (la manera en que generalmentese escribe)

  • Notación posfija: 1 23 + (la manera en que muchas calculadoras HP la quieren)

3.1.3. Practicar 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 ventana de la consola de Script-Fu

At the bottom of this window is a text entry field for commands. Here, we can test out simple Scheme commands interactively. Let's start out easy, and add some numbers:

(+ 3 5)

Tecleando esto y presionando Intro, da la respuesta esperada, 8, en el centro de la ventana.

Figura 13.1. Usr la consola de Script-Fu.

Usr la consola de Script-Fu.

The + function can take more arguments, so we can add more than one number:

(+ 3 5 6)

Esto también da la respuesta esperada, 14.

Bueno, tecleamos una declaración en Scheme y se ejecuta inmediatamente en la ventana de la consola de Script-Fu. Ahora unas palabras de precaución…

3.1.5. Tener cuidado con los paréntesis extra

Si es como yo, lo usará para ser capaz de usar paréntesis extras donde quiera, como cuando teclea una ecuación matemática compleja y quiere separar las partes con paréntesis, para hacerla más clara cuando la lee. En Scheme, hay que ser cuidadoso y no insertar estos paréntesis extra, de manera incorrecta. Por ejemplo, decir que queremos sumar 3 al resultado de sumar 5 y 6:

3 + (5 + 6) + 7 = ?

Sabiendo que el operador «+» puede usar una lista de números para sumar, podría tentarle convertir lo de arriba en lo siguiente:

(+ 3 (5 6) 7)

Sin embargo, esto es incorrecto, recuerde, cada declaración en Scheme comienza y termina con paréntesis, así que el intérprete Scheme pensará que intenta llamar a una función llamada 5 en el segundo grupo de paréntesis, en lugar de sumar esos números, antes de sumarles el 3.

La forma correcta de escribir esta declaración sería:

(+ 3 (+ 5 6) 7)

3.1.6. Asegúrese de tener el espacio apropiado, también

Si está familiarizado con otros lenguajes de programación, como «C/C++», «Perl» o «Java», sabe que no necesita espacios blancos alrededor de operadores matemáticos para formar, apropiadamente, una expresión:

        3+5, 3 +5, 3+ 5
      

Estos los aceptan los compiladores de «C/C++», «Perl» o «Java». Sin embargo, esto no es cierto para Scheme. En Scheme, debe tener un espacio después de un operador matemático (u otra nombre de función u operador), para que sea correctamente interpretado por el intérprete de Scheme.

Practique un poco con operaciones matemáticas simples en la consola de Script-Fu hasta que esté cómodo con estos conceptos iniciales.