Назад Зміст Вперед

Урок 2.3. Вкладені оператори if

Урок 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(k) statement 2; /* цей if */ 
                  else statement 3; /* асоційований з цим else */
        } 
        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. Вивести на екран номер координатної чверті, в якій знаходиться дана точка.



.