Feliz Programación
;)
Juan Álvarez Álvarez
Luis Serrano Arjona
Francisco Javier Trujillo Mata
 Introducción
 Objetivo
 Características
 Ruby Vs
Haskell
 Tutorial Ruby
 Aplicación
 Bibliografía
2

Creador Yukihiro “matz” Matsumoto
3
 Interpretado, reflexivo
y orientado a
objetos.
 Sus orígenes constan del año 1993.
 Presentado en 1995.
 Combina una sintaxis inspirada en
Python y Perl.
 Características similares a Smalltalk con
respecto a la programación orientada a
objetos.
4
• “A menudo la gente, especialmente los
ingenieros en informática, se centran en las
máquinas. Ellos piensan, "Haciendo esto, la
máquina funcionará más rápido. Haciendo esto,
la máquina funcionará de manera más eficiente.
Haciendo esto..." Están centrados en las
máquinas, pero en realidad necesitamos
centrarnos en las personas, en cómo hacen
programas o cómo manejan las aplicaciones en
los ordenadores. Nosotros somos los jefes. Ellos
son los esclavos.”
5
 “Principio
de la menor sorpresa”
6
• Software libre
• Orientado a Objetos
• Flexibilidad
• Posibilidad de redefinir los operadores
• Bloques
• Apariencia visual
• Recolección de basura automática
• Herencia como Mixin y patrones singleton
• …
7
 Popularidad
 Haskell
es más potente y eficiente
 Nivel lógico importante en Haskell
 Pattern matching en Haskell
 Fácil adaptación a Ruby
8
 Prelude, librería
Haskell para Ruby
 http://www.appdesign.com/products/op
en-source-projects/prelude-library/
9
 El
programa Hola Mundo
Arrancamos el interprete:
irb(main):001:0>
Escribimos la sentencia:
puts “Hola mundo”
Resultado:
irb(main):001:0> puts "hola mundo"
hola mundo
=> nil
10
 Ventajas
con otros lenguajes
• Para programadores de C y Java - no se necesita
escribir un método main.
• Los strings son secuencias de caracteres entre
simple o dobles comillas.
• Es un lenguaje interpretado, entonces no hace
falta recompilar para ejecutar un programa.
11
 Números en
• puts 1 + 2
Ruby (algunos ejemplos)
3
=> Nil
#Divisón: cuando divides dos enteros, obtienes un
entero:
• puts 3 / 2
1
=> nil
12
 Números
en Ruby (algunos ejemplos)
#si quieres obtener el resultado de decimal,
#al menos uno de los dos tiene que ser decimal
• puts 3.0 / 2
1.5
=> nil
13
 Números
en Ruby
• Los números en Ruby son objetos de la
clase Fixnum o Bignum
14
 Números
en Ruby
• Operadores y precedencia
[]
Índices
>= < <=
Comparadores
**
Exponentes
+-!~
Unarios:
pos/neg, no,…
== === <=> !=
=~ !~
Igualadad,
inegualdad,…
'u' booleano
*/%
Multiplicación
, División,…
&&
||
'o' booleano
+-
Suma, Resta,…
.. …
«»
Desplazadore
s binarios,…
Operadores de
rango
= (+=, -=,...)
Asignadores
&
'y' binario
?:
|, ^
'or' y 'xor'
binarios
Decisión
ternaria
not
'no' booleano
15

Strings
• Los strings (o cadenas de texto) son secuencias de
caracteres entre comillas simples o comillas dobles. ''
(dos comillas simples) no tienen nada: podemos llamarlo
string vacío.
 puts "Hola mundo"
# Se puede usar " o ' para los strings, pero ' es más eficiente.
 puts 'Hola mundo'
# Juntando cadenas
 puts 'Me gusta' + ' Ruby'
# Secuencia de escape
 puts 'Ruby\'s party'
# Repetición de strings puts
 'Hola' * 3
16
 Variables
• Para almacenar un número o un string en la
memoria del ordenador, con el fin de usarlos en
cálculos posteriores, necesitas dar un nombre a
ese número o string. En programación este
proceso es conocido como asignación.
#Ejemplos de asignaciones
 s = ‘¡Hola Mundo!'
 x = 10
17
 Variables
• Las variables locales en ruby son palabras que:
 deben empezar con un letra minúscula o un guión
bajo (_)
 deben estar formadas por letras, números y/o
guiones bajos.
• Existen dos tipos distintos de variables
dependiendo del alcanze: Locales y Globales
18
 Variables
Globales
• Las variables globales se distinguen porque
están precedidas del signo dólar ($).
• Ruby tiene por defecto un gran número de
variables globales inicializadas desde el
principio.
• Son variables que almacenan información útil.
• Por ejemplo, la variable global $0 contiene el
nombre del fichero que Ruby está ejecutando.
19
 Introduciendo
datos (gets)
• ¿Cómo podemos introducir nuestros propios
datos? Para esto gets (get=coger, s=string) y
chomp son de ayuda.
# gets y chomp
puts "¿En qué ciudad te gustaría vivir?"
STDOUT.flush
ciudad = gets.chomp
puts "La ciudad es " + ciudad
20
 Los
métodos
• Empiezan por la palabra def y acaba por la end.
# Definición de un método
def hello
puts 'Hola'
end
#uso del método
hello
21
 Los
métodos: argumentos
• Ruby deja especificar los valores por defecto de
los argumentos.
• Esto se hace mediante el operador =
def sinceridad(arg1=“Messi ", arg2=“el ", arg3=“mejor.")
puts arg1 + arg2 + arg3
end
puts sinceridad
22
 Rangos
• El principal uso y quizás el más apropiado para
los rangos, es expresar una secuencia.
 Genera una secuencia donde los puntos límites están
incluidos.
(1..3).to_a
#es la secuencia 1, 2, 3
 Genera una secuencia en la que no está incluida el
límite superior.
(1...5).to_a
#equivale a 1, 2, 3, 4
23
 Arrays
• Es un conjunto ordenado: cada posición en la lista es
una variable que podemos leer y/o escribir.
# array vacío
vec1 = []
# Los índices empiezan desde el cero (0,1,2,...) nombres =
['Satish', 'Talim', 'Ruby', 'Java']
puts nombres[0]
# si el elemento no existe, se devuelve nil
puts nombres[4]
24
 Condicionales
• if,else
xyz = 5
if xyz == 5
puts 'Se puede anidar un bloque if,else,end
dentro de otro'
else
puts "Parte del bloque anidado"
end
25
 Condicionales
• if,else
Además de la igualdad, existen otros operadores
condicionales:
==
igual
!=
distinto
>=
mayor igual que
<=
menor igual que
>
mayor que
<
menor que
26
 Condicionales
• Case
xyz = 10
par = case
when xyz % 2 == 0: true
when xyz % 2 != 0: false
end
puts par
27
 Condicionales
• Unless
nombre = 'Pepe'
unless nombre == 'Enjuto'
puts 'Ese nombre no tiene arte ninguno'
end
28
 Bucles
• while
# Loops
var = 0 while var < 10
puts var.to_s
var += 1
end
29
 Bucles
• times : Lo que hace times es iterar el bloque ese
"número" de veces.
10.times do |num|
puts num
end
30
 Clases
y Objetos
• Un objeto es un contenedor de datos, que a su
vez controla el acceso a dichos datos.
• Asociados a los objetos está una serie de
variables que lo definen: sus atributos.
• Y también un conjunto de funciones que crean
un interfaz para interactuar con el objeto: son
los métodos.
31
 Clases
y Objetos
• Una clase es usada para construir un objeto.
• Una clase es como un molde para objetos.
• Y un objeto, una instancia de la clase.
32
 Clases
y Objetos
# define la clase Perro
class Perro
# método inicializar clase
def initialize(raza, nombre)
# atributos
@raza = raza
@nombre = nombre
end
# método ladrar
def ladrar
puts 'Guau! Guau!'
end
33
 Clases
y Objetos
# método saludar
def saludar
puts "Soy un perro de la raza [email protected]} y mi nombre es
[email protected]}"
end
end
# para hacer nuevos objetos,
# se usa el método new
d = Perro.new('Labrador', 'Benzy')
puts d.methods.sort
puts "La id del ojbeto es #{d.object_id}."
34
 Clases
y Objetos
if d.respond_to?("correr")
d.correr
else
puts "Lo siento, el objeto no entiende el mensaje
'correr'"
end
d.ladrar
d.saludar
35
 Usando
librerías
• Una librería es un fichero que contiene métodos
y clases para su uso a posteriori.
• Para poder usar estas librerías, necesitas de los
métodos require y load.
36
 Usando
librerías
• Require: El método require lee una única vez el
fichero especificado.
 require ‘mi_librería’
• Load: El método load lee el fihcero indicado
tantas veces como aparezca la instrucción.
 load ‘mi_libreria’
37
38
 Wikipedia
 http://www.ruby-lang.org/es/about/
 http://newsgug.blogspot.com/2007/09/e
l-le
 http://www.demiurgo.org/src/ruby/ngua
je-de-programacin-ruby.html
 http://rubytutorial.wikidot.com/bloques
39
Descargar

Ruby