Доровских Александр писал(а):
В моем понимании цикл - это набор каких-либо однотипных действий.
...
Это так или я не прав?
Конечно, правы.
(Просто чтобы ОБЪЯСНЯТЬ другим, надо и поглубже нюансы знать-понимать; почему тут и споры
).
Если же обсуждать с точки зрения самой обычной ("повторение однотипных действий"), то тут я бы только на одном дополнительно акцентировал:
- нужно больше думать не о повторении и действиях, а о цели цикла - т.е. "к чему он направлен", какие утверждения после его окончания истинны; и "каким путём идёт" - т.е. какие утверждения (называемые инварианты) истинны в начале каждого витка.
(Как раз отсюда и вылезают более "высокие" обсуждения о сходимости, итерационности и т.п.)
Методически это значит, например, учить на задачках с тем же Роботом сначала всегда записывать постусловие, которое отличает целевую клетку от всех остальных; и только потом механически получать WHILE, который к этой клетке приходит; и только в заключение добавлять в него "полезные" действия по обработке каждого элемента.
А в принципе, самое главное отличие "наивного" программирования от "грамотного", на мой взгляд, в том, что при грамотном человек думает прежде всего о том, в каких состояниях система
между операторами - и как бы её аккуратно перевести из одного состояния в другое; а при "наивном" он об этом даже не подозревает и не видит ничего, кроме самих действий.