1.3.
Технология
разработки алгоритмов и программ
Разработка алгоритма является важным конструктивным компонентом программирования,
не зависящим от особенностей синтаксиса языков программирования и
специфики функционирования конкретных вычислительных машин.
При
решении на ЭВМ некоторой задачи работа распадается на следующие основные
этапы [1]:
1)
математическая формулировка задачи – определение состава и характера
исходных данных, результатов, записи условия задачи с помощью математических
обозначений;
2)
разработка методики решения задачи – установление зависимости всех
искомых результатов от исходных данных, указание методов получения
результатов, которые могут быть реализованы на ЭВМ;
3)
разработка алгоритма решения задачи – четкая установленная последовательность
действий, записанная в виде текстуального, графического или формального
языка с помощью математических описаний;
4)
программирование – запись решающего алгоритма на языке программирования
и последующая трансляция на машинный язык;
5)
отладка программы – устранение в программе синтаксических, семантических
и алгоритмических ошибок;
6)
решение задачи на ЭВМ и анализ полученных результатов.
Вышеописанные
этапы решения задачи на ЭВМ остались прежними, несмотря на смену поколений
ЭВМ, а подходы к созданию алгоритмов и требования к ним существенно
изменились в ходе эволюции компьютеров.
В
эпоху ЭВМ 1-го и 2-го поколений основным требованием к алгоритму были
[1]:
-
минимальные требования в отношении оперативной памяти компьютера,
т. е. программа должна была использовать наименьшее возможное число
ячеек оперативной памяти компьютера;
-
минимальное время исполнения (минимальное число операций). При этом
программы составлялись из команд, исполнявшихся процессором, а именно:
1) операций присваивания;
2) простейших арифметических операций;
3) операций сравнения чисел;
4) операторов безусловного и условного переходов;
5) операторов вызова подпрограмм (вспомогательных алгоритмов).
Такой
подход в создании алгоритмов, в котором операции непосредственно выполняются
компьютером, принято называть операционным (или операциональным). Основные
недостатки алгоритмов, к которым приводил операциональный подход:
-
злоупотребление командой условного и безусловного переходов зачастую
приводило к очень запутанной структуре программы;
-
вместе с разнообразными уловками, направленными на повышение эффективности
программы (т. е. минимальных требований к оперативной памяти и минимального
времени выполнения), это приводило к непонятности программ, делая
программирование трудоёмким, сложным и чрезвычайно дорогостоящим.
Операция присваивания состоит
в том, что значение величины помещается в ячейку памяти компьютера.
Эта ячейка может либо принадлежать оперативной памяти, либо находиться
в арифметико-логическом устройстве, которое является частью процессора
и выполняет основные операции. После операции присваивания указанное
значение сохраняется в той же ячейке памяти, куда оно было помещено.
Оно может быть заменено другим значением в результате другого присваивания.
Ячейка
памяти, где размещается значение, в программе обозначается идентификатором
(именем). Например, x, y1, z_3.
Переменные
могут быть разных типов: числовые (целые или действительные), литерные
и логические. Значения различных типов представляются в компьютере
по-разному, поэтому и имена переменных также должны быть разные. При
разработке алгоритма следует всегда помнить об этом.
Арифметические
операции: сложения (+), вычитания (-), умножения
(*) и деления (/) – позволяют записывать арифметические выражения
с использованием идентификаторов переменных.
Для
определения приоритета операций в выражениях используют стандартное
математическое соглашение о старшинстве операции, согласно которому
старшими и выполняемыми в 1-ю очередь являются умножение и деление,
а младшими – сложение и вычитание. Для изменения порядка выполняемых
операций служат скобки. Например, порядок операций в выражениях разный,
следовательно, и результат вычисления будет разным:
1) 2 * (b + c);
2) 2 * b + c.
Операции
одного старшинства выполняются в порядке записи в выражении.
Операция сравнения
числовых значений сводится к определению знака разности этих значений.
Этот знак отображается с помощью специальной ячейки памяти – флага
знака результата – и используется при выполнении условных переходов
между командами (шагами) алгоритма.
Шаги
(или команды) алгоритма обладают метками или адресами, и, помимо последовательного
выполнения команд, возможен и другой порядок, при котором выполнение
команд определяется переходами на команды с определёнными метками
или адресами.
Безусловный переход
– это когда выполнение команд определяется вне зависимости от каких-либо
условий.
Условный переход
– это когда выполнение команд определяется некоторым условием.
Вызов вспомогательного алгоритма (подпрограммы)
– это такой переход в последовательности команд алгоритма, при котором
на определённом этапе выполнения алгоритма происходит вначале переход
на другую программу (подпрограмму), а затем, после её завершения,
возврат в точку вызова подпрограммы и продолжение выполнения команд,
начиная со следующей после команды вызова подпрограммы.
|