Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: Ruby ::: Dicas & Truques ::: Programação Orientada a Objetos

Como acessar variáveis de instâncias para escrita em Ruby sem a necessidade de métodos mutatórios usando a função attr_accessor

Quantidade de visualizações: 7185 vezes
Por padrão, variáveis de instância em Ruby só podem ser acessadas para escrita usando métodos mutatórios, ou seja, uma variável de instância @nome deve ser modificada usando um método definir_nome.

É possível dispensar o uso de métodos mutatórios empregando o método attr_accessor nos nomes das variáveis que poderão ser acessadas e modificadas. Lembre-se que, ao contrário de attr_reader, o método attr_accessor possibilita o acesso à variável de instância tanto para leitura quanto para escrita.

Veja um exemplo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# Definição da classe Cliente
class Cliente
   attr_accessor :nome, :idade
   
   def initialize(nome, idade)
      @nome = nome
      @idade = idade
   end
end

# Cria uma instância da classe Cliente e inicializa as
# variáveis de instância @nome e @idade
cliente = Cliente.new("Osmar J. Silva", 35)

# Acessa as variáveis de instância sem a necessidade
# de métodos acessórios
puts cliente.nome
puts cliente.idade

# Modifica as variáveis de instância sem a necessidade
# de métodos mutatórios
cliente.nome = "Carlos da Silva"
cliente.idade = 56

# Obtém os resultados
puts cliente.nome
puts cliente.idade

Se tentarmos acessar e modificar as variáveis nome e idade diretamente, sem os métodos mutatórios e a função attr_accessor nós teremos um erro do tipo:

Traceback (most recent call last):
estudos.arb:15:in `<main>': undefined method `nome' for #<Cliente:0x0000029a7211f080 @nome="Osmar J. Silva", @idade=35> (NoMethodError)

Link para compartilhar na Internet ou com seus amigos:

Ruby ::: Dicas & Truques ::: Strings e Caracteres

Como inserir uma substring em uma determinada posição de uma string em Ruby usando a função insert()

Quantidade de visualizações: 8914 vezes
Muita vezes precisamos inserir uma substring em uma determinada posição de uma string em Ruby. Esta tarefa pode ser realizada com a função insert() da classe String.

Esta função opera na string original e requer dois argumentos: a posição na string onde a substring será inserida e a substring propriamente dita. A posição é um índice iniciando em 0. Índices negativos são contados a partir do final da string.

Veja o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# declara e inicializa uma variável string
frase = "Gosto muito de Ruby"
puts "A frase original é: " + frase

# vamos inserir " Python e" antes de "Ruby". 
frase.insert(14, " Python e")

# exibe o resultado 
puts "A nova frase é: " + frase

Ao executar este código Ruby nós teremos o seguinte resultado:

A frase original é: Gosto muito de Ruby
A nova frase é: Gosto muito de Python e Ruby


Ruby ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como criar e usar arrays em Ruby - Vetores e matrizes na linguagem Ruby

Quantidade de visualizações: 12469 vezes
Como criar arrays em Ruby - Vetores e matrizes na linguagem Ruby

Arrays (vetores e matrizes) em Ruby são criadas a partir da classe Array. Esta classe serve para agrupar uma coleção de referências a objetos. Cada referência aos objetos ocupa uma posição no array, identificada por um número inteiro não negativo.

Podemos criar arrays em Ruby de duas formas: usando literais ou explicitamente, criando um objeto Array. Veja como criar um array usando a notação literal:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# cria um array de valores inteiros
valores = [43, 12, 8, 56]

# obtém o valor do segundo elemento
valor = valores[1]

# altera o valor do primeiro elemento
valores[0] = 5

Vamos agora criar um array usando um objeto da classe Array:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# cria um objeto da classe Array
valores = Array.new

# atribui valores inteiros ao array
valores[0] = 76
valores[1] = 3
valores[2] = 9
valores[3] = 87

# obtém o valor do segundo elemento
valor = valores[1]

# altera o valor do primeiro elemento
valores[0] = 5

Arrays em Ruby armazenam referências a objetos e, como em Ruby tudo é objeto, podemos criar arrays de tipos diferentes. Veja:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# cria um array de tipos diferentes
valores = [43, "Osmar", 7.5]

# obtém o valor do segundo elemento
valor = valores[1]

# altera o valor do primeiro elemento
valores[0] = 5



Ruby ::: Dicas & Truques ::: Programação Orientada a Objetos

Como acessar variáveis de instâncias para leitura em Ruby sem a necessidade de métodos acessores usando a função attr_reader

Quantidade de visualizações: 6902 vezes
Por padrão, variáveis de instância em Ruby só podem ser acessadas usando métodos acessores, ou seja, uma variável de instância @nome deve ser lida usando um método obter_nome.

É possível dispensar o uso de métodos acessores empregando o método attr_reader nos nomes das variáveis que poderão ser acessadas, para leitura, é claro. Veja um exemplo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# Definição da classe Cliente
class Cliente
   attr_reader :nome, :idade
   
   def initialize(nome, idade)
      @nome = nome
      @idade = idade
   end
    
   def obter_nome
      @nome
   end
    
   def obter_idade
      @idade
   end
end

# Cria uma instância da classe Cliente e inicializa as
# variáveis de instância @nome e @idade
cliente = Cliente.new("Osmar J. Silva", 35)

# Acessa as variáveis de instância sem a necessidade de
# métodos acessórios
puts cliente.nome
puts cliente.idade

Sem o uso do método attr_reader, a linha:

puts cliente.nome


causaria o seguinte erro:

teste.rb:25: undefined method `nome' for 
#<Cliente:0x27f540c @nome="Osmar J. S
ilva", @idade=35> (NoMethodError)



Ruby ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como somar os elementos da diagonal principal de uma matriz em Ruby

Quantidade de visualizações: 779 vezes
A Matriz quadrada é um tipo especial de matriz que possui o mesmo número de linhas e o mesmo número de colunas, ou seja, dada uma matriz Anxm, ela será uma matriz quadrada se, e somente se, n = m, onde n é o número de linhas e m é o número de colunas.

Em geral as matrizes quadradas são chamadas de Matrizes de Ordem n, onde n é o número de linhas e colunas. Dessa forma, uma matriz de ordem 4 é uma matriz que possui 4 linhas e quatro colunas.

Toda matriz quadrada possui duas diagonais, e elas são muito exploradas tanto na matemática quanto na construção de algorítmos. Essas duas diagonais são chamadas de Diagonal Principal e Diagonal Secundária.

A diagonal principal de uma matriz quadrada une o seu canto superior esquerdo ao canto inferior direito. Veja:



Nesta dica veremos como calcular a soma dos valores dos elementos da diagonal principal de uma matriz usando Ruby. Para isso, só precisamos manter em mente que a diagonal principal de uma matriz A é a coleção das entradas Aij em que i é igual a j. Assim, tudo que temos a fazer é converter essa regra para código Ruby.

Veja um trecho de código Ruby completo no qual pedimos para o usuário informar os elementos da matriz e em seguida mostramos a soma dos elementos da diagonal superior:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# vamos declarar e construir uma matriz de três linhas e três colunas
matriz = Array.new(3){Array.new(3)}
soma_diagonal = 0; # guarda a soma dos elementos na diagonal principal

# vamos ler os valores para os elementos da matriz
for i in (0..2) # linhas
  for j in (0..2) # colunas
    printf("Valor para a linha %d e coluna %d: ", i, j) 
    matriz[i][j] =  gets.chomp.to_i
  end
end

# vamos mostrar a matriz da forma que ela
# foi informada
print("\n")
for i in (0..2) # linhas
  for j in (0..2) # colunas
    printf("%5d ", matriz[i][j])
  end
  print("\n")
end

# vamos calcular a soma dos elementos da diagonal   
# principal
for i in (0..2) # linhas
  for j in (0..2) # colunas
    if(i == j)
      soma_diagonal = soma_diagonal + matriz[i][j]
    end
  end
end

# e mostramos o resultado
printf("\nA soma dos elementos da diagonal principal é: %d",
  soma_diagonal)

Ao executar este código Ruby nós teremos o seguinte resultado:

Informe o valor para a linha 0 e coluna 0: 3
Informe o valor para a linha 0 e coluna 1: 7
Informe o valor para a linha 0 e coluna 2: 9
Informe o valor para a linha 1 e coluna 0: 2
Informe o valor para a linha 1 e coluna 1: 4
Informe o valor para a linha 1 e coluna 2: 1
Informe o valor para a linha 2 e coluna 0: 5
Informe o valor para a linha 2 e coluna 1: 6
Informe o valor para a linha 2 e coluna 2: 8

    3     7     9 
    2     4     1 
    5     6     8 

A soma dos elementos da diagonal principal é: 15



Ruby ::: Dicas & Truques ::: Programação Orientada a Objetos

Como usar variáveis de instância em Ruby - Programação Orientada a Objetos em Ruby

Quantidade de visualizações: 7685 vezes
Na programação orientada a objetos, as variáveis de instância são variáveis associadas a cada um dos objetos de uma classe. Podemos pensar assim: temos vários carros de uma mesma montadora e da mesma marca, porém, com cores diferentes. Nessa analogia, a cor pertence a cada um dos carros, de forma particular, ou seja, é uma variável de instância.

Vamos ver um exemplo? Veja o código Ruby a seguir:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# Definição da classe Cliente
class Cliente
  # construtor da classe
  def initialize(nome, idade)
    @nome = nome
    @idade = idade
  end
    
  # método que permite retornar o nome do cliente
  def obter_nome
    @nome
  end
  
  # método que permite retornar a idade do cliente  
  def obter_idade
    @idade
  end
end

# Cria duas instâncias da classe Cliente
cliente_a = Cliente.new("Osmar", 35)
cliente_b = Cliente.new("Salvador", 28)

# Efetua chamadas aos métodos obter_nome e obter_idade
# dos dois objetos
puts "#{cliente_a.obter_nome} - #{cliente_a.obter_idade}"
puts "#{cliente_b.obter_nome} - #{cliente_b.obter_idade}"

Ao executar este código Ruby nós teremos o seguinte resultado:

Osmar - 35
Salvador - 28

Veja que aqui nós temos duas variáveis de instância: @nome e @idade. Variáveis de instância são sempre precedidas pelo símbolo @ em Ruby. Neste exemplo os valores das variáveis são inicializados por meio do uso do construtor da classe e obtidos por meio de métodos acessores chamados obter_nome e obter_idade.


Ruby ::: Dicas & Truques ::: Data e Hora

Datas e horas em Ruby: Time, Date ou DateTime - Qual classe devo usar?

Quantidade de visualizações: 8540 vezes
A linguagem Ruby oferece três classes básicas para lidar com datas e horas: Time, Date e DateTime. Para ajudá-lo em seus estudos, veja uma descrição breve de cada uma:

1) A classe Time está mais para um encapsulamento das funções de datas e horas da biblioteca C. Estas bibliotecas são geralmente baseadas na época UNIX (UNIX epoch) e, assim, não conseguem representar datas e horas antes de 1970.

2) A classe Date foi criada para superar estas deficiências da classe Time. Com esta classe nós podemos lidar com datas realmente antigas, tais como o aniversário de Leonardo da Vinci (15 de abril de 1452) e, esta classe funciona muito bem com a reforma do calendário. No entanto, a classe Date não permite lidar com horas, ou seja, ao usá-la não seremos capazes de representar a hora que Leonardo da Vinci nasceu. Apenas a data de nascimento.

3) A classe DateTime herda da Date e tenta ser o melhor de ambos os mundos. Com esta classe podemos representar datas da mesma forma que Date e horas da mesma forma que Time. Geralmente os desenvolvedores optam por esta classe, por considerá-la a forma mais correta de representar datas e horas.


Ruby ::: Fundamentos da Linguagem ::: Métodos, Procedimentos e Funções

Como criar funções em Ruby - Como criar e usar funções na linguagem Ruby

Quantidade de visualizações: 7792 vezes
Funções ou métodos em Ruby são definidos usando-se a palavra chave def e finalizando com a palavra end. Veja:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# define o método
def escrever
  puts "Estou estudando Ruby"  
end

# efetua uma chamada ao método
escrever

Para definir uma método que aceita parâmetros, as variáveis devem ser colocadas entre parênteses. Estas variáveis são locais e portanto acessíveis somente no corpo do método. Veja:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# define o método
def escrever(texto, quant)
  quant.times do
    puts texto
  end
end

# efetua uma chamada ao método
escrever("Estou estudando Ruby", 5)

Ao executar este último exemplo nós teremos o seguinte resultado:

Estou estudando Ruby
Estou estudando Ruby
Estou estudando Ruby
Estou estudando Ruby
Estou estudando Ruby


Ruby ::: Dicas & Truques ::: Matemática e Estatística

Como gerar um número inteiro aleatório em Ruby usando a função rand() do módulo Kernel

Quantidade de visualizações: 7664 vezes
Nesta dica mostrarei como podemos usar o método rand() do módulo Kernel da linguagem Ruby para gerar um número randômico dentro de uma determinada faixa. No exemplo nós vamos gerar um número aleatório entre 0 e 6 (não incluído).

Veja o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# gera um número aleatório entre 0 e 5
numero = rand(6)
puts sprintf("O numero aleatório é: %d", \
  numero)

Ao executar este código Ruby nós teremos o seguinte resultado:

O numero aleatório é: 5


Vamos testar seus conhecimentos em

Dimensionamento de lajes e escadas maciças

Considere uma laje retangular, maciça, com vão de 5,0m, concreto fck = 20MPa, aço CA-50 e espessura de 12cm (com altura útil igual a 9,5cm), submetida a um momento de cálculo de 35kN.m.

A armadura que resiste ao esforço solicitado, de forma otimizada, é (desconsiderar a verificação de flechas e fissuras):

A) &#8709;10mm a cada 10cm.

B) &#8709;10mm a cada 12,5cm.

C) &#8709;12,5mm a cada 12,5cm.

D) &#8709;12,5mm a cada 15,0cm.

E) &#8709;12,5mm a cada 10cm.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

Qual o resultado da execução do seguinte código Python?

valor = 5
contador = 0
while valor < 20:
  valor = valor + 3
  contador = contador + 1

print("O laço while repetiu {0} vezes.".format(contador))

A) O laço while repetiu 7 vezes.

B) O laço while repetiu 6 vezes.

C) O laço while repetiu 4 vezes.

D) O laço while repetiu 5 vezes.

E) O laço while repetiu 8 vezes.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em AutoCAD Civil 3D

Quando criamos um novo COGO Point usando a opção Manual do Point Creation Tool (Create Ground Data -> Points), qual é o primeiro parâmetro de ponto solicitado?

A) Localização do ponto (point location)

B) Número do ponto (point number)

C) Nome do ponto (point name)

D) Descrição do ponto (point description)
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil

Esquadrias

Quais são materiais de fabricação de esquadrias?

A) OSB.

B) Somente PVC.

C) Madeira, PVC, alumínio e ferro.

D) MDF.

E) Somente vidro.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Qual das formas abaixo é válida para a declaração e inicialização de variáveis em JavaScript?

A) int a = 5;

B) declare a = 5;

C) var a = 5;

D) def a = 5;

E) variable a = 5;
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de Ruby

Veja mais Dicas e truques de Ruby

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 29 usuários muito felizes estudando em nosso site.