Урок 2.3. Вкладені оператори if
Завдання
на умовні оператори
Від програм було б мало користі, якби вони робили абсолютно одне і те саме незалежно від того, як змінюються зовнішні обставини. Програмі потрібно вміти підлаштовуватися під обставини, і робити одні дії в одних випадках і інші - в інших. У Java це реалізовано за допомогою «умовного оператора» - спеціального ключового слова, яке дозволяє виконувати різні блоки команд в залежності від правдивості умови.
Умовний оператор складається з трьох частин: « умови », « команди 1 » і « команди 2 ». Якщо умова вірно (істинно), тоді виконується « команда 1 », інакше виконується « команда 2 ». Команди ніколи не виконуються одночасно. Загальний вигляд цього оператора такий:
Код умовного оператора
|
if ( умова )
команда_1 ;
else
команда_2 ;
|
код
|
пояснення
| |
if (a <b)
System.out.println ( "А менше Б");
else
System.out.println ( "Б менше А");
|
Якщо a менше b, то виконається перша команда , в іншому випадку - друга . Команди ніколи не виконаються одночасно.
| |
if (a <b)
{
System.out.println ( "А менше Б");
System.out.println ( "Б більше А");
}
Else
{
System.out.println ( "Б менше А");
System.out.println ( "А більше Б");
}
|
Замість однієї команди можна підставити блок команд. В іншому - те ж саме.
| |
if (a <b)
{
a = 0;
}
Else
{
}
|
Блок else можна не писати, якщо він порожній.
Дані три приклади абсолютно еквівалентні. Можна не писати {}, якщо потрібно виконати тільки одну команду. Якщо є кілька команд, то {} писати обов'язково. | |
if (a <b)
{
a = 0;
}
| ||
if (a <b)
a = 0;
|
Задачі
| |
1
|
Реалізувати метод compare (int a).
Метод повинен виводити рядок на екран "Число менше 5", якщо параметр методу менше 5, виводити рядок "Число більше 5", якщо параметр методу більше 5, і виводити рядок "Число рівне 5 ", якщо параметр методу дорівнює 5. |
2
|
Реалізувати метод closeToTen.
Метод повинен виводити на екран найближчі до 10 з двох чисел, записаних в аргументах методу. Напр., серед чисел 8 і 11 найближче до десяти 11. Якщо обидва числа на рівній довжині до 10, то вивести на екран будь-яке з них. |
3
|
Реалізувати метод checkInterval.
Метод повинен перевіряти чи дісталося ціле число в інтервал від 50 до 100 і повідомити результат на екран у наступному вигляді: "Число а не міститься в інтервалі." або "Число а міститься в інтервалі.", де а - аргумент методу. |
4
|
Реалізувати метод checkSeason.
За номером місяця, метод повинен визначити пору року (зима, весна, літо, осінь) і вивести на екран. |
5
|
Ввести з клавіатури число. Якщо число додатне, то збільшити його в два рази. Якщо число від'ємне, то додати одиницю. Вивести результат на екран.
|
6
|
Ввести з клавіатури номер дня тижня, в залежності від номера вивести назву «понеділок», «вівторок», «середовище», «четвер», «п'ятниця», «субота», «неділя», якщо введений номер більше або менше 7 - вивести «такого дня тижня не існує».
|
7
|
Ввести з клавіатури рік, визначити кількість днів в році.
Результат вивести на екран в наступному вигляді: "кількість днів в році: x", де х - 366 для високосного року, х - 365 для звичайного року. |
8
|
Ввести з клавіатури три числа а , b , c - сторони трикутника. Визначити можливість існування трикутника за сторонами.
Результат вивести на екран в наступному вигляді: "Трикутник існує." - Якщо трикутник з такими сторонами існує. "Трикутник не існує." - Якщо трикутник з такими сторонами не існує. |
9
|
Робота світлофора для пішоходів запрограмована таким чином: на початку кожної години протягом трьох хвилин горить зелений сигнал, потім протягом однієї хвилини - жовтий, а потім протягом однієї хвилини - червоний, потім знову зелений горить три хвилини і т. Д. Ввести з клавіатури дійсне число t , що означає час в хвилинах, що минув з початку чергової години.
Визначити, сигнал якого кольору горить для пішоходів в цей момент. Результат вивести на екран в наступному вигляді: "зелений" - якщо горить зелений колір, "жовтий" - якщо горить жовтий колір, "червоний" - якщо горить червоний колір. |
10
|
Ввести з клавіатури три цілих числа. Визначити, чи є серед них хоча б одна пара рівних між собою чисел. Якщо така пара існує, вивести на екран числа через пробіл. Якщо всі три числа рівні між собою, то вивести всі три.
|
Оператор if є вкладеним, якщо він вкладений, тобто знаходиться усередині іншого оператора if чи else. У практиці програмування вкладені умовні оператори використовуються досить часто. У вкладеному умовному операторові фраза else завжди асоційована з найближчим if у тому ж блоці, якщо цей if не асоційований з іншою фразою else.
Наприклад:
if(i) {
if(j) statement 1;
if(j) statement 1;
if(k) statement 2; /* цей if */
else statement 3; /* асоційований з цим else */
}
else statement 4; /* асоційований з if(i) */
else statement 4; /* асоційований з if(i) */
Остання фраза else не асоційована з if(j) тому, що вона знаходиться в іншому блоці. Ця фраза else асоційована з if(i). Внутрішня фраза else асоційована з if(k), тому що цей if — найближчий.
Стандарт C89 допускає 15 рівнів вкладеності умовних операторів C99 — 127 рівнів. Проте на практиці необхідність в глибині вкладеності, більшої, ніж декілька рівнів, виникає досить рідко, оскільки збільшення глибини вкладеності швидко заплутує програму і робить її нечитаною.
Завдання
на умовні оператори
Менше (<),
більше (>), «рівно»
(==) і «не дорівнює» (! =), «менше або
дорівнює» (<=) і «більше або дорівнює» (> =). Знак «=» використовується для операції присвоювання, тому для рівності використовують «==» - два знака дорівнює . Для того, щоб перевірити, що змінні не рівні, використовують « ! = ». При порівнянні двох змінних в Java
з використанням оператора «==», відбувається порівняння того, що ці змінні в
собі містять.
Якщо об'єкти ідентичні всередині,
але посилання на них різні, порівняння покаже, що вони нерівні : результатом порівняння буде false (брехня). Порівняння посилань
буде true (істина) , тільки якщо обидва
посилання вказують на один і той же об'єкт.
Для порівняння
об'єктів за їх
внутрішнім
змістом
використовують спеціальний метод equals. Цей метод (і всі методи класу Object)
додається компілятором в твій клас, навіть якщо ти їх не повідомляєш.
Наприклад:
код
|
пояснення
|
int a = 5;
int b = 5;
System.out.println ( a == b ); |
Відбувається порівняння примітивних типів.
На екран буде виведено true . |
Cat cat1 = new Cat ( "Vaska") ;
Cat cat2 = cat1 ;
System.out.println ( cat1 == cat2 );
|
Відбувається порівняння посилань .
На екран буде виведено true . Обидві змінних зберігають посилання на один і той же об'єкт. |
String s = new String ( "Mama") ;
String s2 = s ;
System.out.println ( s == s2 );
|
Відбувається порівняння посилань .
На екран буде виведено true . Обидві змінних зберігають посилання на один і той же об'єкт. |
Cat cat1 = new Cat ( "Vaska") ;
Cat cat2 = new Cat ( "Vaska") ;
System.out.println ( cat1 == cat2 );
|
Відбувається порівняння посилань .
На екран буде виведено false . Змінні зберігають посилання на два ідентичних об'єкта Cat, але не на один і той же. |
String s = new String ( "Mama") ;
String s2 = new String ( "Mama") ;
System.out.println ( s == s2 );
|
Відбувається порівняння посилань .
На екран буде виведено false . Змінні зберігають посилання на два ідентичних об'єкта String, але не на один і той же. |
Cat cat1 = new Cat ( "Vaska") ;
Cat cat2 = new Cat ( "Vaska") ;
System.out.println ( cat1.Equals ( cat2 ));
|
Відбувається порівняння об'єктів .
На екран буде виведено true . Змінні зберігають посилання на два ідентичних об'єкта Cat |
String s = new String ( "Mama") ;
String s2 = new String ( "Mama") ;
System.out.println ( s . Equals ( s2 ));
|
Відбувається порівняння об'єктів .
На екран буде виведено true . Змінні зберігають посилання на два ідентичних об'єкта String |
завдання
|
Завдання 1.
Мінімум двох чисел
Ввести з клавіатури два числа, і вивести на екран мінімальне з них. |
Завдання 2.
Максимум чотирьох чисел
Ввести з клавіатури чотири числа, і вивести максимальну з них. |
Завдання 3.
Сортування трьох чисел
Ввести з клавіатури три числа, і вивести їх в порядку убування. |
Завдання 4.
Порівняти імена
Ввести з клавіатури два імені, і якщо імена однакові, вивести повідомлення «Імена ідентичні». Якщо імена різні, але їх довжини рівні - вивести повідомлення - «Довжини імен рівні». |
Завдання 5. 18+
Ввести з клавіатури ім'я і вік. Якщо вік менше 18 вивести напис «Підрости ще» |
Завдання 6. І
18-ти досить
Ввести з клавіатури ім'я і вік. Якщо вік більше 20 вивести напис «І 18-ти досить» |
Завдання 7. Три
числа
Ввести з клавіатури три цілих числа. Одне з чисел відмінно від двох інших, рівних між собою.Вивести на екран порядковий номер числа, відмінного від інших. |
Завдання 8.
Координатні чверті
Ввести з клавіатури два цілих числа, які будуть координатами точки, що не лежить на координатних осях OX та OY. Вивести на екран номер координатної чверті, в якій знаходиться дана точка. |