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
  // Вычислить максимум между тремя числами
  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. Использовать условное выражение
  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

 


Связанные темы