Файл: Алферова, З. В. Математическое обеспечение экономических расчетов с использованием теории графов.pdf

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

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

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

Добавлен: 21.10.2024

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

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

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

Исходя из результатов данного этапа отбора оператор может либо продолжить отбор, либо отказаться от результатов преды­ дущего отбора. Это достигается наличием двух рабочих полей АЛ и АР. Отбор происходит из языков, находящихся в одном по­ ле, а отобранные по заданному признаку языки помещаются в другое поле. Таким образом, на каждом этапе отбора имеются два множества языков: множество языков, из которого производился отбор, и множество отобранных языков. Задавая признак поля, содержащего то или иное множество языков, оператор может уп­ равлять процессом отбора.

В/од

из основной

Обращений, н СП-2

СП-1

j

программы

 

5

 

 

 

 

 

 

 

 

Обращение н ОБМПМ

СП-2

 

 

Выход

в основную

 

 

 

j

программу

 

Обращение н cn-i

Рис, 316. Блок-схема программы обращения — ОБРА Щ

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

Укрупненная блок-схема программы обращения приведена на рис. 31 б. Эта программа ОБРАЩ обеспечивает вызов соответст­ вующих программ системы при работе основной программы.

Укрупненная блок-схема программы диалога приведена на рис. 32. В этой блок-схеме символом С обозначена ячейка, содер­ жащая результат отбора, а символом X — ячейка, в которую по­ мещается ответ оператора.

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

И. Заказ 4230.

161


 

Вход из прогроммь/

/ Печать с от дет

,

. ОЬРЯЩ '

оператора В ячейке х.

Печать с^твет

 

изменение

^ оператора В ячейке х^

8

призп

 

Ф

 

 

 

 

В оздрат В основную

 

9

программу

Рис. 32. Блок-схема диалога с машиной — ОБМПМ

Для возможного использования данного алгоритма в других машинах и, в частности, в машинах, имеющих транслятор с языка АЛГЭК-С, ниже приведен алгоритм априорного выбора в этом языке:

КЗ:

К4:

M l :

М2:

К5:

нач

текст

А, Б вид 'С(128)';

текст С вид 'С(18)';

цел мае СФ [4];

сост

мае АЛ

[30]. (текст

Т1 вид 'С(12)', цел мае M l [6]);

сост

мае АР

[60]. (текст

Т вид 'С (12)',

цел мае М [6]);

цел К П , КОБЛМ, ОБЛМ, ОБЩ, П Р И З П , СЧ, СЧ1, КОНСТ,

П Р И З Ш ,

СЧЛ,

 

К21, К31,

К41, Д;

 

 

 

 

переключатель Р : Н 1 , Н2,

НЗ, И4, Н5, Н6,

Н7, Н8;

О Б Л П : =978656;

 

О Б Щ : =917504; ТС 1 : = 14600474540;

ТСЗ: = 14614721476; ТСЧ: =417504; ТС5: =974848;

 

 

КВРА: = 13938389956;

К В Р Б : =267386880;

 

 

 

библ ('ввод

Г,

'000',

АЛ,

46);

библ

('ввод

3', '0',

СФ);

для

И : = 1:128 цикл нач А

[элем

И ] : =

'—'; Б

[элем

И ] : =

кон;

С Ч Л : = 0 ;

 

 

 

 

 

 

 

 

 

 

для

И

• 1 : 30

цикл

нач если АЛ [И] . Т1 =

 

 

то

на МГ;

 

 

 

 

 

 

 

 

 

 

 

 

С Ч Л : = С Ч Л + 1 ;

кон;

 

 

 

 

 

 

 

 

К О Б Л П : = СФ [1] Л О Б Л П ; К1: = 1; С Ч : = 0 ;

 

 

 

для

И : = Г:СЧЛ

 

цикл нач

 

 

 

 

 

 

если

АЛ [И] . M l

[1]

Л О Б Щ = О Б Щ

T o j i a

М2;

 

если

А Л [ И ] . M l

[1]

Л К О Б Л П ^ К О Б Л П

то

на МЗ;

АР

[ К 1 ] : = А Л [4]; СЧ: = С Ч + 1 ; кон;

 

 

 

 

П Р И З П : = 1; П Р И З П 1 : = 1; С: = ОБЛ П Р И М —_Я_универ-е;

О Б Р А Щ

(666,0);

 

 

 

 

 

 

 

 

 

 

ШАГАН: = 1';

КОН.ФП: =4096;

 

 

 

 

 

С:='внедренные

 

 

 

языки';

О Б Р А Щ (77,0); Д : = 1; на Н;

162


H I :

ШАГФП: = 1;

Ш А Г А Н : = 2 ;

С : = ' т н п

 

и н ф о р м а ц и и . ^

';

 

О Б Р А Щ (0,7798784);

Д : = 2 ;

на

Н;

 

 

 

 

 

 

Н2:

С: ='категория —

информ-и;

 

 

 

 

 

 

 

 

 

 

О Б Р А Щ (0,32061259776);

Д : = 3 ;

на Н;

 

 

 

 

НЗ:

С: =

'основные

 

 

операции';

 

 

 

 

 

 

 

 

О Б Р А Щ

(0,114688);

Д : = 4 ;

на

Н;

 

 

 

 

 

 

Н4:

С:='вепом—ые

 

 

операции';

 

 

 

 

 

 

 

 

 

ОБРАЩ

(0,1792); Д : = 5 ;

на

 

Н;

 

 

 

 

 

 

 

Н5:

если П Р И З П = 1

то на М4; П Р И З П 1: =31 ;_на М5;

 

 

М4:

П Р И З П 1 : = 1;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М5:

С Ч 1 : - 0 ; для И: = 1 : С4 цикл, нач.

 

 

 

 

 

 

 

К О Н С Т : = А Р

[ П Р И З П ] . М

[3]ЛТС1;

 

 

 

 

 

 

если

КОНСТ

Л Т С З = 0

то

на

Мб;

 

 

 

 

 

 

если

КОНСТ

Л Т С Ч = 0

то

 

на_ Мб;

 

 

 

 

 

 

если

КОНСТ

Д Т С 5 = 0

то" на

Мб;

 

 

 

 

 

 

АР [ П Р И З П 1 ] : = А Р [ П Р И З П ] ; П Р И З П 1 : = П Р И З П 1 + 1;

 

 

С Ч 1 : = С Ч 1 + 1;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Мб:

кон;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

С : = ' у к а з а н ы

 

Т,

НОТ,

КАТ';

ОБРАЩ

(666,0);

 

 

Д : = 6 ; на

Н;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Н6:

если

П Р И З П ^ П Р И З П !

то на

Н8; ШАГФП: = 1;

Ш А Г А Н : = 3 ;

 

С:='совпадает

 

 

нотация';

О Б Р А Щ

(0,114688); Д : = 7 ;

на Н;

Н7:

КОНСТ: = С Ф

[1] Л 917504;

 

 

 

 

 

 

 

 

 

 

С: = 'категория — пользв-я'; О Б Р А Щ

(0, КОНСТ);

 

 

М7:

если

КОНСТ=262144

то на М8; КОНСТ: = К В Р Б ;

на_М9;

 

М8:

КОНСТ: = К В Р А ;

 

 

 

 

 

 

 

 

 

 

 

 

М9:

С Ч 1 : = А Р

[ П Р И З П ] . М [3] Л

КОНСТ; К21: = П Р И З П + 1 ;

 

 

К 3 1 : = С Ч — 1 + П Р И З П ;

 

 

 

 

 

 

 

 

 

 

 

 

для

И: = К21:К31

цикл нач К 4 1 : = А Р

[И] . М [3] Л

КОНСТ;

'

 

если

К П Ж 4 1

 

то на

М10;

 

К И : = К 4 1 ;

 

 

 

 

М10:

кон;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Кб:

если

П Р И З П = 1

то

на

М П ; П Р И З П 1 : = 3 1 ;

на

М12;

 

М П :

ПРИЗП1:1: = 1;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М12:

С Ч 1 : = 0 ;

для

И: = П Р И З П : К 3 1

цикл

 

 

 

 

 

 

нач

если

АР

[И] . М

[3] Л К О Н С Т ^ К П

то на_М13;

 

 

А Р " [ П Р И З П 1 ] : = А Р

[И] ; П Р И З Ш : = П Р И З П 1 + 1; С Ч 1 : = С Ч 1 + 1;

М13:

кон;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

С ='языки

С

 

мин

 

время

 

'; О Б Р А Щ

(666,0);

 

 

Д : = 8 ; на

Н;

 

 

 

 

 

 

 

 

 

 

 

т М14;

 

Н8:

С:='этимологический

 

 

'; О Б Р А Щ

(0,1792);

 

Н :

библ

('стоп', X ) ;

библ

('набор', X I ) ;

 

 

 

 

 

 

если

Х1 = 1 то

на М15; если

Х ^ 1

то

на М14;

 

 

 

"ПРЙЗП: = П Р И З П 1;

С Ч : = С Ч 1 ;

 

 

 

 

 

 

 

М15:

«а Р

[ Д ] ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М14:

кон;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

проц О Б Р А Щ

(У1, У2);

знач

У1, У2;

цел

У1, У2;

 

 

нач

цел

СЧ2,

СЧЗ;

.переключатель

Р1:П,

П1;

 

 

К2:

Б [элем 30:47] : = С ;

библ

('АЦПУ', '—', '—', '—\ Б, ' — ' ) ;

 

 

если

У1=666

то _на

Л 1 ;

если

У 1 = 7 7

то_ на Л2;

 

К 1 :

К О Н Ф П : = С Ф

 

[ШАГФП]ЛУ2;

 

 

 

 

 

 

 

Л2:

СЧ1: = 0; если

П Р И З П = 1

то на ЛЗ; П Р И З П 1:== 31 ;_н_а Л4;

 

Л З :

П Р И З Ш : = 1; В : = 0 ;

 

 

 

 

 

 

 

 

 

 

 

 

}63


Л 4 -

для

И : = 0 : С Ч

цикл

нач

 

 

 

 

 

 

"ёТли

АР

[ И + П Р И З П ] . М [ШАГАН] Д К О Н Ф П ^ К О Н Ф П

то_н_а

Л5;

Л 5 :

1 : = С Ч 1

+

1; АР [ П Р И З П 1 + В ] : = А Р [ П Р И З П + И ] ; В : = В + 1 ;

 

кон;

 

 

 

 

 

СЧ¥=1 3£„Н Л 9 ;

 

 

Л 1 :

если

С Ч 1 = 0

то _на Л6; если

 

 

 

Х:1;_на Л7;

 

 

 

 

 

 

 

 

Л 6 :

Х : = 0 ; н а П ;

 

 

 

 

 

 

 

 

Л 9 :

Х : = 7 ;

 

 

 

 

 

 

 

 

 

Л7 -

С Ч 2 - = С Ч 1 -

Д - = 2 '

 

 

 

 

 

 

П 1 :

С Ч 2 - = С Ч 2 — 3 ; если СЧ2>0_то_на Л8;

С Ч З : = С Ч 2 + 3 ; Д : = 1; на

Л9;

Л 8 :

С Ч : = 3 ; К З : = Т + П Р И З П 1 ; К 1 : = 2 0 ; К 2 : = 3 1 ; С Ч З : = ^ С Ч З - 1 ;

 

 

_для

И : = 0 : С Ч З

цикл

нач

В : = И х 2 0 ;

А [элем К 1 + В : К 2 + В ] : = АР

 

[КЗ]. Т1;

 

 

 

 

 

 

 

 

 

 

К З : = К З + 1 ;

кон;

 

 

 

 

 

 

 

К 1 : = 4 0 ; К 2 : = 5 1 ; С Ч З : = 2 ;

 

 

 

 

 

Л Ю :

А [ э л е м _ К 1 : К 2 ] : = '

 

 

 

; М : = К 1 + 2 0 ,

 

 

К 2 : = К 2 + 2 0 ;

 

 

 

 

 

 

 

 

 

С Ч З : = С Ч З — 1 ;

если

СЧЗ¥=0

то

на

ЛЮ;

 

 

 

библ

('АЦПУ',

А, ' — ' ) ; на

Р1

[ Д ] ;

 

 

 

П :

J<OH;

 

 

 

 

 

 

 

 

 

 

Так как в АЛГЭК-С невозможно обращение из какой-либо про­

цедуры в другую, то создана искусственная процедура

в поле са­

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

Оператор просматривает распечатанные имена языков данного

этапа отбора; если языков больше одного, оператор

просматрива­

ет имена языков, отобранных на данном этапе. Если

выбыли наи­

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

щем этапе осуществляется из поля языков предшествующего

эта­

па. В этом случае оператор должен занести в сумматор

единицу,

означающую неудовлетворительность отбора. Если в сумматор

за­

носится нуль, то отбор продолжается из языков нового поля.

 

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

матор записывается 0, в счетчик адресов добавляется 1,

нажима­

ется кнопка «пуск», процедура анализирует содержимое

суммато­

ра и выполняется описанный выше порядок действий.

 

 

Программе обращения ОБРАЩ в АЛГЭК-программе соответ­

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

все

ее

функции.

 

 

Процедура ОБРАЩ содержит два параметра: У\— параметр,

определяющий порядок действия в процедуре, У2 — константа

вы­

деления параметра из ячейки анкеты. Процедура выполняет сле­ дующие действия:

1) выделение оператором с меткой К1 содержимого ячейки СФ,

164


номер которой содержится в ячейке ШАГФП, и записывает его в рабочую ячейку КОНФП;

2) определение поля

с

отобранными языками.

Указатель

по­

л я — ячейка

ПРИЗП . Из

поля языков выбираются

те, которые

со­

ответствуют

данному этапу

отбора.

 

 

Количество отобранных языков подсчитывается в ячейке СЧ1. Номер ячейки анкеты, в которой указан признак отбора на дан­ ном этапе, содержится в ячейке ШАГАН. Отобранные по данному, признаку языки переписываются в другое поле.

В АЛГЭК-программе этой операции соответствует участок с Л2 по Л5;

3)печать наименования этапа выбора, которое определяется текстовой величиной С. В алгоритме этому соответствует участок, имеющий метку К2;

4)определение количества отобранных языков для организа­ ции диалога оператора с машиной с целью управления ходом от­ бора. Если количество языков равно нулю, то Х: = 0, если число

языков равно единице, то X:

= 1 , и если языков больше

одного, то

Х: = 7. Этой части

процедуры

соответствует

участок с Л1

по Л7;

5) печать имен

языков нового поля, если содержимое

счетчика

не равно Н У Л Ю . Этой части соответствует

участок алгоритма с Л7

по П.

 

 

 

 

 

В зависимости от значения параметра У\ устанавливается сле­

дующий порядок выполнения процедуры:

 

 

 

при Уi = 0 выполняется вся

процедура;

 

 

 

при Уi = 77 пропускается

первый этап.

Содержимое

ячейки

КОНФП задается в основной программе;

 

 

 

при У] = 666 пропускаются первый и второй этапы.

 

 

В основной программе цикл с меткой КЗ заполняет

пробелами

строки печати заголовка (А) и строку имен языков (Б).

 

 

Цикл с меткой

К4 подсчитывает количество языков,

введенных

в поле А.

 

 

 

 

 

Участок с метки M l по метку М2 обеспечивает отбор

 

в рабочее

поле тех языков, которые удовлетворяют параметру «область при­ менения», заданному в стандартной форме, и параметру «универ­ сальность». Константа ОБЛП является выделителем из СФ «об­ ласти применения», константа ОБЩ — признака «общности».

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

ре ОБРАЩ.

 

 

 

 

 

 

 

 

Участок

алгоритма

от

метки

К5 по

метку

H I

соответствует

от­

бору внедренных языков.

 

 

 

 

 

 

Участок

алгоритма

от

метки

H I по

метку

Н2

обеспечивает

от­

бор языков по признаку «тип информации».

Участок алгоритма с метки Н2 по НЗ соответствует отбору языков по признаку «категория информации».

Участок алгоритма с метки НЗ по Н4 обеспечивает отбор язы­ ков по признаку «основные операции».

165