5) Структура цикла:
Нет
Да
ВЫХОД
6)
ПОДГОТОВКА ЦИКЛА:
C:=n;
{ Начнем с
исходного числа}
7)
УСЛОВИЕ ЦИКЛА: C<>0.
8)
ТЕЛО ЦИКЛА:
k:=C
mod 10; { В
соответствии со стратегией задачи }
-
МОДИФИКАТОР
ЦИКЛА:
C:=C
div 10; { В
соответствии со стратегией задачи }
-
ТЕКСТ
ПРОГРАММЫ:
<<
Подготовить
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