Седьмое занятие углублённого курса: таблица витков, инвариант как фраза, верная на каждом витке, цикл по фразе — начало, шаг, выход, проверка на границе; полезный комментарий, шапка программы с примером, который проверяется запуском — уроки 14–15 плана
Одна строка — одна проверка условия цикла: до цикла, после каждого витка и на выходе. Строк на одну больше, чем витков. В последней строке условие ложно.
Фраза о переменных, верная в каждой строке таблицы. Сумма цифр: s + сумма цифр n = сумма цифр исходного. Степень двойки: p = 2 ** k и p ≤ N. НОД вычитанием: НОД(a, b) не меняется. На выходе фраза верна, а условие ложно — вместе они дают ответ без запуска.
Начало — значения, при которых фраза верна до первого витка (s = 0, p = 1 и k = 0, mn = первое прочитанное). Шаг — сдвиг к цели, после которого фраза снова верна. Выход — условие, при котором фраза превращается в ответ.
Старт накопителя чужим числом (m = 0). Граница выхода: < против <=, на выходе проверить, что фраза ещё верна. Равный максимум: >= перезаписывает номер первого. Проверять на границе: самый маленький вход, точная степень, два равных числа.
Говорит, что верно, а не пересказывает строку. Главный комментарий цикла — инвариант одной строкой перед while.
# Ввод: что подаётся; # Вывод: что печатается; # Пример: вход -> вывод. Пример проверяется запуском: не сошлось — врёт программа или шапка. Приглашение в input() — для человека, машине оно мешает. Чужая документация — help(abs), help(round).
Седьмое занятие углублённого курса: таблица витков, инвариант как фраза, верная на каждом витке, цикл по фразе — начало, шаг, выход, проверка на границе; полезный комментарий, шапка программы с примером, который проверяется запуском — уроки 14–15 плана
Одна строка — одна проверка условия цикла: до цикла, после каждого витка и на выходе. Строк на одну больше, чем витков. В последней строке условие ложно.
Фраза о переменных, верная в каждой строке таблицы. Сумма цифр: s + сумма цифр n = сумма цифр исходного. Степень двойки: p = 2 ** k и p ≤ N. НОД вычитанием: НОД(a, b) не меняется. На выходе фраза верна, а условие ложно — вместе они дают ответ без запуска.
Начало — значения, при которых фраза верна до первого витка (s = 0, p = 1 и k = 0, mn = первое прочитанное). Шаг — сдвиг к цели, после которого фраза снова верна. Выход — условие, при котором фраза превращается в ответ.
Старт накопителя чужим числом (m = 0). Граница выхода: < против <=, на выходе проверить, что фраза ещё верна. Равный максимум: >= перезаписывает номер первого. Проверять на границе: самый маленький вход, точная степень, два равных числа.
Говорит, что верно, а не пересказывает строку. Главный комментарий цикла — инвариант одной строкой перед while.
# Ввод: что подаётся; # Вывод: что печатается; # Пример: вход -> вывод. Пример проверяется запуском: не сошлось — врёт программа или шапка. Приглашение в input() — для человека, машине оно мешает. Чужая документация — help(abs), help(round).