4.3 Выводы по работе
В данной работе были изучены некоторые аспекты конструирования и построения переводчика с английского языка на русский язык.
4.4 Результаты работы программы
В представленной работе был разработан переводчик с английского языка на русский язык. В нем присутствуют функции сохранения перевода и добавления новых слов в словарь.
Результаты работы программы представлены на рисунках 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.
... учитывать сразу несколько теоретических моделей, т.е. использовать комплексную модель перевода, объединяющую различные принципы и аспекты моделирования перевода, что приводит к целостному восприятию художественного текста и адекватной передаче исходного содержания средствами ПЯ. 4. При переводе текстов художественных произведений, признанных шедеврами мировой литературы и представляющих большую ...
... все возможности разрабатываемой программы, и использовалось объектно-ориентированное программирование. 2 Постановка задачи Темой проекта является составление программы – переводчика текста (по типу Lingvo). Так как данная задача относится к разделу обучающих программ, то, кроме собственно переводчика, в программу была включена дополнительная функция – Tutor (« ...
... выявлению не только универсальных типологических экспликаторов модального значения побуждения, но и идеоэтнических (национально-специфических) особенностей языковой картины мира. ГЛАВА II. Способы выражения побудительной модальности в английском и русском языках II.1 Способы выражения прямых побудительных высказываний Прямые побудительные акты в русском языке составляют большую долю ...
... при переводе является замена прилагательного существительным или наречием. [Левицкая, Фитерман, цит. раб., 20] Она была по-настоящему красива She was a real beauty При устном переводе с русского языка на английский немалую трудность представляют собой замены отглагольного существительного глаголом, и наоборот – глагола отглагольным существительным. В английском языке имена ...
0 комментариев