29 ene. 2019

Ejemplos útiles

https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Ruby/Ejemplos_del_lenguaje

Programación en Ruby/Ejemplos del lenguaje

Ir a la navegaciónIr a la búsqueda
Ejemplo 1
puts "Hello World"
print 'Enter your name: '
name= gets
puts "Hello #{name}"
5.times { puts "Hola"  }

Ejemplo 2
class Mamifero 
 def respira
   puts "inhala y exhala"
 end
end
class Gato<Mamifero
 def habla
   puts "Meow"
 end
end
misifus = Gato.new
misifus.respira
misifus.habla
class Ave
 def acicala
   puts "Estoy limpiando mis plumas."
 end
 def vuela
   puts "Estoy volando."
 end
end
class Pinguino<Ave
 def vuela
   puts "Lo siento, prefiero nadar."
 end
end
class Aguila<Ave
end
puts "Pinguino"
p = Pinguino.new
p.acicala
p.vuela
puts "Aguila"
a = Aguila.new
a.acicala
a.vuela

begin
 File.open('p014estructuras.rb', 'r') do |f1|
   while linea = f1.gets
     puts linea
   end
 end
 # Crer un archivo y escribir en el
 File.open('prueba.txt', 'w') do |f2|
   f2.puts "Creado desde un programa Ruby!"
 end
rescue Exception => msg
 # mostar el mensaje de error generado por el sistema
 puts msg
end

p014estructuras.rb
var = 5
if var > 4
 puts "La variable es mayor que 4"
 puts "Puedo tener muchas declaraciones aqui"
 if var == 5
   puts "Es posible tener if y else anidados"
 else
   puts "Too cool"
 end
else
 puts "La variable no es mayor que 4"
 puts "Puedo tener muchas declaraciones aqui"
end
# Loops
var = 0
while var < 10
 puts var.to_s
 var += 1
end

25 dic. 2018

Yield, métodos y bloques

#este es el método
require 'colored' #esta gema dará color a las palabras
def imprimir_nombre

puts "Te pregunto dentro del método imprimir_nombre
"
puts "Introduce tu nombre "

nombre = gets.chomp

yield nombre.red

puts "y respondo encantado de conocerte #{nombre.red} (dentro del método)"

puts "porque en realidad nombre en el método es = #{nombre.red} que es de la clase #{nombre.class}"

end



imprimir_nombre do |nombre|   #este es el bloque y hace uso de yield

puts "Pero ahora saltas dentro de un bloque"

puts "Introdujiste en el método el nombre = #{nombre.red}"

puts "Pon ahora otro nombre "
nombre = gets.chomp
puts "pero ahora cambio el nombre a = #{nombre.blue} dentro de un bloque"
puts "¡¡ ATENCIÓN !! AHORA ME LLAMO #{nombre.blue} ¡¡ ATENCIÓN !!"
puts "pero nombre es = #{nombre.blue} que es de la clase #{nombre.class}"
puts "y es distinto del que metiste"

end



100.times {print "-"}

puts

puts "Pero la variable nombre no existe fuera del método ni del bloque"

puts "Como demostrará el error que arrojará si pedimos puts nombre.class"

100.times {print "-"}

puts

6 nov. 2018

Programa - Nuevo pograma

# Este programa es un analizador de lo que se mete por teclado
# Arroja dos ficheros sentidos.txt y decisiones.txt
# En realidad es un interface entre la entrada y el paso analizador
=begin
Esta parte del programa es lo que capta por el teclado
Sería el sentido teclado
=end

puts 'Hola, ¿Cómo te llamas?'
STDOUT.flush
@p=gets.strip.to_s

$otro_origen = nil
#puts "esto es $otro_origen=#{$otro_origen}"
@ma=[]
@captado = []
@evaluados = []
@sentidos  = "sentidos.txt"
@evaluado = "evaluado.txt"
@nueva = []
@ahora = Time.now
@hora = @ahora.strftime("%H")
@minuto = @ahora.strftime("%M")
@segundo = @ahora.strftime("%S")
@dia = @ahora.strftime("%d")
@mes = @ahora.strftime("%m")
@year = @ahora.strftime("%Y")

def xf
if File.exist?(@sentidos)
puts
#puts "El fichero necesario #{@sentidos} existe"
else
puts "No existia el archivo y ha sido creado sin contenido"
f=File.new @sentidos,"a+"
#puts "El fichero necesario #{@sentidos} ya existe"
f.close
end

if File.exist?(@evaluado)
#puts "El fichero necesario #{@decisiones} existe"
else
puts "No existia el archivo y ha sido creado sin contenido"
f=File.new @evaluado,"a+"
puts "El fichero necesario #{@evaluado} ya existe"
f.close
end
end
xf

=begin
Esta parte del programa busca lo que capta por el teclado
en un fichero sentidos.txt
y si lo tiene nos informa y continúa
si no lo tiene procederá a guardarlo en el siguiente paso
=end
def primero
fab=File.open("sentidos.txt", "a+")
@l=0
fab.each do |a|
#puts "Esto es a = #{a} de la clase #{a.class} con longitud de #{a.size}"
@ma=a.split(" ")
#puts "Esto es @ma = #{@ma} de la clase #{@ma.class} con longitud de #{@ma.size}"
#puts "Esto es @ma[0] = "+@ma[0]+" de la clase #{@ma[0].class} con longitud de #{@ma[0].size}"
s=@ma[0].to_s
#puts "Esto es s = #{s} con longitud de #{s.size}"
#limpiamos el array @ma porque tiene comillas, coma y [
menos = s.size-2
@quiero = s[2...menos] #ahora sólo se queda con lo que interesa
#puts "esto es @quiero = #{@quiero} y ésto es @p = #{@p} de la clase #{@quiero.class}"
#puts "@l = #{@l}"
if @p === @quiero
#puts "HAY COINCIDENCIA y no grabaré el nombre"
@l=1
end
end
fab.close
#puts "                         @l = #{@l}"


case @l
when 0
puts "Esto es bueno o malo (escribe bueno o malo)"
STDOUT.flush
@primeraimpresion = gets.chomp.upcase.to_s
puts "has esxrito #{@primeraimpresion}"
if @primeraimpresion != "BUENO" || @primeraimpresion != "MALO"
puts 'lo tomaré como bueno'
@primeraimpresion = "BUENO"
end
@evaluados<<@primeraimpresion
@evaluados<<@p
@evaluados<<@hora
@evaluados<<@minuto
@evaluados<<@dia
@evaluados<<@mes
@evaluados<<@year



@captado<<@p
@captado<<@hora
@captado<<@minuto
@captado<<@segundo
@captado<<@dia
@captado<<@mes
@captado<<@year

puts 'Como no ha habido ninguna coincidencias lo grabo en sentidos.txt'
faa=File.open("sentidos.txt", "a+")
faa.print @captado
faa.puts
faa.close

puts 'Como no ha habido ninguna coincidencias lo grabo en sentidos.txt'
faaa =File.open("evaluado.txt", "a+")
faaa.print @evaluados
faaa.puts
faaa.close
when 1
puts "HAY alguna COINCIDENCIA y no grabaré nada en sentidos.txt"
@ll=1
end
end

puts "Hola #{@p}, son las #{@ahora.strftime("%H:%M:%S")} de la fecha #{@ahora.strftime("%d-%m-%Y")}"

primero