Алгоритми з повторенням. Цикл з параметром


Цикл з параметром (лічильником) використовують у випадках коли відома кількість повторень оператора циклу. В таких випадках для побудови циклу використовують цикл for



Загальний вигляд оператора циклу з параметром (з лічильником):

for <параметр циклу>:=N1 to N2 do <тіло циклу >;

де N1 та N2 - початкове та кінцеве значення параметра циклу, тіло циклу може бути простим або складеним оператором. <Параметр циклу > ще називають лічильником циклу. Оператор for забезпечує виконання тіла циклу до тих пір, поки не будуть перебрані всі значення параметра циклу від початкового до кінцевого. Параметр циклу, його початкове та кінцеве значення повинні бути одного і того ж скалярного типу. При цьому можливий будь який стандартний тип, крім real. Якщо N1 та N2 цілі числа, а параметр циклу - цілочисельна змінна, то крок завжди рівний одиниці.


Приклад.

s:=0; 
for i:=1 to 20 do s:=s+i;

Для i=1, 2, 3,... , 20 буде виконуватись оператор присвоєння
S:=S+i, який накопичує в змінній S суму перших 20 натуральних чисел. Якщо N1 та N2-символьного типу, а їх значення відповідно рівні 'A' та 'Z', то параметр циклу прийматиме послідовні значення, які співпадають з алфавітом: A, B, C, D E .., Z.

Цикл по спадних значеннях параметра від N2 до N1 має вигляд:

for <параметр циклу> := N2 downto N1 do <тіло циклу>;

В цьому випадку параметр циклу приймає послідовні спадаючі значення даного типу 
від N2 до N1.

Приклад.

S:=0;
for i:=20 to 1 do S:=S+i;

Параметр і змінюється від 20 до 1 з кроком –1.

Для оператора циклу з параметром існують деякі обмеження:оскільки параметр циклу не може бути дійсного типу, то задати крок відмінний від 1 або -1 не можна; значення параметра циклу, початкового та кінцевого значень параметрів циклу змінювати в процесі виконання не можна; увійти в цикл можна тільки через його початок, а вийти за допомогою оператора переходу по мітці, яка розташована зовні даного циклу або за допомогою однієї з процедур Exit i Halt. Приклади: обчислення суми перших 100 натуральних чисел методом послідовного додавання.

а) S: =0;
for m:=1 to 100 do
S:=S+m;

б) S: =0;
for m:=100 downto 1 do
S:=S+m;

Висновок. Для розв'язування переважної більшості типових задач не має значення, який цикл застосовувати: while чи repeat. Треба лише пам'ятати, що умови (логічні вирази) в цих командах є протилежні: у команді while логічний вираз описує умову продовження обчислень у циклі, а в команді repeat – умову виходу з циклу. 
Під час реалізації циклу з покроковою зміною аргументу в Паскалі необхідно заздалегідь знати про кількість повторень тіла циклу і пам’ятати про можливість зміни лічильника циклу тільки на 1 або –1.

Обчислити  факторіал  числа  n  (рис.  41.1)  за  формулою n! = 1 . 2 . 3 .  . n.vari, n, f: Integer;
beginn := StrToInt (Edit1.Text);
f := 1;
For i := 2 to n do f := f * i;
Edit2.Text := IntToStr(f);

end;

З  клавіатури  вводяться  п’ять  дійсних  чисел,  серед  яких  можуть бути як додатні, так і від’ємні числа. Знайти середнє арифметичне додатних  чисел.

var  i, k: Integer; a, Sr: Double;
begin
Sr := 0;
k := 0; // лічильник додатних чисел
For i := 1 to 5 do begin
a := StrToFloat(InputBox(‘Ввести 5 чисел’, IntToStr(i), ‘0’));
If a > 0 Then begin
                       k := k + 1; 
                      Sr := Sr + a;
                      end;
end;
Sr := Sr / k;
Edit1.Text := FloatToStr(Sr);
end;

 

Kомпонент список (ListBox)

Для  виведення  значень  змінних  у  кілька  рядків  зручно  скористатися  компонентом  LіstBox  (список).
Компонент 
ListBox    (вкладка  Standard на  Палітрі компонентів) 
призначений  для  зберігання  й  опрацювання  текстових  даних.  Кожен 
рядок 
ListBox  зберігає  рядок  символів  (String). 
Доступ  до  рядків  надає  властивість 
Items  цього  компонента.
Для  додавання  рядка  до  списку  програмним  шляхом  призначено 
метод 
Add. 
Синтаксис  виклику  методу 
Add:ListBox1.Items.Add(‘Новий_рядок’);


Додати  до  списку  ListBox значення  виразу  2х:
ListBox1.Items.Add(IntToStr (2 * х));
Щоб  очистити  вміст  списку,  для  елемента  керування  ListBox  викликають  метод  Clear:   ListBox1.Clear;
Властивість  Count  зберігає  кількість  рядків,  доданих  до  списку  

Додати  до  списку  ListBox літери  із  заданого  діапазону  (рис.  41.2):

var  i, nv, kv: Char;
beginn
v := Edit1.Text[1];
kv := Edit2.Text[1];
For i := nv to kv do ListBox1.Items.Add (i);
end;

Завдання на дом:

1. Виконайте вправу 41 на стор.202, збережіть його в папці Вправа 41.

2. Виконайте тестове завдання 41 з автоматичною перевіркою на сайті interactive.ranok.com.ua.


Надішліть всі файли проекту на електорнну адресу:
nformatika18@ukr.net (Людмила Миколаївна) та
 lgskuratovska@gmail.com  (Людмила Григорівна)




Комментариев нет:

Отправить комментарий