Peter Almazov писал(а):
Андрей столько раз привел этот код в разных вариантах, что я поневоле прочитал его. Здесь, как на ладони, проявляется полное неумение любителей "распознавать базовые схемы циклов" писать собственно циклы. Особенно впечатляет комментарий с постусловием.
Во-первых, семантика цикла: найти такую рядом стоящую пару p1, p2, что t - между ними. Явное объявление этой пары, как двух переменных, - это правильно. (Определение пары в расширенном смысле, включая пары, один из компонентов которых - несуществующая страница).
Отсюда - совершенно очевидный цикл: последовательный перебор пар, пока не обнаружена подходящая пара или не упёрлись в конец последовательности (да, да, само собой получился "линейный поиск", увы, я не виноват, что семантика цикла такая).
Выкладки же с постусловиями относятся не к циклу, а к IF-ам после. Чтобы разобраться, как после цикла интерпретировать граничные случаи (p1 = NIL или p2 = NIL).
Всё и строго, и семантически нагружено.
А что там Пётр может написать короче более "сухую" формалистику - мне, например, мало интересно.
Потому что "физический смысл" формалистики будет потерян.
Цитата:
Здесь, как на ладони, проявляется полное неумение любителей "распознавать базовые схемы циклов" писать собственно циклы.
"Вы, граф, говорят, цельный день по пятакам упражняетесь - и как раз с двадцати шагов" (С) Б. Акунин "Азазель"
Разумеется, если я стремлюсь составлять программу так, чтобы избегать "необычных циклов" (проще и тупее), то у меня менее развиты навыки борьбы с этими "необычными циклами", нечасто нужными.
Охотно уступлю Вам в этих навыках, лучше потренирую навыки редукции задач к тривиальным составляющим.