Upload
diego-rubin
View
8.185
Download
6
Embed Size (px)
DESCRIPTION
Apresentação utilizada em palestra na ETEC Prof. Armando Bayeux da Silva em 2008 e na Semana de Estudos do curso de Sistemas de Informação na faculdade Asser de Rio Claro em 2009.
Citation preview
Linguagem de Programação - Ruby
Diego Rubin - [email protected]
Ruby - IntroduçãoRuby - 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ísticasRuby - Características
● Interpretada;
Ruby - CaracterísticasRuby - 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ísticasRuby - Características
● Interpretada;● Tipagem dinâmica e forte;
Ruby - CaracterísticasRuby - Características
Tipagem● Não é necessário a declaração das variáveis;
Exemplo em Pascal
vari:integer
begini:= 5;
end.
Exemplo em Ruby
i = 5
i = “Inteiro”
● Tipagem forte;
● Objeto tem como limite a memória;
Ruby - CaracterísticasRuby - Características
● Interpretada;● Tipagem dinâmica e forte;● Obedece ao paradigma da orientação a
objeto;
Ruby - CaracterísticasRuby - 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ísticasRuby - Características
● Interpretada;● Tipagem dinâmica e forte;● Obedece ao paradigma da orientação a
objeto;● Linguagem de propósito geral;
Ruby - CaracterísticasRuby - Características
Linguagem de Propósito Geral● Scripts● Aplicativos Desktop● Aplicativos Web● Serviços Web
Ruby - CaracterísticasRuby - Características
● Interpretada;● Tipagem dinâmica e forte;● Obedece ao paradigma da orientação a
objeto;● Linguagem de propósito geral;● E...
Ruby - CaracterísticasRuby - Características
É Livre
Instalando o InterpretadorInstalando 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 - IRBFerramentas - 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 - GEMFerramentas - 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.
RubyForgeRubyForge
Repositório de projetos.Os principais projetos em Ruby são hospedados nele.Grande fonte de documentação.
SintaxeSintaxe
● 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áveisSintaxe - Variáveis
→ Variáveis GlobaisAs variáveis globais devem começar com “$”.Exemplo:$i = “global”
def teste$i = “teste”
end
→ Variareis de InstanciaAs variáveis de instancia devem começar com “@”.Exemplo: class Pessoa
def set_nome(nome)@nome = nome
enddef get_nome
return @nomeend
end→ Constantes
Por padrão, constantes devem possuir todas as letras maiúsculas.
Exemplo: ARGV
Métodos/FunçõesMé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)a + b
end
def dict(a,b)return aputs b
end
Sintaxe – BlocosSintaxe – Blocos
do<comandos>
end
Ou
{<comandos>
}
Implementação:def metodo
yieldend
Utilização:
metodo { <comandos> }
Com Parâmetros:def metodo(n)
yield(n)end
Utilização:
metodo(2) {|i| i + 3}
Sintaxe – IFSintaxe – IF
if (booleano)comandos
end
Exemplo
if (i == 5)puts(i)
end
ouputs(i) if (i == 5)
Sintaxe – IF - ELSESintaxe – IF - ELSE
if ( teste logico) comandos
elsecomandos
endExemplo
if ( i.nil?) puts(“Valor de i é nil”)
elseputs(i)
end
Sintaxe – Operadores LógicosSintaxe – Operadores Lógicos
Operadores Função && E|| OU! NÃO
== IGUAL!= DIFERENTE
andornot
1º Exemplo : Fatorial1º Exemplo : Fatorial
def fatorial(n) if(n > 1) n * fatorial(n-1) else 1 endendputs fatorial(ARGV[0].to_i)
Sintaxe – CaseSintaxe – Case
case ( variavel) when valor
comandoswhen valor2
comandoselse
comandosend
Exemplo1
case (i)when 1..6
puts(“esta entre 1 e 6”)when 8
puts (“i igual a 8”)else
puts (“nao sei”)end
Exemplo2
case (i)when 1..6
puts(“esta entre 1 e 6”)when “string”
puts (“i não e inteiro”)else
puts (“nao sei”)end
Sintaxe – WHILESintaxe – WHILE
while (teste logico) comandos
end
Exemplo
while (i < 10)puts ii = i +1
end
Sintaxe – UNTILSintaxe – UNTIL
begin comandos
end until (teste logico)
Exemplo
i = 10begin
puts ii = i – 1
end until ( i == 0)
Sintaxe – FORSintaxe – FOR
for variavel in intervalocomandos
end
Exemplo
for i in 0..10puts i
end
Sintaxe – ARRAYSSintaxe – ARRAYS
Construtor:nome_array = []
Atribuindo Valores:
nome_array[0] = 5nome_array[1] = “String”nome_array[2] = Pessoa.new
Exemplo 1:
for i in 0..3puts nome_array[i]
end
Exemplo 2:
nome_array.each { |i| puts i}
Sintaxe – HASHESSintaxe – 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ódulosMódulos
module Nome_do_modulocomandos
end
Exemplo:module Lobo
def self.uivar“ahuuu”
endend
Saída:
irb(main):036:0> Lobo.uivar=> "ahuuu"
Classes - ConstruçãoClasses - Construção
class Nome_da_classecomandos
end
Exemplo 1:class Pessoa
def set_nome(nome)@nome = nome
enddef get_nome
@nomeend
end
Instanciando 1:pessoa = Pessoa.new
Observação:O nome das classes devem começar com uma letra maiúscula
Exemplo 2:class Pessoa
def initialize(nome)@nome = nome
enddef set_nome(nome)
@nome = nomeenddef get_nome
@nomeend
endInstanciando 2:pessoa = Pessoa.new(“Exemplo”)
Classes - HerançaClasses - Herança
class Nome_da_classe < Nome_da_classe_paicomandos
end
Exemplo 1:class Estudante < Pessoa
def set_ra(ra)@ra = ra
enddef get_ra
@raend
end
Instanciando 1:estudante = Estudante.new
Exemplo 2:class Estudante < Pessoa
def initialize(nome,ra)@nome = nome@ra = ra
enddef set_ra(ra)
@ra = raenddef get_ra
@raend
end
Instanciando 2:estudante=Estudante.new(“Exemplo”, 001)
super
Classes – Método SingletonClasses – Método Singleton
Consiste em definir um metodo para uma instancia que a classe pai não possui.
Exemplo:class Mamifero
def produz_leiteputs “usa como alimento para seus filhotes”
enddef possui_pelos
puts “possui pelos”end
end
morcego = Mamifero.newdef morcego.voa
puts “um mamifero que voa”end
Classes – Attribute Readers e WritersClasses – Attribute Readers e Writers
Gera, em tempo de execução, os métodos setters e getters dos atributos.
Exemplo:
class Pessoaattr_accessor :nome
end
→ Para gerar somente os settersattr_writer :nome
→ Para gerar somente os gettersattr_reader :nome
Classes – Mixin'sClasses – Mixin's
Alternativa a herança múltipla
class Nome_da_classe < Nome_da_classe_paiinclude nome_do_modulo
end
Exemplo:
class Lobisomen < Pessoainclude Lobo
end
Sintaxe – REQUIRESintaxe – REQUIRE
Importa arquivos de código.Equivalente ao “uses” do Pascal.
Exemplo:
require “arquivo_de_classes.rb”require “libmysql”require “rexml/document”
2º Exemplo - Ordenar2º Exemplo - Ordenar
arq_novo = File.open("lista_ordenada.txt", "w")File.open("lista.txt").sort.each do |nome| arq_novo.puts nomeend
Link`sLink`s
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
Meu blog:Http://diegorubin.github.com
Repositório do Minicurso no GitHubhttp://github.com/diegorubin/Minicurso-Asser/