A Linguagem de Programação Ruby Luciano Borges [email_address] @lusabo Alex Chastinet [email_address] @alexchastinet
Matz 1993 DHH 2004
Por que o Ruby?
Dizem que é uma linguagem muito nova! <ul><li>Python 1991 </li></ul><ul><li>Ruby 1993/1995 </li></ul><ul><li>PHP 1994 </li...
Dizem que não tem bibliotecas! <ul><li>108 bibliotecas padrões  (falta confirmar!) </li></ul><ul><li>Ruby Application Arch...
Dizem que não tem suporte! <ul><li>Core 100% documentado </li></ul><ul><ul><li>http://www.ruby-doc.org/core/ </li></ul></u...
Dizem que ninguém usa Ruby! <ul><li>Simulações </li></ul><ul><ul><li>Nasa e Motorola </li></ul></ul><ul><li>Telefonia </li...
Sintaxe Limpa <ul><li>Não precisa de ; </li></ul><ul><li>Uso de () é opcional </li></ul>
Sintaxe Objetiva <ul><li>objeto.atributo =  </li></ul><ul><ul><li>método </li></ul></ul><ul><li>empty? e capitalize! </li>...
<ul><li>Declarações simples </li></ul><ul><ul><li>variavel_local </li></ul></ul><ul><ul><li>@variavel_de_instancia </li></...
<ul><li>Tudo é objeto </li></ul><ul><ul><li>Números </li></ul></ul><ul><ul><li>Ranges </li></ul></ul><ul><ul><li>Hashes </...
 
Herança
Metraprogramação <ul><li>Ruby permite adicionar outros métodos e operações aos objetos em tempo de execução. </li></ul><ul...
 
<ul><ul><li>Como se fosse uma string que sempre vai alocar o mesmo lugar na memória, não vai ficar mudando de lugar na mem...
Ranges
Ranges
<ul><ul><li>Forma mais fácil de extrair informações de um texto. </li></ul></ul><ul><ul><li>Instância da classe Regexp </l...
Expressões Regulares
<ul><ul><li>Coleções de valores. </li></ul></ul><ul><ul><li>Pode conter objetos de diversos tipos. </li></ul></ul>Arrays
<ul><ul><li>Estrutura de dados que mantém um grupo de objetos conhecidos como  keys  e associa um valor para cada key. </l...
<ul><ul><li>Utilizados para iterar em coleções, personalizar o comportamento de algum métodos etc. </li></ul></ul><ul><ul>...
 
Operadores condicionais <ul><ul><li>if / elsif / else / end </li></ul></ul>a=0 if a == 0 print “zero” elsif a == 1 print “...
Operadores condicionais <ul><ul><li>case / when / else / end </li></ul></ul>
Operadores de loop O operadores acima podem ser utilizados com qualquer dos loops. Operador Descrição break Sai do loop at...
Operadores de loop for i in 1..5 puts i end for a in %w{a b c d} puts a end
Operadores de loop i = %w{a b c d e f} while b = i.pop puts b end
Operadores de loop i = 5 until i = 0 puts i i -= 1 end
Operadores de loop i = 0 begin puts i i += 1 end while i < 0
Operadores de loop loop do puts “a” break if true end
Interpretadores Ruby <ul><li>YARV, evolução do MRI </li></ul><ul><li>JRuby – implementação em Java </li></ul><ul><li>IronR...
<ul><ul><li>A Linguagem de Programação Ruby </li></ul></ul><ul><ul><ul><li>David Flanagan e Yukihiro Matsumoto  </li></ul>...
Upcoming SlideShare
Loading in...5
×

Apresentação Ruby no Dojo da UFBA

523

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
523
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Ruby é uma “linguagem de scripts (interpretada) para uma programação orientada a objetos rápida e fácil”; O que significa isto?
  • No IRB re = /[a-z]+/ &amp;quot;12345&amp;quot; =~/[a-z]/ &amp;quot;12a345&amp;quot; =~/[a-z]/
  • arr = [] arr = Array.new arr = %w{a b c}
  • h1 = {1 =&gt; “Luciano”, “b” =&gt; 123} h[1] / h[“b”] h2 = Hash.new
  • arr = [1,2,3,4] arr.each { |val| print “#{val}\\n” } ------------ arr.each_with_index do |val, idx| print “Posição #{idx} valor #{val}\\n” End ------------ valor = 1 arr.each do |val| valor += val end valor -----------
  • b=5 if a!=1 b=6 unless b b=7 unless b O unless pode ser utilizado para definir o valor de uma variável apenas se ela ainda não tiver valor.
  • Utilize apenas quando for realmente necessário, pois o modo padrão do Ruby de iterar sobre coleções é empregando os métodos apropriados como o each.
  • %w{a b c d e f} – forma de declarar um array contendo apenas string.
  • É o contrário do while: ele repete o bloco de código até que a condição seja verdadeira.
  • Utilizado em conjunto com while ou until quando se deseja que o bloco seja executado pelo menos uma vez. Assim, a condição fica no final do bloco e não no início.
  • Será executado até que encontre um break ou return do bloco.
  • Apresentação Ruby no Dojo da UFBA

    1. 1. A Linguagem de Programação Ruby Luciano Borges [email_address] @lusabo Alex Chastinet [email_address] @alexchastinet
    2. 2. Matz 1993 DHH 2004
    3. 3. Por que o Ruby?
    4. 4. Dizem que é uma linguagem muito nova! <ul><li>Python 1991 </li></ul><ul><li>Ruby 1993/1995 </li></ul><ul><li>PHP 1994 </li></ul><ul><li>Java 1995 </li></ul>
    5. 5. Dizem que não tem bibliotecas! <ul><li>108 bibliotecas padrões (falta confirmar!) </li></ul><ul><li>Ruby Application Archive </li></ul><ul><ul><li>http://raa.ruby-lang.org/ </li></ul></ul><ul><ul><li>+ 1800 projetos </li></ul></ul><ul><li>RubyForge </li></ul><ul><ul><li>http://rubyforge.org/ </li></ul></ul><ul><ul><li>+ 9000 projetos </li></ul></ul><ul><li>RubyGems </li></ul><ul><ul><li>http://rubygems.org/ </li></ul></ul><ul><ul><li>+ 20000 gems </li></ul></ul>
    6. 6. Dizem que não tem suporte! <ul><li>Core 100% documentado </li></ul><ul><ul><li>http://www.ruby-doc.org/core/ </li></ul></ul><ul><ul><li>http://apidock.com/ </li></ul></ul><ul><li>Vários tutoriais e livros disponíveis </li></ul><ul><ul><li>http://aprendaaprogramar.rubyonrails.pro.br/ </li></ul></ul><ul><ul><li>http://why.nomedojogo.com/ </li></ul></ul><ul><li>Comunidade ativa </li></ul><ul><ul><li>http://softwarelivre.org/guru-ba </li></ul></ul><ul><ul><li>http://guru-sp.com/ </li></ul></ul><ul><ul><li>http://guruce.org/ </li></ul></ul><ul><ul><li>http://softwarelivre.org/profile/grupo-de-usuarios-de-ruby-on-rails-rs </li></ul></ul><ul><ul><li>… </li></ul></ul>
    7. 7. Dizem que ninguém usa Ruby! <ul><li>Simulações </li></ul><ul><ul><li>Nasa e Motorola </li></ul></ul><ul><li>Telefonia </li></ul><ul><ul><li>Lucent </li></ul></ul><ul><li>Administração de Sistemas </li></ul><ul><ul><li>Level3 </li></ul></ul><ul><li>Redes </li></ul><ul><ul><li>Open Domain Server </li></ul></ul><ul><li>Aplicações Web </li></ul><ul><ul><li>Aqui vem a lista do Rails :) </li></ul></ul>
    8. 8. Sintaxe Limpa <ul><li>Não precisa de ; </li></ul><ul><li>Uso de () é opcional </li></ul>
    9. 9. Sintaxe Objetiva <ul><li>objeto.atributo = </li></ul><ul><ul><li>método </li></ul></ul><ul><li>empty? e capitalize! </li></ul><ul><ul><li>métodos </li></ul></ul>
    10. 10. <ul><li>Declarações simples </li></ul><ul><ul><li>variavel_local </li></ul></ul><ul><ul><li>@variavel_de_instancia </li></ul></ul><ul><ul><li>@@variavel_de_classe </li></ul></ul><ul><ul><li>$variavel_global </li></ul></ul><ul><li>do … end ou {…} </li></ul><ul><li>Tratamento de exceção </li></ul><ul><ul><li>Similar ao Java </li></ul></ul><ul><li>Interpolação de String </li></ul>Sintaxe Flexível e Simples
    11. 11. <ul><li>Tudo é objeto </li></ul><ul><ul><li>Números </li></ul></ul><ul><ul><li>Ranges </li></ul></ul><ul><ul><li>Hashes </li></ul></ul><ul><ul><li>Classes </li></ul></ul><ul><ul><li>… </li></ul></ul>100% OO
    12. 13. Herança
    13. 14. Metraprogramação <ul><li>Ruby permite adicionar outros métodos e operações aos objetos em tempo de execução. </li></ul><ul><li>Meta-programação é a capacidade de gerar/alterar código em tempo de execução. </li></ul>
    14. 16. <ul><ul><li>Como se fosse uma string que sempre vai alocar o mesmo lugar na memória, não vai ficar mudando de lugar na memória. </li></ul></ul><ul><ul><li>Forma de guardar nomes performaticamente sem consumir memória desnecessariamente. </li></ul></ul><ul><ul><li>Use o sinal de : antes dos nomes dos símbolos. </li></ul></ul>Símbolos
    15. 17. Ranges
    16. 18. Ranges
    17. 19. <ul><ul><li>Forma mais fácil de extrair informações de um texto. </li></ul></ul><ul><ul><li>Instância da classe Regexp </li></ul></ul><ul><ul><li>http://rubular.com </li></ul></ul>Expressões Regulares Método Descrição =~ Procura pela expressão regular no texto e retorna o índice em que ela foi encontrada. !~ Informa se existe uma ocorrência da expressão regular no texto. match Retorna um objeto do tipo MatchData, que contém ponteiros para os locais onde cada grupo da expressão regular foi encontrado.
    18. 20. Expressões Regulares
    19. 21. <ul><ul><li>Coleções de valores. </li></ul></ul><ul><ul><li>Pode conter objetos de diversos tipos. </li></ul></ul>Arrays
    20. 22. <ul><ul><li>Estrutura de dados que mantém um grupo de objetos conhecidos como keys e associa um valor para cada key. </li></ul></ul>Hashes
    21. 23. <ul><ul><li>Utilizados para iterar em coleções, personalizar o comportamento de algum métodos etc. </li></ul></ul><ul><ul><li>Existem duas sintaxes diferente para definir um bloco. </li></ul></ul><ul><ul><ul><li>Utilizando o símbolo { e } ou utilizando as palavras-chave do e end. </li></ul></ul></ul><ul><ul><li>Podem receber parâmetros. </li></ul></ul><ul><ul><ul><li>O símbolo | (pipe) é utilizado para demarcar o início e o fim da lista de parâmetros. </li></ul></ul></ul>Blocos de Código
    22. 25. Operadores condicionais <ul><ul><li>if / elsif / else / end </li></ul></ul>a=0 if a == 0 print “zero” elsif a == 1 print “um” else print “não sei” end unless a == 0 print “não é zero” else print “a é zero” end <ul><ul><li>unless </li></ul></ul>
    23. 26. Operadores condicionais <ul><ul><li>case / when / else / end </li></ul></ul>
    24. 27. Operadores de loop O operadores acima podem ser utilizados com qualquer dos loops. Operador Descrição break Sai do loop atual next Executa o próximo passo do loop return Sai do loop e do método atual redo Reinicia o loop atual
    25. 28. Operadores de loop for i in 1..5 puts i end for a in %w{a b c d} puts a end
    26. 29. Operadores de loop i = %w{a b c d e f} while b = i.pop puts b end
    27. 30. Operadores de loop i = 5 until i = 0 puts i i -= 1 end
    28. 31. Operadores de loop i = 0 begin puts i i += 1 end while i < 0
    29. 32. Operadores de loop loop do puts “a” break if true end
    30. 33. Interpretadores Ruby <ul><li>YARV, evolução do MRI </li></ul><ul><li>JRuby – implementação em Java </li></ul><ul><li>IronRuby – Microsoft </li></ul><ul><li>Rubinius – implementação em Ruby </li></ul><ul><li>REE – Ruby Enterprise Edition / Phusion </li></ul>
    31. 34. <ul><ul><li>A Linguagem de Programação Ruby </li></ul></ul><ul><ul><ul><li>David Flanagan e Yukihiro Matsumoto </li></ul></ul></ul><ul><ul><li>Desenvolvimento Fácil e Rápido de Aplicações Web: Ruby on Rails </li></ul></ul><ul><ul><ul><li>Rodrigo Urubatan </li></ul></ul></ul><ul><ul><li>Google </li></ul></ul><ul><ul><li>Slideshare </li></ul></ul>Referências
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×