Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Val (choice2, choice, code);




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

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

Readln (choice2);

Val (choice2, choice, code);

Если функция

Для контроля ввода рекомендуется применение процедуры

Val (choice2, choice, code);

преобразующей введённую в символьной форме информацию (choice2) в число (choice). Параметр Code показывает результат преобразования: если значение параметра Code = 0, то преобразование прошло успешно, иначе необходимо информировать пользователя об ошибке и заставить повторить ввод. Вариант реализации этой защиты

Repeat

writeln(' Заголовок меню');

writeln('1. Первый вариант действий');

writeln('2. Второй вариант действий ');

writeln('3. Третий вариант действий’);

writeln('4. Четвёртый вариант действий ');

writeln('5. Выход из программы');

writeln('Ваш выбор:');

Readln (choice2);

val (choice2, choice, code);

if (code<>0)

then writeln ('Вы ввели не число! ’,

Choice2,

’ Повторите ввод! ');

until code=0;

Case choice of

Begin

...

Усложнённое задание Дополнительно сформировать счётчик повторений попыток ввода (на 3-5 неудачных попыток). Когда заданный лимит попыток будет превзойдён, программа прекращает работу, уведомив пользователя о том, что он исчерпал свои возможности. Заблокировать, не допускать выполнения пунктов обработки информации, если не была введена исходная информация! Использовать «флажок», чтобы знать, введена информация или ещё нет

PROGRAM Menu;{Окончательный вариант }

Var

exit_ans: string;

choice, code: integer;

F, Fl: boolean;

{Тело главной вызывающей программы}

Begin

F:= true; { Флаг управления циклом меню }

while (F = true) do

Begin

Repeat

writeln(' Заголовок меню');

writeln('1. Первый вариант действий');

writeln('2. Второй вариант действий ');

writeln('3. Третий вариант действий’);

writeln('4. Четвёртый вариант действий ');

writeln('5. Выход из программы');

writeln('Ваш выбор:');

Readln (choice2);





Поделиться с друзьями:


Дата добавления: 2016-11-03; Мы поможем в написании ваших работ!; просмотров: 330 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Большинство людей упускают появившуюся возможность, потому что она бывает одета в комбинезон и с виду напоминает работу © Томас Эдисон
==> читать все изречения...

2551 - | 2215 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.