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).
Dicas...
Ambientes (IDEs) de desenvolvimento
[Netbeans] http://www.netbeans.org [RadRails] http://www.aptana.com/rails/
Dicas...
Instalao de softwares necessrios para a nossa disciplina
Ruby irb: Interactive Ruby
Rails
MySQL
No decorrer da disciplina...
Introduo a Linguagem Ruby
Ruby
Linguagem de programao originada do Japo;
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}" }
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.
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.
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
variavel +1
Tipos de Dados
Strings
Representada por caracter(es) entre aspas simples ou duplas
Exemplos: Bom dia!
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
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
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.
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
Operadores Lgicos
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
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
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
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!