Ruby - Criando código para máquinas e humanos
Upcoming SlideShare
Loading in...5
×
 

Ruby - Criando código para máquinas e humanos

on

  • 677 views

Introdução a linguagem de programação Ruby, onde tópicos como...

Introdução a linguagem de programação Ruby, onde tópicos como
história, comunidade, e diferenciais da linguagem serão abordados.
Será dada uma ênfase na simplicidade e produtividade do código em si,
além de alguns exemplos utilizados no dia-a-dia.

Apresentado em 07/11/2011, na Hora da Tecnologia, na Universidade Feevale.
http://www.feevale.br/internas/vwImprensaVisualizar.asp?strInd=via6&intIdSecao=2578&intIdConteudo=49091&dteDataPublicacao=2011/11/05

Statistics

Views

Total Views
677
Views on SlideShare
673
Embed Views
4

Actions

Likes
0
Downloads
8
Comments
0

2 Embeds 4

http://www.linkedin.com 3
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Ruby - Criando código para máquinas e humanos Presentation Transcript

  • 1. Ruby
  • 2. RubyCriando código para máquinas e humanos. Gregório Chalinski Kusowski Ciência da Computação - Feevale
  • 3. “Matz”Yukihiro "Matz" Matsumoto @yukihiro_matz
  • 4. História Ruby - 1993Ruby Alpha - 1994 Ruby 1.0 - 1996 Rails - 2004 Rails 1.0 - 2005 Rails 2.0 - 2007 Rails 3.0 - 2010
  • 5. Variáveis a # escopo @a # instância $a # global @@a # classea = 1@a, $a, @@a = 2, 3, 4a # => 1@a # => 2$a # => 3@@a # => 4
  • 6. Métodos Declaraçãodef rua= (rua) @rua = ruaenddef numero= (numero) @numero = numeroenddef endereco return "#{@rua}, #{@numero}"end
  • 7. Métodos Utilizaçãorua=("Rua 5 de Abril")numero=(321)endereco() # => Rua 5 de Abril, 321 10.*(5) # => 50
  • 8. Estruturas de Controleif valor < 7 return "Reprovado" unless pessoas.empty?else puts pessoas.size return "Aprovado" endendreturn valor < 7 ? "Reprovado" : "Aprovado" puts pessoas.size unless pessoas.empty?
  • 9. Estruturas de Controledef resultado(nota) case nota when (0..3); "Reprovado" when (3..7); "Recuperação" when (7..10); "Aprovado" else raise "Nota inválida" endend
  • 10. Estruturas de Controle for numero in (1..3) puts numero end (1..3).each do |numero| puts numero end
  • 11. Classesclass Jogo def self.atual # classe # ... end def finalizar # instância # ... endend
  • 12. Módulos module Time class Jogador end endmodule Calculadora def media_aritmetica(valores = []) if valores.size > 0 valores.sum / valores.size end endend
  • 13. Orientação a objetosEm Ruby, não existem tipos primitivos. Qualquer coisa é um objeto: 5.+(2) # => 7 Qualquer coisa mesmo! foo = true foo.nil? # => false bar = nil bar.nil? # => true
  • 14. Flexibilidade A linguagem não limita o programador.Você pode adicionar funcionalidade, ou alterar o que já existe! class String def carioqueish "#{self}sh" end end "Oi".carioqueish # => "Oish"
  • 15. Paradigma Funcional Por in!uência da linguagem Lisp, Ruby conta comestruturas de blocos, que funcionam como closures. a = lambda { "Sem Argumento" } b = Proc.new do |args| puts "Chamou b com: #{args}" end b.call("Argumento") # => "Chamou b com: Argumento"
  • 16. Alguns tipos de dados Stringsv= 1"V: #{v}" # => "V: 1"V: #{v} # => "V: #{v}"%(Teste de String) # => "Teste de String"%w(Teste de String) # => ["Teste", "de", "String"]r = <<KEYWORDLorem ipsum dolor sit amet,consectetur adipisicing elitKEYWORD
  • 17. Alguns tipos de dados Arrays a = Array.new b = [3] a << 1 a.push 2 a # => [1, 2] a + b # => [1, 2, 3] a.inject(:+) # => 3
  • 18. Alguns tipos de dados Arraystelefones = pessoas.collect do |pessoa| pessoa.telefoneend # Lista de telefonesmenores = pessoas.select do |pessoa| pessoa.idade < 18end # Lista de pessoaspessoas.select{|p| p.idade < 18}.collect{|p|p.telefone} # Lista de telefones filtrada
  • 19. Alguns tipos de dados Hasheshash = Hash.newoutro_hash = {}hash[:valor] = 555endereco = {:rua => "5 de Abril", :numero => 321}endereco[:rua] # => "5 de Abril"endereco[:numero] # => 321hash[:valor] # => 555
  • 20. Syntax SugarSimpli"cando tanto a escrita, quanto a leitura. 1.+(1) 1+1 conta.valores=(teste) conta.valores = teste conta.imprime_extrato() conta.imprime_extrato if (condicao) if condicao
  • 21. DRY Don’t Repeat Yourself Javapublic class Endereco { private String rua; private Integer numero; Ruby public String getRua() { return rua; class Endereco } public void setRua(String rua) { attr_writer :rua this.rua = rua; attr_writer :numero } attr_reader :rua public Integer getNumero() { attr_reader :numera return numero; } end public void setNumero(Integer numero) { this.numero = numero; }}
  • 22. DRY Don’t Repeat Yourself Javapublic class Endereco { private String rua; private Integer numero; public String getRua() { return rua; Ruby } public void setRua(String rua) { class Endereco this.rua = rua; } attr_accessor :rua, :numero public Integer getNumero() { end return numero; } public void setNumero(Integer numero) { this.numero = numero; }}
  • 23. Não para por aí... Mixins Exceptions Meta-programação ThreadsImplementações (JRuby, etc)
  • 24. Referênciashttp://www.ruby-lang.org/http://linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.htmlhttp://mislav.uniqpath.com/poignant-guide/book/http://ruby-doc.org/http://ruby-doc.org/docs/ProgrammingRuby/http://www.informit.com/articles/article.aspx?p=18225http://tarr.uspto.gov/servlet/tarr?regser=serial&entry=77119206http://weblog.rubyonrails.org/2007/12/7/rails-2-0-it-s-donehttp://weblog.rubyonrails.org/2010/8/29/rails-3-0-it-s-done
  • 25. Obrigado pelaatenção!