14. Un Tutorial de Script-Fu

En este curso de entrenamiento, te introduciremos en los fundamentos del Scheme, necesarios para usar Script-Fu, y entonces construir un script práctico que puedas añadir a tu caja de herramientas de scripts. El script puntual, el usado para 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 lanzar tu conocimiento de Script-Fu.

[Note] Nota

Esta sección está adaptada de un tutorial escrito para el Manual de usuario de  el Gimp 1 por Mike Terry.

14.1. Conociendo Scheme

Comencemos A "Schemear"

La primera cosa que aprenderemos es que:

Todas las declaraciones en Scheme van entre paréntesis

La segunda cosa que debes 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ás familiarizado con la notación postfix, o posees una calculadora que usa Notación Polish Reverse (como muchas calculadoras HP), no deberías tener problemas adaptandote 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 sigue, logicamente, de la notación prefix que mencionamos.

Ejemplos De Notaciones Prefix, Infix, Y Postfix

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

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

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

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

Practicando Scheme

Ahora, practicaremos lo que hemos aprendido. Inicia Gimp, si todavia no lo has hecho, y selecciona Exts->Script-Fu->Consola. 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á.:

La Ventana De La Consola De Script-Fu

En el fondo de esta ventana está una campo de entrada con el título Comando actual. Aquí, puedes probar los comandos Scheme interactivamente. Comienza , y añade unos números:

        (+ 3 5)
      

Tecleando, estoy presionando  Enter y da la esperada respuesta, 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 de 14.

Tan lejos, que bueno -- tecleamos una declaración en Scheme y se ejecuta inmediartamente en la ventana de la Consola Script-Fu. Ahora unas palabras de precaución...

Tener Cuidado Con Los Paréntesis Extra

Si eres como yo, lo estarás usando para ser capaz de usar  paréntesis extras donde quieras -- como cuando tecleas una ecuación matemática compleja y quieres separar las partes con paréntesis para hacerla más clara cuando la lees. En Scheme, tienes que ser cuidadoso y no insertar estos paréntesis extra, de manera incorrecta. Por ejemplo, decir que qeremos 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ías estar tentado de convertir lo de arriba en lo siguiente:

        (+ 3 (5 6) 7)
      

Esto es incorrecto -- recuerda, cada declaración en Scheme comienza y termina con paréntesis, así que el intérprete Scheme pensará que intentas 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 la declaración de arriba sería:

        (+ 3 (+ 5 6) 7)
      

Asegurate De Tener El Espacio Apropiado, Tambien

Si está familiarizado con otros lenguajes de programación, como C/C++, Perl o Java, sabes que no necesitas 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. Debes tener un espacio después de un operador matemático (u otra nombre de funciónu operador) en Scheme, para que sea correctamente interpretado por el intérprete de Scheme.

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