Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры информатика 2012.doc
Скачиваний:
16
Добавлен:
17.04.2019
Размер:
11.54 Mб
Скачать

Оператор цикла Паскаля с постусловием

Для задания таких вычислительных процессов и служит оператор цикла Паскаля с постусловием. Этот оператор имеет вид:

Repeat S1; S2;…; Si until B,

где repeat (повторять) и until (до) – служебные слова, через Si обозначен любой оператор Паскаля, а через В – логическое выражение.

При выполнении этого оператора цикла последовательность операторов, находящихся между словами repeat и until, выполнится один или более раз. Этот процесс завершается, когда после очередного выполнения заданной последовательности операторов логическое выражение В примет (впервые) значение true. Таким образом, с помощью логического выражения В задается условие завершения выполнения оператора цикла. Поскольку в данном случае проверка условия производится после выполнения последовательности операторов (тела цикла), этот оператор цикла и называется оператором цикла с постусловием.

С использованием этого вида оператора цикла Паскаля задача о суммировании первых членов гармонического ряда, удовлетворяющих заданному условию, может быть реализована следующим образом:

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

readln(e);

i:=0;

y:=0;

Repeat

i:=i+1;

y:=y+1/i;

Until 1/i<e;

Заметим, что оператор цикла с постусловием является более общим, чем оператор цикла с параметром — любой циклический процесс, задаваемый с помощью цикла с параметром можно представить в виде цикла с постусловием. Обратное утверждение неверно. Например, задача о суммировании первых n членов гармонического ряда, рассмотренная ранее, с оператором цикла с постусловием будет выглядеть так:

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

Readln(n);

i:=0;

y:=0;

Repeat

i:=i+1;

y:=y+1/i;

Until i>n;

Оператор цикла Паскаля с предусловием

Этот оператор цикла имеет в Паскале следующий вид:

While B do S,

где while (пока), do (делать, выполнять) – служебные слова, В – логическое выражение, S – оператор. Здесь оператор S выполняется ноль или более раз, но перед каждым очередным его выполнением вычисляется значение выражения В, и оператор S выполняется только в том случае, когда значение выражения В true. Выполнение оператора цикла завершается, когда выражение В впервые принимает значение false. Если это значение выражение В принимает при первом же его вычислении, то оператор S не выполнится ни разу.

6. Исполнение (тестирование) алгоритма.

Чтобы убедиться в правильности алгоритма, необходимо проводить его тестирование, не дожидаясь рационального окончательного алгоритма. В этом случае для фиксирования исполнения алгоритма указываются шаги алгоритма, аргументы, промежуточные величины, результаты на данном шаге и проверяемые условия. Шаги исполнения дают возможность показать, сколько шагов исполнено на данный момент, за какое число шагов весь алгоритм будет исполнен. Нумерация шагов алгоритма упрощает ориентацию в описании алгоритма и в процессе его исполнения. При этом в каждый момент видно, какой элемент (оператор/команда) алгоритма выполняется. Это помогает устранять ошибки. Самый простой вариант тестирования – это решение контрольного примера, когда при известных данных известен результат.

Пример: Составить алгоритм для нахождения квадратного корня из любого натурального числа x.

Используем для составления алгоритма след вспомогательные переменные : a и b – для определ интервала от 1 до x; а1 – деление интервала [a,b] пополам; x1 – переменная для промежуточных вычислений. В алгоритме можно организовать цикл с предусловием, т.к. неизвестно количество шагов, за которое будет найдено значение корня a. Составим алгоритм в виде псевдокода: Начало

Ввести х

а=1

b=х+1

Пока b – а>1 выполнять цикл

а1= (а+b) \2

х1 =х\а1

Если х1>= a1 то b =а1

Иначе а=а1

Конец если

Конец цикла

Вывести «Квадратный корень их х=»,а

Конец

Выполним тестирование для х=4

Шаг Проверка условий a b a1 x1 x1/2

Шаг1 1 4+1=5

Проверка усл(b-1)>1? (1+5)\2=3 4\3

«да»,5-1>1

Проверка усл х1>=a1? 1 =а1=3

«нет» 3>1

Шаг2 Проверка усл b-a>1? (1+32=2 4\2=2

«да», 3-1>1

Проверка усл х1>=a1 2 3

«нет», 2=2

Проверка усл(b-a)>1? 2

«нет»,3-2=1