Файл: Голембо, З. Б. Алгоритмизация и программирование электротехнических задач на электронных цифровых вычислительных машинах учеб. пособие.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.10.2024

Просмотров: 73

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

тела процедуры формальные параметры заменяются фактическими

(арифметические или булевые переменные, массивы

и т. д.). При

обращении к нужной подпрограмме в языке Алгол

используется

оператор

обращения к процедуре. Для обращения

к процедуре

с идентификатором / служит оператор / (АРи АРг;

...; АРп), где

АРи APZ;

АРп—фактические

параметры процедуры, напри­

мер: площадь треугольника (а, в, с) здесь х = а; у = в; z — с. Для пояснения трудных мест программы в язык Алгол можно включать текст, комментарии, которые не меняют смысла программы. Ком­ ментариям предшествует символ comment, который можно ставить ' либо после символа begin либо после точки с запятой. Все, что на­ писано после comment и до ближайшей точки с запятой, есть текст;

_.

 

^ ,

comment а +

b—с

— здесь поло-

например: D:=a+e

— с^х+у

.

 

жительно: then

go

to L.

текст

 

 

 

вводить и без символа comment.

Поясняющий

текст можно

В этом случае комментарии располагаются

за словом

end по сле­

дующему правилу: все, что написано после

слов до

ближайшего

из трех символов: точка с запятой, end или else, есть текст, например: ifa = в then begin x:=g; y:=z end —.это довольно редкий случай else x:=g+l; end.

Таковы в общих чертах правила и алфавит, на которых построен универсальный язык программирования Алгол-60

Объем транслятора определяется сложностью алгоритмов, ко­ торые ему предстоит перерабатывать, и типом машины, для которой он предназначен. Например, различные модификации транслятора для машины содержат от 20 ООО до 30 ООО команд.

§ 2.4. Алгоритмический язык ФОРТРАН

Среди алгоритмических языков считается ФОРТРАН наиболее распространенным, на нем составляется подавляющее большинство программ в различных областях науки и техники. Дадим его крат­ кое описание.

Программа, составленная на языке ФОРТРАН, может опериро­ вать со следующими величинами: числами, логическими значениями и алфавитно-цифровыми данными. Числа могут быть различных ти­ пов. К первому типу (INTEGER) относятся целые числа. Обычно абсолютная величина целого числа не может превышать некоторой степени двойки (различной для разных машин). Чаще всего исполь­ зуются целые числа, не превышающие 21 5 или 21 7 , например, 0, 27, — 56, 12354. Ко второму типу относятся вещественные числа (REAL). Такие числа записываются в виде последовательности цифр и обязательно десятичной точки. Чаще всего вещественное число состоит не более чем из восьми цифр, например: 84.0, 0.42, 3.141593. Приведенная запись называется формой записи с фикси­ рованной запятой. Имеется также форма записи с плавающей за­ пятой XEY. Здесь X — число, записанное с фиксированной запя-

21


той (мантисса числа), a Y — целое число (порядок числа). Следо­ вательно, XEY соответствует числу X • 10Y .

Абсолютная величина вещественного числа может

колебаться

в пределах от Ю-^ до IQP, где величина р различна для различных

машин. Например, в языке ФОРТРАН для IBM 709/7090 веществен­

ные числа могут изменяться от Ю - 3 8 до 1038.

 

Последние варианты языка ФОРТРАН допускают

использова­

ние комплексных чисел (COMPLEX), которые записываются в виде пары вещественных чисел, где первое из них является действитель­ ной, а второе — мнимой частью.

Точность представления чисел можно

удваивать, записывая •

перед ними букву D (первая буква названия

DOUBLE PRECISION,

т. е. удвоенная точность). В этом случае количество значащих цифр числа увеличивается вдвое.

К логическим значениям относятся категории TRUE (ИСТИННО) и FALSE (ЛОЖНО).

Алфавитно-цифровые данные представляют собой строки, сос­ тавленные из букв, цифр и других символов языка ФОРТРАН.

Естественно, что одних чисел недостаточно для

составления

про­

граммы. Необходимо вводить переменные, которые, сохраняя

свое

название, соответствуют различным числовым,

логическим

или

алфавитно-цифровым значениям. Под переменной в языке ФОРТРАН подразумевается последовательность из букв и цифр, начинающая­ ся с буквы. Количество символов в названии переменной не может быть более шести. Переменные могут быть простыми или иметь инде­ ксы. Примерами простых переменных могут служить: IND, J54, TIME. Запись переменных с индексами происходит так: индексы записываются в скобках после названия переменной и отделяются друг от друга запятыми, их максимальное количество различно в различных вариантах ФОРТРАНа и может доходить до семи, на­ пример DELTA (35), SIGMA (J + 2 ^ К ) , MATR (5>|<1, 1, J). Из примера видно, что в качестве индексов можно использовать целые выражения. Чаще всего допускаются выражения вида а>}< I + Ь, где а и b — целые числа, а I — переменная, принимающая целые

значения. В некоторых вариантах ФОРТРАНа

(например,

UNIVAC 1108) в качестве

индексных выражений можно

использо­

вать

суммы или разности

произведений а1>)<аг>|<...>(са/;

f5 ±>J<P2>J<---

~ ^ $ q

; Ti >}<72>|<"->)<7r> гдеа, f}, 7—целые числа или переменные, при­

нимающие целые значения.

Так же, как и числа, переменные могут быть целыми (INTEGER), вещественными (REAL), комплексными (COMPLEX) и т. п. Тип каждой переменной указывается в начале программы, например, если написать REAL J21, то в дальнейшем переменная J21 смо­ жет принимать лишь вещественные значения. Можно и не разде­ лять переменные на целые и вещественные, и тогда это будет сделано автоматически по следующему правилу: если название пере­ менной начинается с буквы I , J, К, L, М или N, то она будет счи­ таться целой, в противном случае переменная будет вещественной. Это очень удобно, поскольку перечисленные буквы обычно исполь-

22


зуются в математических выражениях для обозначения целых чи­ сел (например, в качестве индексов).

Цель программы — указать, какие операции и в каком порядке следует произвести над переменными, чтобы получить искомый ре­ зультат. Кроме этого, необходимо отвести под всю информацию некоторые поля запоминающего устройства (ЗУ) и задать форму вводимых и выводимых из машины данных. Подобные указания и составляют программу на языке ФОРТРАН, которая записывается в виде последовательности операторов, представляющих собой эти указания.

Оператор перфорируется на отдельной карте, которая может иметь продолжения. Такой метод первоначального задания опе­ раторов очень удобен: при внесении исправлений или изменений в программу нужно просто вытащить из колоды определенную карту и заменить ее другой или вообще вставить дополнительные карты.

Любой оператор можно снабдить меткой, представляющей со­ бой целое число, записываемое перед названием оператора. Метки используются для управления порядком выполнения операторов или для указания в определенных операторах других, связанных с ними.

Операторы подразделяются на исполнимые или неисполняемые. Исполнимый оператор соответствует реальным расчетам, выполняе­ мым в программе. Неисполняемые операторы не соответствуют ни­ каким расчетам, но являются описаниями: они определяют поля ЗУ, отведенные под числовые массивы, задают форму представле­ ния исходных данных и результатов и т. п. Далее приводится при­ мерный перечень операторов языка ФОРТРАН (операторы объяс­ няются на примерах).

а. Исполнимые операторы

Оператор GOTO.Примеры: в результате выполнения оператора GO ТО 5 начинает работать оператор сметкой 5, а не следующий по порядку. При выполнении оператора GO ТО (3, 5, 7), М следующим выполняется оператор с меткой 5, если переменная М приняла зна­

чение 2. После оператора

GO ТО К, (7, 35,

100) начинает работать

оператор с меткой 100, если переменная К приняла

значение

100.

Оператор GO ТО как бы «передает управление» на другой оператор,

обладающий заданной меткой. Все метки

должны

быть

различ­

ными.

 

 

 

 

 

 

Оператор

ASSIGN. Метка в языке ФОРТРАН не является

целой

переменной. Поэтому нельзя написать GO ТО J, присвоив перемен­

ной J целое значение. Вместо этого следует, например,

написать

ASSIGN 3 ТО J. Тогда в результате выполнения GO

ТО J управле­

ние будет передано на оператор с меткой 3.

 

 

 

Оператор

IF. Примеры:

в результате

выполнения

оператора

IF (а) 5, 13,

34 начинает работать оператор

с меткой 5,

13 или 34

в зависимости от того, является ли значение выражения (а) соответ-

23


ственно отрицательным, нулевым или положительным. Оператор

IF(1)S работает следующим

образом: если логическое выражение

1 принимает значение TRUE,

то выполняется оператор S (под этим

оператором подразумевается

любой исполнимый оператотр

языка

ФОРТРАН, кроме DO), а затем следующий по порядку. В против­

ном случае оператор S обходится.

 

Оператор DO. С помощью этого оператора организуются циклы,

т. е. указываются участки программы, которые повторно

прора­

батывают заданное число раз; при этом каждый последователь­ ный проход участка соответствует значению индекса, получающего определенное приращение. Пример: в результате выполнения опе­ ратора DO 20/ = 2, 10, 1 участок программы в пределах от него самого до оператора с меткой 20 проработает 9 раз, причем индек­ сная переменная / примет значения: 2, 3, 10. В качестве преде­ лов изменения индекса можно указывать целые переменные. На­ пример, можно записать DO 3J = I , М, 1.

Внутри одного цикла может быть другой, содержащий в свою очередь третий и т. д. При использовании оператора DO необхо­ димо следовать некоторым разумным правилам. Например, запре­ щается передавать управление внутрь цикла, пропуская сам опера­ тор DO (программа в этом случае «не знает», в каких пределах изменяется индексная переменная).

Оператор CONTINUE. Этот оператор используется в качестве последнего в участке, который определяется в операторе DO.

Арифметический оператор. Такой оператор записывается в виде а = Ь, где а — переменная (простая или с индексами), a b — вы­ ражение. Смысл этого оператора состоит в том, что вначале вы­ числяется выражение Ь, и затем его значение присваивается пере­ менной а.

Выражения — это последовательности чисел и переменных, разделенных знаками арифметических операций. К последним отно­

сятся -)f (умножение),

+

(сложение), — (вычитание), / (деление)

и

^о}<

(возведение

в

степень).

Пример:

А(/)

= P(/)>j<-)f2

+

+

Q (2^fd).

Выражение в правой части оператора при обычной ма­

тематической записи выглядело бы так: аг = р\ +

q2i.

 

 

 

Оператор CALL. Данный оператор используется для вызова

подпрограммы. Пример: CALL SP

(X, Y, 35). В результате

прора­

ботает подпрограмма

SP, причем в

качестве аргументов (исходных

данных

и результатов)

будут подставлены X, Y и 35.

 

 

 

Оператор RETURN. Этот оператор ставится в тех местах под­

программы, откуда следует

возвратиться на

вызывающую

прог­

рамму.

 

 

 

 

 

 

 

 

 

 

 

Оператор READ. Пример: в результате выполнения оператора

READ 5, X, Y с перфокарт будет введена информация, а именно

значения переменных X и Y. Их

форма определяется оператором

с

меткой 5.

 

 

 

 

 

 

 

 

 

 

Оператор WRITE. Пример: в результате выполнения оператора

WRITE

3,

X, Y будут

напечатаны значения

переменных

X

и Y

в форме, указанной

в операторе FORMAT с меткой

3.

 

 

24


К исполнимым операторам относятся также перфорация, за­ пись на ленту и считывание с ленты и т. д.

б. Неисполняеныв операторы

Оператор DIMENSION. Пример: в результате выполнения опе­ ратора DIMENSION А (10, 20) определяется, что переменная А имеет два индекса, причем первый не может превосходить 10, а вто­ рой 20. Индексы в языке ФОРТРАН не могут принимать нулевых или отрицательных значений.

Оператор EQUIVALENCE. Пример: при выполнении

оператора

EQUIVALENCE ( I , J) значения переменных I и J будут

храниться

в одной и той же ячейке ЗУ.

 

Оператор COMMON. Пример: в результате выполнения опера­ тора COMMON А под массив А отводятся некоторые ячейки ЗУ. Если в программе (или подпрограмме) встретится другой оператор:

COMMON Q,

тогда значения переменной Q

будут выбираться из

тех же ячеек

ЗУ, где располагается массив

А. Данный оператор

является очень важным средством обмена данными между отдель­ ными программами, работающими совместно.

Оператор FORMAT. Этот оператор используется для описания формы и расположения информации при ее вводе или выводе из машины. Пример: оператор FORMAT (14, 5Х, 5F 8.5) указывает, что первая выводимая величина является целой (буква I) и на нее отводится четыре позиции; далее следует пять пробелов, а затем — пять чисел с фиксированной запятой, причем на каждое из них отво­ дится восемь позиций, а после десятичной точки идут пять цифр. X означает пробел, a F —форму записи с фиксированной запятой.

Если

вместе с этим оператором

используется оператор вывода на

печать (WRITE),

то отпечатанные данные могли бы иметь следую­

щий

вид:

1451

.34671

1.56342

3.34555

7.67412

23.00721.

 

 

Есть правила, согласно которым, используя оператор FORMAT, можно выводить текст, печатать таблицы, графики, карты и пр.

Функции и подпрограммы. Функции и подпрограммы в языке ФОРТРАН являются чрезвычайно мощным средством построения сложных разветвленных алгоритмов из взаимодействующих бло­ ков. Почти любая программа на языке ФОРТРАН состоит в основ­ ном из набора подпрограмм. Подпрограмма является самостоятель­ ным блоком, который можно транслировать отдельно от других блоков. Кроме того, каждую подпрограмму можно отлаживать независимо от других подпрограмм, т. е. в этом смысле она явля­ ется самостоятельной программой. В частности, в подпрограммах следует определять массивы с помощью оператора DIMENSION, хотя они и могут задаваться в вызывающей программе. Подпро­ граммы оформляются следующим образом. Вначале записывается заголовок подпрограммы:

SUBROUTINA NAME (ul t u 2 , . ., u„),

25