Файл: Голембо, З. Б. Алгоритмизация и программирование электротехнических задач на электронных цифровых вычислительных машинах учеб. пособие.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 21.10.2024
Просмотров: 72
Скачиваний: 0
языке, и перерабатывает его в программу, состоящую только из машинных команд. Таким образом, алгоритмический язык в извест ной мере независим от ЭЦВМ, что позволяет выполнять расчет на разных моделях ЭЦВМ без необходимости ручного программи рования.
Все высокоразвитые алгоритмические языки программирования являются в той или иной степени специализированными. Каждый из них предназначен для записи алгоритмов решения задач из вполне определенной области. Так, например, широко используе мый язык ФОРТРАН — наиболее удобен для описания вычисли тельных процессов, КОБОЛ — для описания экономических задач, СНОБОЛ — для описания процессов переработки символьной информации, ЛИСП — для обработки списочных структур и т. д.
Использование при решении какой-либо задачи не предназна ченного для нее языка, как правило, сопряжено с большими не удобствами — составление описания алгоритма требует больших затрат труда и времени, сами же описания ненаглядны, оттранслиро ванные программы неэффективны.
К алгоритмическому языку предъявляются следующие требо вания.
1. Наглядность (использование легко понимаемых изобрази тельных средств).
2.Единство языка (одни и те же средства должны применяться для выражения одних и тех же понятий в разных частях записи алгоритма).
3.Гибкость (любой из распространенных приемов вычислитель ной математики должен описываться без излишнего усложнения).
4.Многоступенчатость (должен позволять описывать очень сложные алгоритмы в виде сочетания сравнительно небольшого числа более простых алгоритмов, описываемых отдельно).
5.Однозначность (запись любого алгоритма должна читаться единственным способом).
Внастоящее время наибольшее распространение получили алго ритмические языки ФОРТРАН и Алгол-60, удовлетворяющие боль шинству перечисленных требований и удобные для описания вычис лительных процессов.
§ 2.3. Алгоритмический язык АЛГОЛ-60
Название алгоритмического языка Алгол-60 складывается из следующих понятий: Алгол (ALGOL) сокращение от английских слов algorithmic language — алгоритмический язык; число 60 ука зывает на год, когда состоялась конференция ученых, обсудивших и опубликовавших описание этого языка.
Основными символами в Алголе служат латинские буквы. Имеется также некоторое количество служебных слов (английских). Числа обозначаются в десятичной системе счисления. Целая часть числа отделяется от дробной точкой.
Центральным понятием Алгола является оператор, обозначаю-
17
щий определенное действие, которое необходимо выполнить над переменными, т. е. величинами, принимающими различные зна чения. Вычислительная программа, записанная на языке Алгол-60, представляет собой линейную последовательность операторов. Каж дый оператор может быть помечен, т. е. снабжен слева меткой, на
пример: L : вывод (h — 2хС). |
Для |
присвоения |
переменной того |
||||
или иного значения используется оператор |
присваивания, напри |
||||||
мер, оператор h : = |
ахв |
есть оператор, |
который |
присваивает |
|||
переменной h значение ахв. |
Знак присвоения (: = ) рассматривает |
||||||
ся как единый; его нельзя смешивать со |
знаком |
равенства. |
|||||
Для обозначения |
меток |
и |
всех |
переменных, |
встречающихся |
в программе, программист пользуется произвольно выбранной пос ледовательностью наименований — идентификатором. Идентифика тор может содержать буквы (строчные и заглавные), цифры и целые слова, составленные из букв и цифр. Выбор того или иного иден тификатора не меняет смысла программы.
Чтобы пояснить течение вычислительного процесса, в язык Алгола введены специальные слова, которые не входят в выбранный идентификатор и являются постоянными составными частями языка. Существует 22 таких слова: go to (перейти к), if (если), then (то), else (иначе), for (для), do (выполнить), step (шаг), until (до), while (пока), begin (начало), end (конец), comment (коммента рий), own (собственный Boolean (булево), integer (целое), real (действительное), array (массив), switch (переключатель), string (строка), procedure (процедура), label (метка), value (значение). Эти слова воспринимаются как единые символы и печатаются жир ным шрифтом.
Программа на языке Алгол-60 расписывается в строку. При этом соблюдаются следующие правила. Внутри одной строки сим волы должны быть написаны строго линейно; надстрочные (пока затели) и подстрочные (индексы) знаки не допускаются. Члены one-
ft
рации деления пишутся в строчку; например, |
|
= И/(а + Ь). |
|||
|
|
|
|
а + Ъ |
|
Знак умножения опускать нельзя, например: h-a— |
hxa. Для пока |
||||
зателя степени |
принято обозначение |
а8 — а\в, |
например, ft2 = |
||
h f 2; для чисел |
типа |
ах\0в вводится |
форма: |
ах |
10" = a- 10s( 10 |
в этом сучае пишется |
жирным шрифтом). |
|
|
Совокупность элементов, обрабатываемых в процессе счета оди наковым образом, объединяется в языке Алгол в массив., Массиву предшествует слово array. Для каждого массива, встречающегося в программе, должно быть дано описание, которое устанавливает наименование массива и количество его элементов. Количество эле ментов массива определяется границами — индексами, которые заключаются в квадратные скобки, например: array в [1 : 10000]; array С[а : в\ е : d\. Алгол не накладывает никаких ограничений на глубину и размеры индексации, но во всех случаях, когда индек сное выражение получается нецелым, оно округляется до ближай шего целого.
В вычислениях встречается два типа чисел. Числа первого
18
типа — целые. |
Эти |
числа не должны портиться округлением. |
В Алголе им |
соответствует указатель типа integer, например: |
|
integer i; j ; х. |
Числа |
второго типа — действительные; они обычно |
округляются. Им соответствует указатель типа real, например: real у, 2, а . Тип числа определяется совокупностью цифр и знаков, которыми число записано. Любое число, записанное при помощи знаков -\ 0123456789, есть целое число. Любое другое число — действительное, хотя его значение может быть целым, например 3,00. Тип переменной с индексом определяется показателем типа, написанным перед словом array, например: integer array [1 : 5]; real array у [h + 1 : А+10]. Если в описании массива тип не ука
зан, предполагается, |
что его элементы |
действительного типа. |
||
|
Логические ходы, |
встречающиеся в |
программе, |
записываются |
на |
языке Алгол в виде следующих булевых операций: |
|||
в |
Д —«И». Условие С 4 Д С 2 истинно, если С4 и С2 |
оба истинны; |
||
противном случае |
ложно. |
|
|
V — «ИЛИ». Условие Ci\fC2 истинно, если истинно С4 (незави симо от Сг ), или истинно С2 (независимо от С^; в противном случае ложно.
= —«ТОЖДЕСТВЕННО». Условие С 4 = С 2 истинно, если
Ci и С2 оба истинны или оба ложны; в противном случае |
ложно. |
3 — «СЛЕДУЕТ». Условие С4~)С2 истинно, если Ct |
ложно |
(независимо от С2 ), или С2 истинно (независимо от С4 ), в противном случае ложно.
~~| —«НЕ». Условие ~\С истинно, если Ct ложно; в противном случае ложно.
В сложных составных условиях, содержащих более одной бу левой операции, результат зависит от очерёдности, в которой эти операции выполняются. Для указания порядка выполнения опе
раций |
в языке Алгол используются скобки, например (~~\D Д /г <^ |
+ |
У) V'а>-в; вначале выполняется операция в скобках. |
Булевая переменная может принимать только два значения: true (истина) и false (ложь). Эти значения присваиваются булевой переменной булевым оператором присваивания, например:
А;=х<^у, т . е . значение |
А будет true, |
i f y > x , и false, if х>у. |
Совокупность булевых |
переменных, |
которые в программе обра |
батываются одинаково, объединяется в булевый массив. Для описа ния булевого массива в языке Алгол используется слово Boolean, например Boolean array [1 : 10, 8 : 14].
Для обозначения условных переходов, встречающихся в про грамме, используются условные операторы. В языке Алгол су ществует два типа таких операторов: 1) «если Р, то Q», например: if а = 0 then go t o M ; 2) «если Р то Q, иначе S», например if а = О then go to М elseS. В обоих случаях S означает некоторое логичес кое выражение.
Куски программы, которые выполняются многократно до осу ществления определенного условия, формируются в циклы. Про грамма цикла вводится в язык Алгол оператором цикла. В операторе цикла задаются начальные значения параметра, шаг сгО'НаьюцбШДА
3 библиотека сл'„^* I
и его последнее значение (или формула пересчета) и условие в виде логического выражения, например for а: = 1 step 1 until lOOdo L; та кая запись означает, что значения переменной а изменяются от 1 до 100 с шагом, равным единице; для каждого значения а выпол
няется оператор L . Вообще любая фраза типа Ei step Е2 |
until |
£ 3 , |
|||||
где EiE%Ez |
— арифметические |
выражения, |
есть элемент |
списка |
|||
языка. Он |
определяет часть |
последовательности |
£ 4 ; |
Ei + |
£2; |
||
Ei + 2 £ 2 ; |
т. е. элементы, меньшие или равные Е3, |
если Е2 |
> |
0, |
|||
и элементы, большие или равные Е3, если £ 2 |
< 0. |
|
|
|
|
Часто действие, выполняемое повторно, не может быть описано одним оператором. В этом случае группу операторов объединяют в один составной оператор. Составной оператор заключают в опе раторные скобки, ограниченные словами begin и end, например: fori = 1 step 1 until 100 do.
beginh = ( 3 x ' + 4 ) x (4 x ' + 5)= В Ы В ° Д (/г- h t 2)
составной оператор
Операторы друг от друга отделяются точкой с запятой. Про грамма вычислений, особенно если она сложная и громоздкая, для упрощения программирования, может быть разбита на несколь ко самостоятельных кусков — блоков. На языке Алгол каждый блок представляет собой ряд описаний и следующий за ним ряд
операторов, заключены в операторные скобки |
begin и end, |
напри |
||||
мер: |
begin Mi, |
М2; М3; ...; |
Мп; Вй |
52 ; |
...; Ве end. |
Здесь |
Мх...\ |
Мп — ряд описаний, Bt; |
В2 ; ...; Ве |
— ряд операторов. В опи |
|||
саниях заданы |
обозначения локализованных в блоке величин; эти |
обозначения в операторах, не входящих в блок, использовать нель зя. Описания в блоке всегда предшествуют операторам и отделяют ся друг от друга и от всех операторов точкой с запятой.
Значения переменной после выхода из блока, в котором она опи сана, теряются. Однако в языке Алгол может быть предусмотрен специальный класс переменных, сохраняющих свои значения во всей программе. Их называют собственные переменные. Перед опи санием типа собственной переменной или собственного массива должно стоять слово own, например own real х, у; own integer array а [1 : 10]. Часть программы, которая с различными параметрами используется в нескольких местах программы или в других про граммах, выделяется в процедуру. Процедуры имеют такое же зна чение, как стандартные программы при обычном программирова нии. Процедуре предшествует заголовок, который в простейшем случае имеет вид: procedure / (7Y. Pi\ ••\ Рп), где / — идентифика тор (наименование процедуры), а Р,; Р 2 ; ...; Рп — идентификаторы, обозначающие формальные параметры процедуры.
Часть программы, к которой относится идентификатор /, на зывается телом процедуры. Тело процедуры является оператором языка Алгол. Идентификатор служит наименованием выполняе
мого куска программы, |
например, procedure площадь треугольни |
|
ка (х, у, |
z); здесь слова |
«площадь треугольника» — идентификатор |
/, а (х, у, |
г) — формальные параметры процедуры. При выполнении |
20