- •Вариант 1 Разработка транслятора языка программирования midi- файлов
- •Вариант 3 Разработка программы "Интерпретатор выражений алгебры комплексных чисел"
- •Вариант 4 Разработка программы "Транслятор выражений в обратную польскую запись"
- •Вариант 5 Разработка программы-интерпретатора специализированного языка программирования для операций над массивами
- •Вариант 7 Разработка программы "Интерпретатор арифметики вещественных чисел"
- •Вариант 8 Разработка программы "Интерпретатор выражений булевой алгебры"
- •Вариант 9 Разработка программы "Калькулятор алгебраических матричных выражений"
- •Вариант 10 Разработка программы "Текстовый редактор с подсветкой синтаксиса"
- •Вариант 11 Разработка программы "Графический командный процессор"
- •Вариант 12 Разработка программы "Интерпретатор операций над множествами"
- •Вариант 13 Разработка программы "Командный файловый процессор"
- •Вариант 14 Разработка программы "Конвертер форматированного текста"
- •Вариант 15 Разработка программы "Интерпретатор побитовых логических операций"
- •Вариант 16 Разработка программы "Командный калькулятор арифметических выражений"
- •Вариант 17 Разработка программы-интерпретатора упрощенного языка программирования
- •Вариант 18 Разработка программы-интерпретатора упрощенного языка программирования
Вариант 1 Разработка транслятора языка программирования midi- файлов
Программа получает на вход файл с текстом программы на языке программирования MIDI-файлов. Если в тексте программы нет грамматических, синтаксических и смысловых ошибок, компилятор генерирует MIDI-потока как на выходе секвенсора (MID-файл).
Структура программы состоит из двух секций:
<Секция настроек>
<Тело программы>
Секция настроек содержит команды задания скорости звучания и программирование аккордов:
1) задание скорости звучания (метроном).
bpm = число_ударов_в_минуту
Длительность четвертной ноты – 1 секунда. На одну секунду приходится bpm/60 ударов.
2) задание аккордов
ИмяАккорда<ноты через запятую>
Имя аккорда может содержать латинские буквы и цифры, должно начинаться всегда с большой буквы.
Ноты обозначаются малыми латинскими буквами:
c – до; d – ре; e – ми; f – фа; g – соль; a – ля; b – си.
Производные нот обозначаются только диезами #. Октавы обозначаются по номерам: 1–большая октава, 2– малая октава, 3 – первая октава, 4 – вторая октава, 5 – третья октава, 6 – четвертая октава, и т.д. до 8.
При обозначении нот после имени ноты ставится диез и номер октавы. Например, До первой октавы обозначается c3, ля-бемоль второй октавы – g#4. Громкость (динамика) нот при нажатии не учитывается.
В аккорде может быть до 8 одновременно нажатых нот.
Тело программы состоит из отдельных партий инструментов, исполняемых последовательно друг за другом. Партия записывается так:
НомерКанала–ИмяИнструмента{ последовательность нот и аккордов }
Номер канала от 0 до 15. Имя инструмента – стандартное
Последовательность нот и аккордов представляет собой запись имен нот, аккордов и пауз, разделенных пробелами.
Обозначение нот см. в п.2, обозначение аккордов – имена аккордов, определенных в секции настроек. После каждой ноты или аккорда задается длительность звучания: одна восьмая ♪ – никак не обзначается (по умолчанию), четвертная – тире (-), половина – равенство (=), целая – два равенства (==). Пауза обозначаются буквой Р, за которой указывается длительность.
Например, песенка про Чижика-пыжика будет записана так:
1-piano{ c3 c3 d3 d3 e3 e3 f3- e3 e3 d3 d3 c3 c3 c3-}
Внутри последовательности нот и аккордов, составляющих партию инструмента, допускается использовать неименованные аккорды вида: < ноты через запятую > длительность. И секции, для многократного повторения предыдущего фрагмента:
{ последовательность нот и аккордов }:число_повторений
Песенку про чижика можно переписать так:
1-piano{ {c3}:2 {d3}:2 {e3}:2 f3- {e3}:2 {d3}:2 {c3}:2 c3-}
В тексте программы допускаются комментарии от // до конца строки.
Вариант 2
Разработка программы
"Калькулятор скобочных арифметических выражений"
Программа получает на вход строку с арифметическим выражением. Операндами выражения являются вещественные числа и целые числа. Запись целых чисел допускается в десятичной, 16-ричной или двоичной системах счисления. Запись вещественных чисел допускается в формате с фиксированной запятой (например 12.34) и в экспоненциальной форме (например, 0.1234е+2).
В выражении могут быть использованы операции:
унарные: унарный минус, модуль числа;
бинарные: +, – , *, / (частное), % (остаток от целочисленного деления), ^ (возведение в степень)
Очередность операций может регулироваться скобками ( ).
Если выражение содержит лексические ошибки, выдается сообщение об типе ошибке. Если ошибок нет, программа выводит на экран результат вычисления выражения.
Например, 1) на вход передана строка "–12.5*(2Fh+1001b)", результат вычислений "–700".
2) на вход передана строка "56.3h+–8", сообщения об ошибках: а) недопустимый формат шестнадцатеричного числа "56.3h"; б) после знака "+" должно стоять число или "(".