Parcours
/
Java
Java
/
Exercices
/
Voitures, assemble !
Voitures, assemble !

Voitures, assemble !

Exercice d'apprentissage

Introduction

Les nombres

Java possède deux types de nombres différents :

  • Entiers : nombres sans aucun chiffre après le séparateur décimal (nombres entiers). Par exemple -6, 0, 1, 25, 976 et -500000.
  • Nombres à virgule flottante : nombres comportant zéro ou plusieurs chiffres après le séparateur décimal. Par exemple -20.4, 0.1, 2.72, 16.984025 et 1024.0.

Les deux types numériques les plus courants en Java sont int et double. Un int est un entier de 32 bits et un double est un nombre à virgule flottante de 64 bits.

Les opérations arithmétiques s'effectuent à l'aide des opérateurs arithmétiques standard. On peut comparer les nombres à l'aide des opérateurs de comparaison numériques standard (par ex. 5 > 4 et 4 <= 5) et des opérateurs d'égalité (==) et d'inégalité (!=).

Java possède deux types de conversions numériques :

  1. Conversions implicites : aucune donnée n'est perdue et aucune syntaxe supplémentaire n'est nécessaire.
  2. Conversions explicites : des données peuvent être perdues et une syntaxe supplémentaire, sous la forme d'un cast, est nécessaire.

Comme un int est moins précis qu'un double, convertir un int en double ne présente aucun risque : c'est donc une conversion implicite. En revanche, convertir un double en int peut entraîner une perte de données, ce qui exige une conversion explicite.

Les instructions if-else

L'instruction if-then

L'instruction de contrôle de flux la plus élémentaire en Java est l'instruction if-then. Cette instruction sert à n'exécuter une portion de code que si une condition donnée est true. Une instruction if-then se définit à l'aide de la clause 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--;
        }
    }
}

Dans l'exemple ci-dessus, si la voiture n'a plus de carburant, l'appel à la méthode Car.drive ne fait rien.

L'instruction if-then-else

L'instruction if-then-else offre un chemin d'exécution alternatif lorsque la condition de la clause if est évaluée à false. Ce chemin d'exécution alternatif suit une clause if et se définit à l'aide de la clause else :

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

Dans l'exemple ci-dessus, si la voiture n'a plus de carburant, l'appel à la méthode Car.drive appelle une autre méthode pour arrêter la voiture.

L'instruction if-then-else prend aussi en charge plusieurs conditions grâce à la clause else if :

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

Dans l'exemple ci-dessus, conduire la voiture lorsque le carburant est inférieur ou égal à 5 la fait effectivement rouler, mais allume le voyant de carburant. Quand le carburant atteint 0, la voiture s'arrête.

Instructions

Dans cet exercice, tu vas écrire du code pour analyser la production d'une chaîne de montage dans une usine de voitures. La vitesse de la chaîne de montage peut aller de 0 (à l'arrêt) à 10 (maximum).

À sa vitesse la plus basse (1), la chaîne produit 221 voitures par heure. La production augmente de manière linéaire avec la vitesse. Donc, avec une vitesse réglée sur 4, elle devrait produire 4 * 221 = 884 voitures par heure. Cependant, des vitesses plus élevées augmentent la probabilité que des voitures défectueuses soient produites, et celles-ci doivent ensuite être mises au rebut. Le tableau suivant montre comment la vitesse influence le taux de réussite :

  • De 1 à 4 : un taux de réussite de 100 %.
  • De 5 à 8 : un taux de réussite de 90 %.
  • 9 : un taux de réussite de 80 %.
  • 10 : un taux de réussite de 77 %.

Tu as deux tâches.

1. Calcule le taux de production par heure

Implémente la méthode CarsAssemble.productionRatePerHour() pour calculer le taux de production horaire de la chaîne de montage, en tenant compte de sa vitesse actuelle et de son taux de réussite :

CarsAssemble.productionRatePerHour(6)
// => 1193.4

Note que la valeur renvoyée est un double.

2. Calcule le nombre d'éléments fonctionnels produits par minute

Implémente la méthode CarsAssemble.workingItemsPerMinute() pour calculer combien de voitures fonctionnelles sont produites par minute :

CarsAssemble.workingItemsPerMinute(6)
// => 19

Note que la valeur renvoyée est un int.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Java Exercism

Prêt à commencer Voitures, assemble ! ?

Inscris-toi sur Exercism pour apprendre et maîtriser Java avec 26 concepts158 exercices, et un vrai mentorat humain, le tout gratuitement.