Este projeto é um teste simples para avaliar programadores.
O programador poderá escolher uma das tres linguagens para resolver o problema, php, node/javascript ou ruby. Este projeto já possui os arquivos básicos para serem usados na solução do problema.
- Clareza do código
- Comentários relevantes
- Método protegido para auxiliar o cálculo, tirando a carga do método getQtdeNotas
- Retorno correto da quantidade de notas de acordo com o valor passado
- Código identado e formatado de acordo com os padrões de boas práticas de cada linguagem
Os critérios acima são os requisitos mínimos. Mas para os candidatos que pretendem se destacar, segue algumas sugestões.
- Adicionar no construtor da classe, uma array opcional contendo a quantidade de notas disponíveis para cada cédula. O troco deve ser retornado respeitando este limite de notas imposto. Caso não tenha cédulas suficientes para retornar o troco, gerar uma exceção.
- Utilização do GIT. Micro commits, organização do código e clareza dos comentários em cada commit
- Resolver o problema em mais de uma linguagem demonstrando o conhecimento ou capacidade de rápida aprendizagem
Todos os exemplos abaixo foram feitos usando linha de comando unix
A classe Troco no arquivo Troco.php, possui apenas um método, getQtdeNotas, que retorna a um array contendo a quantidade de notas necessárias de cada cédula, para completar o valor em reais passado no parâmetro.
$ php php/console.php 112.1
Array
(
[100] => 1
[50] => 0
[20] => 0
[10] => 1
[5] => 0
[2] => 1
[1] => 0
[0.5] => 0
[0.25] => 0
[0.1] => 1
[0.01] => 0
)
A classe Troco no arquivo Troco.js, possui apenas um método, getQtdeNotas, que retorna a um array contendo a quantidade de notas necessárias de cada cédula, para completar o valor em reais passado no parâmetro.
$ node node/console.js 112.1
{ '1': 0,
'2': 1,
'5': 0,
'10': 1,
'20': 0,
'50': 0,
'100': 1,
'0.5': 0,
'0.25': 0,
'0.1': 1,
'0.01': 0 }
A classe Troco no arquivo troco.rb, possui apenas um método, get_qtd_notas, que retorna a um array contendo a quantidade de notas necessárias de cada cédula, para completar o valor em reais passado no parâmetro.
$ ruby ruby/console.rb 112.1
{:"100"=>1, :"50"=>0, :"20"=>0, :"10"=>1, :"5"=>0, :"2"=>1, :"1"=>0, :"0.5"=>0, :"0.25"=>0, :"0.1"=>1, :"0.01"=>0}
Ao concluir, publicar o seu projeto com a solução na sua conta do GitHub e preencher Este Formulário para que possa ser avaliado.