49066 (Создание программы-переводчика текстов с английского на русский язык), страница 2

2016-07-30СтудИзба

Описание файла

Документ из архива "Создание программы-переводчика текстов с английского на русский язык", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "49066"

Текст 2 страницы из документа "49066"

Рисунок 6 – Результаты работы программы «Польская запись»

4. Работа на тему «Переводчик»

4.1 Техническое задание на разработку программы

Написать программу, при помощи которой можно переводить несложные тексты с английского языка. Программа должна загружать файлы с текстом и словарем из оболочки или путем передачи имен файлов как параметров командной сроки и выдавать файл с переводом.

4.2 Описание программы

Входной язык

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

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

Лексемами входного языка в данной работе являются слова английского алфавита, т.е. входными данными является текст на английском языке. Текст может как загружаться из текстового файла, так и вводиться пользователем с клавиатуры. Форма входных данных приведена на рис. 7.

Рисунок 7 – Форма входных данных для программы «Переводчик»

Внутренний язык

В качестве внутреннего языка для данной работы был выбран ObjectPascal, который используется в среде программирования Delphi. Этот язык использует принципы объектно-ориентированного и визуального программирования.

Язык ObjectPascal является одним из высокоразвитых языков объектно-ориентированного программирования. И среди других, например, таких как Visual Basic или Visual C++, отличается простотой программного кода, достаточным количеством литературы по этому языку.

Объектно-ориентированное программирование (ООП) – это методика разработки программ, в основе которой лежит понятие объект. Объект – это некоторая структура, соответствующая объекту реального мира, его поведению. Задача, решаемая с использованием методики ООП, описывается в терминах объектов и операций над ними, а программа при таком подходе представляет собой набор объектов и связей между ними.

По сравнению с традиционными способами программирования ООП обладает рядом преимуществ. Главное из них заключается в том, что эта концепция в наибольшей степени соответствует внутренней логике функционирования операционной системы (ОС) Windows. Программа, состоящая из отдельных объектов, отлично приспособлена к реагированию на события, происходящие в ОС. К другим преимуществам ООП можно отнести большую надежность кода и возможность повторного использования отработанных объектов.

Delphi – это комбинация нескольких важнейших технологий:

  • Высокопроизводительный компилятор в машинный код

  • Объектно-ориентированная модель компонент

  • Визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов

  • Масштабируемые средства для построения баз данных

Программирование в Delphi строится на тесном взаимодействии двух процессов:

• процесса конструирования визуального проявления программы (т.е. ее Windows-окна),

• процесса написания кода, придающего элементам этого окна и программе в целом необходимую функциональность.

Основные преимущества среды программирования Delphi:

– Простота языка позволяет быстро его освоить и создавать сложные программы;

– Развитые средства представления структур данных обеспечивают удобство работы, как с числовой, так и с символьной и битовой информацией;

– Объектно-ориентированное программирование (ООП) в визуальной среде.

В процессе построения приложения разработчик выбирает из палитры компонент готовые компоненты как художник, делающий крупные мазки кистью. Еще до компиляции он видит результаты своей работы – после подключения к источнику данных их можно видеть отображенными на форме, можно перемещаться по данным, представлять их в том или ином виде. В этом смысле проектирование в Delphi мало чем отличается от проектирования в интерпретирующей среде, однако после выполнения компиляции мы получаем код, который исполняется в 10–20 раз быстрее, чем тоже самое, сделанное при помощи интерпретатора. Кроме того, компилятор компилятору рознь, в Delphi компиляция производится непосредственно в родной машинный код, в то время как существуют компиляторы, превращающие программу в так называемый p-код, который затем интерпретируется виртуальной p-машиной. Это не может не сказаться на фактическом быстродействии готового приложения.

Основной упор этой модели в Delphi делается на максимальном реиспользовании кода. Это позволяет разработчикам строить приложения весьма быстро из заранее подготовленных объектов, а также дает им возможность создавать свои собственные объекты для среды Delphi. Никаких ограничений по типам объектов, которые могут создавать разработчики, не существует.

Выходной язык

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

Лексемами выходного языка являются слова на русском языке, т.е. для данной программы выходными данными является текст на русском языке. Форма выходных данных приведена ниже (рисунок 8).

Рисунок 8 – Форма выходных данных для программы «Переводчик»

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

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.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5138
Авторов
на СтудИзбе
443
Средний доход
с одного платного файла
Обучение Подробнее