Попередня сторінка          Зміст           Наступна сторінка          Електронні посібники ВНТУ

 

ЛАБОРАТОРНА РОБОТА № 2

УМОВНІ ОПЕРАТОРИ ТА ЦИКЛИ

 

 

Мета роботи: навчитися застосовувати, відповідно до поставлених задач, умовні оператори та цикли.

 

2.1 Теоретичні відомості

 

2.1.1 Оператор if

В C# ви можете описати логіку в коді програми, що дозволяє виконувати різні частини коду в залежності від стану даних в програмі. Ви можете, наприклад, запитати користувачів, чи хочуть вони зберегти зміни в файлі, який відкритий в програмі. Завдяки умовним операторам ви можете передбачити виконання коду на основі відповіді, наданої користувачем. В C# використовуються умовні оператори для досягнення цієї функціональності.

Основний умовний оператор в C# - це if. Альтернативою є switch.

В C# if пов'язаний з булевою логікою. Якщо значення true, то блок коду, що пов'язаний з цим значенням виконується. Якщо значення false, тоді рядок коду, що стоїть після логічного значення не виконується, у випадку блоку коду у фігурних дужках, не виконується цілий блок коду.

Наступний приклад демонструє використання if для того, щоб зрозуміти чи отримали ми у відповідь слово 'Привіт'.

Оператор if

string message = "Привіт";

if (message == "Привіт")

// рядок коду, що буде виконуватись, якщо значення повідомлення (змінної message) "Привіт"

або

string message= "Привіт";

if (message == "Привіт")

{

      // тут потрібно розміщувати декілька рядків коду,

      //що будуть виконуватись, якщо відповідь "Привіт"

}

В C# if також може використовуватись з else. Код після else виконується, коли умова в операторі if є хибним (false).

Наступний приклад демонструє як використовувати if else , коли умова хибна (false).

Оператори if else

String message;

if (message == "Доброго дня")

{

      // Блок коду, що буде виконуватись, якщо у відповідь отримано "Доброго дня".

}

else

{

      // Блок коду, що буде виконуватись, якщо отримано будь-яку іншу відповідь.

}

if оператор також може використовуватись разом з else if. Умовні вирази перевіряються послідовно в операторах if в порядку, в якому вони зустрічаються в коді. Якщо хоча б один If повертає true, то виконується лише той блок коду, з яким він пов'язаний, після цього ми виходимо за межі конструкції умовних операторів.

Наступний приклад демонструє як використовувати if з else if.

if else if

string message;

if (message == "Доброго дня")

{

      //Блок коду, що буде виконуватись, якщо у відповідь отримано "Доброго дня".

}

else if (message == "До побачення")

{

      //Блок коду, що буде виконуватись, якщо у відповідь отримано "До побачення".

}

else

{

      //Блок коду, що буде виконуватись, якщо отримано будь-яку іншу відповідь, що не належить до відповідей, що містяться вище.

}

Ви можете додати настільки багато else if блоків наскільки вам потрібно для того, щоб правильно описати логіку програми. У випадку великої кількості варіантів ви может спробувати використати оператор switch.

 

2.1.2 Оператор switch

Якщо у вас занадто багато else if виразів, ваш код може стати не зрозумілим або занадто складим для розуміння. У цьому випадку краще використовувати switch. Оператор switch може замінити else ifвирази.

Наступний приклад демонструє як викорситовувати оператор switch

string message = "Привіт";

switch (message)

{

      case "Привіт":

      //Блок коду, що буде виконуватись, якщо у відповідь отримано "Привіт".

      break;

      case "Доброго дня":

      //Блок коду, що буде виконуватись, якщо у відповідь отримано "Доброго дня".

      break;

      case "До побачення":

      //Блок коду, що буде виконуватись, якщо у відповідь отримано "До побачення".

      break;

      default:

      //Блок коду, що буде виконуватись, якщо отримано відповідь, що не належить до жодної з вищезгаданих

      break;

}

Ви могли помітити блок, що позначений ключовим словом default:. Цей блок виконується, коли жоден з попередніх блоків не було виконано.

В кожному case міститься ключове слово break. Він використовується для того, щоб після проходження блоку коду, що задовільняє умові, жоден інший блок коду з конструкції switch не виконувався. Якщо ви не використаєте ключове слово break, код не буде компілюватись. Якщо вам потрібно обробити декілька варіантів тим же сегментом коду, ви можете використовувати конструкцію, що демонструється нижче.

string message;

switch (message)

{

      case "До побачення":

      //Блок коду, що буде виконуватись, якщо у відповідь отримано "До побачення".

      break;

      case "Доброго дня":

      case "Привіт":

      //Блок коду, що буде виконуватись, якщо у відповідь отримано "Доброго дня"

      // чи "Привіт";

      break;

      default:

      //Блок, що виконується, коли жодна з вищеперечислених умов не зустрілась.

      break;

}

Якщо ви знайомі з C, то ви можете помітити, що ви можете використовувати рядок в якості змінної для оператора switch в C#, тобто змінна не повинна бути лише цілочисельною чи переліченням. В C# оператор switch здійснює підтримку наступних типів: sbyte, byte, short, ushort, int, uint, long, ulong, char, string, enumerations.

C# передбачає ряд стандартних конструкцій, відомих як цикли, які можна використовувати для реалізації ітераційної логіки. Якщо ви вивчали інші мови програмування, то ви зможете впізнати ті ж for цикли, while цикли та do while цикли. C # підтримує усі ці три види циклів.

 

2.1.3 Цикл for

У циклі for блок коду виконується кілька разів поки вказана умова ([condition]) не cтає хибною. Ви можете визначити цикл наступним чином.

for ([initializers]; [condition]; [iterator])

{

      // код, що повторюється

}

Ініціалізація[initializers] використоується для задання початкового значення лічильника циклу. Під час кожної ітерації перевіряється вказана умова, наприклад, чи лічильник належить проміжку значень, при яких виконується цикл. І якщо це так, то виконується тіло циклу. В кінці кожної ітерації циклу, лічильник [iterator] змінюється.

Наступний приклад показує як використовувати for цикл для виконання коду 10 разів.

for (int i = 0 ; i < 10; i++)

{

      // код, що виконується

}

У цьому прикладі, i = 0; це ініціалізація, i < 10; це умова: коли умова блок коду виконується та i++ – ітератор, що збільшує значення лічильника на одиницю.

 

2.1.4 Цикл while

Цикл while дозволяє вам виконувати блок коду поки значення заданої умови вірне (true). Наприклад, ви можете використовувати цикл while для того, щоб обробляти дані введені користувачем покикористувач не повідомить нам, що у нього вже немає даних для введення.

Наступний приклад демонструє нам як використовувати цикл while

string response = "";

while (response != "Кінець")

{

      // Код, що відповідає за обробку даних.

      response = Console.ReadLine();

}

 

2.1.5 Цикл do

Цикл do дуже схожий до while циклу за виключенням того, що цикл do виконує код, що знаходиться в тілі циклу принаймні раз. В циклі while, якщо умова хибна відразу, то тіло циклу ніколи не буде виконано.

Ви можете використати цикл do якщо код буде , наприклад, виконуватись у відповідь на введення даних користувачем.

do

{

      // Обробка даних.

      response = Сonsole.ReadLine();

} while (response != "Кінець");

 

2.2 Завдання до лабораторної роботи (Додаток Б)

 

2.3 Контрольні запитання:

 

  1. В яких випадках доцільно застосовувати оператор умовного переходу?
  2. Який вигляд має повна форма оператора умовного переходу if?
  3. Який вигляд має скорочена форма оператора умовного переходу?
  4. Приклади використання оператора if, що має повну форму представлення.
  5. Приклади використання оператора if, що має скорочену форму представлення.
  6. Приклади застосування вкладених операторів if.
  7. Який вигляд та принцип роботи конструкції if-else-if?
  8. Який загальний вигляд має оператор варіанту switch?
  9. Яке призначення блоку default в операторі switch?
  10. Приклади використання оператора switch без та з використання блоку default.
  11. Що таке цикл і для чого вони потрібні?
  12. Які бувають цикли?
  13. Характеристика циклу for.
  14. Характеристика циклу while.
  15. Характеристика циклу do.