Introducao ao Ruby
-
Upload
klaus-paiva -
Category
Technology
-
view
1.291 -
download
0
description
Transcript of Introducao ao Ruby
26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br
Introdução ao Ruby
26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br
O que é Ruby?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 "matz" Matsumoto.Inspirada por suas linguagens favoritas:
Perl, Smalltalk, Eiffel, Ada e Lisp.
26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br
Ruby: CaracterísticasRuby: 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 Paivawww.klaus.pro.br
Ruby: CaracterísticasRuby: 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 Paivawww.klaus.pro.br
Exemplo de código RubyExemplo 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 Paivawww.klaus.pro.br
Estilos de programação e POOEstilos 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 Paivawww.klaus.pro.br
Testando seu RubyTestando seu Ruby
$ ruby -vruby 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 Paivawww.klaus.pro.br
Exemplo clássico: fatorialExemplo clássico: fatorial
fatorial.rbdef fatorial( n ) if n == 0 1 else n * fatorial( n – 1 ) endend# chamando a função criadafatorial(5)
26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br
StringsStrings
Funcionam de forma semelhante ao PHP.Strings entre " são processadas a procura de expressões.Strings entre ' não são processadas.
# exemplos:puts '1+1=#{1+1}'puts "1+1=#{1+1}"
26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br
ArraysArrays
lista = [ "verde", "amarelo", "azul", "branco" ]
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( "vermelho" )# ou que tal?lista.push "laranja"lista.pop
26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br
RangesRanges
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 Paivawww.klaus.pro.br
HashesHashes
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 Paivawww.klaus.pro.br
Hashes (exemplo)Hashes (exemplo)
# criando um hash novopopulacao = { 'argentina' => 40000000, 'brasil' => 190_000_000}
# acessandopopulacao['brasil']# removendopopulacao.delete 'argentina'
26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br
SímbolosSí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 Paivawww.klaus.pro.br
Hashes com símbolosHashes com símbolos
# criando um hash novo usando símbolospopulacao = { :argentina => 40000000, :brasil => 190_000_000}
# acessandopopulacao[:brasil]# removendopopulacao.delete :argentina
26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br
Strings x SímbolosStrings 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 Paivawww.klaus.pro.br
Métodos predicadosMétodos predicados
Métodos que, por convenção, retornam true ou false.
Podem ser facilmente identificadospela ? ao final do nome do método.
Exemplos:["um"].empty?"texto".is_a? String
26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br
Métodos destrutivosMétodos destrutivos
Por convenção são os métodos que modificam o objeto original, por isso "destroem" o objeto original.
Podem ser facilmente identificadospela ! ao final do nome do método.
26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br
Métodos destrutivos (exemplo)Métodos destrutivos (exemplo)
nome = " Chris "
# executa o método sem alterar o valor atualnome.stripputs nome
# executa o método e altera o objeto originalnome.strip! # versão destrutivaputs nome
26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br
IFIF
print 'Digite sua cidade natal: 'cidade = gets.chompif cidade == 'Itu' puts 'Ituano'# elsif, não else if, elif ou elseifelsif cidade == 'Salto' puts 'Saltense'else puts 'Brasileiro =)'end
26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br
CaseCase
print 'Digite sua idade: 'idade = gets.to_icase 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 Paivawww.klaus.pro.br
WhileWhile
i = 0while i < 10 puts i i += 1end
26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br
O jeito Ruby (parte I)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 itenslista = [ 'a','b','c','d','e' ]puts lista.pop while not lista.empty?
26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br
O jeito Ruby (parte II)O jeito Ruby (parte II)
i = 0while 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 += 1end
26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br
O jeito Ruby (parte III)O jeito Ruby (parte III)
i = 0while i < 10 puts i unless i % 2 == 0 # unless funciona como um if not i += 1end
26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br
forfor
# modo tradicionalfor i in (5..15) puts iend
# e uma "versão mais orientada a objetos"?(15..25).each do |numero| puts numero ** 0.5end
26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br
ReferênciasReferê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 Paivawww.klaus.pro.br
Fotos: CréditosFotos: Créditos
Slide 5: http://tinyurl.com/7ylxr8Slide 9: http://tinyurl.com/a2w9knSlide 17: http://tinyurl.com/8kj8x9Slide 18: http://tinyurl.com/8kmfo7Slide 24: http://tinyurl.com/a74mbaSlide 25: http://tinyurl.com/7zezngSlide 27: http://tinyurl.com/7kh8by