SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
Ruby – praticamente falandoRuby – praticamente falando
http://www.flickr.com/photos/afternoon_sunlight/135751440http://www.flickr.com/photos/afternoon_sunlight/135751440
Quem eu souQuem eu sou
quem = {
:nome => 'Luiz Sanches',
:link => 'about.me/luizsanches'
}
puts 'Apenas mais um #tasafoemacao'
http://www.flickr.com/photos/brunodaher/4491575723http://www.flickr.com/photos/brunodaher/4491575723
Mais uma parceria!Mais uma parceria!
Rubi: AmbiguidadesRubi: Ambiguidades
http://portaldatvaudiencia.files.wordpress.com/2010/01/rubis.jpghttp://portaldatvaudiencia.files.wordpress.com/2010/01/rubis.jpg
NovelaNovela
http://s0.flogao.com.br/s60/15/05/07/155/103805997.jpghttp://s0.flogao.com.br/s60/15/05/07/155/103805997.jpg
Aparelhagem de somAparelhagem de som
Pedra preciosa vermelhaPedra preciosa vermelha
http://www.gemsoul.com/images/articles/madagascar-ruby.jpg
LinguagemLinguagem
http://www.flickr.com/photos/shawnecono/149172094http://www.flickr.com/photos/shawnecono/149172094
É qualquer e todo sistema de signos que serve de meio de
comunicação de ideias ou sentimentos.
Fonte: http://pt.wikipedia.org
Usamos a linguagem paraUsamos a linguagem para
http://www.flickr.com/photos/grafayiti/4767764752http://www.flickr.com/photos/grafayiti/4767764752
ComunicarComunicar
http://www.flickr.com/photos/edwardjohnphotography/2522734815http://www.flickr.com/photos/edwardjohnphotography/2522734815
SentirSentir
http://www.flickr.com/photos/ahmadhakym/2459867386http://www.flickr.com/photos/ahmadhakym/2459867386
EnvolverEnvolver
http://www.flickr.com/photos/nunoduarte/2801870408http://www.flickr.com/photos/nunoduarte/2801870408
CriarCriar
http://www.flickr.com/photos/ochblog/379675238
ConectarConectar
http://www.flickr.com/photos/theboywholaughs/3219937865
ExpressarExpressar
http://www.flickr.com/photos/cubagallery/4361297705http://www.flickr.com/photos/cubagallery/4361297705
Enfim, viver!Enfim, viver!
http://www.flickr.com/photos/thinkoutsidethebox2008/5113401458
A linguagem RubyA linguagem Ruby
http://www.ubuntu-sp.org/wp-content/uploads/2011/04/ruby.png
foi_inspirada_em = [
'Python',
'Perl',
'Smalltalk',
'Eiffel',
'Ada',
'Lisp'
]
Quando? Onde? Quem? Por quê?Quando? Onde? Quem? Por quê?
Em 1995, no Japão, Yukihiro
"Matz" Matsumoto queria
uma linguagem de script
poderosa, totalmente
orientada a objetos e a
pessoas.
Ruby era a pedra zodiacal
de um amigo de Matz.
http://www.hephesto.com/agrega/wp-content/uploads/2008/11/yukihiro_matsumoto.jpg
Bem depois, um framework web a colocou nos trilhosBem depois, um framework web a colocou nos trilhos
http://www.flickr.com/photos/shahrashoob/2036409933http://www.flickr.com/photos/shahrashoob/2036409933
Seus tipos de dados são:Seus tipos de dados são:
1.class # Fixnum
10000000000.class # Bignum
1.0.class # Float
"palavra".class # String
:nome.class # Symbol
(1..10).class # Range
[1, 'dois'].class # Array
traduz = {'um' => 'one', 'dois' => 'two'}.class # Hash
/expressao/.class # Regexp
true.class # TrueClass
false.class # FalseClass
nil.class # NilClass
http://www.flickr.com/photos/shockcr/3753474120
Mas no final, TUDO éMas no final, TUDO é
self.class # Object
1.class # Fixnum
1.class.superclass # Integer
1.class.superclass.superclass # Numeric
1.class.superclass.superclass.superclass # Object
http://www.flickr.com/photos/58782395@N03/5518992555
VariáveisVariáveis
http://www.flickr.com/photos/beijos/2556560841
sou_local = 'meu escopo é local'
@sou_de_instancia = 'sirvo ao objeto instanciado'
@@tenho_classe = 'sirvo a minha classe'
Constante = 'devo ser constante, mas aviso se mudar'
$sou_global = 'sou globalizada e indesejada'
NumericsNumerics
http://www.flickr.com/photos/dazbergman/4934851809
sou_inteiro = 101
tambem_sou_inteiro = -453
sou_big_inteiro = 2000000000
tambem_sou_um_big_inteiro = 2_000_000_000
sou_float = 1.25
continuo_sendo_float = 2_000_000_000.45
StringsStrings
http://www.flickr.com/photos/claddaghofrome/175351981http://www.flickr.com/photos/claddaghofrome/175351981
'Quero saber quem fez essa bagunça?'
suspeito = 'Apolônio'
'Será que foi o ' + suspeito + '?'
'Mas o ' << suspeito << ' não é disso.'
“Tudo indica ter sido mesmo o #{suspeito}.”
'culpado! ' * 3
<<CONDENACAO
Se o #{suspeito} for condenado, sofrerá as consequências
e passará um ano sem hamburguer e batata frita.
CONDENACAO
SymbolsSymbols
http://www.flickr.com/photos/catandkitty/2644303771http://www.flickr.com/photos/catandkitty/2644303771
simbolo_nao_e = [ 'string', CONSTANTE = 0, variavel = nil ]
:simbolo_e_um_identificador_que_representa_ele_mesmo
Nome = “nome” # constante
nome = “nome” # variável
:nome # símbolo
# strings são mutáveis, assim como floats. Exemplo:
'nome'.object_id # -606174638
'nome'.object_id # -606183698
# symbols são únicos, assim como inteiros. Exemplo:
:nome.object_id # 166898
:nome.object_id # 166898
ColeçõesColeções
http://www.flickr.com/photos/jamessharpe/5158660756http://www.flickr.com/photos/jamessharpe/5158660756
arrayarray = [ 1, 'dois', 3, 'quatro' ]
array[1]
# adiciono elementos
feira = [ ]
feira.push 'arroz'
feira.push 'feijão'
feira << 'morango'
feira
# retiro o último elemento
feira.pop
feira
# retiro o primeiro elemento
feira.shift
feira
hashhash = { 1 => 'um', 2 => 'dois' }
hash[1]
cidades = {
'Belém' => 'PA',
'Recife' => 'PE'
}
cidades[ 'Belém' ]
RegexpRegexp
http://www.flickr.com/photos/otrojubilo/2226079728
# (=~) corresponde e (!~) não-corresponde
er = /^[0-9]/
'123' =~ er # 0
'123' !~ er # false
'abc' =~ er # nil
'abc' !~ er # true
comida = %w(açaí vatapá maniçoba feijoada tacacá)
comida.grep(/a$/) # maniçoba feijoada
SeSe
http://www.flickr.com/photos/golbenge/5400710724
n1, n2 = 5, 10
if n1 > n2
puts "#{n1} é maior que #{n2}"
elsif n2 > n1
puts "#{n2} é maior que #{n1}"
else
puts 'Os números são iguais'
end
unless n1 > n2 # senão
puts "#{n2} é maior que #{n1}"
end
puts "#{n1} é " + (n1 % 2 == 0 ? 'par' : 'ímpar')
puts “só imprimo se a condição for verdadeira” if n1 > n2
CasoCaso
http://www.flickr.com/photos/golbenge/5400710724
menu = :saldo
case menu
when :promocoes
puts 'nossas promoções'
when :creditos
puts 'inserir créditos'
when :saldo
puts 'consultar saldo'
else
puts 'ouça mais música'
end
ForFor
http://www.flickr.com/photos/pelegrino/3957449915http://www.flickr.com/photos/pelegrino/3957449915
for r in (1..5)
puts r
end
for a in ('a'..'f')
puts a
end
1.upto(5) do |u|
puts u
end
5.downto(1) { |d| puts d }
3.times { puts 'Tá safo!' }
FaçaFaça
http://www.flickr.com/photos/pelegrino/3957449915http://www.flickr.com/photos/pelegrino/3957449915
w = 1
while w < 5 # enquanto
puts w
w += 1 # em Ruby não tem ++ nem --
end
Blocos e IteradoresBlocos e Iteradores
http://www.flickr.com/photos/lassochist/4013140613http://www.flickr.com/photos/lassochist/4013140613
compras = [ 'arroz', 'feijão', 'açúcar' ]
compras.each do |item|
puts item
end
compras.each { |item| puts item }
documentos = { :rg=>'86474837', :cpf=>'3653364645' }
documentos.each {|chave, valor| puts "#{chave} = #{valor}"}
MétodosMétodos
def grita
puts 'TO GRITANDO!'
end
grita
def soma(n1, n2)
n1 + n2
end
soma(5, 6)
soma 7, 3
http://www.flickr.com/photos/olhardefotografas/3006021111http://www.flickr.com/photos/olhardefotografas/3006021111
def executo_bloco(n)
yield(n)
end
executo_bloco(4) {|i| i * i}
executo_bloco(4) {|i| i + i}
nome = 'Marta'
# (?) predicados
nome.include? 'M'
nome.include? 'f'
# (!) destrutivos
nome.upcase, nome
nome.upcase!, nome
Classes e herançaClasses e herança
http://www.flickr.com/photos/doobious/51242759
class Pessoa
def initialize(nome) # construtor
@nome = nome # de instância
end
def nome # get
@nome
end
def nome=(novo_nome) # set
@nome = novo_nome
end
end
class Homem < Pessoa
def initialize(nome)
super(nome)
end
end
# instanciando um objeto
fulano = Homem.new('Ambrósio')
fulano.nome
fulano.nome = 'Vanderlucio'
fulano.nome
Tipagem dinâmica e forteTipagem dinâmica e forte
http://www.flickr.com/photos/mermaid/78134957http://www.flickr.com/photos/mermaid/78134957
# posso ser o que eu quiser
variavel = 'sou uma string'
variavel = 10
# mas não posso abusar
valor1 = 100
valor2 = '200'
# soma = valor1 + valor2 # erro na certa!
soma = valor1 + valor2.to_i # agora funfa!
junta = valor1.to_s + valor2 # também funfa!
Açúcar Sintático (Legibilidade)Açúcar Sintático (Legibilidade)
http://www.flickr.com/photos/ronaldpeixoto/5203811885http://www.flickr.com/photos/ronaldpeixoto/5203811885
# quando você faz
calculo = 2 + 3
apelido = 'Farol'
class Mulher
attr_writer :nome
end
fulana = Mulher.new
fulana.nome = 'Ana'
# Ruby está fazendo
calculo = 2.+(3)
apelido = String.new('Farol')
class Mulher
def nome=(nome)
@nome=nome
end
end
fulana = Mulher.new
fulana.nome=('Ana')
ExceçõesExceções
http://www.flickr.com/photos/32627348@N06/3633209399http://www.flickr.com/photos/32627348@N06/3633209399
valor1 = 1
valor2 = '2'
begin
puts valor1 + valor2
rescue TypeError => motivo
puts "Deu bronca! TyperError: #{motivo}"
ensure
puts "De qualquer forma, tô por aqui"
end
irb (Ruby interativo)irb (Ruby interativo)
irb(main):001:0> numero = 10
=> 10
irb(main):002:0> if numero % 2 == 0
irb(main):003:1> puts 'par'
irb(main):004:1> else
irb(main):005:1* puts 'impar'
irb(main):006:1> end
par
=> nil
http://www.flickr.com/photos/webloes/468463423http://www.flickr.com/photos/webloes/468463423
Gema: AmbiguidadesGema: Ambiguidades
Botão ou gomoBotão ou gomo
http://www.flickr.com/photos/eduardo_cabral/4541045230
Parte de um ovoParte de um ovo
http://www.flickr.com/photos/chrismferreira/3010064235
Município da EspanhaMunicípio da Espanha
http://www.panoramio.com/photo/39548016
Mineral utilizado em joalheriaMineral utilizado em joalheria
http://www.flickr.com/photos/raymond_li/3844312974http://www.flickr.com/photos/raymond_li/3844312974
RubyGemsRubyGems
- Gerenciador de pacotes (programas e bibliotecas) do Ruby
- Pacote = Gema
- Gerencia dependências (similar ao apt-get do Debian)
- Fonte padrão das gemas: http://rubygems.org
Exemplos:
gem install rails
gem install mongoid
gem list
gem uninstall dbi
http://marcgrabanski.com/img/rubygems.png
ReferênciasReferências
> Aprenda a programar (Chris Pine)
aprendaaprogramar.rubyonrails.pro.br
> Tutorial de Ruby (Eustáquio "TaQ" Rangel)
eustaquiorangel.com/downloads
> O (comovente) guia de Ruby do Why
why.nomedojogo.com
> The Book Of Ruby (Huw Collingbourne)
sapphiresteel.com/The-Book-Of-Ruby
http://www.flickr.com/photos/estopa/176637167http://www.flickr.com/photos/estopa/176637167
VisiteVisite
> Site oficial com versão em português (de Portugal)
ruby-lang.org/pt
> Ruby Brasil
ruby-br.org
> GURU-PA
guru-pa.blogspot.com
http://www.flickr.com/photos/a7design1/3961877456http://www.flickr.com/photos/a7design1/3961877456
Obrigado!Obrigado!
http://www.flickr.com/photos/bu7amd/3444535642http://www.flickr.com/photos/bu7amd/3444535642
> slideshare.net/luizsanches/ruby-praticamente-falando
> github.com/luizsanches/ruby-praticamente-falando
“A felicidade está na simplicidade.”
#tasafoemacao

Más contenido relacionado

Andere mochten auch

A era (pra ser) do conhecimento
A era (pra ser) do conhecimentoA era (pra ser) do conhecimento
A era (pra ser) do conhecimentos4nx
 
Empreendendo com Software Livre
Empreendendo com Software LivreEmpreendendo com Software Livre
Empreendendo com Software Livres4nx
 
Ruby e Rails
Ruby e RailsRuby e Rails
Ruby e Railss4nx
 
Mais humano que exato
Mais humano que exatoMais humano que exato
Mais humano que exatos4nx
 
Seja burro e preguiçoso. A criação do synccode
Seja burro e preguiçoso. A criação do synccodeSeja burro e preguiçoso. A criação do synccode
Seja burro e preguiçoso. A criação do synccodes4nx
 
Tá safo em ação
Tá safo em açãoTá safo em ação
Tá safo em açãos4nx
 
Tá safo em ação refatorada
Tá safo em ação refatoradaTá safo em ação refatorada
Tá safo em ação refatoradas4nx
 

Andere mochten auch (8)

A era (pra ser) do conhecimento
A era (pra ser) do conhecimentoA era (pra ser) do conhecimento
A era (pra ser) do conhecimento
 
Empreendendo com Software Livre
Empreendendo com Software LivreEmpreendendo com Software Livre
Empreendendo com Software Livre
 
Ruby e Rails
Ruby e RailsRuby e Rails
Ruby e Rails
 
Mais humano que exato
Mais humano que exatoMais humano que exato
Mais humano que exato
 
Seja burro e preguiçoso. A criação do synccode
Seja burro e preguiçoso. A criação do synccodeSeja burro e preguiçoso. A criação do synccode
Seja burro e preguiçoso. A criação do synccode
 
comunidade aberta
comunidade abertacomunidade aberta
comunidade aberta
 
Tá safo em ação
Tá safo em açãoTá safo em ação
Tá safo em ação
 
Tá safo em ação refatorada
Tá safo em ação refatoradaTá safo em ação refatorada
Tá safo em ação refatorada
 

Mehr von s4nx

Pra não dizer que não falei de devops
Pra não dizer que não falei de devopsPra não dizer que não falei de devops
Pra não dizer que não falei de devopss4nx
 
Além das big techs
Além das big techsAlém das big techs
Além das big techss4nx
 
Alem do google
Alem do googleAlem do google
Alem do googles4nx
 
Trabalhe de onde você quiser
Trabalhe de onde você quiserTrabalhe de onde você quiser
Trabalhe de onde você quisers4nx
 
Manifeste-se!
Manifeste-se!Manifeste-se!
Manifeste-se!s4nx
 
Uma análise sobre gestão de pessoas baseada nos métodos ágeis
Uma análise sobre gestão de pessoas baseada nos métodos ágeisUma análise sobre gestão de pessoas baseada nos métodos ágeis
Uma análise sobre gestão de pessoas baseada nos métodos ágeiss4nx
 
Aplicação das abordagens Scrum e XP
Aplicação das abordagens Scrum e XPAplicação das abordagens Scrum e XP
Aplicação das abordagens Scrum e XPs4nx
 
Entregando software com DevOps Tools
Entregando software com DevOps ToolsEntregando software com DevOps Tools
Entregando software com DevOps Toolss4nx
 
Explicando DevOps
Explicando DevOpsExplicando DevOps
Explicando DevOpss4nx
 
Técnicas e ferramentas para manter a sanidade em uma startup
Técnicas e ferramentas para manter a sanidade em uma startupTécnicas e ferramentas para manter a sanidade em uma startup
Técnicas e ferramentas para manter a sanidade em uma startups4nx
 
Como manter um Ambiente Sustentável em Times Ágeis
Como manter um Ambiente Sustentável em Times ÁgeisComo manter um Ambiente Sustentável em Times Ágeis
Como manter um Ambiente Sustentável em Times Ágeiss4nx
 
Sistemas Operacionais *nix
Sistemas Operacionais *nixSistemas Operacionais *nix
Sistemas Operacionais *nixs4nx
 
Desenvolvimento de produtos web com ruby on rails
Desenvolvimento de produtos web com ruby on railsDesenvolvimento de produtos web com ruby on rails
Desenvolvimento de produtos web com ruby on railss4nx
 
A linguagem Ruby e o framework Rails
A linguagem Ruby e o framework RailsA linguagem Ruby e o framework Rails
A linguagem Ruby e o framework Railss4nx
 
Compartilhe!
Compartilhe!Compartilhe!
Compartilhe!s4nx
 
Ruby and Rails for womens
Ruby and Rails for womensRuby and Rails for womens
Ruby and Rails for womenss4nx
 
aGITe antes de versionar
aGITe antes de versionaraGITe antes de versionar
aGITe antes de versionars4nx
 
Tá safo! de-belem-do-para-do-brasil++
Tá safo! de-belem-do-para-do-brasil++Tá safo! de-belem-do-para-do-brasil++
Tá safo! de-belem-do-para-do-brasil++s4nx
 
Software Livre: ser, pensar e agir
Software Livre: ser, pensar e agirSoftware Livre: ser, pensar e agir
Software Livre: ser, pensar e agirs4nx
 

Mehr von s4nx (19)

Pra não dizer que não falei de devops
Pra não dizer que não falei de devopsPra não dizer que não falei de devops
Pra não dizer que não falei de devops
 
Além das big techs
Além das big techsAlém das big techs
Além das big techs
 
Alem do google
Alem do googleAlem do google
Alem do google
 
Trabalhe de onde você quiser
Trabalhe de onde você quiserTrabalhe de onde você quiser
Trabalhe de onde você quiser
 
Manifeste-se!
Manifeste-se!Manifeste-se!
Manifeste-se!
 
Uma análise sobre gestão de pessoas baseada nos métodos ágeis
Uma análise sobre gestão de pessoas baseada nos métodos ágeisUma análise sobre gestão de pessoas baseada nos métodos ágeis
Uma análise sobre gestão de pessoas baseada nos métodos ágeis
 
Aplicação das abordagens Scrum e XP
Aplicação das abordagens Scrum e XPAplicação das abordagens Scrum e XP
Aplicação das abordagens Scrum e XP
 
Entregando software com DevOps Tools
Entregando software com DevOps ToolsEntregando software com DevOps Tools
Entregando software com DevOps Tools
 
Explicando DevOps
Explicando DevOpsExplicando DevOps
Explicando DevOps
 
Técnicas e ferramentas para manter a sanidade em uma startup
Técnicas e ferramentas para manter a sanidade em uma startupTécnicas e ferramentas para manter a sanidade em uma startup
Técnicas e ferramentas para manter a sanidade em uma startup
 
Como manter um Ambiente Sustentável em Times Ágeis
Como manter um Ambiente Sustentável em Times ÁgeisComo manter um Ambiente Sustentável em Times Ágeis
Como manter um Ambiente Sustentável em Times Ágeis
 
Sistemas Operacionais *nix
Sistemas Operacionais *nixSistemas Operacionais *nix
Sistemas Operacionais *nix
 
Desenvolvimento de produtos web com ruby on rails
Desenvolvimento de produtos web com ruby on railsDesenvolvimento de produtos web com ruby on rails
Desenvolvimento de produtos web com ruby on rails
 
A linguagem Ruby e o framework Rails
A linguagem Ruby e o framework RailsA linguagem Ruby e o framework Rails
A linguagem Ruby e o framework Rails
 
Compartilhe!
Compartilhe!Compartilhe!
Compartilhe!
 
Ruby and Rails for womens
Ruby and Rails for womensRuby and Rails for womens
Ruby and Rails for womens
 
aGITe antes de versionar
aGITe antes de versionaraGITe antes de versionar
aGITe antes de versionar
 
Tá safo! de-belem-do-para-do-brasil++
Tá safo! de-belem-do-para-do-brasil++Tá safo! de-belem-do-para-do-brasil++
Tá safo! de-belem-do-para-do-brasil++
 
Software Livre: ser, pensar e agir
Software Livre: ser, pensar e agirSoftware Livre: ser, pensar e agir
Software Livre: ser, pensar e agir
 

Ruby - praticamente falando