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