Ввод данных в массив и вывод данных из массива
Функции для работы с массивами
QBasic имеет несколько функций для работы с массивами:
LBOUND(ИмяМассива, Индекс) – возвращает нижнюю границу диапазона индекса массива. Индекс указывается только для многомерных массивов, и определяет, к какому измерению массива применяется функция. По умолчанию индекс равен 1. Например:
Dim A(5 To 10,15 To 20)
…
Lbound (A, 2) – определяется нижняя граница второго измерения массива;
UBOUND (ИмяМассива, Индекс) – возвращает верхнюю границу диапазона индекса массива.
Так как число элементов массива представляет собой всегда счетное множество, то для работы с массивами используется оператор цикла FOR/NEXT.
Пример 9.4.14. Ввод и вывод одномерного массива.
REM Ввод одномерного массива
OPTION BASE 1
30 INPUT “Укажите размерность массива ”,N
40 DIM A(N)
60 FOR i = 1 TO N
70 PRINT “Введите”; i; “элемент массива ”;
80 INPUT “”,A(i)
90 NEXT i
100 END
Вначале по запросу программы, с клавиатуры вводится размерность массива, строка 30. Объявляется одномерный массив А размерностью N (строка 40) как массив вещественных переменных одинарной точности (по умолчанию). Затем организуется цикл с заданным числом повторений (строки 60 – 90). В строке 70 оператор PRINT выводит на экран запрос на ввод текущего элемента массива. В конце оператора имеется символ “точка с запятой”, который после вывода информации оставляет курсор в строке ввода, поэтому запрос на ввод данных с помощью оператора INPUT, строка 80, будет выведен в этой же строке, сразу же после вывода текстовой информации.
REM Вывод одномерного массива
110 FOR i = 1 TO N
120 PRINT A(i),
130 NEXT i
140 END
Алгоритм вывода массива на экран или печать подобен алгоритму ввода массива. В данном алгоритме необходимо обратить внимание на символ “запятая” в конце оператора PRINT (строка 120). При наличии данного символа данные будут выводиться в пять колонок. Если этот символ удалить, то данные будут выведены в один столбец (см. описание оператора PRINT).
При вводе (выводе) данных в многомерный массив необходимо организовать столько вложенных циклов, какова размерность массива.
Пример 9.4.15. Ввод и вывод двухмерного массива
INPUT “Укажите число строк ”,n
INPUT “Укажите число столбцов “,m
DIM A(n, m)
REM Ввод данных в двухмерный массив
FOR i = 1 TO n
FOR j = 1 TO m
PRINT “Введите А(“ ; i ; “,” ; j ; “элемент массива”;
INPUT A(i, j)
NEXT j
NEXT i
REM Вывод данных из двухмерного массива
FOR i = 1 TO n
FOR j = 1 TO m
PRINT A(i, j);
NEXT j
NEXT i
В данном примере вывод элементов массива осуществляется в виде матрицы. Это обеспечивается за счет использования разделителя “;” в конце оператора PRINT. Символ “;” в конце оператора PRINT оставляет курсор в текущей строке. Когда ввод данных в первую строку закончится, то оператор PRINT без параметров возвращает курсор в начало строки.
Процедуры ввода данных в массив и вывода данных из массива типичные, поэтому их можно оформить в виде подпрограмм (см. раздел 9.4.6), например:
SUB Massiv1(A(),n)
REM Подпрограмма ввода данных в одномерный массив.
FOR i = 1 TO N
PRINT A(i),
NEXT i
END SUB