Джинсы с доставкой: купить джинсы WrungDivision. Купить модные джинсы! Магазин LO.
При решении задачи

При решении задачи главная трудность заключается вовсе не в том, чтобы написать программу. Главное — это выработать систему понятий, которая четко отражает существо решаемой задачи и открывает естественный путь к составлению программы. У нас было мало возможностей показать, как, развивая систему понятий, связанных с решаемой задачей, можно прийти к более простой и эффективной программе ее решения. Нашей целью было изучение важнейших методов программирования, поэтому примеры задач выбирались из тех областей, где круг основных понятий давно сложился и должен быть известен читателю. Отметим все же задачу о транспонировании матрицы, где идея о возможности вы-
борки переставляемых элементов матрицы не только вдоль строк или столбцов, но и вдоль диагоналей позволила заметно упростить машинную программу (см. упражнения 8.2.2 и 9.2.3.). Введение новых понятий позволило прийти к быстро работающей программе перевода чисел из десятичной системы в двоичную (программа 13.5.3). Общие принципы подхода к решению задач на машине были продемонстрированы также в гл. 1 и § 11 гл. 7.
Формирование в той или иной области знания понятий, облегчающих решение на машинах возникающих в ней задач, относится, конечно, к самой этой области, а не к программированию. Этим должны заниматься, как правило, специалисты в этой области. Важно, однако, чтобы эти специалисты хорошо знали возможности и особенности машин, их сильные и слабые стороны, знали не только на уровне понятий, вошедших в такие языки, как Алгол, но и значительно глубже. Нельзя сознательно овладеть Алголом или иным языком программирования, не зная, на базе каких понятий возникли и развивались эти языки, не представляя себе, во что превращаются программы, написанные на этих языках, после трансляции. В еще большей степени это относится к пользованию другими элементами математического обеспечения ЭВМ. Наоборот, хорошее владение основными понятиями программирования позволяет вести проектирование алгоритмов систематично и целеустремленно, последовательно продвигаясь от общей постановки задачи через серию промежуточных этапов к такому уровню частных задач, что способ их решения на машине становится очевидным.
Составление программ во многом родственно проектированию машин. Но если конструктор в известной степени вправе надеяться, что его ошибки и недоработки в чертежах будут обнаружены и выправлены расчетчиками, технологами, даже рабочими, воплощающими его конструкцию в металле, то программист обязан знать, что малейшая его погрешность либо (в лучшем случае) сделает выполнение программы невозможным, либо будет воспроизведена машиной и приведет к неверным результатам работы программы. Поэтому программист.обязан быть предельно логичным, методичным, аккуратным и предусмотрительным» Он должен выработать у себя стиль работы, отвечающий этим требованиям.

Однако его задача будет тем легче, чем большим числом приемов программирования он владеет, чем больше ситуаций, которые могут возникнуть в ходе составления программы, окажутся для него привычными.
Приемы программирования, рассмотренные в книге, не охватывают всех ситуаций, с которыми может встретиться программист. Эти приемы, продемонстрированные на машине с ограниченными возможностями, не могут быть механически использованы на других, более современных машинах. Но идеи, на которых основаны эти приемы, остаются в силе, и усвоение их позволит программисту быстро овладеть техникой программирования на любой машине.