Транслітерація україномовних текстів латинськими літерами
Міністерство освіти і науки України
Курсова робота
З дисципліни "Проблемно-орієнтовані мови програмування"
на тему
Транслітерація україномовних текстів латинськими літерами
Львів-2011
Зміст
Вступ
1. Огляд літератури
2. Формулювання задачі
3. Алгоритм розв’язання комісії
4. Програмні реалізації алгоритму
5. Інструкція користувачеві програми
6. Контрольні приклади та аналіз результатів їх реалізації
Висновки
Література
Додатки
Вступ
У наші дні комп’ютерні технології відіграють неабияку роль у житті людства! Вони допомагають йому справлятись із найрізноманітнішими і найскладнішими завданнями набагато швидше й простіше, ніж це було б потрібно робити без комп’ютера.
Так, він за долі секунди обчислить найскладніші формули, а користувачу потрібно всього-на-всього ввести потрібні дані! Не потрібно більше величезних архівних шафок – нею слугує жорсткий диск комп’ютера, на якому дуже легко знайти потрібну інформацію. А мультимедійні плеєри, мобільні телефони роблять наше життя також і цікавішим.
Дуже часто ми пишемо повідомлення на мобільному телефоні своїм друзям, але дехто пише їх незвичайним способом – записує українські слова, але літерами з латинської розкладки, тому що таких символів у 1 смс вміщається вдвічі більше! Називаємо таку манеру писання сленгом, а насправді ми використовуємо транслітерацію – одну з категорій, яку вивчає мовознавство.
Транслітерація (транс і лат. litera — буква) — механічна передача тексту й окремих слів, які записані однією графічною системою, засобами іншої графічної системи при другорядній ролі звукової точності, тобто передача однієї писемності літерами іншої.
Транслітерація відрізняється від транскрипції тим, що має на меті точну фонетичну або фонологічну передачу звуків. Найкраща транслітерація така, яка дозволяє легко вернутися при потребі до оригінальної системи письма.
1. Огляд літератури
програма транслітерація текст графічна
Система транслітерування українських текстів з кирилиці на латиницю згідно з узагальненими вимогами міжнародних стандартів, а також українських науковців має такі властивості:
► нормативність (повна відповідність системи до українського правопису, що може зробити її невідокремною частиною цього мовного закону)
► безпомилковість (система не вносить у тексти інформаційних помилок)
► системність (побудованість на основі правил, закладених у таблицю транслітерації)
► універсальність (здатність системи вирішувати різноманітні задачі міжнародного обмінювання текстовою інформацією)
► літерооснащеність (забезпеченість комп’ютерного варіанту системи потрібним набором латиничних літер з діакритиками)
► одномовність (зорієнтованість лише на одну мову – українську)
► традиційність (ураховано традиційні фонетичні та естетичні норми української мови, світові традиції вживання латинської абетки, створення транслітераційних пар, найближчих за вимовою і міжнародним транскрибуванням).
► повнота (здатність системи странслітерувати будь-які тексти, зокрема зі скороченнями та чужомовними запозиченнями)
► однозначність (кожну з однакових українських літер передає тою самою унікальною латинською літерою)
► зворотність (здатність точно відтворювати кириличний текст із странслітерованого латиничного)
► запрограмовність (придатність до розроблення програмних засобів та комп’ютерного застосовування системи)
► простота (здатність швидко странслітерувати текст автоматичними засобами чи власноручно).
Вимога до користувачів: безпосередність (не будувати слова через мову-посередника).
У проекті ДСТУ враховано вимоги міжнародного стандарту ISO 9: 1995(E) щодо створення національного стандарту міжнародного рівня.
Транслітерування відбувається згідно з транслітераційною таблицею, яка складається з транслітераційних пар, де пара – це кирилична літера і відповідна до неї латинична літера, що мають однакову чи подібну вимову. Серед 32-х латиничних літер- відповідників є 8 з діакритиками (є-ê, ж-ž, ї-ï, ч-č, ш-š, щ-ŝ, ю-û, я-â) та 24 вибрані з основної латиниці. Добиранню пар допоміг аналіз стандартних систем транслітерування (ISO/R9-1968(Е), ISO 9:1995(Е), ГОСТ 7.79-2000 СИБИД, ГОСТ 16876-71, проекту ДСТУ -2002, та численних пропозицій щодо модифікації систем.
Усі транслітераційні пари зі згаданих стандартів, які спотворюють українське письмо на латиниці (в-v, г-g, ґ-ġ, и-i, і-ì, х-h), відкинено й замінено на прийнятніші (в-w, г-h, ґ-g, и-y, і-i, х-x).
Транслітераційна таблиця
Номер |
Літера кирилиці |
Літера латиниці |
1 |
а, А |
a, A |
2 |
б, Б |
b, B |
3 |
в, В |
w, W |
4 |
г, Г |
h, H |
5 |
ґ, ґ |
g, G |
6 |
д, Д |
d, D |
7 |
е, Е |
e, E |
8 |
є, Є |
ê, Ê |
9 |
ж, Ж |
ž, Ž |
10 |
з, З |
z, Z |
11 |
и, И |
y, Y |
12 |
і, І |
i, I |
13 |
ї, Ї |
ï, Ï |
14 |
й, Й |
j, J |
15 |
к, К |
k, K |
16 |
л, Л |
l, L |
17 |
м, М |
m, M |
18 |
н, Н |
n, N |
19 |
о, О |
o, O |
20 |
п, П |
p, P |
21 |
р, Р |
r, R |
22 |
с, С |
s, S |
23 |
т, Т |
t, T |
24 |
у, У |
u, U |
25 |
ф, Ф |
f, F |
26 |
х, Х |
x, X |
27 |
ц, Ц |
c, C |
28 |
ч, Ч |
č, Č |
29 |
ш, Ш |
š, Š |
30 |
щ, Щ |
ŝ, Ŝ |
31 |
ю, Ю |
û, Û |
32 |
я, Я |
â, Â |
33 |
ь |
' |
34 |
’ (апостроф) |
’ (апостроф) |
Систему найпростіше зреалізувати на сучасному комп’ютері, де в таблиці символів є достатній набір латиничних літер з діакритиками.
Систему транслітерування порекомендовано вживати скрізь, де це можливо, оскільки вона найпростіша, безпомилкова й дотримується українського правопису.
2. Формулювання задачі
Дана програма повинна транслітерувати заданий текст. Також я повинен реалізувати у цій програмі введення тексту з клавіатури або зчитування його із файлу. Для реалізації цієї програми я використовую усі можливі оператори мови С, і для читання з клавіатури «пропатчую» систему
Метою розв’язання цієї задачі є запис україномовних слів латинськими літерами. В результаті реалізації користувач повинен отримати транслітерацію потрібного йому тексту. Текст може бути найрізноманітнішим.
3. Програмні реалізації алгоритму
Характеристика програми:
Назва – Translit.cpp
Розмір – 6,42 КБ
Кількість рядків - 270
Призначення програми:
Дана задача відноситься до класу задач по роботі з базами даних.
Метою розв’язання даної задачі є пошук конкретного запису в базі даних, а також редагування бази даних.
Вхідна інформація
Вхідною інформацією для програми є текстовий файл, що містить речення, записані українською мовою
Вхідний файл має назву - input.txt;
Його розмір – 1 Кб
Результуюча інформація
При виконанні програма виводить слова або речення,записані латинськими буквами. При будь-якій зміні букви чи слова у файлі при перезапуску програми змінюється наш результат.
Структура програми
Заголовні файли:
stdio.h - стандартний заголовочний файл введення/виведення даних;
stdlib.h - заголовочний файл стандартної бібліотеки загального призначення;
string.h - заготовочний файл, що містить функції для роботи з символьними рядками
conio.h – заголовочний файл, що містить функції для консольного введення/виведення даних
Функції
1.int main (void) – Заголовна функція програми. Параметрів не має.
2.ktl (char s) - функція, яка призначена для транслітерації тексту, введеного з клавіатури.
3. ktl1(char s) – функція, яка призначена транслітерації тексту, який зчитується із файлу.
Таблиця ідентифікаторів програми
*fp/*fp1 – вказівники з типом FILE, що вказують на файли, з якого читається/в який записується база даних.
k - змінна типу int, що неодноразово оголошувалась, як локальна змінна в різних функціях, в якості лічильників циклу, міток та ін.
с- змінна типу char, з якою ми пов’язуємо у програмі зчитані або введені символи.
Середовище реалізації програм
Операційна система – MS-DOS;
Для транслітерації тексту, введеного з клавіатури, застосував українізатор середовища UKRDOS_2.
Необхідні допоміжні технічні пристрої – монітор, клавіатура.
Технологія виконання та відлагодження програм
Для написання програми використовувалось середовище програмування BORLAND C . Для відлагодження та компіляції програми використовувались такі його можливості, як:
Compile(Alt+F9) – компіляція програми;
Run(Ctrl+F9) - виконання програми;
Trace into(F7) – покрокове виконання програми;
4. Програмні реалізації алгоритму
БЛОК-СХЕМА ПРОГРАМИ
Вводимо текст з клавіатури і транслітеруємо його.
Виводимо новий текст на екран, повертаємось до меню.
Записуємо результат у файлі і повертаємось до меню
якщо 1
якщо 2
якщо 4
якщо 3
5. Інструкція користувачеві
Користувач повинен запустити програму. Після чого на робочому столі з’явиться вікно:
У вікні користувач побачить пункти меню, після чого він повинен натиснути на одну із клавіш 1,2,3 або 4, і зможе потрапити в один із пунктів. Наприклад користувач натиснув клавішу 1:
На екран виводиться текст, який міститься у файлі, але у нечитабельному вигляді, що спричинене неспівпаданням кодування у Windows XP та у Borland C.
Повернувшись в робоче меню, користувач повинен знову ввести одну із клавіш наприклад користувач натискає клавішу 2:
Користувачу пропонується ввести з клавіатури речення українською мовою. Для цього потрібно натиснути клавішу Right Shift.
Після натискання клавіші Enter на екрані з’явиться транслітерація введеного вище тексту.
Користувач може знову повернутись у меню програми, і, наприклад, натиснути клавішу 4. На екран буде виведено:
6. Контрольні приклади та аналіз їх реалізації
Для відлагодження та перевірки працездатності програми я використовував такі тестові набори:
У файл input.txt занесено такий текст: «Курсову роботу виконав Гелеш Юрій».
У файл output.txt буде внесено: «Kyrsovy roboty vukonav Helew @rij».
2. З клавіатури введено: «Сесія майже закінчилась!».
Отримаємо результат: «Sesi9 maj*e zakin4ulas6!».
За результатами тестів які я проводив можна сказати, що програма працює якісно і швидко та без жодної помилки.
Висновок
В результаті роботи над завданням було сформовано кінцевий продукт – програму: транс літератор україномовних текстів латинськими літерами.
В ній реалізовані наступні можливості:
Можливість виконувати транслітерацію, зчитуючи текст із файлу і записуючи його у вихідний файл.
Можливість виконувати транслітерацію через ввід тексту з клавіатури.
В програмі реалізовано зручний та зрозумілий інтерфейс.
Дана програма для зчитування тексту з клавіатури потребує підключення спеціального драйвера UKRDOS_2.
Література
Шпак З.Я. - Мова програмування С
Керниган Б., Ритчи Д. - Мова програмування Си
Інтернет - http://uk.wikipedia.org/wiki/Транслітерація
Інтернет - http://lp.edu.ua/tc.terminology/TK_translit.htm
Інтернет - http://lukom.org/Pages/Blog.aspx/transliteration
Додаток
Текст програми
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
char ktl1(char s);
char ktl(char s);
void main(void)
{
m:
clrscr();
printf("\t\t\t Љ“ђ‘Ћ‚Ђ ђЋЃЋ’Ђ ⥬г:\n\n");
printf("\t\t\"’а б«iвҐа жiп гЄа х®¬®ўЁе ⥪бвiў\"\n\n");
printf("\n 1)ђ®Ў®в § д ©« ¬Ё");
printf("\n 2)‚ўҐ¤Ґп § Є« ўi вгаЁ");
printf("\n 3)‚Ёеi¤ § Їа®Ја ¬Ё");
printf("\n 4)Џi¤Є §Є Є®аЁбв㢠祢i=)");
printf("\n\n\t‚ўҐ¤iвм ®¬Ґа ЇгЄвг ");
int k;
switch(k=getch()){
case '1': clrscr();
char c,res1;
FILE *fp,*fp1;
if((fp=fopen("E:\\input.txt","r"))==NULL)
{
puts("‚еi¤Ё© д ©« Ґ § ©¤Ґ®");getch();
exit(1);
}
if((fp1=fopen("E:\\output.txt","w"))==NULL)
{
puts("ERROR");getch();
exit(1);
}
puts("’ҐЄбв, й® ¬iбвЁўбп г д ©«i\n");
rewind(fp);
while(!feof(fp))
{
c=fgetc(fp);
putc(c,stdout);
res1=ktl1(c);
fputc(res1,fp1);
}
fclose(fp1);
fclose(fp);
getch();
goto m;
break;
case '2':
clrscr();
printf("‚ўҐ¤iвм аҐзҐп гЄа. «iвҐа ¬Ё: ");
char x[256];
gets(x);
for(int i=0;i<strlen(x);i++){
x[i]=ktl(x[i]);
}
printf("\n’а б«iвҐа жiп: %s",x);
getch();
goto m;
break;
case '3': exit(0);
case '4': clrscr();
puts("\n\t„«п а®Ў®вЁ § д ©« ¬Ё Ї®ваiЎ® бЇҐаиг г Є®аҐi ¤ЁбЄ ‘ бвў®аЁвЁ");
puts("д ©« § i¬ҐҐ¬ include.txt, ўЁеi¤Ё© д ©« Ўг¤Ґ б⢮८ Їа®Ја ¬®о");
puts(" ўв®¬ вЁз®. ЏаЁ ўўҐ¤Ґi ⥪бвг i§ Є« ўi вгаЁ вЁбгвЁ Right Shift.");
getch();
break;
}
}
char ktl(char s)
{
char res;
switch (s) {
case '0': res = '0';break;
case '1': res = '1';break;
case '2': res = '2';break;
case '3': res = '3';break;
case '4': res = '4';break;
case '5': res = '5';break;
case '6': res = '6';break;
case '7': res = '7';break;
case '8': res = '8';break;
case '9': res = '9';break;
case 'Ђ': res = 'A';break;
case 'Ѓ': res = 'B';break;
case '‚': res = 'V';break;
case 'ѓ': res = 'H';break;
case '„': res = 'D';break;
case '…': res = 'E';break;
case 'т': res = 'р';break;
case '†': res = '*';break;
case '‡': res = 'Z';break;
case 'I': res = 'I';break;
case 'ф': res = '|';break;
case '‰': res = 'J';break;
case 'Љ': res = 'K';break;
case '‹': res = 'L';break;
case 'Њ': res = 'M';break;
case 'Ќ': res = 'N';break;
case 'Ћ': res = 'O';break;
case 'Џ': res = 'P';break;
case 'ђ': res = 'R';break;
case '‘': res = 'S';break;
case '’': res = 'T';break;
case '“': res = 'Y';break;
case '”': res = 'F';break;
case '•': res = 'X';break;
case '–': res = 'C';break;
case '—': res = '4';break;
case '': res = 'W';break;
case '™': res = '#';break;
case 'ћ': res = '@';break;
case 'џ': res = '9';break;
case ' ': res = 'a';break;
case 'Ў': res = 'b';break;
case 'ў': res = 'v';break;
case 'Ј': res = 'h';break;
case '¤': res = 'd';break;
case 'Ґ': res = 'e';break;
case 'у': res = 'с';break;
case '¦': res = '*';break;
case '§': res = 'z';break;
case 'Ё': res = 'u';break;
case 'i': res = 'i';break;
case 'х': res = '|';break;
case '©': res = 'j';break;
case 'Є': res = 'k';break;
case '«': res = 'l';break;
case '¬': res = 'm';break;
case '': res = 'n';break;
case '®': res = 'o';break;
case 'Ї': res = 'p';break;
case 'а': res = 'r';break;
case 'б': res = 's';break;
case 'в': res = 't';break;
case 'г': res = 'y';break;
case 'д': res = 'f';break;
case 'е': res = 'x';break;
case 'ж': res = 'c';break;
case 'з': res = '4';break;
case 'и': res = 'w';break;
case 'й': res = '#';break;
case 'м': res = '6';break;
case 'о': res = '@';break;
case 'п': res = '9';break;
case ' ': res = ' ';break;
case ',': res = ',';break;
case '.': res = '.';break;
case '-': res = '-';break;
case ':': res = ':';break;
case ';': res = ';';break;
case '?': res = '?';break;
case '!': res = '!';break;
default: res = NULL;
}
return res;
}
char ktl1(char s)
{
char res1;
switch(s){
case '0': res1 = '0';break;
case '1': res1 = '1';break;
case '2': res1 = '2';break;
case '3': res1 = '3';break;
case '4': res1 = '4';break;
case '5': res1 = '5';break;
case '6': res1 = '6';break;
case '7': res1 = '7';break;
case '8': res1 = '8';break;
case '9': res1 = '9';break;
case 'А': res1 = 'A';break;
case 'Б': res1 = 'B';break;
case 'В': res1 = 'V';break;
case 'Г': res1 = 'H';break;
case 'Д': res1 = 'D';break;
case 'Е': res1 = 'E';break;
case 'Є': res1 = 'Ё';break;
case 'Ж': res1 = '*';break;
case 'З': res1 = 'Z';break;
case 'І': res1 = 'I';break;
case 'Ї': res1 = '|';break;
case 'Й': res1 = 'J';break;
case 'К': res1 = 'K';break;
case 'Л': res1 = 'L';break;
case 'М': res1 = 'M';break;
case 'Н': res1 = 'N';break;
case 'О': res1 = 'O';break;
case 'П': res1 = 'P';break;
case 'Р': res1 = 'R';break;
case 'С': res1 = 'S';break;
case 'Т': res1 = 'T';break;
case 'У': res1 = 'Y';break;
case 'Ф': res1 = 'F';break;
case 'Х': res1 = 'X';break;
case 'Ц': res1 = 'C';break;
case 'Ч': res1 = '4';break;
case 'Ш': res1 = 'W';break;
case 'Щ': res1 = '#';break;
case 'Ю': res1 = '@';break;
case 'Я': res1 = '9';break;
case 'а': res1 = 'a';break;
case 'б': res1 = 'b';break;
case 'в': res1 = 'v';break;
case 'г': res1 = 'h';break;
case 'д': res1 = 'd';break;
case 'е': res1 = 'e';break;
case 'є': res1 = 'ё';break;
case 'ж': res1 = '*';break;
case 'з': res1 = 'z';break;
case 'и': res1 = 'u';break;
case 'і': res1 = 'i';break;
case 'ї': res1 = '|';break;
case 'й': res1 = 'j';break;
case 'к': res1 = 'k';break;
case 'л': res1 = 'l';break;
case 'м': res1 = 'm';break;
case 'н': res1 = 'n';break;
case 'о': res1 = 'o';break;
case 'п': res1 = 'p';break;
case 'р': res1 = 'r';break;
case 'с': res1 = 's';break;
case 'т': res1 = 't';break;
case 'у': res1 = 'y';break;
case 'ф': res1 = 'f';break;
case 'х': res1 = 'x';break;
case 'ц': res1 = 'c';break;
case 'ч': res1 = '4';break;
case 'ш': res1 = 'w';break;
case 'щ': res1 = '#';break;
case 'ь': res1 = '6';break;
case 'ю': res1 = 'ў';break;
case 'я': res1 = '9';break;
case ' ': res1 = ' ';break;
case ',': res1 = ',';break;
case '.': res1 = '.';break;
case '-': res1 = '-';break;
case ':': res1 = ':';break;
case ';': res1 = ';';break;
case '?': res1 = '?';break;
case '!': res1 = '!';break;
default: res1=NULL;
}
return res1;
}