Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Рассмотрим процесс создания меню по шагам. Рассматривается фрагмент программы в развитии соответствующий.
Собственно текст меню (предложены 4 условных варианта действий и 5 - выход из программы с подтверждением): writeln(' Заголовок меню'); writeln('1. Первый вариант действий'); writeln('2. Второй вариант действий '); writeln('3. Третий вариант действий’); writeln('4. Четвёртый вариант действий '); writeln('5. Выход из программы'); writeln('Ваш выбор: '); readln (choice2); {ввод ответа пользователя для анализа и выбора действий} Далее необходимо определить и выполнить вариант вычислений в соответствии с выбором пользователя. Для этого применяется оператор множественного выбора CASE... OF и переменная CHOICE2: Case choice2 of Begin { Реализация первого варианта действий } { операторы } ... End; Begin { Реализация второго варианта действий } { операторы } ... End; Begin { Реализация третьего варианта действий } { операторы } ... End; Begin {Реализация четвёртого варианта действий } { операторы } ... End; Begin writeln ('Вы действительно хотите’, ’ закончить работу? (Y/N)'); Readln (exit_ans); if exit_ans = 'Y' then... { Реализация выхода } End; end; { case } Пока данный вариант показывает, во-первых, меню в «линейном виде», а нормальное меню работает до отказа пользователя от работы, во-вторых, в нём нет блокировок от некорректных действий пользователя. Для обеспечения работы меню «в цикле» можно сделать так. Var exit_ans: string; choice2: integer; F: boolean; {Тело главной вызывающей программы} Begin F: = true; { Флаг управления циклом меню } while (F = true) do Begin writeln(' Заголовок меню'); writeln('1. Первый вариант действий'); writeln('2. Второй вариант действий '); writeln('3. Третий вариант действий’); writeln('4. Четвёртый вариант действий '); writeln('5. Выход из программы'); writeln('Ваш выбор: '); Readln (choice2); Case choice2 of Begin { Реализация первого варианта действий } { операторы } ... End; Begin { Реализация второго варианта действий } { операторы } ... End; Begin { Реализация третьего варианта действий } { операторы } ... End; Begin {Реализация четвёртого варианта действий } { операторы } ... End; Begin writeln ('Вы действительно хотите’, ’ закончить работу? (Y/N)'); Readln (exit_ans); if exit_ans = 'Y' then F: =false; {флаг управления циклом } End; end; { case } end; { While } writeln ('Спасибо! До свидания! '); Readln; End. Защиты по-прежнему нет, символ, введённый вместо цифры, приведёт к аварийному завершению программы. Нет никакой реакции, если значение ответа вне интервала от 1 до 5 включительно. Эта защита реализуется фрагментом Else writeln ('Incorrect menu point', choice2); Поставленным в операторе CASE, перед завершающим его END ... Begin writeln ('Вы действительно хотите’, ’ закончить работу? (Y/N)'); Readln (exit_ans); if exit_ans = 'Y' then F: =false; End; Else writeln ('Incorrect menu point', choice); end; { case } ... Способ блокировки ввода пользователем «нецифры». Для решения этой задачи пользователь может ввести символ, чтобы избежать контроля типа информации при вводе. Тип данных для переменной ответа – STRING. Но далее происходит принудительная попытка преобразовать символьную информацию (тип данных, в котором вводится значение пункта меню) в цифровую, для чего используется функция VAL(…).
|