Tag Archive for llama

Salida y entrada de datos en consola con Ruby

El kernel de Ruby carga consigo una buena cantidad de métodos entrada salida, conocidos también como métodos I/O (por Input/Output), entre ellos tenemos gets, put, print, printf, putc y algunos otros que están más relacionados con el manejo de archivos, tópico que veremos más adelante en el curso.

En este artículo veremos algunos de ellos, cabe mencionar que éstos métodos, como su nombre lo indica, sirven para recibir o imprimir datos a través de la consola para interactuar con el usuario.

El más sencillo tiene que ser print, de hecho print es una impresión sencilla, si ejecutas el siguiente programa en tu consola, deberás ver el mensaje en ella:

print "Hola mundo"

Si ejecutaras dos veces la anterior instrucción, notarías que el texto sale pegado, a menos que dentro de las mismas cadenas coloque espacios. En realidad la mayoría de las veces requerimos de que cada impresión de pantalla salga en una línea diferente de la consola, y eso es precisamente lo que hace puts.

puts "Hola"
puts "mundo"

Ahora bien, si ejecutas el programa anterior, verás cada impresión en una línea de la consola diferente.

Para terminar con las impresiones de pantalla, veamos algo con lo que los programadores en C, se sentirán más cómodos, se llama printf y funciona así:

name = "Uriel"
edad = 18
printf "Me llamo %-10s y tengo %3d", name, edad

El ejemplo anterior imprimirá mi nombre con máximo 10 caracteres y mi edad en máximo 3 dígitos, %d es para enteros, %s para cadenas y %f para flotantes.

Ahora bien veamos como aceptar datos del usuario desde la consola:

nombre = gets

Creo que no podría ser más sencillo, el método gets es el que nos permite recibir información del usuario, gets, siempre recibe una cadena y termina de recopilar la información cuando existe un salto de línea. El problema con gets es que devuelve una cadena que si ingreso mi nombre se vería así “Uriel \n” lo cual no es del todo bueno, pero tiene solución y es a través del método chomp.

nombre = gets.chomp

Después de chomp, mi nombre regresaría algo así “Uriel”.

Por último, me parece un excelente momento para que probemos un programa más concreto, creemos uno que nos salude:

print "Dime tu nombre: "
nombre = gets.chomp
puts "Hola #{nombre}, un gusto conocerte"

Del código anterior, lo único que no hemos visto es el operador #{} y me parece un excelente momento para explicarlo, leyendo el código podrás notar que es el operador de concatenación en Ruby, así pues, cuando necesites combinar el valor de una variable con una cadena, deberás colocar la variable dentro de las llaves del operador anterior.

Bien, con eso quedamos con los métodos de entrada salida y pasaremos en el siguiente artículo a estudiar los arreglos en Ruby.

Algoritmo de ordenamiento:Quicksort

Bueno pues este algoritmo al principio resulta un poco complicado de entender pero en realidad no es tan complicado.
Para comprenderlo mas facilmente mira el siguiente video:

Para comprender bien como funciona el quicksort hay tener claros estos conceptos:

Pivote: Es un numero del arreglo que tomaremos como referencia para reorganizar el arreglo de numeros y ordenarlo. En pocas palabras tomamos todos los numeros mayores que el que hayamos elegido como pivote y los colocamos a la derecha del mismo, y todos los que sean menores que este los colocamos del lado izquierdo.

Punteros izquierdo y derecho: El quicksort utiliza 2 punteros como referencia, uno izquierdo y uno derecho, normalmente cuando se ordena de menor a mayor el izquierdo simboliza el lado de números menores y el derecho los números mayores. A medida que analizamos el arreglo, los punteros se acercan el uno a otro y cuando se encuentran en una ubicación se coloca en esta el pivote y se separa el arreglo en 2 arreglos mas pequeños. Posteriormente se vuelve a aplicar el algoritmo a los arreglos mas pequeños hasta que se logre ordenar la secuencia tal y como se ha visto en el vídeo anterior.

Descarga:

Ordenador.java

Instrucciones:
La clase Ordenador posee un método que se llama quicksort, lo que hace es organizar un arregla unidimensional de menor a mayor utilizando
el algoritmo de quicksort. Para ponerlo a prueba puedes utilizar este codigo en tu metodo Main, mandando a llamar el metodo quicksort de la clase y organizando un arreglo cualquiera.

 

int array[] ={3,7,3,4,12,6,3,7,4};

Ordenador a = new Ordenador();

a.quicksort(array);

El programa esta diseñado para manejar datos de tipo int, por lo que solo acepta arreglos de numeros tipo entero.

Espero que te sirva, no olvides dejar tus comentarios.