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



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


Еще о массивах и матрицах

В MMSFORTH и некоторых версиях включено слово ARRAY (массив), которое упрощает обращение с массивами (это слово не является эквивалентом слова ARRAY, определенного нами выше). В данном случае, если ввести 15 ARRAY DATA-STORE вы организуете массив из 16 элементов с именем DATA-STORE (хранение_данных). Если затем ввести 5 DATA-STORE в стек будет положен адрес пятого элемента (считая с 0). Поэтому 293 5 DATA-STORE ! занесет число 293 в пятый элемент массива и 5 DATA-STORE @ . выведет на экран число 293.

Слово ARRAY может быть определено в других версиях с некоторыми отличиями, поэтому нужно смотреть вашу документацию. Одна деталь может несколько смутить вас. В математике принято нумеровать элементы массива, начиная с единицы, в MMSFORTH нумерация начинается с нуля. Этим объясняется, почему 15 ARRAY DATA-STORE создает массив из 16 элементов: как было сказано, номер последнего элемента равен 15, а так как нумерация начинается с 0, всего получается 16 элементов. В MMSFORTH имеются также слова CARRAY (байтовый массив) и DARRAY (массив чисел двойной длины), назначение которых очевидно по аналогии с CVARIABLE и 2VARIABLE.

Форт позволяет также пользоваться двумерными массивами, т.е. матрицами. Глубокое рассмотрение применения матриц выходит за рамки нашего рассмотрения; интересующимся рекомендуем книгу "Essential Computer Mathematics" (Lipshutz, 1982). Однако здесь мы должны познакомиться с ними вкратце.

Матрицы можно просто представлять себе как таблицу, содержащую некоторое число рядов и столбцов. Рассмотрим, например, таблицу 5 293 1982 823 5 56 99 211 5

Она представляет собой квадратную матрицу размерности 3х3; на диагонали матрицы находятся пятерки. Элементы матрицы обозначаются двумя индексами, показывающими их положение (строка, столбец) следующим образом: x1,1 x1,2 x1,3 x2,1 x2,2 x2,3 x3,1 x3,2 x3,3 Матрица может быть представлена в памяти как линейный массив. В данном случае имеется 9 элементов. Поэтому можно определить CREATE MATA 18 ALLOT После этого программист должен взять на себя ответственность за установление связи между положением элемента в строке и столбце и номером элемента в линейном массиве.


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