Язык программирования Форт



         

Глава 6. Хранение чисел в памяти - часть 22


Полезно иметь универсальную формулу. Если обозначить положение элемента в строке через i, а в столбце через j и за начальный (1,1) принять элемент, находящийся в левом верхнем углу, тогда номер элемента в линейном массиве определится как е = n(i-1) +j , где n - число столбцов в матрице. Таким образом, элемент (2,3) в матрице МАТА в линейном массиве будет иметь номер 6. Учитывая это, можно определить слово для вычисления положения элемента в матрице МАТА, если в стеке находятся значения i и j: : MATAADR SWAP 1- 3 * + 1- 2* ; следовательно, чтобы записать, например, число 1234 в элемент матрицы (3,1) , нужно ввести 1234 МАТА 3 1 MATAADR + !

Такова стандартная форма обращения с матрицами в Форте, однако в MMSFORTH и других версиях имеются более удобные средства.

Слово 2ARRAY в MMSFORTH позволяет определить и организовать доступ к элементам матрицы без дополнительных хлопот с обработкой индексов; будьте внимательны и не путайте слово 2ARRAY (двумерный массив, матрица) и DARRAY (линейный массив чисел двойной длины). Чтобы определить матрицу 2МАТА размерности 3х3, нужно ввести 2 2 2ARRAY 2МАТА Числа, определяющие размерность матрицы, которые помещаются в стек, должны быть на 1 меньше числа строк ц столбцов, так же как при создании линейного массива число в стеке должно быть на 1 меньше его размерности. После того как матрица (в данном случае 2МАТА) определена,адрес ее элемента можно найти, вводя имя матрицы, если номера строки и столбца уже находятся в стеке. Таким образом, чтобы напечатать элемент (2,3) матрицы 2МАТА, нужно ввести 1 2 2МАТА ? Понятно ли вам, почему числа в стеке на 1 меньше фактических индексов элемента матрицы?

В MMSFORTH имеются также слова 2ARRAY и 2CARRAY. Их назначение очевидно. В гл. 11 будет рассмотрено, как можно определить такие слова.

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


Содержание  Назад  Вперед