Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →

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

Apresentação da Linguagem Ruby durante a Hora da Tecnologia na Universidade Feevale. Além disso, contribuiu para conhecimento da linguagem na disciplina de Paradigmas.

Gregório Chalinski Kusowski

November 07, 2011

Transcript

25 slides
  1. História Ruby - 1993 Ruby Alpha - 1994 Ruby 1.0

    - 1996 Rails - 2004 Rails 1.0 - 2005 Rails 2.0 - 2007 Rails 3.0 - 2010
  2. Variáveis a # escopo @a # instância $a # global

    @@a # classe a = 1 @a, $a, @@a = 2, 3, 4 a # => 1 @a # => 2 $a # => 3 @@a # => 4
  3. Métodos def rua= (rua) @rua = rua end def numero=

    (numero) @numero = numero end def endereco return "#{@rua}, #{@numero}" end Declaração
  4. Estruturas de Controle if valor < 7 return "Reprovado" else

    return "Aprovado" end return valor < 7 ? "Reprovado" : "Aprovado" unless pessoas.empty? puts pessoas.size end puts pessoas.size unless pessoas.empty?
  5. Estruturas de Controle def resultado(nota) case nota when (0..3); "Reprovado"

    when (3..7); "Recuperação" when (7..10); "Aprovado" else raise "Nota inválida" end end
  6. Estruturas de Controle for numero in (1..3) puts numero end

    (1..3).each do |numero| puts numero end
  7. Classes class Jogo def self.atual # classe # ... end

    def finalizar # instância # ... end end
  8. Módulos module Time class Jogador end end module Calculadora def

    media_aritmetica(valores = []) if valores.size > 0 valores.sum / valores.size end end end
  9. Orientação a objetos 5.+(2) # => 7 Em Ruby, não

    existem tipos primitivos. Qualquer coisa é um objeto: foo = true foo.nil? # => false bar = nil bar.nil? # => true Qualquer coisa mesmo!
  10. 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"
  11. Paradigma Funcional Por in!uência da linguagem Lisp, Ruby conta com

    estruturas 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"
  12. Alguns tipos de dados Strings v= 1 "V: #{v}" #

    => "V: 1" 'V: #{v}' # => "V: #{v}" %(Teste de String) # => "Teste de String" %w(Teste de String) # => ["Teste", "de", "String"] r = <<KEYWORD Lorem ipsum dolor sit amet, consectetur adipisicing elit KEYWORD
  13. 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
  14. Alguns tipos de dados Arrays telefones = pessoas.collect do |pessoa|

    pessoa.telefone end # Lista de telefones menores = pessoas.select do |pessoa| pessoa.idade < 18 end # Lista de pessoas pessoas.select{|p| p.idade < 18}.collect{|p| p.telefone} # Lista de telefones filtrada
  15. Alguns tipos de dados Hashes hash = Hash.new outro_hash =

    {} hash[:valor] = 555 endereco = {:rua => "5 de Abril", :numero => 321} endereco[:rua] # => "5 de Abril" endereco[:numero] # => 321 hash[:valor] # => 555
  16. Syntax Sugar Simpli"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
  17. DRY Don’t Repeat Yourself public class Endereco { private String

    rua; private Integer numero; public String getRua() { return rua; } public void setRua(String rua) { this.rua = rua; } public Integer getNumero() { return numero; } public void setNumero(Integer numero) { this.numero = numero; } } class Endereco attr_writer :rua attr_writer :numero attr_reader :rua attr_reader :numera end Java Ruby
  18. Java Ruby DRY Don’t Repeat Yourself class Endereco attr_accessor :rua,

    :numero end public class Endereco { private String rua; private Integer numero; public String getRua() { return rua; } public void setRua(String rua) { this.rua = rua; } public Integer getNumero() { return numero; } public void setNumero(Integer numero) { this.numero = numero; } }

More Decks by Gregório Chalinski Kusowski

Other Decks in Programming