Palíndromos en Groovy
Los palíndromos son palabras o frases que leídos de atrás hacia adelante se leen igual de adelante hacia atrás; por ejemplo: arenera y ana. Este pequeño programa nos indica si una palabra es o no es palíndromo.
def input = new Scanner(System.in) def igual = 0, aux = 0, texto print("Ingrese la palabra que desea evaluar: ") texto = input.nextLine() for(ind = texto.length() - 1; ind >= 0; ind--) { if(texto[aux] == texto[ind]) { igual++ } aux++ } if(texto.length() == igual) { println("El texto es palindromo :D") } else { println("El texto no es palindromo :(") }
Antes de comenzar seguramente los que ya programan en Java notaran algunas líneas muy familiares, esto se debe a que el lenguaje de programación Groovy usa una sintaxis heredada de Java; aunque Groovy comparte varias cosas con Java, en realidad está influido por Python, Perl, Ruby y Smalltalk. Es totalmente compatible con Java y con sus APIs; sin embargo, es de tipado tanto dinámico como estático.
Declaración de variables e instancia del objeto Scanner():
def input = new Scanner(System.in) def igual = 0, aux = 0, texto
En Groovy las variables se declaran con la palabra clave def
; en la primera línea se crea una variable llamada input, esta variable será una instancia de la clase Scanner
; sin embargo, los programadores Java extrañaran que no exista una línea con la sentencia import java.util.Scanner
, esto se debe a que todas las clases en java.util.*
son importadas por defecto; la segunda línea declara tres variables, dos de ellas se inicializan con un valor de cero (0) mientras que a la última se le asigna null.
Al ser un lenguaje de tipado tanto dinámico como estático, esto quiere decir que se pueden omitir o incluir el tipo de cada variable; por ejemplo, aquí también se pudo haber definido las variables de la segunda línea con el tipo long o int: long igual = 0, aux = 0, texto
.
Solicitud y lectura de datos por teclado:
print("Ingrese la palabra que desea evaluar: ") texto = input.nextLine()
Bien, aquí el usuario interactúa directamente con el programa, en la primera línea se muestra un mensaje en pantalla solicitando al usuario que ingrese una palabra; en la segunda línea se leen los datos ingresados por el usuario usando el método nextLine()
y se almacena el valor en la variable texto (esta variable tenía null).
Sentencia for(), iterando sobre la longitud del string:
for(ind = texto.length() - 1; ind >= 0; ind--) { if(texto[aux] == texto[ind]) { igual++ } aux++ }
El bucle for()
no va a iterar de forma incremental como se hace comúnmente sino que reducirá su variable de inicialización. primero vamos a crear una variable y luego la vamos a inicializar con la longitud de la palabra en la variable texto usando el método length()
menos 1; luego vamos a iterar hasta que ind sea menor o igual a cero (0), reduciendo su valor en 1.
Al interior del bucle for hay una sentencia if()
y dos variables que se van incrementando; la primera variable solo se incrementa si la igualdad en la sentencia if se cumple, de esta variable depende que el usuario sepa si una palabra es o no es palindroma; la segunda variable es una auxiliar que se incrementa en 1, el valor que almacena será determinante en el resultado final de la igualdad if(texto.length() == igual).
Sentencia if(), verificando la igualdad:
if(texto.length() == igual) { println("El texto es palindromo :D") } else { println("El texto no es palindromo :(") }
La sentencia if() verifica si la longitud de la palabra ingresada por el usuario es igual al valor almacenado en la variable igual; si la igualdad se cumple, entonces la palabra es palindroma y se le informa al usuario, de lo contrario se le informa al usuario que la palabra no es palindroma.
Algunos notaran que el lenguaje de programación Groovy es menos verboso que su homologo Java, al igual que una sintaxis mucho mas limpia facilitando la legibilidad del programa.