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

Mais conteúdo relacionado

PDF
Jenkins, o CI ao seu dispor
PDF
Migrando de Shell para Ruby script
PDF
JPHPythonRails
PDF
Tá safo! De Belém - Do Pará - Do Brasil
PDF
Seja burro e preguiçoso! v2
PDF
Ruby no tucupi e Rails com farinha
PDF
Motivação
PDF
Bem antes de 2001
Jenkins, o CI ao seu dispor
Migrando de Shell para Ruby script
JPHPythonRails
Tá safo! De Belém - Do Pará - Do Brasil
Seja burro e preguiçoso! v2
Ruby no tucupi e Rails com farinha
Motivação
Bem antes de 2001

Destaque (8)

PDF
A era (pra ser) do conhecimento
PDF
Empreendendo com Software Livre
PDF
Ruby e Rails
PDF
Mais humano que exato
PDF
Seja burro e preguiçoso. A criação do synccode
PDF
comunidade aberta
PDF
Tá safo em ação
PDF
Tá safo em ação refatorada
A era (pra ser) do conhecimento
Empreendendo com Software Livre
Ruby e Rails
Mais humano que exato
Seja burro e preguiçoso. A criação do synccode
comunidade aberta
Tá safo em ação
Tá safo em ação refatorada
Anúncio

Mais de s4nx (19)

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

Último (12)

PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Utilizando code blockes por andre backes
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PDF
Jira Software projetos completos com scrum
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPT
Conceitos básicos de Redes Neurais Artificiais
PPTX
Analise Estatica de Compiladores para criar uma nova LP
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PDF
Processos no SAP Extended Warehouse Management, EWM100 Col26
PPTX
Tipos de servidor em redes de computador.pptx
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
Manejo integrado de pragas na cultura do algodão
Utilizando code blockes por andre backes
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Jira Software projetos completos com scrum
Viasol Energia Solar -Soluções para geração e economia de energia
Conceitos básicos de Redes Neurais Artificiais
Analise Estatica de Compiladores para criar uma nova LP
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Processos no SAP Extended Warehouse Management, EWM100 Col26
Tipos de servidor em redes de computador.pptx
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Aula 9 - Funções em Python (Introdução à Ciência da Computação)

Ruby - praticamente falando