Introdução ao Ruby



26~30/01/2009 @ senac     Klaus Paiva
                        www.klaus.pro.br
O que é Ruby?
  Definição do site oficial: (www.ruby-lang.org)
       A dynamic, open source programming language with a f...
Ruby: Características
  Linguagem de script interpretada.
       Similar a Smalltalk, Python, PHP, Perl...


  Manipulação...
Ruby: Características
  Não é necessário declarar variáveis.

  Tipagem dinâmica.

  Tipagem forte.

  Sintaxe simples, le...
Exemplo de código Ruby
class Category < ActiveRecord::Base


  has_many :places


  before_save :generate_slug
  def gener...
Estilos de programação e POO
  Você pode programar usando programação estruturada
  ou orientação a objetos, ou as duas ju...
Testando seu Ruby
$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]


  arquivo.rb:
puts 'Oi, tudo bem?'


$ ru...
Exemplo clássico: fatorial
  fatorial.rb
def fatorial( n )
  if n == 0
      1
  else
      n * fatorial( n – 1 )
  end
en...
Strings
  Funcionam de forma semelhante ao PHP.
  Strings entre quot; são processadas a procura de expressões.
  Strings e...
Arrays
lista = [ quot;verdequot;, quot;amareloquot;, quot;azulquot;, quot;brancoquot; ]


lista.public_methods.sort
# http...
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....
Hashes
 Também conhecidos como dicionários ou arrays
 associativos. Forma conveniente de armazenar
 informações por associ...
Hashes (exemplo)
# criando um hash novo
populacao = {
    'argentina' => 40000000,
    'brasil' => 190_000_000
}


# acess...
Símbolos
 São elementos utilizados para representar strings ou
 nomes de uma maneira geral.

 Bastante empregados na const...
Hashes com símbolos
# criando um hash novo usando símbolos
populacao = {
     :argentina => 40000000,
     :brasil => 190_...
Strings x Símbolos
  Quando o importante para você é representar uma
  sequência de caracteres, use Strings.

  Quando o i...
Métodos predicados
  Métodos que, por convenção, retornam true ou false.

  Podem ser facilmente identificados
  pela ? ao...
Métodos destrutivos
  Por convenção são os métodos que modificam o objeto
  original, por isso quot;destroemquot; o objeto...
Métodos destrutivos (exemplo)
nome = quot; Chris quot;


# executa o método sem alterar o valor atual
nome.strip
puts nome...
IF
print 'Digite sua cidade natal: '
cidade = gets.chomp
if cidade == 'Itu'
  puts 'Ituano'
# elsif, não else if, elif ou ...
Case
print 'Digite sua idade: '
idade = gets.to_i
case idade
  when 18, 30..50
      puts 'Atendimento X'
  when 70, 80, 9...
While
i=0
while i < 10
 puts i
 i += 1
end




 26~30/01/2009 @ senac     Klaus Paiva
                         www.klaus.p...
O jeito Ruby (parte I)
  No Ruby as estruturas de controle e repetição podem ser
  colocadas em lugares novos, melhorando ...
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 ...
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~...
for
# modo tradicional
for i in (5..15)
  puts i
end


# e uma quot;versão mais orientada a objetosquot;?
(15..25).each do...
Referências
  http://www.rubyist.net/~slagell/ruby/


  http://www.ruby-lang.org/en/documentation/


  http://www.ruby-doc...
Fotos: Créditos
  Slide 5: http://tinyurl.com/7ylxr8
  Slide 9: http://tinyurl.com/a2w9kn
  Slide 17: http://tinyurl.com/8...
Próximos SlideShares
Carregando em…5
×

Introducao ao Ruby

1.481 visualizações

Publicada em

Material de apoio do curso de verão sobre Ruby on Rails.
Os slides fazem mais sentido com as explicações em sala mas, ainda assim, podem ser usados como material para consulta.

Publicada em: Tecnologia
1 comentário
0 gostaram
Estatísticas
Notas
  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.481
No SlideShare
0
A partir de incorporações
0
Número de incorporações
241
Ações
Compartilhamentos
0
Downloads
59
Comentários
1
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Introducao ao Ruby

  1. 1. Introdução ao Ruby 26~30/01/2009 @ senac Klaus Paiva www.klaus.pro.br
  2. 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. 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. 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. 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. 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
  7. 7. Testando seu Ruby $ ruby -v ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux] arquivo.rb: puts 'Oi, tudo bem?' $ ruby arquivo.rb 26~30/01/2009 @ senac Klaus Paiva www.klaus.pro.br
  8. 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. 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. 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. 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. 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
  13. 13. Hashes (exemplo) # criando um hash novo 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
  14. 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. 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. 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. 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. 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. 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. 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. 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. 22. While i=0 while i < 10 puts i i += 1 end 26~30/01/2009 @ senac Klaus Paiva www.klaus.pro.br
  23. 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. 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. 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. 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
  27. 27. Referências http://www.rubyist.net/~slagell/ruby/ http://www.ruby-lang.org/en/documentation/ http://www.ruby-doc.org/core/ http://tinyurl.com/6ox4hx (www.akitaonrails.com) 26~30/01/2009 @ senac Klaus Paiva www.klaus.pro.br
  28. 28. Fotos: Créditos Slide 5: http://tinyurl.com/7ylxr8 Slide 9: http://tinyurl.com/a2w9kn Slide 17: http://tinyurl.com/8kj8x9 Slide 18: http://tinyurl.com/8kmfo7 Slide 24: http://tinyurl.com/a74mba Slide 25: http://tinyurl.com/7zezng Slide 27: http://tinyurl.com/7kh8by 26~30/01/2009 @ senac Klaus Paiva www.klaus.pro.br

×