Parcours
/
Go
Go
/
Exercices
/
Achat de véhicule
Achat de véhicule

Achat de véhicule

Exercice d'apprentissage

Introduction

Comparaison

En Go, on peut comparer des nombres à l'aide des opérateurs relationnels et d'égalité suivants.

Comparaison Opérateur
égal ==
différent !=
inférieur <
inférieur ou égal <=
supérieur >
supérieur ou égal >=

Le résultat de la comparaison est toujours une valeur booléenne, donc soit true, soit false.

a := 3

a != 4 // true
a > 5  // false

Les opérateurs de comparaison ci-dessus peuvent aussi servir à comparer des strings. Dans ce cas, c'est l'ordre lexicographique (celui du dictionnaire) qui s'applique. Par exemple :

	"apple" < "banana"  // true
	"apple" > "banana"  // false

Les instructions if

En Go, les conditionnelles sont semblables à celles des autres langages. Le type sous-jacent de toute opération conditionnelle est le type bool, qui peut valoir true ou false. Les conditionnelles servent souvent de mécanismes de contrôle du flux pour vérifier diverses conditions.

Pour vérifier un cas particulier, on peut utiliser une instruction if, qui exécute son code si la condition sous-jacente est true, comme ceci :

var value string

if value == "val" {
    return "was val"
}

Lorsqu'il y a plus d'un cas à traiter, on peut enchaîner plusieurs instructions if à l'aide des instructions else if et else.

var number int
result := "This number is "

if number > 0 {
    result += "positive"
} else if number < 0 {
    result += "negative"
} else {
    result += "zero"
}

Les instructions if peuvent aussi comporter une courte instruction d'initialisation, qui permet d'initialiser une ou plusieurs variables pour l'instruction if. Par exemple :

num := 7
if v := 2 * num; v > 10 {
    fmt.Println(v)
} else {
    fmt.Println(num)
}
// Output: 14

Remarque : toute variable créée dans l'instruction d'initialisation sort de la portée après la fin de l'instruction if.

Instructions

Dans cet exercice, tu vas écrire du code pour t'aider à te préparer à acheter un véhicule.

Tu as trois tâches : une pour déterminer si tu as besoin d'un permis, une pour t'aider à choisir entre deux véhicules et une pour estimer le prix acceptable d'un véhicule d'occasion.

1. Détermine si tu auras besoin d'un permis de conduire

Certains types de véhicules nécessitent un permis de conduire pour être utilisés. Suppose que seuls les types "car" et "truck" nécessitent un permis ; tout le reste peut être utilisé sans permis.

Implémente la fonction NeedsLicense(kind) qui prend le type de véhicule et renvoie un booléen indiquant si tu as besoin d'un permis pour ce type de véhicule.

needLicense := NeedsLicense("car")
// => true

needLicense = NeedsLicense("bike")
// => false

needLicense = NeedsLicense("truck")
// => true

2. Choisis entre deux véhicules potentiels à acheter

Tu évalues tes options parmi les véhicules disponibles. Tu parviens à les réduire à deux options, mais tu as besoin d'aide pour prendre la décision finale. Pour cela, implémente la fonction ChooseVehicle(option1, option2) qui prend deux véhicules en arguments et renvoie une décision qui inclut l'option qui arrive en premier dans l'ordre lexicographique.

vehicle := ChooseVehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."

ChooseVehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."

3. Calcule une estimation du prix d'un véhicule d'occasion

Maintenant que tu as pris une décision, tu veux t'assurer d'obtenir un prix équitable chez le concessionnaire. Comme tu souhaites acheter un véhicule d'occasion, le prix dépend de l'âge du véhicule. Pour une estimation approximative, suppose que si le véhicule a moins de 3 ans, il coûte 80 % du prix d'origine qu'il avait lorsqu'il était neuf. S'il a au moins 10 ans, il coûte 50 %. Si le véhicule a au moins 3 ans mais moins de 10 ans, il coûte 70 % du prix d'origine.

Implémente la fonction CalculateResellPrice(originalPrice, age) qui applique cette logique à l'aide de if, else if et else (il existe d'autres façons de faire si tu veux t'entraîner). Elle prend le prix d'origine et l'âge du véhicule en arguments et renvoie le prix estimé chez le concessionnaire.

CalculateResellPrice(1000, 1)
// => 800

CalculateResellPrice(1000, 5)
// => 700

CalculateResellPrice(1000, 15)
// => 500

Remarque : la valeur de retour est un float64.

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

Prêt à commencer Achat de véhicule ?

Inscris-toi sur Exercism pour apprendre et maîtriser Go avec 34 concepts165 exercices, et un vrai mentorat humain, le tout gratuitement.