- •Приемы и методы программирования
- •Итерационные методы
- •7.2. Вычисление функции разложением в ряд
- •7.3. Рекуррентные формулы
- •7.4. Организация надежного ввода.
- •Структурирование циклов в основе метода структурирования цикла заложено требование, чтобы цикл, как и
- •Интерфейс программы
- •Текстовые файлы
- •7.8. Спецификация задачи
- •Кроме описанных правил добавляется возможность отсутствия текста:
- •В форме а) предусматривается возможность отсутствия составляющей, а в форме б) –
- •7.9. Предупреждение ошибок и отладка программы
- •7.10. Модули
- •Главный алгоритм
- •Раздел описаний
- •Алгоритм
- •Поиск экстремума в файле
- •Задача. Найти максимальный элемент в последовательности чисел, размещенных в файле.
7.4. Организация надежного ввода.
Надежный ввод обеспечивает ввод допустимых значений данных, диапазон которых определен в спецификации.
Пример.
Спецификация
1. Задача. Вычислить сумму ряда S для заданного x с точностью eps.
2. Входные данные.
Состав: вещ х,еps – аргумент и точность
Диапазон: х<1, 0<eps<1
Входная форма:
Способ 1 Способ 2
<x>
<eps> <x>
<eps>
3. Выходные данные.
Состав: вещ S – сумма ряда
Выходная форма: Способ 1 Способ 2
<Заголовок>
<Вывод
результата>
<Сообщение
об ошибке>
<Заголовок>
<Вывод
результата>
4. Аномалии.
х1, eps0, eps1
5. Метод
Способ 1. Анализ аномалий
Входная форма описывает однократный последовательный ввод переменных
x и eps.
Фигурная скобка в выходной форме соответствует проверке условия в программе: если исходные данные верны, то происходит вычисление и печать результата, иначе выдается сообщение о неправильных входных данных.
Чтобы выполнить программу при исправленных данных, требуется повторно ее запустить.
Способ 2. Надежный ввод
Правильность данных проверяется при вводе. Изображение петли у входной формы указывает на повторение ввода данных до тех пор, пока не введутся правильные данные. Реализация повторения с использованием цикла описана в следующем разделе.
Структурирование циклов в основе метода структурирования цикла заложено требование, чтобы цикл, как и
другие базисные структуры, имел один вход и один выход. Если проектируется цикл с несколькими условиями выхода, то можно применить один из двух методов структурирования цикла, описанных ниже.
В качестве иллюстрации рассмотрим пример из раздела 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
цикл завершается.