Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Караваев, Н. И. Электронные цифровые вычислительные машины и программирование учеб. пособие

.pdf
Скачиваний:
14
Добавлен:
20.10.2023
Размер:
8.52 Mб
Скачать

- 250 -

 

выполнения контрольного соотношения SUi-2cL + CPS

cL—i.

При этом необходимо учесть, что в машине вычисления выполня­

ются с

некоторой, хотя

и весьма малой погрешностью. Поэтому

вместо

приведенного выше контрольного соотношения следует

проверять неравенство

)sUT-6ci.+coe2d--lj<£

t где

8- допустимая погрешность вычислений.

Вкачестве контрольного соотношения в некоторых случаях молено использовать метод подстановки*- Так, найденные корни могут быть подставлены в уравнение.

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

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

ствие

сбоев могут искажаться не

только результаты

счета, но и

сема

программа решения задачи,

которая хранится

в ЗУ. Поэтому

в процессе вычислений принимают меры для обеспечения сохран­

ности

программы. В этом случае широкое применение находит

об ­

новление програкмы. Сущность метода обновления программы

сос ­

тоит

в следующем.

 

Наряду с вводом в оперативную память программа записыва­ ется также и во внешних запоминающих устройствах. В процессе решения задачи программа периодически переписывается иа внеш­ них ЗУ в ОЗУ, при этом вычисления повторяются. При совпадении результатов перваго и второго просчетов переходят к следующему этапу вычиегений.

Прч -оставлении программы в зависимости от ее характера и особенностей выбирают один или комбинацию нескольких методов программного контроля вычислений.

 

Г Л А В А

IX

 

АВТОМАТИЗАЦИЯ ПРОГРАММИРОВАНИЯ

Si 9.1.

ОСНОВНЫЕ МЕТОДЫ АВТОМАТИЗАЦИИ ПРОГРАММИРОВАНИЯ

Решение задач на быстродействующих вычислительных ма­

шинах даёт

большой эффект. Однако

подготовка задачи для ре­

шения на ЭЦВМ, связанная с записью математического и логи­ ческого алгоритма решения задачи на языке машины, требует большой ватраты времени.

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

Программисты-математики по образованию, как правило, не обладают глубокими знаниями физической сущности решаемых

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

Кроме того, вся работа, завершающаяся составлением про­

граммы для машины, выполняется программистами

вручную, и, ес ­

ли быстродействие машин выросло с

нескольких

сотен операций

в секунду до нескольких миллионов,

то производительность

- 252 -

труда программистов почти не увеличилась. Средняя норма составления программ равна 5 команд в день, так что прог­ рамма, на которую аатрачиваются десятки человеко-месяцев, выполняется машиной аа несколько секунд. По этой причине приходится для полной загрузки одной современной машины на­ бирать большой штат программистов. Но эта мера ведет к зна­ чительному удорожанию решения задачи на ЭЦВМ.

Таким обраэом, в условиях бурного роста количества ЭЦВМ, повышения их быстродействия, увеличения числа задач, выно­ симых для решения на ЭЦВМ, ручное программирование оказы­ вается тормозом в деле эффективного и широкого использования ЭЦВМ.

Процесс составления программыработа во многом чисто техническая, особенно при распределении памяти, записи про­ граммы в истинных адресах и отладке готовых программ. Поэто­ му представляется возможность возложить на ЭЦВМ эти функции. Так, для перехода от условных адресов программы к ис­ тинным адресам с использованием ЭЦВМ в машину вводится рабо­ чая программа в условных адресах, таблица соответствия ус ­

ловных и истинных адресов и служебная программа. Служебная программа просматривает в рабочей программе

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

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

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

- 253 -

Такую программу удобно применять в тех случаях, когда обнаружен пропуск нескольких команд в программе и их нужно

вставить или когда изменились условия задачи и иэ

програм­

мы нужно выкинуть группу команд. В первом случае

вставляе­

мые команды надо запрограммировать с нового условного ад­

реса и указать его в нужном месте

таблицы соответствия

ад­

ресов. Во втором случае - при изъятии команд-добавление

 

вносят в рабочую

программу: адреса

команд,

которые надо

уб ­

рать, начинают с

новой буквы и не

вносят её

в таблицу соот­

ветствия адресов. При переработке программы для этих новых адресов не будет выделено место, а команды будут пропущены.

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

Чтобы еще больше уменьшить общие трудозатраты и ускорить получение соответствующих результатов при решении эадач на ЭЦВМ, необходимо предоставить широкому кругу специалистов различных отраслей знаний возможность HP только формулиро­ вать задач»*, но и подготавливать их к решению на ЭцВМ, поль­ зуясь в необходимых ^.чучьлх квалифицированной консультацией небольшого чиса математиков-програьписив.

Для этого целесообразно отказаться от ручного программи­ рования задач и добиться широкого внедрения таких систем автоматизации программирования, которые не требовали бы от специалистов различных профилей знания конкретных типов ЭЦВМ и больших затрат въсмьни на программирование.

Поэтому дальнейшее развитие автоматизации программирова­ ния привело к появлению целого ряда промежуточных языков меж­ ду языком математики и языком машины.

В настоящее время существуют различные методы автомати­ зации программирования, которые отличаются друг от друга вы­ бором языка, на котором описывается алгоритм, и способом реа­ лизации на машине алгоритма,записанного на этом языке. Среди

- 254 -

различных методов автоматизации программирования можно выде­ лить два наиболее распространенных.

Первый метод автоматизации программирования основан на качественном улучшении и увеличении объёма математического обеспечения ЭЦВМ, которое принято делить на внутреннее и внешнее. Под внутренним математическим обеспечением ЭЦВМ понимается совокупность алгоритмов решения задач, различ­ ных констант и т.п. /запас энаний машины/, зафиксированных в машине структурным способом, то-есть таким, при котором обращение к ним может быть выполнено автоматически, без до­ полнительных действий человека. К внешнему математическому обеспечению относятся библиотеки стандартных подпрограмм, программы типовых задач, реализация которых на машине воз­ можна только при участии человека.

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

Использование методов автоматизации программирования позволяет возложить на ЭЦВМ составление рабочих программ по заданным алгоритмам.

S 9.2 МЕТОД ШБЖОТЖВЫХ ПОДПРОГРАММ

С появлением первых программ для ЭЦВМ замечено, что су­ ществует большое число функциональных зависимостей, которые довольно часто встречаются как в разных программах, так и в пределах одной и той же программы. Программировать их всякий' раз крайне нерационально. Отсюда появилось желание научиться многократно использовать ранее составленные программы, cxpe-f

- 255 -

мление сохранить и использовать ранее накопленный опыт. Всё это привело к возникновению программирования, основанного на использовании заранее заготовленных частей программ. Послед­ ние получили название подпрограмм, а их коллекции-биЛлиотек подпрограмм /БП/ или стандартных подпрограмм /БСП/.

Хранение БСП осуществляется различными способами. Самый

простой способ

хранения БСП заключается в том, что

составлен­

ные

в условных

адресах СП храниться на программных

бланках.

При

составлении

основной программы нужные СП записываются

в действительных адресах и включаются в основную программу. Этот способ хранения прост и дает некоторый эффект, однако имеет недостаток, состоящий в необходимости многократного переписывания подпрограмм, что приводит к непроизводитель­ ным затратам времени и появлению ошибок, и поэтому он приме­ няется редко.

Наиболее распространенным является такой способ хранения, при котором вся БСП записывается во внешней памятина маг­ нитных лентах или магнитных барабанах. Если БСП сравнитель­ но невелика по объему, то она хранится в действительных ад­ ресах и перед вычислениями переписывается в ОЗУ на строго определенное место. При этом начало каждой СП, входящей в библиотеку, строго фиксировано.

В связи с тем, что в последнее время наблюдается тенден­ ция постоянного расширения библиотеки стандартных подпрограмм, то последний способ хранения при больших БСП оказывается не­ удобным, так как при небольшом объеме ОЗУ после ааписи БСП может не хватить места для основной программы. В связи с этим в настоящее время принято хранить БСП во внешней памяти в ус ­ ловных адресах.

Для того, чтобы использовать какую-либо подпрограмму, из числа имеющихся в БСП, необходимо выполнить вполне опреде­ ленную вспомогательную работу, связанную с поиском ее на внешнем накопителе, поиском свободного места в ОЗУ, размеще­ нием подпрограммы на этом месте и т.д. Программировать вспо­ могательную работу всякий раз нецелесообразно. Отсюда воз­ никли так называемые автоматизированные методы библиотечных

- 256 -

подпрограмм. Эти методы предполагают описание всей совокуп­ ности действий, связанных с применением и использованием подпрограмм в виде единого алгоритвч. Последний, обычно, ре­ ализуется ь виде специальной программы, которая всегда на­ ходится в ЗУ машины и в случае необходимости выполняет ука­ занную выше работу. Сами подпрограммы составляются с учетом требований, заложенных в спецпрограмме; то-есть являются стандартными. Отсюда и название-стандартные подпрограммы.

В настоящее

время применяются различные способы, обеспе-

ч'«ььощи'3 автоматизацию обращения к БСП.

 

!ia.; .олее широкое применение получили

компилирующая и

интерпретирующая

системы /КИС/, разработанные КУРОЧКИНЫМ В.М.

В этих системах

БСП обычш

хранятся во внешнем за попинающем

устройстве, поэтому объем

БСП практически

неограничен.

Компилирующая система состоит из БСП, таблицы характе­ ристик программ /каталог библиотеки/, компилирующей /состав­ ляющей/ программы.

В таблице характеристик помещается информация о разме­ щении БСП во внешней памяти. При этом указываются вид накопи­ теля /магнитный барабан, магнитная лента/, его номер, номер начальной ячейки или зоны. Эта таблица вводится в ОЗУ вместе

с компилирующей программой.

Компилирующая программа, занимающая обычно 120-150 ячеек, просматривает основную программу, зазывает и размещает на вы­ деленном массиве ОЗУ все СП, использу-мые в основной програм­ ме. Затем она производит настройку вызванных СП по месту рас­ положения, при этом условные адреса заменяет действительны­ ми и производит увязку СП с основной программой, в результа­ те чего в ОЗУ формируется ркончательно готовая основная про­ грамма .

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

-номер шкафа и лентопротяжного механизма, в которых

установлена лента с БСП; - печальный адрес массива ячеек для размещения компи­

лирующей программы,

-257 -

-начальный и конечный адреса той части основной про­

граммы, в которой содержатся все обращения к СП;

 

-

начальный и конечный адреса массива ячеек ОЗУ,

вы­

деляемого

для размещения СП.

 

 

Эти команды должны выполняться один раз и до первого

обращения

к СП в основной программе, но

после того, как

вся

рабочая программа будет введена в ОЗУ. Во время работы

о с ­

новной программы компилирующая программа

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

Интерпретирующая система состоит из

БСП, таблицы харак­

теристик, рабочего поля ОЗУ интерпретирующей /расшифровываю­ щей/ программы.

Интерпретирующая программа осуществляет выбор необходи­ мой СП из библиотеки, вызов ее на заданное рабочее поле ОЗУ с магнитной ленты, переработку адресов в соответствии с мес­ том этого поля в ОЗУ и организацию вычислений.

Рабочим полем интерпретирующей системы называется та часть /массив/ ОЗУ, которая отведена для размещения СП, вы­ зываемых иа внешней памяти. В ОЗУ рабочее поле находится не­ посредственно перед интерпретирующей программой. Если длина

рабочего поля будет меньше,

чем сумма длин СП, используемых

в основной программе, тогда

в ОЗУ в определенном порядке бу­

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

Вызов интерпретирующей программы в ОЗУ с магнитной лен­ ты должен осуществляться до первого обращения к СП в основ­ ной программе. В командах вызова указывается номер шкафа и лентопротяжного механизма, в которых установлена магнитная лента с БСП и начальный адрес рабочего поля для размещения СП. '

В отличие от компилирующей программы интерпретирующая программа во время работы основной программы находится в ОЗУ и работает при каждом обращении к СП в основной программе, расшифровывая команду обращения путем вызова и немедленного исполнения команд соответствующей СП.

Обе системы имеют свои достоинства и недостатки. Компи­ лирующая система по сравнению с интерпретирующей обеспечи-

- 258 -

вает большую экономик: машинного времени, так как она каждую СП вызывает из внешней памяти только один раз, однако при этом основная программа после вставки всех СП будет занимать много места в ОЗУ. Интерпретирующая система экономичнее ком­ пилирующей в отношении использования оперативной памяти, по­ скольку вызываемые из внешней памяти СП могут записываться на месте уже использованных СП. Интерпретирующая система ис­ пользуется главным образом в тех случаях, когда основная программа решения задачи вместе с необходимыми для ее рабо­ ты СП не помещается в ОЗУ машины.

S 9.3. ОБЩЕ СВЕДЕНИЯ ОБ АЛГОРИТМИЧЕСКОМ ЯЗЫКЕ

Более совершенным методом автоматизации программирова­ ния является метод, основанный на использовании алгоритмичес ких языков в качестве входных для описания вычислительных процессов.

В настоящем параграфе рассматривается необходимость уни­ версального языка программирования, требования, предъявляе­ мые к нему, а также дается краткий обзор основных синтакси­ ческих единиц языка АЛГОЛ-бО.

С момента появления первой вычислительной машины в pasличных странах разработано большое количество ЭЦВМ. Каждая из них имеет свой вполне определенный машинный язык.К настоя щему времени предложено много различных способов описания ал горитмов, некоторые из которых были рассмотрены выше.

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

-2Ь9 -

каких-либо объектов, а другой стороны, совершенно не по­ нимают друг друга, когда занимаются конструированием, опи­ санием и реализацией на конкретной машине вычислительных процессов. Поэтому возникла необходимость в разработке еди­ ного, доступного всей вычислителям, алгоритмического языка.

Чтобы наиболее полно отвечать целям общения, такой язык должен быть совершенным средством мышления. Человек, кон­ струируя вычислительный процесс, должен свободно думать на этом языке. Как известно, люди думают на том языке, на ко­ тором говорят. Поэтому с этой точки зрения ваиоолее есте­ ственным было бы предложить в качестве алгоритмического язы­ ка взять наиболее подходящий разговорный яаык какого-либо народа. Однако ни один разговорный яаык для этих целей не подходит и в первую очередь потому, что не дает правил одно­ значного толкования сделанной на нем записи. Требование одно­ значности вытекает из того, что современный алгоритмический язык должен быть не только средством мышления и общения, но и средством решения проблем автоматизации программирования.

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

Одним из основных требований, предъявляемых к алгорит­ мическому языку, является обеспечение возможности описания значительного класса вычислительных задач в наиболее ком­ пактном виде /гибкость языка/.

Ни один из рассмотренных способов записи алгоритмов не удов­ летворяет всем предъявляемым к универсальному языку програм­ мирования требованиям. Так, яаык блок-схем не предусматри­ вает формальных правил описания алгоритмов. Это приводит к

Соседние файлы в папке книги из ГПНТБ