рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Инструкция программиста

Работа сделанна в 2004 году

Инструкция программиста - Курсовой Проект, раздел Связь, - 2004 год - Латинизация кириллицы Инструкция Программиста. Данная Программа Предназначена Для Латинизации Транс...

Инструкция программиста. Данная программа предназначена для латинизации транслитерации кириллицы. Программа представляет собой проект, состоящий из трех файлов menu.cpp, translit.cpp, test.сpp. Причем для ее работы необходимы следующие файлы один из файлов словарей DictT.txt или DictP.txt, входной файл с текстом для перевода source.txt, файл для вывода result.txt, которые задаются в командной строке последний файл является не обязательным аргументом командной строки.

Menu.cpp модуль проекта, включающий в себя функции остальных файлов. Предназначен для создания текстового диалога с пользователем путем выбора команды из списка команд меню. Содержит следующие функции void translit char, char, char int test void usage char name void mainint argc, char argv. -void translit char, char, char Функция, реализующая латинизацию кириллицы, находится в файле translit.cppсм. ниже. Ее аргументами являются указатели на имена файлов, имеющиеся в командной строке.

Ничего не возвращает. -int test пдробное описание данной функции приведено ниже Функция, осуществляющая тестирование транслитерации путем сравнивания двух файлов один содержит текст латинизации данного приложения, второй создавался в ручную. Функция ничего не получает, возвращает результат сравнения двух файлов 1-файлы одинаковы 0-файлы различны. -void usage char name Получает указатель на имя исполнимого файла.

Используется в помощь пользователю для работы с командной строкой задания аргументов командной строки, где обязательно должны быть указаны исполняемый файл, словарь, файл для перевода, необязательным аргументом является файл для вывода. Если в командной строке не указан хотя бы один из параметров, функция выдает сообщение об ошибке Используйте Translit.exe словарь файлдляперевода переведенный файл - void mainint argc, char argv Функция использует аргументы командной строки.

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

Функция проверяет все ли обязательные аргументы указаны в командной строке, если нет, то выдается сообщение об ошибке, описанной вышеusage. При наличии всех необходимых файлов проверяется присутствие файла для вывода. Если его имя написано в командной строке, то он открывается для записи выходного потока. Выделяются окна для каждого из пунктов меню с заданием цвета текстаWHITE и местонахождения на экране. Причем при активизации какого-либо пункта меню цвет текста меняетсяREDданная часть функции осуществляется с помощью переключателя.

Производится очистка буфера ввода-вывода с клавиатуры, так как при нажатии некоторых клавиш в буфер записываются два числа 0 и расширенный код, совпадающий, как правило, со scan-кодом клавиши. Далее определяется какая клавиша была нажата, посредством этого осуществляется перемещение по пунктам меню по кругу, если были нажаты стрелки вверх, вниз выход из программы- ESC вход в пункт меню-ENTER. Причем при нажатии последней клавиши на экране выделяется окно для вывода информации About Программа Translit, осуществляет транслитерацию.

Автор Пашкова Ольга, группа Р-220б. Help Пользуйтесь клавишами стрелки вверх, вниз, а также Enter, для входа в пункт меню. Translit выполняется функция translit, описанная выше. Test выполняется функция test, описанная выше. Exit осуществляется выход из программы. Translit cpp - модуль, непосредственно осуществляющий транслитерацию. Имеет макроопределение define chunk 10 для минимального количества структур, используется в функции bukvosochdividedick char d, int count Содержит структуру bukvosoch, элементами которой являются подстрока слева от - русские буквы в словаре, подстрока справа от - латинские буквы в словаре и длина key в байтах.

Содержит следующие функции char readdick char filename bukvosoch dividedick char d, int count int sortf const void a, const void b void preparedickbukvosoch w, int count void translitchar dict, char text, char output. -char readdick char filename Получает указатель на имя файла словаря.

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

В отсутствии ошибки происходит считывание содержимого файла в выделенную область памяти, причем в конец файла приписывается нуль с целью предохраниться от мусора. Закрывается словарь, пришедший в функцию. Так как считанный файл представляет собой одну строку, для дальнейшей работы необходимо разбить ее на подстроки. -bukvosoch dividedick char d, int count Аргументы указатель на область памяти, содержащей считанный файл, указатель на число структур, полученных после выполнения функции.

Возвращает массив структур. Выделяется память, размером в chunk структур bukvosoch, так как изначально неизвестно какой обьем памяти понадобится. Если нет свободной памяти, то выдается сообщение об ошибке Нет памяти При удачном выделении памяти определяется длина файла. В цикле for проверяется каждый символ строки. При обнаружении n asci-кода ENTER заменяется на нуль, причем каждая такая замена учитывается счетчиком k. Если их количество превысило chunk-1получающийся массив структур начинается с нулевого элемента, то производится изменение размера ранее выделенной памяти перевыделение памяти до размера nchunk, где n- число перевыделений. В случае отсутствии памяти появляется сообщение об ошибке, указанной выше, и освобождается ранее выделенный блок динамически распределяемой памяти, функция возвращает NULL. Данная функция представляет каждую структуру виде строки русских символов key, остальные ее элементы приравнивает к нулю. Определение числа получившихся структур осуществляется так k1. -int sortf const void a, const void b Является аргументом функции qsort. Получает два указателя с квалификатором типа-const, т.е. имеющих постоянное значение доступны только для чтения.

Осуществляет сравнение элементов key структур по длине и возвращает результат сравнения положительное число, 0, отрицательное число. -void preparedickbukvosoch w, int count Получаем массив структур и число структур в массиве число элементов массива. Функция ничего не возвращает.

Циклом for осуществляется проверка словаря на корректность.

При обнаружении следующих ошибок хотя бы одна структура не имеет в структуре отсутствует элемент key или value программа выдает сообщение, указывая ошибочную запись с номером соответствующей строки Предупреждение 7 строчка словаря вv записана некорректно Структура с ошибкой обнуляется. Подстрока после найденного - обозначается элементом структуры value, определяется и значение keylen. После этого производится сортировка структур по длине key при использовании функции сравнения, определенной выше, описание функции qsort производится в пункте Некоторые функции из HELPa. -void translitchar dict, char text, char output Получает указатели на имена файлов, указанных в командной строке.

Ничего не возвращает. Функция проверяет наличие всех обязательных аргументов в командной строке и существование указанных файлов. При обнаружении ошибки заканчивает свою работусоответствующее сообщение выдает функция usage, содержащаяся в модульном файле Menu.cpp. Если пользователь указал файл для вывода, то он открывается для записи, при неудачном выполнении операции выдается сообщение Ошибка при открытии файла для выходного потока Осуществляется считывание словаря в память readdick, производится разделение полученной строки в памяти на подстроки-структурыdividedick, затем каждая строка представляется в виде элементов структурыpreparedick.

При выполнении этих трех шагов возможны сообщения Ошибка при чтении словаря Ошибка при разбиении словаря нет памяти. при этом функция завершает свою работу.

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

Если key был найден, то соответствующий элемент структуры value записывается в output файл и или выводится на экран, а окошко будет передвинуто на число равное keylen транслитерация происходит в бесконечном цикле.

Если окошко снова заполнилось нулями, то выходим из цикла. Производится закрытие файлов и очистка динамической памяти. Test.сpp - модуль, осуществляющий тестирование транслитерации. void translitchar, char, char int test. Включает в себя прототип функции translit, описанной выше. Причем имена файлов прописываются в функции, обязательно наличие всех файлов. Функция ничего не получает, возвращает результат сравнения двух файлов 1-файлы одинаковы 0-файлы различны. Открываются для чтения файлы, записанные в функции fopen tresult.txt, tcorrect.txt. При невозможности открытия на экран выводится сообщение об ошибке Ошибка при открытии файлаов.

В противном случае файлы считываются в буфер и производится посимвольное сравнение двух областей памяти. Как только будет достигнут конец каждого файла, функция завершит свою работу. Некоторые функции из HELPa - FILE f open const char filename, const char mode открывает файл, на имя которого указывает filename, в режиме зазываемом mode и связывает его с протоколом. Указатель на поток является значением, возвращаемым функцией char strchr const char str, intc ищет в строке str первое вхождение символа с. -voidmemset void s, int c, unsigned n записывает во все байты области памяти s значение с. Длина области s равна n байт fread void buf, sizet size, sizet sizebl, FILE fp считывает sizet sizebl количество блоков из fp в buf, размером sizet size. Возвращает количество считанных блоков, даже если считалась половина блока. -int strncmp const char str1, const char str2, int kol сравнивает части строк str1 и str2, причем рассматривая str1 str2 равен нулю str1 str2, и положителен если str1 str2 void memmove roid dest, const void src, int n копирует блок длиной n байтов из src в dest, возвращает указатель dest. -void qsortvoid base, sizet nelem, sizet width, intfcmpconst void p1,const void p2 функция быстрой сортировки массива.

Параметры base- указатель на начало массива сортируемых элементов адрес нулевого элемента массива, nelem-количество сортируемых элементов в массиве, width -размер элемента массива в байтах, fcmp -указатель на функцию сравнения. Функция ничего не возвращает. -int feof FILE stream проверяет, достигнут ли конец файла, связан с потоком stream.

ТЕСТИРОВАНИЕ Как говорилось ранее, тестирование программы осуществляется при выборе пункта меню Test. Производится сравнивание посимвольно двух файлов первым является файл с произведенным транслитом данным приложением, второй был произведен в результате транслитерации вручную.

Тестирование прошло удачно и на экране появилось сообщение Тест удачно пройден.

Также для тестирования были смоделирована ситуациямодификация в функции translit, при которой не верно была произведена транслитерация. При этом программа выдало сообщение Тест не пройден.

– Конец работы –

Эта тема принадлежит разделу:

Латинизация кириллицы

Теоретическая часть Транслит замещение букв одного языка другими на основании фонетического созвучия. Например, русское словосочетание РТФ пишется так RTF. Почему же возникло это… Это явление существует до сих пор, так как многие русские, уезжая из России обычно не бегут с собой русские…

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Инструкция программиста

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

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

Инструкция пользователя
Инструкция пользователя. Данное приложение предназначено для латинизации транслитерации кириллицы. Включает в себя проект Translit.prj, содержащий три файла menu.cpp, translit.cpp, test.сpp,

ТЕКСТ ПРОГРАММЫ
ТЕКСТ ПРОГРАММЫ. Menu.cpp include stdio.h include conio.h include io.h include alloc.h include stdlib.h include process.h void translitchar, char, char int test void usagechar name printfИспользуйт

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги