Trilhas
/
Go
Go
/
Exercícios
/
Montagem de carros
Montagem de carros

Montagem de carros

Exercício de aprendizagem

Introdução

Números

Go tem tipos numéricos básicos que podem representar conjuntos de valores inteiros ou de ponto flutuante. Existem tipos diferentes dependendo do tamanho do valor que você precisa e da arquitetura do computador onde a aplicação está rodando (por exemplo, 32 bits e 64 bits).

Para este exercício, você vai lidar apenas com:

  • int: por exemplo, 0, 255, 2147483647. Um inteiro com sinal que tem pelo menos 32 bits de tamanho (faixa de valores: -2147483648 a 2147483647). Mas isso vai depender da arquitetura do sistema. A maioria dos computadores modernos é de 64 bits, então int terá 64 bits de tamanho (faixa de valores: -9223372036854775808 a 9223372036854775807).

  • float64: por exemplo, 0.0, 3.14. Contém o conjunto de todos os números de ponto flutuante de 64 bits.

  • uint: por exemplo, 0, 255. Um inteiro sem sinal que tem o mesmo tamanho que int (faixa de valores: 0 a 4294967295 para 32 bits e 0 a 18446744073709551615 para 64 bits)

Os números podem ser convertidos para outros tipos numéricos por meio da conversão de tipos.

Operadores aritméticos

Go suporta muitos operadores aritméticos padrão:

Operador Exemplo
+ 4 + 6 == 10
- 15 - 10 == 5
* 2 * 3 == 6
/ 13 / 3 == 4
% 13 % 3 == 1

Na divisão de inteiros, o resto é descartado (por exemplo, 5 / 2 == 2).

Go tem atribuição abreviada para os operadores acima (por exemplo, a += 5 é uma forma curta de a = a + 5). Go também suporta as instruções de incremento e decremento ++ e -- (por exemplo, a++).

Conversão entre tipos

A conversão entre tipos é feita por meio de uma função com o nome do tipo para o qual você quer converter. Por exemplo:

var x int = 42 // x has type int
f := float64(x) // f has type float64 (ie. 42.0)
var y float64 = 11.9 // y has type float64
i := int(y) // i has type int (ie. 11)

Operações aritméticas com tipos diferentes

Em muitas linguagens você pode fazer operações aritméticas com variáveis de tipos diferentes, mas em Go isso dá erro. Por exemplo:

var x int = 42

// this line produces an error
value := float32(2.0) * x // invalid operation: mismatched types float32 and int

// you must convert int type to float32 before performing arithmetic operation
value := float32(2.0) * float32(x)

Instruções

Neste exercício, você vai escrever código para analisar a produção de uma fábrica de carros.

1. Calcule o número de carros funcionais produzidos por hora

Os carros são produzidos em uma linha de montagem. A linha de montagem tem uma certa velocidade, que pode ser alterada. Quanto maior a velocidade da linha de montagem, mais carros são produzidos. No entanto, mudar a velocidade da linha de montagem também muda o número de carros produzidos com sucesso, ou seja, carros sem nenhum erro na produção.

Implemente uma função que recebe o número de carros produzidos por hora e a taxa de sucesso e calcula o número de carros produzidos com sucesso por hora. A taxa de sucesso é dada como porcentagem, de 0 a 100:

CalculateWorkingCarsPerHour(1547, 90)
// => 1392.3

Observação: o valor de retorno deve ser um float64.

2. Calcule o número de carros funcionais produzidos por minuto

Implemente uma função que recebe o número de carros produzidos por hora e a taxa de sucesso e calcula quantos carros são produzidos com sucesso a cada minuto:

CalculateWorkingCarsPerMinute(1105, 90)
// => 16

Observação: o valor de retorno deve ser um int.

3. Calcule o custo de produção

Normalmente, cada carro custa $10.000 para ser produzido individualmente, independentemente de ser bem-sucedido ou não. Mas com um pouco de planejamento, 10 carros podem ser produzidos juntos por $95.000.

Por exemplo, 37 carros podem ser produzidos da seguinte forma: 37 = 3 x grupos de dez + 7 carros individuais

Então o custo para 37 carros é: 3*95.000+7*10.000=355.000

Implemente a função CalculateCost, que calcula o custo de produção de um número de carros, independentemente de serem bem-sucedidos ou não:

CalculateCost(37)
// => 355000

CalculateCost(21)
// => 200000

Observação: o valor de retorno deve ser um uint.

Editar via GitHub O link abre em uma nova janela ou aba
Go Exercism

Tudo pronto para começar Montagem de carros?

Crie sua conta no Exercism para aprender e dominar Go com 34 conceitos165 exercícios e mentoria humana de verdade, tudo de graça.