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.
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
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;
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.
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
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