Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AlgStr / Библиотека / ЛЕКЦИИ / POSIBNIK / Проектирование цикла с помощью инварианта.doc
Скачиваний:
35
Добавлен:
23.03.2015
Размер:
89.09 Кб
Скачать

5) Структура цикла:

Нет

Да

ВЫХОД

6) ПОДГОТОВКА ЦИКЛА:

C:=n; { Начнем с исходного числа}

7) УСЛОВИЕ ЦИКЛА: C<>0.

8) ТЕЛО ЦИКЛА:

k:=C mod 10; { В соответствии со стратегией задачи }

  1. МОДИФИКАТОР ЦИКЛА:

C:=C div 10; { В соответствии со стратегией задачи }

  1. ТЕКСТ ПРОГРАММЫ:

<< Подготовить n (например, ввести) >>

C:=n;

while C<>0 do begin

k:=C mod 10;

C:=C div 10;

end;

11) ЧАСТИЧНАЯ КОРРЕКТНОСТЬ ЦИКЛА: Из условия выхода из цикла (C=0) и условия сохранения инварианта следует, что в переменной k находится старшая цифра числа (один из операндов логической функции ИЛИ – ЛОЖЬ, тогда, чтобы инвариант остался истинным, необходимо, чтобы второй операнд стал истинным, т.е. k – старшая цифра числа) - ч.т.д.

12) ПОЛНАЯ КОРРЕКТНОСТЬ ЦИКЛА: В качестве функции декремента цикла можно взять значение < Количество значащих цифр в числе C>. Эта величина неотрицательна и конечная. При каждом выполнении тела цикла она убывает на 1. Когда она становится равной нулю срабатывает условие выхода из цикла (C=0) и цикл завершается.

Из доказательства частичной корректности цикла следует, что он завершается именно в состоянии Q (В k находится старшая цифра числа).

7