Ahora, practicaremos lo que hemos aprendido. Inicie GIMP, si todavia no lo ha hecho, y seleccione Exts ScriptFu Consola . Esto inicia la ventana de la consola de ScriptFu, lo que nos permite trabajar, interactivamente, en Scheme. En un momento, la Consola de ScriptFu aparecerá.:
La ventana de la consola de ScriptFu
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 ScriptFu. Ahora unas palabras de precaución…
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)
Conceptos Básicos de Scheme
- Expresiones Básicas: Scheme utiliza notación de prefijo para las expresiones. Por ejemplo:scheme
(+ 1 2 3) ; Suma de números (* 4 5) ; Multiplicación de números (define x 10) ; Definición de una variable
- Funciones y Aplicación de Funciones: Las funciones en Scheme se aplican directamente a argumentos entre paréntesis:scheme
(define (square x) (* x x)) ; Definición de una función (square 5) ; Aplicación de la función square
- Condicionales: Scheme tiene expresiones condicionales como
if
:scheme(define (absolute x) (if (< x 0) (- x) x))
- Listas y Manipulación de Listas: Scheme trata las listas de manera fundamental:scheme
(define my-list '(1 2 3 4)) ; Definición de una lista (car my-list) ; Primer elemento de la lista (cdr my-list) ; Resto de la lista (length my-list) ; Longitud de la lista
Ejemplos Prácticos en Scheme
Función Factorial
(define (factorial n) (if (= n 0) 1 (* n (factorial (- n 1))))) (factorial 5) ; Calcula 5!
Función para Sumar los Primeros n
Números Naturales
(define (sum-of-naturals n) (if (= n 0) 0 (+ n (sum-of-naturals (- n 1))))) (sum-of-naturals 5) ; Calcula la suma de los primeros 5 números naturales
Función para Calcular el Máximo Común Divisor (MCD) con el Algoritmo de Euclides
(define (gcd a b) (if (= b 0) a (gcd b (remainder a b)))) (gcd 36 24) ; Calcula el MCD de 36 y 24
Recursos para Practicar
- Entornos de Desarrollo: Puedes usar entornos de desarrollo como DrRacket, Emacs con el modo de Scheme, o simplemente un intérprete de Scheme en línea.
- Libros y Recursos en Línea: Hay muchos recursos disponibles en línea, como libros y tutoriales que pueden ayudarte a aprender Scheme de manera efectiva.
- Practicar Resolviendo Problemas: Intenta resolver problemas simples utilizando Scheme para mejorar tu comprensión y habilidades de programación funcional.