Оператори порівняння (>, <, >=, <= …). Логічні оператори (&&, ||, !)
Зміст
- 1. Оператори порівняння. Призначення. Порівняння значень та посилань на об’єкт
- 2. Приклад операторів порівняння значень змінних різних типів
- 3. Приклад, що демонструє застосування операторів порівняння посилань (===, !==)
- 4. Логічні оператори (&&, ||, !). Перелік. Призначення
- 5. Приклади використання логічних операторів &&, ||, ! в умовних виразах
- Споріднені теми
Пошук на інших ресурсах:
1. Оператори порівняння. Призначення. Порівняння значень та посилань на об’єкт
Для порівняння двох значень, у мові Kotlin використовуються оператори порівняння. Ці оператори є бінарними. Це означає, що вони потребують двох операндів відповідно у лівій та правій частині. Результатом будь-якого оператора порівняння є значення true або false логічного типу Boolean.
Оператори порівняння мають такий самий синтаксис і призначення як в багатьох інших мовах. До цих операторів належать наступні:
- < – порівнює два значення і визначає чи значення у лівій частині оператора менше значення у правій частині. Якщо цей факт справджується, то повертається true;
- > – визначає, чи значення у лівій частині оператора більше за значення у правій частині;
- <= – визначає, чи значення у лівій частині менше або рівне значення у правій частині;
- >= – визначає, чи значення у лівій частині більше або рівне значення у правій частині;
- == – оцінює, чи значення зліва рівне значенню справа;
- != – оцінює, чи значення зліва не рівне значенню справа;
- === – визначає, чи посилаються два посилання на один об’єкт (рисунок 1);
- !== – визначає, чи не посилаються два посилання на один об’єкт (рисунок 2).
З вищенаведеного переліку останні два оператори ===, !== порівнюють значення посилань на об’єкти, а не значення цих об’єктів (див. рисунки 1, 2).
Рисунок 1. Випадок, коли посилання вказують на один об’єкт. Оператор === повертає true, оператор !== повертає false
Рисунок 2. Випадок, коли посилання вказують на різні об’єкти. Оператор === повертає false, оператор !== повертає true
⇑
2. Приклад операторів порівняння значень змінних різних типів
fun main(args:Array<String>) { // Оператори порівняння >, <, >=, <=, ==, != // Визначення рівності значень змінних різних типів // 1. Порівняння значень цілих типів val a : Int = 25 val b : Int = 30 var res1 : Boolean = a > b // res1 = false println("a > b => " + res1) res1 = a <= b // res1 = true println("a <= b => " + res1) // 2. Порівняння значень типів з плаваючою комою val x : Double = 2.85 val y = x var res2 = x == y // оператор == println("x == y => " + res2) // в операторі if if (x != 3.5) // оператор != println("x != 3.5") else println("x == 3.5") res2 = x < 0 // оператор < println("x < 0 => " + res2) // 3. Порівняння значень типу Char val c1 : Char = 'z' var res3 : Boolean res3 = c1 > 'a' if (res3) println("z > a") else println("z < a") // 4. Порівняння значень типу String val s1 = "abcd" val s2 = "abcde" var res4 = s1 != s2 println("\'abcd\' != \'abcde\' => " + res4) res4 = s1 < s2 println("\'abcd\' < \'abcde\' => " + res4) }
Результат виконання програми
a > b => false a <= b => true x == y => true x != 3.5 x < 0 => false z > a 'abcd' != 'abcde' => true 'abcd' < 'abcde' => true
⇑
3. Приклад, що демонструє застосування операторів порівняння посилань (===, !==)
// Деякий клас з функцією class A { fun Hello() { println("Hello world!") } } fun main(args:Array<String>) { // Оператори порівняння ===, !== // Визначення, чи вказують два посилання на один об'єкт // 1. Посилання ref1, ref2 вказують на той самий об'єкт (екземпляр) val ref1 = A() val ref2 = ref1 // присвоєння значень посилань // Оператор === if (ref1 === ref2) println("ref1 === ref2") // Оператор !== if (ref1 !== ref2) println("ref1 !== ref2") // 2. Посилання ref3, ref4 вказують на різні об'єкти val ref3 = A() val ref4 = A() // Оператор === if (ref3 === ref4) println("ref3 === ref4") // не виконається // Оператор !== if (ref3!==ref4) println("ref3 !== ref4") // виконається }
Результат виконання програми
ref1 === ref2 ref3 !== ref4
⇑
4. Логічні оператори (&&, ||, !). Перелік. Призначення
Логічні оператори дозволяють будувати складні логічні вирази оминаючи велику (зайву) кількість операторів умовного переходу в алгоритмі розв’язку задачі.
Результатом логічного оператора є значення true або false логічного типу Boolean. Послідовність логічних операторів, об’єднаних операндами, утворюють логічний вираз.
З допомогою логічного виразу можна скоротити програмний код, покращивши його візуалізацію.
Наприклад, якщо в програмі потрібно виконати одну єдину дію (послідовність операторів) при виконанні різних умов
if (condition1) statement if (condition2) statement ... if (conditionN) statement
то більш доцільно застосувати логічний оператор || (або) за зразком нижче
if (condition1 || condition2 || ... || conditionN)
statement
У мові Kotlin визначено наступні логічні оператори
- && – логічне AND (І). Це є бінарний оператор (потребує двох операндів зліва та справа). Оператор && повертає true, якщо значення обидвох операндів рівне true. В противному випадку повертається false;
- || – логічне OR (АБО). Це є бінарний оператор. Оператор || повертає false, якщо значення обидвох операндів рівне false. В противному випадку оператор повертає true;
- ! – логічне заперечення NOT (Ні). Це є унарний оператор, повертає true, якщо значення операнду рівне false. Інакше повертається false.
⇑
5. Приклади використання логічних операторів &&, ||, ! в умовних виразах
5.1. Визначення пари однакових чисел
Задача. Задано три дійсних числа a, b, c. Визначити, чи є серед них хоча б одна пара рівних між собою чисел.
Розв’язок.
fun main(args:Array<String>) { // Визначення пари подібних між собою чисел // 1. Оголошення змінних val a : Double val b : Double val c : Double // 2. Ввід значень print("a = ") a = readLine().toString().toDouble() print("b = ") b = readLine().toString().toDouble() print("c = ") c = readLine().toString().toDouble() // 3. Обчислення, використовується оператор || - логічне АБО if ((a==b) || (a==c) || (b==c)) println("Yes") else println("No") }
Результат виконання програми
a = 3.8 b = 2.2 c = 3.8 Yes
⇑
5.2. Визначення наявності заданої цифри в числі
Задача. Дано двохзначне число. Визначити, чи входить в нього цифра 7.
Розв’язок.
fun main(args:Array<String>) { // Визначення входження заданої цифри в числі // 1. Оголошення змінних val number : Int // 2. Ввід значень print("number = ") number = readLine().toString().toInt() // 3. Перевірка коректності введених даних if ((number<10) || (number>99)) { println("Incorrect input.") return } // 4. Обчислення // Виділити першу та другу цифри двозначного числа if ((number/10==7) || (number%10==7)) println("Yes") // цифра 7 є у числі else println("No") }
Результат виконання програми
number = 71 Yes
⇑
5.3. Визначення наявності двох цифр у числі
Умова задачі. Задано трьохзначне число. Визначити, чи містяться у ньому одночасно цифри 4 та 6.
Розв’язок.
fun main(args:Array<String>) { // Визначення входження двох заданих цифр у числі // 1. Оголошення змінних val number : Int // задане число // 2. Ввід значень print("number = ") number = readLine().toString().toInt() // 3. Перевірка коректності введених даних if ((number<100) || (number>999)) { println("Incorrect input.") return } // 4. Обчислення // Виділити першу, друга та третю цифри трьохзначного числа val digit1 : Int = number/100 val digit2 : Int = (number/10)%10 val digit3 : Int = number%10 if ((digit1==6)&&(digit2==4) || (digit1==4)&&(digit2==6)) println("Yes") else if ((digit1==6)&&(digit3==4) || (digit1==4)&&(digit3==6)) println("Yes") else if ((digit2==6)&&(digit3==4) || (digit2==4)&&(digit3==6)) println("Yes") else println("No") }
Результат виконання програми
number = 624 Yes
⇑
5.4. Визначення належності числа заданому діапазону
Задача. Визначити, чи належить задане число діапазону [a; b]. Задачу розв’язати з використанням оператора заперечення ! (NOT).
Розв’язок.
fun main(args:Array<String>) { // Визначення належності числа заданому діапазону // 1. Оголошення змінних val number : Int // задане число val a : Int // нижня межа val b : Int // верхня межа // 2. Ввід значень print("number = ") number = readLine().toString().toInt() print("a = ") a = readLine().toString().toInt() print("b = ") b = readLine().toString().toInt() // 3. Перевірка коректності введених даних if (a>b) { print("Incorrect input.") return } // 4. Обчислення // використовується заперечення ! (NOT) if (!((number>=a)&&(number<=b))) print("No") // за межами діапазону else print("Yes") // в межах діапазону }
Результат виконання програми
number = 24 a = 35 b = 77 No
⇑
Споріднені теми
- Базові типи. Літерали. Числові константи. Допустимі межі числових типів. Приклади
- Змінні та константи. Ключові слова var, val, const
⇑