Вложенные операторы условного перехода. Оператор условия 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
⇑