- •Вариант 1 Разработка транслятора языка программирования midi- файлов
- •Вариант 3 Разработка программы "Интерпретатор выражений алгебры комплексных чисел"
- •Вариант 4 Разработка программы "Транслятор выражений в обратную польскую запись"
- •Вариант 5 Разработка программы-интерпретатора специализированного языка программирования для операций над массивами
- •Вариант 7 Разработка программы "Интерпретатор арифметики вещественных чисел"
- •Вариант 8 Разработка программы "Интерпретатор выражений булевой алгебры"
- •Вариант 9 Разработка программы "Калькулятор алгебраических матричных выражений"
- •Вариант 10 Разработка программы "Текстовый редактор с подсветкой синтаксиса"
- •Вариант 11 Разработка программы "Графический командный процессор"
- •Вариант 12 Разработка программы "Интерпретатор операций над множествами"
- •Вариант 13 Разработка программы "Командный файловый процессор"
- •Вариант 14 Разработка программы "Конвертер форматированного текста"
- •Вариант 15 Разработка программы "Интерпретатор побитовых логических операций"
- •Вариант 16 Разработка программы "Командный калькулятор арифметических выражений"
- •Вариант 17 Разработка программы-интерпретатора упрощенного языка программирования
- •Вариант 18 Разработка программы-интерпретатора упрощенного языка программирования
Вариант 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