МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Створення електронного словника комп'ютерних термінів у середовищі візуального програмування 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.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