 
        
        - •Программирование в Delphi с использованием операторов цикла
- •Цель и содержание работы
- •Общие сведения
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с параметром
- •Структура данных массив
- •Описание массива
- •Компоненты Delphi, используемые для ввода/вывода массивов
- •Пример программирования с использованием одномерного массива
- •Разработка алгоритма
- •Разработка интерфейса пользователя
- •Текст модуля
- •Задания к лабораторной работе
- 
Разработка алгоритма
Исходные данные:
- 
n - количество элементов массива; 
- 
С – одномерный массив. 
Результат: одномерный массив С.
Промежуточные переменные:
- 
I – индекс текущего элемента массива; 
- 
k индекс максимального элемента массива; 
- 
max – максимальный элемент массива; 
Н
 а
рис.4 приведена схема алгоритма.
а
рис.4 приведена схема алгоритма.




 
Р ис.
4. Схема алгоритма.
ис.
4. Схема алгоритма.
- 
Разработка интерфейса пользователя
Расположим на форме следующие компоненты:
Label1, Label2, Label3– для вывода подсказок;
Edit1 и Button1 – для ввода количества элементов массива;
StGr1 и Button2 – для ввода исходного массива;
StGr2 – для вывода преобразованного массива;
На рис. 5 показаны объекты, расположенные на форме.

Рис.5. Дерево объектов.
Форма с размещенными на ней компонентами изображена на рис 6.

Рис. 6. Форма на этапе проектирования.
- 
Текст модуля
unit Unit_3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
StGr1: TStringGrid;
Label2: TLabel;
Button2: TButton;
Label3: TLabel;
StGr2: TStringGrid;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var N:integer;
procedure TForm1.Button1Click(Sender: TObject);
begin
Label2.Visible:=true;
Button2.Visible:=true;
StGr1.Visible:=true;
// Ввод количества элементов
N:=StrToInt(Edit1.Text);
StGr1.ColCount:=N;
StGr2.ColCount:=N;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i,k,max:integer;
C:array[1..20] of integer;
begin
Label3.Visible:=true;
StGr2.Visible:=true;
Button3.Visible:=true;
// Ввод массива
i:=1;
While i<=N do
begin
C[i]:=StrToInt(StGr1.Cells[i-1,0]); { Ввод элемента массива}
i:=i+1;
end;
// Поиск максимального элемента и его индекса
i:=1;
max:=C[1];
k:=1;
repeat
if max<C[i] then
begin
max:=C[i];
k:=i;
end;
i:=i+1;
until i>N;
// Обмен элементов
C[k]:=C[1];
C[1]:=max;
// Вывод массива
for i:=1 to N do
StGr2.Cells[i-1,0]:=Inttostr(C[i]);
end;
procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
begin
for i:=1 to n do
begin
StGr1.Cells[i-1,0]:='';
StGr2.Cells[i-1,0]:='';
end;
Edit1.Clear;
Label2.Visible:=false;
Button2.Visible:=false;
StGr1.Visible:=false;
Label3.Visible:=false;
StGr2.Visible:=false;
Button3.Visible:=false;
Edit1.SetFocus;
end;
end.
- 
Результаты вычислений 

- 
Порядок выполнения работы 
- 
Получить у преподавателя задание. 
- 
Разработать алгоритм и представить его в виде схемы. 
- 
Разработать интерфейс программы. 
- 
Написать на Delphi программу. 
- 
Отладить программу. 
- 
Содержание отчета 
- 
Титульный лист. 
- 
Задание. 
- 
Схема алгоритма. 
- 
Текст программы. 
- 
Результаты вычислений. 
- 
Контрольные вопросы 
- 
Для чего предназначены операторы цикла? 
- 
Укажите ошибки в следующих операторах: 
X,Y:Real;
Y:=0;
For X := 1.2 To 4.2 Do
Y := Y + Cos(X);
I, N, S: Integer;
N :=25;
For I := 1 To Sqrt (N) Do
S:=S * I;
For I := 1 To 10 Do
I :=I + 2;
- 
Определить значение переменной F после выполнения следующих фрагментов программы: 
F, K, I :Integer;
F := 0; K:=1;
For I :=2 To K Do
F :=F + 1;
F :=0; I:=1;
Repeat
I := I+1;
F := F+I;
Until <=3;
F :=0; I:=1;
WhileI <=3 Do
Begin
F:=F +I;
I :=I+1
End;
- 
Сколько раз выполнится следующий цикл? 
K, I :Integer;
For I :=1 To K+2 Do
K := K+1;
- 
Какие из приведенных описаний массивов являются неправильными? 
Var B :array [2, 7] of real;
Type Mas1 = array [1..8] of integer;
Var A1 , A2 :Mas1;
Var C : array [-2..7] of integer;
Var B : array ['B' .. 'F'] of integer;
- 
Сколько элементов содержит ниже описанный массив: 
Var С: array ['a' .. 'p'] of real;
