Вкладені оператори умовного переходу. Оператор умови if як складова інших операторів. Приклади
Дана тема є продовженням теми:
Зміст
- 1. Поняття про вкладені оператори умовного переходу if
- 2. Оператор умовного переходу як складова інших операторів. Приклади
- Споріднені теми
Пошук на інших ресурсах:
1. Поняття про вкладені оператори умовного переходу if
Оператор умовного переходу (будь-яка його форма) може бути вкладений в будь-який інший оператор, що керує ходом виконання обчислювального процесу. Це можуть бути інші конструкції мови, такі як оператори циклу, оператор when, оператор умовного переходу тощо. Допускається будь-яка кількість рівнів вкладень операторів.
Якщо оператор умовного переходу вкладений в інший оператор умовного переходу, то програмний код може бути приблизно таким
if (condition1) { ... if (condition2) { ... } ... }
Якщо оператор умовного переходу вкладений в тіло оператора циклу for, то в найпростішому випадку програмний код такого вкладення наступний:
for (...) { ... if (...) { ... } else { ... } ... }
За подібним принципом можна реалізувати вкладення для будь-якого іншого керуючого оператора (while, do-while, when).
⇑
2. Оператор умовного переходу як складова інших операторів. Приклади
2.1. Оператор умовного переходу в тілі інших операторів умовного переходу
Умова задачі. Задано рік та номер місяця в цьому році. Визначити, скільки днів у цьому місяці.
Розв’язок.
fun main(args:Array<String>) { // Вкладені оператори if. // Визначити кількість днів у заданому місяці заданого року // 1. Оголошення змінних val year : Int // заданий рік val month : Int // заданий місяць val days : Int // результат - кількість днів // 2. Ввід даних print("year = ") year = readLine().toString().toInt() print("month = ") month = readLine().toString().toInt() // 3. Перевірка, чи коректно введені дані if ((year < 0) || (month<1) || (month>12)) { println("Incorrect input.") return } // 4. Обчислення - вкладені оператори if if ((month==4)||(month==6)||(month==9)||(month==11)) days = 30 else if (month==2) // перевірка, чи місяць лютий { // Визначення високосного року - вкладений if if (year % 400 == 0) days = 29 else if (year % 100 == 0) days = 28 else if (year % 4 == 0) days = 29 else days = 28 } else days = 31 print("days = " + days) }
Результат виконання програми
year = 2020 month = 2 days = 29
⇑
2.2. Оператор умовного переходу в тілі циклу for. Приклад
Умова задачі. Вивести на екран всі цілі числа в діапазоні від a до b, які є кратні числу c.
Розв’язок.
fun main(args:Array<String>) { // Вкладений оператор if в тілі оператора циклу. // 1. Оголошення змінних val a : Int val b : Int val c : Int // 2. Ввід чисел print("a = ") a = readLine().toString().toInt() print("b = ") b = readLine().toString().toInt() print("c = ") c = readLine().toString().toInt() // Перевірка, чи коректний ввід if ((a>b) || (c<=0)) { println("Incorrect input.") return } // 3. Вивід чисел print("[" + a + "; " + b + "] % " + c + " => ") for (i:Int in a .. b) // цикл for if (i%c == 0) // оператор if в тілі циклу for print(" " + i) println() }
Результат виконання програми
a = -22 b = 34 c = 3 [-22; 34] % 3 => -21 -18 -15 -12 -9 -6 -3 0 3 6 9 12 15 18 21 24 27 30 33
⇑
2.3. Оператор умовного переходу в операторі while. Приклад
Умова задачі. Дано натуральне число n та дійсні числа a1, a2, …, an. Визначити суму тих дійсних чисел, які більше числа x.
Розв’язок.
fun main(args:Array<String>) { // Обробка даних під час вводу з клавіатури // 1. Оголошення змінних val n : Int var a : Double val x : Double var i : Int var summ = 0.0 // Шукана сума - результат // 2. Ввід даних print("n = ") n = readLine().toString().toInt() print("x = ") x = readLine().toString().toDouble() // 2. Цикл while вводу чисел та обчислення суми println("Enter numbers:") i = 0 while (i<n) { // Ввести число a print("=> ") a = readLine().toString().toDouble() // Обчислити суму if (a>x) summ += a // збільшити лічильник i++; } // 4. Вивести результат println("summ = " + summ) }
Результат виконання програми
n = 6 x = 2.5 Enter numbers: => 3.1 => 2.8 => 1.4 => 2.5 => 2.2 => 4.3 summ = 10.2
⇑
2.4. Оператор умовного переходу в операторі do-while. Приклад
Умова задачі.
Дано послідовність цілих чисел, яка закінчується нулем. Знайти масимальне та мінімальне значення у цій послідовності.
Розв’язок.
Для вводу даних до отримання нуля найкраще підходить цикл do-while.
fun main(args:Array<String>) { // Обробка даних під час вводу з клавіатури // 1. Оголошення змінних var number : Int // число, яке буде вводитись var max = 0 var min = 0 var f_first = true // сигналізує першу ітерацію циклу // 2. Цикл вводу чисел print("Enter numbers:") do { print("=> ") number = readLine().toString().toInt() if (number==0) break // Якщо перша ітерація if (f_first) { max = number min = number f_first = false } // Визначити максимум та мінімум if (max<number) max = number if (min>number) min = number } while (number!=0) // 3. Вивести результат println("max = " + max) println("min = " + min) }
Тестовий приклад
Enter numbers: => 5 => 1 => 3 => 4 => 0 max = 5 min = 1
⇑
Споріднені теми
- Оператор умовного переходу if-else. Види операторів умовного переходу
- Умовний вираз. Особливості використання з операторами if та when. Приклади
- Оператор when
⇑