Треки
/
Go
Go
/
Вправи
/
Купівля автомобіля
Купівля автомобіля

Купівля автомобіля

Навчальна вправа

Вступ

Порівняння

У Go числа можна порівнювати за допомогою таких операторів відношення та рівності.

Порівняння Оператор
дорівнює ==
не дорівнює !=
менше <
менше або дорівнює <=
більше >
більше або дорівнює >=

Результатом порівняння завжди є булеве значення (англ. Boolean), тобто true або false.

a := 3

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

Наведені вище оператори порівняння також можна використовувати для порівняння рядків тексту (англ. string). У цьому випадку застосовується лексикографічний (словниковий) порядок. Наприклад:

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

Умовні конструкції

Умовні конструкції в Go подібні до умовних конструкцій в інших мовах. Базовим типом будь-якої умовної операції є тип bool, який може мати значення true або false. Умовні конструкції часто використовуються як механізми керування потоком, щоб перевіряти різні умови.

Для перевірки конкретного випадку можна використати умовну конструкцію if, яка виконує свій код, якщо відповідна умова дорівнює true, ось так:

var value string

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

У сценаріях із більш ніж одним випадком багато умовних конструкцій if можна обʼєднати в ланцюжок за допомогою конструкцій else if та else.

var number int
result := "This number is "

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

Умовні конструкції також можуть містити коротку інструкцію ініціалізації, яку можна використати, щоб ініціалізувати одну або кілька змінних для конструкції if. Наприклад:

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

Примітка: будь-які змінні, створені в інструкції ініціалізації, виходять з області видимості після завершення умовної конструкції if.

Вказівки

У цій вправі ми напишемо трохи коду, щоб допомогти підготуватися до купівлі транспортного засобу.

На нас чекають три завдання: визначити, чи потрібне посвідчення водія, допомогти вибрати між двома транспортними засобами та оцінити прийнятну ціну вживаного транспортного засобу.

1. Визначте, чи потрібне посвідчення водія

Деякі види транспортних засобів вимагають посвідчення водія для керування ними. Припустімо, що посвідчення вимагають лише види "car" і "truck", а всім іншим можна керувати без нього.

Реалізуйте функцію NeedsLicense(kind), яка приймає вид транспортного засобу і повертає булеве значення (англ. Boolean), що вказує, чи потрібне посвідчення для такого виду транспорту.

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

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

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

2. Виберіть між двома можливими транспортними засобами для купівлі

Ми оцінюємо доступні варіанти транспортних засобів. Нам вдається звузити вибір до двох варіантів, але потрібна допомога, щоб ухвалити остаточне рішення. Для цього реалізуйте функцію ChooseVehicle(option1, option2), яка приймає два транспортні засоби як аргументи і повертає рішення, що містить варіант, який стоїть першим у лексикографічному порядку.

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. Обчисліть приблизну ціну вживаного транспортного засобу

Тепер, коли рішення ухвалено, ми хочемо переконатися, що в автосалоні отримаємо справедливу ціну. Оскільки нас цікавить купівля вживаного транспортного засобу, ціна залежить від його віку. Для приблизної оцінки припустімо: якщо вік транспортного засобу менший за 3 роки, він коштує 80% початкової ціни, яку мав новим. Якщо йому щонайменше 10 років, він коштує 50%. Якщо вік транспортного засобу щонайменше 3 роки, але менше ніж 10 років, він коштує 70% початкової ціни.

Реалізуйте функцію CalculateResellPrice(originalPrice, age), яка застосовує цю логіку за допомогою if, else if та else (є й інші способи, якщо захочеться потренуватися). Вона приймає початкову ціну та вік транспортного засобу як аргументи і повертає оцінену ціну в автосалоні.

CalculateResellPrice(1000, 1)
// => 800

CalculateResellPrice(1000, 5)
// => 700

CalculateResellPrice(1000, 15)
// => 500

Зверніть увагу: повернене значення має тип float64.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Go Exercism

Час розпочати Купівля автомобіля?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Go, а також 34 концепції165 вправ та справжнє наставництво від людей, і все це безкоштовно.