vanderleipinto / TT2

Desafio Teste técnico Batalha 2
0 stars 0 forks source link

TT2 #3

Open vanderleipinto opened 7 months ago

vanderleipinto commented 7 months ago
vanderleipinto commented 7 months ago

1

Escreva um método que dado um inteiro x, um inteiro y e um inteiro w retorne todos os números divisíveis por w entre x e y.


def numeros_divisiveis(x, y, w)
  # Inicializa um array vazio para armazenar os números divisíveis
  divisiveis = []

  # Itera de x até y
  (x..y).each do |num|
    # Verifica se o número é divisível por w
    if num % w == 0
      # Adiciona o número ao array de divisíveis
      divisiveis << num
    end
  end

  # Retorna o array de números divisíveis
  return divisiveis
end

puts "Digite o primeiro número"
x = gets.to_i

puts "Digite o segundo número"
y = gets.to_i

puts "Digite o terceiro número"
w = gets.to_i

resultado =  numeros_divisiveis(x,y,w)

puts "Números divisíveis por #{w} entre #{x} e #{y}: #{resultado}"
vanderleipinto commented 7 months ago

2

Para modelar um banco de dados que suporte essas regras. Criaremos três tabelas principais: uma para os usuários, outra para os eventos e uma terceira para os prêmios. Além disso, precisaremos de uma tabela de relacionamento para associar os usuários aos eventos em que participaram e aos prêmios que ganharam. Aqui está um exemplo de como esse modelo de banco de dados poderia ser estruturado em SQL:

-- Tabela de Usuários
CREATE TABLE Usuarios (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nome VARCHAR(100),
    email VARCHAR(100) UNIQUE
);

-- Tabela de Eventos
CREATE TABLE Eventos (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nome VARCHAR(100),
    data DATE
);

-- Tabela de Prêmios
CREATE TABLE Premios (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nome VARCHAR(100)
);

-- Tabela de Participação e Premiação
CREATE TABLE ParticipacaoPremiacao (
    id INT PRIMARY KEY AUTO_INCREMENT,
    id_usuario INT,
    id_evento INT,
    id_premio INT,
    FOREIGN KEY (id_usuario) REFERENCES Usuarios(id),
    FOREIGN KEY (id_evento) REFERENCES Eventos(id),
    FOREIGN KEY (id_premio) REFERENCES Premios(id)
);

Neste modelo:

Segue o diagrama do modelo.

Image

vanderleipinto commented 7 months ago

3

Para resolver a questão, usaremos uma consulta SQL para selecionar os nomes dos usuários com idade maior ou igual a 18 anos e cuja profissão seja "programador" ou "desenvolvedor".

SELECT nome
FROM Usuarios
WHERE idade >= 18
AND (profissao = 'programador' OR profissao = 'desenvolvedor');

Nesta consulta:

Com essa consulta, conseguimos obter os nomes dos usuários que atendem aos critérios estabelecidos.

vanderleipinto commented 7 months ago

5

Vantagens da Arquitetura MVC:

1. Separação de Preocupações:

2. Flexibilidade e Escalabilidade:

3. Interface de Usuário Melhorada:

4. Melhor Colaboração e Entendimento:

Desvantagens da Arquitetura MVC:

1. Complexidade Adicional:

2. Possibilidade de Overengineering:

3. Dificuldade em Implementar Mudanças:

4. Limitações em Arquiteturas Complexas:

Em resumo:

A arquitetura MVC oferece diversos benefícios em termos de organização, reuso de código, flexibilidade e manutenabilidade. No entanto, é importante considerar a curva de aprendizado, a complexidade adicional e o potencial de overengineering antes de adotá-la em um projeto. A escolha da arquitetura ideal dependerá das características específicas do projeto e das necessidades da equipe de desenvolvimento.

Lembre-se:

Recursos Adicionais:

vanderleipinto commented 7 months ago

6

Criando uma rota para o método find_user no UsersController:

1. Rota GET usando o método resources:

Rails.application.routes.draw do
  resources :users do
    get :find_user, on: :collection
  end
end

Explicação:

Exemplo de uso:

# GET /users/find_user
def find_user
  # ...
end

Outras opções:

Rails.application.routes.draw do
  get '/users/find_user', to: 'users#find_user'
end
Rails.application.routes.draw do
  match '/users/find_user', to: 'users#find_user', via: [:get, :post]
end

Rails Guide