Программа


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     *∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
   *           *
     *       *
       *   *
         *
         : Да
         :
         :
         :
         :
  ***************
 *               *
 *   К О Н Е Ц   *
 *               *
  ***************

Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию