Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
24
Добавлен:
31.03.2015
Размер:
199.68 Кб
Скачать

7.4. Организация надежного ввода.

Надежный ввод обеспечивает ввод допустимых значений данных, диапазон которых определен в спецификации.

Пример.

Спецификация

1. Задача. Вычислить сумму ряда S для заданного x с точностью eps.

2. Входные данные.

Состав: вещ х,еps – аргумент и точность

Диапазон: х<1, 0<eps<1

Входная форма:

Способ 1 Способ 2

<x> <eps>

<x> <eps>

3. Выходные данные.

Состав: вещ S – сумма ряда

Выходная форма: Способ 1 Способ 2

<Заголовок>

 <Вывод результата>

 <Сообщение об ошибке>

<Заголовок>

<Вывод результата>

4. Аномалии.

 х1, eps0, eps1

5. Метод

Способ 1. Анализ аномалий

Входная форма описывает однократный последовательный ввод переменных

x и eps.

Фигурная скобка в выходной форме соответствует проверке условия в программе: если исходные данные верны, то происходит вычисление и печать результата, иначе выдается сообщение о неправильных входных данных.

Чтобы выполнить программу при исправленных данных, требуется повторно ее запустить.

Способ 2. Надежный ввод

Правильность данных проверяется при вводе. Изображение петли у входной формы указывает на повторение ввода данных до тех пор, пока не введутся правильные данные. Реализация повторения с использованием цикла описана в следующем разделе.

    1. Структурирование циклов в основе метода структурирования цикла заложено требование, чтобы цикл, как и

другие базисные структуры, имел один вход и один выход. Если проектируется цикл с несколькими условиями выхода, то можно применить один из двух методов структурирования цикла, описанных ниже.

В качестве иллюстрации рассмотрим пример из раздела 7.5 организации надежного ввода данных при условиях: x<1 и 0<eps<1 .

а) Метод объединения условий

Этот метод структурирования состоит в объединении нескольких условий выхода из цикла в одно сложное логическое выражение.

repeat

writeln ('Введите правильно x, eps');

readln (x,eps)

until (abs(x)<1) and (eps >0) and (eps <1)

Повторяется ввод данных до тех пор, пока не выполнятся одновременно три условия:

x<1 и 0<eps и eps<1.

б) Метод флажка (метод булева признака)

Этот метод более универсальный, чем предыдущий. Он применяется в случаях, когда количество условий выхода из цикла довольно велико и при их объединении получается громоздкое логическое выражение. Кроме того, его удобно использовать, если требуется выполнить в цикле дополнительные действия при некоторых условиях.

Метод состоит в том, что вводится дополнительная переменная-флажок (булева переменная), имеющая два значения, которая управляет циклом: при одном значении переменной цикл продолжается, при другом – завершается.

flag:=true;

repeat

writeln ('Введите правильно x,eps);

readln (x,eps);

if (abs(x)<=1) then

begin

writeln ('Ошибка в х'); flag:=false

end

else

if ((eps<=0) or (eps>=1)) then

begin

writeln ('Ошибка в eps'); flag:=false

end

until flag;

Повторяется ввод данных с детальным анализом пра -вильности х и eps и выводом сообщений об ошибке.

Для завершения цикла используется переменная-флажок flag, которая принимает значения:

flag = true если данные правильные и

flag = false, если данные неправильные.

При flag = true цикл завершается.

Соседние файлы в папке ПРАКТИКУМ-1--5