При разработке алгоритмов, а затем соответствующих им программ можно использовать разные подходы. Проиллюстрируем это на примерах создания алгоритмов, в которых применяется процедурный и объектный подходы.
При процедурном подходе в результате выполнения любого действия, описанного в алгоритме, должен быть получен промежуточный результат. Цепочка промежуточных результатов в конечном счете должна привести к ожидаемому конечному результату.
Покажем это на примере. Надо составить алгоритм вычисления на калькуляторе следующего выражения:
Здесь числа, над которыми в калькуляторе будут совершаться действия, заменены именами переменных. Эти переменные могут принимать различные значения. Если вводимые числа или значение суммы в знаменателе окажется равным нулю, то действие алгоритма окажется невыполнимым. Следовательно, в алгоритм должна быть включена проверка условия «равно ли значение знаменателя нулю?» и предусмотрены действия для обхода такой ситуации. В результате алгоритм вычисления будет следующим:
1. Если R1 = 0, или R2 = 0, или R3 = 0, или R4 = 0,
то выбрать другие числа.
Если все числа не равны нулю, то перейти к п. 2.
2. Вычислить 1/R1 и записать Результат1.
3. Вычислить 1/R2 и записать Результат2.
4. Вычислить 1/R3 и записать Результат3.
5. Вычислить 1/R4 и записать Результат4.
6. Сложить Результат1, Результат2, Результат3 и Результат4
и запомнить сумму как Результат5.
7. Если Результат5 не равен нулю, то разделить 1 на Результат5,
и полученный Результат6 будет искомым ответом.
8. Если Результат5 равен 0, то выбрать другие числа и перейти
к п . 1 или прекратить вычисления.
При объектном подходе рассматривается класс объектов, их свойства, параметры, действия, среда. Для создания конкретного экземпляра класса объектов надо указать соответствующие значения параметров. Вы не должны подробно описывать, как создавать каждый элемент выбранных объектов. Обработка параметров конкретного объекта уже заключена в действиях алгоритма.
Рассмотрим пример, иллюстрирующий объектный подход.
Предположим, в альбоме имеются красочные иллюстрации, на которых изображены разнообразные цветы. Кроме того, приведены шаблоны для рисования частей каждого цветка: стебля, листа, венчика цветка. Эти шаблоны рекомендуется вырезать, чтобы, используя их, можно было достаточно быстро рисовать существующие или выдуманные цветы.
Составим описание класса «Цветок» в виде таблицы 13.1 так, как это было показано в теме 7.
Таблица 13.1. Описание класса «Цветок»
Предположим, вы хотите нарисовать ромашку, используя шаблоны ее составных частей. Это означает, что вы выбираете из таблицы 13.1 действие «Рисовать».
Прежде всего надо создать необходимую для рисования среду, а именно: найти место на столе, взять бумагу, цветные карандаши, подготовить шаблоны. Затем вы определяете конкретные значения параметров объекта, который будете рисовать: название цветка — ромашка; вид стебля, листа и венчика цветка — определяются выбранным шаблоном. Далее составляете алгоритм рисования:
1. Найти в книге изображение ромашки.
2. Нарисовать по шаблону стебель ромашки, задав нужный размер.
3. Нарисовать на стебле по шаблону несколько листов ромашки, задав им нужный размер.
4. Нарисовать в верхней части стебля по шаблону венчик цветка ромашки, задав нужный размер.
По указанному алгоритму вы сможете нарисовать любое количество ромашек разного размера с разным количеством листочков.
Если вы решите рисовать другой объект, например розу, то алгоритм останется тем же. Изменятся только значения параметров: название объекта — роза; вид стебля, вид листа, вид венчика цветка — типовые для розы и определяются выбранным шаблоном. Обратите внимание на изменения в алгоритме:
1. Найти в книге изображение розы.
2. Нарисовать по шаблону стебель розы, задав нужный размер.
3. Нарисовать на стебле по шаблону несколько листов розы, задав им нужный размер.
4. Нарисовать в верхней части стебля по шаблону венчик цветка розы, задав нужный размер.
Допустим, вы решили вырезать из бумаги цветок розы, используя для этого готовые шаблоны. Тогда нужно немного изменить среду (условия) работы — найти ножницы, цветные листы бумаги, клей. В алгоритме действие «Рисовать» будет заменено на «Вырезать». Параметры останутся прежними:
1. Найти в книге изображение розы.
2. Вырезать по шаблону стебель розы, задав нужный размер.
3. Вырезать по шаблону несколько листов розы, задав им нужный размер.
4. Вырезать по шаблону венчик цветка розы, задав нужный размер.
5. Склеить вырезанные части.
Современные методы разработки алгоритмов основываются на понятиях объектов, их параметров и действий, среды. Приступая к созданию алгоритма, прежде всего ориентируются на некую среду существования объектов. В среде должны иметься инструменты для выполнения действий над объектами и изменения их параметров. Алгоритм преобразования объектов содержит описание действий, выполняемых этими инструментами.
Например, при рисовании ромашки такими инструментами являются: «Нарисовать по шаблону стебель», «Нарисовать на стебле по шаблону несколько листов», «Нарисовать в верхней части стебля по шаблону чашечку цветка».
Объектный подход к разработке алгоритма часто используется при создании компьютерных игр. Алгоритм игры описывает действия героев, параметры которых можно задавать (вводить) в процессе выполнения алгоритма (игры). Благодаря этому в начале игры вы имеете возможность выбрать своего героя, обеспечить ему снаряжение и указать другие характеристики. В соответствии с введенными значениями компьютер отображает вашего героя на экране монитора.