SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
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 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
While
i=0
while i < 10
 puts i
 i += 1
end




 26~30/01/2009 @ senac     Klaus Paiva
                         www.klaus.pro.br
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
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
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
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
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
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

Contenu connexe

Tendances

Matlab – curso básico (1)
Matlab – curso básico (1)Matlab – curso básico (1)
Matlab – curso básico (1)Felipe Meganha
 
Por que voce precisa (re)aprender linguagens funcionais
Por que voce precisa (re)aprender linguagens funcionaisPor que voce precisa (re)aprender linguagens funcionais
Por que voce precisa (re)aprender linguagens funcionaisLuiz Borba
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosGregorio Kusowski
 
Algoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de stringsAlgoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de stringsAlex Camargo
 
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUACândido Sales Gomes
 
A Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialA Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialFlávio Schuindt
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando CVinícius Hax
 
Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03thomasdacosta
 
Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
Otimizações em Sistemas de Armazenamento mediadas por anotações em MetadadosOtimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadadosricardoas
 

Tendances (20)

Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
Matlab – curso básico (1)
Matlab – curso básico (1)Matlab – curso básico (1)
Matlab – curso básico (1)
 
Por que voce precisa (re)aprender linguagens funcionais
Por que voce precisa (re)aprender linguagens funcionaisPor que voce precisa (re)aprender linguagens funcionais
Por que voce precisa (re)aprender linguagens funcionais
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanos
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Pilha em C
Pilha em CPilha em C
Pilha em C
 
Apresentação Lua
Apresentação LuaApresentação Lua
Apresentação Lua
 
Algoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de stringsAlgoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de strings
 
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
 
Pilha e filas
Pilha e filasPilha e filas
Pilha e filas
 
Listas em C
Listas em CListas em C
Listas em C
 
Usar explicação
Usar explicaçãoUsar explicação
Usar explicação
 
A Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialA Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicial
 
Pilhas e Filas
Pilhas e FilasPilhas e Filas
Pilhas e Filas
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 
Slides pilhas e_filas
Slides  pilhas e_filasSlides  pilhas e_filas
Slides pilhas e_filas
 
Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03
 
Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
Otimizações em Sistemas de Armazenamento mediadas por anotações em MetadadosOtimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
 
Top0
Top0Top0
Top0
 

En vedette

En vedette (8)

Hasani Collage
Hasani CollageHasani Collage
Hasani Collage
 
Introducao ao Rails
Introducao ao RailsIntroducao ao Rails
Introducao ao Rails
 
Graciass
GraciassGraciass
Graciass
 
Florida
FloridaFlorida
Florida
 
The I Word Solution
The I Word SolutionThe I Word Solution
The I Word Solution
 
Eskulturaren Aurkezpena Power Point
Eskulturaren Aurkezpena Power PointEskulturaren Aurkezpena Power Point
Eskulturaren Aurkezpena Power Point
 
Agenda 23 24 Ene 09
Agenda 23 24 Ene 09Agenda 23 24 Ene 09
Agenda 23 24 Ene 09
 
Sensors
SensorsSensors
Sensors
 

Similaire à Introdução Ruby

Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Julio Monteiro
 
Scala - Uma Breve (breve mesmo) Introdução
Scala - Uma Breve (breve mesmo) IntroduçãoScala - Uma Breve (breve mesmo) Introdução
Scala - Uma Breve (breve mesmo) Introduçãopaulosuzart
 
Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Zarathon Maia
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptRodrigo Branas
 
Ruby para programadores java
Ruby para programadores javaRuby para programadores java
Ruby para programadores javaRodrigo Urubatan
 
Pesquisa tipos de entrada de dados php
Pesquisa tipos de entrada de dados phpPesquisa tipos de entrada de dados php
Pesquisa tipos de entrada de dados phpWesley Germano Otávio
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoVitor Silva
 
Introdução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsIntrodução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsJulio Betta
 
Sapo sessions linux power tools
Sapo sessions linux power toolsSapo sessions linux power tools
Sapo sessions linux power toolsArmando Reis
 
Introdução a linguagem Swift
Introdução a linguagem SwiftIntrodução a linguagem Swift
Introdução a linguagem SwiftGabriel Rodrigues
 
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)Julio Betta
 
Minicurso de Expressões Regulares (REGEX)
Minicurso de Expressões Regulares (REGEX)Minicurso de Expressões Regulares (REGEX)
Minicurso de Expressões Regulares (REGEX)Danilo Pinotti
 
12 aula - shell script-2015
12   aula - shell script-201512   aula - shell script-2015
12 aula - shell script-2015Flávia Santos
 
Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Isaac Barros
 

Similaire à Introdução Ruby (20)

Curso Ruby
Curso RubyCurso Ruby
Curso Ruby
 
Palestra Ruby
Palestra RubyPalestra Ruby
Palestra Ruby
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)
 
Scala - Uma Breve (breve mesmo) Introdução
Scala - Uma Breve (breve mesmo) IntroduçãoScala - Uma Breve (breve mesmo) Introdução
Scala - Uma Breve (breve mesmo) Introdução
 
Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
Ruby para programadores java
Ruby para programadores javaRuby para programadores java
Ruby para programadores java
 
Pesquisa tipos de entrada de dados php
Pesquisa tipos de entrada de dados phpPesquisa tipos de entrada de dados php
Pesquisa tipos de entrada de dados php
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
 
[Sass] aula 03
[Sass] aula 03[Sass] aula 03
[Sass] aula 03
 
Introdução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsIntrodução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on Rails
 
Sapo sessions linux power tools
Sapo sessions linux power toolsSapo sessions linux power tools
Sapo sessions linux power tools
 
Introdução a linguagem Swift
Introdução a linguagem SwiftIntrodução a linguagem Swift
Introdução a linguagem Swift
 
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
 
Minicurso Ruby on Rails
Minicurso Ruby on RailsMinicurso Ruby on Rails
Minicurso Ruby on Rails
 
Minicurso de Expressões Regulares (REGEX)
Minicurso de Expressões Regulares (REGEX)Minicurso de Expressões Regulares (REGEX)
Minicurso de Expressões Regulares (REGEX)
 
Php
PhpPhp
Php
 
12 aula - shell script-2015
12   aula - shell script-201512   aula - shell script-2015
12 aula - shell script-2015
 
Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1
 

Introdução Ruby

  • 1. Introdução ao Ruby 26~30/01/2009 @ senac Klaus Paiva www.klaus.pro.br
  • 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
  • 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. 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
  • 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. 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
  • 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. 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