| Тема. Цикл з лічильником
Оператор циклу for ... to … do
Оператор for використовується в тому випадку, коли деяку послідовність дій треба виконати кілька разів, причому число повторень заздалегідь відомо.
Загальний вигляд оператора for … do:
for <лічильник>: = <поч_знач> to <кін_знач> do
begin
<Тіло циклу>
End;
де:
- лічильник - змінна-лічильник числа повторень;
- поч_знач - вираз, що визначає початкове значення лічильника циклу;
- кін_знач - вираз, що визначає кінцеве значення лічильника циклу;
- тіло циклу - оператори, які будуть повторюватися.
- Змінна-лічильник, вирази поч_знач і кін_знач повинні бути цілого типу.
- Кількість повторень циклу можна обчислити за формулою: кін_знач - поч_знач +1.
- Якщо між begin і end знаходиться тільки один оператор, то begin і end можна не писати.
Виконується команда циклу з лічильником так:
1. Надати лічильнику циклу і значення поч_знач.
2. Обчислити значення логічного виразу і ≤ кін_знач.
3. Якщо значення логічного виразу true, то виконати команди тіла циклу і перейти до виконання команди
4. Якщо false - перейти до виконання команди, наступної за командою циклу.
5. Збільшити значення лічильника циклу на 1.
6. Перейти до виконання команди 2.
Крок зміни циклу завжди однаковий і дорівнює інтервалу між двома найближчими значеннями типу параметра (при цілочисельному значенні параметра крок дорівнює 1).
Можна скористатись величиною перелічуваного типу. Наприклад,
- Списком непарних чисел першого десятка: 1, 3, 5, 7, 9
- Списком голосних літер українського алфавіту : ‘а’, ‘о’, ‘у’, ‘е’, ‘и’, ‘і’, ‘ї’, ‘ю’
Cписок значень у мові програмування Lasurus обмежують круглими дужками
Отримання випадкових значень величин у програмному коді.
У програмах, написаних мовою програмування Lazarus, у програмному коді опрацювання події один раз звертаються до функції Randomize, яка підключає генератор випадкових чисел та надає можливість отримувати щоразу інші значення. Тоді в програмному коді можна отримати випадкові значення величин різних типів.
Опис Значення змінної А
Randomize;
A:=random; Випадкове дійсне число від 0,0 включно до 1,0
Randomize;
A:=random(10); Випадкове ціле число від 0 включно до 10
Randomize;
A:=random(b-a+1)+a; Випадкове ціле число від а до b включно
Вправа 1 Вивести таблицю квадратів чисел

|
Програмний код
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
for i:= 1 to 10 do
memo1.lines.add(IntTostr(i) + ' * '+ IntToStr(i) + ' = ' +IntToStr(i*i)); //свойство Wordgroup = true
end;
|
Якщо в операторі for замість слова to записати Downto, то після чергового виконання тіла циклу значення лічильника буде не збільшуватися, а зменшуватися.
Вправа 2. Створення таблиці множення

|
Програмний код
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
image1.Show;
image2.Hide;
for i:= 1 to 9 do
listbox1.Items.Add('i = ' + inttostr(i) + ' ' +inttostr(i)+'* 9 = '+inttostr(i*9));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
image1.Hide;
image2.Hide;
listbox1.Clear;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
image1.Hide;
image2.Hide;
end;
|
procedure TForm1.Button3Click(Sender: TObject);
var i : integer;
begin
image1.Hide;
image2.Show;
for i:= 9 downto 1 do
listbox1.Items.Add('i = ' + inttostr(i) + ' ' +inttostr(i)+'* 9 = '+inttostr(i*9));
end;
|
Вправа 3. Створити проект обчислення суми квадратів цілих чисел: 1, 2, 3, ...
Алгоритм проекту

|
Программный код проекта
procedure TForm1.Button1Click(Sender: TObject);
var s, i, n : integer;
begin
s :=0;
n:= StrToInt(InputBox('введите число','',''));
for i := 1 to n do
begin
s := s + i*i;
listbox1.Items.Add('i= '+ inttostr(i) + ' i^2 = ' + inttostr(i*i ) + ' s = ' + IntToStr(s));
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
listbox1.Clear;
end;
|
Вправа 4. Полічити кількість слів у введеному користувачем тексті. Вважатимемо, що слова відокремлюються виключно одним пробілом
Алгоритм проекту

Интерфейс проекта

|
Программный код проекта
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, LCLProc; // добавляем модуль LCLProc в раздел uses
.........
procedure TForm1.Button1Click(Sender: TObject);
var n, i, k: integer; s : string;
begin
k:=0; //количество слов в предложении
s := memo1.text;
n := UTF8length(s); //количество символов в предложении
for i:= 1 to n do
if UTF8copy(s,i,1) = chr(32) then k := k +1; //код очередного символа предложения сравнивается с кодом пробела
k:=k + 1; // учитываем последнее слово, так как количество слов в строке больше количества пробелов на единицу
label1.caption := 'количество слов в предложении = ' + inttostr(k);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
label1.caption := ' ' ;
memo1.text := 'Введите текст' + #13 +'Выделите кн. Пуск';
end;
|
Вправа 5. Знайти факторіал числа n за формулою: f ! = 1 * 2 * З *... * n.
Алгоритм проекту. Интерфейс проекта

|
Программный код проекта
procedure TForm1.Button1Click(Sender: TObject);
var i, n, f: Integer;
begin
n := StrToInt(Edit1.text);
f:= 1;
For i := 2 to n do
begin
f := f * i;
memo1.Lines.Add('i = '+ IntToStr(i) + #9 +' f = ' + IntToStr(f));
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
memo1.Lines.Clear;
end;
|
Вправа 6. З клавіатури вводяться п'ять дійсних чисел, серед яких можуть бути як додатні, так і від'ємні числа. Знайти середнє арифметичне додатних чисел.
Алгоритм проекту. Интерфейс проекта

|
Программный код проекта
procedure TForm1.Button1Click(Sender: TObject);
var i, k: Integer; a, s: real;
Begin
s := 0;
k := 0; // счетчик положительных чисел
for i := 1 to 5 do
begin
a := strtofloat(inputbox(' Введите число ','',''));
if a > 0 Then
begin
k := k + 1; s :=s + a;
memo1.lines.add( 'k = ' + inttostr(k) + ' a= ' + floattostr(a) + ' s = ' +floattostr(s));
end
else memo1.lines.add(#9 +' a= ' + floattostr(a) );
end;
label2.Caption := 'среднее арифметическое положительных чисел = ' + floattostrF(s/k,ffFixed,6,3);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
memo1.lines.Clear;
label2.Caption := '';
end;
|
Вправа 7. Розробити проект у якому за введеним початковим і кінцевим значенням температури в текстове поле буде виведений список відповідних температур за шкалою Фаренгейта, якщо для такого перетворення використовують формулу: Tf = 9/5*Tc + 32.
Интерфейс проекта

|
Программный код проекта
procedure TForm1.Button1Click(Sender: TObject);
var Tf: real; i, Tn, Tk : integer;
begin
Tn := strtoint(edit1.text);
Tk := strtoint(edit2.text);
for i:= Tn to Tk do
begin
Tf := 9/5*i + 32;
listbox1.items.add('Tc = ' + inttostr(i) + ' ' + 'Tf = ' + floattostr(Tf)+ ' ');
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
listbox1.Clear;
edit1.text:='';
edit2.text :='';
end;
|
| |