A Linguagem de Programação Ruby. Diego Rubin

Documentos relacionados
Orientação a Objetos com Ruby

Tutorial Ruby versão 0.3 SOBRE O TUTORIAL

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

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

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

Alunos. Hudson Martins da Silva Laércio Pedro Hoppe

Ruby Uma Linguagem Atraente

Programação Orientada a Objetos

Ruby. Simplicidade e produtividade

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

Conceitos de Linguagem de Programação - 2

PROGRAMAÇÃO ORIENTADA A OBJETOS JAVA

Análise de Programação

Linguagem de Programação III

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

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

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

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

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

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

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

Programação Orientada a Objetos em Python

Programação de Computadores II

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

Classes e Objetos. Sintaxe de classe em Java

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

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

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/