Percursos
/
Java
Java
/
Exercícios
/
Carros, à montagem!
Carros, à montagem!

Carros, à montagem!

Exercício de aprendizagem

Introdução

Números

Existem dois tipos diferentes de números em Java:

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

Os dois tipos numéricos mais comuns em Java 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 faz-se com os operadores aritméticos habituais. Os números podem ser comparados com os operadores de comparação numérica habituais (por exemplo, 5 > 4 e 4 <= 5) e com os operadores de igualdade (==) e de desigualdade (!=).

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

  1. Conversões implícitas: não se perde nenhum dado e não é precisa sintaxe adicional.
  2. Conversões explícitas: podem perder-se dados e é precisa sintaxe adicional sob a forma de um cast.

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

Instruções if-else

A instrução if-then

A instrução de controlo de fluxo mais básica do Java é a instrução if-then. Esta instrução serve para executar uma secção de código apenas se uma determinada condição for true. Uma instrução if-then define-se com a cláusula if:

class Car {
    void drive() {
        // the "if" clause: the car needs to have fuel left to drive
        if (fuel > 0) {
            // the "then" clause: the car drives, consuming fuel
            fuel--;
        }
    }
}

No exemplo acima, se o carro ficar sem combustível, chamar o método Car.drive não faz nada.

A instrução if-then-else

A instrução if-then-else oferece um caminho de execução alternativo para quando a condição da cláusula if é avaliada como false. Este caminho de execução alternativo segue-se a uma cláusula if e define-se com a cláusula else:

class Car {
    void drive() {
        if (fuel > 0) {
            fuel--;
        } else {
            stop();
        }
    }
}

No exemplo acima, se o carro ficar sem combustível, chamar o método Car.drive chama outro método para parar o carro.

A instrução if-then-else também suporta várias condições através da cláusula else if:

class Car {
    void drive() {
        if (fuel > 5) {
            fuel--;
        } else if (fuel > 0) {
            turnOnFuelLight();
            fuel--;
        } else {
            stop();
        }
    }
}

No exemplo acima, conduzir o carro quando o combustível é inferior ou igual a 5 faz o carro andar, mas acende a luz do combustível. Quando o combustível chega a 0, o carro deixa de andar.

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).

À sua velocidade mais baixa (1), são produzidos 221 automóveis por hora. A produção aumenta linearmente com a velocidade. Assim, com a velocidade definida como 4, deve produzir 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. A tabela seguinte mostra como a velocidade influencia a taxa de sucesso:

  • De 1 a 4: taxa de sucesso de 100%.
  • De 5 a 8: taxa de sucesso de 90%.
  • 9: taxa de sucesso de 80%.
  • 10: taxa de sucesso de 77%.

Tens duas tarefas.

1. Calcula a taxa de produção por hora

Implementa o método CarsAssemble.productionRatePerHour() para calcular a taxa de produção por hora da linha de montagem, tendo em conta a velocidade atual da linha de montagem e a taxa de sucesso:

CarsAssemble.productionRatePerHour(6)
// => 1193.4

Repara que o valor devolvido é um double.

2. Calcula o número de automóveis funcionais produzidos por minuto

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

CarsAssemble.workingItemsPerMinute(6)
// => 19

Repara que o valor devolvido é um int.

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

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

Inscreve-te no Exercism para aprenderes e dominares Java com 26 conceitos158 exercícios, e mentoria humana real, tudo grátis.