
- •Комп’ютерний практикум №4
- •Керуючі структури
- •Мета роботи: ознайомитися з логічними і циклічними структурами в середовищі Delphi.
- •Теоретичні відомості
- •1 Умова
- •2.1 Інструкція if
- •2.2 Інструкція case
- •Interface
- •Implementation
- •3 Цикли
- •3.1 Інструкція for
- •3.2 Інструкція while
- •Interface
- •Implementation
- •3.3 Інструкція repeat
- •Interface
- •Implementation
- •4 Інструкція goto
- •Індивідуальні завдання
- •Контрольні питання
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1=class(TForm)
Label2:TLabel;
Edit1:TEdit; //поле вводу ваги у фунтах
Button1:TButton; //кнопка Обчислити
Label1:TLabel;
Label3:TLabel;
ListBox1:TListBox; //список країн
Label4:TLabel; //поле виводу рез-та - ваги в кілограмах
procedure FormCreate(Sender:TObject);
procedure Button1Click(Sender:TObject);
private
{Private declaration }
public
{Public declarations}
end;
var
Form1:TForm1;
Implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender:TObject);
begin
{
ListBox1.Items.add('Україна');
ListBox1.Items.add('Австрія');
ListBox1.Iterns.add('Англія');
ListBox1.Items.add('Німеччина');
ListBox1.Items.add('Данія');
ListBoxl.Items.add('Ісландія');
ListBox1.Items.add('Італія');
ListBox1.Items.add('Нідерланди');
}
ListBox1.Itemindex:= 0;
end;
procedure TForm1.ButtonlClick(Sender:TObject);
var
funt:real; //вага у фунтах
kg:real; //вага в кілограмах
k:real; //коефіцієнт перерахунку
begin
case ListBox1.Itemindex of
0:k:=0.4095; //Україна
1:k:=0.453592; //Англія
2:k:=0.56001; //Австрія
3..5,7:k:=0.5; //Німеччина, Данія, Ісландія, Нідерланди
6:k:=0.31762; //Італія
end;
funt:=StrToFloat(Edit1.Text);
kg:=k*funt;
label4.caption:=Edit1.Text+' ф. - Це '+FloatToStrF(kg, ffFixed, 6,3)+' кг.';
end;
end.
Слід звернути увагу на процедуру обробки події FormCreate, яка відбувається в момент створення форми (форма створюється автоматично при запуску програми). Цю процедуру можна використовувати для ініціалізації змінних програми, в тому числі і для додавання елементів в список. У наведеному тексті програми інструкції створення списку закоментовані, оскільки список був створений за допомогою редактора рядків під час створення форми.
3 Цикли
Алгоритми розв’язку багатьох завдань є циклічними, тобто для досягнення результату певна послідовність дій повинна бути виконана кілька разів. Алгоритм, в якому є послідовність операцій (група інструкцій), яка повинна бути виконана кілька разів, називається циклічним, а сама послідовність операцій – циклом. У програмі цикл може бути реалізований за допомогою інструкцій for, while і repeat.
3.1 Інструкція for
Приклад 3
Потрібно написати програму, яка обчислює значення функції у = 5х2 - 7 в точках -1, -0.5, 0, 0.5 і 1 (таблиця повинна бути виведена в поле мітки форми додатка). Процедура, що забезпечує рішення поставленого завдання, може виглядати так:
procedure TForm1.ButtonlClick(Sender:TObject);
var
у:real; //значення функції
x:real; //аргумент функції
dx:real; //приріст аргументу
st:string; //зображення таблиці
begin
st:='';
x:=-1; dx:=0.5;
у:=5*х*х-7;
st:=st+FloatToStr(x)+''+FloatToStr(y)+chr(13);
x:=x+dx;
у:=5*х*х-7;
st:=st+FloatToStr(x)+''+FloatToStr(y)+chr(13);
x:=x+dx;
у:=5*х*х-7;
st:=st+FloatToStr(x)+''+FloatToStr(y)+chr(13);
x:=x+dx;
у:=5*х*х-7;
st:=st+FloatToStr(x)+''+FloatToStr(y)+chr(13);
x:=x+dx;
у:=5*х*х-7;
st:=st+FloatToStr(x)+''+FloatToStr(y)+chr(13);
x:=x+dx;
Label1.Caption:=st;
end;
З тексту процедури видно, що група інструкцій
у:=5*х*х-7;
st:=st+FloatToStr(x)+''+FloatToStr(y)+chr(13);
x:=x+dx;
забезпечує обчислення значення функції, формування рядка таблиці і збільшення аргументу, виконується 5 разів. Скориставшись інструкцією for, наведену процедуру можна переписати таким чином:
procedure TForm1.ButtonlClick(Sender:TObject);
var
у:real; //значення функції
x:real; //аргумент функції
dx:real; //приріст аргументу
st:string; //зображення таблиці
i:integer; //лічильник циклів
begin
st:=''; x:=-1; dx:=0.5;
for i:=1 to 5 do
begin
у:=5*x*x-7;
st:=st+FloatToStr(x)+''+FloatToStr(y)+chr(13); x:=x+dx;
end;
Label1.Caption:=st;
end;
Інструкція for використовується в тому випадку, якщо деяку послідовність дій (інструкцій програми) треба виконати кілька разів, причому число повторень заздалегідь відомо.
У загальному вигляді інструкція for записується таким чином:
for лічильник: = поч_знач to кін_знач do
begin
// інструкції, які треба виконати кілька разів
еnd;
де
лічильник – змінна-лічильник числа повторень інструкцій циклу;
поч_знач – вираз, що визначає початкове значення лічильника циклів;
кін_знач – вираз, що визначає кінцеве значення лічильника циклів.
Змінна лічильник, вирази поч_знач і кін_знач повинні бути цілого типу.