Anda di halaman 1dari 39

@Ruby on Rails

Introduo a Ruby
Programao Ambiente Visual
Prof. Helvio Jeronimo Junior jeronimohjr@gmail.com

Dicas...
Estendo o conhecendo alm da sala de aula...
[Ruby] http://www.ruby-lang.org/pt/ [Try ruby!] http://tryruby.org/ (terminal iterativo on-line).

[Rails Guides] http://guides.rubyonrails.org/

Dicas...
Ambientes (IDEs) de desenvolvimento
[Netbeans] http://www.netbeans.org [RadRails] http://www.aptana.com/rails/

[Ruby Mine] http://www.jetbrains.com/ruby/


[TextMate] http://macromates.com

Dicas...
Instalao de softwares necessrios para a nossa disciplina
Ruby irb: Interactive Ruby

Rails
MySQL

No decorrer da disciplina...
Introduo a Linguagem Ruby

Ruby e Ruby Orientado a Objetos

Introduo e Arquitetura do Framework Rails

Desenvolvimento de uma aplicao ao Rails

Ruby
Linguagem de programao originada do Japo;

Totalmente orientada a objetos

1.methods
Totalmente Expressiva e Produtiva

puts ola

Ruby
Cada linguagem de programao tem sua forma de lidar com tipos, por exemplo: C uma linguagem fracamente tipada. O que pode ser visto nesse exemplo:
char a= 'a', b= 'b'; float c = a + b;

Ele que mostra que podermos somar dois chars e atribuirmos a um float (ao longo do texto o conceito de fracamente tipada ficar mais claro);

No entanto, Ruby dinamicamente, implicitamente e fortemente tipada. Vejamos o que cada um destes adjetivos significa:

Caractersticas do Ruby
Dinamicamente tipada
Quer dizer que a cada interao, o tipo verificado. Isso fica claro no seguinte exemplo: x = 100 (1..4).each{ x = x * 100 ; puts "#{ x.class} #{x}" }

Que gera o resultado:


Fixnum 10000 Fixnum 1000000 Fixnum 100000000 Bignum 10000000000

Ruby
Dinamicamente tipada
Como podemos ver a varivel x comea como Fixnum e conforme aumenta, passa para Bignum sem a necessidade de preocupar-se com a converso. Essa caracterstica gera vrios pontos positivos na linguagem, tais como:
Diminui a verbosidade, pois no h a necessidade de fazer converses; Tende a facilitar a vida do programador pois no h a preocupao com converses.

Mas neste contexto nem tudo so flores. Vejamos os pontos negativos:


A linguagem tende a ser mais lenta em tempo de execuo, devido ao fato de que, a cada interao, o tipo deve ser verificado; Pode confundir o programador, pois ele pode no saber exatamente com quais tipos est tratando.

Caractersticas do Ruby
Implicitamente tipada
Utilizando o exemplo anterior, quando fizemos x = 100 no precisamos declarar o tipo de x. Ou seja, no foi necessrio fazer algo como: Fixnum x = 100. Isso acontece pelo fato do Ruby detectar o tipo de cada varivel em tempo de execuo; Uma boa analogia para este fenmeno pensar nas variveis como se fossem caixas fechadas e seus dados como fitas coloridas onde o interpretador abre a caixa e verifica as cores das fitas. Novamente, os pontos positivos e negativos so muito semelhantes aos relacionados a tipagem dinmica. Veja:
(Positivo): Diminui a verbosidade, pois no h a necessidade de fazer declaraes. (Negativo): A linguagem tende a ser mais lenta, pois o tipo verificado em tempo de execuo de acordo com a analogia das caixas e fitas; (Negativo): Pode confundir o programador, pois ele pode no saber exatamente com quais tipos est tratando, j que no existe a declarao dos mesmos

Caractersticas do Ruby
Fortemente tipada
Conceito confuso de entender inicialmente! Todas variveis deve ter um tipo, isto , faz parte de uma classe; Exemplo: valor =10 aula = Aula de Ruby .... aula + valor (erro) tipos diferentes! Esse tipo de operao no est nas classes Strings e Fixnum
(Positivo): Diminui a verbosidade, pois no h a necessidade de fazer declaraes. (Negativo): A linguagem tende a ser mais lenta, pois o tipo verificado em tempo de execuo de acordo com a analogia das caixas e fitas; (Negativo): Pode confundir o programador, pois ele pode no saber exatamente com quais tipos est tratando, j que no existe a declarao dos mesmos

Convenes
Nomenclatura
Variveis locais, nome de mtodos, bem como seus parmetros, devem comear com letra minscula ou com underscore ( _ ). Exemplos: nome, idade, data_nascimento Variveis de instncia devem comear com @. Exemplos: @nome, @idade Nomes de classes, mdulos e constantes devem comear com letra maiscula. Exemplos: Pessoa, Venda, ItensVenda [Obs] Neste caso, se o nome da classe for composta este dever ser separado com letra maiscula no incio dos nomes.

Escopo das variveis


Como em Ruby declaramos as variveis no momento estritamente necessrio, portanto precisamos ficar atentos para o escopo das mesmas. Temos os seguintes escopos de variveis:
Local: declaramos normalmente com letra minscula ou comeando com o caracter _; Global: declaramos com $ na frente do nome; Classe: declaradas com @ na frente do nome;

Escopo das variveis

Usando o input
Usar o mtodo gets para recebe o input; Esse mtodo retorna uma string com o texto digitado at que a tecla ENTER seja apertado; Importante: Usando o mtodo gets o \n (line feed) vai estar presente na string recolhida.

Usando o input
1 Exemplo:
variavel = gets exemplo simples

variavel = gets.chomp

remove o ltimo caractere da string (\n)

2 Exemplo: Realizando a converso


variavel = gets.to_i Pode-se realizar a converso aps termos recolhido o contedo da string.

variavel +1

Tipos de Dados
Strings
Representada por caracter(es) entre aspas simples ou duplas
Exemplos: Bom dia!

So mutveis (estado da varivel ou objeto pode mudar).


Exemplo de uma varivel mutvel

mensagem = ola mensagem << galera puts (mensagem) ola galera

Tipos de Dados
Array
Representa uma coleo de dados indexados que contm um ndice inteiro que pode conter qualquer tipo de dado; Pode ser acessvel atravs de chave/ndice; Tamanho de acordo com a necessidade; Lista vazia
lista =[ ] lista = Array.new

Adicionando dados no Array


lista << 1,
lista << ola lista[2] = 2

Tipos de Dados
Hash
Semelhante aos Arrays, representam colees de dados; A diferena entre Arrays e Hashes que o Arrays usa nmero inteiro como ndice de referncia, enquanto o Hashes pode usar qualquer tipo como ndice; Valores so associados aos ndices; Criando Hashes
matriculas = { } Matriculas = Hash.new

Adicionando dados no Hashes


matriculas = { Paulo => evadido, Joo=> trancado}

Acessando dados no Hashes matriculas[Joao]

Tipos de Dados
Simbol
Refere-se a um smbolo. descrito pela prefixao de : (dois pontos) e um identificador. Normalmente so utilizados como chaves em objetos hashes, devido ao fato de serem mais rpido para localizar objetos do tipo strings. Uma das suas principais caractersticas que smbolo com o mesmo valor, mesmo em um local diferente (classe/mtodo) compartilham o mesmo objeto. Exemplo de criao de smbolos
dados = {nome => Joo, idade=> 25, data_nac=> 20/06/2012} dados = :nome=> Joo, :idade=> 25, :data_nas=> 20/06/2012}

Tipos de Dados
Fixnum
Refere-se a um nmero inteiro; Nmeros pequenos; Manipulao mais rpida, pois so tipos de dados apontados por variveis no alocados na memria, e sim em um objeto de referncia.

Alguns mtodos dessa classe


.respond_to .to_s .to_f .next .class .kind_of .to_i

Tipos de Dados
Bignum
Refere-se a um nmeros inteiros que excedem o limite imposto pelos Fixnums;
Dados das variveis so alocados na memria; Mtodos semelhante ao Fixnum.

Tipos de Dados
Pontos Flutuantes (floats)
Exemplo: 1.27

Boleanos
Assume os valores false ou true

Nulos
Objetos com valores nulo Assume o valor nil Exemplo: v=1 v.nil?

Tipos de Dados
Constantes
Comeam com letra maiscula; Podem ter escopo; Exemplos: Pi= 3,14
Class Triangulo Pi = 3,14 end puts Triangulo::Pi

Operadores Aritmticos
Em Ruby temos operadores aritmticos semellhantes ao de outras linguagens. Observe a tabela a seguir.
Operadores + * / % ** <= >= == <> == != Descrio Soma e Subtrao Multiplicao, Diviso e Mdulo da Diviso Exponenciao Operadores de comparao

e booleanos

Converses de Tipos
Converses Finum para Float Fixnum para String String para Smbolo String para Fixnum 1.to_f =>1.0 1.to_s => 1 azul.to_sym => :azul 1.to_1 => 1 Exemplos

Array para String


Array para String com delimitador Range para Array

[1,2,3,4,5].to_s => 1235


[1,2,3,4,5].join(,) => 1,2,3,4,5 (0..10).to_a => [1,2,3,4,5,6,7,8,9,10]

Operadores Lgicos

Operadores && and Operador E

Descrio

||

or

Operador Ou
Operador de Negao

! not

Rangers
Definem intervalos que podemos definir incluindo ou no o ltimo valor; Usado em interaes, com o iterador each; Exemplos: (0..20) cria uma iterao de 0 a 20 (0...20) cria uma iterao de 0 a 19 Exemplo prtico: range(0..10).each do |numero| print numero end

Estruturas de Controle
Como estruturas de controle, temos: if elsif

unless
case

Estruturas de Controle
if
Exemplos:
i= 10 if i == 10 puts nmero igual else puts nmeros diferentes end i=10 puts nmeros diferentes if i <> 10 Modificador de estrutura

i=10 If i ==10 ? iguais : diferentes

If ternrio

Estruturas de Controle
if...elsif
Exemplo:
i= 10 if i >10 puts nmero maior elsif i==10 puts nmeros iguais else puts nmero menor end

Estruturas de Controle
unless (verso negado do if)
Exemplos:

sexo = feminino unless sexo = masculino puts Os principais hormnios so estrognio e progesterona puts possui TPM end

Estruturas de Controle
case
Para termos a mesma funcionalidade do SWITCH de outras linguagens, existe a construo CASE ... WHEN
puts Quantos anos voc tm? seletor = gets.to_i escolha = case seletor when 0..10 then Crianas when 11..18 then Adolescente when 19.. 65 then Adulto when 65..100 then Idoso else A idade est correta? end puts voc : {#escolha}

Estruturas de Repetio
Como estruturas de repetio, temos:
While
For Until Begin

Loop

Estruturas de Repetio
While (Enquanto)
Exemplo:
while i < 6 puts Executando o while pela #{i} vez i+= 1 end

Estruturas de Repetio
for (Para)
Exemplos:
for i in (1..6) puts Executando o for pela #{i} vez end Vai de 1 a 5. Pode ser usado com cadeia de caracteres. Por exemplo, um range de a z (a...z)

array_nomes = [Paulo, Maria, Pedro] for nome in array_nomes puts nome end

Executando o loop com dados do array

Estruturas de Repetio
until (faa at)
Exemplo:
i=0 until i == 5 puts i i+= 1 end Vai imprimir de 1 a 4.

Estruturas de Repetio
Begin(Incio/Inicia)
Exemplos:
i=0 begin puts i i+= 1 end while i < 5 i=0 begin puts i i+= 1 end until i == 5 Pode ser utilizado em conjunto com o while

Pode ser utilizado em conjunto com o until

Estruturas de Repetio
Begin(Incio/Inicia)
Exemplos:
i=0 loop do break unless i < 10 puts i i+= 1 end Normalmente combinado com outras estruturas. Pouco utilizado!

Anda mungkin juga menyukai