Контрольная работа: Обработка одномерных массивов в среде программирования Lazarus
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Edit1: TEdit;
Edit2: TEdit;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
GroupBox5: TGroupBox;
ListBox1: TListBox;
ListBox2: TListBox;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
X, Y: array [1..100] of integer;
n, m: integer;
implementation
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
n:= 0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
// обнуление массива
n:= 0;
for i:= 1 to 100 do X[i]:= 0;
//
заполенние массива Х из строк мемо
n:=
Memo1.Lines.Count; // установить длину массива
for i:= 1 to n do
X[i]:= StrToInt(Memo1.Lines[i-1]); // занесения значения элемента из строки мемо
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
inc(n); //
увеличиваем счетчик элементов
X[n]:=
StrToInt(Edit1.Text); // занесение значения из эдит1
end;
procedure TForm1.Button3Click(Sender: TObject);
var
s: string;
i: integer;
begin
// обнуление массива
n:= 0;
for i:= 1 to 100 do X[i]:= 0;
//
выделение элементов между пробелами в эдит2
s:= Edit2.Text+' ';
i:= pos(' ', s);
while i<>0 do
begin
inc(n);
X[n]:=
StrToInt(copy(s, 1, i-1)); // занесение значения из эдит1
delete(s,
1, i); // удаление выделенного элемента из строки
i:= pos('
', s);// поиск следующего элемента
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
var i: integer;
begin
// обнуление результата
m:= 0;
ListBox1.Clear;
ComboBox1.Clear;
// перебор
исходного массива
for i:= 1
to n do
//
сравнение значения элемента с диапазоном
if (X[i]>=-3)and(X[i]<=7) then
begin
//
занесение нового элемента в результирующий массив Y
inc(m);
Y[m]:=
X[i];
// вывод
элемента массива Y на экранные компоненты
ListBox1.Items.Add(IntToStr(Y[m]));
ComboBox1.Items.Add(IntToStr(Y[m]));
end;
end;
procedure TForm1.Button5Click(Sender: TObject);
var i: integer;
begin
ListBox2.Clear;
ComboBox2.Clear;
// перебор исходного массива
for i:= 1 to n do
begin
ListBox2.Items.Add(IntToStr(X[i]));
ComboBox2.Items.Add(IntToStr(X[i]));
end;
end;
initialization
{$I unit1.lrs}
end.
2.3 Экранные
формы

Рисунок 6 -
Занесение массива через Mеmо1

Рисунок 7 -
Занесение массива через Edit1
Выводы
Недостатки
Lazarus:
- Нет
полной совместимости с Delphi (хотя в отличие от Delphi предоставляет
возможность создавать кроссплатформенные приложения).
- При
стандартных настройках скомпилированный файл имеет очень большой размер, так
как включает отладочную информацию. На самом деле недостатком не является,
поскольку это легко исправляется. Достаточно указать компилятору дополнительный
ключ -Xg (Использовать внешний файл отладочных символов) и -Xs (Вырезать
символы из исполнимого файла); Однако это может быть абсолютно не очевидно
начинающим программистам, хотя эти настройки доступны и в графическом
интерфейсе (Проект -> параметры компилятора -> связывание) и, даже в этом
случае, исполняемый файл (по крайней мере, под Windows) заметно превосходит
размером сгенерированный Delphi, что в значительной степени компенсируется
упаковщиками. Для создания небольших приложений альтернативой лазарусу может
служить MSE.
-
Отсутствие полноценной документации. Но документация по самому компилятору
доступна онлайн, либо в PDF/HTML документах, а документация по Lazarus доступна
в виде Wiki — учебников, которые могут редактировать сами пользователи.
- Нет
полноценной поддержки COM (реализована только поддержка методов), что, впрочем,
вполне естесственно, поскольку сфера интересов разработчиков Lazarus лежит в
области кроссплатформенного программирования, а не в области взаимодействия с
Windows-приложениями.
- Отладчик
не позволяет просматривать значения свойств объектов во время отладки, только
переменных и полей объектов.
Литература
1.
Е.Р. Алексеев, О.В. Чеснокова, Т.В. Кучер Free Pascal и Lazarus:
Учебник по программированию - ALT Linux; ДМК-пресс, 2010 – 442 с.
|