На наш форум часто заходят новички в программировании. К сожалению, в большинстве это — студенты-халявщики (и у каждого есть объяснение, важное только для него, почему он не хочет учиться). Таки мы сразу говорим, что за них ничего нелать не будем и чтобы получить помощь они должны показать свое желание учиться, показать уже написанный код или алгоритм, объяснить, что они делали и что не получается.
Другая, пусть и малочисленная, группа новичков (в ней попадаются не только студенты и школьники, но и люди постарше) проявляет стремление к обучению и мы им помогаем в этом, в меру наших сил и наличия времени.
А есть еще меньшая группа, пограничная между надоевшими халявщиками и созначельными учащимися — те, кто хочет и старается, но не может понять по причине неразвитости навыков к программированию. Таких как способность к анализу задания, построению алгоритмов и т.п. После общения с такими постителями форума наш автор Dimka (кстати, преподаватель) написал лекцию по составлению алгоритмов для простейщих случаев. Лекция должна помочь понять новичку основы, чтобы он смог самостоятельно
сделать следующий шаг в изучении программирования.
Любой алгоритм — это упорядоченная последовательность действий, направленная на перевод системы из одного состояния в другое. Соответственно, начальное состояние называется предусловием — чтобы алгоритм правильно работал, нужно, чтобы он запустился только тогда, когда система находится в начальном состоянии, иначе нельзя гарантировать, что выполнение всех действий приведёт к ожидаемому результату, или, что эти действия не приведут к аварии. Конечное состояние называется постусловием — алгоритм
обязан гарантированно приводить к конечному состоянию, нередко окончание работы алгоритма (особенно с циклами и/или рекурсией) определяется именно по факту выполнения постусловия (т.е. достижения ожидаемого результата). Пред- и постусловие разрабатываются до алгоритма и потом помогают программисту составлять сам алгоритм. Когда алгоритм разбивается на части — на последовательные шаги или этапы, пред- и постусловие разрабатываются для каждого шага, при этом постусловие предыдущего не должно конфликтовать
с предусловием последующего шага.
Как этим пользоваться? Рассмотрим на элементарном примере. Допустим, система — это дверь. Соответственно, она может находиться в двух состояниях: открыта или закрыта. И над ней можно выполнять три действия: открыть или закрыть, а также узнать текущее состояние. Поскольку алгоритм должен переводить систему из одного состояния в другое, для двери возможно составить 2 алгоритма, каждый из которых состоит лишь из 1 действия: