Результаты работы программы
В представленной работе был разработан переводчик с английского языка на русский язык. В нем присутствуют функции сохранения перевода и добавления новых слов в словарь. Результаты работы программы представлены на рисунках 9 и 10. Листинг программы приведен в приложении С.
Рисунок 9 – Главное окно программы «Переводчик»
Рисунок 10 – Окно просмотра словаря программы «Переводчик»
Заключение
Разработанный в ходе выполнения курсового проекта переводчик текстов с английского языка на русский язык является актуальным на сегодняшний день, так как многие пользователи нуждаются в автоматизированном простом и быстром средстве перевода. Нами были приобретение практических навыков в построении переводчиков. Также были решены задачи, поставленные перед нами. Мы научились разрабатывать собственные алгоритмы для решения этих задач, овладели методами и средствами отладки и тестирования программ. Разработанная нами программа устойчиво выполняет все свои функции, что делает ее применимой к многим областям деятельности. Но теперь перед нами стоит задача сделать переводчик еще более совершенным и более расширенным.
Список использованных источников 1. Гриз Д. Теория конструирования цифровых компиляторов. М.: Мир, 1980. 2. Ахо А., Ульман Дж. Теория синтаксического анализа перевода и компиляции. М.: Мир, 1978 3. Хантер Р. Проектирование и конструирование компиляторов. М.: Радио, 1984. 4. Молчанов, А.Ю. Системное программное обеспечение. – М.; СПб.; Нижний Новгород: Питер, 2003. – 395 с. 5. Гордеев, А.В. Системное программное обеспечение. – СПб.; М.; Харьков: Питер, 2002. – 736 с.
Приложение А
Листинг программы «Бинарные деревья»
Program Bin_tree; Uses Crt; Type Point = ^ Item; {тип – указатель на список} Item = Record {запись в составе:} Key: Integer; {корень-целое число} Next: Point; {указатель на список} end; Link = ^Derevo; {тип – указатель на дерево} Derevo = Record {дерево в составе:} Key: Integer; {корень} Left, Right: Link; {указатели на левое и правое поддерево} End; Var A: Point; {указатели на запись-список} Tree: Link; {указатель на дерево} Procedure Vvod (var P: Point); {процедура ввода списка} Var i: integer; Q: Point; {указатель на список} Begin P:= Nil; {пустой список} Writeln ('Введите числовую последовательность'); i:=1; While i<=10 do begin New(Q); {формирование нового элемента списка} Write ('Число', i, ':'); Read (Q^.Key); {присваиваем элементу key введенное значение} Q^.Next:= P; {включение нового элемента в список} P:= Q; {указатель списка – на начало списка} i:=i+1; end; End; Procedure TreeBild (var T: Link; P: Point); {процедура построения дерева} Var x: Integer; Procedure Find_Ins (var Q: Link; x: Integer); var Q1:link; Procedure Ins (var S: Link); Begin {процедуры вставки элемента} New(S); S^.Key:= x; S^.Left:= Nil; S^.Right:= Nil; End; Begin {процедуры поиска и вставки элемента} x:= P^.Key; If Q = Nil then Ins(Q) else if x<Q^.key then Find_Ins (Q^.Left, x) else if x=Q^.key then Find_Ins (Q^.right, x) else begin new(Q1); Q1^.left:=Q; Q1^.key:=x; Q:=Q1; end; End; Begin {процедуры построения дерева из списка} If P <> Nil then begin Find_Ins (T, P^.Key); TreeBild (T, P^.Next) end; End; {процедура обхода дерева} Procedure OutTree (var T: Link); Begin If T <> Nil then begin OutTree (T^.Left); {левое поддерево} OutTree (T^.Right); {правое поддерево} Write (T^.Key, ' '); {корень дерева} end; End; Begin {основная программа} ClrScr; Vvod(A); {процедура ввода списка} Tree:= Nil; TreeBild (Tree, A); {процедура построения дерева Tree из списка A} OutTree(Tree); {процедура обхода дерева} dispose(Tree); {освобождение ОП} ReadKey; End. {конец программы}
Приложение В Листинг программы «Польская запись» Program Polskaya; uses crt; var i, n:integer; st1, st2, st3:string; label 1; begin clrscr; st2:=''; write ('Stroka v infiksnoi forme: '); {Вводим строку} Readln(st1); for i:=1 to length(st1) do begin 1: if st1 [i]=' (' then st3:=st3+st1 [i] else if st1 [i]='^'then
begin n:=Length(st3); if st3 [n]='^' then begin st2:=st2+st3 [n]; Delete (st3, n, 1); st3:=st3+st1 [i]; end else if (n=0) or (st3 [n]='(') or (st3 [n]='+') or (st3 [n]='-') or (st3 [n]='*') or (st3 [n]='/') then st3:=st3+st1 [i]; end else if (st1 [i]='*') or (st1 [i]='/') then begin n:=Length(st3); if st3 [n]='^' then begin st2:=st2+st3 [n]; Delete (st3, n, 1); Goto 1; Goto 1; end; if (st3 [n]='*') or (st3 [n]='/') then begin st2:=st2+st3 [n]; Delete (st3, n, 1); st3:=st3+st1 [i]; end else if (n=0) or (st3 [n]='(') or (st3 [n]='+') or (st3 [n]='-') then st3:=st3+st1 [i]; end else if (st1 [i]='+') or (st1 [i]='-') then begin n:=Length(st3); if (st3 [n]='(') or (n=0) then st3:=st3+st1 [i] else if (st3 [n]='^') or (st3 [n]='*') or (st3 [n]='/') then begin st2:=st2+st3 [n]; Delete (st3, n, 1); Goto 1; end else begin st2:=st2+st3 [n]; Delete (st3, n, 1); st3:=st3+st1 [i]; end; end else if st1 [i]= ')'then begin n:=Length(st3); if n=0 then Break; if (st3 [n]='(') then Delete (st3, n, 1) else begin st2:=st2+st3 [n]; Delete (st3, n, 1); Goto 1; end; end else st2:=st2+st1 [i]; end; n:=Length(st3); for i:=n downto 1 do st2:=st2+st3 [i]; WriteLn ('Stroka v postfiksnoi forme: ', st2); readkey; end.
Приложение С Листинг программы «Переводчик» unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, ComCtrls, Buttons, ExtCtrls; type TForm1 = class(TForm) MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N4: TMenuItem; N5: TMenuItem; OpenDialog1: TOpenDialog; Memo2: TMemo; Memo3: TMemo; N3: TMenuItem; N6: TMenuItem; SaveDialog1: TSaveDialog; N7: TMenuItem; Button1: TButton; RichEdit1: TRichEdit; RichEdit2: TRichEdit; Memo1: TMemo; N8: TMenuItem; N9: TMenuItem; N10: TMenuItem; N11: TMenuItem; N12: TMenuItem; BitBtn1: TBitBtn; Bevel1: TBevel; Bevel2: TBevel; N13: TMenuItem; ColorDialog1: TColorDialog; N14: TMenuItem; N15: TMenuItem; FontDialog1: TFontDialog; N16: TMenuItem; Button2: TButton; Image1: TImage; Image2: TImage; procedure N2Click (Sender: TObject); procedure N3Click (Sender: TObject); procedure N5Click (Sender: TObject); procedure FormCreate (Sender: TObject); procedure N6Click (Sender: TObject); procedure N7Click (Sender: TObject); procedure Button1Click (Sender: TObject); procedure registr; procedure zamena; procedure N9Click (Sender: TObject); procedure N10Click (Sender: TObject); procedure N11Click (Sender: TObject); procedure N12Click (Sender: TObject); procedure N13Click (Sender: TObject); procedure N15Click (Sender: TObject); procedure N16Click (Sender: TObject); procedure Button2Click (Sender: TObject); private {Private declarations} public rus:string; s1, s2, s3, a, st1:string; i, j, k, g, l, h, t, n, p, dl, count:integer; {Public declarations} end; var Form1: TForm1; EdFile:string; s1, s2, s3, a, st1, rus:string; i, j, k, g, l, h, t, n, p, dl, count:integer; implementation {$R *.dfm} procedure TForm1.N2Click (Sender: TObject); var i:integer; begin if OpenDialog1. Execute then begin EdFile:=OpenDialog1. FileName; {в переменную присваиваем имя и полный путь к файлу} RichEdit1. Lines. LoadFromFile(EdFile); memo1. Lines. LoadFromFile(EdFile); end; end; procedure tform1.zamena; label 1; label 2; var i, j, k:integer; t:string; a: char; begin for i:=0 to richedit2. Lines. Count-1 do begin t:= richedit2. Lines[i]; for j:=1 to length(t) do begin if (j=1) and (i=0) then begin t[j]:= chr (ord(t[j]) – 32); // замена строчных букв после '.' на прописные
end; if t[j]='.' then begin for k:=j+1 to length(t) do begin if t[k]<>' ' then begin a:=chr (ord(t[k]) – 32); delete (t, k, 1); insert (a, t, k); goto 2; end; end; 2: richedit2. Lines[i]:= t; end; end; end; end; procedure tform1.registr; label 1; var i, x, j, k, g:integer; f:string; begin for x:=0 to memo2. Lines. Count-1 do begin memo2. Lines[x]:=''; // очистка memo2 end; if richedit1.text<>memo1. Text then for x:=0 to memo1. Lines. Count-1 do memo1. Lines[x]:=''; // очистка memo1 if richedit1.text<>'' then for i:=0 to richedit1. Lines. Count-1 do if memo1. Lines[i]='' then if richedit1. Lines[i]<>'' then for j:=0 to memo1. Lines. Count-1 do begin memo1. Lines[j]:= richedit1. Lines[i]; // заполняем memo1 end; for j:=0 to memo1. Lines. Count-1 do memo1. Lines[j]:=lowercase (memo1. Lines[j]); // переводим текст memo1 в нижний регистр if memo1. Text<>'' then begin for g:=0 to memo1. Lines. Count-1 do memo1. Lines[g]:=lowercase (memo1. Lines[g]); // переводим текст memo1 в нижний регистр goto 1; end; 1: end; procedure TForm1.N3Click (Sender: TObject); begin if saveDialog1. Execute then begin EdFile:=SaveDialog1. FileName; // сохранение перевода memo2. Lines. SaveToFile(EdFile); if richedit2. Modified then memo2. Modified:=False; end; end.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|