1. Команда циклу з лічильником у Lazarus.
У мові
програмування Lazarus є кілька команд, які можуть реалізувати цикл. Одна
з них – команда циклу з лічильником. Її доцільно використовувати в тих
випадках, коли кількість повторень команд тіла циклу відома до початку
виконання команди циклу. Загальний вигляд цієї команди такий:
for <ім’я
змінної> := <вираз
1> to <вираз 2> do
begin
<команди
тіла циклу>
end;
Рядок for … to … do (англ. for
– для, to – до, do – робити, виконувати) називається рядком
заголовка команди циклу з лічильником. Змінна в рядку заголовка команди
циклу з лічильником, що стоїть перед знаком присвоювання, називається лічильником
циклу.
Лічильник циклу, вираз 1 і вираз 2 мають набувати
тільки цілих значень. Якщо тіло циклу складається лише з однієї команди,
операторні дужки begin і end можна не ставити.
Виконується
команда циклу з лічильником так:
1. Надати
лічильнику циклу (наприклад, змінній i) значення <вираз 1>.
2. Обчислити
значення логічного виразу i <= вираз 2.
3. Якщо значення
логічного виразу, яке обчислено в команді 2, true, то виконати команди
тіла циклу і перейти до виконання команди 4, інакше виконати команду, наступну
за командою циклу.
4. Збільшити
значення лічильника циклу на 1.
5. Перейти до
виконання команди 2.
Блок-схема
виконання команди циклу з лічильником наведена на рисунку.
Для ілюстрації
виконання команди циклу з лічильником розглянемо фрагмент програми, в якому
обчислюється сума 1! + 2! + 3! + 4! (нагадаємо, що n! = 1 * 2 * 3 * ... * n):
var a, s, i:
Integer;
begin
s := 0; a := 1;
For i := 1 to 4 do
begin
a := a*i;
s := s + a;
end;
Label1.Caption
:= IntToStr (s);
end;
Виконаємо цей фрагмент програми.
Зверніть увагу:
1. Після
закінчення виконання команди циклу з лічильником лічильник циклу має значення
на 1 більше, ніж значення вираз 2, і це значення, за потреби, можна
використовувати в наступних командах.
2. Існує різновид
команди циклу з лічильником, який змінюється в зворотному порядку:
for <ім’я
змінної> := <вираз
1> downto <вираз 2> do
begin
<команди
тіла циклу>
end;
(англ. down –
униз), який відрізняється від попереднього лише тим, що після кожного виконання
команд тіла циклу значення лічильника циклу не збільшується на 1, а зменшується
на 1.
2. Команди циклу з передумовою та циклу з післяумовою
в Lazarus.
Якщо кількість
повторень команд тіла циклу до початку виконання команди циклу невідома,
потрібно використовувати команду циклу з передумовою або команду
циклу з післяумовою.
Загальний вигляд команди
циклу з передумовою такий:
while
<логічний вираз> do
begin
<команди
тіла циклу>
end;
(англ. while – поки). Якщо тіло циклу складається
лише з однієї команди, операторні дужки begin і end можна не
ставити.
Виконується
команда циклу з передумовою так:
1. Обчислити
значення логічного виразу.
2. Якщо це
значення true, то виконати команди тіла циклу і перейти до команди 1, а
якщо false, то виконати команду, наступну за командою циклу.
Для ілюстрації
виконання команди циклу з передумовою розглянемо фрагмент програми для
розв’язування наступної задачі.
Задача. Обчислити суму додатних членів арифметичної прогресії
з додатним першим членом і від’ємною різницею.
Домовимося вводити
перший член прогресії в поле Edit1, а її різницю – в поле Edit2.
var a, d, s:
Real;
begin
a := StrToFloat (Edit1.Text);
d := StrToFloat (Edit2.Text);
s := 0;
while a > 0
do
begin
s := s + a;
a := a + d;
end;
Label1.Caption
:= FloatToStr (s);
end;
Виконаємо цей фрагмент програми
для деякого набору значень a і d.
Загальний вигляд команди
циклу з післяумовою такий:
repeat
<команди
тіла циклу>
until
<логічний вираз>;
(англ. repeat – повторити, until –
доки, не раніше як).
Виконується
команда циклу з передумовою так:
1. Виконати
команди тіла циклу.
2. Обчислити
значення логічного виразу.
3. Якщо це
значення false, то виконати п.1, а якщо true, то виконати команду,
наступну за командою циклу.
Команду циклу з
післяумовою доцільно використовувати в тих випадках, коли команди тіла циклу
повинні виконатися хоча б один раз.
Проілюструємо, як
виглядатиме фрагмент програми для розв’язування попередньої задачі з
використанням циклу з післяумовою:
var a, d, s:
Real;
begin
a := StrToFloat (Edit1.Text);
d := StrToFloat (Edit2.Text);
s := 0;
repeat
s := s + a;
a := a + d;
until a <= 0;
Label1.Caption
:= FloatToStr (s);
end;
Виконаємо цей фрагмент програми
для деякого набору значень a і d.
Зверніть увагу:
1. У команді циклу
з післяумовою операторні дужки не використовують незалежно від кількості команд
у тілі циклу.
2. Якщо цикл з
передумовою замінити на цикл з післяумовою або навпаки, то логічний вираз
одного є запереченням логічного виразу іншого.
Практичні завдання:
1. Виконайте в таблиці фрагмент програми та з’ясуйте,
якими будуть значення змінних після його завершення:
а) р := 1; a := 2;
for i := 1 to 5 do
begin
a := 3*a + 1;
р := р*a;
end;
б) k := 1; a := 12;
while a <
100 do
begin
а := 2*а – 4;
k := k + 1;
end;
в) s := 0; a := 1;
k := 1;
repeat
s := s + a;
k := k + 1;
a := k*k;
until a > 50;
2. Виконайте фрагмент програми та з’ясуйте, якими
будуть значення змінних після його завершення:
а) р := 1; a := 8;
for i := 1 to 4 do
begin
a := 2*a – 5;
р := р*a;
end;
б) k := 1; a := 100;
while a > 10
do
begin
а := а div 2;
k := k + 1;
end;
в) s := 0; a := 5428;
repeat
c := a mod 10;
s := s + c;
a := a div 10;
until a < 1;
3. Створіть проект, у якому можна обчислити добуток
перших N членів послідовності чисел, перше з яких дорівнює x, а
кожне наступне вдвічі менше за попереднє. Створіть у власній папці папку Проект 1 і збережіть у ній проект.
4. Створіть
проект, в якому можна обчислити кількість двоцифрових чисел у арифметичній прогресії.
Перший член прогресії більший за 10, різниця більша за 0. Створіть у власній
папці папку Проект 2 і збережіть у ній проект.
5. Створіть
проект, у якому можна знайти кількість дільників заданого натурального числа.
Створіть у власній папці папку Проект 3 і збережіть у ній проект.
Комментариев нет:
Отправить комментарий