Your SlideShare is downloading. ×
Introducao ao Ruby
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introducao ao Ruby

1,273
views

Published on

Material de apoio do curso de verão sobre Ruby on Rails. …

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.

Published in: Technology

1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total Views
1,273
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
58
Comments
1
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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

×