Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Варианты 2010.doc
Скачиваний:
3
Добавлен:
28.08.2019
Размер:
141.31 Кб
Скачать

Вариант 14 Разработка программы "Конвертер форматированного текста"

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

Метасимволы отличаются от основного текста тем, что заключаются в фигурные скобки {}. Если фигурная скобка является значащим символом основного текста, она записывается дважды {{ и }}.

Входной текст состоит из описаний секций. Формат описания секции:

Заголовок_секции_1

Текст секции

Заголовок_секции имеет формат:

{SECT col=число_столбцов_на_странице, line=число_строк_на_странице,

indent= число_пробелов_в_отступе_абзаца, align=тип_выравнивания_абзаца}

Параметры col, line, indent могут следовать в любом порядке. Тип_выравнивания_абзаца может принимать значения: L (по левому краю), R (по правому краю), С (по центру) и W (по ширине).

Абзацы в основном тексте разделяются символом конца строки (код 10).

В основном тексте допускается использовать следующие метасимволы (они действуют вплоть до следующего подобного метасимвола, отменяющего действия предыдущего):

{col=число_столбцов_на_странице} – изменить ширину текста

{line=число_строк_на_странице} - изменить размер страницы

{indent= число_пробелов_в_отступе_абзаца} – изменить отступ

{align=тип_выравнивания_абзаца} – изменить тип выравнивания

При форматировании текста программа-конвертер преобразует основной текст в соответствии с параметрами форматирования. Текст каждого абзаца (записанный в виде "длинной" строки) разбивается на отдельные строки в соответствии с текущей шириной страницы и выравниванием. В начале каждого абзаца добавляются пробелы, определенные параметром indent. При выравнивании текста добавляются пробелы между словами. В конце каждой страницы добавляется символ с кодом 12 ("перевод страницы"). Этот же символ добавляется в начале каждой секции (кроме первой).

Для создания таблиц используются метасимволы:

описания заголовка

{TABLE col=число_столбцов, width1=ширина_столбца_1, width2=ширина_столбца_2,…

и так все столбцы, align1=тип_выравнивания_столбца1,

align2= тип_выравнивания_столбца2,… и так далее }

Параметры widthN и alignN могут следовать в любом порядке.

описания ячеек

Для разделения содержимого ячеек используется метасимвол {|}.

При форматировании текста "обводка" таблиц делается с помощью символов псевдографики (коды в альтернативной кодировке DOS 179, 180, 191–197, 217, 218).

Вариант 15 Разработка программы "Интерпретатор побитовых логических операций"

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

Текст может содержать следующие команды (команды разделяются точкой с запятой):

1) Объявление переменной с присвоением начального значения

Имя_переменной = значение;

Размер переменных – 16 бит (2 байта). Числовое значение можно задавать в двоичной, десятичной, восьмеричной и шестнадцатеричной системах.

2) Объявление переменной с присвоением ей результата выражения

Имя_переменной = выражение;

Выражение может включать в себя имена ранее объявленных переменных, числа (в 2-, 8-, 10-, 16-ичных системах счисления) и знаки побитовых операций:

AND – побитовое И

OR – побитовое ИЛИ

XOR – побитовое исключающее ИЛИ

NOT – побитовая инверсия

(выражение1 << выражение2) – сдвиг влево двоичного представления числа (выражение1) на заданное число бит (выражение2). Освобождающиеся разряды заполняются нулями.

(выражение1 >> выражение2) – то же, но сдвиг вправо.

(выражение1 <* выражение2) – циклический сдвиг влево двоичного представления числа (выражение1) на заданное число бит (выражение2).

(выражение1 *> выражение2) – то же, но циклический сдвиг вправо.

SET( выражение1, выражение2 ) – (Set Bit) установить в двоичном представлении числа выражение1 в «1» бит с номером, определяемым выражением2.

CL( выражение1, выражение2 ) – (Clear Bit) обнулить в двоичном представлении числа выражение1 бит с номером, определяемым выражением2.

( ) – круглые скобки задают приоритет операций.

Перечисленные выше ключевые слова (AND, OR и пр.) и знаки операций (сдвиги) носят рекомендательный характер. Можно заменить их на более удобное обозначение.

3) Вывод на экран

PRINT( строка для вывода );

Строка для вывода может состоять из операндов, разделенных запятой: строк символов в кавычках “…”, имен переменных и выражений, составленных по правилам из п.2. Числовые значения переменных или выражений выводятся в двоичной системе.

4) Комментарий – правила записи комментариев определяются вами самостоятельно.

Пример программы:

A = 0101b; //значение А задано в двоичной системе

B = 11d; //значение задано в 10-тичной системе

A = SET(A,1); // A = 0111b

B = (A XOR 000100b) AND 0FFh;//B=(00111 XOR 000100)AND 11111111) = 00000011

PRINT( “Результат =”, A );

В результате на экране должен появиться текст: Результат =00000000 00000011