CURSO DE EXTENSÃO: Desenvolvimento de Aplicativos WEB com Ruby on Rails

Tamanho: px
Começar a partir da página:

Download "CURSO DE EXTENSÃO: Desenvolvimento de Aplicativos WEB com Ruby on Rails"

Transcrição

1 CURSO DE EXTENSÃO: Desenvolvimento de Aplicativos WEB com Ruby on Rails Jackson Pires de O. S. Júnior Abril de 2008

2 2ª Semana Classes, Objetos, Variáveis, Tipos, Métodos, Exceções, Entrada / Saída

3 Introdução Olá seja bem vindo à segunda aula do curso de extensão de Desenvolvimento de Aplicativos Web com Ruby on Rails. Todo conteúdo do curso está baseado em livros, tutoriais e cursos, a maioria disponíveis na internet, portanto, você pode ampliar ainda mais seu conhecimento procurando mais informações em ferramentas de busca e sites específicos sobre a tecnologia citada. Mais à frente darei algumas referências para que você possa continuar estudando sobre o assunto. Nesta aula faremos uma breve introdução à linguagem Ruby tocando os pontos que facilitarão o desenvolvimento de aplicações Web com o Ruby on Rails. Abaixo temos o conteúdo programático que seguiremos nessa segunda semana: Ruby o Linguagem Classes, Objetos, Variáveis Tipos Métodos Exceções Entrada / Saída

4 Linguagem Dando continuidade ao nosso curso, não poderíamos deixar de nos aprofundar um pouco mais na linguagem que é a base para todo o entimento do framework Ruby on Rails. So assim, tentaremos trazer os conceitos mais importantes da linguagem para que mais à frente possamos desfrutar de suas facilidades no desenvolvimento dos aplicativos WEB. É bom lembrar que não falaremos de conceitos básicos de programação e algorítimo, esse passo já deve ter sido visto em sala de aula. Então mãos à obra!

5 Classes, Objetos e Variáveis Considerando que o Ruby é completamente orientado a objetos, nada mais apropriado que começar nossa exploração do mesmo por essa parte. A primeira coisa que precisamos no nosso processo de compreensão do Ruby é enter como variáveis funcionam. No Ruby, como na maior parte das linguagens orientadas a objeto, as variáveis são simplesmente referências a objetos. Veja o exemplo abaixo: ~$ irb irb(main):001:0> a = 1 => 1 irb(main):002:0> a = "1" => "1" No exemplo acima, atribuímos a valor inteiro 1 à variável a e depois atribuímos à mesma variável, o valor 1, que é uma seqüência de caracteres. Isso, e o fato de que nenhum erro ocorreu, demonstram duas coisas sobre o Ruby. Primeiro, variáveis simplesmente apontam para os valores atribuídos à mesma, e, por causa disso, podem ser re-atribuídas de acordo com necessidade; segundo, variáveis não precisam ser declaradas. Um exemplo posterior poderia ser: ~$ irb irb(main):001:0> a = 1 => 1 irb(main):002:0> a.class => Fixnum irb(main):003:0> a = "1 " => "1 " irb(main):004:0> a.class => String Note que mesmo tipos primitivos como o número inteiro 1 são membros de uma classe no caso Fixnum, que é a classe que define números com representação fixa. Considere agora o seguinte trecho de código: ~$ irb irb(main):001:0> 1.class

6 => Fixnum irb(main):002:0> 1.class.class => Class irb(main):003:0> 1.class.superclass => Integer irb(main):004:0> Note que 1 é uma instância da classe Fixnum. A classe Fixnum, por sua vez, é também um objeto, uma instância da classe Class, que define todas as classes em Ruby. Class é chamada a metaclasse de Fixnum, ou seja, é uma classe que descreve uma classe. Na terceira linha temos outro conceito de orientação a objetos que é a superclasse de uma classe, ou seja, a classe da qual a mesma é derivada. No caso de Fixnum, temos a seguinte hierarquia: Object => Numeric => Integer => Fixnum. Esses dois conceitos, metaclasses e superclasses, são importantes em qualquer linguagem orientada a objeto e precisam ser compreidos por qualquer programador. Outro aspecto com o qual os programadores estão acostumados é ter uma separação muito distinta entre tipos primitivos e objetos. Em Java, 3 é um inteiro, uma estrutura primitiva de 32-bits. Se precisamos de um objeto em torno desse primitivo, embrulhamos em torno uma instância da classe Integer. Em Ruby 3 é um objeto, tipo Fixnum. Como tal, tem diversos métodos. Por Exemplo: ~$ irb irb(main):001:0> 1.to_s => "1" irb(main):002:0> => 2 irb(main):003:0> 1.+(1) => 2 irb(main):004:0> -1.abs => 1 irb(main):005:0> "123".length => 3 No exemplo acima, temos várias invocações de métodos de determinados objetos. O primeiro método invocado, to_s, converte um valor numérico em

7 uma string correspondente. O segundo exemplo é ainda mais interessante. Note que fizemos uma operações, somando dois números. Mas, como podemos ver logo abaixo, a operação é simplesmente uma invocação de um método do objeto. Obviamente que, para uso diário, utilizaremos à primeira sintaxe. É importante, porém, compreer que isso é válido para basicamente todos os métodos do Ruby e que isso pode ser usado em suas próprias classes. Uma maneira fácil de visualizar os métodos que uma classe possui é chamar o seu método methods, como pode ser visto abaixo: ~$ irb irb(main):001:0> 1.methods => ["%", "inspect", "<<", "singleton_method_added", "&", "clone", ">>", "ceil", "public_methods", "instance_variable_defined?", "div", "equal?", "freeze", "times", "*", "+", "to_i", "methods", "respond_to?", "-", "upto", "between?", "prec", "round", "/", "method", "dup", "instance_variables", " id ", "divmod", "chr", "succ", " ", "eql?", "integer?", "~", "id", "to_f", "singleton_methods", "s", "prec_i", "taint", "truncate", "to_int", "frozen?", "instance_variable_get", " s ", "^", "instance_of?", "modulo", "to_a", "object_id", "zero?", "type", "**", "<", "protected_methods", "<=>", "instance_eval", "==", "prec_f", "quo", ">", "===", "step", "id2name", "size", "instance_variable_set", "kind_of?", "remainder", "ext", ">=", "nonzero?", "next", "to_s", "<=", "coerce", "hash", "floor", "class", "tainted?", "=~", "private_methods", "display", "fdiv", "nil?", "untaint", "downto", "to_sym", "[]", "is_a?", "abs"] Esses são todos os métodos públicos compartilhados pelas instâncias da classe Fixnum. Como classes podem possuir métodos públicos, protegidos e privados, a distinção pode ser obtida invocando os métodos public_methods, protected_methods e private_methods de uma instância qualquer. Incidentemente, classes são objetos também, com seus próprios métodos. Você pode observar isso invocando o método acima em uma classe, usando, por exemplo: ~$ irb irb(main):001:0> String.public_methods

8 => ["inspect", "private_class_method", "const_missing", "clone", "public_methods", "public_instance_methods", "instance_variable_defined?", "method_defined?", "superclass", "equal?", "freeze", "included_modules", "const_get", "autoload?", "methods", "respond_to?", "module_eval", "class_variables", "method", "dup", "protected_instance_methods", "instance_variables", "public_method_defined?", " id ", "eql?", "const_set", "id", "singleton_methods", "s", "class_eval", "taint", "frozen?", "instance_variable_get", "include?", "private_instance_methods", " s ", "instance_of?", "private_method_defined?", "to_a", "object_id", "name", "type", "new", "<", "protected_methods", "instance_eval", "<=>", "==", ">", "===", "instance_variable_set", "kind_of?", "ext", "protected_method_defined?", "const_defined?", ">=", "ancestors", "to_s", "<=", "public_class_method", "autoload", "allocate", "hash", "class", "instance_methods", "tainted?", "=~", "private_methods", "class_variable_defined?", "display", "nil?", "instance_method", "untaint", "constants", "is_a?"] Aqui cabe uma explicação sobre uma diferença do Ruby para outras linguagens orientadas a objetos. Métodos públicos são métodos acessíveis a todo o programa. Métodos protegidos são acessíveis somente a instâncias da própria classe e subclasses da mesma. Em Ruby, porém, métodos privados possuem uma distinção sutil: eles somente podem ser chamados com um receptor explícito, ou seja, dentro do próprio objeto. Isso significa que subclasses podem também chamar os métodos privados de sua superclasse, mas somente dentro do seu próprio contexto de execução. Objetos, como instâncias de classes, podem ser criados implicitamente ou explicitamente em Ruby. Acima, vimos alguns exemplos de criação implícita, que é comum a todos os tipos primitivos. A criação explícita, porém, é feita através da invocação do método new: ~$ irb irb(main):001:0> a = "Uma string qualquer" => "Uma string qualquer" irb(main):002:0> b = String.new("Uma string qualquer") => "Uma string qualquer" irb(main):003:0> a == b => true irb(main):004:0> require 'date' => true

9 irb(main):005:0> d = Date.new(2007, 1, 1) => #<Date: /2,0, > irb(main):006:0> d.day => 1 irb(main):007:0> d.year => 2007 Note que nas primeiras declarações criamos uma string de maneira implícita e de maneira explícita. Uma comparação entre as duas revela que não há diferença na criação, ou seja, a criação implícita é essencialmente o mesmo que uma chamada ao método new seguida de uma atribuição. No exemplo seguinte, temos a criação de um objeto que não possui criação implícita. Note também que o objeto não faz parte do núcleo do Ruby, mas é implementado em uma biblioteca externa que é adquirida para o contexto atual através do método require. Esse método, embora seja invocado aparentemente sem um objeto receptor, é na verdade um método do módulo Kernel, incluindo na classe Object, que provê uma série de métodos comuns para o ambiente de execução Ruby. Veremos mais sobre módulos em seções seguintes. Como podemos notar de tudo o que foi visto acima, o Ruby é realmente uma linguagem orientada a objetos em toda a sua extensão. Todo valor criado é uma instância de uma classe qualquer, mesmo as próprias classes. Desafio 1.O Ruby possui um método chamado id, comum a todas as classes e objetos. O que esse método faz? 2.Faça um teste, criando duas variáveis inteiras. Compare os ids das mesmas. Qual é o resultado? 3.Faça o mesmo teste com duas variáveis String. Qual é o resultado agora? 4.Por que você acha que isso acontece?

10 Mas o que são Símbolos no Ruby? Bom, esse trechinho da apostila entra pra deixar você ainda mais à vontade com a linguagem Ruby. Mais à frente vamos nos deparar com trechos de códigos mais ou menos assim: a = :teste Vamos notar então que existe : (dois pontos) na frente do nome teste, não se preocupe, não é erro de digitação, isto meu caro amigo é um símbolo ou se preferir um symbol. Bom, para começarmos a enter símbolos no Ruby é interessante ler um post que o Fabio Akita deixou em seu blog <http://www.akitaonrails.com/2007/11/26/rubysymbols>, esse post faz demonstrações muito boas para o entimento do assunto, não deixem de visitá-lo. Por hora, basta termos em mente o seguinte. Pense em símbolos como Strings Leves. Eles representam nomes e algumas String dentro do interpretador Ruby, e são sempre o mesmo objeto durante a execução de um programa. Ou ainda dizemos que são representações eficientes de um valor qualquer, não muito diferentes de constantes Um exemplo prático seria: ~$ irb irb(main):001:0> s1 = :fasete => :fasete irb(main):002:0> s2 = :fasete => :fasete irb(main):003:0> s3 = :fasete => :fasete irb(main):004:0> s1.object_id => irb(main):005:0> s2.object_id => irb(main):006:0> s3.object_id =>

11 Observe que todos apontam para o mesmo objeto, diferentemente da utilização de Strings comuns. Continuando... Agora que trabalhamos um pouco com os conceitos básicos de classes, objetos e variáveis, é hora de criar as nossas próprias classes, experimentando um pouco mais com o sistema de objetos do Ruby. Criar uma classe é bem simples em Ruby. Basta fazer o seguinte: class Carro def initialize(marca, = = modelo O código acima define uma classe chamada Carro que possui um método chamado initialize. Esse método possui uma conotação especial em Ruby, so o método que é invocado quando a instância de uma classe é criada. Vejamos isso em um exemplo: irb(main):007:0> gol = Carro.new("Volkswagem", "Gol") irb(main):008:0> O código acima cria uma instância da classe Carro, atribuindo os parâmetros a variáveis de instância da classe (identificadas pelo na frente dos seus nomes). Note que new é usado e não initialize, so que este último é invocado automaticamente. Esse é um detalhe de implementação do Ruby, so que o método initialize é automaticamente marcado com private.

12 Dica: Segundo convenções Ruby, nos nomes dos métodos devem-se usar letras minúsculas separando as palavras com um sublinhado (_), porém no nome das classes é utilizado camel case, da mesma maneira que no Java, com maiúsculas separando dois ou mais nomes da classe. Exemplos: MinhaClasse MeuTeste CarroPersonalizado. Dica: Caso você não queira ficar colando o código a todo momento, salve um arquivo com um nome qualquer e a extensão.rb e use o método load para carregar esse arquivo, lembrando que load requer o nome completo do arquivo a carregar, incluindo a extensão. Note que se você tentar extrair o valor de uma variável de instância acima, você verá um erro. Por exemplo: irb(main):009:0> gol.marca NoMethodError: undefined method `marca' from (irb):9 Variáveis de instância são automaticamente internas e você só pode extrair o valor das mesmas publicamente criando um método específico para isso. Falando em métodos, podemos criar um método para a nossa classe para ver como os mesmos funcionam. Antes vejamos a próxima linha: irb(main):010:0> gol.to_s => "#<Carro:0x2af9068>" Vamos aproveitar para substituir a inconveniente representação textual acima por uma de nosso interesse. Isso é feito criando um método chamado to_s, que já mencionamos anteriormente. Esse método converte um objeto qualquer em sua representação textual.

13 Todos objetos em Ruby possuem esse método, embora sua implementação inicial seja bem limitada. Podemos sobrescrever o método assim: class Carro def initialize(marca, = = modelo def to_s marca: modelo O código acima apresenta algumas características interessantes. Primeiro, ele retorna a representação textual do objeto, mas sem invocar qualquer expressão de retorno. Ruby possui, realmente, uma expressão return, mas a mesmo não precisa ser usada na maior parte dos casos. Isso acontece porque qualquer expressão em Ruby retorna automaticamente um valor. Se o valor não é explicitamente retornado, o valor nil é usado implicitamente. Isso significa que um método retorna o resultado de sua última expressão, sem necessidade de chamar return. No método acima, estamos retornando também uma string, usando o que é chamado de interpolação de valores. Qualquer expressão entre os delimitadores #{} dentro de uma string será executada e seu valor representacional retornado isto é o método to_s do valor resultante é invocado automaticamente. Veja o resultado do método acima: irb(main):010:0> gol = Carro.new("Volkswagem", "Gol") irb(main):011:0> gol irb(main):012:0> gol.to_s => "marca: Volksvagem, modelo Gol" Voltando à questão dos atributos, se quisermos torná-los manipuláveis, podemos usar a seguinte implementação:

14 class Carro def initialize(marca, = = modelo def to_s marca: modelo def def Isso permite o seguinte código: irb(main):016:0> gol = Carro.new("Volkswagem","Gol") irb(main):017:0> gol.marca => "Volkswagem" irb(main):018:0> gol.marca = "Nova Volks" => "Nova Volks" irb(main):019:0> gol.marca => "Nova Volks" Note que agora temos métodos que podemos usar para obter ou mudar o valor de um atributo do objeto. Os métodos que mudam o valor possuem um sinal de igual (=) em seu nome e são usados automaticamente pelo Ruby em caso de atribuição como o exemplo demonstra. Para encurtar ainda mais, Ruby permite que declaremos métodos de acesso à essas variáveis de uma forma diferente, observe o código: class Carro attr_reader :marca attr_writer :modelo def initialize(marca, = marca

15 @modelo = modelo def to_s marca: modelo ou ainda: class Carro attr_accessor :marca attr_reader :modelo def initialize(marca, = = modelo def to_s marca: modelo Note o início de cada código temos readers, writers e accessors e que eles usam símbolos para fazerem referências à variáveis de classe. Estes funcionam como um atalho para a operação tediosa que fizemos anteriormente. Resumindo, o attr_reader permite apenas leitura, o attr_writer permite apenas escrita e o attr_accessor permite escrita e leitura. Observe: irb(main):012:0> gol = Carro.new("Volkswagem", "Gol") irb(main):013:0> gol.marca => "Volkswagem" irb(main):014:0> gol.modelo NoMethodError: undefined method `modelo' from (irb):14 irb(main):015:0> gol.marca = "Nova Volks" NoMethodError: undefined method `marca=' from (irb):15 irb(main):016:0> gol.modelo = "Novo Gol" => "Novo Gol"

16 Pra fechar essa parte, como seriam feitas heranças em Ruby? Herança simples em Ruby é bastante trivial: class B < A A declaração acima indica que a classe B herda os métodos da classe A. Variáveis de classe, variáveis de instância, e variáveis de instância de classe seguem as regras descritas anteriormente. Ou seja o exts utilizado no Java, fica assim classe filha < classe pai, no Ruby. Veremos isso com mais detalhes em nossas andanças pelo Rails.

17 Tipos Considerando o fato de que o Ruby é completamente orientado a objetos, todos os seus tipos são representados por classes e uso dos mesmos é bem objetivo e direto. Ainda assim, é bom enter quais são os tipos básicos, quais são os seus detalhes de implementação, e, acima de tudo, quais são as suas limitações. O Ruby possui uma hierarquia relativamente extensa até mesmo para os tipos primitivos. Conhecer essa hierarquia é interessante como uma forma de enter mais como o Ruby funciona e serve como um bom exercício. O tipo mais básico do Ruby é o tipo numérico, em suas duas variantes: inteiro e de ponto flutuante. Os tipos são implementados por classes diferentes, mas a interoperabilidade dos mesmos é similar ao que se vê em outras linguagens de programação. ~$ irb irb(main):001:0> 1.class => Fixnum irb(main):002:0> 1.0.class => Float irb(main):003:0> 1_000_000.class => Fixnum Como o exemplo acima mostra, o Ruby é inteligente o bastante para conseguir operar com métodos mesmo no caso de números de ponto flutuante. A forma exemplificada na terceira linha de código é uma maneira de representar números com mais clareza, e pode ser usada em opção à maneira usual de declaração de números. Um detalhe interessante é que a exemplo do Smalltalk, Lisp e outras linguagens similares o Ruby permite o uso de número inteiros de tamanho arbitrário. Inclusive, há uma conversão automática quando o número excede a capacidade de representação dos inteiros. Veja o exemplo abaixo:

18 ~$ irb irb(main):001:0> 1_000_000_000 * 1_000_000_000 => irb(main):001:2> (1_000_000_000 * 1_000_000_000).class => Bignum A classe Bignum é capaz de representar número com precisão infinita, restrita somente à memória e processamento da máquina hospedeira. O próximo tipo primitivo do Ruby descreve a representação de valores booleanos. O Ruby possui duas pseudo-variáveis que representam esses valores, so essas variáveis as únicas instâncias das suas respectivas classes. Veja o exemplo abaixo: ~$ irb irb(main):001:0> true => true irb(main):002:0> false => false irb(main):003:0> true.class => TrueClass irb(main):004:0> false.class => FalseClass irb(main):005:0> true.class.superclass => Object irb(main):006:0> false.class.superclass => Object irb(main):007:0> TrueClass.new NoMethodError: undefined method `new' for TrueClass:Class from (irb):7 from :0 Note que uma tentativa de instanciar qualquer das duas classes booleanas resulta em um erro. O Ruby remove a definição do método new dessas classes para evitar qualquer problema. Além dessas duas variáveis, existe outra pseudo-variável especial que é o valor nil, que representa nulo. A exemplo das variáveis booleanas, esse valor é a única instância da classe NilClass.. Prosseguindo, temos o tipo que representa seqüências de caracteres, tipo este que é definido pela classe String:

19 ~$ irb irb(main):001:0> "123".length => 3 Considerando que o Ruby é muito voltado para processamento de texto inspirado sem dúvida por sua herança Perl a classe String foi desenhada com uma enorme gama de métodos que podem ser utilizados para esse tipo de trabalho. Além disso, há várias bibliotecas completando o que a classe não apresenta por padrão um tributo à flexibilidade do Ruby. Dois detalhes devem ser considerados quando se trabalha com textos em Ruby. O primeiro é que não existe um tipo para caracteres. Isso leva à situação abaixo: ~$ irb irb(main):001:0> "123"[0] => 49 irb(main):002:0> "123"[0].chr => "1" irb(main):003:0> "123"[0, 1] => "1" Acessar diretamente uma posição de uma String retorna o valor inteiro que representa aquele caractere. As duas outras linhas mostram a forma de obter o valor como uma String de tamanho um: você pode usar o método chr, ou pode obter um pedaço posicionado da String, do tamanho desejado. O segundo detalhe é que o Ruby não suporta Unicode ou UTF-8 por padrão. Veja o exemplo abaixo: ~$ irb irb(main):001:0> "Sábado"[0,2] => "S\303" irb(main):002:0> "Sábado"[0,3] => "S\303\241" irb(main):003:0> "Sábado"[0,4] => "S\303\241b" irb(main):004:0> "Sábado"[1].chr => "\303" irb(main):005:0> "Sábado"[2].chr

20 => "\241" irb(main):006:0> "Sábado"[3].chr => "b" irb(main):007:0> "Sábado".length => 7 Note que pelo fato do a acentuado ocupar dois bytes em uma representação não-ascii, o Ruby falha em suas funções mais elementares. Existem bibliotecas que procuram resolver o problema em graus variados, com inclusive uma delas estando embutida no próprio Rails. Os planos são de que a próxima versão do Ruby suporte Unicode nativamente. Uma característica da manipulação de texto em Ruby é que as strings geradas no mesmo são mutáveis, isto é, qualquer operação normal em uma string aloca uma nova string automaticamente. Por isso, é possível encontrar vários métodos com duas versões: uma que retorna um novo objeto e uma que modifica o objeto existente. Veja o exemplo abaixo: irb(main):001:0> s1 = "abc" => "abc" irb(main):002:0> s2 = s1 => "abc" irb(main):003:0> s2.object_id == s1.object_id => true irb(main):004:0> s2 = s1.upcase => "ABC" irb(main):005:0> s2 => "ABC" irb(main):006:0> s2.object_id => irb(main):007:0> s1 => "abc" irb(main):008:0> s1.object_id => irb(main):009:0> s1.upcase! => "ABC" irb(main):010:0> s1.object_id =>

21 O exemplo mostra que existem métodos que retornam uma nova string com as modificações e métodos que modificam a string sem alocar nova memória. Esses métodos destrutivos geralmente possuem o sufixo! (upcase!, gsub!, etc) para distingui-los dos métodos não-destrutivos (upcase, gsub, etc). Essa característica do Ruby pode causar algumas diferenças de performance em loops se o programador não for cuidadoso. Considere a seguinte situação: um loop em que uma variável string é concatenada repetidamente. O exemplo abaixo mostra essa diferença: ~$ irb irb(main):001:0> s = "" => "" irb(main):005:0> for a in [1, 2, 3] irb(main):006:1> s = s + a.to_s irb(main):007:1> puts s.object_id irb(main):008:1> => [1, 2, 3] irb(main):009:0> for a in [1, 2, 3] irb(main):010:1> s << a.to_s irb(main):011:1> puts s.object_id irb(main):012:1> => [1, 2, 3] irb(main):013:0> s => "123123" O exemplo mostra claramente que, no primeiro caso, um objeto novo é gerado a cada iteração do loop; no segundo caso, entretanto, isso não acontece: a string é meramente re-alocada de maneira eficiente. Isso pode significar uma boa diferença de performance quando se trabalha com textos de tamanho razoável. Existem várias formas de declarar strings em Ruby. Veja o exemplo abaixo:

22 ~$ irb irb(main):001:0> a = "valor" => "valor" irb(main):002:0> 'string com aspas simples: #{a}' => "string com aspas simples: \#{a}" irb(main):003:0> "string com aspas duplas: #{a}" => "string com aspas duplas: valor" irb(main):004:0> %(string com marcadores especiais: #{a}) => "string com marcadores especiais: valor" irb(main):005:0> s = <<EOF irb(main):006:0" uma string com irb(main):007:0" quebra de linha irb(main):008:0" e espacamento irb(main):009:0" EOF => "uma string com\n quebra de linha\n e espacamento\n" Com exceção da aspas simples, todas as outras formas de declaração de strings aceitam interpolação, isto é, a inserção de valores por meio de marcadores especiais em uma string usando #{expressão}. O Ruby aceita essa gama de declarações de strings com o objetivo de facilitar o uso de caracteres especiais. A lista abaixo é um resumo dessas formas de declaração. 'sem interpolacao,' interpolacao e contra-barras %q(sem interpolacao) %Q(interpolacao e contra-barras) %(interpolacao e contra-barras) Um outro tipo interessante do Ruby é o range, que define uma faixa de valores. Ele é muito útil para loops e muito fácil de ser usado: ~$ irb irb(main):001:0> (1..10) => irb(main):002:0> ('A'..'Z') => "A".."Z" irb(main):003:0> 'A'..'Z' => "A".."Z" irb(main):004:0> for i in ('A'..'C')

23 irb(main):005:1> puts i irb(main):006:1> A B C Dois outros tipos básicos que vamos explorar são Array e Hash, que possuem muitas similaridades. Um Array é uma vetor numericamente indexado, enquanto um Hash é um vetor associativo, que permite acesso randômico com maior eficiência. Veja os exemplos abaixo: ~$ irb irb(main):001:0> a = [1, 2, 3] => [1, 2, 3] irb(main):002:0> b = { :a => "Valor 1", :b => "Valor 2" } => {:b=>"valor 2", :a=>"valor 1"} irb(main):003:0> a[0] => 1 irb(main):004:0> a[:b] TypeError: Symbol as array index from(irb):4:in `[]' from (irb):4 from :0 irb(main):005:0> b[:a] => "Valor 1" irb(main):006:0> b[0] => nil irb(main):007:0> b.default = "Valor Default" => "Valor Default" irb(main):008:0> b[0] => "Valor Default" Note que o Array somente permite acesso por índices numéricos, enquanto Hash aceita qualquer objeto, retornando o valor nil se nenhuma chave correspondente for encontrada. Um valor padrão pode ser dado ao Hash para facilitar o retorno se necessário.

24 Métodos Até o momento já usamos bastante os vários métodos das classes primitivas do Ruby, mas ainda não utilizamos plenamente as características dos mesmos. Um método é simplesmente uma mensagem que um objeto pode executar. Se dois objetos respondem à mesma mensagem, eles podem ser trabalhados pelo mesmo código, indepentemente das classes em questão. Essa é uma das maiores vantagens de linguagens dinâmicas com Ruby, Python e Smalltalk e embora possa parecer que isso dá origem a mais erros no desenvolvimento, o inverso é verdadeiro: a flexibilidade da linguagem propicia um código mais limpo com menor incidência de erros. O uso simples de métodos é bem trivial: ~$ irb irb(main):001:0> def metodo(param1, param2) irb(main):002:1> param1 + param2 irb(main):003:1> => nil irb(main):004:0> metodo(1, 2) => 3 irb(main):005:0> metodo 1, 2 => 3 Note que não é necessário usar parênteses a menos que você precise desambiguar algum parâmetro. O mesmo é válido para a própria declaração do método, embora isso não esteja demonstrado acima. E embora seja possível ignorá-los em muitos casos, usar parênteses confere uma legibilidade melhor ao código e é mais desejável na maioria dos casos. O exemplo abaixo, mostra uma outra característica dos métodos Ruby: a possibilidade de receber uma quantidade de parâmetros arbitrária:

25 ~$ irb irb(main):001:0> def metodo(*args) irb(main):002:1> for a in args irb(main):003:2> puts a irb(main):004:2> irb(main):005:1> => nil irb(main):006:0> metodo(1) 1 => [1] irb(main):007:0> metodo(1, 2, 3) => [1, 2, 3] irb(main):008:0> metodo((1..3)) 1..3 => [1..3] irb(main):009:0> metodo(*(1..3)) No exemplo acima, criamos um método que simplesmente imprime todos os valores que lhe foram passados. O sinal de * é conhecido como splat operator e possui dois propósitos: primeiro, na declaração de um método, como na primeira linha, ele especifica que o Ruby deve pegar todos os parâmetros e passá-los em um array para o método. Segundo, como na última linha, ele tem o efeito contrário, ele pede ao Ruby que expanda uma seqüência qualquer em um array. Essas duas aplicações são igualmente importantes e devem ser entidas com clareza. Por fim, métodos podem receber blocos como parâmetros, tanto para execução interna como para retorno parcial de valores. Vamos mostrar no momento somente o uso simples de blocos e retornar ao assunto mais adiante, quando necessário:

26 ~$ irb irb(main):001:0> def metodo(s) irb(main):002:1> yield(s) irb(main):003:1> => nil irb(main):004:0> metodo(2) { i i + i } => 4 irb(main):005:0> metodo("2") { i i + i } => "22" Esse é um exemplo muito simples, mas mostra que blocos de código são variáveis de primeira classe, capaz de interagir com o ambiente como qualquer outro objeto. Aqui notamos o uso dos blocos associadas a código do Ruby, que existem na seguinte forma: do parametros { parametros } O exemplo acima poderia ser reescrito na outra variante: ~$ irb irb(main):001:0> def metodo(s) irb(main):002:1> yield(s) irb(main):003:1> => nil irb(main):004:0> metodo(2) do i irb(main):005:1* i + i irb(main):006:1> => 4irb(main):007:0> metodo("2") do i irb(main):008:1* i + i irb(main):009:1> => "22" Não existe diferença funcional entre os dois estilos, mas a forma { } é geralmente usada mais quando o resultado é importante, e do quando o resultado pode ser descartado, principalmente em loops mais extensos.

27 Expressões Agora que experimentamos um pouco com métodos e tipos em Ruby, podemos partir para a verificação das expressões possíveis na linguagem. Essa verificação é interessante, inclusive, por nos permitir comparar as possibilidades que o Ruby oferece em termos de construções sintáticas versus métodos de primeira classe presentes em sua hierarquia de objetos. A maior diferença entre o Ruby e a maioria das outras linguagens é que basicamente tudo o que pode retornar um valor em Ruby, retorna. Isso permite encadear expressões de uma maneira bem eficiente e prática. Por exemplo: ~$ irb irb(main):001:0> a = b = c = 0 => 0 irb(main):002:0> Class.superclass.superclass Isso se aplica também ao que seriam meras declarações em outras linguagens. Por exemplo: rating = if value == 0 "Terrible" elsif value < 2 "Passable" elseif value < 4 "Nice" else "Superb" Basicamente toda expressão em Ruby pode ser usada dessa forma. A sintaxe das principais expressões é a seguinte:

Bruno Jurkovski Lucas Fialho Zawacki. Site do curso: www.inf.ufrgs.br/pet/cursos/ruby

Bruno Jurkovski Lucas Fialho Zawacki. Site do curso: www.inf.ufrgs.br/pet/cursos/ruby Bruno Jurkovski Lucas Fialho Zawacki Site do curso: www.inf.ufrgs.br/pet/cursos/ruby Por que Ruby? Sintaxe limpa e intuitiva: Por que Ruby? Fortemente orientada à objetos Note que não temos os tipos primitivos,

Leia mais

Bruno Jurkovski Lucas Fialho Zawacki. Site do curso: www.inf.ufrgs.br/pet/cursos/ruby

Bruno Jurkovski Lucas Fialho Zawacki. Site do curso: www.inf.ufrgs.br/pet/cursos/ruby Bruno Jurkovski Lucas Fialho Zawacki Site do curso: www.inf.ufrgs.br/pet/cursos/ruby Recapitulando... Escopos Constantes Tipagem Métodos Input Estruturas de Controle e Repetição Classes Nativas Blocos

Leia mais

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

Linguagem de Programação. Helder Lucas S. Silas Valdemar Linguagem de Programação Helder Lucas S. Silas Valdemar Perl, Smalltalk, Eiffel, Ada e Lisp. Mais poderosa do que Perl, e mais orientada a objetos do que Python. Yukihiro Matsumoto Matz Coral ou Ruby?

Leia mais

Tutorial Ruby versão 0.3 djalmaoliveira@gmail.com SOBRE O TUTORIAL

Tutorial Ruby versão 0.3 djalmaoliveira@gmail.com SOBRE O TUTORIAL SOBRE O TUTORIAL Este tutorial cobre alguns aspectos da linguagem Ruby, mostra de forma simples algumas de suas características através de exemplos e curtas descrições de conceitos, não se propondo ser

Leia mais

Começando com Ruby on Rails @gibsongabriel

Começando com Ruby on Rails @gibsongabriel Começando com Ruby on Rails @gibsongabriel Yukiriho 'Matz' Matsumoto http://ruby-lang.org/pt/ Ruby é uma linguagem de programação interpretada, com tipagem forte e dinâmica, que tem como foco a simplicidade

Leia mais

Ruby e Ruby on Rails

Ruby e Ruby on Rails Ruby e Ruby on Rails Universidade Federal de São Carlos Anderson Kenji Mise kenji@vardump.com Ruby? linguagem de programação orientada a objetos (tudo é objeto) Ruby on Rails? RoR é um framework para desenvolvimento

Leia mais

Alunos. Hudson Martins da Silva Laércio Pedro Hoppe

Alunos. Hudson Martins da Silva Laércio Pedro Hoppe Alunos Hudson Martins da Silva Laércio Pedro Hoppe Desenvolvida no Japão em 1995, por Yukihiro "Matz" Matsumoto. Linguagem de script. Mais poderosa do que Perl, e mais orientada a objetos do que Python.

Leia mais

Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo:

Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo: Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

Leia mais

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

História. Nasceu em 1993, numa discussão entre Yuhikiro Matsumoto e um colega. 1 1. Overview 2 História Nasceu em 1993, numa discussão entre Yuhikiro Matsumoto e um colega. Matz procurava por uma linguagem de script orientada a objetos. A primeira versão estável de Ruby (1.2) foi

Leia mais

Ruby. Conceitos básicos. Prof. Ms. Leonardo Botega. Diego Gabriel Pereira

Ruby. Conceitos básicos. Prof. Ms. Leonardo Botega. Diego Gabriel Pereira Ruby Conceitos básicos Prof. Ms. Leonardo Botega Diego Gabriel Pereira Quem somos nós Leonardo Botega Bacharel em Ciência da Computação UNIVEM Mestre em Ciência da Computação UFSCar Doutorando em Ciência

Leia mais

Algoritmos em Javascript

Algoritmos em Javascript Algoritmos em Javascript Sumário Algoritmos 1 O que é um programa? 1 Entrada e Saída de Dados 3 Programando 4 O que é necessário para programar 4 em JavaScript? Variáveis 5 Tipos de Variáveis 6 Arrays

Leia mais

APOSTILA PHP PARTE 1

APOSTILA PHP PARTE 1 APOSTILA PHP PARTE 1 1. Introdução O que é PHP? PHP significa: PHP Hypertext Preprocessor. Realmente, o produto foi originalmente chamado de Personal Home Page Tools ; mas como se expandiu em escopo, um

Leia mais

Linguagens de programação

Linguagens de programação Prof. André Backes Linguagens de programação Linguagem de Máquina Computador entende apenas pulsos elétricos Presença ou não de pulso 1 ou 0 Tudo no computador deve ser descrito em termos de 1 s ou 0 s

Leia mais

Minicurso de Python Aula 1. Raphael Lupchinski Marcelo Millani

Minicurso de Python Aula 1. Raphael Lupchinski Marcelo Millani Minicurso de Python Aula 1 Raphael Lupchinski Marcelo Millani Introdução Python é uma linguagem de programação poderosa e fácil de aprender Possui estruturas de dados eficientes e de alto nível, além de

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 07 Nomes, Vinculações, Escopos e Tipos de Dados Edirlei Soares de Lima Introdução Linguagens de programação imperativas são abstrações

Leia mais

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP AGRUPAMENTO DE ESCOLAS DE SANTA COMBA DÃO CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS 2012-2015 PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO MÓDULO 2 Mecanismos de Controlo de

Leia mais

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação Lógica de Programação 3. INTRODUÇÃO À LINGUAGEM C Caro Aluno Vamos iniciar o terceiro capítulo da nossa disciplina. Agora vamos começar a aplicar os conceitos vistos nos capítulos anteriores em uma linguagem

Leia mais

Introdução à Linguagem

Introdução à Linguagem Introdução à Linguagem Curso de Nivelamento do PPGMNE Janeiro / 2011 Juliano J. Scremin jjscremin@jjscremin.t5.com.br Um pouco de história Um pouco de história: Nascimento do Python Um pouco de história:

Leia mais

Aula 1 Considerações Iniciais. Tópico 1 O que é Ruby? Tópico 2 O que é RGSS? Tópico 3 Sintaxe

Aula 1 Considerações Iniciais. Tópico 1 O que é Ruby? Tópico 2 O que é RGSS? Tópico 3 Sintaxe Introdução Olá! Bem vindo a Bíblia do RGSS! Aqui você vai aprer muita coisa sobre a linguagem. Gostaria de agradecer a você que mostrou interesse para aprer e baixou este tutorial, ele foi feito com muita

Leia mais

Programação Elementar de Computadores Jurandy Soares

Programação Elementar de Computadores Jurandy Soares Programação Elementar de Computadores Jurandy Soares Básico de Computadores Computador: dispositivos físicos + programas Dispositivos físicos: hardware Programas: as instruções que dizem aos dispositivos

Leia mais

Módulo 06 Desenho de Classes

Módulo 06 Desenho de Classes Módulo 06 Desenho de Classes Última Atualização: 13/06/2010 1 Objetivos Definir os conceitos de herança, polimorfismo, sobrecarga (overloading), sobreescrita(overriding) e invocação virtual de métodos.

Leia mais

Curso de Linguagem C

Curso de Linguagem C Curso de Linguagem C 1 Aula 1 - INTRODUÇÃO...4 AULA 2 - Primeiros Passos...5 O C é "Case Sensitive"...5 Dois Primeiros Programas...6 Introdução às Funções...7 Introdução Básica às Entradas e Saídas...

Leia mais

JSP - ORIENTADO A OBJETOS

JSP - ORIENTADO A OBJETOS JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...

Leia mais

Laboratório de Programação - Exercícios 12, 13 e 14

Laboratório de Programação - Exercícios 12, 13 e 14 Laboratório de Programação - Exercícios 12, 13 e 14 If, switch e funções João Araujo Ribeiro jaraujo@uerj.br Universidade do Estado do Rio de Janeiro Departamento de Engenharia de Sistemas e Computação

Leia mais

Ruby on Rails do Básico ao Avançado

Ruby on Rails do Básico ao Avançado Ruby on Rails do Básico ao Avançado Aula 01 Introdução ao Ruby, Instalação e Linguagem 1 Se você se inscreveu neste curso, obviamente está interessado em aprer ou avançar seu conhecimento sobre Rails e

Leia mais

Java Como Programar, 8/E

Java Como Programar, 8/E Capítulo 2 Introdução aos aplicativos Java Java Como Programar, 8/E (C) 2010 Pearson Education, Inc. Todos os 2.1 Introdução Programação de aplicativo Java. Utilize as ferramentas do JDK para compilar

Leia mais

Javascript 101. Parte 2

Javascript 101. Parte 2 Javascript 101 Parte 2 Recapitulando O Javascript é uma linguagem de programação funcional Os nossos scripts são executados linha a linha à medida que são carregados. O código que está dentro de uma função

Leia mais

Resumo da Introdução de Prática de Programação com C. A Linguagem C

Resumo da Introdução de Prática de Programação com C. A Linguagem C Resumo da Introdução de Prática de Programação com C A Linguagem C O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional

Leia mais

Danilo Borges da Silva daniloborges_@hotmail.com

Danilo Borges da Silva daniloborges_@hotmail.com Danilo Borges da Silva daniloborges_@hotmail.com Simples o suficiente para um curso introdutório Muitos recursos Orientação a Objetos Escalável (módulos, classes, controle de exceções) Biblioteca embutida

Leia mais

Criar a classe Aula.java com o seguinte código: Compilar e Executar

Criar a classe Aula.java com o seguinte código: Compilar e Executar Introdução à Java Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Código Exemplo da Aula Criar a classe Aula.java com o seguinte código: public class Aula { public static void

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Introdução Esse não é um curso de Java! O objetivo é aprender os conceitos da programação orientada a objetos,

Leia mais

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Curso Adonai QUESTÕES Disciplina Linguagem JAVA 1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String

Leia mais

Oracle PL/SQL Overview

Oracle PL/SQL Overview Faculdades Network Oracle PL/SQL Overview Prof. Edinelson PL/SQL Linguagem de Programação Procedural Language / Structured Query Language Une o estilo modular de linguagens de programação à versatilidade

Leia mais

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C Edwar Saliba Júnior Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C Belo Horizonte 2010 Sumário 1 Nota:... 2 2 Comandos e Palavras Reservadas:... 3 3 Dicas... 4 3.1 Strings

Leia mais

Disparando o interpretador

Disparando o interpretador Capítulo 2: Usando o interpretador Python Disparando o interpretador O interpretador é frequentemente instalado como /usr/local/bin/python nas máquinas onde está disponível; adicionando /usr/local/bin

Leia mais

Introdução ao PHP. Prof. Késsia Marchi

Introdução ao PHP. Prof. Késsia Marchi Introdução ao PHP Prof. Késsia Marchi PHP Originalmente PHP era um assíncrono para Personal Home Page. De acordo com convenções para atribuições de nomes recursivas do GNU foi alterado para PHP Hypertext

Leia mais

Programação Orientada a Objetos em java. Polimorfismo

Programação Orientada a Objetos em java. Polimorfismo Programação Orientada a Objetos em java Polimorfismo Polimorfismo Uma característica muito importante em sistemas orientados a objetos Termo proveniente do grego, e significa muitas formas Em POO, significa

Leia mais

Algoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira

Algoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira Algoritmos e Estrutura de Dados Aula 1 Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira Linguagem a ser Utilizada? Nossa disciplina é de Algoritmos e Estrutura de Dados, e não de linguagem

Leia mais

UNIP UNIVERSIDADE PAULISTA INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA (ICET) CURSO DE CIÊNCIAS DA COMPUTAÇÃO. O Paradigma da Orientação a Objeto

UNIP UNIVERSIDADE PAULISTA INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA (ICET) CURSO DE CIÊNCIAS DA COMPUTAÇÃO. O Paradigma da Orientação a Objeto UNIP UNIVERSIDADE PAULISTA INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA (ICET) CURSO DE CIÊNCIAS DA COMPUTAÇÃO O Paradigma da Orientação a Objeto Apresentada em Cumprimento Parcial dos Requerimentos para

Leia mais

Visual Basic e Java. À primeira vista o Java é completamente diferente do Visual Basic. Realmente as duas linguagens pertencem a mundos distintos.

Visual Basic e Java. À primeira vista o Java é completamente diferente do Visual Basic. Realmente as duas linguagens pertencem a mundos distintos. Visual Basic e Java À primeira vista o Java é completamente diferente do Visual Basic. Realmente as duas linguagens pertencem a mundos distintos. No entanto, elas compartilham uma série de funcionalidades.

Leia mais

NOVIDADES DO JAVA PARA PROGRAMADORES C

NOVIDADES DO JAVA PARA PROGRAMADORES C PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB NOVIDADES DO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o Conceito de Classes e Objetos Capacitar para a criação de objetos simples

Leia mais

e à Linguagem de Programação Python

e à Linguagem de Programação Python Introdução a Algoritmos, Computação Algébrica e à Linguagem de Programação Python Curso de Números Inteiros e Criptografia Prof. Luis Menasché Schechter Departamento de Ciência da Computação UFRJ Agosto

Leia mais

4 Criação de macros e introdução à linguagem VBA

4 Criação de macros e introdução à linguagem VBA 4 Criação de macros e introdução à linguagem VBA Vinicius A. de Souza va.vinicius@gmail.com São José dos Campos, 2011. 1 Sumário Tópicos em Microsoft Excel 2007 Introdução à criação de macros...3 Gravação

Leia mais

Fundamentos de Programação. Turma CI-240-EST. Josiney de Souza. josineys@inf.ufpr.br

Fundamentos de Programação. Turma CI-240-EST. Josiney de Souza. josineys@inf.ufpr.br Fundamentos de Programação Turma CI-240-EST Josiney de Souza josineys@inf.ufpr.br Agenda do Dia Aula 2 (07/08/15) Introdução ao Python História Características Estrutura dos código-fonte Primeiros elementos

Leia mais

Fundamentos de Programação II. Introdução à linguagem de programação C++

Fundamentos de Programação II. Introdução à linguagem de programação C++ Fundamentos de Programação II Introdução à linguagem de programação C++ Prof. Rafael Henrique D. Zottesso Material cedido por Prof. Msc. Everton Fernando Baro Agenda IDE HelloWorld Variáveis Operadores

Leia mais

Universidade Federal de Minas Gerais Instituto de Ciências Agrárias

Universidade Federal de Minas Gerais Instituto de Ciências Agrárias Universidade Federal de Minas Gerais Instituto de Ciências Agrárias Professor: Renato Dourado Maia Disciplina: Programação de Computadores Curso: Engenharia de Alimentos Turma: Terceiro Período 1 Introdução

Leia mais

3. PARADIGMA ORIENTADO A OBJETOS

3. PARADIGMA ORIENTADO A OBJETOS Paradigmas de Linguagens I 1 3. PARADIGMA ORIENTADO A OBJETOS Este paradigma é o que mais reflete os problemas atuais. Linguagens orientada a objetos (OO) são projetadas para implementar diretamente a

Leia mais

Componentes da linguagem C++

Componentes da linguagem C++ Componentes da linguagem C++ C++ é uma linguagem de programação orientada a objetos (OO) que oferece suporte às características OO, além de permitir você realizar outras tarefas, similarmente a outras

Leia mais

Fábio Rodrigues Jorge. E-mail: fabinhojorgenet@gmail.com

Fábio Rodrigues Jorge. E-mail: fabinhojorgenet@gmail.com Fábio Rodrigues Jorge E-mail: fabinhojorgenet@gmail.com Este minicurso tem por objetivo apresentar uma noção introdutória á linguagem Python. Temas abordados no minicurso: -variáveis -comandos de decisão

Leia mais

Desenvolvimento OO com Java 3 Estruturas de Controle e Programação Básica

Desenvolvimento OO com Java 3 Estruturas de Controle e Programação Básica Desenvolvimento OO com Java 3 Estruturas de Controle e Programação Básica Vítor E. Silva Souza (vitor.souza@ufes.br) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade

Leia mais

Ruby. Simplicidade e produtividade

Ruby. Simplicidade e produtividade Ruby Simplicidade e produtividade Ruby é... Uma linguagem de tipagem dinâmica e forte, com gerenciamento de memória automático, open source com foco na simplicidade e na produtividade. Tem uma sintaxe

Leia mais

DEFINIÇÃO DE MÉTODOS

DEFINIÇÃO DE MÉTODOS Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 2 DEFINIÇÃO DE MÉTODOS Todo o processamento que um programa Java faz está definido dentro dos

Leia mais

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31 APROG Algoritmia e Programação Linguagem JAVA Básico Nelson Freire (ISEP DEI-APROG 2012/13) 1/31 Linguagem Java Estrutura de um Programa Geral Básica Estruturas de Dados Variáveis Constantes Tipos de Dados

Leia mais

Modelagem e Implementação (Incremental de um Software para Controle) de Aquário de Peixes

Modelagem e Implementação (Incremental de um Software para Controle) de Aquário de Peixes Modelagem e Implementação de Aquário de Peixes- por Jorge Fernandes - Página 1 Modelagem e Implementação (Incremental de um Software para Controle) de Aquário de Peixes Jorge Fernandes Natal, Agosto de

Leia mais

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL Laboratório de Banco de Dados Prof. Luiz Vivacqua PL/pgSQL A Linguagem de programação do PostgreSQL 1) Visão Geral A PL/pgSQL é uma linguagem de programação procedural para o Sistema Gerenciador de Banco

Leia mais

Aula 4: adivinhe o número

Aula 4: adivinhe o número Aula 4: adivinhe o número Kaya Sumire Abe kaya.sumire@gmail.com Diego de Faria do Nascimento df.nascimento93@gmail.com Fabian Czajkowski fabiancza22@gmail.com 05/09/2012 Resumo Através do que já vimos,

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TECNICO EM INFORMATICA DISCIPLINA:

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TECNICO EM INFORMATICA DISCIPLINA: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TECNICO EM INFORMATICA DISCIPLINA: PROGRAMAÇÃO ORIENTADA A OBJETOS PROFESSOR: REINALDO GOMES ASSUNTO: REVISÃO DA INTRODUÇÃO A ORIENTAÇÃO

Leia mais

Sintaxe Básica de Java Parte 1

Sintaxe Básica de Java Parte 1 Sintaxe Básica de Java Parte 1 Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marcioubeno.com Fonte: Material da Profª Karina Oliveira Estrutura de Programa Um programa

Leia mais

Introdução ao IDE Netbeans (Programação Java)

Introdução ao IDE Netbeans (Programação Java) Universidade Federal do ABC (UFABC) Disciplina: Processamento da Informação (BC-0505) Assunto: Java e Netbeans Introdução ao IDE Netbeans (Programação Java) Conteúdo 1. Introdução... 1 1.1. Programas necessários...

Leia mais

2 Orientação a objetos na prática

2 Orientação a objetos na prática 2 Orientação a objetos na prática Aula 04 Sumário Capítulo 1 Introdução e conceitos básicos 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2 Objetos 1.4.3 Métodos e atributos 1.4.4 Encapsulamento 1.4.5 Métodos

Leia mais

Resumo da Matéria de Linguagem de Programação. Linguagem C

Resumo da Matéria de Linguagem de Programação. Linguagem C Resumo da Matéria de Linguagem de Programação Linguagem C Vitor H. Migoto de Gouvêa 2011 Sumário Como instalar um programa para executar o C...3 Sintaxe inicial da Linguagem de Programação C...4 Variáveis

Leia mais

Laboratório de Programação I

Laboratório de Programação I Laboratório de Programação I Introdução à Programação em Visual Basic Fabricio Breve Objetivos Ser capaz de escrever programas simples em Visual Basic Ser capaz de usar os comandos de entrada e saída Familiarizar-se

Leia mais

Características do PHP. Começando a programar

Características do PHP. Começando a programar PHP Introdução Olá pessoal. Desculpe o atraso na publicação da aula. Pude perceber pelas respostas (poucas) ao fórum que a realização da atividade do módulo I foi relativamente tranquila. Assistam ao vídeo

Leia mais

PHP() é uma linguagem de integração de servidor que permite a criação de paginas dinâmicas. Como todas

PHP() é uma linguagem de integração de servidor que permite a criação de paginas dinâmicas. Como todas O que é PHP? Acrônimo de PHP: Hipertext Language PostProcessor Inicialmente escrita para o desenvolvimento de aplicações Web Facilidade para iniciantes e recursos poderosos para programadores profissionais

Leia mais

Programação WEB. Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida. Aula III Introdução PHP

Programação WEB. Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida. Aula III Introdução PHP Programação WEB Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida Aula III Introdução PHP Introdução PHP PHP=Hypertext Pre-Processor Linguagem de script open

Leia mais

Instituto Federal do Sertão-PE. Curso de PHP. Professor: Felipe Correia

Instituto Federal do Sertão-PE. Curso de PHP. Professor: Felipe Correia Instituto Federal do Sertão-PE Curso de PHP Professor: Felipe Correia Conteúdo Parte I Parte II Introdução Funções de strings Instalação Constantes Sintaxe Operadores Variáveis if else elseif Echo/Print

Leia mais

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]

Leia mais

Instalando o ambiente de desenvolvimento

Instalando o ambiente de desenvolvimento capítulo 1 Instalando o ambiente de desenvolvimento Antes de começarmos nosso estudo de Rails, é importante instalar o ambiente necessário. Para obter melhor proveito deste livro, você precisará dos seguintes

Leia mais

Estruturas de controle no nível de sentença

Estruturas de controle no nível de sentença Estruturas de controle no nível de sentença Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional.

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5

Leia mais

BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com

BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com HelloWorld.java: public class HelloWorld { public static void main (String[] args) { System.out.println( Hello, World ); } } Identificadores são usados

Leia mais

PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com

PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com Um dos grandes diferenciais do PostgreSQL em relação à maioria dos outros sistemas de bancos de dados é a presença de diversas linguagens

Leia mais

Abaixo do Objeto WorkSheet temos a coleção Cells, que representa todas as células de uma planilha.

Abaixo do Objeto WorkSheet temos a coleção Cells, que representa todas as células de uma planilha. Aula 1 O modelo de objetos do Excel APPLICATION É o próprio Excel. Temos diversas propriedades e métodos importantes nesse objeto. Destacamos dois exemplos: Application.DisplayAlerts Se for true, o Excel

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem

Leia mais

Python: Comandos Básicos. Claudio Esperança

Python: Comandos Básicos. Claudio Esperança Python: Comandos Básicos Claudio Esperança Primeiros passos em programação Até agora só vimos como computar algumas expressões simples Expressões são escritas e computadas imediatamente Variáveis podem

Leia mais

Python Funções. Introdução à Programação SI1

Python Funções. Introdução à Programação SI1 Python Funções Introdução à Programação SI1 Conteúdo Funções Conceitos Objetivos Modularização Exemplos Exercícios 2 Funções O que são? Qual a função de uma função? 3 Imagine o código 4 Imagine o código

Leia mais

INFORMÁTICA APLICADA AULA 02 LINGUAGEM DE PROGRAMAÇÃO C++

INFORMÁTICA APLICADA AULA 02 LINGUAGEM DE PROGRAMAÇÃO C++ UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: Bacharelado em Ciências e Tecnologia INFORMÁTICA APLICADA AULA 02 LINGUAGEM DE PROGRAMAÇÃO C++ Profª ª Danielle Casillo COMPILADORES Toda linguagem de programação

Leia mais

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5 JavaScript Diego R. Frank, Leonardo Seibt FIT Faculdades de Informática de Taquara Fundação Educacional Encosta Inferior do Nordeste Av. Oscar Martins Rangel, 4500 Taquara RS Brasil difrank@terra.com.br,

Leia mais

Introdução ao FORTRAN (Parte I)

Introdução ao FORTRAN (Parte I) Programação de Computadores III Aula 7 Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2011.1/tcc-03.063 Roteiro da Aula

Leia mais

Introdução à estrutura de dados com Python

Introdução à estrutura de dados com Python Introdução à estrutura de dados com Python CLEIBSON APARECIDO DE ALMEIDA UFPR Universidade Federal do Paraná PPGMNE Programa de Pós Graduação em Métodos Numéricos em Engenharia Centro Politécnico CEP 81.531-980

Leia mais

Conceitos básicos da linguagem C

Conceitos básicos da linguagem C Conceitos básicos da linguagem C 2 Em 1969 Ken Thompson cria o Unix. O C nasceu logo depois, na década de 70. Dennis Ritchie, implementou-o pela primeira vez usando o sistema operacional UNIX criado por

Leia mais

Introdução ao Javascript

Introdução ao Javascript Programação WEB I Introdução ao Javascript Apresentação da Disciplina,Introdução a linguagem Javascript Objetivos da Disciplina Apresentar os principais conceitos da linguagem Javascript referente à programação

Leia mais

Apostila Básica de Lógica e Programação para Game Maker por Giosepe Luiz 1

Apostila Básica de Lógica e Programação para Game Maker por Giosepe Luiz 1 Apostila Básica de Lógica e Programação para Game Maker por Giosepe Luiz 1 Sumário 1. Introdução a Lógica... 03 2. Verdadeiro e Falso... 03 3. Conectivo E e OU... 03 4. Negação... 04 5. Introdução a Programação...

Leia mais

4 Conversor EDTV Raw. 4.1 Arquitetura

4 Conversor EDTV Raw. 4.1 Arquitetura 4 Conversor EDTV Raw O conversor EDTV Raw é o programa que lê um documento escrito no perfil NCL EDTV e gera um documento Raw equivalente, i.e. que define a mesma apresentação. Este capítulo, apresenta

Leia mais

JavaScript. JavaScript é uma linguagem de script usada em navegadores web. É uma linguagem dinâmica, estruturada e orientada em objetos.

JavaScript. JavaScript é uma linguagem de script usada em navegadores web. É uma linguagem dinâmica, estruturada e orientada em objetos. JavaScript JavaScript é uma linguagem de script usada em navegadores web. É uma linguagem dinâmica, estruturada e orientada em objetos. Pode ser usada dentro do próprio arquivo HTML ou estruturada em um

Leia mais

13 Números Reais - Tipo float

13 Números Reais - Tipo float 13 Números Reais - Tipo float Ronaldo F. Hashimoto e Carlos H. Morimoto Até omomentonoslimitamosaouso do tipo inteiro para variáveis e expressões aritméticas. Vamos introduzir agora o tipo real. Ao final

Leia mais

Capítulo 2: Introdução à Linguagem C

Capítulo 2: Introdução à Linguagem C Capítulo 2: Introdução à Linguagem C Waldemar Celes e Roberto Ierusalimschy 29 de Fevereiro de 2012 1 Ciclo de desenvolvimento O modelo hipotético de computador utilizado no capítulo anterior, embora muito

Leia mais

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Tipos de Dados Aula 5 Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Tipos de Dados Sistema de tipos Tipos de Dados e Domínios Métodos

Leia mais

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C / C++

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C / C++ Edwar Saliba Júnior Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C / C++ Belo Horizonte 2009 Sumário 1 Nota:... 2 2 Comandos e Palavras Reservadas:... 3 3 Dicas... 4

Leia mais

Primeiro programa em Java (compilação e execução)

Primeiro programa em Java (compilação e execução) Universidade Federal do ABC Disciplina: Linguagens de Programação (BC-0501) Assunto: Primeiro programa em Java (compilação e execução) Primeiro programa em Java (compilação e execução) Introdução Este

Leia mais

Curso de Iniciação ao Access Basic (I) CONTEÚDOS

Curso de Iniciação ao Access Basic (I) CONTEÚDOS Curso de Iniciação ao Access Basic (I) CONTEÚDOS 1. A Linguagem Access Basic. 2. Módulos e Procedimentos. 3. Usar o Access: 3.1. Criar uma Base de Dados: 3.1.1. Criar uma nova Base de Dados. 3.1.2. Criar

Leia mais

2 echo "PHP e outros.";

2 echo PHP e outros.; PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento

Leia mais

Curso Java Starter. www.t2ti.com 1

Curso Java Starter. www.t2ti.com 1 1 Apresentação O Curso Java Starter foi projetado com o objetivo de ajudar àquelas pessoas que têm uma base de lógica de programação e desejam entrar no mercado de trabalho sabendo Java, A estrutura do

Leia mais

1.6. Tratamento de Exceções

1.6. Tratamento de Exceções Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER

Leia mais

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de

Leia mais

Programando em C# Orientado a Objetos. By: Maromo

Programando em C# Orientado a Objetos. By: Maromo Programando em C# Orientado a Objetos By: Maromo Agenda Módulo 1 Plataforma.Net. Linguagem de Programação C#. Tipos primitivos, comandos de controle. Exercícios de Fixação. Introdução O modelo de programação

Leia mais

Roteiro 1: Dados, variáveis, operadores e precedência

Roteiro 1: Dados, variáveis, operadores e precedência 1. Introdução Universidade Federal do ABC Disciplina: Processamento da Informação (BC-0505) Assunto: Dados, variáveis, operadores e precedência Roteiro 1: Dados, variáveis, operadores e precedência Nesta

Leia mais