|
Пример составления программы |
|
Пользуясь уже известными нам средствами записи алгоритмов на Алголе, можно составлять довольно большие и сложные программы. Мы не можем рассмотреть здесь пример слишком большой программы. Поэтому возьмем в качестве примера не очень сложную задачу, но покажем на ней, как следует подходить к составлению любых программ. Задача заключается в решении системы линейных алгебраических уравнений методом Гаусса. Напомним, в чем состоит этот метод. Пусть дана система Процесс ее решения состоит из двух последовательных этапов, называемых прямым и обратным ходом. На прямом ходе система приводится к виду На обратном ходе вычисляются значения неизвестных, начиная с хп и кончая хх. Не вдаваясь пока в детали выполнения прямого и обратного ходов, мы можем записать общую схему программы следующим образом: begin описание данных; ввод исходных данных; прямой ход; обратный ход; вывод результатов end Здесь использованы псевдооператоры и псевдоописания, которых нет в Алголе. Однако роль и взаимосвязь этих частей программы вполне понятны программисту (с учетом сделанных выше пояснений о методе Гаусса). Псевдооператоры ввод исходных дан-них и вывод результатов, а также псевдоописание описание данных составляют более или менее стандартную часть любой программы, и их расшифровкой мы займемся в последнюю очередь. Сейчас же нам предстоит детализировать псевдооператоры прямой ход и обратный ход. Начнем с последнего как с более простого. Заметим, что значение хп, равное Ь'п, определяется уже в результате прямого хода. Поэтому структура псевдооператора обратный ход должна быть такой: обратный ход: for i: = n — l step — 1 until 1 do вычисление 1-го неизвестного Здесь идентификатор обратный ход стоит уже в качестве метки, используемой не по своему прямому назначению — быть адресом перехода, а как пояснение к оператору, который она метит. Этот оператор имеет форму оператора цикла, тело которого образует псевдооператор вычисление 1-го неизвестного. К моменту выполнения этого псевдооператора для текущего значения i неизвестные х1+ъ хп уже вычислены, так что окончательная расшифровка псевдооператора в терминах «чистого» Алгола делается без труда: вычисление i-го неизвестного: begin х Щ\ = Ы [/]; for k: = i + l step / until n do x [i]: = x [i] — al [i, k] x x [k]; end
|