Большая Советская Энциклопедия (ПР)
Шрифт:
Идея П. возникает ещё в школе при составлении «плана решения» арифметической задачи в виде серии вопросов. Существенное отличие реального П. от школьного опыта заключается в том, что программа, как правило, задаёт не одну, а несколько последовательностей действий (разветвлений), выбор между которыми зависит от значения промежуточных результатов решения задачи; выполняет некоторые группы команд многократно, автоматически определяя нужное число повторений; может предписанным образом сама себя менять или частично формировать в процессе своего выполнения.
Дополнительной особенностью П. является его трудность: размеры многих реальных программ исчисляются тысячами команд, а количество выполняемых ими действий — десятками миллионов. Такие объёмы в сочетании с элементарным характером машинных команд делают П. одновременно и очень сложным, и
Для преодоления этого противоречия П. придан характер многоэтапного процесса, каждый этап которого есть постепенная конкретизация и детализация плана решения задачи, полученного на предыдущем этапе. Кроме того, если правила описания плана решения задачи на некотором этапе будут точными, формальными и универсальными, т. е. применимыми к любой задаче, то тогда можно говорить о существовании некоторого языка П., используемого при составлении программы.
Языки программирования как способ точного формулирования задачи на разных этапах подготовки её к решению на ЭВМ сыграли фундаментальную роль в развитии П. В частности, они позволяют трактовать П. как процесс перевода задания для ЭВМ, выраженного в некотором языке, на другой язык — «язык машины». Если найти и описать точные правила такого перевода, то эти правила, в свою очередь, можно запрограммировать на ЭВМ. Полученные программы, автоматизирующие процесс П., называют трансляторами.
Процесс П. обычно состоит из следующих этапов:
Содержание каждого этапа П. можно пояснить на примере решения квадратного уравнения.
Исходная формулировка. Надо найти корни 50 квадратных уравнений вида ax2 + bx + c = 0, коэффициенты которых заданы в виде трёх таблиц Ai , Bi и Ci (i = 1,..., 50).
Алгоритмическое описание задачи получается в результате полного математического исследования её постановки, выбора стандартных или поиска новых алгоритмов выполнения всех нужных вычислений, а также уточнения, какие исходные данные надо ввести в ЭВМ и какие результаты надо получить. В данном случае алгоритмическое описание может иметь такой вид: ввести в ЭВМ таблицы коэффициентов Ai , Bi и Ci , решить каждое уравнение по общей формуле
с исследованием дискриминанта b2 — 4ac для определения случая комплексных корней; для единообразия каждый корень уравнения выдавать как комплексное число x = u + iv , полагая в случае вещественных корней мнимую часть равной нулю.
Язык П. высокого уровня — главное средство составления программ для ЭВМ. Общая особенность этих языков — их независимость от системы команд конкретных ЭВМ и фразовая структура, что в сочетании с использованием т. н. служебных слов приближает их к естественным языкам. Фразы разделяются обычно точкой с запятой; соподчинённость фраз указывается с помощью «операторных скобок» начало и конец; фразы делятся на два типа — операторы и описания. Оператор является единицей действия в языке. Различают следующие их типы: операторы присваивания, производящие подсчёт по указанной формуле и присваивающие вычисленное значение заданной переменной величине; условные операторы, которые в зависимости от результата проверки заданного условия производят выбор одной или другой ветви вычислений; операторы цикла, обеспечивающие повторное выполнение группы операторов. В описаниях указываются свойства переменных величин и других
В 70-х гг. 20 в. существует целое семейство таких языков П.: алгол-60, фортран для решения инженерных и научных задач, кобол для экономических расчётов, симула для П. математических моделей, более мощные языки алгол-68 и ПЛ/1, охватывающие все виды применений ЭВМ. Для всех из них существуют трансляторы, обеспечивающие автоматическое построение машинных программ для задач, выраженных в этих языках.
Программа решения квадратного уравнения, записанная на языке алгол-60 (адаптированном):
начало вещественные массивы А , В , С [1: 50];
вещественные а , b , с , u 1, u 1, u 2, u 2;
целое i , ввод (A , В , С );
для i: = шаг 1 до 50 цикл
начало а: = A [i ]; b: = B [i ]; c = C [i ];
если
начало u 1: = u 2: = 0; u 1:= – b + корень
u 2:= - b– корень
конец иначе
начало u 1: = корень
u 2: = — u 1; u 1:= u 2:
конец; вывод (u 1, u 1, u 2, u 2)
конец
конец
Машинно-ориентированный язык представляет программы в терминах команд ЭВМ, но выраженных в более удобной для употребления символике, нежели прямое двоичное представление. Он используется на промежуточном этапе процесса автоматической трансляции с языка более высокого уровня или же как язык П., когда программа по существу сразу должна быть сконструирована в терминах машинных команд. В последнем случае роль языка высокого уровня часто играет язык блок-схем, когда структура программы, т. е. последовательность выполнения её «блоков», наличие разветвления и повторяющихся участков показываются в графической форме, а функции каждого блока записываются в произвольной текстовой форме. Ниже следует пример блок-схемы решения квадратного уравнения: