Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Рассмотрим процесс создания меню по шагам. Рассматривается фрагмент программы в развитии соответствующий.




Собственно текст меню (предложены 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(…).


Поделиться:

Дата добавления: 2015-09-14; просмотров: 47; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты