МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Створення електронного словника комп'ютерних термінів
у середовищі візуального програмування Delphi.
ІНСТРУКЦІЯ
до лабораторної роботи № 6
з курсу
“Застосування засобів об’єктно-орієнтованого програмування в лінгвістичних задачах” спеціальності 07.030505 “Прикладна лінгвістика”.
ЗАТВЕРДЖЕНО
На засіданні кафедри “Системи
Автоматизованого проектування”
Протокол №___ від _________
Львів - 2005

Мета роботи: Створити програму, яка буде працювати з базою даних – словником у вигляді файлу записів. Полями кожного запису є: слово та його переклад. Необхідно реалізувати наступні операції: створення та видалення запису, збереження і зчитування з диску файлу записів, редагування та пошук необхідних даних, прогляд записів та навігацію по них.
Теоретичні відомості.
Дана лабораторна робота присвячене укладанню електронного словника комп'ютерних термінів. Розповсюдження персональних комп'ютерів і створення Інтернету залучило до цієї сфери широкі верстви населення, які сприйняли і збагатили комп'ютерну лексику. Це зумовило значний ріст термінологічної лексики: виникнення нових термінів, а також розширення значень уже існуючих термінів. У результаті виникає потреба укладання великої кількості різноманітних галузевих та інших словників, а також публікацій, які стосуються принципів укладання словників цих нових терміно-систем. Як відомо, основних способів словотворення є два: морфологічний і неморфологічний. При цьому серед морфологічних способів виділяють афіксальні (суфіксальний, префіксальний, префіксально-суфіксальний), безафіксний, основоскладання, абревіація. До неморфологічних способів творення належать морфолого-синтаксичний (набуття нового значення при переході слова з однієї частини мови в іншу), лексико-синтаксичний (нове слово утворюється в результаті зрощення слів словосполучення в одне слово) та лексико-семантичний (метафоричне переосмислення уже існуючих у мові слів). Двомовний словник дає користувачу відомості не лише про відмінювання слів, але і про словотвір, морфемний поділ, про особливість вживання даного виразу тощо. В окремих словниках широко відображена синтаксична сполучуваність. Створення електронного словника комп’ютерних темінів дає змогу швидкого пошуку потрібного слова, ніж гортання сторінок книжок. У цьому словнику використанні велика кількість найчастіше вживаних комп’ютерних термінів. Українська мова функціонуватиме як повноцінна світова мова лише у тому разі, якщо нею заговорять комп'ютери.
Частина 1.
Порядок виконання роботи
1. Створити форму назвати її Dictionary.
2. Створити поля ComboBox1, ComboBox2 відображення слів словника. В полі ComboBox1 верхня половина призначена для швидкого пошуку слова в словнику, або вибору з переліку слів. Нижня призначена для перекладених слів словника. ComboBox2.

3. Тепер напишемо обробник подій при натисканні на пункт меню "Go". Що приводить до перекладу слова з однієї мови на іншу.

procedure TForm1.BitBtn1Click(Sender: TObject);
var temp:integer;
begin
temp:=form1.ComboBox1.ItemIndex;
form1.ComboBox2.Text:=form1.ComboBox2.Items[temp];
end;
4. Створемо також кнопку статусу яка вказує з якої мови ми перекладаємо «Англ-Укр» або «Укр-Англ».

5. Створити меню словника, яке повинно мати наступні функції та автоматично вказують тип перекладу«Англ-Укр» або «Укр-Англ»:

procedure TForm1.EngUk1Click(Sender: TObject);
begin
status:=1;
read_u;
read_2;
form1.ComboBox1.SetFocus;
form1.Label1.Caption:='Status: En-Uk';
end;

procedure TForm1.UkEn1Click(Sender: TObject);
begin
status:=2;
read_u;
read_2;
form1.ComboBox1.SetFocus;
form1.Label1.Caption:='Status: Uk-En';
end;
6. Створемо окрему програму яка буде додавати в словник окремі слова

unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
Memo2: TMemo;
Label1: TLabel;
Label2: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
form2.Memo1.Clear;
form2.Memo2.Clear;
form2.Button1.ModalResult:=mrOk;
form2.Button2.ModalResult:=mrCancel;
end;
end.
7. Запишемо процедуру яка буде виконувати зчитування нашого словника з текстового файлу. Наприклад data.txt:
procedure read_u;
var
f:text;
par:integer;
str,str2,str3:string;
begin
form1.ListBox1.Clear;
if status=2 then begin
assignfile(f,ExtractFilePath(application.ExeName)+'data.txt');
reset(f);
while not eof(f) do begin
readln(f,str);
par:=pos(':',str);
if par<>0 then begin
str2:=(copy(str,0,par-1));
str3:=(copy(str,par+2,length(str)-par));
form1.ListBox1.Items.Add(str3+':'+' '+str2);
end;
end;
closefile(f);
end;
if status=1 then form1.ListBox1.Items.LoadFromFile(ExtractFilePath(application.ExeName)+'data.txt');
form1.ListBox1.Sorted:=false;
form1.ListBox1.Sorted:=true;
end;
8.
procedure read_2;
var
par,lich:integer;
str:string;
begin
form1.ComboBox1.Clear;
form1.ComboBox2.Clear;
for lich:=0 to form1.ListBox1.Count-1 do begin
str:=form1.ListBox1.Items[lich];
par:=pos(':',str);
if par<>0 then begin
form1.ComboBox1.Items.Add(copy(str,0,par-1));
form1.ComboBox2.Items.Add(copy(str,par+1,length(str)-par));
end;
end;
end;
1
Контрольні запитання.
Компонент MainMenu?
Яким чином можна додати в меню “About” або “Help”.
Яка функція відкриває файл.
Що робить ф-я Pos.
Що робить ф-я Copy.
6. Що робить ф-я Length.
Зміст звіту
Титульна сторінка.
Мета роботи.
Теоретичні відомості.
Приклад створеної програми.
Вихідні результати.
Висновок.
Додатки
Код програми
Unit1.pas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Menus;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
ComboBox2: TComboBox;
BitBtn1: TBitBtn;
MainMenu1: TMainMenu;
temp11: TMenuItem;
temp21: TMenuItem;
tp11: TMenuItem;
ListBox1: TListBox;
EngUk1: TMenuItem;
UkEn1: TMenuItem;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure tp11Click(Sender: TObject);
procedure EngUk1Click(Sender: TObject);
procedure UkEn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
status:integer;
implementation
uses Unit2;
procedure read_u;
var f:text; par:integer; str,str2,str3:string;
begin
form1.ListBox1.Clear;
if status=2 then begin
assignfile(f,ExtractFilePath(application.ExeName)+'data.txt');
reset(f);
while not eof(f) do begin
readln(f,str);
par:=pos(':',str);
if par<>0 then begin
str2:=(copy(str,0,par-1));
str3:=(copy(str,par+2,length(str)-par));
form1.ListBox1.Items.Add(str3+':'+' '+str2);
end;
end;
closefile(f);
end;
if status=1 then form1.ListBox1.Items.LoadFromFile(ExtractFilePath(application.ExeName)+'data.txt');
form1.ListBox1.Sorted:=false;
form1.ListBox1.Sorted:=true;
end;
procedure read_2;
var par,lich:integer; str:string;
begin
form1.ComboBox1.Clear;
form1.ComboBox2.Clear;
for lich:=0 to form1.ListBox1.Count-1 do begin
str:=form1.ListBox1.Items[lich];
par:=pos(':',str);
if par<>0 then begin
form1.ComboBox1.Items.Add(copy(str,0,par-1));
form1.ComboBox2.Items.Add(copy(str,par+1,length(str)-par));
end;
end;
end;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
status:=1;
form1.Label1.Caption:='Status: En-Uk';
read_u;
read_2;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var temp:integer;
begin
temp:=form1.ComboBox1.ItemIndex;
//form1.Memo1.Lines.Add(form1.ComboBox1.Items[temp]);
form1.ComboBox2.Text:=form1.ComboBox2.Items[temp];
end;
procedure TForm1.tp11Click(Sender: TObject);
var lich:Integer;
res:TModalResult;
begin
/////
status:=1;
read_u;
read_2;
form1.ComboBox1.SetFocus;
form1.Label1.Caption:='Status: En-Uk';
///////
form2.Memo1.Clear;
form2.Memo2.Clear;
form2.ShowModal;
if form2.ModalResult=mrOk then begin
for lich:=0 to form2.Memo1.Lines.Count-1 do begin
if form1.ComboBox1.Items.IndexOf(form2.Memo1.Lines[lich])<>-1 then
begin
res:=MessageDlg('the worb'+' '+form2.Memo1.Lines[lich]+' '+'is in',mtInformation,[mbNo, mbOk],0);
if res=mrOk then begin
form1.ListBox1.Items.Delete(form1.ComboBox1.Items.IndexOf(form2.Memo1.Lines[lich]));
form1.ListBox1.Items.Add(form2.Memo1.Lines[lich]+':'+' '+form2.Memo2.Lines[lich]);
form1.ListBox1.Sorted:=false;
form1.ListBox1.Sorted:=true;
end;
end
else begin
form1.ListBox1.Items.Add(form2.Memo1.Lines[lich]+':'+' '+form2.Memo2.Lines[lich]);
form1.ListBox1.Sorted:=false;
form1.ListBox1.Sorted:=true;
end;
end;
form1.ListB