Программа
USES Crt; { Подключение модуля Crt }
VAR Exit:boolean; { Флаг "Выход" }
FUNCTION Menu:byte; { Функция вывода меню и получения ответа }
Const QuantityMenuPoint=4; { Количество пунктов меню }
ExitPoint=QuantityMenuPoint; { Пункт меню "Выход" }
MaxLengthMenuPoint=21; { Максимальная длина пункта меню }
MenuList:array[1..QuantityMenuPoint] of string[MaxLengthMenuPoint] =
{ Список пунктов меню }
('[1] Первый пункт меню',
'[2] Второй пункт меню',
'[3] Третий пункт меню',
'[4] ВЫХОД ');
Var MenuMeter:integer; { Счетчик }
Point:integer; { Текущий пункт меню }
Begin
ClrScr; { Очистка экрана }
for MenuMeter:=1 to QuantityMenuPoint do WriteLn(MenuList[MenuMeter]);
{ Цикл прорисовки меню }
repeat { Цикл чтения клавиатуры }
Point:=Ord(ReadKey); { Чтение клавиатуры }
if Point<>27 { Если нажатая клавиша не Esc, }
then Point:=Point-Ord('0') { то - вычисление введенного пункта меню }
else Point:=ExitPoint { иначе - переопределение пункта под "Выход" }
until (0<Point) and (Point<=QuantityMenuPoint);
{ Выход из цикла при пролучении корректного ответа }
{ Определение значения функции: }
if Point=ExitPoint then Menu:=255
else Menu:=Point;
ClrScr { Очистка экрана }
End;
BEGIN
Exit:=FALSE; { Сброс флага "Выход" }
repeat { Цикл работы программы }
case Menu of { Выбор действия по ответу на меню }
1:;
2:;
3:;
255:Exit:=TRUE { Подъем флага "Выход" }
end
until Exit;
END.
СХЕМА ФУНКЦИИ "Menu"
***************
* *
* П У С К *
* *
***************
:
***************** ┌─
* * │
* * │
* ClrScr *∙∙∙∙∙∙∙∙∙∙│ Очистка экрана
* * │
* * │
***************** └─
:
:
***************** ┌─
* * │ Инициализация
* * │
* MenuMeter:=1 *∙∙∙∙∙∙∙∙∙∙│ счетчика
* * │
* * │ цикла
***************** └─
:
:
:∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙.
: :
: :
: ***************** ┌─
: * * │ Переопределение
: * MenuMeter:= * │
: * *∙∙∙∙∙│ счетчика
: * MenuMeter+1 * │
: * * │ цикла
: ***************** └─
: :
: :
: *****************
: Вывод
: * *
: пункта
: * *
: меню
: *****************
: :
* :
* * MenuMeter>QuantityMenuPoint :
* * :
* * Нет :
* *∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
* *
* *
* *
*
: Да
:
:
:
:∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙.
: :
: :
: :
***************** ┌─ :
│ :
* Point:= * │ Чтение :
∙∙∙∙∙∙∙∙∙∙│ :
* Ord(ReadKey) * │ клавиатуры :
│ :
***************** └─ :
: :
: :
: :
: :
: :
* :
* * :
* * :
* * Да :
* Point<>27 *∙∙∙∙∙∙∙∙∙∙∙. :
* * : :
* * : :
* * : :
* : :
: Нет : :
: : :
: : :
***************** ***************** ┌─ :
* * * * │ Вычисление :
* MenuMeter:= * * MenuMeter:= * │ введенного :
* * * *∙∙∙∙│ пункта :
* ExitPoint * * Point-Ord('0')* │ меню :
* * * * │ :
***************** ***************** └─ :
: : :
:∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙' :
: :
: :
: :
* :
* * (0<Point) and (Point<=QuantityMenuPoint) :
* * :
* * Нет :
* *∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
* *
* *
* *
*
: Да
:
:
:
:
*
* *
* *
* Point= * Да
* *∙∙∙∙∙∙∙∙∙∙∙.
* ExitPoint * :
* * :
* * :
* :
: Нет :
: :
: :
***************** ***************** ┌─
* * * * │ Определение
* * * * │
* Menu:=Point * * Menu:=255 *∙∙∙∙│ значения
* * * * │
* * * * │ функции
***************** ***************** └─
: :
:∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙'
:
:
:
:
***************** ┌─
* * │
* * │
* ClrScr *∙∙∙∙∙│ Очистка экрана
* * │
* * │
***************** └─
:
:
:
:
***************
* *
* К О Н Е Ц *
* *
***************
СХЕМА ПРОГРАММЫ
***************
* *
* П У С К *
* *
***************
:
***************** ┌─
* * │ Сброс
* * │
* Exit:=FALSE *∙∙∙∙∙∙∙∙∙∙│ флага
* * │
* * │ "Выход"
***************** └─
:
:∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙.
: :
: :
: :
: :
: :
* :
* * :
* * :
* * :
* Menu * :
* * :
* * :
* * :
* :
: :
:∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙. :
:1 :2 :3 :255 :
: : : : :
: : : : :
***************** ***************** ***************** ***************** :
* * * * * * * * :
* * * * * * * * :
* * * * * * * Exit:=TRUE * :
* * * * * * * * :
* * * * * * * * :
***************** ***************** ***************** ***************** :
: : : : :
:∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙' :
: :
: :
: :
* :
* * :
* * :
* * Нет :
* Exit *∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
* *
* *
* *
*
: Да
:
:
:
:
***************
* *
* К О Н Е Ц *
* *
***************
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию