Percursos
/
C#
C#
/
Exercícios
/
Carros, à montagem!
Carros, à montagem!

Carros, à montagem!

Exercício de aprendizagem

Introdução

Números

Em C# existem dois tipos diferentes de números:

  • Inteiros: números sem algarismos depois do separador decimal (números inteiros). Por exemplo: -6, 0, 1, 25, 976 e 500000.
  • Números de vírgula flutuante: números com zero ou mais algarismos depois do separador decimal. Por exemplo: -2.4, 0.1, 3.14, 16.984025 e 1024.0.

Os dois tipos numéricos mais comuns em C# são int e double. Um int é um inteiro de 32 bits e um double é um número de vírgula flutuante de 64 bits.

A aritmética é feita com os operadores aritméticos habituais. Os números podem ser comparados com os operadores de comparação numérica habituais e com os operadores de igualdade (==) e de desigualdade (!=).

O C# tem dois tipos de conversões numéricas:

  1. Conversões implícitas: não há perda de dados e não é precisa sintaxe adicional.
  2. Conversões explícitas: pode haver perda de dados e é precisa sintaxe adicional, na forma de um cast.

Como um int tem menos precisão do que um double, converter de int para double é seguro e, por isso, é uma conversão implícita. No entanto, converter de double para int pode significar perda de dados, por isso exige uma conversão explícita.

int softCool = 1358938113;
double notLost = 4.8151623;

// implicit cast: no loss of information
double macDebug = softCool;         // 1358938113.0

// explicit cast: possible loss of information 
int somethingLost = (int)notLost;   // 4

Condicionais

Neste exercício tens de executar lógica de forma condicional. A forma mais comum de o fazer em C# é através de uma condicional if/else:

int x = 6;

if (x == 5)
{
    // Execute logic if x equals 5
}
else if (x > 7)
{
    // Execute logic if x greater than 7
}
else
{
    // Execute logic in all other cases
}

A condição de uma condicional if tem de ser do tipo bool. O C# não tem o conceito de valores truthy.

Instruções

Neste exercício vais escrever código para analisar a produção de uma linha de montagem numa fábrica de automóveis. A velocidade da linha de montagem pode variar entre 0 (desligada) e 10 (máxima).

À velocidade mais baixa (1), são produzidos 221 automóveis por hora. A produção aumenta linearmente com a velocidade. Por isso, com a velocidade definida em 4, devem produzir-se 4 * 221 = 884 automóveis por hora. No entanto, velocidades mais altas aumentam a probabilidade de se produzirem automóveis com defeito, que depois têm de ser descartados.

Tens três tarefas.

1. Calcular a taxa de sucesso

Implementa o método (static) AssemblyLine.SuccessRate() para calcular a proporção de itens criados sem erros para uma determinada velocidade. A tabela seguinte mostra como a velocidade influencia a taxa de sucesso:

  • 0: taxa de sucesso de 0%.
  • 1 a 4: taxa de sucesso de 100%.
  • 5 a 8: taxa de sucesso de 90%.
  • 9: taxa de sucesso de 80%.
  • 10: taxa de sucesso de 77%.
AssemblyLine.SuccessRate(10)
// => 0.77

2. Calcular a taxa de produção por hora

Implementa o método (static) AssemblyLine.ProductionRatePerHour() para calcular a taxa de produção da linha de montagem por hora, tendo em conta a taxa de sucesso:

AssemblyLine.ProductionRatePerHour(6)
// => 1193.4

Repara que o valor devolvido é um double.

3. Calcular o número de itens funcionais produzidos por minuto

Implementa o método (static) AssemblyLine.WorkingItemsPerMinute() para calcular quantos automóveis funcionais são produzidos por minuto:

AssemblyLine.WorkingItemsPerMinute(6)
// => 19

Repara que o valor devolvido é um int.

Editar via GitHub A ligação abre numa nova janela ou separador
C# Exercism

Estás pronto para começar Carros, à montagem!?

Inscreve-te no Exercism para aprenderes e dominares C# com 62 conceitos178 exercícios, e mentoria humana real, tudo grátis.