Інтервали (діапазони). Оператор .. . Застосування інтервалів в умовах (if), циклах (for), виборі (when). Оператор in. Інтервальні типи IntRange, CharRange, LongRange
Зміст
- 1. Інтервали (діапазони). Синтаксис оголошення. Оператор ..
- 2. Створення змінних, що є інтервалами. Присвоєння інтервалу посиланню
- 3. Інтервальні типи CharRange, IntRange, LongRange. Оголошення та використання змінної інтервального типу
- 4. Оператор in. Поєднання оператора in з інтервалами
- 5. Використання інтервалів в операторі if. Приклади
- 6. Використання інтервалів в операторі when
- 7. Використання інтервалів в операторі циклу for
- Споріднені теми
Пошук на інших ресурсах:
1. Інтервали (діапазони). Синтаксис оголошення. Оператор ..
Інтервали або діапазони дозволяють задавати послідовність можливих значень між деяким початковим та кінцевим значенням. Інтервали визначаються з допомогою оператора .. і в загальному випадку мають наступний вигляд
begin_value .. end_value
тут
- begin_value – значення, що визначає початок діапазону;
- end_value – кінцеве значення діапазону.
⇑
2. Створення змінних, що є інтервалами. Присвоєння інтервалу посиланню
Щоб створити тільки читаєму змінну, яка є інтервалом, потрібно використати наступний синтаксис
val varName = begin_value .. end_value
Щоб створити змінну-інтервал, яка є змінювана у програмі (mutable-змінна), потрібно використати наступну форму запису
var varName = begin_value .. end_value
Якщо змінна оголошена як інтервал, то її значення може бути перевизначене іншим інтервалом такого самого інтервального типу.
⇑
3. Інтервальні типи CharRange, IntRange, LongRange. Оголошення та використання змінної інтервального типу
У мові Kotlin підтримуються три інтервальні типи CharRange, IntRange, LongRange, які визначають діапазон значень відповідно для типів char, int, long.
Допускається оголошувати змінну інтервального типу а потім присвоювати їй відповідні інтервали.
Приклад.
// Оголошення змінних інтервальних типів // 1. Діапазон значень типу int var seconds : IntRange seconds = 0..59 val miliseconds : IntRange = 0..100 // 2. Діапазон значень типу long var bigNumbers : LongRange = 0..1_000_000_000_000_000 // перевизначення діапазону типу long bigNumbers = 0..1_000L // 3. Діапазон значень типу char var chars : CharRange // символьний тип chars = 'a'..'z' // перевизначення діапазону типу char chars = 'A'..'Z' // так не можна - помилка компіляції, неспівпадіння типів CharRange та IntRange //chars = 1..10
⇑
4. Оператор in. Поєднання оператора in з інтервалами
Для того, щоб визначити, чи деяке значення входить в інтервал, використовується оператор in. Синтаксис перевірки входження значення в інтервал наступний
valueName in begin_value .. end_value
тут
- valueName – змінна або значення, яке перевіряється на належність інтервалу в межах від begin_value до end_value.
Результатом оператора in є значення true (якщо змінна входить в інтервал) або false (змінна поза межами інтервалу).
⇑
5. Використання інтервалів в операторі if. Приклади
5.1. Визначення належності дня
Задача.
Задано номер дня тижня (1..7). Визначити, який цей день: робочий чи вихідний.
Розв’язок.
fun main(args:Array<String>) { // Інтервали, оператор .. // 1. Оголосити змінні val day : Int // 2. Ввести день тижня print("day = ") day = readLine().toString().toInt() // 3. Обчислення if (day in 1..5) println("Workday.") else if (day in 6..7) println("Day off.") else println("Incorrect input.") }
Тестовий приклад
day = 3 Workday.
⇑
5.2. Визначення вікової категорії людини
Задача. Розробити програму, яка запитує ім’я користувача та його вік і визначає до якої вікової категорії він належить:
- від 1 до 10 років – дитина;
- від 11 до 15 років – підліток;
- від 16 до 20 років – юнак;
- від 21 до 30 років – молода людина;
- після 31 року – доросла людина.
Розв’язок.
fun main(args:Array<String>) { // Інтервали, оператор .. // 1. Оголосити змінні val name : String val age : Int // 2. Ввести дані print("name = ") name = readLine().toString() print("age = ") age = readLine().toString().toInt() // 3. Перевірка, чи коректний ввід if (age<=0) println("Incorrect input") // 4. Обчислення if (age in 1..10) println("Child.") // Дитина else if (age in 11..15) println("Teenager") // Підліток else if (age in 16..20) println("Younker (young woman)") // Юнак (юнка) else if (age in 21..30) println("Young person") // Молода людина else println("Adult") // Доросла людина }
Тестовий приклад
name = Ihor age = 49 Adult
⇑
6. Використання інтервалів в операторі when
6.1. Визначення пори року за номером місяця
Задача. Використовуючи оператор when та інтервали розробити програму, яка за номером місяця (1..12) визначає назву пори року, до якої він належить.
Розв’язок.
fun main(args:Array<String>) { // Інтервали, оператори in, .. // 1. Оголосити змінні val month : Int // 2. Ввести дані print("month = ") month = readLine().toString().toInt() // 3. Обчислення when (month) { in 1..2, 12 -> println("Winter") in 3..5 -> println("Spring") in 6..8 -> println("Summer") in 9..11 -> println("Autumn") else -> println("Incorrect input.") } }
Тестовий приклад
month = 8 Summer
⇑
6.2. Визначення знаку зодіаку
Задача. Задано номер дня та номер місяця, що визначають дату народження людини. Розробити програму, яка визначає до якого знаку зодіаку вона належить:
- 20.01 – 18.02 – Водолій
- 19.02 – 20.03 – Риба
- 21.03 – 19.04 – Овен
- 20.04 – 20.05 – Телець
- 21.05 – 21.06 – Близнюки
- 22.06 – 22.07 – Рак
- 23.07 – 22.08 – Лев
- 23.08 – 22.09 – Діва
- 23.09 – 22.10 – Терези
- 23.10 – 22.11 – Скорпіон
- 23.11 – 21.12 – Стрілець
- 22.12 – 19.01 – Козеріг
У програмі вважати, що рік невисокосний.
Розв’язок.
fun main(args:Array<String>) { // Інтервали, оператори in, .. // 1. Оголосити змінні val day : Int val month : Int // 2. Ввести дані print("day = ") day = readLine().toString().toInt() print("month = ") month = readLine().toString().toInt() // 3. Обчислення when { (month==1)&&(day in 1..19) || (month==12)&&(day in 22..31) -> println("Козеріг") (month==1)&&(day in 20..31) || (month==2)&&(day in 1..18) -> println("Водолій") (month==2)&&(day in 19..28) || (month==3)&&(day in 1..20) -> println("Риба") (month==3)&&(day in 21..31) || (month==4)&&(day in 1..19) -> println("Овен") (month==4)&&(day in 20..30) || (month==5)&&(day in 1..20) -> println("Телець") (month==5)&&(day in 21..31) || (month==6)&&(day in 1..21) -> println("Близнюки") (month==6)&&(day in 22..30) || (month==7)&&(day in 1..22) -> println("Рак") (month==7)&&(day in 23..31) || (month==8)&&(day in 1..22) -> println("Лев") (month==8)&&(day in 23..31) || (month==9)&&(day in 1..22) -> println("Діва") (month==9)&&(day in 23..30) || (month==10)&&(day in 1..22) -> println("Терези") (month==10)&&(day in 23..31) || (month==11)&&(day in 1..22) -> println("Скорпіон") (month==11)&&(day in 23..30) || (month==12)&&(day in 1..21) -> println("Стрілець") else -> println("Incorrect input.") } }
Тестовий приклад
day = 14 month = 1 Козеріг
⇑
7. Використання інтервалів в операторі циклу for
7.1. Конвертувати фунти в кілограми
Задача. Надрукувати таблицю переводу фунтів у кілограми для значень фунтів від 1 до 10 (1 фунт = 453 грами).
Розв’язок.
fun main(args:Array<String>) { // Інтервали, оператори in, .. // Надрукувати таблицю відповідності 1 фунт = 0.453 кг // 1. Оголосити змінні var lb : Int var kg : Double // 2. Вивід таблиці for (lb in 1..10) { kg = lb * 0.453 println("lb.: " + lb + " => " + kg + " kg.") } }
Результат виконання програми
lb.: 1 => 0.453 kg. lb.: 2 => 0.906 kg. lb.: 3 => 1.359 kg. lb.: 4 => 1.812 kg. lb.: 5 => 2.265 kg. lb.: 6 => 2.718 kg. lb.: 7 => 3.1710000000000003 kg. lb.: 8 => 3.624 kg. lb.: 9 => 4.077 kg. lb.: 10 => 4.53 kg.
⇑
7.2. Обчислення середнього арифметичного чисел
Умова задачі.
Дано натуральне число n та дійсні числа a1, a2, …, an. Визначити середнє арифметичне цих чисел. У програмі масиви не використовувати.
Розв’язок.
fun main(args:Array<String>) { // Інтервали, оператори in, .. // Визначити середнє арифметичне послідовності чисел // 1. Оголосити змінні var avg : Double = 0.0 val n : Int var a : Double // 2. Ввести n print("n = ") n = readLine().toString().toInt() // 3. Цикл обчислення, використовується інтервал 1..n for (i : Int in 1..n) { // ввести число print("=> ") a = readLine().toString().toDouble() // додати до загальної суми avg += a } // 4. Вивести середнє арифметичне avg /= n println("average = " + avg) }
Тестовий приклад
n = 5 => 1.2 => 1.4 => 1.6 => 1.7 => 1.1 average = 1.4
⇑
Споріднені теми
- Базові типи. Літерали. Числові константи. Допустимі межі числових типів. Приклади
- Змінні та константи. Ключові слова var, val, const
- Оператор when
⇑