O documento apresenta uma introdução à linguagem de programação Ruby. Resume os principais pontos sobre o que é Ruby, suas características como tipagem dinâmica e orientação a objetos, exemplos de código com classes, arrays, hashes e estruturas de controle. Explica como testar programas Ruby e fornece referências para aprendizado adicional.
2. O que é Ruby?
Definição do site oficial: (www.ruby-lang.org)
A dynamic, open source programming language with a focus on
simplicity and productivity.
It has an elegant syntax that is natural to read and easy to write.
Criada por Yukihiro quot;matzquot; Matsumoto.
Inspirada por suas linguagens favoritas:
Perl, Smalltalk, Eiffel, Ada e Lisp.
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
3. Ruby: Características
Linguagem de script interpretada.
Similar a Smalltalk, Python, PHP, Perl...
Manipulação fácil e poderosa de strings.
Amplo suporte a expressões regulares. =)
Extremamente orientada a objetos.
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
4. Ruby: Características
Não é necessário declarar variáveis.
Tipagem dinâmica.
Tipagem forte.
Sintaxe simples, leve e consistente.
Gerenciamento de memória automático.
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
5. Exemplo de código Ruby
class Category < ActiveRecord::Base
has_many :places
before_save :generate_slug
def generate_slug
return unless self.slug.blank?
self.slug = self.name.parameterize
end
end
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
6. Estilos de programação e POO
Você pode programar usando programação estruturada
ou orientação a objetos, ou as duas juntas, se quiser =)
POO:
Classes
Herança
Controle de Acesso
Polimorfismo
etc...
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
8. Exemplo clássico: fatorial
fatorial.rb
def fatorial( n )
if n == 0
1
else
n * fatorial( n – 1 )
end
end
# chamando a função criada
fatorial(5)
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
9. Strings
Funcionam de forma semelhante ao PHP.
Strings entre quot; são processadas a procura de expressões.
Strings entre ' não são processadas.
# exemplos:
puts '1+1=#{1+1}'
puts quot;1+1=#{1+1}quot;
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
10. Arrays
lista = [ quot;verdequot;, quot;amareloquot;, quot;azulquot;, quot;brancoquot; ]
lista.public_methods.sort
# http://www.ruby-doc.org/core/classes/Array.html
lista[0..2] # da posição 0 até a posição 2
lista.push( quot;vermelhoquot; )
# ou que tal?
lista.push quot;laranjaquot;
lista.pop
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
11. Ranges
Fechado:
0..9, ou seja, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Aberto:
0...9, ou seja, 0, 1, 2, 3, 4, 5, 6, 7, 8
0..9 # é um range, não um array!
(0..9).to_a # agora é um array =)
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
12. Hashes
Também conhecidos como dicionários ou arrays
associativos. Forma conveniente de armazenar
informações por associação, no formato:
chave => valor
Bastante utilizado na passagem de parâmetros para os
métodos Rails.
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
14. Símbolos
São elementos utilizados para representar strings ou
nomes de uma maneira geral.
Bastante empregados na construção de hashes (vistos
no slide anterior).
Além disso, por conta de seus fins descritivos, só existe
uma instância de cada símbolo na memória.
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
15. Hashes com símbolos
# criando um hash novo usando símbolos
populacao = {
:argentina => 40000000,
:brasil => 190_000_000
}
# acessando
populacao[:brasil]
# removendo
populacao.delete :argentina
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
16. Strings x Símbolos
Quando o importante para você é representar uma
sequência de caracteres, use Strings.
Quando o importante para você é definir um rótulo ou
uma identificação, use Símbolos.
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
17. Métodos predicados
Métodos que, por convenção, retornam true ou false.
Podem ser facilmente identificados
pela ? ao final do nome do método.
Exemplos:
[quot;umquot;].empty?
quot;textoquot;.is_a? String
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
18. Métodos destrutivos
Por convenção são os métodos que modificam o objeto
original, por isso quot;destroemquot; o objeto original.
Podem ser facilmente identificados
pela ! ao final do nome do método.
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
19. Métodos destrutivos (exemplo)
nome = quot; Chris quot;
# executa o método sem alterar o valor atual
nome.strip
puts nome
# executa o método e altera o objeto original
nome.strip! # versão destrutiva
puts nome
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
20. IF
print 'Digite sua cidade natal: '
cidade = gets.chomp
if cidade == 'Itu'
puts 'Ituano'
# elsif, não else if, elif ou elseif
elsif cidade == 'Salto'
puts 'Saltense'
else
puts 'Brasileiro =)'
end
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
21. Case
print 'Digite sua idade: '
idade = gets.to_i
case idade
when 18, 30..50
puts 'Atendimento X'
when 70, 80, 90
puts 'Atendimento Y'
else
puts 'Atendimento Z'
end
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
22. While
i=0
while i < 10
puts i
i += 1
end
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
23. O jeito Ruby (parte I)
No Ruby as estruturas de controle e repetição podem ser
colocadas em lugares novos, melhorando a leitura das
sentenças e deixando seu código mais claro.
# exemplo didático para remover todos os itens
lista = [ 'a','b','c','d','e' ]
puts lista.pop while not lista.empty?
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
24. O jeito Ruby (parte II)
i=0
while i < 10
puts i if i % 2 == 0
# o valor de i só vai ser impresso caso
# a condição ali no fim seja atendida
i += 1
end
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
25. O jeito Ruby (parte III)
i=0
while i < 10
puts i unless i % 2 == 0
# unless funciona como um if not
i += 1
end
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br
26. for
# modo tradicional
for i in (5..15)
puts i
end
# e uma quot;versão mais orientada a objetosquot;?
(15..25).each do |numero|
puts numero ** 0.5
end
26~30/01/2009 @ senac Klaus Paiva
www.klaus.pro.br