ОПЕРАТОРИ РОЗГАЛУЖЕННЯ.
ІНСТРУКЦІЯ IF-ELSE Формат інструкції має вигляд: 1: if(умова) 2: { 3: інструкція; 4: } 5: else 6: { 7: інструкція; 8: } Тут під елементом інструкція розуміється одна інструкція мови С#. Частина else необов'язкова. Якщо елемент “умова”, який є умовним виразом, при визначенні поверне значення ІСТИНА, буде виконана if-інструкція; у іншому випадку - else-інструкциія (якщо така існує). Одночасно обидві інструкції ніколи не виконуються. Умовний вираз, що управляє виконанням if-інструкції повинен мати тип bool. Розглянемо просту програму, в якій використовується if-else-інструкція для визначення того, є число позитивним або негативним. Приклад 1. Перевірка значення. 1: static void Main(string[] args) 2: { 3: double a = Console.ReadLine(); 4: if(a < 0) 5: Console.WriteLine("a < 0"); 6: else 7: Console.WriteLine("a >= 0"); 8: } Кострукції if-else можуть бути вкладені, причому вкладення можуть бути багатьох рівнів. Для прикладу напишемо програмку яка перевіряє чи число позитивне чи негативне і при цьому потрапляє у діапазон від -100 до 100. Приклад 2. Перевірка значення. 1: static void Main(string[] args) 2: { 3: Console.Write("Введіть значення:\t"); 4: double a = Convert.ToDouble(Console.ReadLine()); 5: if (a > -100 && a < 100) 6: { 7: if (a < 0) 8: Console.WriteLine("a < 0"); 9: else 10: Console.WriteLine("a >= 0"); 11: } 12: else 13: Console.WriteLine("a is out of range (-100; 100) - {0}", a); 14: }
КОНСТРУКЦІЯ ELSE-IF-ELSE. Другою інструкцією вибору є switch. Інструкція switch забезпечує багатонаправлене розгалуження. Вона дозволяє робити вибір однієї з множини альтернатив. Хоча багатонаправлене тестування можна реалізувати з допомогою послідовності вкладених if-інструкцій, для багатьох ситуацій інструкція switch виявляється ефективнішим рішенням. Вона працює наступним чином: 1. Значення виразу послідовно порівнюється з константами із заданого списку. 2. При виявленні збігу для однієї з умов порівняння виконується послідовність інструкцій, пов'язана з цією умовою. Часто у програмуванні для перевірки кількох умов використовується конструкція if-else-if: 1: if(умова) 2: {} 3: else 4: if(умова) 5: {} 6: else 7: if(умова) 8: {} 9:... 10: else {} Умовні вирази обчислюються зверху вниз. Як тільки в якій-небудь гілці виявиться істинний результат, буде виконана інструкція, пов'язана з цією гілкою, а всі інші сходинки пропускаються. Якщо виявиться, що жодна з умов не є істинною, буде виконана остання else-інструкція (можна вважати, що вона виконує роль умови за замовчуванням. Якщо остання else-інструкція не задана, а всі інші виявилися помилковими, то взагалі жодна дія не буде виконана.
ІНСТРУКЦІЯ SWITCH Загальний формат запису інструкції switch такий: Приклад 3. Загальний вигляд інструкції switch. 1: switch (вираз) 2: { 3: case костанта1: 4: інструкція; 5: break; 6: case костанта2: 7: інструкція; 8: break; 9:... 10: default: 11: інструкція; 12: break; 13: } Елемент вираз інструкції switch повинен мати цілочисельний тип (наприклад, char, byte, short або int) або тип string. Вирази, що мають типи з плаваючою крапкою, не дозволені. Дуже часто як switch-вирази використовується просто змінна; case-константи мають бути літералами, тип яких сумісний з типом заданого виразу. При цьому жодні дві case-константи в одній switch-інструкції не можуть мати ідентичних значень. Послідовність інструкцій default-гілки виконується в тому випадку, якщо жодна із заданих case-констант не збіжиться з результатом обчислення switch-виразу. Гілка default необов'язкова. Якщо вона відсутня, то при неспівпаданні результату виразу ні з однією з case-констант жодна дія виконана не буде. Якщо такий збіг все-таки станеться, будуть виконані інструкції, відповідні даній case-гілці до тих пір, поки не зустрінеться інструкція break. Використання switch-інструкції демонструється у наступній програмі. Приклад 4. Використання switch. 1: static void Main(string[] args) 2: { 3: Console.WriteLine(" Введіть цифру від 1 до 5."); 4: int a = Convert.ToInt32(Console.ReadLine()); 5: switch (a) 6: { 7: case 1: 8: Console.WriteLine("Ви ввели 1"); 9: break; 10: case 2: 11: Console.WriteLine("Ви ввели 2"); 12: break; 13: case 3: 14: Console.WriteLine("Ви ввели 3"); 15: break; 16: case 4: 17: Console.WriteLine("Ви ввели 4"); 18: break; 19: case 5: 20: Console.WriteLine("Ви ввели 5"); 21: break; 22: default: 23: Console.WriteLine(" Ви промахнулися"); 24: break; 25: } 26: } У випадку, якщо потрібно щоб одна і та ж сама інструкція виконалася для кількох констант одразу використовується наступна конструкція. Приклад 5. Використання switch. 1: static void Main(string[] args) 2: { 3: Console.WriteLine(" Введіть цифру від 1 до 5."); 4: int a = Convert.ToInt32(Console.ReadLine()); 5: switch (a) 6: { 7: case 1: 8: case 2: 9: case 3: 10: Console.WriteLine("Ви ввели 1 або 2 або 3"); 11: break; 12: case 4: 13: Console.WriteLine("Ви ввели 4"); 14: break; 15: case 5: 16: Console.WriteLine("Ви ввели 5"); 17: break; 18: default: 19: Console.WriteLine(" Ви промахнулися"); 20: break; 21: } 22: }
|