Файл: Караваев, Н. И. Электронные цифровые вычислительные машины и программирование учеб. пособие.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 21.10.2024
Просмотров: 107
Скачиваний: 0
- 254 -
различных методов автоматизации программирования можно выде лить два наиболее распространенных.
Первый метод автоматизации программирования основан на качественном улучшении и увеличении объёма математического обеспечения ЭЦВМ, которое принято делить на внутреннее и внешнее. Под внутренним математическим обеспечением ЭЦВМ понимается совокупность алгоритмов решения задач, различ ных констант и т.п. /запас энаний машины/, зафиксированных в машине структурным способом, то-есть таким, при котором обращение к ним может быть выполнено автоматически, без до полнительных действий человека. К внешнему математическому обеспечению относятся библиотеки стандартных подпрограмм, программы типовых задач, реализация которых на машине воз можна только при участии человека.
Второй метод автоматизации программирования заключается в том, что язык для описания алгоритмов максимально прибли жается к обычной математической символике, не связанной с машиной. В этом случае программист составляет только схему программы и записывает ее в сокращенном виде на соответст вующем алгоритмическом языке. Вся же техническая работа по составлению и кодированию программы выполняется самой ЭЦВМ с помощью специальной программирующей программы.
Использование методов автоматизации программирования позволяет возложить на ЭЦВМ составление рабочих программ по заданным алгоритмам.
S 9.2 МЕТОД ШБЖОТЖВЫХ ПОДПРОГРАММ
С появлением первых программ для ЭЦВМ замечено, что су ществует большое число функциональных зависимостей, которые довольно часто встречаются как в разных программах, так и в пределах одной и той же программы. Программировать их всякий' раз крайне нерационально. Отсюда появилось желание научиться многократно использовать ранее составленные программы, cxpe-f
- 255 -
мление сохранить и использовать ранее накопленный опыт. Всё это привело к возникновению программирования, основанного на использовании заранее заготовленных частей программ. Послед ние получили название подпрограмм, а их коллекции-биЛлиотек подпрограмм /БП/ или стандартных подпрограмм /БСП/.
Хранение БСП осуществляется различными способами. Самый
простой способ |
хранения БСП заключается в том, что |
составлен |
|
ные |
в условных |
адресах СП храниться на программных |
бланках. |
При |
составлении |
основной программы нужные СП записываются |
в действительных адресах и включаются в основную программу. Этот способ хранения прост и дает некоторый эффект, однако имеет недостаток, состоящий в необходимости многократного переписывания подпрограмм, что приводит к непроизводитель ным затратам времени и появлению ошибок, и поэтому он приме няется редко.
Наиболее распространенным является такой способ хранения, при котором вся БСП записывается во внешней памятина маг нитных лентах или магнитных барабанах. Если БСП сравнитель но невелика по объему, то она хранится в действительных ад ресах и перед вычислениями переписывается в ОЗУ на строго определенное место. При этом начало каждой СП, входящей в библиотеку, строго фиксировано.
В связи с тем, что в последнее время наблюдается тенден ция постоянного расширения библиотеки стандартных подпрограмм, то последний способ хранения при больших БСП оказывается не удобным, так как при небольшом объеме ОЗУ после ааписи БСП может не хватить места для основной программы. В связи с этим в настоящее время принято хранить БСП во внешней памяти в ус ловных адресах.
Для того, чтобы использовать какую-либо подпрограмму, из числа имеющихся в БСП, необходимо выполнить вполне опреде ленную вспомогательную работу, связанную с поиском ее на внешнем накопителе, поиском свободного места в ОЗУ, размеще нием подпрограммы на этом месте и т.д. Программировать вспо могательную работу всякий раз нецелесообразно. Отсюда воз никли так называемые автоматизированные методы библиотечных
- 256 -
подпрограмм. Эти методы предполагают описание всей совокуп ности действий, связанных с применением и использованием подпрограмм в виде единого алгоритвч. Последний, обычно, ре ализуется ь виде специальной программы, которая всегда на ходится в ЗУ машины и в случае необходимости выполняет ука занную выше работу. Сами подпрограммы составляются с учетом требований, заложенных в спецпрограмме; то-есть являются стандартными. Отсюда и название-стандартные подпрограммы.
В настоящее |
время применяются различные способы, обеспе- |
||
ч'«ььощи'3 автоматизацию обращения к БСП. |
|
||
!ia.; .олее широкое применение получили |
компилирующая и |
||
интерпретирующая |
системы /КИС/, разработанные КУРОЧКИНЫМ В.М. |
||
В этих системах |
БСП обычш |
хранятся во внешнем за попинающем |
|
устройстве, поэтому объем |
БСП практически |
неограничен. |
Компилирующая система состоит из БСП, таблицы характе ристик программ /каталог библиотеки/, компилирующей /состав ляющей/ программы.
В таблице характеристик помещается информация о разме щении БСП во внешней памяти. При этом указываются вид накопи теля /магнитный барабан, магнитная лента/, его номер, номер начальной ячейки или зоны. Эта таблица вводится в ОЗУ вместе
с компилирующей программой.
Компилирующая программа, занимающая обычно 120-150 ячеек, просматривает основную программу, зазывает и размещает на вы деленном массиве ОЗУ все СП, использу-мые в основной програм ме. Затем она производит настройку вызванных СП по месту рас положения, при этом условные адреса заменяет действительны ми и производит увязку СП с основной программой, в результа те чего в ОЗУ формируется ркончательно готовая основная про грамма .
В рабочей программе необходимо предусмотреть команды об ращения к компилирующей программе, в которых должна быть укаьана следующая информация:
-номер шкафа и лентопротяжного механизма, в которых
установлена лента с БСП; - печальный адрес массива ячеек для размещения компи
лирующей программы,
-257 -
-начальный и конечный адреса той части основной про
граммы, в которой содержатся все обращения к СП; |
|
||
- |
начальный и конечный адреса массива ячеек ОЗУ, |
вы |
|
деляемого |
для размещения СП. |
|
|
Эти команды должны выполняться один раз и до первого |
|||
обращения |
к СП в основной программе, но |
после того, как |
вся |
рабочая программа будет введена в ОЗУ. Во время работы |
о с |
||
новной программы компилирующая программа |
не используется. |
||
Интерпретирующая система состоит из |
БСП, таблицы харак |
теристик, рабочего поля ОЗУ интерпретирующей /расшифровываю щей/ программы.
Интерпретирующая программа осуществляет выбор необходи мой СП из библиотеки, вызов ее на заданное рабочее поле ОЗУ с магнитной ленты, переработку адресов в соответствии с мес том этого поля в ОЗУ и организацию вычислений.
Рабочим полем интерпретирующей системы называется та часть /массив/ ОЗУ, которая отведена для размещения СП, вы зываемых иа внешней памяти. В ОЗУ рабочее поле находится не посредственно перед интерпретирующей программой. Если длина
рабочего поля будет меньше, |
чем сумма длин СП, используемых |
в основной программе, тогда |
в ОЗУ в определенном порядке бу |
дут сменять друг друга работающие СП, что, естественно вызо вет замедление в работе основной программы.
Вызов интерпретирующей программы в ОЗУ с магнитной лен ты должен осуществляться до первого обращения к СП в основ ной программе. В командах вызова указывается номер шкафа и лентопротяжного механизма, в которых установлена магнитная лента с БСП и начальный адрес рабочего поля для размещения СП. '
В отличие от компилирующей программы интерпретирующая программа во время работы основной программы находится в ОЗУ и работает при каждом обращении к СП в основной программе, расшифровывая команду обращения путем вызова и немедленного исполнения команд соответствующей СП.
Обе системы имеют свои достоинства и недостатки. Компи лирующая система по сравнению с интерпретирующей обеспечи-
- 258 -
вает большую экономик: машинного времени, так как она каждую СП вызывает из внешней памяти только один раз, однако при этом основная программа после вставки всех СП будет занимать много места в ОЗУ. Интерпретирующая система экономичнее ком пилирующей в отношении использования оперативной памяти, по скольку вызываемые из внешней памяти СП могут записываться на месте уже использованных СП. Интерпретирующая система ис пользуется главным образом в тех случаях, когда основная программа решения задачи вместе с необходимыми для ее рабо ты СП не помещается в ОЗУ машины.
S 9.3. ОБЩЕ СВЕДЕНИЯ ОБ АЛГОРИТМИЧЕСКОМ ЯЗЫКЕ
Более совершенным методом автоматизации программирова ния является метод, основанный на использовании алгоритмичес ких языков в качестве входных для описания вычислительных процессов.
В настоящем параграфе рассматривается необходимость уни версального языка программирования, требования, предъявляе мые к нему, а также дается краткий обзор основных синтакси ческих единиц языка АЛГОЛ-бО.
С момента появления первой вычислительной машины в pasличных странах разработано большое количество ЭЦВМ. Каждая из них имеет свой вполне определенный машинный язык.К настоя щему времени предложено много различных способов описания ал горитмов, некоторые из которых были рассмотрены выше.
Обилие машинных и промежуточных языков привело к тому, что большой труд математиков и инженеров по алгоритмизации вычислительных процессов приобрел локальный характер. Это в значительной степени зьтрудняло организацию общения матема тиков между собой. Получился известный парадокс: с одной сто роны математики и инженеры /независимо от того, на каком язы ке говорят, в какой стране живут/, вооруженные единой матема тической символикой, могут свободно общаться и понимать друг друга, когда дело касается описания физических процессов или
-2Ь9 -
каких-либо объектов, а другой стороны, совершенно не по нимают друг друга, когда занимаются конструированием, опи санием и реализацией на конкретной машине вычислительных процессов. Поэтому возникла необходимость в разработке еди ного, доступного всей вычислителям, алгоритмического языка.
Чтобы наиболее полно отвечать целям общения, такой язык должен быть совершенным средством мышления. Человек, кон струируя вычислительный процесс, должен свободно думать на этом языке. Как известно, люди думают на том языке, на ко тором говорят. Поэтому с этой точки зрения ваиоолее есте ственным было бы предложить в качестве алгоритмического язы ка взять наиболее подходящий разговорный яаык какого-либо народа. Однако ни один разговорный яаык для этих целей не подходит и в первую очередь потому, что не дает правил одно значного толкования сделанной на нем записи. Требование одно значности вытекает из того, что современный алгоритмический язык должен быть не только средством мышления и общения, но и средством решения проблем автоматизации программирования.
Задача автоматического составления программ может быть решена лишь в том случае, если, с одной стороны, язык дос таточно детально, однозначно и полно описывает вычислитель ные процессы, а с другой, если для перевода с этого языка на язык ЭЦВМ составлена и введена в машину программирующая программа. В этом случае составление схемы программы на ал горитмическом языке выполняется математиком, а задача сос тавления программы в коде машины может быть возложена на ЭЦВМ.
Одним из основных требований, предъявляемых к алгорит мическому языку, является обеспечение возможности описания значительного класса вычислительных задач в наиболее ком пактном виде /гибкость языка/.
Ни один из рассмотренных способов записи алгоритмов не удов летворяет всем предъявляемым к универсальному языку програм мирования требованиям. Так, яаык блок-схем не предусматри вает формальных правил описания алгоритмов. Это приводит к