Apresentação Ruby no Dojo da UFBA

722 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
722
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
9
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no 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]+/ "12345" =~/[a-z]/ "12a345" =~/[a-z]/
  • arr = [] arr = Array.new arr = %w{a b c}
  • h1 = {1 => “Luciano”, “b” => 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

    ×