1. ЛАБОРАТОРНАЯ РАБОТА "ГЕНЕРАТОР ПРОГРАММ ОБРАБОТКИ МЕНЮ" 1.1. Цель работы Ознакомиться с генерацией исходного текста программ на языке высокого уровня, создать собственный вариант генератора программ обработки меню. 1.2. Методические указания по выполнению лабораторной ра- боты "Генератор программ обработки меню" 1.2.1. Структура программ обработки меню Использование меню в программировании делает программное обеспечение более удобным и приятным в работе, требует меньшей квалификации от пользователей, позволяет сравнительно просто объединять отдельные модули в пакеты программ. Большинство современных программных пакетов имеет развитые средства обра- ботки меню. Типичная программа обработки меню выполняет следующие действия: выдача меню на экран дисплея; ввод выбранного режима меню; выполнение программных действий, предусмотренных для данного режима (пункта) меню; возврат на выдачу меню или за- вершение программы. Меню состоит из отдельных пунктов, режимов, которые имеют соответствующие наименования или сообщения. Пункты меню могут быть пронумерованы и располагаться как по горизонтали, так и по вертикали. Выбор пункта меню может осуществляться путем ввода номера пункта или путем выделения пункта меню курсором или цветом. При выборе определенного пункта выполняется, как правило, соответствующая процедура. Если меню содержит несколько вло- женных уровней, то процедура обработки меню низшего уровня (подменю) строится по той же структуре, что и главная програм- ма. После выполнения процедуры обычно вновь выдается меню это- го же уровня и обработка повторяется. Для выхода из меню дан- ного уровня и перехода в меню высшего уровня или завершения программы предусматривается ввод номера пункта 0 или нажатие клавиши ESC. При попытке ввести номер пункта, отсутствующий в меню, выдается сообщение об ошибке. При выборе пункта меню клавишами управления курсором может быть организовано цикли- ческое движение по меню: при прямом движении по меню за последним пунктом следует первый, а при обратном движении за первым пунктом следует последний. 1.2.2. Генерация программ обработки меню Генерация программ представляет собой хорошее средство повышения производительности труда программистов, уменьшения количества ошибок, сокращения сроков разработки и внедрения программного обеспечения. В большинстве случаев используются специализированные генераторы, ориентированные на определенный класс программ, например, генераторы программ отчетов, ввода данных, обработки запросов. Генерация осуществляется путем объединения постоянных частей текста программы (шаблона или прототипа) с переменной информацией, задаваемой в заказе на генерацию. Прототип программы может содержаться в отдельном файле или может быть размещен в тексте программы-генератора. В зака- зе на генерацию программы обработки меню необходимо указать для каждого пункта меню его наименование и имя процедуры, вы- зываемой при выборе этого пункта. Текст процедуры может быть помещен в генерируемую программу из библиотеки или из заказа на генерацию. При отсутствии готовой процедуры обработки одно- го пункта меню может автоматически генерироваться программная заглушка. Текст сгенерированной программы на языке программи- рования может быть подвергнут дополнительной доработке и кор- ректировке обычными средствами. 1.2.3. Пример генератора программ обработки меню В качестве основы для выполнения лабораторной работы предлагается вариант программы, генерирующий простейшие прог- раммы обработки меню. Программа GENMENU2 "Генератор программ обработки меню" написана на языке Паскаль (прил. 1), вводит с клавиатуры заказ на генерацию, использует два входных файла: "Библиотека макрорасширений" с текстами процедур обработки выбранного пункта меню (не реализовано, предусмотрено на даль- нейшее расширение функций генератора) и файл F.DAT, содержащий имена процедур и наименования предопределенных пунктов меню. В выходной файл (по умолчанию PROGMENU.PAS) записывается сгене- рированная программа. В начале выполнения программы запрашивается имя файла библиотеки макрорасширений (для ответа нажать клавишу ENTER) и имя файла для сгенерированной программы (расширение файла .PAS указывать обязательно). При вводе заказа на генерацию номера пунктов задаются программой, начиная с 1. Пункт номер 0 соответствует выходу из меню и генерируется автоматически. Сначала вводятся предопре- деленные (накопленные в результате разработки других программ) пункты меню из файла F.DAT, для чего необходимо указать номер записи файла. Завершение использования файла F.DAT - ввод но- мера 0. Затем вводятся данные с клавиатуры в две строки по каждому пункту меню: первая строка - имя процедуры и вторая строка - наименование пункта меню. Для завершения ввода необ- ходимо набрать 0 в качестве имени процедуры. В конце программы программы выдается сообщение о том, ку- да записана сгенерированная программа. 1.3. Порядок выполнения работы 1.3.1. Выполнить постановку задачи: в создаваемый генера- тор программ необходимо добавить не менее трех функций из предлагаемых для модификации генератора. 1.3.2. Взяв за основу простейший вариант программы-гене- ратора, скорректировать его с учетом постановки задачи. 1.3.3. Отладить полученный генератор таким образом, чтобы генерируемые программы выполнялись без дополнительной доработ- ки их текста. 1.3.4. В отчет по лабораторной работе поместить постанов- ку задачи, блок-схему и текст программы-генератора; контроль- ный пример должен отражать процесс генерации программ, текст сгенерированной программы обработки меню и результаты ее рабо- ты. В заключение описать обнаруженные ошибки в первоначальном варианте генератора и дать предложения по улучшению генератора программ обработки меню. 1.4. Задания Для расширения возможностей генератора програм обработки меню предлагается реализовать следующие дополнительные функ- ции, предусматривающие: 1. Создание многоуровневого меню. 2. Выбор варианта с помощью клавиш управления курсором и выделения цветом. 3. Сообщение об ошибочном ответе с задержкой. 4. Выдачу звуковых сигналов при ошибочных действиях и при выборе режима меню. 5. Использование библиотеки макрорасширений для хранения текстов процедур обработки режимов меню вместо программных заглушек. 6. Использование внешних процедур. 7. Настройку генератора перед работой (выбор цвета, вари- антов генерации и т.д.). 1.5. Контрольные вопросы 1. Что представляет собой процесс генерации программ? 2. Варианты программ обработки меню. 3. Практические примеры программ обработки меню. 4. Библиотеки макрорасширений и библиотеки модулей прог- рамм.