СОВЕРШЕННОЕ ОРУЖИЕ КОДЕРА

Спецвыпуск Хакер, номер #004, стр. 004-106-4

Тэкс, что там дальше? А, вот, структура повторения. Так же как и структура следования, структура повторения имеет несколько реализаций. Мы рассмотрим одну - она универсальная.

ПОКА (условие)

действие.

Если условие верно - выполнить действие, а потом снова проверить, верно ли условие (если верно, еще раз выполнить действие). И так до тех пор, пока условие не станет неверным. Быстро смотрим два примера, и идем дальше. Задача один: пить пиво до тех пор, пока не будет достигнута необходимая кондиция, потом топать к толчку :).

ПОКА (чел не достиг кондиции)

пить пиво.

топать к толчку.

Чел проверяет: не дошел ли он до кондиции, если нет пьет пиво, потом опять проверят, если опять нет - опять пьет пиво. Когда он, наконец, достигает кондиции - пропускает действие "пить пиво", и выполняет следующее за структурой повторения действие - "топать к толчку". В этом алгоритме также задействована структура следования (действие "топать к толчку" следует за структурой повторения.

Задача два: напечатать все числа от 0 до 9.

установить счетчик в нуль.

ПОКА (счетчик меньше либо равно девяти)

вывести счетчик.

прибавить к счетчику единицу.

Ну тут все и так понятно. Идем дальше.

АГОРИТМ АЛГОРИТМОВ

Нда, нисходящая разработка алгоритмов с пошаговой детализацией. В общем-то, эта штука только звучит сложно. Если ты один раз поймешь, как с ней работать - считай, что ты ее навсегда освоил - остается только совершенствоваться в практике :). Ну как, готов? Тогда приступим-с. Как отмечалось выше, эта фень упрощает разработку больших и сложных алгоритмов. Смысл ее в том, что она систематизирует процесс. Короче говоря: технология нисходящей разработки алгоритмов с пошаговой детализацией - это алгоритм разработки алгоритмов. Вот сказал-то... :) А почему бы и нет? Почему у процесса катания на тачке может быть алгоритм, а у процесса разработки алгоритмов - нет? Тут, как говорится, сам Билл Гейтс велел. А теперь слушай внимательно. Вся эта технология осуществляется следующим образом: на основе условия задачи (которое нам дают работодатели, преподы, которое мы сами себе придумаем и пр.) составляется одно единственное действие, которое полностью характеризует назначение разрабатываемого алгоритма. Очень часто это действие совпадет с формулировкой задачи, и это действие называют вершиной алгоритма (скоро поймешь, почему). Например, если стоит задача: найти корни квадратного уравнения, то псевдокод вершины алгоритма решения этой задачи так и будет выглядеть:

найти корни квадратного уравнения.

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

ввести значения x,a,b,c.

найти дискриминант.

найти корни.

вывести корни.

Но и эти действия тоже не осуществимы на известных мне языках программирования - делаем еще один шаг детализации:

ввести x.

ввести a.

Назад на стр. 004-106-3  Содержание  Вперед на стр. 004-106-5

ttfb: 2.842903137207 ms