Програма для перекладу текстів з трансліту

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Федеральне агентство з освіти Російської Федерації.

Південно-Уральський державний університет.

Кафедра «Інформаційно - аналітичне забезпечення управління в соціальних та економічних системах»

Курсова робота з дисципліни Програмування на мові високого рівня

«Програма для перекладу текстів з трансліту»

Виконав:

Студент групи П C-ххх

_______ Студент

"___" ____________ 2005

Перевірив:

_______ Препод

"___"____________ 2005

Челябінськ

2005

План

Опис застосування

1. Постановка завдання

2. Актуальність завдання

3. Метод рішення

4. Вхідні і вихідні дані

Опис програми

1. Загальні дані та типи.

2. Список процедур і функцій

3. Структура програми.

4. Головна форма

5. Форма «Редактор алфавіту»

6. Форма «Про програму»

7. Основні алгоритми

8. Робота з програмою, вхідні і вихідні дані

9. Опис тестових завдань

Додаток

Опис застосування

    1. Постановка завдання

Програма для перекладу текстів з трансліту на російську і навпаки. Підтримується форматування тексту, найбільш популярні системи транслітерації ГОСТ 16876-71, російсько-англійську, а також таблиці, що задаються користувачем. Програма повинна мати функцію перекладу символів тексту до верхнього і нижнього регістру, функцію підрахунку кількості символів у тексті. Завантаження тексту з буфера обміну може здійснюватися з швидкого кнопці.

    1. Актуальність завдання

Переклад тексту з кирилиці в трансліт використовується дуже часто. Від найпростішого створення nickname до розмов в IRC-каналах. Багато програм не підтримують кирилицю і доводиться вводити будь-які коментарі на трансліті. Також деякі mp 3-плеєри не підтримують кирилицю і теги доводиться писати також на трансліті. Цей спосіб кодування російських букв давно устоявся і є чіткі правила (хоча є і варіанти) набору букв. Тому в даній програмі необхідно реалізувати завантаження словника.

    1. Метод рішення

Так як програма повинна мати графічний і інтуїтивно зрозумілий інтерфейс, то для вирішення дуже підходить DELPHI. Була обрана версія 7.0. Вся програма була розбита на 3 форми: головна, форма роботи зі словниками та форма «Про програму». Весь інтерфейс був розроблений на стандартних компонентах і обробниках подій.

    1. Вхідні і вихідні дані

Вхідні і вихідні параметри можуть бути двох типів: словник і текст для перекладу. Словник - типізований файл (shortstring). Можливе збереження і завантаження словника. Текст - звичайний текстовий файл на кирилиці або трансліті (можливий переклад в обидві сторони). Результат також можна зберігати у текстовий файл. Також текст можна вводити з клавіатури у відповідні текстові поля.

Опис програми

    • Загальні дані та типи

Алфавіт перекладу вдає із себе масив змінних типу shortstring з індексами від «А» до «Я». Елементами масиву є символи в трансліті відповідної букви в кирилиці.

Array ['А' .. 'Я'] of shortstring.

Також створено безліч великих і маленьких літер кирилиці:

al_set: set of char = ['А' .. 'Я', 'Ї', 'Е'];

small_al: set of char = ['а' .. 'я', 'й', 'є'];

    • Список процедур і функцій

Функція UpCase _ R (const ch _ in: char): char повертає символ у верхньому регістрі:

Лістинг 1. Функція UpCase_R

function UpCase_R (const ch_in: char): char;

var

res: char;

begin

case ch _ in of / / перевіряє чи є параметр ch _ in російською буквою і якщо так

'Й': res: = 'Ї'; / / то замінює її на аналогічну, але в верхньому регістрі.

'Ц': res: = 'Ц';

'У': res: = 'У';

'До': res: = 'К';

'Е': res: = 'Е';

'Н': res: = 'Н';

'М': res: = 'Г';

'Ш': res: = 'Ш';

'Щ': res: = 'Щ';

'З': res: = 'З';

'Х': res: = 'Х';

'' ': Res: =' '';

'Ф': res: = 'Ф';

'И': res: = 'И';

'В': res: = 'В';

'А': res: = 'А';

'П': res: = 'П';

'Р': res: = 'Р';

'Про': res: = 'О';

'Л': res: = 'Л';

'Д': res: = 'Д';

'Ж': res: = 'Ж';

'Е': res: = 'Е';

'Я': res: = 'Я';

'Ч': res: = 'Ч';

'З': res: = 'З';

'М': res: = 'М';

'І': res: = 'І';

'Т': res: = 'Т';

'Ь': res: = 'Ь';

'Б': res: = 'Б';

'Ю': res: = 'Ю';

'Е': res: = 'Е';

else

begin

if not (ch_in in al_set) then

res: = UpCase (ch_in)

else

res: = ch_in;

end;

end;

UpCase_R: = res;

end;

Функція downcase (const ch _ in: char): char повертає символ в нижньому регістрі:

Лістинг 2. Функція downcase.

function downcase (ch_in: char): char;

var

res: char;

Begin

case ch _ in of / / перевіряє чи є параметр ch _ in російської або латинської

'Ї': res: = 'й'; / / літерою і якщо так, то повертає відповідну букву

'Ц': res: = 'ц'; / / але в верхньому регістрі.

'У': res: = 'у';

'К': res: = 'до';

'Е': res: = 'е';

'Н': res: = 'н';

'Г': res: = 'м';

'Ш': res: = 'ш';

'Щ': res: = 'щ';

'З': res: = 'з';

'Х': res: = 'х';

'' ': Res: =' '';

'Ф': res: = 'ф';

'И': res: = 'и';

'В': res: = 'в';

'А': res: = 'а';

'П': res: = 'п';

'Р': res: = 'р';

'О': res: = 'про';

'Л': res: = 'л';

'Д': res: = 'д';

'Ж': res: = 'ж';

'Е': res: = 'е';

'Я': res: = 'я';

'Ч': res: = 'ч';

'З': res: = 'з';

'М': res: = 'м';

'І': res: = 'і';

'Т': res: = 'т';

'Ь': res: = 'ь';

'Б': res: = 'б';

'Ю': res: = 'ю';

'Е': res: = 'е';

'Q': res: = 'q';

'W': res: = 'w';

'E': res: = 'e';

'R': res: = 'r';

'T': res: = 't';

'Y': res: = 'y';

'U': res: = 'u';

'I': res: = 'i';

'O': res: = 'o';

'P': res: = 'p';

'A': res: = 'a';

'S': res: = 's';

'D': res: = 'd';

'F': res: = 'f';

'G': res: = 'g';

'H': res: = 'h';

'J': res: = 'j';

'K': res: = 'k';

'L': res: = 'l';

'Z': res: = 'z';

'X': res: = 'x';

'C': res: = 'c';

'V': res: = 'v';

'B': res: = 'b';

'N': res: = 'n';

'M': res: = 'm';

else

res: = ch_in;

end;

Downcase: = res;

End;

    • Структура програми

Програма складається з трьох частин:

  • Головною форми (модуль unit _ main)

Рис 1. Головна форма

  • Форми «Про програму» (модуль unit _ about)

рис 2. Форма «Про програму»

  • Форми роботи зі словниками (модуль unit _ slov)

рис 3. Форма «Редактор алфавіту»

Головна форма завантажується автоматично та інші форми викликаються з неї. При виборі меню «Переклад -> Редактор алфавіту» викликається форма роботи з алфавітом, а при виборі «Довідка -> Про програму» викликається форма «Про програму».

    • Головна форма

Призначена для завантаження, збереження, редагування та перекладу текстів.

Містить наступні компоненти:

  • TMemo - 2шт

  • TPanel - 2 шт.

  • TMainMenu;

  • TStatusBar;

  • TLabel - 4 шт.

  • TOpenDialog

  • TSaveDialog

  • TmainMenu

  • TimageList

  • TactionList

  • TtoolBar (ToolButton - 7 шт.)

Все розташовано так, як вказано на малюнку 1.

Два TLabel вказують на напрям перекладу в полях, ще два - на кількість символів в областях введення даних. Два діалогу (TOpenDialog і TSaveDialog) для збереження і завантаження вихідного або підсумкового тексту. TMemo для введення (і відображення) поточних даних для перекладу. TMainMenu для головного меню і кнопки (ToolButton) для управління програмою (для керування полями введення і словником).

Головне меню основної форми:

    • Меню «Файл»

рис. 4. Головне меню. Пункт «Файл»

    • Меню «Правка»

рис. 5. Головне меню. Пункт «Правка»

    • Меню «Переклад»

рис. 6. Головне меню. Пункт «Переклад»

    • Меню «Довідка»

рис. 7. Головне меню. Пункт «Довідка»

Для кожного пункту меню використовуються клавіші швидкого доступу (властивість ShortCut) і піктограми (елементи ImageList). Обробка вибору кожного пункту меню проводиться в Action 'ах компонента ActionList.

Обробники подій головної форми:

При створенні форми завантажується стандартний ГОСТ'овскій словник перекладу з кирилиці в трансліт і обнуляється текст виводить кількість символів в полях.

Лістинг 3. «Оброблювач події створення головної форми»

procedure TMainForm.FormCreate (Sender: TObject);

begin

Count_1.Caption: = 'Символів: 0';

Count_2.Caption: = 'Символів: 0';

b_jo: = 'jo';

alph ['А']: = 'a';

alph ['Б']: = 'b';

alph ['В']: = 'v';

alph ['Г']: = 'g';

alph ['Д']: = 'd';

alph ['Е']: = 'e';

alph ['Ж']: = 'zh';

alph ['З']: = 'z';

alph ['І']: = 'i';

alph ['Ї']: = 'jj';

alph ['К']: = 'k';

alph ['Л']: = 'l';

alph ['М']: = 'm';

alph ['Н']: = 'n';

alph ['О']: = 'o';

alph ['П']: = 'p';

alph ['Р']: = 'r';

alph ['З']: = 's';

alph ['Т']: = 't';

alph ['У']: = 'u';

alph ['Ф']: = 'f';

alph ['Х']: = 'kh';

alph ['Ц']: = 'c';

alph ['Ч']: = 'ch';

alph ['Ш']: = 'sh';

alph ['Щ']: = 'shh';

alph ['' ']: ='''''';

alph ['И']: = 'y';

alph ['Ь']: ='''';

alph ['Е']: = 'eh';

alph ['Ю']: = 'ju';

alph ['Я']: = 'ja';

end;

Обробники подій для кнопок:

    • Кнопка (Редагувати алфавіт), подія acAlphEdit

Лістинг 4. «Оброблювач події натискання на кнопку Редагувати алфавіт»

procedure TMainForm.acAlphEditExecute (Sender: TObject);

begin

SlovarForm.show;

end;

  • Кнопка (Відкрити фаил у вікно кирилиця) acCyrOpen

Виконує діалог OpenDialog і завантажує в полі memCyr вміст файлу використовуючи при цьому обробник винятків.

Лістинг 5. "Обробник події натискання на кнопку Відкрити»

procedure TMainForm.acCyrOpenExecute (Sender: TObject);

begin

if openDialog.execute then

try

memCyr.lines.LoadFromFile (OpenDialog.FileName);

except

showmessage ('Неправильний формат фаіла !!!');

end;

end;

  • Кнопка (Зберегти текст з вікна кирилиця) acSaveCyr

Виконує діалог SaveDialog і зберігає полі memCyr у файл.

Лістинг 6. «Оброблювач події натискання на кнопку Зберегти»

procedure TMainForm.acSaveCyrExecute (Sender: TObject);

begin

if openDialog.execute then

memCyr.lines.SaveToFile (OpenDialog.FileName);

end;

  • Кнопка (Перевести з кирилиці в латиницю) acCyrToLat

Очищує поле memLat і заносить в нього текст перекладений в трансліт. Даний алгоритм буде розглянуто в частині «Основні алгоритми»

Коди обробки подій натискання кнопок збереження і завантаження для memLat (поле введення латиниця) ідентичні наведеним вищувати, за винятком вхідного і вихідного полів (memLat)

Процедури обробки подій головного меню:

  • Меню «Файл»

    • «Відкрити фаил у вікно кирилиці»

acCyrOpen

    • «Відкрити фаил у вікно латиниця»

acLatOpen

    • «Зберегти текст з вікна кирилиці»

acSaveCyr

    • «Зберегти текст з вікна латиниця»

acSaveLat

    • «Вихід»

Закриває головну форму.

Лістинг 8. «Оброблювач головного меню Файл -> Вихід»

procedure TMainForm.N4Click (Sender: TObject);

begin

MainForm.Close;

end;

  • Меню «Правка»

Містить стандартні функції управління буфером обміну і редагування тексту.

    • «Скасувати CTRL + Z» acUndo

Скасовує зміни в поточному (активному) поле для введення

Лістинг 9. «Оброблювач головного меню Правка -> Скасувати»

procedure TMainForm. acUndoExecute (Sender: TObject);

begin

if memCyr.Focused then memCyr.Undo;

if memLat.Focused then memLat.Undo;

end;

    • «Вирізати CTRL + X» acCut

Вирізає виділений текст у поточному (активному) поле для введення.

Лістинг 10. «Оброблювач головного меню Правка -> Вирізати»

procedure TMainForm.acCutExecute (Sender: TObject);

begin

if memCyr.Focused then memCyr.CutToClipboard;

if memLat.Focused then memLat.CutToClipboard;

end;

    • «Копіювати CTRL + С» acCopy

Копіює виділений текст у поточному (активному) поле для введення.

Лістинг 11. «Оброблювач головного меню Правка -> Копіювати»

procedure TMainForm.acCopyExecute (Sender: TObject);

begin

if memCyr.Focused then memCyr.CopyToClipboard;

if memLat.Focused then memLat.CopyToClipboard;

end;

    • «Вставити CTRL + V» acPaste

Вставляє текст з буфера в поточне (активне) поле для введення.

Лістинг 12. «Оброблювач головного меню Правка -> Вставить»

procedure TMainForm.acPasteExecute (Sender: TObject);

begin

if memCyr.Focused then memCyr.PasteFromClipboard;

if memLat.Focused then memLat.PasteFromClipboard;

end;

    • «Видалити CTRL + Del» acDelete

    Видаляє виділений текст з поточного (активного) поля для введення.

    Лістинг 13. «Оброблювач головного меню Правка -> Видалити»

    procedure TMainForm.acDeleteExecute (Sender: TObject);

    begin

    if MemCyr.Focused then memCyr.ClearSelection;

    if MemLat.Focused then memLat.ClearSelection;

    end;

      • «Виділити все CTRL + A»

    Виділяє весь текст у поточному (активному) поле для введення.

    Лістинг 14. «Оброблювач головного меню Правка -> Виділити все»

    procedure TMainForm.N18Click (Sender: TObject);

    begin

    if memo1.Focused then memo1.SelectAll;

    if memo2.Focused then memo2.SelectAll;

    end;

    • Меню «Переклад»

      • «Перевести з кирилиці в латиницю» acCyrToLat

    Перекладає текст з кирилиці в трансліт. Текст даної процедури буде розглянуто нижче.

      • «Перевести з латиниці в кирилицю» acLatToCyr

    Перекладає текст з трансліту в кирилицю. Текст даної процедури буде розглянуто нижче.

      • «Редагувати алфавіт» acAlphEdit

    Відображає форму редагування словника.

    • Меню «Довідка»

      • «Про програму»

    Відображає форму «Про програмі »

    Лістинг 15. «Оброблювач головного меню Довідка -> Про програму»

    procedure TMainForm.N7Click (Sender: TObject);

    begin

    AboutForm.show;

    end;

      • Форма «Редактор алфавіту»

    Дана форма призначена для завантаження, збереження і редагувати або вання словників перекладу кирилиці в трансліт.

    рис. 8. Форма «Редактора»

    На формі розташовані наступні компоненти:

    • TStringGrid;

    • TPanel;

    • TBitBtn (2 шт.);

    • TOpenDialog;

    • TSaveDialog;

    • TButton;

    Компонент TStringGrid призначений для введення і перегляду таблиці перекладу. На TPanel розташовані всі кнопки. TBitBtn - дозволяють зберігати і завантажувати словники. Діалоги TOpenDialog і TSaveDialog призначені для вибору файлів словників. TButton - застосовує поточні налаштування до глобального словника (він розташований в Unit _ main).

    Обробники подій.

    При створенні форми відбувається заповнення таблиці (SlovGrid):

    Лістинг 16. «Созань форми Редагувати алфавіт»

    procedure TSlovarForm.FormCreate (Sender: TObject);

    var

    i1: integer;

    begin

    SlovGrid.Cells [0,0]: = 'Російський';

    SlovGrid.Cells [1,0]: = 'Переклад';

    for i1: = 1 to 33 do

    begin

    SlovGrid.Cells [0, i1]: = alph_r [i1];

    if i1 = 7 then SlovGrid.Cells [1, i1]: = b_jo

    else SlovGrid.Cells [1, i1]: = alph [alph_r [i1]];

    end;

    f_name: ='';

    end;

    Оброблювач натискання на кнопку «Зберегти». Якщо користувач вибрав файл, куди зберегти новий словник, то відбувається перезапис цього файлу. У нього (як у типізований файл) записується послідовність змінних типу ShortString. Ці дані (і їх кількість) беруться з таблиці SlovGrid:

    Лістинг 17. «Натискання на кнопку Зберегти»

    procedure TSlovarForm.SveButtClick (Sender: TObject);

    var

    f: file of shortstring;

    i1: integer;

    str: shortstring;

    begin

    if savefile.execute then

    begin

    assignfile (f, SaveFile.FileName);

    f_name: = SaveFile.FileName;

    rewrite (f);

    for i1: = 1 to SlovGrid.RowCount-1 do

    begin

    str: = SlovGrid.Cells [1, i1];

    write (f, str);

    end;

    closefile (f);

    end;

    end;

    Оброблювач натискання на кнопку «Завантажити». Якщо користувач вибрав файл, звідки завантажити новий словник, то відбувається читання цього файлу. З нього (як з типізованого файлу) загружаютчя послідовність змінних типу ShortString. Ці дані записуються в таблицю SlovGrid:

    Лістинг 18. «Натискання на кнопку Завантажити»

    procedure TSlovarForm.OpenButtClick (Sender: TObject);

    var

    f: file of shortstring;

    str: shortstring;

    i1: integer;

    begin

    if openfile.execute then

    try

    assignfile (f, OpenFile.FileName);

    reset (f);

    for i1: = 1 to 33 do

    begin

    read (f, str);

    SlovGrid.Cells [1, i1]: = str;

    end;

    closefile (f);

    F_name: = OpenFile.FileName;

    except

    showmessage ('Неправильний формат фаіла !!!');

    end;

    end;

    Оброблювач натискання на кнопку «Застосувати». Змінює поточний словник (alph: array ['А' .. 'Я'] of shortstring з unit _ main) у відповідності з поточними даними з таблиці SlovGrid і пише назву словника в StatusBar головної форми.

    Лістинг 19. «Натискання на кнопку Застосувати»

    procedure TSlovarForm.ApplButtClick (Sender: TObject);

    var

    i1: integer;

    str: string;

    begin

    for i1: = 1 to SlovGrid.RowCount-1 do

    begin

    str: = SlovGrid.Cells [1, i1];

    if i1 = 7 then b_jo: = str

    else alph [alph_r [i1]]: = str;

    end;

    if f_name <>''then

    MainForm.StatusBar.Panels [1]. Text: = f_name

    else

    MainForm.StatusBar.Panels [1]. Text: = 'Змінено користувачем';

    SlovarForm.Close;

    end;

      • Форма «Про програму»

    На формі розташовано кілька Label зі зміненим властивістю Caption. Ніяких обробників подій немає.

      • Основні алгоритми

    Переклад з кирилиці в трансліт:

    Порядково для кожного рядка поля MemCyr і посимвольний для кожного символу цього рядка, програма перевіряє її входження в безліч великих або маленьких символів російського алфавіту. Якщо входження дійсно те ​​програма додає до рядка str 2 відповідні символи зі словника перекладу.

    Лістинг 20. «Переклад кирилиця -> трансліт»

    procedure TMainForm.acCyrToLatExecute (Sender: TObject);

    var

    i1, j1, i3: integer;

    str, str1, str2, st2: string;

    ch, ch2: char;

    ok1: boolean;

    begin

    MainForm. MemCyr. Clear; / / чистимо те, куди будемо писати перекладений текст

    for i 1: = 0 to MainForm. MemCyr. Lines. Count -1 do / / проходимо по всіх рядках в першому віконці

    begin

    str: = MainForm. MemCyr. Lines [i 1]; / / зчитуємо дані і Обнуляємо змінні

    str 2: ='';

    for j 1: = 1 to length (str) do / / проходимо по всіх символів в рядку

    begin

    ch: = str [j1];

    if ch in al_set then / / якщо ch - заголовна російська буква

    begin

    if UpCase_R (ch) = 'Е' then str1: = b_jo / / Е перевіряємо окремо

    else str 1: = alph [UpCase _ R (ch)]; / / А всі інші беремо з alph

    if str 1 <>''then / / Цей блок робить заголовним те,

    begin / / що повинно бути заголовним.

    if (length (str)> j1) and (str [j1 +1] in al_set) or

    (J1> 1) and (str [j1-1] in al_set) then

    for i 3: = 1 to length (str 1) do / / тут або піднімається вся літера

    (Кілька символів, наприклад SH)

    begin

    str1 [i3]: = UpCase_R (str1 [i3]);

    end

    else / / або тільки перший символ в букві (Sh)

    str1 [1]: = UpCase_R (str1 [1]);

    end;

    str2: = str2 + str1;

    end

    else if ch in small_al then / / якщо маленька російська буква

    begin

    if UpCase_R (ch) = 'Е' then str1: = b_jo

    else str1: = alph [UpCase_R (ch)];

    str 2: = str 2 + str 1;

    end

    else / / якщо не є символом російського алфавіту

    str 2: = str 2 + ch;

    end;

    MainForm. MemLat. Lines. Add (str 2); / / додаємо перекладену рядок у віконце

    з перекладом

    end; / / і все з початку (Наступний рядок)

    end;

    У додатку № 1 приводиться блок-схема цього алгоритму.

    Зворотній переклад здійснюється аналогічно прямому за винятком того, що з рядка з транслітом спочатку вибирається підрядок з довгою рівною найбільшою довжині букви в словнику трансліту (для правильної обробки символів типу «'» - «' '» і «ь» - «' '») :

    procedure TMainForm.acLatTuCyrExecute (Sender: TObject);

    const

    lat_small: set of char = ['a' .. 'z',''''];

    lat_up: set of char = ['A' .. 'Z'];

    var

    i1, j1, i3, max_l, tek_l, len: integer;

    str, str1, st2: string;

    ch: char;

    ok1, f_ok: boolean;

    function find (var st_in: string): boolean; / / Ця функція шукає в alph ['А' .. 'Я'] задану рядок

    var / / тобто намагається визначити який букві російського алфавіту відповідає введена рядок

    i2: char;

    j2, i3: integer;

    st_mod: string;

    ok: boolean;

    begin

    st _ mod: = st _ in; / / Будемо працювати з локальної змінної, щоб не зіпсувати вихідну рядок

    for j 2: = 1 to length (st _ mod) do / / зменшуємо регістр у символів в рядку

    st_mod [j2]: = downcase (st_mod [j2]);

    find: = false; / / Надаємо початкове значення результату функції

    if b _ jo = st _ mod then / / буква визначається Е окремо

    begin

    st_mod: = 'Е';

    if st_in [1] in lat_small then st_mod: = 'е'; / / перевіряємо чи повинна буква бути маленькою

    st _ in: = st _ mod; / / змінюємо вихідну на перекладену

    find: = true; / / так, ми знайшли відповідність повертаємо true

    exit; / / достроковий вихід.

    end;

    for i 2: = 'А' to 'Я' do / / а якщо не Е, то перевіряємо всі букви за алгоритмом наведеним вище

    begin

    if alph [i2] = st_mod then

    begin

    st_mod: = i2;

    if (st_in [1] in lat_up) then st_in: = st_mod;

    else st_in: = DownCase (st_mod);

    find: = true;

    exit;

    end;

    end;

    end;

    begin

    MainForm. MemCyr. Clear; / / очищаємо поле для результату

    max _ l: = length (b _ jo); / / запам'ятовуємо довжину найдовшої букви в алфавіті

    for ch: = 'А' to 'Я' do / / цикл по всіх буквах

    begin

    tek_l: = length (alph [ch]);

    if tek_l> max_l then max_l: = tek_l;

    end;

    for i1: = 0 to MainForm.MemLat.Lines.Count-1 do / / цикл порядково

    begin

    str: = MainForm.MemLat.Lines [i1];

    st 2: ='';

    str 1: ='';

    while str <>''do / / поки рядок не порожня (оброблені символи будемо видаляти)

    begin

    f _ ok: = false;

    for j 1: = max _ l downto 1 do / / намагаємося зібрати букву різної довжини

    begin

    st2: ='';

    for i3: = 1 to j1 do

    begin

    if (str [i3] in lat_small) or (str [i3] in lat_up) then

    st 2: = st 2 + str [i 3] / / якщо латинська буква тоді заносимо її в st 2!

    else if j1 = 1 then

    begin

    st 2: = str [i 3]; / / це символ не кирилиці, заносимо в рядок з результатом (st 2)

    delete (str, 1,1); / / видаляємо з вихідної

    f_ok: = true; / / обробили

    break;

    end

    else break;

    end;

    len: = length (st 2); / / запам'ятаємо довжину отриманого рядка

    if find (st 2) then / / і якщо виявиться, що вона відповідає російської букві

    begin

    delete (str, 1, len); / / видалимо її з початкового рядка

    f_ok: = true; / / обробили

    break;

    end;

    end;

    str 1: = str 1 + st 2; / / додаємо до рядка з результатом отриману букву

    if not f _ ok then

    delete (str, 1,1); / / якщо з якоїсь причини ще не видалили з вихідної, то видаляємо зараз

    end;

    MainForm. MemCyr. Lines. Add (str 1); / / і занось рядок у вікно з перекладом

    end;

    end;

      • Робота з програмою, вхідні і вихідні дані

    Для роботи програми досить виконуваного файлу. Якщо необхідні додаткові словники, то вони можуть, як додаватися до програми, так і створюватися вручну в самому додатку. Текст для перекладу може завантажуватися з файлу або вводитися з клавіатури, а результат роботи - зберігатися у файл. Це дозволяє зручніше вводити дані та обробляти результат.

      • Опис тестових завдань

    Для тестів використовувалися два уривки тексту, написаних на кирилиці. Перший з них - уривок з першого розділу книги «Біблія Delphi» Михайла Фленова:

    «Перш ніж програмувати комп'ютер, ми повинні зрозуміти, як він работает.Как говорив якийсь полководець:« Потрібно добре вивчити свого ворога !!!». Можливо, це говорив і не полководець, але це не важливо:). Кодинг - це постійна боротьба з машиною. Потрібно примушувати її робити те, що тобі потрібно. Тому будь-який програміст просто зобов'язаний знати його нутрощі. Комп'ютер складається з наступних основних компонентів: процесор, пам'ять, відеокарта, вінчестер (жорсткий диск) і різні роз'єми для підключення додаткових пристроїв. Всі ці компоненти пов'язані між собою за допомогою шлейфів і шин. »

    При перекладі цього тексту на трансліт вийшов наступний текст:

    «Prezhde chem programmirovat 'komp'juter, my dolzhny ponjat', kak on rabotaet.Kak govoril kakojj-to polkovodec:« Nuzhno khorosho izuchit 'svoego vraga !!!». Vozmozhno, ehto govoril i ne polkovodec, no ehto ne vazhno:). Koding - ehto postojannaja bor'ba s mashinojj. Nuzhno zastavljat 'ejo delat' to, chto tebe nuzhno. Poehtomu ljubojj programmist prosto objazan znat 'ego vnutrennosti. Komp'juter sostoit iz sledujushhikh osnovnykh komponentov: processor, pamjat ', videokarta, vinchester (zhjostkijj disk) i razlichnye raz''jomy dlja podkljuchenija dopolnitel'nykh ustrojjstv. Vse ehti komponenty svjazany mezhdu sobojj s pomoshh'ju shlejjfov i shin. ».

    При перекладі цього тексту назад на кирилицю, отримуємо текст ідентичний первісного, що свідчить про правильну роботу програми.

    Другий текст для тесту був узятий з книги Френка Херберта «Бог - імператор Дюни», розділ перший:

    «Я не тільки з величезним задоволенням повідомляю вам сьогодні про відкриття чудового вмісту таємного сховища з його значною колекцією рукописів, зображених на Редуланской кришталевої папері, але також горда навести вам докази на захист автентичності наших відкриттів, повідомити вам, чому ми вважаємо, що відкрили справжні щоденники Літо II, Бога Імператора. »

    Результат перекладу:

    «Ja ne tol'ko s ogromnym udovol'stviem soobshhaju vam segodnja ob otkrytii chudesnogo soderzhimogo tajjnogo khranilishha s ego znachitel'nojj kollekciejj rukopisejj, zapechatlennykh na Redulanskojj khrustal'nojj bumage, no takzhe gorda privesti vam dovody v zashhitu podlinnosti nashikh otkrytijj, soobshhit ' vam, pochemu my schitaem, chto otkryli podlinnye dnevniki Lito II, Boga Imperatora. »

    При перекладі цього тексту в кирилицю був виявлений недолік, не пов'язаний з алгоритмом програми - римські цифри. II перетворюється на ШІ, VV - у ВР і т.д.

    Додаток

    34


    Додати в блог або на сайт

    Цей текст може містити помилки.

    Програмування, комп'ютери, інформатика і кібернетика | Курсова
    155.6кб. | скачати


    Схожі роботи:
    Особливості перекладу юридичних текстів
    Дискурсивний аналіз як основа перекладу художніх текстів
    Лексичні особливості перекладу французьких науково-технічних текстів
    Система машинного перекладу текстів на прикладі системи STYLUS
    Виконання перекладу текстів застосування причастя інфінітива герундія в англійській мові
    Програма Txtprintcom - резидентна програма для швидкого і зручного друкування виборчого тексту
    Програма перекладу десяткового числа в двійкову і шістнадцяткову системи числення
    Програма Word для Windows
    Програма для анімації музичних творів
    © Усі права захищені
    написати до нас