Цикл з параметром (лічильником) використовують у випадках коли відома кількість повторень оператора циклу. В таких випадках для побудови циклу використовують цикл 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.
В цьому випадку параметр циклу приймає послідовні спадаючі значення даного типу
Для 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;
Приклад.
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;
Параметр і змінюється від 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.var i, n, f: Integer;
beginn := StrToInt (Edit1.Text);
f := 1;
For i := 2 to n do f := f * i;
Edit2.Text := IntToStr(f);
end;
З клавіатури вводяться п’ять дійсних чисел, серед яких можуть бути як додатні, так і від’ємні числа. Знайти середнє арифметичне додатних чисел.
Обчислити факторіал числа n (рис. 41.1) за формулою n! = 1 . 2 . 3 . … . n.var i, 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
k := 0; // лічильник додатних чисел
For i := 1 to 5 do begin
a := StrToFloat(InputBox(‘Ввести 5 чисел’, IntToStr(i), ‘0’));
If a > 0 Then begin
If a > 0 Then begin
k := k + 1;
Sr := Sr + a;
end;
end;
end;
Sr := Sr / k;
Edit1.Text := FloatToStr(Sr);
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.
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 (Людмила Григорівна)
nformatika18@ukr.net (Людмила Миколаївна) та
lgskuratovska@gmail.com (Людмила Григорівна)

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