Ruby
             Saulo Arruda




28/01/2012
Olá!

• @sauloarruda
 • Fundador e desenvolvedor da Jera
 • 12 anos de código
 • 2 filhas
 • Ruby, Objective-C, Java, JavaScript
Ruby é...
   Uma linguagem dinâmica,
   open source com foco na
simplicidade e na produtividade.
  Tem uma sintaxe elegante
de leitura natural e fácil escrita.




                           http://www.ruby-lang.org/pt/
Mas antes...
Coding Dojo
Regras

• Desenvolvimento guiado por testes
• “Passos de bebê”
• Pair Programming
• Todos devem entender
• Três fases: RED, GREEN, Refactor
                      http://pet.inf.ufsc.br/dojo/o-que-eh-dojo/
Ruby Interativo - irb
irb(main):001:0>
irb(main):001:0> 3+2
=> 5
irb(main):002:0> 3.0+2.0
=> 5.0
irb(main):003:0> 5 * (12-8) + -15
=> 5
irb(main):004:0> 98 + (59872/(13*8)) * -52
=> -29802
                      http://www.ruby-lang.org/pt/documentacao/quickstart
         http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=01
Do it yourself

• Quantas horas há em um ano?
• Quantos minutos há em uma década?
• Qual sua idade em segundos?
• Se minha idade é 1119 milhões de
  segundos, qual é minha idade em anos?

        http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=01
Letras
irb(main):001:0> "Ola Mundo"
=> "Ola Mundo"
irb(main):002:0> puts 'Ola Mundo'
Ola Mundo
=> nil
irb(main):003:0> puts "Eu gosto de " +
"torta de maçã."
"Eu gosto de torta de maçã."
irb(main):004:0> "2" * 3
"222"
         http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=02
Variáveis
irb(main):001:0> nome = "Saulo"
=> "Saulo"
irb(main):002:0> puts "Ola " + nome
Ola Saulo
=> nil
irb(main):003:0> eu = "eu"; vc = eu
"eu"
irb(main):004:0> eu = "Saulo"; puts vc
"eu"
=> nil
         http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=03
Tudo junto agora
irb(main):001:0> var1 = 2; var2 = "5"; puts
var1.to_s * var2.to_i
"22222"
=> nil

irb(main):002:0> puts "Qual seu nome?";
nome = gets.chomp
Qual seu nome?
_
=> "Saulo"
         http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=04
Sua vez

• Escreva um programa que peça o nome de
  uma pessoa, depois o sobrenome. Por fim,
  faça com que ele cumprimente a pessoa
  usando seu nome completo.



        http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=04
Sua vez (o retorno)

• Escreva um programa que pergunte pelo
  número favorito de uma pessoa. Some um
  ao número, e sugira o resultado como um
  número favorito muito melhor (tenha tato
  ao fazê-lo).


        http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=04
Métodos
irb(main):001:0> p = "alas".reverse
"sala"
irb(main):002:0> p + " tem " + p.length + "
letras"
"sala tem 4 letras"
irb(main):003:0> rand(3)
(algo entre 0 e 3)
irb(main):004:0> Math.sqrt(9)
3.0
         http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=05
Controle de fluxo
if [condicao]
    comandos...
elsif [condicao]
    comandos...
else
    comandos...
end
while [condicao]
    comandos...
end
         http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=06
Agora vai!

• "Um elefante incomoda muita gente..."
  Escreva um programa que imprima a letra
  para o clássico das viagens de carro, com
  um limite de 100 elefantes.



         http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=04
Dificultando...
 Escreva um programa Velha Surda. O que quer que você diga
 à velha (o que quer que você digite), ela tem que responder com
 QUE?! FALA MAIS ALTO!, a não ser que você grite (digite tudo
 em maiúsculas). Se você gritar, ela pode lhe ouvir (ou ao menos
 pensa que pode), e sempre responde NÃO, NÃO DESDE 1938!
 Para fazer seu programa ser realmente verossímil, faça a velha
 gritar um número diferente a cada vez; talvez qualquer ano
 aleatório entre 1930 e 1950.Você não pode parar de falar com a
 velha enquanto não gritar TCHAU.
Dica: Não esqueça do chomp ! 'TCHAU' com um enter não é a mesma coisa que
'TCHAU' sem! Dica 2: "sim".upcase == "SIM". Dica 3:Tente pensar em que partes do
programa as coisas acontecem repetidamente.Todas elas devem estar no seu loop while.
                    http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=04
http://test-unit.rubyforge.org/
Exercícios


• Joquempô => Pedra, papel, tesoura
http://rubyonrails.org/
Retrospectiva
15 minutos

• O que aprendemos?
• O que gostamos?
• O que pode melhorar?
• Discussões ou comentários

Minicurso Ruby

  • 1.
    Ruby Saulo Arruda 28/01/2012
  • 2.
    Olá! • @sauloarruda •Fundador e desenvolvedor da Jera • 12 anos de código • 2 filhas • Ruby, Objective-C, Java, JavaScript
  • 3.
    Ruby é... Uma linguagem dinâmica, open source com foco na simplicidade e na produtividade. Tem uma sintaxe elegante de leitura natural e fácil escrita. http://www.ruby-lang.org/pt/
  • 4.
  • 5.
  • 6.
    Regras • Desenvolvimento guiadopor testes • “Passos de bebê” • Pair Programming • Todos devem entender • Três fases: RED, GREEN, Refactor http://pet.inf.ufsc.br/dojo/o-que-eh-dojo/
  • 7.
    Ruby Interativo -irb irb(main):001:0> irb(main):001:0> 3+2 => 5 irb(main):002:0> 3.0+2.0 => 5.0 irb(main):003:0> 5 * (12-8) + -15 => 5 irb(main):004:0> 98 + (59872/(13*8)) * -52 => -29802 http://www.ruby-lang.org/pt/documentacao/quickstart http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=01
  • 8.
    Do it yourself •Quantas horas há em um ano? • Quantos minutos há em uma década? • Qual sua idade em segundos? • Se minha idade é 1119 milhões de segundos, qual é minha idade em anos? http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=01
  • 9.
    Letras irb(main):001:0> "Ola Mundo" =>"Ola Mundo" irb(main):002:0> puts 'Ola Mundo' Ola Mundo => nil irb(main):003:0> puts "Eu gosto de " + "torta de maçã." "Eu gosto de torta de maçã." irb(main):004:0> "2" * 3 "222" http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=02
  • 10.
    Variáveis irb(main):001:0> nome ="Saulo" => "Saulo" irb(main):002:0> puts "Ola " + nome Ola Saulo => nil irb(main):003:0> eu = "eu"; vc = eu "eu" irb(main):004:0> eu = "Saulo"; puts vc "eu" => nil http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=03
  • 11.
    Tudo junto agora irb(main):001:0>var1 = 2; var2 = "5"; puts var1.to_s * var2.to_i "22222" => nil irb(main):002:0> puts "Qual seu nome?"; nome = gets.chomp Qual seu nome? _ => "Saulo" http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=04
  • 12.
    Sua vez • Escrevaum programa que peça o nome de uma pessoa, depois o sobrenome. Por fim, faça com que ele cumprimente a pessoa usando seu nome completo. http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=04
  • 13.
    Sua vez (oretorno) • Escreva um programa que pergunte pelo número favorito de uma pessoa. Some um ao número, e sugira o resultado como um número favorito muito melhor (tenha tato ao fazê-lo). http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=04
  • 14.
    Métodos irb(main):001:0> p ="alas".reverse "sala" irb(main):002:0> p + " tem " + p.length + " letras" "sala tem 4 letras" irb(main):003:0> rand(3) (algo entre 0 e 3) irb(main):004:0> Math.sqrt(9) 3.0 http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=05
  • 15.
    Controle de fluxo if[condicao] comandos... elsif [condicao] comandos... else comandos... end while [condicao] comandos... end http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=06
  • 16.
    Agora vai! • "Umelefante incomoda muita gente..." Escreva um programa que imprima a letra para o clássico das viagens de carro, com um limite de 100 elefantes. http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=04
  • 17.
    Dificultando... Escreva umprograma Velha Surda. O que quer que você diga à velha (o que quer que você digite), ela tem que responder com QUE?! FALA MAIS ALTO!, a não ser que você grite (digite tudo em maiúsculas). Se você gritar, ela pode lhe ouvir (ou ao menos pensa que pode), e sempre responde NÃO, NÃO DESDE 1938! Para fazer seu programa ser realmente verossímil, faça a velha gritar um número diferente a cada vez; talvez qualquer ano aleatório entre 1930 e 1950.Você não pode parar de falar com a velha enquanto não gritar TCHAU. Dica: Não esqueça do chomp ! 'TCHAU' com um enter não é a mesma coisa que 'TCHAU' sem! Dica 2: "sim".upcase == "SIM". Dica 3:Tente pensar em que partes do programa as coisas acontecem repetidamente.Todas elas devem estar no seu loop while. http://aprendaaprogramar.rubyonrails.com.br/index.rb?Chapter=04
  • 18.
  • 19.
    Exercícios • Joquempô =>Pedra, papel, tesoura
  • 20.
  • 21.
  • 22.
    15 minutos • Oque aprendemos? • O que gostamos? • O que pode melhorar? • Discussões ou comentários