Top Banner
Ruby on Rails (Introducci´ on a Ruby) Esteban Manchado Vel´ azquez [email protected] 20 de mayo de 2006
126

Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez [email protected] 20 de mayo de 2006

Feb 27, 2019

Download

Documents

phungcong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby on Rails (Introduccion a Ruby)

Esteban Manchado [email protected]

20 de mayo de 2006

Page 2: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Indice

1 IntroduccionPresentacionEjemplos de RailsSobre el lenguaje

2 El lenguajeVariables¿Pato que?Orientacion a objetosEstructuras de control

3 EjerciciosEjercicio 1Ejercicio 2Ejercicio 3

Page 3: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Indice

1 IntroduccionPresentacionEjemplos de RailsSobre el lenguaje

2 El lenguajeVariables¿Pato que?Orientacion a objetosEstructuras de control

3 EjerciciosEjercicio 1Ejercicio 2Ejercicio 3

Page 4: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

De que va todo esto

• Ruby on Rails: plataforma de desarrollo web muy productiva

• Ruby: Lenguaje interpretado orientado a objetos

• Ruby on Rails esta escrito en Ruby, claro

• Durante los dos primeros dıas, un poquito de Ruby

• Suficiente para que no se pierdan, solo lo mas basico

• A la larga, recomendable aprovechar la potencia del lenguaje

Page 5: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

De que va todo esto

• Ruby on Rails: plataforma de desarrollo web muy productiva

• Ruby: Lenguaje interpretado orientado a objetos

• Ruby on Rails esta escrito en Ruby, claro

• Durante los dos primeros dıas, un poquito de Ruby

• Suficiente para que no se pierdan, solo lo mas basico

• A la larga, recomendable aprovechar la potencia del lenguaje

Page 6: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

De que va todo esto

• Ruby on Rails: plataforma de desarrollo web muy productiva

• Ruby: Lenguaje interpretado orientado a objetos

• Ruby on Rails esta escrito en Ruby, claro

• Durante los dos primeros dıas, un poquito de Ruby

• Suficiente para que no se pierdan, solo lo mas basico

• A la larga, recomendable aprovechar la potencia del lenguaje

Page 7: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

De que va todo esto

• Ruby on Rails: plataforma de desarrollo web muy productiva

• Ruby: Lenguaje interpretado orientado a objetos

• Ruby on Rails esta escrito en Ruby, claro

• Durante los dos primeros dıas, un poquito de Ruby

• Suficiente para que no se pierdan, solo lo mas basico

• A la larga, recomendable aprovechar la potencia del lenguaje

Page 8: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

De que va todo esto

• Ruby on Rails: plataforma de desarrollo web muy productiva

• Ruby: Lenguaje interpretado orientado a objetos

• Ruby on Rails esta escrito en Ruby, claro

• Durante los dos primeros dıas, un poquito de Ruby

• Suficiente para que no se pierdan, solo lo mas basico

• A la larga, recomendable aprovechar la potencia del lenguaje

Page 9: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

De que va todo esto

• Ruby on Rails: plataforma de desarrollo web muy productiva

• Ruby: Lenguaje interpretado orientado a objetos

• Ruby on Rails esta escrito en Ruby, claro

• Durante los dos primeros dıas, un poquito de Ruby

• Suficiente para que no se pierdan, solo lo mas basico

• A la larga, recomendable aprovechar la potencia del lenguaje

Page 10: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Indice

1 IntroduccionPresentacionEjemplos de RailsSobre el lenguaje

2 El lenguajeVariables¿Pato que?Orientacion a objetosEstructuras de control

3 EjerciciosEjercicio 1Ejercicio 2Ejercicio 3

Page 11: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ajax y Javascript integrados en Rails

• Autocompletar:http://demo.script.aculo.us/ajax/autocompleter

• Autocompletar personalizado:http://demo.script.aculo.us/ajax/autocompleter customized

• Listas ordenables:http://demo.script.aculo.us/ajax/sortable elements

• Mini tienda:http://demo.script.aculo.us/shop

Page 12: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Demo de Backpack

• Backpack: aplicacion real escrita en Railspages.mov

Page 13: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Indice

1 IntroduccionPresentacionEjemplos de RailsSobre el lenguaje

2 El lenguajeVariables¿Pato que?Orientacion a objetosEstructuras de control

3 EjerciciosEjercicio 1Ejercicio 2Ejercicio 3

Page 14: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Nacimiento de Ruby

• Disenado por Yukihiro Matsumoto (matz)

• ((Ruby)) viene de Perl → Pearl

• I wanted a scripting language that was more powerfulthan Perl, and more object-oriented than Python

• They are focusing on machines. But in fact we need tofocus on humans, on how humans care about doingprogramming or operating the application of themachines. We are the masters. They are the slaves

• Don’t underestimate the human factor. Even though weare in front of computers, they are media. We areworking for human, with human

• You want to enjoy life, don’t you? If you get your jobdone quickly and your job is fun, that’s good, isn’t it?That’s the purpose of life, partly. Your life is better

Page 15: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Caracterısticas generales

• ((Perl orientado a objetos)), ((Smalltalk con sintaxisfamiliar))

• Completamente orientado a objetos (¡hasta nil!)

• Tipado dinamico (Duck typing)

• Sintaxis limpia, modo poetico, ((sufijos)) de sentencias

• Sangrado libre, marcas de fin de estructura

• Uso de mayusculas y minusculas (constantes, variables)

• Se usan mucho los bloques (funciones anonimas)

• Documentacion empotrada

• Inmaduro (cambios, pocos modulos de desarrolloactivo)

• Comunidad abierta (muchos ((refugiados)))

Page 16: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Caracterısticas generales

• ((Perl orientado a objetos)), ((Smalltalk con sintaxisfamiliar))

• Completamente orientado a objetos (¡hasta nil!)

• Tipado dinamico (Duck typing)

• Sintaxis limpia, modo poetico, ((sufijos)) de sentencias

• Sangrado libre, marcas de fin de estructura

• Uso de mayusculas y minusculas (constantes, variables)

• Se usan mucho los bloques (funciones anonimas)

• Documentacion empotrada

• Inmaduro (cambios, pocos modulos de desarrolloactivo)

• Comunidad abierta (muchos ((refugiados)))

Page 17: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Caracterısticas generales

• ((Perl orientado a objetos)), ((Smalltalk con sintaxisfamiliar))

• Completamente orientado a objetos (¡hasta nil!)

• Tipado dinamico (Duck typing)

• Sintaxis limpia, modo poetico, ((sufijos)) de sentencias

• Sangrado libre, marcas de fin de estructura

• Uso de mayusculas y minusculas (constantes, variables)

• Se usan mucho los bloques (funciones anonimas)

• Documentacion empotrada

• Inmaduro (cambios, pocos modulos de desarrolloactivo)

• Comunidad abierta (muchos ((refugiados)))

Page 18: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Caracterısticas generales

• ((Perl orientado a objetos)), ((Smalltalk con sintaxisfamiliar))

• Completamente orientado a objetos (¡hasta nil!)

• Tipado dinamico (Duck typing)

• Sintaxis limpia, modo poetico, ((sufijos)) de sentencias

• Sangrado libre, marcas de fin de estructura

• Uso de mayusculas y minusculas (constantes, variables)

• Se usan mucho los bloques (funciones anonimas)

• Documentacion empotrada

• Inmaduro (cambios, pocos modulos de desarrolloactivo)

• Comunidad abierta (muchos ((refugiados)))

Page 19: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Caracterısticas generales

• ((Perl orientado a objetos)), ((Smalltalk con sintaxisfamiliar))

• Completamente orientado a objetos (¡hasta nil!)

• Tipado dinamico (Duck typing)

• Sintaxis limpia, modo poetico, ((sufijos)) de sentencias

• Sangrado libre, marcas de fin de estructura

• Uso de mayusculas y minusculas (constantes, variables)

• Se usan mucho los bloques (funciones anonimas)

• Documentacion empotrada

• Inmaduro (cambios, pocos modulos de desarrolloactivo)

• Comunidad abierta (muchos ((refugiados)))

Page 20: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Caracterısticas generales

• ((Perl orientado a objetos)), ((Smalltalk con sintaxisfamiliar))

• Completamente orientado a objetos (¡hasta nil!)

• Tipado dinamico (Duck typing)

• Sintaxis limpia, modo poetico, ((sufijos)) de sentencias

• Sangrado libre, marcas de fin de estructura

• Uso de mayusculas y minusculas (constantes, variables)

• Se usan mucho los bloques (funciones anonimas)

• Documentacion empotrada

• Inmaduro (cambios, pocos modulos de desarrolloactivo)

• Comunidad abierta (muchos ((refugiados)))

Page 21: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Caracterısticas generales

• ((Perl orientado a objetos)), ((Smalltalk con sintaxisfamiliar))

• Completamente orientado a objetos (¡hasta nil!)

• Tipado dinamico (Duck typing)

• Sintaxis limpia, modo poetico, ((sufijos)) de sentencias

• Sangrado libre, marcas de fin de estructura

• Uso de mayusculas y minusculas (constantes, variables)

• Se usan mucho los bloques (funciones anonimas)

• Documentacion empotrada

• Inmaduro (cambios, pocos modulos de desarrolloactivo)

• Comunidad abierta (muchos ((refugiados)))

Page 22: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Caracterısticas generales

• ((Perl orientado a objetos)), ((Smalltalk con sintaxisfamiliar))

• Completamente orientado a objetos (¡hasta nil!)

• Tipado dinamico (Duck typing)

• Sintaxis limpia, modo poetico, ((sufijos)) de sentencias

• Sangrado libre, marcas de fin de estructura

• Uso de mayusculas y minusculas (constantes, variables)

• Se usan mucho los bloques (funciones anonimas)

• Documentacion empotrada

• Inmaduro (cambios, pocos modulos de desarrolloactivo)

• Comunidad abierta (muchos ((refugiados)))

Page 23: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Caracterısticas generales

• ((Perl orientado a objetos)), ((Smalltalk con sintaxisfamiliar))

• Completamente orientado a objetos (¡hasta nil!)

• Tipado dinamico (Duck typing)

• Sintaxis limpia, modo poetico, ((sufijos)) de sentencias

• Sangrado libre, marcas de fin de estructura

• Uso de mayusculas y minusculas (constantes, variables)

• Se usan mucho los bloques (funciones anonimas)

• Documentacion empotrada

• Inmaduro (cambios, pocos modulos de desarrolloactivo)

• Comunidad abierta (muchos ((refugiados)))

Page 24: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Caracterısticas generales

• ((Perl orientado a objetos)), ((Smalltalk con sintaxisfamiliar))

• Completamente orientado a objetos (¡hasta nil!)

• Tipado dinamico (Duck typing)

• Sintaxis limpia, modo poetico, ((sufijos)) de sentencias

• Sangrado libre, marcas de fin de estructura

• Uso de mayusculas y minusculas (constantes, variables)

• Se usan mucho los bloques (funciones anonimas)

• Documentacion empotrada

• Inmaduro (cambios, pocos modulos de desarrolloactivo)

• Comunidad abierta (muchos ((refugiados)))

Page 25: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Para aprender...

• Entre Perl y Python en cuanto a integracion

• Consola interactiva: irb

• Documentacion empotrada de referencia: rdoc

• Consulta de documentacion, ayuda interactiva: ri e ihelp

• Consulta de documentacion en web:http://www.ruby-doc.org/find/pickaxe/string

• En el caso de Rails y otros, de moda los vıdeos

Page 26: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Para aprender...

• Entre Perl y Python en cuanto a integracion

• Consola interactiva: irb

• Documentacion empotrada de referencia: rdoc

• Consulta de documentacion, ayuda interactiva: ri e ihelp

• Consulta de documentacion en web:http://www.ruby-doc.org/find/pickaxe/string

• En el caso de Rails y otros, de moda los vıdeos

Page 27: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Para aprender...

• Entre Perl y Python en cuanto a integracion

• Consola interactiva: irb

• Documentacion empotrada de referencia: rdoc

• Consulta de documentacion, ayuda interactiva: ri e ihelp

• Consulta de documentacion en web:http://www.ruby-doc.org/find/pickaxe/string

• En el caso de Rails y otros, de moda los vıdeos

Page 28: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Para aprender...

• Entre Perl y Python en cuanto a integracion

• Consola interactiva: irb

• Documentacion empotrada de referencia: rdoc

• Consulta de documentacion, ayuda interactiva: ri e ihelp

• Consulta de documentacion en web:http://www.ruby-doc.org/find/pickaxe/string

• En el caso de Rails y otros, de moda los vıdeos

Page 29: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Para aprender...

• Entre Perl y Python en cuanto a integracion

• Consola interactiva: irb

• Documentacion empotrada de referencia: rdoc

• Consulta de documentacion, ayuda interactiva: ri e ihelp

• Consulta de documentacion en web:http://www.ruby-doc.org/find/pickaxe/string

• En el caso de Rails y otros, de moda los vıdeos

Page 30: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Para aprender...

• Entre Perl y Python en cuanto a integracion

• Consola interactiva: irb

• Documentacion empotrada de referencia: rdoc

• Consulta de documentacion, ayuda interactiva: ri e ihelp

• Consulta de documentacion en web:http://www.ruby-doc.org/find/pickaxe/string

• En el caso de Rails y otros, de moda los vıdeos

Page 31: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Indice

1 IntroduccionPresentacionEjemplos de RailsSobre el lenguaje

2 El lenguajeVariables¿Pato que?Orientacion a objetosEstructuras de control

3 EjerciciosEjercicio 1Ejercicio 2Ejercicio 3

Page 32: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Tipado en Ruby

• Dinamico pero fuerte

• Las variables no tienen tipo

• Son como referencias/punteros en otros lenguajes

• Los objetos a los que apuntan sı tienen tipo

• Las variables no se declaran, ((aparecen)) al asignarles un valor

• No hay conversiones automaticas entre distintos tipos

Page 33: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Tipado en Ruby

• Dinamico pero fuerte

• Las variables no tienen tipo

• Son como referencias/punteros en otros lenguajes

• Los objetos a los que apuntan sı tienen tipo

• Las variables no se declaran, ((aparecen)) al asignarles un valor

• No hay conversiones automaticas entre distintos tipos

Page 34: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Tipado en Ruby

• Dinamico pero fuerte

• Las variables no tienen tipo

• Son como referencias/punteros en otros lenguajes

• Los objetos a los que apuntan sı tienen tipo

• Las variables no se declaran, ((aparecen)) al asignarles un valor

• No hay conversiones automaticas entre distintos tipos

Page 35: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Tipado en Ruby

• Dinamico pero fuerte

• Las variables no tienen tipo

• Son como referencias/punteros en otros lenguajes

• Los objetos a los que apuntan sı tienen tipo

• Las variables no se declaran, ((aparecen)) al asignarles un valor

• No hay conversiones automaticas entre distintos tipos

Page 36: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Tipado en Ruby

• Dinamico pero fuerte

• Las variables no tienen tipo

• Son como referencias/punteros en otros lenguajes

• Los objetos a los que apuntan sı tienen tipo

• Las variables no se declaran, ((aparecen)) al asignarles un valor

• No hay conversiones automaticas entre distintos tipos

Page 37: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Tipado en Ruby

• Dinamico pero fuerte

• Las variables no tienen tipo

• Son como referencias/punteros en otros lenguajes

• Los objetos a los que apuntan sı tienen tipo

• Las variables no se declaran, ((aparecen)) al asignarles un valor

• No hay conversiones automaticas entre distintos tipos

Page 38: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (I)

irb(main):001:0> lista = [3,2,1]=> [3, 2, 1]irb(main):002:0> lista2 = lista=> [3, 2, 1]irb(main):003:0> lista.sort!=> [1, 2, 3]irb(main):004:0> lista=> [1, 2, 3]irb(main):005:0> lista2=> [1, 2, 3]

Page 39: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (I)

irb(main):001:0> lista = [3,2,1]=> [3, 2, 1]irb(main):002:0> lista2 = lista=> [3, 2, 1]irb(main):003:0> lista.sort!=> [1, 2, 3]irb(main):004:0> lista=> [1, 2, 3]irb(main):005:0> lista2=> [1, 2, 3]

Page 40: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (I)

irb(main):001:0> lista = [3,2,1]=> [3, 2, 1]irb(main):002:0> lista2 = lista=> [3, 2, 1]irb(main):003:0> lista.sort!=> [1, 2, 3]irb(main):004:0> lista=> [1, 2, 3]irb(main):005:0> lista2=> [1, 2, 3]

Page 41: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (I)

irb(main):001:0> lista = [3,2,1]=> [3, 2, 1]irb(main):002:0> lista2 = lista=> [3, 2, 1]irb(main):003:0> lista.sort!=> [1, 2, 3]irb(main):004:0> lista=> [1, 2, 3]irb(main):005:0> lista2=> [1, 2, 3]

Page 42: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (I)

irb(main):001:0> lista = [3,2,1]=> [3, 2, 1]irb(main):002:0> lista2 = lista=> [3, 2, 1]irb(main):003:0> lista.sort!=> [1, 2, 3]irb(main):004:0> lista=> [1, 2, 3]irb(main):005:0> lista2=> [1, 2, 3]

Page 43: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (I)

irb(main):001:0> lista = [3,2,1]=> [3, 2, 1]irb(main):002:0> lista2 = lista=> [3, 2, 1]irb(main):003:0> lista.sort!=> [1, 2, 3]irb(main):004:0> lista=> [1, 2, 3]irb(main):005:0> lista2=> [1, 2, 3]

• ¿Sorpresa?

• Normalmente no es un problema (estilo funcional POWA!)

Page 44: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (II)

irb(main):001:0> msj = "Hola, mundo"=> "Hola, mundo"irb(main):002:0> msj[3..4]=> "a,"irb(main):003:0> msj[3..-1]=> "a, mundo"irb(main):004:0> may = msj.upcase=> "HOLA, MUNDO"irb(main):005:0> may=> "HOLA, MUNDO"irb(main):006:0> msj=> "Hola, mundo"

Page 45: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (II)

irb(main):001:0> msj = "Hola, mundo"=> "Hola, mundo"irb(main):002:0> msj[3..4]=> "a,"irb(main):003:0> msj[3..-1]=> "a, mundo"irb(main):004:0> may = msj.upcase=> "HOLA, MUNDO"irb(main):005:0> may=> "HOLA, MUNDO"irb(main):006:0> msj=> "Hola, mundo"

Page 46: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (II)

irb(main):001:0> msj = "Hola, mundo"=> "Hola, mundo"irb(main):002:0> msj[3..4]=> "a,"irb(main):003:0> msj[3..-1]=> "a, mundo"irb(main):004:0> may = msj.upcase=> "HOLA, MUNDO"irb(main):005:0> may=> "HOLA, MUNDO"irb(main):006:0> msj=> "Hola, mundo"

Page 47: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (II)

irb(main):001:0> msj = "Hola, mundo"=> "Hola, mundo"irb(main):002:0> msj[3..4]=> "a,"irb(main):003:0> msj[3..-1]=> "a, mundo"irb(main):004:0> may = msj.upcase=> "HOLA, MUNDO"irb(main):005:0> may=> "HOLA, MUNDO"irb(main):006:0> msj=> "Hola, mundo"

Page 48: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (II)

irb(main):001:0> msj = "Hola, mundo"=> "Hola, mundo"irb(main):002:0> msj[3..4]=> "a,"irb(main):003:0> msj[3..-1]=> "a, mundo"irb(main):004:0> may = msj.upcase=> "HOLA, MUNDO"irb(main):005:0> may=> "HOLA, MUNDO"irb(main):006:0> msj=> "Hola, mundo"

Page 49: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (II)

irb(main):001:0> msj = "Hola, mundo"=> "Hola, mundo"irb(main):002:0> msj[3..4]=> "a,"irb(main):003:0> msj[3..-1]=> "a, mundo"irb(main):004:0> may = msj.upcase=> "HOLA, MUNDO"irb(main):005:0> may=> "HOLA, MUNDO"irb(main):006:0> msj=> "Hola, mundo"

Page 50: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Indice

1 IntroduccionPresentacionEjemplos de RailsSobre el lenguaje

2 El lenguajeVariables¿Pato que?Orientacion a objetosEstructuras de control

3 EjerciciosEjercicio 1Ejercicio 2Ejercicio 3

Page 51: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Duck Typing

• Expresion acunada por Dave Thomas

• ((Si camina como un pato, nada como un pato, tiene pico depato, ...))

• Se juzga a los objetos por sus metodos, no por tipos

• Da polimorfismo ((gratis)) y facilita escribir codigo generico

Page 52: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Duck Typing

• Expresion acunada por Dave Thomas

• ((Si camina como un pato, nada como un pato, tiene pico depato, ...))

• Se juzga a los objetos por sus metodos, no por tipos

• Da polimorfismo ((gratis)) y facilita escribir codigo generico

Page 53: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Duck Typing

• Expresion acunada por Dave Thomas

• ((Si camina como un pato, nada como un pato, tiene pico depato, ...))

• Se juzga a los objetos por sus metodos, no por tipos

• Da polimorfismo ((gratis)) y facilita escribir codigo generico

Page 54: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Duck Typing

• Expresion acunada por Dave Thomas

• ((Si camina como un pato, nada como un pato, tiene pico depato, ...))

• Se juzga a los objetos por sus metodos, no por tipos

• Da polimorfismo ((gratis)) y facilita escribir codigo generico

Page 55: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (cuac)

# Duck Typing r0x!def metodo patoso(uno, dos)uno.next + dos

end

irb(main):001:0> metodo patoso(1, 2)=> 4irb(main):002:0> metodo patoso("algo", "otro algo")=> "algpotro algo"

Page 56: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (cuac)

# Duck Typing r0x!def metodo patoso(uno, dos)uno.next + dos

end

irb(main):001:0> metodo patoso(1, 2)=> 4irb(main):002:0> metodo patoso("algo", "otro algo")=> "algpotro algo"

Page 57: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (cuac)

# Duck Typing r0x!def metodo patoso(uno, dos)uno.next + dos

end

irb(main):001:0> metodo patoso(1, 2)=> 4irb(main):002:0> metodo patoso("algo", "otro algo")=> "algpotro algo"

Page 58: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (cuac)

# Duck Typing r0x!def metodo patoso(uno, dos)uno.next + dos

end

irb(main):001:0> metodo patoso(1, 2)=> 4irb(main):002:0> metodo patoso("algo", "otro algo")=> "algpotro algo"

Page 59: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (cuac)

# Duck Typing r0x!def metodo patoso(uno, dos)uno.next + dos => 1.next + 2 => 2 + 2

end

irb(main):001:0> metodo patoso(1, 2)=> 4irb(main):002:0> metodo patoso("algo", "otro algo")=> "algpotro algo"

Page 60: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ruby basico (cuac)

# Duck Typing r0x!def metodo patoso(uno, dos)uno.next + dos => "algo".next + "otro algo" =>

end "algp" + "otro algo"

irb(main):001:0> metodo patoso(1, 2)=> 4irb(main):002:0> metodo patoso("algo", "otro algo")=> "algpotro algo"

Page 61: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Indice

1 IntroduccionPresentacionEjemplos de RailsSobre el lenguaje

2 El lenguajeVariables¿Pato que?Orientacion a objetosEstructuras de control

3 EjerciciosEjercicio 1Ejercicio 2Ejercicio 3

Page 62: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Micro-intro a la OO

• Clases de objetos

• Los objetos responden a metodos

• Los objetos tienen atributos

• Las clases heredan de otras

• Al menos teoricamente, la OO nos hace natural pensar enterminos que facilitan reducir el acoplamiento entre conceptosdiferentes

• No les culpare si no se lo tragan

Page 63: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Micro-intro a la OO

• Clases de objetos

• Los objetos responden a metodos

• Los objetos tienen atributos

• Las clases heredan de otras

• Al menos teoricamente, la OO nos hace natural pensar enterminos que facilitan reducir el acoplamiento entre conceptosdiferentes

• No les culpare si no se lo tragan

Page 64: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Micro-intro a la OO

• Clases de objetos

• Los objetos responden a metodos

• Los objetos tienen atributos

• Las clases heredan de otras

• Al menos teoricamente, la OO nos hace natural pensar enterminos que facilitan reducir el acoplamiento entre conceptosdiferentes

• No les culpare si no se lo tragan

Page 65: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Micro-intro a la OO

• Clases de objetos

• Los objetos responden a metodos

• Los objetos tienen atributos

• Las clases heredan de otras

• Al menos teoricamente, la OO nos hace natural pensar enterminos que facilitan reducir el acoplamiento entre conceptosdiferentes

• No les culpare si no se lo tragan

Page 66: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Micro-intro a la OO

• Clases de objetos

• Los objetos responden a metodos

• Los objetos tienen atributos

• Las clases heredan de otras

• Al menos teoricamente, la OO nos hace natural pensar enterminos que facilitan reducir el acoplamiento entre conceptosdiferentes

• No les culpare si no se lo tragan

Page 67: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Micro-intro a la OO

• Clases de objetos

• Los objetos responden a metodos

• Los objetos tienen atributos

• Las clases heredan de otras

• Al menos teoricamente, la OO nos hace natural pensar enterminos que facilitan reducir el acoplamiento entre conceptosdiferentes

• No les culpare si no se lo tragan

Page 68: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Micro-intro a la OO

• Clases de objetos

• Los objetos responden a metodos

• Los objetos tienen atributos

• Las clases heredan de otras

• Al menos teoricamente, la OO nos hace natural pensar enterminos que facilitan reducir el acoplamiento entre conceptosdiferentes

• No les culpare si no se lo tragan (o no lo entienden)

Page 69: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

OO en Ruby

• Simple, comoda de escribir (mas vale)

• Es la forma natural de resolver los problemas

• Se puede escribir en estilo no OO, pero en realidad es OO

• Herencia simple

• No existen los atributos (desde fuera)

• Metodos terminados en ((!)) y ((?))

• Metodos especiales ((=)) para caramelos sintacticos

• Se usa ((@)) y ((@@)) para los atributos de objeto/clase

• Se usa (($)) para variables globales (vale, no OO)

Page 70: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

OO en Ruby

• Simple, comoda de escribir (mas vale)

• Es la forma natural de resolver los problemas

• Se puede escribir en estilo no OO, pero en realidad es OO

• Herencia simple

• No existen los atributos (desde fuera)

• Metodos terminados en ((!)) y ((?))

• Metodos especiales ((=)) para caramelos sintacticos

• Se usa ((@)) y ((@@)) para los atributos de objeto/clase

• Se usa (($)) para variables globales (vale, no OO)

Page 71: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

OO en Ruby

• Simple, comoda de escribir (mas vale)

• Es la forma natural de resolver los problemas

• Se puede escribir en estilo no OO, pero en realidad es OO

• Herencia simple

• No existen los atributos (desde fuera)

• Metodos terminados en ((!)) y ((?))

• Metodos especiales ((=)) para caramelos sintacticos

• Se usa ((@)) y ((@@)) para los atributos de objeto/clase

• Se usa (($)) para variables globales (vale, no OO)

Page 72: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

OO en Ruby

• Simple, comoda de escribir (mas vale)

• Es la forma natural de resolver los problemas

• Se puede escribir en estilo no OO, pero en realidad es OO

• Herencia simple

• No existen los atributos (desde fuera)

• Metodos terminados en ((!)) y ((?))

• Metodos especiales ((=)) para caramelos sintacticos

• Se usa ((@)) y ((@@)) para los atributos de objeto/clase

• Se usa (($)) para variables globales (vale, no OO)

Page 73: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

OO en Ruby

• Simple, comoda de escribir (mas vale)

• Es la forma natural de resolver los problemas

• Se puede escribir en estilo no OO, pero en realidad es OO

• Herencia simple

• No existen los atributos (desde fuera)

• Metodos terminados en ((!)) y ((?))

• Metodos especiales ((=)) para caramelos sintacticos

• Se usa ((@)) y ((@@)) para los atributos de objeto/clase

• Se usa (($)) para variables globales (vale, no OO)

Page 74: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

OO en Ruby

• Simple, comoda de escribir (mas vale)

• Es la forma natural de resolver los problemas

• Se puede escribir en estilo no OO, pero en realidad es OO

• Herencia simple

• No existen los atributos (desde fuera)

• Metodos terminados en ((!)) y ((?))

• Metodos especiales ((=)) para caramelos sintacticos

• Se usa ((@)) y ((@@)) para los atributos de objeto/clase

• Se usa (($)) para variables globales (vale, no OO)

Page 75: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

OO en Ruby

• Simple, comoda de escribir (mas vale)

• Es la forma natural de resolver los problemas

• Se puede escribir en estilo no OO, pero en realidad es OO

• Herencia simple

• No existen los atributos (desde fuera)

• Metodos terminados en ((!)) y ((?))

• Metodos especiales ((=)) para caramelos sintacticos

• Se usa ((@)) y ((@@)) para los atributos de objeto/clase

• Se usa (($)) para variables globales (vale, no OO)

Page 76: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

OO en Ruby

• Simple, comoda de escribir (mas vale)

• Es la forma natural de resolver los problemas

• Se puede escribir en estilo no OO, pero en realidad es OO

• Herencia simple

• No existen los atributos (desde fuera)

• Metodos terminados en ((!)) y ((?))

• Metodos especiales ((=)) para caramelos sintacticos

• Se usa ((@)) y ((@@)) para los atributos de objeto/clase

• Se usa (($)) para variables globales (vale, no OO)

Page 77: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

OO en Ruby

• Simple, comoda de escribir (mas vale)

• Es la forma natural de resolver los problemas

• Se puede escribir en estilo no OO, pero en realidad es OO

• Herencia simple

• No existen los atributos (desde fuera)

• Metodos terminados en ((!)) y ((?))

• Metodos especiales ((=)) para caramelos sintacticos

• Se usa ((@)) y ((@@)) para los atributos de objeto/clase

• Se usa (($)) para variables globales (vale, no OO)

Page 78: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (I)

class SerVivoattr_accessor :nombreattr_reader :edaddef initialize(nombre, edad)@nombre = nombre@edad = edad@persona = false

enddef saludarputs "¿Que pasa, #{@nombre}?"

enddef persona?; @persona enddef personizar!; @persona = true enddef edad=(nuevaEdad) @edad = nuevaEdad.to_i end

end

Page 79: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (I)

class SerVivoattr_accessor :nombreattr_reader :edaddef initialize(nombre, edad)@nombre = nombre@edad = edad@persona = false

enddef saludarputs "¿Que pasa, #{@nombre}?"

enddef persona?; @persona enddef personizar!; @persona = true enddef edad=(nuevaEdad) @edad = nuevaEdad.to_i end

end

Page 80: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (I)

class SerVivoattr_accessor :nombreattr_reader :edaddef initialize(nombre, edad)@nombre = nombre@edad = edad@persona = false

enddef saludarputs "¿Que pasa, #{@nombre}?"

enddef persona?; @persona enddef personizar!; @persona = true enddef edad=(nuevaEdad) @edad = nuevaEdad.to_i end

end

Page 81: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (I)

class SerVivoattr_accessor :nombreattr_reader :edaddef initialize(nombre, edad)@nombre = nombre@edad = edad@persona = false

enddef saludarputs "¿Que pasa, #{@nombre}?"

enddef persona?; @persona enddef personizar!; @persona = true enddef edad=(nuevaEdad) @edad = nuevaEdad.to_i end

end

Page 82: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (I)

class SerVivoattr_accessor :nombreattr_reader :edaddef initialize(nombre, edad)@nombre = nombre@edad = edad@persona = false

enddef saludarputs "¿Que pasa, #{@nombre}?"

enddef persona?; @persona enddef personizar!; @persona = true enddef edad=(nuevaEdad) @edad = nuevaEdad.to_i end

end

Page 83: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (I)

class SerVivoattr_accessor :nombreattr_reader :edaddef initialize(nombre, edad)@nombre = nombre@edad = edad@persona = false

enddef saludarputs "¿Que pasa, #{@nombre}?"

enddef persona?; @persona enddef personizar!; @persona = true enddef edad=(nuevaEdad) @edad = nuevaEdad.to_i end

end

Page 84: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (I)

class SerVivoattr_accessor :nombreattr_reader :edaddef initialize(nombre, edad)@nombre = nombre@edad = edad@persona = false

enddef saludarputs "¿Que pasa, #{@nombre}?"

enddef persona?; @persona enddef personizar!; @persona = true enddef edad=(nuevaEdad) @edad = nuevaEdad.to_i end

end

Page 85: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (I)

class SerVivoattr_accessor :nombreattr_reader :edaddef initialize(nombre, edad)@nombre = nombre@edad = edad@persona = false

enddef saludarputs "¿Que pasa, #{@nombre}?"

enddef persona?; @persona enddef personizar!; @persona = true enddef edad=(nuevaEdad) @edad = nuevaEdad.to_i end

end

Page 86: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (II)

Page 87: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (II)

irb(main):030:0> neng = SerVivo.new(’Neng’, 25)=> #<Persona:0xb7a254a4 @persona=false, @edad=25, ...>irb(main):031:0> neng.saludar¿Que pasa, Neng?=> nilirb(main):032:0> neng.persona?=> falseirb(main):033:0> neng.personizar!=> trueirb(main):034:0> neng.persona?=> true

Page 88: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (II)

irb(main):030:0> neng = SerVivo.new(’Neng’, 25)=> #<Persona:0xb7a254a4 @persona=false, @edad=25, ...>irb(main):031:0> neng.saludar¿Que pasa, Neng?=> nilirb(main):032:0> neng.persona?=> falseirb(main):033:0> neng.personizar!=> trueirb(main):034:0> neng.persona?=> true

Page 89: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (II)

irb(main):030:0> neng = SerVivo.new(’Neng’, 25)=> #<Persona:0xb7a254a4 @persona=false, @edad=25, ...>irb(main):031:0> neng.saludar¿Que pasa, Neng?=> nilirb(main):032:0> neng.persona?=> falseirb(main):033:0> neng.personizar!=> trueirb(main):034:0> neng.persona?=> true

Page 90: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (II)

irb(main):030:0> neng = SerVivo.new(’Neng’, 25)=> #<Persona:0xb7a254a4 @persona=false, @edad=25, ...>irb(main):031:0> neng.saludar¿Que pasa, Neng?=> nilirb(main):032:0> neng.persona?=> falseirb(main):033:0> neng.personizar!=> trueirb(main):034:0> neng.persona?=> true

Page 91: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (II)

irb(main):030:0> neng = SerVivo.new(’Neng’, 25)=> #<Persona:0xb7a254a4 @persona=false, @edad=25, ...>irb(main):031:0> neng.saludar¿Que pasa, Neng?=> nilirb(main):032:0> neng.persona?=> falseirb(main):033:0> neng.personizar!=> trueirb(main):034:0> neng.persona?=> true

Page 92: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (II)

irb(main):030:0> neng = SerVivo.new(’Neng’, 25)=> #<Persona:0xb7a254a4 @persona=false, @edad=25, ...>irb(main):031:0> neng.saludar¿Que pasa, Neng?=> nilirb(main):032:0> neng.persona?=> falseirb(main):033:0> neng.personizar!=> trueirb(main):034:0> neng.persona?=> true

Page 93: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (III)

irb(main):035:0> neng.edad = ’26’=> "26"irb(main):036:0> neng.edad=> 26irb(main):037:0> neng.nombre=> "Neng"irb(main):038:0> neng.nombre = ’Pepita’=> "Pepita"irb(main):039:0> neng.nombre=> "Pepita"irb(main):040:0> neng.sexo=> :femenino

Page 94: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (III)

irb(main):035:0> neng.edad = ’26’=> "26"irb(main):036:0> neng.edad=> 26irb(main):037:0> neng.nombre=> "Neng"irb(main):038:0> neng.nombre = ’Pepita’=> "Pepita"irb(main):039:0> neng.nombre=> "Pepita"irb(main):040:0> neng.sexo=> :femenino

Page 95: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (III)

irb(main):035:0> neng.edad = ’26’=> "26"irb(main):036:0> neng.edad=> 26irb(main):037:0> neng.nombre=> "Neng"irb(main):038:0> neng.nombre = ’Pepita’=> "Pepita"irb(main):039:0> neng.nombre=> "Pepita"irb(main):040:0> neng.sexo=> :femenino

Page 96: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (III)

irb(main):035:0> neng.edad = ’26’=> "26"irb(main):036:0> neng.edad=> 26irb(main):037:0> neng.nombre=> "Neng"irb(main):038:0> neng.nombre = ’Pepita’=> "Pepita"irb(main):039:0> neng.nombre=> "Pepita"irb(main):040:0> neng.sexo=> :femenino

Page 97: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (III)

irb(main):035:0> neng.edad = ’26’=> "26"irb(main):036:0> neng.edad=> 26irb(main):037:0> neng.nombre=> "Neng"irb(main):038:0> neng.nombre = ’Pepita’=> "Pepita"irb(main):039:0> neng.nombre=> "Pepita"irb(main):040:0> neng.sexo=> :femenino

Page 98: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (III)

irb(main):035:0> neng.edad = ’26’=> "26"irb(main):036:0> neng.edad=> 26irb(main):037:0> neng.nombre=> "Neng"irb(main):038:0> neng.nombre = ’Pepita’=> "Pepita"irb(main):039:0> neng.nombre=> "Pepita"irb(main):040:0> neng.sexo=> :femenino

Page 99: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (III)

irb(main):035:0> neng.edad = ’26’=> "26"irb(main):036:0> neng.edad=> 26irb(main):037:0> neng.nombre=> "Neng"irb(main):038:0> neng.nombre = ’Pepita’=> "Pepita"irb(main):039:0> neng.nombre=> "Pepita"irb(main):040:0> neng.sexo=> :femenino

Page 100: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo algo mas ((real)) (III)

irb(main):035:0> neng.edad = ’26’=> "26"irb(main):036:0> neng.edad=> 26irb(main):037:0> neng.nombre=> "Neng"irb(main):038:0> neng.nombre = ’Pepita’=> "Pepita"irb(main):039:0> neng.nombre=> "Pepita"irb(main):040:0> neng.sexo=> :femenino

(Es broma)

Page 101: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Indice

1 IntroduccionPresentacionEjemplos de RailsSobre el lenguaje

2 El lenguajeVariables¿Pato que?Orientacion a objetosEstructuras de control

3 EjerciciosEjercicio 1Ejercicio 2Ejercicio 3

Page 102: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Estructuras

• Pocas, en parte por los bloques

• if, case, while, loop, for

• if tiene elsif aparte de else, y devuelve un valor

• if tiene then optativo (sintaxis de una lınea)

• case tiene una forma curiosa de comparar (operador === delo que va en el when)

• case devuelve un valor

• Las tres ultimas rara vez se usan

Page 103: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Estructuras

• Pocas, en parte por los bloques

• if, case, while, loop, for

• if tiene elsif aparte de else, y devuelve un valor

• if tiene then optativo (sintaxis de una lınea)

• case tiene una forma curiosa de comparar (operador === delo que va en el when)

• case devuelve un valor

• Las tres ultimas rara vez se usan

Page 104: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Estructuras

• Pocas, en parte por los bloques

• if, case, while, loop, for

• if tiene elsif aparte de else, y devuelve un valor

• if tiene then optativo (sintaxis de una lınea)

• case tiene una forma curiosa de comparar (operador === delo que va en el when)

• case devuelve un valor

• Las tres ultimas rara vez se usan

Page 105: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Estructuras

• Pocas, en parte por los bloques

• if, case, while, loop, for

• if tiene elsif aparte de else, y devuelve un valor

• if tiene then optativo (sintaxis de una lınea)

• case tiene una forma curiosa de comparar (operador === delo que va en el when)

• case devuelve un valor

• Las tres ultimas rara vez se usan

Page 106: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Estructuras

• Pocas, en parte por los bloques

• if, case, while, loop, for

• if tiene elsif aparte de else, y devuelve un valor

• if tiene then optativo (sintaxis de una lınea)

• case tiene una forma curiosa de comparar (operador === delo que va en el when)

• case devuelve un valor

• Las tres ultimas rara vez se usan

Page 107: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Estructuras

• Pocas, en parte por los bloques

• if, case, while, loop, for

• if tiene elsif aparte de else, y devuelve un valor

• if tiene then optativo (sintaxis de una lınea)

• case tiene una forma curiosa de comparar (operador === delo que va en el when)

• case devuelve un valor

• Las tres ultimas rara vez se usan

Page 108: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Estructuras

• Pocas, en parte por los bloques

• if, case, while, loop, for

• if tiene elsif aparte de else, y devuelve un valor

• if tiene then optativo (sintaxis de una lınea)

• case tiene una forma curiosa de comparar (operador === delo que va en el when)

• case devuelve un valor

• Las tres ultimas rara vez se usan

Page 109: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo

if 0 then puts "Sorpresa" else puts "0 es falso" end

if 0puts "No te enteras..."

elseputs "Solamente false y nil son falsos"

end

Page 110: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo

if 0 then puts "Sorpresa" else puts "0 es falso" end

if 0puts "No te enteras..."

elseputs "Solamente false y nil son falsos"

end

Page 111: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejemplo

if 0 then puts "Sorpresa" else puts "0 es falso" end

if 0puts "No te enteras..."

elseputs "Solamente false y nil son falsos"

end

Page 112: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Mas ejemplos

case ’pepito’when /pep/

puts "Guardiola"when Integer

puts "Un entero"when "a" .. "z"

puts "Una sola letra"end

Page 113: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Mas ejemplos

case ’pepito’when /pep/

puts "Guardiola"when Integer

puts "Un entero"when "a" .. "z"

puts "Una sola letra"end

Page 114: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Mas ejemplos

case ’pepito’when /pep/

puts "Guardiola"when Integer

puts "Un entero"when "a" .. "z"

puts "Una sola letra"end

Page 115: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Mas ejemplos

case ’pepito’when /pep/

puts "Guardiola"when Integer

puts "Un entero"when "a" .. "z"

puts "Una sola letra"end

Page 116: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Mas ejemplos todavıa

a = 0while a < 10 do a += 1 end

loop doa += 1puts "Bucle manual y aburrido"break if a > 20

end

for i in 35..40 do puts "Mejor, pero no" end

Page 117: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Bucles estilo Ruby

0.upto(9) do puts "Mejor" end

loop doa += 1puts "Bucle manual y aburrido"break if a > 20

end

for i in 35..40 do puts "Mejor, pero no" end

Page 118: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Bucles estilo Ruby

0.upto(9) do puts "Mejor" end

10.times do puts "Bucle rubyano" end

for i in 35..40 do puts "Mejor, pero no" end

Page 119: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Bucles estilo Ruby

0.upto(9) do puts "Mejor" end

10.times do puts "Bucle rubyano" end

(35..40).each do |i| puts "Mucho mejor, #{i}" end

Page 120: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Indice

1 IntroduccionPresentacionEjemplos de RailsSobre el lenguaje

2 El lenguajeVariables¿Pato que?Orientacion a objetosEstructuras de control

3 EjerciciosEjercicio 1Ejercicio 2Ejercicio 3

Page 121: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejercicio 1

• Pedir cinco palabras y meterlas en una lista

• Recorrer la lista, e imprimir las que tienen mas de 3 letras

• Metodos utiles: gets, puts, Array#push y String#size

• ¿Algun problema sutil?

Page 122: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Indice

1 IntroduccionPresentacionEjemplos de RailsSobre el lenguaje

2 El lenguajeVariables¿Pato que?Orientacion a objetosEstructuras de control

3 EjerciciosEjercicio 1Ejercicio 2Ejercicio 3

Page 123: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejercicio 2

• Escribir una clase Traductor

• En el constructor, recibira el idioma al que traducir("ingles", "frances", "aleman")

• Tendra un metodo traducir

• Para traducir al ingles, se anade eishon al final

• Para traducir al frances, se anade e al final

• Para traducir al aleman, siempre se devuelve frufrunguen

• ¿Demasiado facil? Extra: en ingles y frances, quitar la ultimaletra si es una vocal (Array#include?, String#[])

Page 124: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Indice

1 IntroduccionPresentacionEjemplos de RailsSobre el lenguaje

2 El lenguajeVariables¿Pato que?Orientacion a objetosEstructuras de control

3 EjerciciosEjercicio 1Ejercicio 2Ejercicio 3

Page 125: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

Ejercicio 3

• Escribir una clase Dado

• En el constructor recibira el numero de caras

• Tendra un metodo tirar, que devolvera un numero aleatorio

• Escribir otra clase Personaje

• En el constructor recibira el nombre

• Al crearse uno, se calcularan las caracterısticas fuerza,destreza e inteligencia (tirando un dado de 20)

• Las caracterısticas tendran que ser visibles desde fuera

• ¿Demasiado facil? Extra: por cada caracterıstica, tirar tresveces el dado y quedarse con la tirada mas alta

• Metodos utiles: rand, Array#max

Page 126: Esteban Manchado Vel´azquez zoso@foton · Ruby on Rails (Introducci´on a Ruby) Esteban Manchado Vel´azquez zoso@foton.es 20 de mayo de 2006

¡Manana mas!