Первомайський ЦНТТУМ
Гурток «Сучасні технології програмування»
Керівник гуртка Семенова Олена Анатоліївна
Розробка заняття на тему:
Тема: «Оператор циклу for»
Мета: повторити властивості та особливості операторів while та do while, ознайомитись з поняттям та особливостями застосування оператора for, виховувати інтерес до історії, розвивати увагу та грамотність.
Обладнання: ПК, ПЗ — текстовий редактор, середовище програмування CodeBlocks.
Хід заняття
1. Організаційний момент та розминка.
Продовжуємо оволодіння технікою сліпого десятипальцевого набору на клавіатурі. Але давайте сьогодні трішки порозважаємось на розминці: пригадаємо історію програмування і минулі заняття, розгадуючи 12 загадок.
1. Які ви пам“ятаєте назви перших рахунків? («Абак, соробан»)
2. Кишеньковий пристрій для рахування. (Калькулятор)
3. Назвіть ім“я англійського вченого ХІХ сторіччя , який створив прообраз сучасного комп“ютера. (Чарльз)
4. Ім“я першого програміста (також одна із перших мов програмування). (Ада)
5. Назва низькорівневої мови програмування, що існує досі, в перекладі з англійської означає «зборщик», «транслятор». (Ассемблер)
6. Назва сучасної мови програмування та прізвище відомого франзуцького вченого XVII сторіччя: математика, фізика, механіка та ін... (Паскаль)
7-8. Країни-конкуренти у розвитку ЕОМ 1-3 покоління. (Англія, Америка)
9. Оператор для здійснення багаторазового повторення деякої послідовності дій. (Циклу)
10. Оператор, який використовує в своєму складі слова if та else. (Умови)
11. Процес написання комп“ютерної програми. (Програмування)
12. Ім“я робота-жінки, створеного у 2015 році, яка володіє штучним інтелектом. (Софія)
Чудово. Тепер, як звичайно, потренуємось із цими словами- розгадками. :)
2. Основна частина. Розгляд нової теми.
Отже, оператор циклу for.
Його вважають найскладнішим … З точки зору його побудови for (… ; … ; …) — так, він виглядає складнішим за while () та do while(). Насправді він просто «збірна» конструкція.
Для початку пригадаємо структуру та особливості операторів циклу, із якими ви вже знайомі: (?) while та do while.
Як виглядає оператор while?
while («УМОВА») {«ДІЇ»}
do while («УМОВА») {«ДІЇ»}
Чим вони відрізняються? Чому виділені окремо?
Так, while спочатку перевіряє умову, а потім виконує дії: «ДО ТИХ ПІР, ПОКИ виконується умова, ВИКОНУВАТИ...»
А do while спочатку виконує дію, а потім перевіряє умову: «ВИКОНУВАТИ ДО ТИХ ПІР, ПОКИ виконується умова». Тобто, використовується в тих випадках, коли потрібно ПРИНАЙМНІ ОДИН раз виконати дії циклу.
Тепер повернемось до побудови оператора for. Нагадаю, що його структура така: for (… ; … ; …) {«ДІЇ»}. До речі, як переводиться це слово із англійської?
Тобто, в перекладі із мови програмування for (… ; … ; …) {«ДІЇ»} це: «ДЛЯ ПЕРЕРАХОВАНИХ УМОВ» «ВИКОНУЄМО»...»
Давайте розберемо цю конструкцію на «цеглинки» :).
Пропоную робити це одразу на прикладі вашого домашнього завдання на обчислення факторіалу заданого користувачем числа. :)
Починаємо з даних. Нам задається якесь число..
int x, i=1, f=1; //f — факторіал числа х, і — лічильник циклу
cout<< «Введіть число для обчислення»<<endl;
cin>>x;
Для обчислення факторіалу потрібно знайти добуток всіх чисел від 1 до х. Тобто у нас є цикл з певною кількістю ітерацій (повторюваних дій), що починається, коли лічильник i= 1 і закінчується, коли значення лічильника i перевищить х.
Ви розв“язували цю задачу за допомогою оператора while, так? І, відповідно, в циклі використовували умову і лічильник, який перевіряли на початку кожного кроку (ітерації), чи не зрівнявся він з х, так?
Хтось запитає, чому при оголошенні змінних х не надано значення… Чому потрібна ініціалізація «і» та «f» і не потрібна для «х»? Тому що обчислення повинні починатись суворо від одиниці. А х нам початкове значення байдуже, оскільки це значення надасть користувач програми.
Отже, наша програма з використанням оператора while виглядає отак:
while (і<=x)
{f*=i;
i++;
}
cout<< «Факторіал заданого числа =»<<f<<endl;
При використанні оператора for , цикл в програмі буде виглядати отак:
for (i; i<=x; i++)
{f*=i;
}
Отже, наша програма матиме вигляд:
int x, i=1, f=1; //f — факторіал числа х, і — лічильник циклу
cout<< «Введіть число для обчислення»<<endl;
cin>>x;
for (i; i<=x; i++)
{f*=i;
}
cout<< «Факторіал заданого числа =»<<f<<endl;
Яким оператором користуватись в даному випадку для розв“язання задачі— справа вибору лише програміста.
Але в оператора for є цікаві особливості в кожній його «цеглинці».
Перша. Ініціалізація лічильника. Наприклад, вам в основній програмі лічильник не потрібен, тоді його можна оголошувати та ініціалізувати безпосередньо в циклі:
for (int i=1; i<=x; i++)
{f*=i;
}
Тобто загальна програма буде виглядати отак:
іnt x, f=1; //f — факторіал числа х
cout<< «Введіть число для обчислення»<<endl;
cin>>x;
for (int i=1; i<=x; i++)
{f*=i;
}
cout<< «Факторіал заданого числа =»<<f<<endl;
Друга. Умови. Оператор for дозволяє перевірку декількох умов одночасно...
Наприклад, вам потрібно знайти суму чисел від а до b.
іnt f=0;
for (int i=а; i>=a && i<=b; i++)
{f=f+i; // або скорочена форма f+=i;
}
Доречі, ця властивість працює і для першої «цеглинки» також: можна робити цикл з декількома лічильниками. Ми будемо використовувати її пізніше.
Третя. Зміна лічильника. for (int i=1; i<=x; i++)
У інших операторах циклу (while, do while) ви обов“язково вказували умову зміни лічильника серед дій циклу:
while (і<=x)
{f*=i;
i++;
}
У операторі for (int i=1; i<=x; i++) це робиться при описуванні умов його роботи. Тобто, як вже було сказано на початку, оператор for аналогічний двом іншим, просто це — збірна конструкція.
За аналогією і для виявлення ступіня дружби із оператором for :), напишіть програму, що буде знаходити і виводити на екран всі парні числа від а до b. (Числа а та b вводяться користувачем програми).
Підказка: залишок від ділення a на b в С++ - це арифметична операція a%b . :)
Успішного і приємного кодування» :)