3. Метод имитации многопроцессорного калькулятора.
В данном методе используется табличный процессор.
1 |
1440 |
|
2 |
100 |
|
3 |
2200 |
|
4 |
8720 |
|
5 |
420 |
|
6 |
300 |
|
7 |
7600 |
400+Х3*3+Х9 |
8 |
200 |
|
9 |
600 |
|
В ячейке Х3 запишем формулу: Х6*К63 + Х8*К83. Далее по всем ячейкам записываются соответствующие формулы из спецификационной карты.
Основные этапы данного метода:
записываем условия
создаем решающую среду
табличный процессор решает задачу
Табличный процессор необходимо превратить в калькуляционную среду, то есть, настроить его на необходимые вычисления путем записи формул во все ячейки. Далее при нажатии клавиши F9 будут производиться вычисления.
Главную трудность в данном методе составляет процесс записи формул в ячейки. Для автоматизации этого процесса можно написать программу, осуществляющую настройку калькуляционной среды. Задачей данной программы будет являться составление системы линейных алгебраических уравнений (СЛАУ). Предварительно в исходную таблицу необходимо записать начальные условия, используя конструкторскую спецификацию.
Введем переменные, меняющие свои значения: \i , \j , \kij , \xi , меняющие свои значения. На первом шаге, согласно конструкторской спецификации, зададим начальные условия: \ i = 1, \ j = 4, \ Kij = 3.
|
\х0 |
1 |
|
2 |
100 |
3 |
|
4 |
|
5 |
20 |
6 |
|
7 |
400 |
8 |
|
9 |
600 |
Программа состоит из модулей, осуществляющих следующие операции :
просмотр всей таблицы
переименование всех ячеек
перепись х0 в хj
проверка исчерпания таблицы (спецификационной карты):
если исчерпана, окончание программы
если не исчерпана, переход к следующей строке
Итак, программа, настраивающая калькулятор на вычисления (для табличного процессора Lotus 1-2-3) имеет вид.
{let \k,1} // счетчик строк в таблице
\c {branch \p} // вход в подпрограмму
\q {let \k, \k+1} // увеличили счетчик на единицу
{if \k>N} {quit} // если счетчик>числа строк, то выход
{branch \c} // иначе — переход снова в подпрогамму
\p {goto} \i0~
/rnd \i~ /rnc \i~~ // отмена имени i и присвоение имени i
{right} // сдвиг вправо
/rnd \j~ /rnc \j~~ // отмена имени j и присвоение имени j
{right} // сдвиг вправо
/rnd \kij ~ /rnc \kij ~~ // отмена имени kij и присвоение имени kij
{goto} \x0~ // переход в ячейку х0
{down \i} // переход вниз на i ячеек
/rnd \Xi~ /rnc \Xi~~ // отмена имени Хi и присвоение имени Хi
{goto} \x0~ // переход в ячейку х0
{down \j} // переход вниз на j ячеек
{Edit} +\Xi~*\kij ~ // запись формулы
{goto} \i0~ //
{down} // переход вниз
/rnd \i0~ /rnc \i0~~ // отмена имени i0 и присвоение имени i0
{branch \q} // переход в ячейку q