Index(): buscar la primera vocal de una palabra en Go

Buscar el índice de una vocal, carácter o substring en Go es muy sencillo debido a que existe una función llamada Index(). Aquí veremos un pequeño programa que le solicita al usuario ingresar una palabra y el programa busca su primera vocal.

Código fuente

La primera línea que contiene la sentencia package hace referencia al nombre del paquete y puede tener cualquier nombre, excepto si dicho paquete es será el ejecutable, en este caso obligatoriamente debe llamarse main.

Importar paquetes necesarios

Necesitamos importar varios paquetes para programar las instrucciones que el programa debe realizar.

Estos paquetes nos permitirá realizar tareas tales como leer datos desde el teclado, realizar cálculos matemáticos, manipular cadenas de texto, mostrar información en pantalla y acceder a funcionalidades del sistema operativo. ¿Qué funciones vamos a usar en este programa?:

  • «fmt»: usaremos la función Print() y Println().
  • «math»: usaremos la función Min().
  • «strings»: usaremos la función Index().
  • «os»: usaremos la variable Stdin.
  • «bufio»: usaremos la función NewScanner().
Función filtrar()

Con esta función vamos a corregir un error que nos genera más adelante la función Min() cuando evaluemos los índices de las vocales.

La función filtrar() recibe un valor de tipo int y devuelve un valor de tipo float64. Básicamente lo que hace es verificar si el valor de «i» es diferente o no a -1 usando la sentencia if y dependiendo de eso devuelve el valor de «i» o 45000, ambos convertidos en float64.

Función main()

La función main() es el punto de partida de todo programa escrito en Go y no debe ser confundido con la sentencia package main visto al inicio. Todo lo que se encuentre al interior de esta función se ejecutará una vez el programa sea ejecutado. A partir de ahora todo el código que se muestra aquí, debe ir dentro de la función main().

Creando objeto Scanner

Necesitamos crear un objeto Scanner para poder leer información ingresada por el usuario desde la terminal.

Para crear un objeto Scanner solo debemos llamar a la función NewSanner() y pasarle como único argumento la variable Stdin que se encuentra en el paquete «os». La variable Stdin es un puntero a un archivo que está ubicado en la ruta «/dev/stdin».

Solicitar y leer datos ingresados por el usuario

El programa debe permitir que el usuario sea el que ingrese la información a procesar.

Primero le indicamos al usuario que ingrese la palabra que desea evaluar, luego usamos la función Scan() del objeto Scanner creado hace un momento para leer la palabra o texto que ingrese el usuario en la terminal.

Extraer la palabra o texto ingresado por el usuario

En Go los datos leídos desde la terminal por un objeto Scanner se mantiene almacenada en internamente y hay que extraerlos de alguna forma para poder procesarlos.

Extraemos la información ingresada por el usuario usando la función o método Text(), esto nos devuelve un valor de tipo string; por último creamos la variable «palabra» y le asignamos el valor extraído.

Convertir el string a minúscula

Debido a que más adelante se va a realizar la búsqueda del índice de las vocales, lo más conveniente es pasar todo el string a minúscula para que la búsqueda sea correcta y así obtener el índice exacto de las vocales.

Usamos la función ToLower() ubicada en el paquete string para convertir la información que fue ingresada por el usuario a minúscula y luego es reasignada a la misma variable «palabra».

Buscar y filtrar el índice de cada vocal

Necesitamos obtener y filtrar el índice de la primera ocurrencia de cada vocal, para esto haremos uso de la función filtrar(), creada anteriormente y de la función Index() que se encuentra el el paquete strings.

¿Cómo funciona este fragmento de código?

* La función Index() recibe 2 parametros, el primero es la variable «palabra» y el segundo es la vocal que deseamos buscar. Esta función devuelve el índice de la vocal o -1 si no existe.

* La función filtrar() recibe el valor devuelto por la función Index() y lo procesa tal cual como se explica anteriormente.

* El valor devuelto por la función filtrar() es asignado a las variables «a, e, i, o y u».

Obtener el índice menor

Antes de poder saber cual es la primera vocal, primero debemos obtener el índice menor entre todos los índices obtenidos.

Usamos la función Min() del paquete math para comprar los valores de cada variable y obtener el menor de todos los índices, el valor resultante se asigna a la variable «min» y es de tipo float64.

Convertir índice de tipo float64 a tipo int

Hay que convertir el valor de la variable «min» a tipo int para poder usarlo como índice y saber más adelante cuál es la primera vocal de la palabra ingresada por el usuario.

Para convertir el valor en la variable «min» a tipo int, solo debemos invocar al tipo en forma de función int() y entre paréntesis va la variable «min», el valor devuelto es asignado a la variable «ind».

Obtener la primera vocal

Llegamos al punto en donde vamos a obtener la primera vocal de una palabra ingresada por el usuario.

Extraemos la vocal usando el índice obtenido anteriormente de la siguiente forma palabra[ind], esto nos devuelve un caracter en de tipo Byte; por último debemos convertir dicho carácter a tipo string para poder mostrarlo en pantalla más adelante, esto se hace usando el tipo de dato en forma de función string() y el valor devuelto se asigna a la variable «vocal».

Mostrando el resultado final

Por último el programa lógicamente debe mostrar algún resultado al usuario.

Primero mostramos un mensaje con la primera vocal encontrada por el programa y luego el índice en el cual se encuentra dicha vocal, en este caso hacemos uso de la función Println() para mostrar el resultado final.

Probando el programa

Una prueba nos permitirá saber si el programa si está funcionando como lo deseado.

[fixedtorres@linuxero]$ gccgo BuscarPrimeraVocal.go -o BuscarPrimeraVocal
[fixedtorres@linuxero]$ ./BuscarPrimeraVocal
Ingrese una palabra a evaluar: Prueba de programa en GO!
La primera vocal es: u
Su indice es:  2
[fixedtorres@linuxero]$ 

La prueba nos permite ver que el programa si funciona muy bien, nos indica que la primera vocal es la «u» y que se encuentra en el índice «2».

* El programa fue compilado usando el compilador gccgo, del proyecto GNU.

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *