3. Un tutorial de Script-Fu

Historial de revisiones
Revisión $Revision: 2492 $ 2007-04-01 AntI

En este curso de entrenamiento, le introduciremos en los fundamentos del 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, aumentaremos el script para permitir un búfer de espacio alrededor del texto. Concluiremos con unas pocas sugerencias de maneras de aumentar su conocimiento de Script-Fu.

[Nota] Nota

Esta sección está adaptada de un tutorial escrito para el manual de usuario del GIMP 1 por Mike Terry.

3.1. Conociendo el Scheme

3.1.1. Comencemos

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 función/operadores, siempre, lo primero 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 -- pueden ser artículos de una lista -- lo veremos más tarde. Esta notación es referida como notación prefix, porque la función prefija todo. Si está familiarizado con la notación postfix, o posee una calculadora que usa Notación Polish Reverse (como muchas calculadoras HP), no debería tener problemas adaptandose a la formulación de expresiones en Scheme.

La tercera cosa a entender es que:

Los operadores matemáticos son, tambien, considarados funciones, y, así, son listados primero cuando se escriben expresiones matemáticas.

Esto seguido, logicamente, de la notación prefix que mencionamos.

3.1.2. Ejemplos de notaciones Prefix, Infix, Y Postfix

Aquí están algunos ejemplos rápidos que ilustran las diferencias entre notaciones prefix, infix, y postfix.Sumamos un 1 y un 3:

  • Prefix notation: + 1 3 ( la manera en que Sheme lo quiere)

  • Infix notation: 1 + 3 (La manera en que, "normalmente", lo escribimos)

  • Postfix notation: 1 3 + (la manera en que muchas calculadoras HP lo quieren)

3.1.3. Practicando scheme

Ahora, practicaremos lo que hemos aprendido. Inicie GIMP, si todavia no lo ha hecho, y seleccione ExtsScript-FuConsola. Esto inicia la ventana de la consola de Script-Fu, lo que nos permite trabajar, interactivamente, en Scheme. En un momento, la Consola de Script-Fu aparecerá.:

3.1.4. La ventana de la consola de Script-Fu

En el fondo de esta ventana hay una campo de entrada con el título Comando actual. Aquí, puede probar los comandos Scheme interactivamente. Comienze , y añada unos números:

(+ 3 5)

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

Ahora, ¿Si queremos sumar más de un número?, La función "+" puede tener dos o más argumentos, así que esto no es un problema:

(+ 3 5 6)

Esto 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 extras

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 tentatarle convertir lo de arriba en lo siguiente:

(+ 3 (5 6) 7)

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, más que 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 son aceptados por los compiladores de C/C++, Perl o Java. Esto mismo, 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.