2.1 Задание

Даны целые числа X(n). Переписать в новый массив все числа, лежащие в диапазоне [-3,7].

 

Рисунок 5 – Экранная форма

 


2.2 Листинг программы

unit Unit1;

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,

StdCtrls;

type

{ TForm1 }

TForm1 = class(TForm)

Button1: TButton;

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 с.


Информация о работе «Обработка одномерных массивов в среде программирования Lazarus»
Раздел: Информатика, программирование
Количество знаков с пробелами: 12051
Количество таблиц: 0
Количество изображений: 7

0 комментариев


Наверх