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


Нет

Да
ВЫХОД

-
ПОДГОТОВКА ЦИКЛА:
C:=n; { Начнем с исходного числа}
k:=0; { Из условия истинности инварианта}
-
УСЛОВИЕ ЦИКЛА: C<>0.
-
М
ОДИФИКАТОР
ЦИКЛА:
C:=C div 10; { В соответствии со стратегией задачи }
9) ТЕЛО ЦИКЛА:
inc(i); { Из условия сохранения инварианта цикла }
-
ТЕКСТ ПРОГРАММЫ:
<< Подготовить n (например, ввести) >>
C:=n; k:=0;
while C<>0 do begin
C:=C div 10;
inc(i);
end;
11) ЧАСТИЧНАЯ КОРРЕКТНОСТЬ ЦИКЛА: Из условия выхода из цикла (C=0) следует, что в переменной k учтены все значащие цифры числа – ч.т.д.
12) ПОЛНАЯ КОРРЕКТНОСТЬ ЦИКЛА: В качестве функции декремента цикла можно взять значение < Количество значащих цифр в числе C>. Эта величина неотрицательна и конечная. При каждом выполнении тела цикла она убывает на 1. Когда она становится равной нулю срабатывает условие выхода из цикла (C=0) и цикл завершается.
Из доказательства частичной корректности цикла следует, что он завершается именно в состоянии Q (В k находится количество значащих цифр числа).
Задача 3. Найти сумму цифр натурального числа n.
-
P: Подготовить натуральное число n.
-
Q: S = <Сумма цифр числа n>.
-
СТРАТЕГИЯ РЕШЕНИЯ ЗАДАЧИ: Будем обрезать число справа. Текущее обрезаемое число обозначим C, а сумму уже отрезанных цифр будем хранить в переменной S.
-
ИНВАРИАНТ ЦИКЛА I:
< Сумма цифр числа n> = < Сумма цифр числа C> + < Сумма уже отрезанных цифр, т.е. S>.
-
Структура цикла:


Нет

Да
ВЫХОД

6) ПОДГОТОВКА ЦИКЛА:
C:=n; { Начнем с исходного числа}
S:=0; { Из условия истинности инварианта}
-
УСЛОВИЕ ЦИКЛА: C<>0.
-
ТЕЛО ЦИКЛА:
S:=S+C mod 10; { В соответствии со стратегией задачи }
-
МОДИФИКАТОР ЦИКЛА:
C:=C div 10; { Из условия сохранения инварианта цикла }
-
ТЕКСТ ПРОГРАММЫ:
<< Подготовить n (например, ввести) >>
C:=n; S:=0;
while C<>0 do begin
S:=S+C mod 10;
C:=C div 10;
end;
11) ЧАСТИЧНАЯ КОРРЕКТНОСТЬ ЦИКЛА: Из условия выхода из цикла (C=0) следует, что в переменной S просуммированы все цифры числа – ч.т.д.
12) ПОЛНАЯ КОРРЕКТНОСТЬ ЦИКЛА: В качестве функции декремента цикла можно взять значение < Количество значащих цифр в числе C>. Эта величина неотрицательна и конечная. При каждом выполнении тела цикла она убывает на 1. Когда она становится равной нулю срабатывает условие выхода из цикла (C=0) и цикл завершается.
Из доказательства частичной корректности цикла следует, что он завершается именно в состоянии Q (В S находится сумма всех цифр числа).
Задача 4. Найти старшую цифру натурального числа n.
-
P: Подготовить натуральное число n.
-
Q: k = <Старшая цифра числа n>.
-
СТРАТЕГИЯ РЕШЕНИЯ ЗАДАЧИ: Будем обрезать число справа, пока не доберемся до старшей цифры числа.Текущее обрезаемое число обозначим C. Очередную отрезанную цифру будем хранить в переменной k.
-
ИНВАРИАНТ ЦИКЛА I:
< k есть старшая цифра числа n> ИЛИ C<>0
