A Linguagem de Programação Ruby. Diego Rubin

Documentos relacionados
Linguagens de Programação 2015/1. Ruby. Diego Rodrigues Leonardo Rodrigues

} Instalando o Ruby. } Conceitos básicos do Ruby. } Métodos. } Classes. } Módulos. } Arrays e Hashes. } Estruturas de Controle. } Expressões regulares

Orientação a Objetos com Ruby

Tutorial Ruby versão 0.3 SOBRE O TUTORIAL

Linguagem de Programação. Helder Lucas S. Silas Valdemar

Casa do Código Livros para o programador Rua Vergueiro, º andar Vila Mariana São Paulo SP Brasil

Suporte a TAD e POO em Ruby

Ruby e Ruby on Rails

História. Nasceu em 1993, numa discussão entre Yuhikiro Matsumoto e um colega.

Lógica de Programação

Lógica de Programação

Ruby O MELHOR AMIGO DO PROGRAMADOR

Linguagem de Programação e Compiladores

Quem sou eu? Daniel Coelho de Andrade. Graduando em Engenharia de Computação - UEFS. Membro da Empresa Júnior de Engenharia de Computação da UEFS

PROGRAMAÇÃO E PYTHON. Laboratórios de Informática João Paulo Barraca, André Zúquete, Diogo Gomes

Lógica de Programação

Alunos. Hudson Martins da Silva Laércio Pedro Hoppe

Ruby Uma Linguagem Atraente

Programação Orientada a Objetos

Histórico. Perl (Practical Extraction and Report Language). Criada por Larry Wall em 1987.

Orientação a Objetos com Ruby

Ruby. Simplicidade e produtividade

PRIMEIROS PASSOS COM PYTHON. Prof. Msc. Luis Filipe Alves Pereira 2015

Conceitos de Linguagem de Programação - 2

Programação de Computadores

PROGRAMAÇÃO ORIENTADA A OBJETOS JAVA

Análise de Programação

Linguagem de Programação III

Programação de Computadores

Programação Estruturada e Orientada a Objetos

O AMBIENTE DE PROGRAMAÇÃO VISUAL -PLANO DE ENSINO. Prof. Angelo Augusto Frozza, M.Sc.

CONTEÚDO PROGRAMÁTICO

Práticas de Desenvolvimento de Software

Primeira Prova de Linguagens de Programação - DCC024W - Sistemas de Informação

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM.

Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática. Erlang. Luiz Carlos Passamani Filho.

Fundamentos de Programação em Python

Fundamentos de Lógica e Algoritmos. Aula 3.2 IDLE, Variáveis e Tipos. Prof. Dr. Bruno Moreno

Computação 1 - Python Aula 3 - Teórica: Tipos de dados, Strings, Estrutura Condicional 1/ 28

Linguagem Algorítmica OO. Linguagem Algorítmica

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Linguagens de Programação Conceitos e Técnicas. Amarrações

Programação Orientada a Objetos

Linguagem de Programação III

Expressões e sentença de atribuição

Linguagens de Programação. Marco A L Barbosa

Orientação a Objetos com Ruby

Conceito de Linguagens de Programação - 1

Análise Semântica e Tratamento de Erros Dependentes de Contexto

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias

Python: Exceções, Iteradores e Geradores. Claudio Esperança

Linguagem de programação: Pascal

Linguagens de Programação

Informática PUC-Rio. Aula de 14/08/2013. Linguagens e Autômatos Exercícios. cios com JFLAP e Ruby. Clarisse S. de Souza, 2013

COMPORTAMENTOS - Observações

Programação de Computadores

GROOVY. Diogo Eládio Igor

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

A função get_class() retorna uma string contendo o nome da classe do objeto passado como parâmetro:

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

Simulado de Linguagem de Programação Java

Sintaxe Básica do Java. João Paulo Q. dos Santos

Cronograma de Aulas - Mococa 1º Módulo 23/05/2009 a 27/06/2009

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

Programação Orientada a Objetos em Python

Linguagens Formais e Autômatos (LFA)

Programação de Computadores II

Unidade VI. Técnicas de Teste de Software Teste Estrutural. Profa. Dra. Sandra Fabbri

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

LUA. Deise Miranda Douglas Neves Luane Gomes Naara Soares

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa

Linguagem de Programação II Implementação

Linguagens de Programação

Classes e Objetos. Sintaxe de classe em Java

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Abaixo iremos pormenorizar cada um de seus atributos:

Linguagem Python. Inteligência Artificial. Características de Python. Importando módulos. Módulos. Usando Python no modo interativo

Java Básico. Carga Horária: 32 horas. Pré-requisito: Lógica de Programação; JAVA. Conteúdo Programático

1 Da aula teórica ao Java

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

A Linguagem Python: Uma visão geral. Prof. Alberto Costa Neto Programação em Python

CONTEÚDO PROGRAMÁTICO

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Linguagem Técnica de Programação III Introdução a PHP

PHP Instalação. Linguagens Server-side Professor Fábio Luís da Silva Santos XAMPP.

Programação Estruturada e Orientada a Objetos. Objetos e Métodos

Programação Java (nível intermediário) 4. Polimorfismo

Linguagem de Programação III - PHP

Programação Orientada a Objetos

Compiladores Análise Semântica

Fundamentos da Programação

Programação de Computadores

Curso de Python em 5 Horas

Introdução à Ciência da Computação

Transcrição:

A Linguagem de Programação Ruby Diego Rubin http://diegorubin.com @diegorubin

I wanted a scripting language that was more powerful than Perl, and more object-oriented than Python. That's why I decided to design my own language. - Matz

Você vai ouvir falar dessas coisas Git Rdoc Rubygems Rvm Irb

Características Linguagem de Script Totalmente Orientada a Objetos Propósito geral

Forte e dinamicamente tipada i = 4 puts i # 4 puts i.class # Fixnum i/'2' #TypeError: String can't be coerced into Fixnum I/'2'.to_i # 2

Totalmente orientada a objetos 5.class # Fixnum 'uma string'.class # String nil.class # NilClass

Algumas Classes Importantes Fixnum => 1 Bignum => 100000000000000 Float => 1.0 String => String Symbol => :symbol Range => 1..10 Array => ['1',2] Hash => {:primeiro => 1, 'segundo' => 2.0} TrueClass => true FalseClass => false NilClass => nil

Sintaxe - Variáveis Variáveis Globais As variáveis globais devem começar com $. Exemplo:$i = global def teste $i = teste Variareis de Instancia As variáveis de instancia devem começar com @. Variareis de Classe As variáveis de classe devem começar com @@. Exemplo: class Pessoa @@pessoas = 1 def set_nome(nome) @nome = nome def get_nome @nome Constantes Por padrão, constantes devem possuir todas as letras maiúsculas. Exemplo: ARGV

Sintaxe if e Unless if (cond) Comandos else comandos unless (cond) Comandos else comandos Exemplo if (i == 5) puts(i) ou puts(i) if (i == 5)

Sintaxe Bloco de Comandos do <comandos> Ou do args <comandos> Ou { } <comandos> { args <comandos> } Implementação: def metodo yield Utilização: metodo { <comandos> } Com Parâmetros: def metodo(n) yield(n) Utilização: metodo(2) { i i + 3}

Sintaxe - Proc p = Proc.new do <comandos> Ou proc do <comandos> p = Proc.new do args <comandos> Ou proc do args <comandos> Implementação: def metodo yield Utilização: metodo &p Com Parâmetros: def metodo(n) yield(n) Utilização: metodo(2) &p

Sintaxe Operadores Lógicos Operadores Função && and E or OU! not NÃO == IGUAL!= DIFERENTE

Sintaxe - Case case ( variavel) when valor comandos when valor2 comandos else comandos Exemplo1 case (i) when 1..6 puts( esta entre 1 e 6 ) when 8 puts ( i igual a 8 ) else puts ( nao sei ) Exemplo2 case (i) when 1..6 puts( esta entre 1 e 6 ) when string puts ( i não e inteiro ) else puts ( nao sei )

Sintaxe While and Until while (teste logico) comandos until (teste logico) comandos Exemplo while (i < 10) puts i i = i +1 End i = 5 puts i while (i -= 1) > 0 Exemplo until (i > 10) puts i i = i +1 End i = 5 puts i until (i -= 1) < 0

Sintaxe - String string = qualquer string 1 + 1 = #{ 1+ 1} # 1 + 1 = 2 '1 + 1 = #{ 1 + 1}' # 1 + 1 = \#{ 1 + 1} a = <h1> # <h1> a += </h1> # <h1></h1> a.sub( h1, h2 ) # <h2></h1> a.gsub( h1, h2 ) # <h2></h2>

Sintaxe - Regex regx = /\.\w+$/ regx.match( arquivo.txt ) # #<MatchData ".txt"> arquivo.txt.sub(regx, ) # arquivo

Sintaxe - Array Construtor: nome_array = [] Atribuindo Valores: nome_array[0] = 5 nome_array[1] = String nome_array[2] = Pessoa.new nome_array.each { i puts i}

Sintaxe - Hash 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}

Sintaxe Rescue begin Comandos rescue comandos begin Comandos rescue RuntimeError => e Comandos rescue comandos

Sintaxe Retry begin Comandos rescue RuntimeError => e Comandos retry rescue comandos

Sintaxe Raise raise deu erro e = Exception.new( deu problema ) raise e

Sintaxe - Métodos def nome_da_funcao(parametro1, parametro2,...) <bloco de comandos> Exemplo: def alo(nome) puts Oi #{nome}. Parâmetro Variável: def alo(*args) args.each { a puts Oi #{a} } O Comando return: def soma(a,b) a + b def dict(a,b) return a puts b

Sintaxe - Módulos module Nome_do_modulo comandos Exemplo: module Lobo def self.uivar ahuuu Saída: irb(main):036:0> Lobo.uivar => "ahuuu"

Sintaxe - Classe class Nome_da_classe comandos Exemplo 1: class Pessoa def set_nome(nome) @nome = nome def get_nome @nome Instanciando 1: pessoa = Pessoa.new Exemplo 2: class Pessoa def initialize(nome) @nome = nome def set_nome(nome) @nome = nome def get_nome @nome Instanciando 2: pessoa = Pessoa.new( Exemplo ) Observação: O nome das classes devem começar com uma letra maiúscula

Sintaxe Setters e Getters Gera, em tempo de execução, os métodos setters e getters dos atributos. Exemplo: class Pessoa attr_accessor :nome Para gerar somente os setters attr_writer :nome Para gerar somente os getters attr_reader :nome

Sintaxe - Herança class Nome_da_classe < Nome_da_classe_pai comandos Exemplo 1: class Estudante < Pessoa def set_ra(ra) @ra = ra def get_ra @ra Exemplo 2: class Estudante < Pessoa def initialize(nome,ra) @nome = nome @ra = ra def set_ra(ra) @ra = ra def get_ra @ra Instanciando 1: estudante = Estudante.new Instanciando 2: estudante=estudante.new( Exemplo, 001)

Sintaxe Mixin's Alternativa a herança múltipla class Nome_da_classe < Nome_da_classe_pai include nome_do_modulo Exemplo: class Lobisomen < Pessoa include Lobo

Sintaxe - Require Importa arquivos de código. Serve para importar arquivos em código ruby ou código objeto na forma de libs. Exemplo: require arquivo_de_classes.rb require libmysql require rexml/document require myclass.so

Sintaxe Include Importa os métodos de instancia de um módulo para a classe. Os métodos importados serão métodos de instancia. Exemplo: class Pessoa include Estudante

Sintaxe Ext Importa os métodos de instancia de um módulo para a classe. Os métodos importados serão métodos de classe. Exemplo: class Pessoa ext Estudante

Duck Typing If it looks like a duck, swims like a duck, and quacks like a duck, then it probably is a duck. - Duck Test class Music attr_accessor :title class Book attr_accessor :title def print_title(media) klass = case media.class.to_s when "Music" "Múscia" when "Book" "Livro" puts "#{klass}: #{media.title}" m = Music.new; m.title = "Alive" b = Book.new; b.title = "O Rei do Inverno" print_title(m) # "Alive" print_title(b) # "O Rei do Inverno"

Ruby.include?( sobrecarga ) #false Métodos são sobrescrito super acessa o método original

Métodos Singletons 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 def possui_pelos puts possui pelos morcego = Mamifero.new def morcego.voa puts um mamifero que voa

Testes A Comunidade Ruby gosta Diversas ferramentas Test/Unit

Links http://dl.dropbox.com/u/1482800/eustaquiorang el.com/tutorialruby.pdf http://www.ruby-doc.org http://why.nomedojogo.com/