Розробка заняття на тему: "Оператори циклу. Оператор циклу while".

Про матеріал
Даний матеріал містить пояснення поняття циклу в програмуванні, ознайомлення із структурою та застосуванням оператора циклу while для мови С++, завдання для закріплення умінь та навичок, направлені на розвиток уваги, спостережливості, логічного мислення та виховання прагнення до вдосконалення.
Перегляд файлу

Первомайський ЦНТТУМ

Гурток “Сучасні технології програмування”

Керівник гуртка Семенова Олена Анатоліївна

 

Розробка заняття на тему:

Оператори циклу, оператор циклу while.

 

Тема: Оператори циклу, оператор циклу while.

Мета: засвоїти поняття циклу в програмуванні, ознайомитись із оператором циклу while, його структурою та застосуванням, закріплення умінь та навичок, виховання прагнення до вдосконалення, розвиток уваги, спостережливості, логічного мислення, творчих здібностей.

Обладнання: ПК, ПЗ — середовище програмування CodeBlocks.

Тип заняття: вивчення нового матеріалу.

 

Хід заняття

1. Вступ та розминка.

 Для початку розімнемось. Називайте слова, що містять букви ф, і, в, а, п, р, о, л, д, ж, у, к, е, н, г, ш, т, м. Кількість букв у словах – не менше 4.

1. Фінал    7. Місто

2. Підвал    8. Тісто 

3. Дошка    9. Ліра

4. Діжка    10. Міра

5. Кішка    11. Віра

6. Ліжко    12. Лінь

 Гадаю, більшості з нас останнє слово найприємніше. :)

 Записуємо слова у рядок в блокноті, дивлячись тільки на дошку. Потім набираємо ще два рядки, дивлячись тільки у монітор. Загалом, все, як зазвичай. Перевіряємо, оцінюємо свій прогрес у сліпому наборі і переходимо в CodeBlocks.

 

2. Основна частина — нова тема.

 Давайте пригадаємо наш улюблений калькулятор, а саме: його останню "вдосконалену" версію, яку ви написали, використовуючи оператор множинного вибору,  (конструкцію switch - case). Здавалося б, все вже добре, все працює, але…

 Скажіть, чого нам ще тут не вистачає з точки зору комфортного користування програмою?

 Так, якщо вважати на зручність користування, то реально частіше за все нам потрібен калькулятор більше, ніж для однієї операції.

 А в даному випадку що ми бачимо? Наша «досконала» програма видає результат лише однієї дії за вибором і завершує роботу.

 Тепер, щоб провести будь-які інші обчислення, потрібно знову вимикати і запускати вашу програму- калькулятор. Це не дуже зручно. Було б непогано, якби програма нам пропонувала продовжити роботу?

 Але що ми маємо в такому випадку?  Необхідність повторити всі наші дії-інструкції як мінімум, ще раз…. Тобто, якби вам зараз запропонували це зробити, як би ви змінили програму? З урахуванням ваших знань на цей момент, звичайно. Після обчислення ви б використали умовний оператор для вибору «продовжувати чи ні», потім знову введення даних, знову  switch.. Тобто, ще раз маємо писати той самий код із тими самими діями, що вже були написані раніше. Так? Звичайно, це просто: скопіювали і все… Але ж ви розумієте, що це незручно і якщо потрібно ще не раз повторити обчислення, то програма стає нескінченною.

 Саме для таких випадків в мовах програмування існують оператори циклу. Їх використання робить програму зрозумілішою, компактнішою і простішою.

 В мові С++, яку ми з вами опановуємо, є три оператори циклу: while, do while та for.

 Ознайомимось із кожним окремо поближче. :) Сьогодні це...

 Оператор while. Його ще називають оператором з передумовою. Як ви гадаєте, чому? (Не забуваємо головного: логіка обов’язково є в усіх термінах) Передумова - що це?... Правильно, це перевірка істинності умови перед тим, як виконати якісь дії…

 Приклад з математики: перед тим, як поділити число Х на число У ми повинні впевнитись, що це можливо :) . А в якому випадку це неможливо?... Коли У = 0.

 Або наш улюблений і зрозумілий кожному із вас приклад із сортуванням шкарпеток. :)

 Пам“ятаєте задачу? Розсортувати по кольорам чорний або білий купу шкарпеток із пральної машини :).

 Які дії повторюються постійно? Взяти — визначити колір — покласти на полицю.

 За якої умови ці дії треба повторювати? Правильно, поки в купі є шкарпетки. Як тільки вони закінчились — дії виконувати непотрібно, дії закінчено. Тобто, передумова цього циклу?  «Якщо є принаймні одна шкарпетка» :).

 Тобто, завжди при застосуванні оператора while виконання починають з перевірки умови.

 Для нашого прикладу з математики:

 

 int x=4, y=2;    //оголошуємо змінні

while (у/=0)   //перевіряємо умову

cout<<х/у<<endl; //виконуємо дії

 

Зрозуміло, що оскільки while в перекладі з англійської означає “поки (доки)” :), наша операція ділення буде виконуватись до тих пір, поки значення змінної у не дорівнює 0.

Нічого цікавого не помічаєте? Я розумію, що ні :) Але якщо подумаєте… трішечки, то зрозумієте, що  для даного прикладу цей процес буде нескінченний, бо ми отримали “зациклення”. :) Тобто ?

Напишіть ці рядки у програму і перевірте виконання. Що ви бачите?

Що процес у нас і справді нескінченний. Так, тому що ділення буде продовжуватись, поки у не змінить значення на 0. А в нас у=2. Отже, якщо нам не потрібен вічний цикл, то в тілі циклу повинен бути оператор, який буде якось впливати на умову циклу.

До речі, для купи шкарпеток це що? Правильно, зменшення їх кількості в купі.

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

 Давайте спробуєм застосувати його для нашого калькулятора :).

 Зараз він виглядає приблизно так:

 int a, b;

 char s;

 cout<<”Введіть перше число”<<endl;

 cin >>a;

cout<<”Введіть друге число”<<endl;

 cin >>b;

 cout<<”Оберіть дію: натисніть “+” для додавання, “-” для віднімання, “*” для множення, “:” для ділення”<<endl;

 cin >>s;

 switch (s)

 {

 case ‘+’:

 cout<<a<<”+”<<b<<”=”<<a+b<<endl;

 break;

 case ‘-’:

 cout<<a<<”-”<<b<<”=”<<a-b<<endl;

 break;

case ‘*’:

 cout<<a<<”*”<<b<<”=”<<a*b<<endl;

 break;

 

case ‘:’:

 cout<<a<<”:”<<b<<”=”<<a/b<<endl;

 break;

}

return 0;

Тобто, наш калькулятор видає результат обраної з 4 варіантів дії і завершує роботу :).

 

Але ми хочемо, щоб він запропонував продовження роботи … Як це зробити?

Так, звичайно, для початку після завершення обчислень ми повинні надати користувачу вибір: завершити роботу чи продовжити її…Наприклад, ось так:

switch (s)

{ case ‘+’:

 cout<<a<<”+”<<b<<”=”<<a+b<<endl;

 ….

 break;

}

cout<<”Бажаєте продовжити обчислення? Натисніть “1”. Бажаєте завершити роботу? Натисніть “0””<<endl;

cin >>s; // ось тут, за логікою програми, повинна була виникнути конструкція if-else… так? Але…

return 0;

Яке значення на цьому етапі виконання програми набуває змінна  s? 1 або 0.

Коли застосовується оператор циклу, то після завершення дій виконується повернення в початок циклу і ... перевіряється умова перед наступним виконанням… Виникають такі питання:

  1. Де саме починається і закінчується наш цикл?
  2. Яка в нас умова роботи циклу?
  3. Хто має впливати на неї? Із змінних...

 

Отже, програма буде виглядати таким чином:

int a, b;

 char s;

 while (s==’1’) // Перевіряємо умову для продовження роботи циклу

{ cout<<”Введіть перше число”<<endl;

 cin >>a;

cout<<”Введіть друге число”<<endl;

 cin >>b;

 cout<<”Оберіть дію: натисніть “+” для додавання, “-” для віднімання, “*” для множення, “/” для ділення”<<endl;

 cin >>s;

 switch (s)

{

 case ‘+’:

 cout<<a<<”+”<<b<<”=”<<a+b<<endl;

 break;

 case ‘-’:

 cout<<a<<”-”<<b<<”=”<<a-b<<endl;

 break;

case ‘*’:

 cout<<a<<”*”<<b<<”=”<<a*b<<endl;

 break;

case ‘/’:

 cout<<a<<”:”<<b<<”=”<<a/b<<endl;

 break;

}

cout<<”Бажаєте продовжити обчислення? Натисніть “1”. Бажаєте завершити роботу? Натисніть “0””<<endl;

cin >>s;

}

return 0;

Перевірили? Чому не працює? Це саме і я у вас хочу запитати. :)

Правильно, перед виконанням дій у фігурних дужках оператор циклу while перевіряє, чи вірна умова у круглих дужках. А що в нас по факту? Яке значення приймає змінна  s на момент перевірки умови? Правильно, будь-яке. Отже, в даному випадку нам потрібно не тільки оголосити, але й одразу ініціалізувати змінну: char s=‘1’;

 Сподіваюсь, логіка роботи оператора циклу while вам зрозуміла.

 Щоб потренуватись, пригадайте вашу програму-розклад задач на тиждень і зробіть в ній аналогічно продовження з використанням оператора while. :)

 А для особливих любителів-програмістів додаткове завдання: напишіть гру «Вгадай задумане число». Користувач має вгадати «задумане» комп“ютером число за принципом підказок «більше», або «менше», із підрахунком кількості спроб.

 Приємного коду! :) Бажаю успіхів….

docx
Додано
26 грудня 2021
Переглядів
533
Оцінка розробки
Відгуки відсутні
Безкоштовний сертифікат
про публікацію авторської розробки
Щоб отримати, додайте розробку

Додати розробку