Kotlin. Умовний вираз

Умовний вираз. Поняття. Особливості використання з операторами if та when. Приклади


Зміст


Пошук на інших ресурсах:

1. Умовний вираз. Поняття. Використання оператора if в умовному виразі

Мова Kotlin дозволяє використовувати так звані умовні вирази. В умовному виразі оператор if (усі його види) зв’язується з деякою змінною (іменем). Потім за іменем цієї змінної можна викликати код умовного виразу. Використання умовних виразів спрощує програмний код.

Для різних видів операторів if синтаксис оголошення умовного виразу відповідно змінюється.

Мова Kotlin забороняє використання умовного виразу для скороченої форми оператора if. Допускається використовувати умовний вираз тільки для повної форми та сходинкової (каскадної) форми оператора if.

 

2. Синтаксис умовного виразу для повної форми: if-else

Для повної форми оператора if-else синтаксис умовного виразу наступний:

val cond_expr : Type =
  if (condition)
    statements1
  else
    statements2

тут

  • cond_expr – ім’я змінної, яка отримує умовний вираз;
  • condition – деякий логічний вираз;
  • statements1, statements2 – один або декілька операторів (інструкцій) взятих у фігурні дужки.

Допускається також використовувати модифікатор var в оголошенні умовного виразу.

 

3. Синтаксис умовного виразу для сходинкової (каскадної) форми if-else-if

Умовні вирази можна застосовувати також до сходинкової (каскадної) форми оператора if-else-if. У цьому випадку синтаксис оголошення умовного виразу наступний:

val cond_expr =
  if (condition1)
    statements_1
  else
  if (condition2)
    statements_2
  else
    ...
  else
  if (conditionN)
    statements_N
  else
    statements_N+1

де

  • cond_expr – ім’я змінної, яка отримує умовний вираз;
  • condition1, condition2, conditionN – логічні вирази;
  • statements_1, statements_2, statements_N – один або декілька операторів чи значень.

 

4. Приклади умовних виразів для оператора if-else
4.1. Мінімум між двома числами

Задача. Сформувати умовний вираз, який отримує мінімальне значення між двома дійсними числами.

Розв’язок.

 

fun main(args:Array<String>) {

  // Умовний вираз. Повна форма: if-else
  // Обчислити мінімум між двома числами

  // 1. Оголосити змінні
  val a : Double
  val b : Double

  // 2. Ввести a, b
  print("a = ")
  a = readLine().toString().toDouble()
  print("b = ")
  b = readLine().toString().toDouble()

  // 3. Сформувати умовний вираз
  val Min =
    if (a<b) a
    else b

  // 4. Викликати умовний вираз
  println("Min = " + Min)
}

Тестовий приклад

a = 23
b = 33
Min = 23.0

 

4.2. Модуль числа

Умова задачі. Сформувати умовний вираз, який для заданого числа a виводить модуль цього числа.

Розв’язок.

fun main(args:Array<String>) {

  // Умовний вираз. Повна форма: if-else
  // Вивести модуль числа

  // 1. Оголосити змінні
  val a : Double

  // 2. Ввести a
  print("a = ")
  a = readLine().toString().toDouble()

  // 3. Сформувати умовний вираз, який виводить модуль числа
  val PrintAbs =
    if (a<0) println("abs(a) = " + (-a))
    else println("abs(a) = " + a)
  }

Тестовий приклад

a = -37
abs(a) = 37.0

 

5. Приклади умовних виразів для оператора if-else-if
5.1. Умовний вираз – максимум між трьома числами

У прикладі створюється умовний вираз з іменем Max, який визначає максимум між трьома числами a, b, c введеними з клавіатури.

 

fun main(args:Array<String>) {

  // Умовний вираз. Каскадна форма: if-else-if
  // Обчислити максимум між трьома числами
  var a : Int
  var b : Int
  var c : Int

  print("a = ")
  a = readLine().toString().toInt()
  print("b = ")
  b = readLine().toString().toInt()
  print("c = ")
  c = readLine().toString().toInt()

  // Оголошення умовного виразу - обчислює максимум між a, b, c
  // У змінну Max записується одне зі значень a, b, c
  var Max =
    if ((a>=b)&&(a>=c)) a
    else
    if ((b>=a)&&(b>=c)) b
    else c

  // Викликати умовний вираз Max
  println("Max = " + Max)
}

Тестовий приклад

a = 25
b = 30
c = 14
Max = 30

 

5.2. Обчислення характеристик геометричних фігур

Задача. Задано радіус r та число n, що визначає номер фігури. В залежності від значень r та n обчислити:

  • довжину кола, якщо n=1;
  • площу круга, якщо n=2;
  • об’єм кулі, якщо n=3.

Розв’язок.

const val Pi = 3.1415

fun main(args:Array<String>) {

  // Умовний вираз. Каскадна форма: if-else-if
  // Обчислити характеристики фігури

  // 1. Оголосити змінні
  val r : Double
  val n : Int

  // 2. Ввести n, r
  print("n = ")
  n = readLine().toString().toInt()
  print("r = ")
  r = readLine().toString().toDouble()

  // 3. Перевірка, чи коректно введені дані
  if ((n<1)||(n>3)||(r<0)) {
    println("Incorrect input.")
    return
  }

  // 4. Оголосити умовний вираз
  val result : Double =
    if (n==1)
      2*Pi*r
    else
    if (n==2)
      Pi*r*r
    else
    if (n==3)
      4.0/3.0*Pi*r*r*r
    else
      0.0

  // 5. Викликати умовний вираз
  println("result = " + result)
}

Тестовий приклад

n = 3
r = 2.5
result = 65.44791666666666

 

6. Використання умовного виразу в поєднанні з оператором when

Умовний вираз може використовуватись в поєднанні з оператором when. У спрощеній формі синтаксис оголошення такого виразу наступний

val cond_expr = when {
  ...
}

 

7. Приклади використання умовного виразу з оператором when
7.1. Вивести назву дня за номером дня

Задача. Задано ціле число, що визначає день тижня (1..7). За введеним числом вивести назву відповідного дня тижня. Вважати, що 1 це Monday.

 

fun main(args:Array<String>) {

  // Умовний вираз. Оператор when
  // Обчислити назву дня тижня за його номером

  // 1. Оголосити змінні
  val day : Int

  // 2. Ввести день
  print("day = ")
  day = readLine().toString().toInt()

  // 3. Оголосити умовний вираз
  val dayOfWeek : String =
    when (day) {
      1 -> "Monday"
      2 -> "Tuesday"
      3 -> "Wednesday"
      4 -> "Thirsday"
      5 -> "Friday"
      6 -> "Saturday"
      7 -> "Sunday"
      else -> "Incorrect input"
  }

  // 4. Використати умовний вираз для деякого day
  println("dayOfWeek = " + dayOfWeek)
}

Тестовий приклад

day = 4
dayOfWeek = Thirsday

 

7.2. Кількість днів у місяці

Задача. Сформувати умовний вираз, який на основі заданого номера місяця виводить кількість днів у цьому місяці. При формуванні виразу використати оператор when. Прийняти до уваги, що рік невисокосний.

Розв’язок.

fun main(args:Array<String>) {
  // Умовний вираз. Оператор when
  // Сформувати кількість днів у місяці

  // 1. Оголосити змінні
  val n : Int

  // 2. Ввести n
  print("n = ")
  n = readLine().toString().toInt()

  // 3. Сформувати умовний вираз
  val nDays =
    when (n) {
      4, 6, 9, 11 -> 30
      2 -> 28
      else -> 31
  }

  // 4. Вивести результат
  println("days = " + nDays)
}

Тестовий приклад

n = 7
days = 31

 


Споріднені теми