SlideShare una empresa de Scribd logo
1 de 39
Descargar para leer sin conexión
Linguagem de Programação -
           Ruby



 Diego Rubin - rubin.diego@gmail.com
Ruby - Introdução

●   Desenvolvida por Yukishiro Matsumoto;
●   Lançada em 1995;
●   Baseado nas linguagens Perl, SmallTalk e
    Python;
●   Escrita em C;
●   Famosa por causa do framework Rails;
●   Multiplataforma;
●   Versão 1.8
Ruby - Características

●   Interpretada;
Ruby - Características

Uma Linguagem Interpretada
●   Não há compilação do código;
●   A analise sintática acontece em tempo de
    execução;
Ruby - Características

●   Interpretada;
●   Tipagem dinâmica e forte;
Ruby - Características

Tipagem
●   Não é necessário a declaração das variáveis;

    Exemplo em Pascal        Exemplo em Ruby

    var                      i=5
       i:integer
    begin                    i = “Inteiro”
       i:= 5;
    end.


●   Tipagem forte;
●   Objeto tem como limite a memória;
Ruby - Características

●   Interpretada;
●   Tipagem dinâmica e forte;
●   Obedece ao paradigma da orientação a
    objeto;
Ruby - Características

Orientação a Objetos
●   Considerada totalmente orientadas a objetos;
●   Tipos primitivos são classes;
●   Mixin's, uma alternativa a herança múltipla;
Ruby - Características

●   Interpretada;
●   Tipagem dinâmica e forte;
●   Obedece ao paradigma da orientação a
    objeto;
●   Linguagem de propósito geral;
Ruby - Características

Linguagem de Propósito Geral
●   Scripts
●   Aplicativos Desktop
●   Aplicativos Web
●   Serviços Web
Ruby - Características

●   Interpretada;
●   Tipagem dinâmica e forte;
●   Obedece ao paradigma da orientação a
    objeto;
●   Linguagem de propósito geral;
●   E...
Ruby - Características



           É Livre
Instalando o Interpretador

No Linux:

Nas principais distros ele já vem instalado, se não vier e só
usar o gerenciador de pacotes deles.
Tarball

$ tar -zxvf ruby-1.8.x.tar.gz
$ cd ruby-1.8.x
$ ./configure && make
$ su
# make install




No Windows:

Baixar o instalador no site oficial do ruby.
Depois NNF.
Ferramentas - IRB

Especie de “prompt de comando”.
Muito útil para teste de código.

 Instalação:

 Em ambos os sistemas operacionais o IRB já é
 instalado com o interpretador,
Ferramentas - GEM

Gerenciador de bibliotecas do Ruby.
Possui funcionamento semelhante ao apt, yum, yast, etc...
Possui mais de 3000 gems no repositório.

Instalação:

Como no caso do IRB, o gem já vem instalado com o interpretador.
RubyForge




Repositório de projetos.
Os principais projetos em Ruby são hospedados nele.
Grande fonte de documentação.
Sintaxe

●   Variáveis
●   Blocos de Códigos
●   Definição de Métodos
●   IF – ELSE
●   CASE
●   WHILE
●   FOR
●   UNTIL
●   Operadores Lógicos
●   ARRAYS
●   HASHES
●   REQUIRE
Sintaxe - Variáveis
→ Variáveis Globais
   As variáveis globais devem começar com “$”.
   Exemplo:$i = “global”
               def teste
                   $i = “teste”
               end

→ Variareis de Instancia
   As variáveis de instancia devem começar com “@”.
   Exemplo: class Pessoa
                   def set_nome(nome)
                       @nome = nome
                   end
                   def get_nome
                       return @nome
                   end
               end
→ Constantes
   Por padrão, constantes devem possuir todas as letras
maiúsculas.
   Exemplo: ARGV
Métodos/Funções
def nome_da_funcao(parametro1, parametro2, ...)
   <bloco de comandos>
end
Exemplo:
def alo(nome)
   puts “Oi #{nome}.”
end

Parâmetro Variável:
def alo(*args)
   args.each {|a| puts “Oi #{a}”}
end

O Comando return:

def soma(a,b)           def dict(a,b)
   a+b                     return a
end                        puts b
                        end
Sintaxe – Blocos
do
   <comandos>           Com Parâmetros:
end                     def metodo(n)
                           yield(n)
     Ou                 end

{                       Utilização:
     <comandos>
                        metodo(2) {|i| i + 3}
}


Implementação:
def metodo
   yield
end

Utilização:

metodo { <comandos> }
Sintaxe – IF

   if (booleano)
      comandos
   end


Exemplo

if (i == 5)   ou
   puts(i)         puts(i) if (i == 5)
end
Sintaxe – IF - ELSE

 if ( teste logico)
    comandos
 else
    comandos
 end
Exemplo

if ( i.nil?)
    puts(“Valor de i é nil”)
else
    puts(i)
end
Sintaxe – Operadores Lógicos




     Operadores      Função
  &&      and        E
  ||      or         OU
  !       not        NÃO
        ==           IGUAL
         !=          DIFERENTE
1º Exemplo : Fatorial


  def fatorial(n)
    if(n > 1)
       n * fatorial(n-1)
    else
       1
    end
  end
  puts fatorial(ARGV[0].to_i)
Sintaxe – Case

 case ( variavel)
 when valor
    comandos
 when valor2
    comandos
 else
    comandos
 end
Exemplo1                      Exemplo2

case (i)                      case (i)
when 1..6                     when 1..6
   puts(“esta entre 1 e 6”)      puts(“esta entre 1 e 6”)
when 8                        when “string”
   puts (“i igual a 8”)          puts (“i não e inteiro”)
else                          else
   puts (“nao sei”)              puts (“nao sei”)
end                           end
Sintaxe – WHILE

 while (teste logico)
   comandos
 end




Exemplo

while (i < 10)
   puts i
   i = i +1
end
Sintaxe – UNTIL

 begin
   comandos
 end until (teste logico)




Exemplo

i = 10
begin
    puts i
    i=i–1
end until ( i == 0)
Sintaxe – FOR

 for variavel in intervalo
    comandos
 end




Exemplo

for i in 0..10
   puts i
end
Sintaxe – ARRAYS

Construtor:
nome_array = []

Atribuindo Valores:

nome_array[0] = 5
nome_array[1] = “String”
nome_array[2] = Pessoa.new



Exemplo 1:                   Exemplo 2:

for i in 0..3                nome_array.each { |i| puts i}
     puts nome_array[i]
end
Sintaxe – HASHES

Construtor:
nome_hash = {}

Atribuindo Valores:

nome_hash= {1 => 2, “a” => “b” }
nome_hash[“palavra”] = “word”
nome_hash[“classe pessa”] = Pessoa.new



Exemplo:

Saída do exemplo acima no irb.

irb(main):014:0> nome_hash
=> {5=>10, "pessoa"=>#<Pessoa:0xb7c853f4>, "a"=>"b", 1=>5}
Módulos
module Nome_do_modulo
   comandos
end



Exemplo:
module Lobo
   def self.uivar
       “ahuuu”
   end
end


 Saída:

 irb(main):036:0> Lobo.uivar
 => "ahuuu"
Classes - Construção
class Nome_da_classe
    comandos
end
                                Exemplo 2:
                                class Pessoa
Exemplo 1:                          def initialize(nome)
class Pessoa                            @nome = nome
    def set_nome(nome)              end
       @nome = nome                 def set_nome(nome)
    end                                 @nome = nome
    def get_nome                    end
       @nome                        def get_nome
    end                                 @nome
end                                 end
                                end
Instanciando 1:                 Instanciando 2:
pessoa = Pessoa.new             pessoa = Pessoa.new(“Exemplo”)
Observação:
O nome das classes devem começar com uma letra maiúscula
Classes - Herança
class Nome_da_classe < Nome_da_classe_pai
    comandos                 Exemplo 2:
end                          class Estudante < Pessoa
                                 def initialize(nome,ra)
Exemplo 1:                           @nome = nome
class Estudante < Pessoa             @ra = ra
    def set_ra(ra)               end
       @ra = ra                  def set_ra(ra)
    end                              @ra = ra
    def get_ra                   end
       @ra                       def get_ra
    end                              @ra
end                              end
                             end
Instanciando 1:               Instanciando 2:
estudante = Estudante.new     estudante=Estudante.new(“Exemplo”, 001)

super
Classes – Método Singleton

Consiste em definir um metodo para uma instancia que a classe pai
não possui.

Exemplo:
class Mamifero
    def produz_leite
       puts “usa como alimento para seus filhotes”
    end
    def possui_pelos
       puts “possui pelos”
    end
end

morcego = Mamifero.new
def morcego.voa
   puts “um mamifero que voa”
end
Classes – Attribute Readers e Writers

 Gera, em tempo de execução, os métodos setters e getters dos
 atributos.

 Exemplo:

 class Pessoa
     attr_accessor :nome
 end




 → Para gerar somente os setters
    attr_writer :nome
 → Para gerar somente os getters
    attr_reader :nome
Classes – Mixin's

Alternativa a herança múltipla


class Nome_da_classe < Nome_da_classe_pai
    include nome_do_modulo
end




Exemplo:

class Lobisomen < Pessoa
    include Lobo
end
Sintaxe – REQUIRE

Importa arquivos de código.
Equivalente ao “uses” do Pascal.

Exemplo:

require “arquivo_de_classes.rb”
require “libmysql”
require “rexml/document”
2º Exemplo - Ordenar


arq_novo = File.open("lista_ordenada.txt", "w")
File.open("lista.txt").sort.each do |nome|
 arq_novo.puts nome
end
Link`s
 Meu blog:
 Http://diegorubin.github.com

 Repositório do Minicurso no GitHub
 http://github.com/diegorubin/Minicurso-Asser/


 Site Oficial, onde pode ser baixado o interpretador:
 http://www.ruby-lang.org/

 RubyForge:
 http://www.rubyforge.org/

 Site Oficial do Binding do Gtk para o Ruby:
 http://ruby-gnome2.sourceforge.jp

Más contenido relacionado

La actualidad más candente

Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Bruno Grange
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismoArthur Emanuel
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação CGercélia Ramos
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Apresentação HTML e CSS
Apresentação HTML e CSSApresentação HTML e CSS
Apresentação HTML e CSSledsifes
 
Programação Web com PHP 7.x
Programação Web com PHP 7.xProgramação Web com PHP 7.x
Programação Web com PHP 7.xNorton Guimarães
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasRodrigo Branas
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com AngularElmano Cavalcanti
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Daniel Brandão
 
Trabalho métodos de ordenação
Trabalho métodos de ordenaçãoTrabalho métodos de ordenação
Trabalho métodos de ordenaçãoDaiana de Ávila
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoRangel Javier
 

La actualidad más candente (20)

Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Aula01-JavaScript
Aula01-JavaScriptAula01-JavaScript
Aula01-JavaScript
 
Apresentação HTML e CSS
Apresentação HTML e CSSApresentação HTML e CSS
Apresentação HTML e CSS
 
Programação Web com PHP 7.x
Programação Web com PHP 7.xProgramação Web com PHP 7.x
Programação Web com PHP 7.x
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
Trabalho métodos de ordenação
Trabalho métodos de ordenaçãoTrabalho métodos de ordenação
Trabalho métodos de ordenação
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 

Destacado

Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Joao Lucas Santana
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Douglas Roeder
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Marcelo Bohn
 
Ruby and Rails short motivation
Ruby and Rails short motivationRuby and Rails short motivation
Ruby and Rails short motivationjistr
 
TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?Diego Pacheco
 
Introdução Programação Funcional
Introdução Programação FuncionalIntrodução Programação Funcional
Introdução Programação FuncionalNatan Mai
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Railsismaelstahelin
 
Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Lindomar ...
 
Segurança em Rails
Segurança em RailsSegurança em Rails
Segurança em RailsJuan Maiz
 
Introdução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsIntrodução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsJulio Betta
 
Mini-curso RoR - Apresentação
Mini-curso RoR - ApresentaçãoMini-curso RoR - Apresentação
Mini-curso RoR - ApresentaçãoAgence Educacional
 
Introdução ao Ruby On Rails
Introdução ao Ruby On RailsIntrodução ao Ruby On Rails
Introdução ao Ruby On RailsMilton Moura
 
Django: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento webDjango: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento webMiguel Galves
 
Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011Andre Bernardes
 
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
[PDF] Repensando o Desenvolvimento Web com Ruby on RailsDante Regis
 
Introducao ao Ruby On Rails
Introducao ao Ruby On RailsIntroducao ao Ruby On Rails
Introducao ao Ruby On RailsAndre Ferraro
 

Destacado (20)

Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014
 
Ruby
RubyRuby
Ruby
 
Ruby and Rails short motivation
Ruby and Rails short motivationRuby and Rails short motivation
Ruby and Rails short motivation
 
Programacao funcional
Programacao funcionalProgramacao funcional
Programacao funcional
 
TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?
 
Introdução Programação Funcional
Introdução Programação FuncionalIntrodução Programação Funcional
Introdução Programação Funcional
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71
 
Segurança em Rails
Segurança em RailsSegurança em Rails
Segurança em Rails
 
Introdução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsIntrodução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on Rails
 
Mini-curso RoR - Apresentação
Mini-curso RoR - ApresentaçãoMini-curso RoR - Apresentação
Mini-curso RoR - Apresentação
 
Mini-curso RoR - Aula 01
Mini-curso RoR - Aula 01Mini-curso RoR - Aula 01
Mini-curso RoR - Aula 01
 
Introdução ao Ruby On Rails
Introdução ao Ruby On RailsIntrodução ao Ruby On Rails
Introdução ao Ruby On Rails
 
Django: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento webDjango: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento web
 
Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011
 
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
 
Introducao ao Ruby On Rails
Introducao ao Ruby On RailsIntroducao ao Ruby On Rails
Introducao ao Ruby On Rails
 
SEA Rails na pratica
SEA Rails na praticaSEA Rails na pratica
SEA Rails na pratica
 

Similar a Introdução à Linguagem Ruby

Oficina de shell script
Oficina de shell scriptOficina de shell script
Oficina de shell scriptbrunobione
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - BrazilStephen Chin
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na práticaRafael Cassau
 
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)Julio Betta
 
Apresentação ruby + rails
Apresentação ruby + railsApresentação ruby + rails
Apresentação ruby + railsMarcelo Bohn
 
Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Zarathon Maia
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosGregorio Kusowski
 
Ruby
RubyRuby
Rubybesen
 
Paradigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellParadigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellSérgio Souza Costa
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...Manuel Menezes de Sequeira
 
Linguagem de Programação PERL
Linguagem de Programação PERLLinguagem de Programação PERL
Linguagem de Programação PERLTiago R. Sampaio
 

Similar a Introdução à Linguagem Ruby (20)

Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 
Oficina de shell script
Oficina de shell scriptOficina de shell script
Oficina de shell script
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil
 
Curso ruby on rails
Curso ruby on railsCurso ruby on rails
Curso ruby on rails
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Fpar aula5
Fpar aula5Fpar aula5
Fpar aula5
 
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
 
Apresentação ruby + rails
Apresentação ruby + railsApresentação ruby + rails
Apresentação ruby + rails
 
Shell script
Shell script Shell script
Shell script
 
Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014
 
PowerShell
PowerShellPowerShell
PowerShell
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanos
 
Ruby
RubyRuby
Ruby
 
Active record
Active recordActive record
Active record
 
Shell Script v0
Shell Script v0Shell Script v0
Shell Script v0
 
Paradigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellParadigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo Haskell
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
 
Linguagem de Programação PERL
Linguagem de Programação PERLLinguagem de Programação PERL
Linguagem de Programação PERL
 
Introdução a php
Introdução a phpIntrodução a php
Introdução a php
 
Php
PhpPhp
Php
 

Introdução à Linguagem Ruby

  • 1. Linguagem de Programação - Ruby Diego Rubin - rubin.diego@gmail.com
  • 2. Ruby - Introdução ● Desenvolvida por Yukishiro Matsumoto; ● Lançada em 1995; ● Baseado nas linguagens Perl, SmallTalk e Python; ● Escrita em C; ● Famosa por causa do framework Rails; ● Multiplataforma; ● Versão 1.8
  • 4. Ruby - Características Uma Linguagem Interpretada ● Não há compilação do código; ● A analise sintática acontece em tempo de execução;
  • 5. Ruby - Características ● Interpretada; ● Tipagem dinâmica e forte;
  • 6. Ruby - Características Tipagem ● Não é necessário a declaração das variáveis; Exemplo em Pascal Exemplo em Ruby var i=5 i:integer begin i = “Inteiro” i:= 5; end. ● Tipagem forte; ● Objeto tem como limite a memória;
  • 7. Ruby - Características ● Interpretada; ● Tipagem dinâmica e forte; ● Obedece ao paradigma da orientação a objeto;
  • 8. Ruby - Características Orientação a Objetos ● Considerada totalmente orientadas a objetos; ● Tipos primitivos são classes; ● Mixin's, uma alternativa a herança múltipla;
  • 9. Ruby - Características ● Interpretada; ● Tipagem dinâmica e forte; ● Obedece ao paradigma da orientação a objeto; ● Linguagem de propósito geral;
  • 10. Ruby - Características Linguagem de Propósito Geral ● Scripts ● Aplicativos Desktop ● Aplicativos Web ● Serviços Web
  • 11. Ruby - Características ● Interpretada; ● Tipagem dinâmica e forte; ● Obedece ao paradigma da orientação a objeto; ● Linguagem de propósito geral; ● E...
  • 13. Instalando o Interpretador No Linux: Nas principais distros ele já vem instalado, se não vier e só usar o gerenciador de pacotes deles. Tarball $ tar -zxvf ruby-1.8.x.tar.gz $ cd ruby-1.8.x $ ./configure && make $ su # make install No Windows: Baixar o instalador no site oficial do ruby. Depois NNF.
  • 14. Ferramentas - IRB Especie de “prompt de comando”. Muito útil para teste de código. Instalação: Em ambos os sistemas operacionais o IRB já é instalado com o interpretador,
  • 15. Ferramentas - GEM Gerenciador de bibliotecas do Ruby. Possui funcionamento semelhante ao apt, yum, yast, etc... Possui mais de 3000 gems no repositório. Instalação: Como no caso do IRB, o gem já vem instalado com o interpretador.
  • 16. RubyForge Repositório de projetos. Os principais projetos em Ruby são hospedados nele. Grande fonte de documentação.
  • 17. Sintaxe ● Variáveis ● Blocos de Códigos ● Definição de Métodos ● IF – ELSE ● CASE ● WHILE ● FOR ● UNTIL ● Operadores Lógicos ● ARRAYS ● HASHES ● REQUIRE
  • 18. Sintaxe - Variáveis → Variáveis Globais As variáveis globais devem começar com “$”. Exemplo:$i = “global” def teste $i = “teste” end → Variareis de Instancia As variáveis de instancia devem começar com “@”. Exemplo: class Pessoa def set_nome(nome) @nome = nome end def get_nome return @nome end end → Constantes Por padrão, constantes devem possuir todas as letras maiúsculas. Exemplo: ARGV
  • 19. Métodos/Funções def nome_da_funcao(parametro1, parametro2, ...) <bloco de comandos> end Exemplo: def alo(nome) puts “Oi #{nome}.” end Parâmetro Variável: def alo(*args) args.each {|a| puts “Oi #{a}”} end O Comando return: def soma(a,b) def dict(a,b) a+b return a end puts b end
  • 20. Sintaxe – Blocos do <comandos> Com Parâmetros: end def metodo(n) yield(n) Ou end { Utilização: <comandos> metodo(2) {|i| i + 3} } Implementação: def metodo yield end Utilização: metodo { <comandos> }
  • 21. Sintaxe – IF if (booleano) comandos end Exemplo if (i == 5) ou puts(i) puts(i) if (i == 5) end
  • 22. Sintaxe – IF - ELSE if ( teste logico) comandos else comandos end Exemplo if ( i.nil?) puts(“Valor de i é nil”) else puts(i) end
  • 23. Sintaxe – Operadores Lógicos Operadores Função && and E || or OU ! not NÃO == IGUAL != DIFERENTE
  • 24. 1º Exemplo : Fatorial def fatorial(n) if(n > 1) n * fatorial(n-1) else 1 end end puts fatorial(ARGV[0].to_i)
  • 25. Sintaxe – Case case ( variavel) when valor comandos when valor2 comandos else comandos end Exemplo1 Exemplo2 case (i) case (i) when 1..6 when 1..6 puts(“esta entre 1 e 6”) puts(“esta entre 1 e 6”) when 8 when “string” puts (“i igual a 8”) puts (“i não e inteiro”) else else puts (“nao sei”) puts (“nao sei”) end end
  • 26. Sintaxe – WHILE while (teste logico) comandos end Exemplo while (i < 10) puts i i = i +1 end
  • 27. Sintaxe – UNTIL begin comandos end until (teste logico) Exemplo i = 10 begin puts i i=i–1 end until ( i == 0)
  • 28. Sintaxe – FOR for variavel in intervalo comandos end Exemplo for i in 0..10 puts i end
  • 29. Sintaxe – ARRAYS Construtor: nome_array = [] Atribuindo Valores: nome_array[0] = 5 nome_array[1] = “String” nome_array[2] = Pessoa.new Exemplo 1: Exemplo 2: for i in 0..3 nome_array.each { |i| puts i} puts nome_array[i] end
  • 30. Sintaxe – HASHES Construtor: nome_hash = {} Atribuindo Valores: nome_hash= {1 => 2, “a” => “b” } nome_hash[“palavra”] = “word” nome_hash[“classe pessa”] = Pessoa.new Exemplo: Saída do exemplo acima no irb. irb(main):014:0> nome_hash => {5=>10, "pessoa"=>#<Pessoa:0xb7c853f4>, "a"=>"b", 1=>5}
  • 31. Módulos module Nome_do_modulo comandos end Exemplo: module Lobo def self.uivar “ahuuu” end end Saída: irb(main):036:0> Lobo.uivar => "ahuuu"
  • 32. Classes - Construção class Nome_da_classe comandos end Exemplo 2: class Pessoa Exemplo 1: def initialize(nome) class Pessoa @nome = nome def set_nome(nome) end @nome = nome def set_nome(nome) end @nome = nome def get_nome end @nome def get_nome end @nome end end end Instanciando 1: Instanciando 2: pessoa = Pessoa.new pessoa = Pessoa.new(“Exemplo”) Observação: O nome das classes devem começar com uma letra maiúscula
  • 33. Classes - Herança class Nome_da_classe < Nome_da_classe_pai comandos Exemplo 2: end class Estudante < Pessoa def initialize(nome,ra) Exemplo 1: @nome = nome class Estudante < Pessoa @ra = ra def set_ra(ra) end @ra = ra def set_ra(ra) end @ra = ra def get_ra end @ra def get_ra end @ra end end end Instanciando 1: Instanciando 2: estudante = Estudante.new estudante=Estudante.new(“Exemplo”, 001) super
  • 34. Classes – Método Singleton Consiste em definir um metodo para uma instancia que a classe pai não possui. Exemplo: class Mamifero def produz_leite puts “usa como alimento para seus filhotes” end def possui_pelos puts “possui pelos” end end morcego = Mamifero.new def morcego.voa puts “um mamifero que voa” end
  • 35. Classes – Attribute Readers e Writers Gera, em tempo de execução, os métodos setters e getters dos atributos. Exemplo: class Pessoa attr_accessor :nome end → Para gerar somente os setters attr_writer :nome → Para gerar somente os getters attr_reader :nome
  • 36. Classes – Mixin's Alternativa a herança múltipla class Nome_da_classe < Nome_da_classe_pai include nome_do_modulo end Exemplo: class Lobisomen < Pessoa include Lobo end
  • 37. Sintaxe – REQUIRE Importa arquivos de código. Equivalente ao “uses” do Pascal. Exemplo: require “arquivo_de_classes.rb” require “libmysql” require “rexml/document”
  • 38. 2º Exemplo - Ordenar arq_novo = File.open("lista_ordenada.txt", "w") File.open("lista.txt").sort.each do |nome| arq_novo.puts nome end
  • 39. Link`s Meu blog: Http://diegorubin.github.com Repositório do Minicurso no GitHub http://github.com/diegorubin/Minicurso-Asser/ Site Oficial, onde pode ser baixado o interpretador: http://www.ruby-lang.org/ RubyForge: http://www.rubyforge.org/ Site Oficial do Binding do Gtk para o Ruby: http://ruby-gnome2.sourceforge.jp