ejercicios ruby

Páginas: 6 (1491 palabras) Publicado: 22 de julio de 2013
Ejercicios de Programaci´n con Ruby
o
Ingenier´ de Sistemas de Informaci´n
ıa
o
Departamento de Sistemas Telem´ticos y Computaci´n (GSyC)
a
o
13 de septiembre de 2012

Notas:
1. Al lado de cada ejercicio aparecen una o m´s cruces, en funci´n de su dificultad y de la cantidad de tiempo
a
o
estimado que requiere. Cuantas m´s cruces tenga un ejercicio m´s dif´ es o m´s tiempo puederequerir.
a
a
ıcil
a
2. Aparte de las transparencias que estamos usando en clase, utiliza ri y la siguiente documentaci´n de Ruby:
o
Documentaci´n online de Ruby: http://ruby-doc.org/core-1.9.3/
o
API de la biblioteca est´ndar de Ruby: http://ruby-doc.org/
a
Libro Programming Ruby: http://ruby-doc.org/docs/ProgrammingRuby/
3. Utiliza este resumen sobre el uso de expresiones regulares enRuby:

Figura 1: Fuente: Engineering Long-Lasting Software. Armando Fox, David Patterson

1

Ejercicio 1 +
Dada esta definici´n de un m´todo:
o
e
def foo(arg, hash1, hash2)
end
¿Cu´l de las siguientes NO es una llamada legal al m´todo foo?
a
e
1. foo a, {:x=>1, :y=>2}, :z=>3
2. foo(a, :x=>1, :y=>2, :z=>3)
3. foo(a, {:x=>1, :y=>2}, {:z=>3})
4. foo(a, {:x=>1}, {:y=>2, :z=>3})Ejercicio 2 +
Dada la siguiente declaraci´n de la clase SavingsAccount:
o
class SavingsAccount < Account
def initialize(starting_balance=0)
@balance = starting_balance
end
def balance
@balance
end
def balance=(new_amount)
@balance = new_amount
end
def deposit(amount)
@balance += amount
end
@@bank_name = "MyBank.com"
def self.bank_name
@@bank_name
end
end
Indica cu´les de lassiguientes l´
a
ıneas son correctas:
1. SavingsAccount.new.@balance
2. SavingsAccount.new.balance
3. SavingsAccount.new.balance()

2

Ejercicio 3 +
Dada esta asignaci´n:
o
rx = {:primero=>/^rub/,
’primero’=>[/RA(IL)$/, /ra(il)/i]}
¿Cu´l de las siguientes expresiones se evaluar´ correctamente, devolviendo algo que no sea nil?
a
a
1. "rubyonrails" =~ rx{:primero}
2. rx[:primero][1] =~"RUBYONRAILS"
3. rx[’primero’][1] =~ "RUBYONRAIL"
4. "rubyonrails" =~ rx[’primero’, 1]
5. "rubyonrails" =~ rx[’primero’][0]

Ejercicio 4 +
Dada esta extensi´n de la clase String:
o
class String
def curvy?
!("AEFHIKLMNTVWXYZ".include?(self.upcase))
end
end
¿Cu´l de las siguientes l´
a
ıneas es correcta?:
1. String.curvy?("foo")
2. "foo".curvy?
3. self.curvy?("foo")
4.curvy?("foo")

3

Ejercicio 5 +
Se ha extendido la clase Numeric de la siguiente forma:
class Numeric
def euros
self * 1.292
end
end
Ahora se desea poder ejecutar esta l´
ınea:
5.euros.in(:rupias)
¿Cu´l de los siguientes mecanismos ser´ m´s apropiado?
a
ıa a
1. Cambiar Numeric.method_missing para que detecte llamadas al m´todo in
e
2. Cambiar Numeric#method_missing para que detectellamadas al m´todo in
e
3. Definir un m´todo Numeric#in
e
4. Definir un m´todo Numeric.in
e

Ejercicio 6 +
¿Cu´l de los siguientes string NO aparecer´ como resultado de ejecutar este c´digo?:
a
a
o
[’banana’, ’anana’, ’naan’].map do |food|
food.reverse
end.select { |f| f.match /^a/ }
1. "naan"
2. "ananab"
3. "anana"
4. El c´digo no funcionar´ debido a errores de sintaxis
o
aEjercicio 7 +
¿Cu´les de las siguientes expresiones de Ruby son equivalentes entre s´
a
ı?:
A) :foo
B) %q{foo}
C) %Q{foo}
D) ’foo’.to_sym
E) :foo.to_s

4

Ejercicio 8 +
¿Qu´ se captura en $1 buscando en el string ”25 to 1” las siguientes expresiones regulares?:
e
/(\d+)$/
/^d+([^0-9]+)/

Ejercicio 9 +
¿Cu´ndo es correcto utilizar la siguiente l´
a
ınea en Ruby?:
Fixnum num=3Ejercicio 10 +
¿Por qu´ al ejecutar 5.superclass se eleva una excepci´n “undefined method”?.
e
o

Ejercicio 11 +
Escribe utilizando send las siguientes expresiones:
1. a1, :b => 2

Ejercicio 13 +
¿Por qu´ esta expresi´n es incorrecta en Ruby?:
e
o
movie.@year=1998

5

Ejercicio 14 ++
Time.now devuelve el n´mero de segundos que han pasado desde las 00:00 GMT del 1/1/1970, que es la...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • ruby
  • Ruby
  • Ruby
  • ruby
  • ruby
  • RUBY
  • Ruby
  • Ruby

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS