1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАЗРАБОТКИ
1. Описание предметной области
Всемирная паутина World Wide Web (WWW) соткана из Web страниц,
которые создаются с помощью так называемого языка разметки гипертекста
HTML (HyperText Markup Language ). При разработке HTML – документа
выполняется разметка текстового документа точно так же, как это делает
редактор при помощи красного карндаша. Эти пометки служат для указания
формы представления информации, содержащейся в документе.
Специальные программы просмотра HTML – документов, которые часто называют
броузерами, служат для интерпретации файлов, размеченных по правилам языка
HTML, форматирование их в виде Web – страниц и отображении их содержимого
на экране компьютера пользователя.
Для передачи текстовой информации по сети Internet используется формат
HTML. Существует большое количество текстовых файлов, разработанных в среде
DOS, которые имеют кодировку СР-866, неудобную для обеспечения организации
документооборота путём передачи текстовой информации по сети Internet или
для создания удобных пользовательских интерфейсов в гипертекстовых
документах, сочетающий в себе кроме текста ещё и графические объекты, а
также гипертекстовые ссылки.
2. Анализ методов решения
Преобразование формата текстового файла из кодировки СР-866 в формат
HTML в кодировке СР-1251 с проверкой и исправлением букв с идентичным
написанием на русском и английском языках может осуществляться следующими
способами:
1) Частично автоматизированным (сама перекодировка осуществляется вручную, а компьютер используется для набора и редактирования текстов в стандартных редакторах) – пользователь ищет на диске нужные текстовые файлы, формат которых необходимо преобразовать, создаёт их копии, а затем поочерёдно открывает в текстовом редакторе копию каждого найденного файла и расставляет HTML-теги, выделяя в тексте встречающиеся элементы форматирования. Затем пользователь проверяет написание и исправляет слова, в которых символы кириллицы, схожие по начертанию с латинскими символами, ошибочно заменены на латинские символы, и слова, в которых латинские символы, схожие по начертанию с символами кириллицы, ошибочно заменены на символы кириллицы. Такую проверку и исправление можно осуществить, открыв файл, уже находящийся в формате HTML, например, в окне редактирования среды программирования Borland C, в котором символы кириллицы выделяются подсветкой, как недопустимые. Затем пользователь должен осуществить перекодировку полученного файла в формате HTML из кодовой страницы СР-866 в кодовую страницу СР-1251, открыв этот файл в редакторе Лексикон. Каждый символ кириллицы и символ “№” необходимо будет заменить на такой символ из таблицы ASCII, который в кодировке Windows будет выглядеть также, как исходный символ до его замены. Замену большинства символов таким образом придётся выполнять при помощи сочетаний управляющих клавиш.
Так как на диске может содержаться большое количество текстовых файлов, в тексте каждого из этих файлов содержится много элементов форматирования, а в каждом элементе форматирования содержится большое количество символов, поэтому преобразование формата текстового файла этим способом требует больших затрат времени и усилий.
2) Автоматизированным – в этом случае пользователь задаёт имя
каталога, в котором находятся текстовые файлы, и имя каталога, в который
нужно поместить создаваемые HTML-файлы. При этом преобразование формата
текстовых файлов в формат HTML, проверку написания и исправление слов, в
которых символы кириллицы, схожие по начертанию с латинскими символами,
ошибочно заменены на латинские символы, и слов, в которых латинские
символы, схожие по начертанию с символами кириллицы, ошибочно заменены на
символы кириллицы, а также перевод текста из кодировки СР-866 в кодировку
СР-1251 выполняет программа.
Для решения постановленной задачи частично автоматизированный способ не подходит, потому что он требует больших затрат времени и усилий пользователя.
Для реализации постановленной задачи подходит автоматизированный метод, но для этого нужно написать программу, работа которой основывается на использовании следующих приёмов:
1) Программа выполняет поиск текстовых файлов в кодировке СР-866 в каталоге, указанном пользователем и сохраняет на диске список имён найденных файлов. Затем программа последовательно считывает имя каждого файла из списка и выполняет для него ряд ниже перечисленных действий до тех пор, пока не будет достигнут конец списка;
2) Программа создаёт копию align.dat для считанного текстового файла.
В этой копии устраняется возможный отступ текста с левой стороны;
3) Программа копирует файл align.dat в файл frame.dat. В файле frame.dat программа размечает таблицы без разметки символами +, – ,| и *;
4) Файл frame.dat копируется в файл table.dat. В файле table.dat таблицы с разметкой (размеченные с помощью символов +, – и | ) и таблицы без разметки (размеченные с помощью символов +, – , | и *) преобразуются в таблицы в формате HTML;
5) Файл table.dat копируется в файл error.dat. В файле error.dat выполняется проверка и исправление слов, в которых символы кириллицы, схожие по начертанию с латинскими символами, ошибочно заменены на латинские символы, и слов, в которых латинские символы, схожие по начертанию с символами кириллицы, ошибочно заменены на символы кириллицы;
6) Из файла error.dat программа формирует файл в формате HTML с расширением htm, выделяя из текста элементы форматирования и сохраняя их в виде элементов HTML. Этот htm-файл помещается в каталог, указанный пользователем.
7) После того, как программа создала HTML-файл для каждого файла из списка, создаётся конфигурационный файл style.css для HTML-тегов для созданной группы htm-файлов.
3. Обзор средств программирования
Существует множество различных языков программирования, с помощью которых можно выполнить данную программу : HTML, Java Script, CGI Script и т.д.
HTML – Язык разметки гипертекста, выполняется разметка текстового документа точно так же, как это делает редактор при помощи красного карндаша. Эти пометки служат для указания формы представления информации, содержащейся в документе.
Java Skript – небольшие программы (скрипты или сценарии) пишуться на Java Skript и особым образом внедряются в HTML – код Web страниц.
CGI - Common Gateway Interface является стандартом интерфейса
(связи) внешней прикладной программы с информационным сервером типа HTTP,
Web сервер.
Обычно гипертекстовые документы, извлекаемые из WWW серверов, содержат статические данные. С помощью CGI можно создавать CGI-программы, называемые шлюзами, которые во взаимодействии с такими прикладными системами, как система управления базой данных, электронная таблица, деловая графика и др., смогут выдать на экран пользователя динамическую информацию.
4. Описание языка HTML и Java Script
1. Общие сведения
Язык разметки гипертекстовых документов HTML. Язык HTML приобрел
популярность в середине 90 годов, благодаря экспоненциальному росту сети
Интернет. HTML – язые разметки документа.ю Для просмотра такого док-та
необходимо иметь специальные прграммы, называемые броузерами. Они
интерпритируют файлы, размеченные по правилам языка HTML, форматируют их в
виде WEB – страниц и отображают содержимое на экране компьютера. Одной из
основных возможностей языка HTML, которая даже отражена в самом названии,
является возможность создания ссылок на другие док-ты.
Управляющими командами в языке HTML являются тэги (с английского Tag –ярлык
признак).
Тэги заключины между символами “” и управляют отображением текста,
при этом сами не отображаются на экране. Название тэгов, а так же их
параметров можно записывать на любом регистре. Большинство управляющих
команд HTML используются попарно, т.е. для определениятэга, назовем его
“открывающим” должен быть соответствующий “закрывающий” тэг. Первым тэгом,
с которого следует начинать описание документов HTML, является тэг
< HTML >. Он должен всегда начинать описание документа, а завершить
описание документа должен тэг . Эти тэги обозначают, что
находящиеся между ними строки представляют единый HTML- документ.
1.4.2.1. Элементы языка гипертекста HTML. и .
Эти тэги сообщают браузеру, что текст между ними следует интерпритировать
как HTML-текст. Поскольку документы HTML чисто текстовые, тэг говорит о том, что файл написан на языке HTML (HyperTextMarkupLanguage -
Язык гипертекстовой разметки).
Создавая новый HTML-файл, в первую очередь необходимо ввести данную пару
тэгов. Для этого наберите в самом начале текста. Затем наберите его
напарника - - в конце. Теперь весь текст, написанный между ними,
будет принят браузерам за текст HTML. Вы заметили, что во втором тэге
присутствует символ "/"? Правый слэш (/) используется для обозначения
закрывающихся тэгов. Большинство HTML-тэгов парные: один открывает
(), другой закрывает (). Их действие распространяется только
на тот текст, который находится между ними.
Элемент предназначается для выделения той части документа,
которая будет визуализирована для пользователя. Он имеет как начальный, так
и конечный теги. Начальный тег может иметь несколько атрибутов .
Вложенные атрибуты элемента
BACKGROUND
Атрибут задает графическое изображение, которое как черепица заполнит фон документа. Файл с изображением должен быть сохранен в формате GIFилиJPEG .
Синтаксис:
В данном случае файл с изображением фона лучше размещать в том же каталоге,
что и сам файл, тогда (URL) и (путь) указывать не нужно.
BGCOLOR
Этот атрибут задает цвет фона документа при помощи шестнадцатеричных значений интенсивности цветов RGB , или при помощи строчного литерала, соответствующего названию цвета.
Синтаксис: или
TEXT
Этот атрибут задает используемый по умолчанию цвет текста, который не является гиперссылкой. По умолчанию такой текст будет черным.
Синтаксис:
LINK
Этот атрибут задает цвет гиперссылки, в большинстве браузеров он задан по умолчанию темно синим.
Синтаксис:
ALINK
Этот атрибут задает цвет активной гиперссылки, он меняет цвет гиперссылки в момент щелчка по ней мышью, не желательно задавать ему цвет фона по понятным причинам.
Синтаксис:
VLINK
Этот атрибут задает цвет посещенной гиперссылки, не желательно задавать ему цвет фона и цвет атрибута LINK по понятным причинам.
Синтаксис:
BGPROPERTIES
Этот атрибут задает свойства фонового изображения. В данный момент браузерами поддерживается единственное его значение fixed, запрещающее скроллинг изображения.
Синтаксис:
TOPMARGIN
Этот атрибут задает верхнюю границу страницы в пикселях.
Синтаксис:
BOTTOMMARGIN
Этот атрибут задает нижнюю границу страницы в пикселах.
Синтаксис:
LEFTMARGIN
Этот атрибут задает границу страницы в пикселях слева.
Синтаксис:
RIGHTMARGIN
Этот атрибут задает границу страницы в пикселях справа.
Синтаксис:
Элементы языка Java Script.
( Массивы
Массивы - это группа элементов одинакового типа. Объявление массива
имеет два формата:
спецификатор-типа описатель [константное - выражение];
спецификатор-типа описатель [ ];
Описатель - это идентификатор массива .
Спецификатор-типа задает тип элементов объявляемого массива.
Элементами массива не могут быть функции и элементы типа void.
Константное-выражение в квадратных скобках задает количество элементов
массива. В языке СИ определены только одномерные массивы, но можно
определить и многомерные массивы. Первый элемент массива имеет индекс
равный 0.
– Переменные
Основная форма объявления переменных имеет вид:
спецификатор типа описатель [=инициатор] [,описатель [= инициатор] ]...
Описатель - идентификатор переменной.
Спецификатор типа - тип объявляемой переменной.
Инициатор - задает начальное значение или список начальных значений
переменной при объявлении.
Переменная может быть объявлена как немодифицируемая. Это достигается добавлением ключевого слова const к спецификатору-типа.
1.4.2.2. Выражения и присваивания
( Выражения
Комбинация знаков операций и операндов, результатом которой является
определенное значение, называется выражением. Знаки операций определяют
действия, которые должны быть выполнены над операндами. Каждый операнд в
выражении может быть выражением. Значение выражения зависит от расположения
знаков операций и круглых скобок в выражении, а также от приоритета
выполнения операций. Тип выражения вычисления можно изменить, используя
конструкцию “приведение”, имеющую следующий вид:
(тип) выражение
( Операции.
По количеству операндов, участвующих в операции, операции
подразделяются на унарные, бинарные и тернарные.
В языке Си имеются следующие унарные операции:
- арифметическое отрицание (отрицание и дополнение);
~ побитовое логическое отрицание (дополнение);
! логическое отрицание;
* разадресация (косвенная адресация);
& вычисление адреса;
+ унарный плюс;
++ увеличение (инкремент);
-- уменьшение (декремент);
Унарные операции выполняются справа налево.
В отличие от унарных, бинарные операции, список которых приведен в табл.2,
выполняются слева направо.
Таблица 2
|Знак |Операция |Группа операций |
|операции | | |
|* |Умножение | |
| | |Мультипликативные |
|/ |Деление | |
|% |Остаток от деления | |
|+ |Сложение |Аддитивные |
|- |Вычитание | |
|> |Сдвиг вправо | |
|< |Меньше | |
| | |Операции отношения |
| |Больше | |
|>= |Больше или равно | |
|== |Равно | |
|!= |Не равно | |
|& |Поразрядное И | |
| | |Поразрядные операции |
|| |Поразрядное ИЛИ | |
|^ |Поразрядное исключающее ИЛИ | |
|&& |Логическое И |Логические операции |
||| |Логическое ИЛИ | |
|= |Присваивание | |
| | | |
| | | |
| | | |
| | | |
| | |Операции присвоения |
|*= |Умножение с присваиванием | |
|/= |Деление с присваиванием | |
|%= |Остаток от деления с присваиванием | |
|-= |Вычитание с присваиванием | |
|+= |Сложение с присваиванием | |
|= |Сдвиг вправо с присваиванием | |
|&= |Поразрядное И с присваиванием | |
||= |Поразрядное ИЛИ с присваиванием | |
|^= |Поразрядное исключающее ИЛИ с | |
| |присваиванием | |
Операции ( ) и [ ] имеют высший приоритет. Операция условие ?: имеет вид:
(выр 1)?(выр 2):(выр 3)
Вычисляется выражение (выр 1). Если это выражение имеет ненулевое значение,
то вычисляется выражение (выр 2), а если выражение (выр 1) имеет нулевое
значение, то вычисляется выражение (выр 3).
1.4.2.3. Операторы
( Оператор if
Формат оператора:
if (выражение) оператор-1; [else оператор-2;]
Выполнение оператора if начинается с вычисления выражения.
Далее выполнение осуществляется по следующей схеме:
- если выражение истинно (т.е. отлично от 0), то выполняется оператор-1.
- если выражение ложно (т.е. равно 0),то выполняется оператор-2.
- если выражение ложно и отсутствует оператор-2 (в квадратные скобки
заключена необязательная конструкция), то выполняется следующий за if
оператор.
Допускается использование вложенных операторов if.
( Оператор switch
Оператор switch предназначен для организации выбора из множества различных вариантов. Формат оператора следующий: switch ( выражение )
{ [объявление]
:
[ case константное-выражение1]: [ список-операторов1]
[ case константное-выражение2]: [ список-операторов2]
:
[ default: [ список операторов ]]
}
Схема выполнения оператора switch следующая:
- вычисляется выражение в круглых скобках;
- вычисленные значения последовательно сравниваются с константными
выражениями, следующими за ключевыми словами case;
- если одно из константных выражений совпадает со значением выражения, то
управление передается на оператор, помеченный соответствующим ключевым
словом case;
- если ни одно из константных выражений не равно выражению, то управление
передается на оператор, помеченный ключевым словом default, а в случае его
отсутствия управление передается на следующий после switch оператор.
( Оператор break
Оператор break обеспечивает прекращение выполнения самого внутреннего из объединяющих его операторов switch, do, for, while. После выполнения оператора break управление передается оператору, следующему за прерванным.
( Оператор for
Оператор for - это наиболее общий способ организации цикла. Он имеет
следующий формат:
for ( выражение 1 ; выражение 2 ; выражение 3 ) тело;
Схема выполнения оператора for:
1. Вычисляется выражение 1.
2. Вычисляется выражение 2.
3. Если значения выражения 2 отлично от нуля (истина), выполняется тело
цикла, вычисляется выражение 3 и осуществляется переход к пункту 2, если
выражение 2 равно нулю (ложь), то управление передается на оператор,
следующий за оператором for.
( Оператор while
Оператор цикла while называется циклом с предусловием и имеет следующий
формат:
while (выражение) тело ;
Схема выполнения оператора while следующая:
1. Вычисляется выражение.
2. Если выражение ложно, то выполнение оператора while заканчивается и
выполняется следующий по порядку оператор. Если выражение истинно, то
выполняется тело оператора while.
3. Процесс повторяется с пункта 1.
( Оператор do while
Оператор цикла do while называется оператором цикла с постусловием и
используется в тех случаях, когда необходимо выполнить тело цикла хотя бы
один раз. Формат оператора имеет следующий вид:
do тело while (выражение);
Схема выполнения оператора do while :
1. Выполняется тело цикла (которое может быть составным оператором).
2. Вычисляется выражение.
3. Если выражение ложно, то выполнение оператора do while заканчивается и
выполняется следующий по порядку оператор. Если выражение истинно, то
выполнение оператора продолжается с пункта 1.
( Оператор continue
Оператор continue, как и оператор break, используется только внутри операторов цикла, но в отличие от него выполнение программы продолжается не с оператора, следующего за прерванным оператором, а с начала прерванного оператора. Формат оператора следующий: continue;
( Оператор return
Оператор return завершает выполнение функции, в которой он задан, и
возвращает управление в вызывающую функцию, в точку, непосредственно
следующую за вызовом. Функция main передает управление операционной
системе. Формат оператора:
return [выражение] ;
Значение выражения, если оно задано, возвращается в вызывающую функцию в
качестве значения вызываемой функции. Если выражение опущено, то
возвращаемое значение не определено. Выражение может быть заключено в
круглые скобки, хотя их наличие не обязательно.
1.4.2.4. Встроенные элементы
( Функции printf() и scanf()
Функции printf() и scanf() осуществляют форматированный ввод и вывод на консоль. Форматированный ввод и вывод означает, что функции могут читать и выводить данные в разном формате, которым можно управлять.
Функция printf() имеет прототип в файле STDIO.H int printf(char *управляющая_строка, …);
Управляющая строка содержит два типа информации: символы, которые непосредственно выводятся на экран, и команды формата (спецификаторы формата), определяющие, как выводить аргументы. Команда формата начинается с символа % за которым следует код формата. scanf() – основная функция ввода с консоли. Она предназначена для ввода данных любого встроенного типа и автоматически преобразует введенное число в заданный формат. Прототип из файла STDIO.H имеет вид int scanf(char *управляющая_строка, …);
Управляющая строка содержит три вида символов: спецификаторы формата, пробелы и другие символы. Команды или спецификаторы формата начинаются с символа %.
( Функция getch()
Функция getch() производит буферизованный ввод символа, но не выводит символ на экран. Ее прототип находится в файле CONIO.H.
( Функции работы со строками
Для работы со строками существует библиотека, описание которой находится в файле STRING.H. Наиболее часто используемые функции: strcpy(), strcat(), strlen()