+ All Categories
Home > Technology > Introducao ao Ruby

Introducao ao Ruby

Date post: 28-May-2015
Category:
Upload: klaus-paiva
View: 1,288 times
Download: 0 times
Share this document with a friend
Description:
Material de apoio do curso de verão sobre Ruby on Rails. Os slides fazem mais sentido com as explicações em sala mas, ainda assim, podem ser usados como material para consulta.
Popular Tags:
28
26~30/01/2009 @ senac Klaus Paiva www.klaus.pro.br Introdução ao Ruby
Transcript
Page 1: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

Introdução ao Ruby

Page 2: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

O que é Ruby?O que é Ruby?

Definição do site oficial: (www.ruby-lang.org)A dynamic, open source programming language with a focus on simplicity and productivity.It has an elegant syntax that is natural to read and easy to write.

Criada por Yukihiro "matz" Matsumoto.Inspirada por suas linguagens favoritas:

Perl, Smalltalk, Eiffel, Ada e Lisp.

Page 3: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

Ruby: CaracterísticasRuby: Características

Linguagem de script interpretada.Similar a Smalltalk, Python, PHP, Perl...

Manipulação fácil e poderosa de strings.

Amplo suporte a expressões regulares. =)

Extremamente orientada a objetos.

Page 4: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

Ruby: CaracterísticasRuby: Características

Não é necessário declarar variáveis.

Tipagem dinâmica.

Tipagem forte.

Sintaxe simples, leve e consistente.

Gerenciamento de memória automático.

Page 5: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

Exemplo de código RubyExemplo de código Ruby

class Category < ActiveRecord::Base has_many :places

before_save :generate_slug def generate_slug return unless self.slug.blank? self.slug = self.name.parameterize end end

Page 6: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

Estilos de programação e POOEstilos de programação e POO

Você pode programar usando programação estruturada ou orientação a objetos, ou as duas juntas, se quiser =)

POO:Classes

Herança

Controle de Acesso

Polimorfismo

etc...

Page 7: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

Testando seu RubyTestando seu Ruby

$ ruby -vruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]

arquivo.rb:puts 'Oi, tudo bem?'

$ ruby arquivo.rb

Page 8: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

Exemplo clássico: fatorialExemplo clássico: fatorial

fatorial.rbdef fatorial( n ) if n == 0 1 else n * fatorial( n – 1 ) endend# chamando a função criadafatorial(5)

Page 9: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

StringsStrings

Funcionam de forma semelhante ao PHP.Strings entre " são processadas a procura de expressões.Strings entre ' não são processadas.

# exemplos:puts '1+1=#{1+1}'puts "1+1=#{1+1}"

Page 10: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

ArraysArrays

lista = [ "verde", "amarelo", "azul", "branco" ]

lista.public_methods.sort# http://www.ruby-doc.org/core/classes/Array.html

lista[0..2] # da posição 0 até a posição 2

lista.push( "vermelho" )# ou que tal?lista.push "laranja"lista.pop

Page 11: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

RangesRanges

Fechado:0..9, ou seja, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Aberto:0...9, ou seja, 0, 1, 2, 3, 4, 5, 6, 7, 8

0..9 # é um range, não um array!

(0..9).to_a # agora é um array =)

Page 12: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

HashesHashes

Também conhecidos como dicionários ou arrays associativos. Forma conveniente de armazenar informações por associação, no formato:

chave => valor

Bastante utilizado na passagem de parâmetros para os métodos Rails.

Page 13: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

Hashes (exemplo)Hashes (exemplo)

# criando um hash novopopulacao = { 'argentina' => 40000000, 'brasil' => 190_000_000}

# acessandopopulacao['brasil']# removendopopulacao.delete 'argentina'

Page 14: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

SímbolosSímbolos

São elementos utilizados para representar strings ou nomes de uma maneira geral.

Bastante empregados na construção de hashes (vistos no slide anterior).

Além disso, por conta de seus fins descritivos, só existe uma instância de cada símbolo na memória.

Page 15: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

Hashes com símbolosHashes com símbolos

# criando um hash novo usando símbolospopulacao = { :argentina => 40000000, :brasil => 190_000_000}

# acessandopopulacao[:brasil]# removendopopulacao.delete :argentina

Page 16: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

Strings x SímbolosStrings x Símbolos

Quando o importante para você é representar uma sequência de caracteres, use Strings.

Quando o importante para você é definir um rótulo ou uma identificação, use Símbolos.

Page 17: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

Métodos predicadosMétodos predicados

Métodos que, por convenção, retornam true ou false.

Podem ser facilmente identificadospela ? ao final do nome do método.

Exemplos:["um"].empty?"texto".is_a? String

Page 18: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

Métodos destrutivosMétodos destrutivos

Por convenção são os métodos que modificam o objeto original, por isso "destroem" o objeto original.

Podem ser facilmente identificadospela ! ao final do nome do método.

Page 19: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

Métodos destrutivos (exemplo)Métodos destrutivos (exemplo)

nome = " Chris "

# executa o método sem alterar o valor atualnome.stripputs nome

# executa o método e altera o objeto originalnome.strip! # versão destrutivaputs nome

Page 20: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

IFIF

print 'Digite sua cidade natal: 'cidade = gets.chompif cidade == 'Itu' puts 'Ituano'# elsif, não else if, elif ou elseifelsif cidade == 'Salto' puts 'Saltense'else puts 'Brasileiro =)'end

Page 21: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

CaseCase

print 'Digite sua idade: 'idade = gets.to_icase idade when 18, 30..50 puts 'Atendimento X' when 70, 80, 90 puts 'Atendimento Y' else puts 'Atendimento Z'end

Page 22: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

WhileWhile

i = 0while i < 10 puts i i += 1end

Page 23: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

O jeito Ruby (parte I)O jeito Ruby (parte I)

No Ruby as estruturas de controle e repetição podem ser colocadas em lugares novos, melhorando a leitura das sentenças e deixando seu código mais claro.

# exemplo didático para remover todos os itenslista = [ 'a','b','c','d','e' ]puts lista.pop while not lista.empty?

Page 24: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

O jeito Ruby (parte II)O jeito Ruby (parte II)

i = 0while i < 10 puts i if i % 2 == 0 # o valor de i só vai ser impresso caso # a condição ali no fim seja atendida i += 1end

Page 25: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

O jeito Ruby (parte III)O jeito Ruby (parte III)

i = 0while i < 10 puts i unless i % 2 == 0 # unless funciona como um if not i += 1end

Page 26: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

forfor

# modo tradicionalfor i in (5..15) puts iend

# e uma "versão mais orientada a objetos"?(15..25).each do |numero| puts numero ** 0.5end

Page 27: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

ReferênciasReferências

http://www.rubyist.net/~slagell/ruby/

http://www.ruby-lang.org/en/documentation/

http://www.ruby-doc.org/core/

http://tinyurl.com/6ox4hx (www.akitaonrails.com)

Page 28: Introducao ao Ruby

26~30/01/2009 @ senac Klaus Paivawww.klaus.pro.br

Fotos: CréditosFotos: Créditos

Slide 5: http://tinyurl.com/7ylxr8Slide 9: http://tinyurl.com/a2w9knSlide 17: http://tinyurl.com/8kj8x9Slide 18: http://tinyurl.com/8kmfo7Slide 24: http://tinyurl.com/a74mbaSlide 25: http://tinyurl.com/7zezngSlide 27: http://tinyurl.com/7kh8by


Recommended