Lenguaje de 
programación Ruby 
Presentado por: Cristian Rojas 
Ingeniería de Software 1 
Universidad Distrital Francisco José de 
Caldas
Agenda 
● ¿Qué es ruby? 
● Historia 
● Tipos de datos, colecciones y operaciones 
● Estructuras de control 
● Expresiones regulares 
● Gemas 
● Interacción con DB relacionales 
● Sintaxis, funciones, excepciones 
● Orientación a objetos 
○ Clases, Herencia, Polimorfismo 
● Metaprogramación 
● ORM: Datamapper 
● Ruby on Rails 
○ CRUD ejemplo
¿Qué es Ruby? 
● Lenguaje de programación 
● Alto nivel 
● Interpretado 
● Orientado a objetos 
● Reflexivo 
● Inspirado en Python y Perl 
● Tipado dinámico
Historia 
● Creado por Yukihiro Matsumoto conocido 
como “Matz” 
● Creado en 1993 pero publicado en 1995 
● El nombre proviene de una broma a Perl 
(Perla). 
● Versión actual estable: 2.1 (Diciembre 2007)
¿Es ruby un lenguaje de scripting? 
Depende de cómo se use ruby puede ser visto como un 
lenguaje de scripting o como un lenguaje de 
programación, es decir un OR inclusivo y no un XOR.
Ejemplo imprimir “Hola Mundo” 
Desde el IRB (Interactive Ruby Shell) 
Desde script previamente creado
Operadores lógicos y aritméticos 
Aritméticos 
Lógicos 
** 
+ 
and ó && 
* 
or ó || 
/ 
! ó not 
% 
^ XOR
Tipos de datos: Numéricos 
● Integer: Clase de donde se derivan 
todos los enteros. 
● Fixnum: Clase de enteros (-2^(n-1)-1, 
2^(n-1)-1). n = 64 ó 32 bits. 
● Bignum: Almacena enteros grandes. 
● Float: Números con punto flotante 
● Rational: Números con un valor de 
denominador y numerador
Tipos de datos: Strings y Dates 
● Strings 
● Dates 
● Nil: Equivalente a Null de Java o None de 
Python.
Colecciones: Arrays 
● Flexibilidad 
● Arrays de varios tipos de datos
Colecciones: Arrays (Métodos)
Otros métodos interesantes 
● Map: Genera un nuevo array indicando cómo generarlo 
● Select: Selecciona elementos según condición especificada. 
● Reject: Eliminar elementos según condición especificada.
Colecciones: Hashes y sets 
Hashes 
-Clave-Valor, Similares a 
diccionarios de Python 
Sets 
-Similar a Arrays pero con 
elementos no repetibles
Estructuras de control: If 
Estructura general Ejemplo 
Resultado:
Estructuras de control: Case 
Estructura general Ejemplo 
Resultado:
Estructuras de control: For
Estructuras de control: While 
Sintaxis general Ejemplos 
Resultado:
Expresiones regulares (REGEXP) 
Secuencia de caracteres especial (patrón) que sirve 
para hacer juegos o encontrar un set de strings. 
^[a-z0-9_]+@[a-z0-9_]+.[a-z]+$ REGEX para una 
dirección de correo 
Explicación 
^ y $ Inicio y final de String. 
a-z, 0-9, _ De la a a la z, del 0 al 9 y el “_” 
“+” Una o mas concidencias 
. Caracter “.”
Expresiones regulares (REGEXP) 
Modificador: 
Ignore Case
Funciones 
Estructura general Ejemplo con parámetros obligatorios 
Ejemplo con parámetros opcionales y por default
Gemas: 
“Similar a una librería o un plugin” 
● Compuesta de: Código (incluyendo test), 
gemspec y documentación. 
● Instalación de una gema: 
● Cargar una gema:
Gemas: Estructura general 
Binarios de la gema. 
El código de la gema. 
Pruebas de validación de gema 
Documentación. 
Información acerca de la gema 
(Versión, plataforma, autor).
Clases: 
Estructura 
general
Clases: Ejemplo
Clases: Herencia
Clases: Polimorfismo
Metaprogramación 
Imperativo -> Declarativo 
“It’s writing code to write code” 
DRY “Don’t Repeat Yourself”
Metaprogramación
ORM: Datamapper 
Definición del modelo
ORM: Datamapper 
Inserción y consulta
Ruby on rails 
● Framework basado en Ruby para desarrollo 
Web 
● Incluye ORM
CRUD con Ruby on Rails
Referencias 
● Shaughnessy P. (2014). How big is a bignum ?. Recuperado de: http://patshaughnessy. 
net/2014/1/9/how-big-is-a-bignum 
● Berman K. (2009). When you say Ruby is reflective, does this mainly refer to “duck 
typing”?. Recuperado de: http://stackoverflow.com/questions/546968/when-you-say-ruby-is- 
reflective-does-this-mainly-refer-to-duck-typing 
● Qualls R.. (2013) A guide to ruby collections. Recuperado de: http://www.sitepoint. 
com/guide-ruby-collections-part-arrays/ 
● Tutorials Point (S.f). Ruby introductory tutorial. Recuperado de http://www.tutorialspoint. 
com/ruby/ 
● [Skilldrick], Really reallly simple ruby metaprogramming (2012)http://skilldrick.co. 
uk/2011/02/really-really-simple-ruby-metaprogramming/ 
● Tutorials Point (Sin Fecha). Ruby regular expressions http://www.tutorialspoint. 
com/ruby/ruby_regular_expressions.htm 
● Rubygems.org, What is a gem?. Recuperado de: http://guides.rubygems.org/what-is-a-gem/

Lenguaje de programación Ruby

  • 1.
    Lenguaje de programaciónRuby Presentado por: Cristian Rojas Ingeniería de Software 1 Universidad Distrital Francisco José de Caldas
  • 2.
    Agenda ● ¿Quées ruby? ● Historia ● Tipos de datos, colecciones y operaciones ● Estructuras de control ● Expresiones regulares ● Gemas ● Interacción con DB relacionales ● Sintaxis, funciones, excepciones ● Orientación a objetos ○ Clases, Herencia, Polimorfismo ● Metaprogramación ● ORM: Datamapper ● Ruby on Rails ○ CRUD ejemplo
  • 3.
    ¿Qué es Ruby? ● Lenguaje de programación ● Alto nivel ● Interpretado ● Orientado a objetos ● Reflexivo ● Inspirado en Python y Perl ● Tipado dinámico
  • 4.
    Historia ● Creadopor Yukihiro Matsumoto conocido como “Matz” ● Creado en 1993 pero publicado en 1995 ● El nombre proviene de una broma a Perl (Perla). ● Versión actual estable: 2.1 (Diciembre 2007)
  • 5.
    ¿Es ruby unlenguaje de scripting? Depende de cómo se use ruby puede ser visto como un lenguaje de scripting o como un lenguaje de programación, es decir un OR inclusivo y no un XOR.
  • 6.
    Ejemplo imprimir “HolaMundo” Desde el IRB (Interactive Ruby Shell) Desde script previamente creado
  • 7.
    Operadores lógicos yaritméticos Aritméticos Lógicos ** + and ó && * or ó || / ! ó not % ^ XOR
  • 8.
    Tipos de datos:Numéricos ● Integer: Clase de donde se derivan todos los enteros. ● Fixnum: Clase de enteros (-2^(n-1)-1, 2^(n-1)-1). n = 64 ó 32 bits. ● Bignum: Almacena enteros grandes. ● Float: Números con punto flotante ● Rational: Números con un valor de denominador y numerador
  • 9.
    Tipos de datos:Strings y Dates ● Strings ● Dates ● Nil: Equivalente a Null de Java o None de Python.
  • 10.
    Colecciones: Arrays ●Flexibilidad ● Arrays de varios tipos de datos
  • 11.
  • 12.
    Otros métodos interesantes ● Map: Genera un nuevo array indicando cómo generarlo ● Select: Selecciona elementos según condición especificada. ● Reject: Eliminar elementos según condición especificada.
  • 13.
    Colecciones: Hashes ysets Hashes -Clave-Valor, Similares a diccionarios de Python Sets -Similar a Arrays pero con elementos no repetibles
  • 14.
    Estructuras de control:If Estructura general Ejemplo Resultado:
  • 15.
    Estructuras de control:Case Estructura general Ejemplo Resultado:
  • 16.
  • 17.
    Estructuras de control:While Sintaxis general Ejemplos Resultado:
  • 18.
    Expresiones regulares (REGEXP) Secuencia de caracteres especial (patrón) que sirve para hacer juegos o encontrar un set de strings. ^[a-z0-9_]+@[a-z0-9_]+.[a-z]+$ REGEX para una dirección de correo Explicación ^ y $ Inicio y final de String. a-z, 0-9, _ De la a a la z, del 0 al 9 y el “_” “+” Una o mas concidencias . Caracter “.”
  • 19.
    Expresiones regulares (REGEXP) Modificador: Ignore Case
  • 20.
    Funciones Estructura generalEjemplo con parámetros obligatorios Ejemplo con parámetros opcionales y por default
  • 21.
    Gemas: “Similar auna librería o un plugin” ● Compuesta de: Código (incluyendo test), gemspec y documentación. ● Instalación de una gema: ● Cargar una gema:
  • 22.
    Gemas: Estructura general Binarios de la gema. El código de la gema. Pruebas de validación de gema Documentación. Información acerca de la gema (Versión, plataforma, autor).
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
    Metaprogramación Imperativo ->Declarativo “It’s writing code to write code” DRY “Don’t Repeat Yourself”
  • 28.
  • 29.
  • 30.
  • 31.
    Ruby on rails ● Framework basado en Ruby para desarrollo Web ● Incluye ORM
  • 32.
    CRUD con Rubyon Rails
  • 33.
    Referencias ● ShaughnessyP. (2014). How big is a bignum ?. Recuperado de: http://patshaughnessy. net/2014/1/9/how-big-is-a-bignum ● Berman K. (2009). When you say Ruby is reflective, does this mainly refer to “duck typing”?. Recuperado de: http://stackoverflow.com/questions/546968/when-you-say-ruby-is- reflective-does-this-mainly-refer-to-duck-typing ● Qualls R.. (2013) A guide to ruby collections. Recuperado de: http://www.sitepoint. com/guide-ruby-collections-part-arrays/ ● Tutorials Point (S.f). Ruby introductory tutorial. Recuperado de http://www.tutorialspoint. com/ruby/ ● [Skilldrick], Really reallly simple ruby metaprogramming (2012)http://skilldrick.co. uk/2011/02/really-really-simple-ruby-metaprogramming/ ● Tutorials Point (Sin Fecha). Ruby regular expressions http://www.tutorialspoint. com/ruby/ruby_regular_expressions.htm ● Rubygems.org, What is a gem?. Recuperado de: http://guides.rubygems.org/what-is-a-gem/