Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Результаты работы программы

 

В представленной работе был разработан переводчик с английского языка на русский язык. В нем присутствуют функции сохранения перевода и добавления новых слов в словарь.

Результаты работы программы представлены на рисунках 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...