Цикли в алгоритмах і програмах

Мета уроку:

Навчальна: сформувати поняття циклічного алгоритму, видів циклів; сформувати вміння та навички побудови блок-схем та запису мовою програмування алгоритмів з використанням циклу з передумовою, циклу з післяумовою, циклу з лічильником;

розвивати: логічне мислення, інформаційну культуру, пізнавальні інтереси учнів;

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

Обладнання та матеріали: персональні комп'ютери, мультимедійний проектор, інтерактивна дошка, програмне забезпечення Delphi 7, комп'ютерна презентація, опорні конспекти, картки із завданнями.

Тип уроку: комбінований.

Хід уроку

I.Організаційний етап (1-2 хв).

ІІ. Актуалізація опорних знань. Перевірка домашнього завдання (5 хв.)

1. Кросворд

  • Базова структура алгоритмів, яка містить умову виконання команд.
  • Базова структура алгоритмів у вигляді послідовності команд.
  • Алгоритм, записаний спеціальною мовою та призначений для виконання комп'ютером.
  • Знак надання значення змінній чи властивості.
  • Місце виконання алгоритму.
  • Логічна операція.
  • Текст, який ігнорується компілятором.
  • Елемент керування для реалізації розгалуження.

· Знайти помилки у процедурі:

а) procedure TForm1.Button1Click(Sender: TObject);

var x,y,z:Integer;

begin

x:=StrToFloat(Edit1.text);

y:=StrToFloat(Edit2.text);

z:=x*y;

Label1.Caption:=IntToStr(z);

end;

б) procedure TForm1.Button1Click(Sender: TObject);

var x,y,z:Integer;

begin

x:=StrToInt(Edit1.text);

y:=StrToInt(Edit2.text);

if y<>0 then

begin

z:=x/y;

Label1.Caption:=IntToStr(z);

End;

else

Label1.Caption:='Ділення на 0';

end;

ІІІ. Мотивація навчальної діяльності. Оголошення теми та мети уроку (2-3 хв)

Чи легко описати алгоритм приготування однієї чашки чаю? А двох чашок? А десяти? Очевидно, що знаючи лише алгоритмічну структуру слідування чи розгалуження це зробити буде важко. Тому сьогодні розглянемо алгоритмічну структуру повторення, її графічне подання та оператори циклів.

Алгоритм, у якому передбачається багаторазове виконання одного й того самого набору команд, називають циклічним. Наприклад, для того щоб наповнити водою діжку місткістю 80 л, маючи десяти літрове відро, потрібно виконувати 8 разів одні й ті самі дії: набрати воду у відро, вилити воду в діжку.

Герой твору Марка Твена Том Сойєр мав фарбувати огорожу за ци­клічним алгоритмом: одну й ту саму команду - фарбування стовпчи­ка огорожі - слід повторювати, доки всю огорожу не буде пофарбовано.

А щоб вивчити строфу вірша напам'ять, спочатку її читають, а тоді пробують роз­повісти по пам'яті. Якщо це не вдається, то продовжують читати знову - тобто пов­торюють цю дію кілька разів.

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

IV.Вивчення нового матеріалу (7-10 хв)

Кількість повторів може бути різною, але скінченною: діжку можна заповнити за 8 повторень, кількість повторів під час фар­бування огорожі залежить від кількості стовпчиків, а кількість повторів під час вивчення вірша залежить від здібностей до запам'ятовування конкретної людини. Для опису цикліч­них алгоритмів використовують алгоритмічну структуру повторення.

Повторення - базова алгоритмічна структура, призначена для організації багаторазового виконання набору команд.

Вираз «багаторазове виконання» означає, що команди будуть вико­нуватися скінченну кількість разів.

Кількість повторень у циклічних алгоритмах може бути або зазда­легідь відомою, або ні, тому розрізняють повторення з визначеною та невідомою кількістю повторень. Якщо кількість повторень заздалегідь не відома, то для припинення циклу задається деяка умова, яка і забез­печує скінченність виконання команд, що повторюються.

Команди циклу з визначеною кількістю повторень будуть повторю­ватись до досягнення потрібної кількості повторень. Наприклад, ал­горитм побудови квадрата, у якому 4 рази потрібно повторювати дії «намалювати сторону», «повернути за годинниковою стрілкою на 90», можна подати графічно

Цикл повторення з невідомою кількістю повторень передбачає пе­ревірку деякої умови, як наприклад, в алгоритмі забивання цвяха в дошку.

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

Для реалізації циклічних алгоритмів у мові Паскаль використовуються оператори повторення (цикли):

  • оператор циклу з параметром (For);
  • оператор циклу з передумовою (While);
  • оператор циклу з післяумовою (Repeat).

Вказівка повторення з передумовою (Цикл - while)

Вказівка повторення з передумовою - while призначена для організації багатократного виконання групи вказівок (тіло циклу) до тих пір, поки залишається істинною умова виконання циклу. Значення службового слова while- поки.

Вказівка повторення з передумовою записується у вигляді:

while <умова> do

begin

<вказівка1>;

<вказівка2>;

.........;

<вказівкаN>

end;

Наприклад.

while I<4 do

begin

S:=S+I;

I:=I+1;

end;

Виконується ця вказівка таким чином. Обчислюється значення виразу-умови. Якщо умова істинна (приймає значення TRUE), то виконується група вказівок (тіло циклу). Виконання програми знову повертається до перевірки умови циклу. Якщо умова хибна (приймає значення FALSE), то виконується вказівка, яка знаходиться після вказівки повторення з передумовою.

Примітка.

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

2. Умову вказівки повторення з передумовою необхідно підбирати таким чином, щоб в деякий момент вона змінила своє значення з TRUE на FALSE, інакше виникне ситуація "зациклювання" програми.

3. Програмісту необхідно самому потурбуватись про необхідність збільшення (зменшення) лічильника циклу на 1. Це можна зробити таким чином І:=І+1.

4. Входження в тіло вказівки повторення можливе тільки через заголовок цієї вказівки.

Приклад використання вказівки повторення з передумовою

Задача. Знайти суму всіх натуральних чисел від 1 до N.

I:=1;

S:=0;

While I<=N do

begin

S:=S+1;

I:=i+1

end;

Вказівка повторення з післяумовою (Цикл-repeat-until)

Вказівка повторення з післяумовою призначена для організації багатократного виконання групи вказівок (тіло циклу) до тих пір, поки умова виконання циклу не стане істинною,

repeat

<вказівка1>;

<вказівка2>;

...........;

<вказівкаN>

Until <умова>;

Наприклад.

repeat

S:=S+I;

I:=I+1

Until I>=4;

Службові слова вказівки означають:

repeat- повторювати, until- поки.

Вказівка повторення з післяумовою виконується таким чином. Спочатку виконуються вказівки, які входять в тіло циклу. Потім обчислюється значення умови-виразу. Якщо умова хибна (тобто має значення FALSE), то знову виконуються вказівки тіла циклу. Якщо умова стає істинною (TRUE), то виконання циклу припиняється і виконується наступна вказівка програми.

Примітка.

1. Тіло циклу, яке складається з групи вказівок, не потрібно брати в дужки (begin- end), оскільки службові слова repeat- until відіграють роль дужок.

2. Тіло циклу у вказівці повторення з післяумовою виконується щонайменше один раз.

3. Умова вказівки є умовою виходу з циклу.

4. Входження в тіло вказівки повторенням можливе тільки через заголовок цієї вказівки.

Вказівка повторення з параметром (FOR- ТО - DO).

Вказівка повторення з параметром призначена для організації багатократного виконання тіла циклу для значень параметра циклу з деякої впорядкованої дискретної множини.

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

Вказівка повторення з параметром записується у вигляді:

1. for <параметр:=вираз1> to <вираз2> do

begin

<вказівка1>;

<вказівка2>;

...........;

<вказівкаN>;

end;

2. for<параметр:=вираз 1> downto <вираз2> do

begin

<вказівка1>;

<вказівка2>;

...........;

<вказівкаN>;

end;

Параметр вказівки (лічильник, індекс) - це змінна скалярного (цілого, символьного, логічного або перелічувального) типу, крім дійсного.

Вираз1 (початковий параметр вказівки) - це деяка константа такого ж самого типу, що й параметр вказівки.

Вираз 2 (кінцевий параметр вказівки) - це деяка константа такого ж самого типу, що й параметр вказівки.

Якщо в тілі вказівки повторення з параметром необхідно виконати тільки одну вказівку, то складеної вказівки begin... end використовувати не потрібно.

for<параметр:=вираз1> to <вираз2> do

<вказівка1>;

Вказівка повторення з параметром виконується таким чином:

1. Вказівка For - to - do.

Наприклад.

For i:=К to M do

begin

<вказівка1>;

<вказівка2>;

...........;

<вказівкаN>;

end;

Параметру циклу і присвоюється початкове значення К. Він порівнюється з кінцевим значенням М. Якщо К<=М, то виконується тіло вказівки повторення. Значення К автоматично збільшується на 1 (тобто стає наступним елементом) і знову порівнюється зі значенням М. Якщо під час перевірки отримаємо, що К>М, то виконання вказівки повторення припиняється і виконується наступна після неї вказівка програми. Якщо під час першого порівняння К і М виявиться що К>М, то тіло вказівки не виконується жодного разу.

2. Вказівка For - downto - do.

Наприклад.

for i:=K downto M do

begin

<вказівка1>;

<вказівка2>;

...........;

<вказівкаN>;

end;

Параметру циклу і присвоюється початкове значення К. Він порівнюється з кінцевим значенням М. Якщо К>=М, то виконується тіло вказівки повторення. Значення К автоматично зменшується на 1 (тобто стає попереднім елементом) і знову порівнюється зі значенням М. Якщо під час перевірки отримаємо, що К<М, то виконання вказівки повторення припиняється і виконується наступна після неї вказівка програми. Якщо під час першого порівняння К і М виявиться, що К<М, то тіло вказівки не виконується жодного разу.

Примітка.

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

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

3. Параметр циклу повинен бути описаним у розділі змінних.

4. Значення параметра циклу після закінчення виконання вказівки повторення володіє кінцевим значенням, тому перед повторним його використанням йому необхідно знову присвоїти нове початкове значення.

Приклад використання вказівки повторення з параметром

Задача. Знайти суму всіх натуральних чисел від 1 до N.

S:=0;

For i:=l to N do

S:=S+i;

writeln('S=',S);

end.

V. Фізкультхвилинка.

VІ. Засвоєння нових знань і формування вмінь.

1. Створіть проект для обчислення n!

2. Створіть проект для обчислення суми додатних членів арифметичної прогресії з додатним першим членом і від'ємною різницею.

3. Створіть проект для обчислення кількості двоцифрових чисел в арифметичній прогресії. Перший член прогресії більший 10, різниця більша 0.

4. Створіть проект для обчислення добутку перших N членів прогресії, перше з яких х, а кожне наступне менше вдвічі за попереднє.

5. Створіть проект, у якому здійснюється перевірка, чи є число простим.

6. Людина поклала у банк певну сума грошей. Щорічно банк додає до суми наперед визначений відсоток. Створити проект, у якому визначається, яка сума грошей на рахунку через N років.

7. Створіть проект для знаходження НСД двох чисел.

8. Створіть проект для знаходження кількості простих чисел серед перших 100 натуральних.

VІІ. Домашнє завдання.

Опрацювати п. 2.8.

Виконати завдання 3, 5, 7 ст. 94.

1. Компанія бабусь поїхала на мотоциклах на курси з комп'ютерної грамотності. Попереду на мотоциклі без глушника їхала одна бабуся, за нею - дві, потім - три і т.д. Скільки бабусь їхало на заняття, якщо приголомшені пішоходи всього нарахували N рядів.

2. Створіть проект, у якому можна знайти кількість дільників заданого числа.

3. Створіть проект для знаходження середнього арифметичного значення усіх непарних трицифрових чисел.

4. Створіть проект для знаходження НСК двох чисел.

VІІІ. Підбиття підсумків уроку.

Рефлексія.

1. сьогодні я взнав...

2. було цікаво...

3. було важко...

4. я виконував завдання...

5. я зрозумів, що...

6. тепер я можу...

7. я навчився...

8. у мене вийшло ...

9. я зміг...

10. я спробую...озумів, що...

6. тепер я можу...

7. я навчився...

8. у мене вийшло ...

9. я зміг...

10. я спробую...