книги из ГПНТБ / Сафонов, С. Ф. Вычислительная техника в инженерных и экономических расчетах (конспект лекций)
.pdfТ а б л и ц а VII
Нажать клавишу «Пуск-1
I
Отпечатать: 70 п
Примечание: двоеточие перед знаком синуса обозначает оперирование кла вишей пробел
В таких случаях следует разбивать функцию на несколько подфункций, если это возможно, так, чтобы каждую такую под функцию программа автоматического программирования суме ла бы разместить в отведенном массиве памяти (76—200).
2. Машина выводит на печать: «Не могу» после вычисления интеграла, что означает — шаг интегрирования слишком мал.
Данная СП может быть использована и как СПП, т. е. в виде составляющей.
По СП и СПП можно вычислять интеграл, если подынте гральная функция содержит не .более чем 125 различных посто янных. Формула подынтегрального выражения может содержать не более 15 левых и 15 правых скобок.
СП нахождения определителя матрицы и обратной матрицы.
Для нахождения определителя и обратной матрицы исполь-
6: |
83 |
Т а б л и ц а VIH
Нажать клавишу «Пуск-1»
■
Отпечатать 61 п
Набирать на клавиатуре элементы матрицы (по строкам), делая возврат каретки после набора каждого элемента
- 1
Отпечатать во — в случае вычисления определителя или ом — в случае вычисления обратной матрицы
-
ЭВМ печатает п = Отпечатать после знака равенства значение порядка матрицы
и сделать возврат каретки
зуется метод Леверье с видоизменением Д. К. Фадеева (см. А. К. Фаддеев и В. Н. Фаддеева. Вычислительные методы линейной ал гебры, 1960, стр. 295).
Схема использования программы как самостоятельной приве дена в табл. VIII.
Входе решения по дайной СП возможны следующие случаи:
1.Машина печатает «опред=0» и останавливается при сов местном использовании СП нахождения определителя и обрат
ной матрицы. Это означает, что исходная матрица особенная.
2.Машина останавливается (в случае нахождения опреде лителя матрицы). Это происходит оттого, что исходная матрица особенная.
3.Если при решении вводится порядок матрицы, больший 12, ЭВМ выводит на печать: «Не могу» и вновь запрашивает поря док: «п= ».
СП можно использовать в виде СПП, Кроме рассмотрения программ, в ДЗУ «Наири» имеются и
стандартные программы автоматического программирования, ис пользуемые как команды-псевдооперации, СП счетного режи ма и другие СП.
§ 4. ЯЗЫК АВТОМАТИЧЕСКОГО ПРОГРАММИРОВАНИЯ ЭВМ «НАИРИ»
Сущность автоматизации программирования. Программиро вание состоит из двух основных этапов: разработки логической схемы программы по математическому описанию решающего ал-
84
горитма и разработки программы по ее логической схеме. В дальнейшем под автоматизацией программирования понимается автоматизация второго этапа. Автоматизация программирования слагается из выбора формы задания исходной информации, раз работки алгоритмов получения требуемого результата, составле ния программы для выполнения указанных алгоритмов на элек тронной цифровой машине.
Результатом автоматического программирования является го товая программа, составленная в кодах команд определенной машины. Таким образом, форма представления требуемого ре зультата (т. е. выходной язык) заранее установлена. От формы задания исходной информации в значительной степени зависят:
сложность алгоритмов переработки исходной информации в требуемый результат, а значит сложность и трудоемкость разра ботки программы, осуществляющей автоматическое программи рование;
трудности, связанные с заданием исходной информации, а следовательно, и успех внедрения автоматического программи-, рования взамен программирования вручную.
Вопросу разработки сходных языков для автоматического программирования уделяется большое внимание;.
При автоматическом программировании, как и при програм мировании вручную, возможны два способа. Первый из них за ключается в том, что каждый раз по исходной информации про изводится составление всей программы заново. Программы, осу ществляющие автоматическое программирование первым спосо бом, получили название программирующих программ (ПП). Ме тод программирования, основанный на использовании ПП, назы вают методом программирующих программ.
Второй способ программирования заключается в том, что от дельные части программ сохраняют и как целое применяют при составлении новых программ. При втором способе заново про граммируют лишь такие части программ, которые еще не были «запасены». Коллекции заготовленных частей программ (так называемых подпрограмм) получили название библиотек под программ. Метод программирования, связанный со вторым спосо бом, называют методом библиотечных подпрограмм.
При методе библиотечных подпрограмм (кроме собственно подпрограмм) необходимо иметь все сведения, нужные для ис пользования подпрограмм. Без наличия таких сведений програм мисту приходилось бы каждую подпрограмму перед ее примене нием расшифровывать. Необходимые сведения о подпрограммах можно значительно сократить, если в библиотеку собирать не «случайно» полученные части программ, а специально разраба тываемые подпрограммы, удовлетворяющие определенным тре бованиям, дающим возможность описать совокупность действий, необходимых для применения произвольной подпрограммы в ви де единого алгоритма. В этом случае подпрограммы называют,
85
как уже говорилось, стандартными подпрограммами (СПП), а их библиотеку — библиотекой подпрограмм (БСП). Библиотека стандартных подпрограмм в совокупности с алгоритмом для их использования (который, в частности, может быть оформлен в виде программы) и правилами задания исходной, информации образует систему стандартных подпрограмм. Метод библиотеч ных подпрограмм при программировании вручную широкого рас пространения не получил. Значительно большие успехи достиг нуты на пути автоматизации программирования, основанного на применении БСП. Автоматизированный метод программирова ния с помощью БСП в дальнейшем называемся методсцм библио теки стандартных подпрограмм.
Возможна автоматизация программирования, при которой со четаются методы ПП и БСП.
Компиляция и интерпретация. Если программирование и выполнение программы на машине рассматривать как единый процесс решения задачи на машине, то возможны два порядка осуществления этого процесса. Первый порядок, который назо вем раздельным, предусматривает составление всей программы; выполнение программы на машине при заданных исходных дан ных, т. е. собственно решение задачи. Этот порядок широко рас пространен при ручном программировании и в ряде случаев пре дусматривается при автоматическом программировании. Второй порядок назовем чередующимся. Он заключается в том, что ис ходная информация о программе (или неполная программа и ис ходная информация о недостающих кусках) вводится в машину вместе с исходными данными задачи. Общий процесс решения задачи на машине состоит из чередующихся .этапов автоматиче ской переработки частей исходной информации о программе в «куски» программы и заканчивается получением исходного ре зультата задачи. При этом перерабатываемые частями исходной информации являются группы, кодов, которым соответствуют за конченные элементы программы, например, команды, операторы или подпрограммы. Куски программы, получающиеся на этапах автоматического программирования, после выполнения не сохра няются.
Автоматическое программирование при раздельном порядке решения задач называется компиляцией программы, а при чере дующемся порядке — интерпретацией (исходной информации о программе). Возможно сочетание компиляции с интерпретаци ей; заключающееся в том, что компилируется программа, в со став которой, кроме команд, включены специальные коды, назы ваемые псевдокомандами. Псевдокоманды интерпретируются уже при выполнении составленной программы на •машине.
Если при компиляции программа, осуществляющая автома тическое программирование, нужна только для получения про граммируемой программы, то при интерпретации интерпретиру ющая программа. находится в оперативной. памяти в течение, все-
86
го времени решения задачи. Каждый из методов (компиляция и интерпретация) имеет свои достоинства, однако код интерпрета ции является более гибким. Метод интерпретации упрощает за дачу распределения памяти, хотя и требует большого дополни тельного расхода памяти для хранения самой интерпретирую щей программы. При методе компиляции более экономно расхо дуются ячейки оперативной памяти, так как компилирующая программа в ней во время решения задачи не присутствует.
Ввиду того, что способы программирования можно любым образом сочетать с порядком'решения задач на машине, возмож ны ПП как компилирующие, так и интерпретирующие; точно так же метод БСГ1 может осуществляться как путем компиляции, так и путем интерпретации.
Трудности подготовки задам на языке ручного программиро вания привели к развитию методов, допускающих автоматиза цию, т. е. возможность большую часть работы по программиро ванию производить с использованием той же машины.
Трудность ручного программирования состоит в необходимо сти понимания специфики выполнения всех команд из алфавита системы команд данной машины. Алфавит команд современной ЭВМ обширен и специфичен, что затрудняет немедленное ис пользование языка ручного программирования неспециалиста ми вычислительной техники. Умение пользоваться языком ручно го программирования обычно приобретается не днями, а меся цами кропотливого труда, если за это дело берешься впервые. В языке автоматического программирования (в языке АП) про граммист перекладывает алгоритм на язык машины не в опера циях, а в операторах. Последние состоят из больших групп опе раций, составляемых самой машиной безошибочно.
Несмотря на существенные недостатки, язык РП, наверное, еще долго будет оставаться отличным методом составления ком пактных программ.
Составление программ самой машиной по простому языку об щения — языку АП — одна из особенностей «Наири». В долго временной памяти машины имеется программирующая програм ма, способная ио простому языку общения, близкому к матема тическому, составлять программы на языке ручного программи рования сразу же по мере общения с машиной в языке АП. Про граммирующая программа — программа АП — принимает ин формацию, составляет по мере ее приема рабочую программу в символах внешнего кода языка РП, которую легко вывести в слу чае необходимости из оперативной памяти машины в виде пер форированной ленты или в виде машинописной печати програм мы на широкой бумажной ленте.
Главное достоинство языка АП — экономия времени при со ставлении программы.
Главный недостаток — невозможность составления компакт ных программ. В языке АП машина составляет программы в не
87
сколько раз длиннее, чем это сделал бы программист средней квалификации.
Можно сказать, что при пользовании языком АП, с одной сто роны, экономится время, с другой,—неэкономно расходуется па мять. Поэтому лучшим методом составления программ является комплексный метод программирования, в котором программы, написанные в языке АП, стыкуются с программами, написанны ми в языке РП. Однако так нельзя утверждать на все случаи жизни. Одни задачи хорошо программировать только в АП, дру гие— в РП.
Приступим теперь непосредственно к изучению языка АП ЭВМ «Наири». Алгоритмический язык АП содержит:
1. Буквы с, в, у, д, л, м, н, х, а, б, г, ч, п, о, е, /, р, т, ш, т, s, t, ы, которые используются для обозначения индексированных или неиндексированных переменных только в форме с плаваю щей запятой. Величины, приписываемые программой АП этим буквам, располагаются соответственно в 33—55 ячейках ОЗУ.
2.Знак запятой.
3.Цифры 0, 1,2, ..., 9, в которых, используя запятую, можно образовать любое число в форме с плавающей запятой меньшее по абсолютной величине 1018 и в любой целый показатель сте
пени.
4. Буква л, которая всегда обозначает величину 3,14159265 160056060791015.625000.
5. Знаки отношений = , > , < , =£'.
6. Символы функций sin, cos, tg, arcsin, агссоэ, aretg exp, In, lg, У-
7.Символы знаков + , —, /, !.
8.Левую и правую скобки.
9.Знак модуля (Внимание! Обозначается при печати на те
летайпе двумя символами «!»).
10.Буквы i, /, k , которые служат только для обозначения ин дексов и целочисленных переменных.
11.Букву п только для обозначения целочисленных перемен
ных:
12.Слова или группы слов, называемые операторами,
13.Символы клавиш телетайпа: «ВК», «Пробел».
Операторы АП
Операторы присваивания.
Оператор допустим... служит для присвоения переменным конкретных числовых значений, а также значений других пере менных и их модулей, например:
1 : допустим л = 0,2 —.
Букве Л присвоится значение 0,2 в форме с плавающей запятой. Внимание! Во всех примерах перед символом .оператора, как это делается1в настоящих программах, будем ставить Номер опе ратора (в примерах произвольный). Символ «Пробел» будет
обозначаться условно символом «:», потому что настоящий про бел можно не заметить. Символ клавиши телетайпа ВК (возврат каретки) будем обозначать условно через символ «—».
Еще пример:
25 : допустим м = \л) : х — — \л\ : у = —5 : ш = (135) : (235) = = (236) : (136) — п : « = 3 —.
Что же произойдет после прохождения машиной оператора из второго примера?
Переменная м станет равной по модулю переменной л, пере менная х станет равной л с обратным знаком, переменная у ста нет равной минус пяти, переменная ш станет равной содержимо му ячейки 135, а содержимое ячейки 235 приравняется к содер жимому ячейки 236, содержимое ячейки 136 станет равным цело
му числу 3. |
|
■ ' |
такие слова: |
Программирующая |
программа не воспримет |
||
1: допустим а = |
-—ш; |
(также и для букв i, j, k, |
потому что эти |
2 -.допустим п = |
0,05 |
||
буквы используются только для целочисленных переменных); 1: допустим п. = — 3 (целочисленным переменным нельзя присва ивать отрицательных значений);
1 : допустим а — п (целочисленным переменным нельзя присваи вать значения переменных, которые могут Иметь значения толь ко в числах в форме с плавающей запятой и наоборот); 1: допустим а— в + с (оператор допустим не вычислительный);
1: допустим а = —!5! (можно присваивать модули букв, но не мо дули цифр).
При такого рода ошибках программа АП выводит признак ошибки символ «*» и возвращает печатающую каретку телетайпа в исходное состояние.
Примечание. Переменные в операторе можно разделять мно гими проблемами, но не менее одного.
Оператор вставим... служит для изменения значений перемен ных без индексов на заданную величину. При этом значения ин дексов и переменной можно изменять только на целое число.
Пример. 3: вставим 'у = у + 0,1275: в = в + 23,5 : п = п —2.
Целочисленные переменные i, j, k, п с помощью оператора вста вим можно изменять в любую сторону, а остальные — только в сторону увеличения.
Оператор вычислим... служит для организации вычислений по формулам, составленным из символов языка АП. Например:
3 : вычислим ш = (: sin (be+ я / 12))2 / ]/ : exp 0,3 + а : sin х : cos х.
Переменная ш этим оператором приравнивается формуле
sin8 ( б с +
ил --------- 7 7 = -------- \~а s>n (х cos х )-
У е0,3
Из примера видно:
1. Перед всеми символами элементарных функций (кроме У ) нужно делать пробел, иначе символ функции воспринимается как произведение букв.
2. Одна «подфункция» отделяется от другой символами «4-»
илЦ «—».
3.Функцию нельзя непосредственно возводить в степень, а только с использованием скобок.
4.В формуле не могут находиться переменные i, /, k , п, а пе ременные i, j, k могут быть использованы в формуле в виде ин дексов.
5. Глубина скобочных выражений не может быть более 15 (д; е. можно испрльзовать не более 15левых и 15 правых скобок).
6. Аргумент тригонометрических функций воспринимается в радианной мере.
7; В операторе вычислим можно использовать только одну формулу.
8. Из всех символов языка АП в формулах нельзя использо вать символ модуля.
9. Формулу можно задать и перед операторами сразу по сле ввода машины в режим АП.
Ввод машины в режим АП. Для этого необходимо нажать и отпустить клавишу «Пуск-1» на пульте сигнализации. Далее от печатать букву ч (число), а потом дату решения задачи, напри мер;
ч-
18—5—1972 г.
После этого следует отпечатать сочетание АП — автоматическое программирование. Машина сразу же повторит дату и проставит номер программы, в данном случае первый, а также напечатает, в конце свое название. В итоге получится:
ч |
|
18—5—1972 г. |
|
ап |
«Наири» |
18—5—1972 г. |
После этого можно приступать к составлению программы в язы ке АП.
Итак, формулу можно давать и в начале программы, т. е. не посредственно после ввода машины в режим АП. Например:
ч |
|
18-5—1972 г. |
|
ап |
«Наири» |
18—5—1972 г. |
|
У = х12!4 _ |
|
1 : допустим х = ____ |
|
2: вычислим у~ |
|
90
Как видно из примера, в операторе вычислим уже излишне пере менной у присваивать формулу, которую машина уже восприня ла вместе с образом буквы.
В начале программ, так же как и после оператора вычислим,
нельзя задавать более одной формулы. |
, |
||
10. |
В случае печати |
графика вычисленных значений после |
|
оператора |
вычислим должен |
обязательно |
стоять оператор хра |
ним. |
|
|
|
Оператор введем... Это оператор ввода. Он присваивает зна чения переменным в процессе прохождения программы.
Если машина, например, встретит оператор 43 введем а: в: :с:х — то она останавливается на вводе информации по этому оператору. После этого можно вводить исходную информацию по переменным оператора введем набором на клавиатуре теле тайпа значений соответствующих переменных. После ввода по следней переменной машина сама перейдет на продолжение про граммы.
Оператором введем нельзя вводить значения букв i, j, k, п. Операторы переходов. Оператор безусловного перехода ид ти к... употребляется для безусловной передачи управления. При
мер: '23: идти к 3— Встретив такой оператор, машина перейдет к исполнению
оператора 3.
Оператор условного перехода если... , идти к...
Пример: 45: если х < 12: идти к 5. ЭВМ перейдет к оператору 5 при условии, если в момент исполнения оператора х<12. В про тивном случае оператор пропустится.
Операторы печати переменных. Оператор печатаем с... зна ками... служит для печати значений букв с заданным числом зна ков после запятой. Пример 12: печатаем с 5-ю знаками х\у:А_ . Исполняя этот оператор, машина введет на печать значения бука
.г, у, а, полученные в вычислениях перед оператором печати: Оператор не в состоянии вывести значения переменных с ко
личеством знаков после запятой более 9,* а также не может вы вести значения целочисленных переменных.
Не рекомендуется выводить оператором значения более трех букв, т. к. значения уже четырех букв (с 9-ю знаками после за пятой) не уменьшаются в одной строке бумажной ленты теле тайпа.
Оператор интервал... служит для пропуска заданного числа строк при печати, т. е. для отделения одного выводимого масси ва от другого. Пример 56: интервал 3. При исполнении операто ра машина три раза переведет строку телетайпа.
Оператор спросим дает возможность контролировать зна чения переменных в процессе вычислений. При нажатой клавише «Вариант» на пульте сигнализации машина, встретив оператор спросим, останавливается, и на пульте сигнализации загорается лампочка «Команда ввода».
91.
После этого можно набрать на клавиатуре телетайпа символ переменной, значение которой нас интересует, и набрать вслед за этим символ знака равенства. Машина напечатает численное значение заданной переменной.
Если спрашивать значение индексированной переменной, то для этого ее следует набирать с цифровым индексом. У двухиндексных переменных в данном случае следует делать пробел ме жду индексами.
Для пуска машины после вывода запрошенных переменных нужно отжать клавишу «Вариант» на пульте и сделать возврат каретки телетайпу.
Операторы печати графиков. Оператор храним... обозначает, что машина должна запомнить заданное число значений указан ных переменных, которые нужны будут в последующем для пост роения графика. Пример 12 : храним 12 г/— или в случае последующего вывода графиков двух переменных: 12 : храним 12 у : Z—
Хранить индексированные переменные оператор не может. Количество хранимых значений функции определяется по
формуле
где а — «нижний» предел отрезка, на котором строится график; в — «верхний» предел отрезка; й — шаг.
Оператор начертим... предусмотрен для печати графиков функций.
Одновременно можно выдать на печать не более двух графи ков.
Пример 23 : начертим 1 гр. или 23: начертим 2 гр. Перед опе ратором начертим обязательно прохождение оператора храним.
Покажем построение графиков функций на4 полном приме ре. В целях иллюстрации приема построить график синусоиды и косинусоиды
ч
18-5-1972 г.
ап
18—5—1972 г. 1 «Наири» y= :sin х -
1 :допустим х = О—
2:вычислим г/_
3:храним 61 у -
4 : вычислим а = :cos х_
5 : храним 61 d_
6:вставим х = х + 0,31415—
7:если х ^ 18, 84 : идти к 2_ 8 : начертим 2 гр.
92
