Двумерные массивы можно представить себе как таблицы, в ячейках которых хранятся значения элементов массива, а индексы элементов массива являются номерами строк и столбцов.
Объявляются двумерные массивы так же, как переменные и одномерные массивы. Например, целочисленный числовой массив, содержащий 3 строк и 4 столбца объявляется следующим образом:
DIM tabl(3,4)
DIM tabl(3,4) AS INTEGER
Tabl
| ||||||||||||||||
|
|
DIM tabl1(1 TO 3,1 TO 4) AS INTEGER
Tabl1
| ||||||||||||||||
|
|
С помощью двумерного массива 9х9 и двух вложенных циклов можно легко составить программу, реализующую таблицу умножения. Сомножителями будут значения индексов строк и столбцов, а их произведения будут значениями элементов массива.
DIM tablum(1 TO 9,1 TO 9) AS INTEGER
Tablum
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
REM Таблица умножения
DIM tabum(1 TO 9, 1 TO 9) AS INTEGER
REM Заполнение массива - создание таблицы умножения
FOR I=1 TO 9
FOR J=1 TO 9
tabum(I, J)=I*J
NEXT J
NEXT I
REM Вывод массива на экран в виде таблицы
FOR I=1 TO 9
FOR J=1 TO 9
PRINT tabum(I,J);
NEXT J
PRINT
NEXT I
END
Пример: В таблице 3х4 вычислить количество отрицательных элементов, сумму четных элементов, произведение элементов второй строки.
REM вычислить количество...
DIM tabl(1 TO 3, 1 TO 4) AS INTEGER
REM Заполнение массива
FOR I=1 TO 3
FOR J=1 TO 4
INPUT "Введите элемент массива:", tabl(I, J)
NEXT J
NEXT I
REM Вывод массива на экран в виде таблицы
CLS
FOR I=1 TO 3
FOR J=1 TO 4
PRINT tabl(I,J);
NEXT J
PRINT
NEXT I
REM требуемые вычисления
k=0
s=0
p=1
FOR I=1 TO 3
FOR J=1 TO 4
IF tabl(I, J)<0 THEN k=k+1
IF tabl(I, J) MOD 2 = 0 THEN s=s+tabl(I, J)
IF I=2 THEN p=p*tabl(I, J)
NEXT J
NEXT I
PRINT
PRINT "результ:"
PRINT "отрицательных элементов: ", k
PRINT "сумма четных элементов: ", s
PRINT "произведение элементов второй строки: ",p
END
Символьные и строчные переменные.
Очень часто в программах требуется использовать символьные или строчные переменные. Что же это такое? Это переменные, значениями которых являются либо алфавитно-цифровые символы, либо несколько таких символов.
Строки - последовательность алфавитно-цифровых символов.
Для того, чтобы использовать такие переменные в программе необходимо их соответствующим образом объявить. Для этого используется уже известный оператор DIM.
DIM s AS STRING
s="Cтрока123"
Или добавлять справа от переменной символ $.
s$="Тоже строка 987"
Пример: Эта программа выводит на экран две строки. Обратите внимание на два способа использования и объявления строковых переменных.
DIM stroka AS STRING
stroka="Один"
stroka2$="Два"
PRINT stroka
PRINT stroka2$
END
Еще пример: Та же программа, но с ОШИБКАМИ. Не указано, то что наши переменные строчные.
REM ЗДЕСЬ ОШИБКИ
stroka="Один"
stroka2="Два"
PRINT stroka
PRINT stroka2
END
Строчные переменные можно склеивать и сравнивать друг с другом. Для склеивания строк (конкатенации) используют знак плюс (+).
Пример.
REM конкатенация строк
s1$="Привет! "
s2$="Меня зовут Саша."
s$=s1$+s2$
PRINT s$
END
На экране появится надпись: Привет! Меня зовут Саша.
Для сравнения срок используют операции: >, <, =, >=, <=, <>.
Пример:
REM Сравнение строк
s1$="abc"
s2$="abc"
s3$="klmn"
IF s1$=s2$ THEN PRINT "Строки равны"
IF s1$=s3$ THEN PRINT "Строки равны"
END
Программа выведет "Строки равны только один раз".
Функции для работы со строками:
LEN(s$) | Вычисляет длину строки (количество символов). |
MID$(s$,n,k) | Выделяет из строки s$ k символов начиная с n-го символа. |
VAL(s$) | Преобразует числовую часть начала строки в число. |
STR$(x) | Преобразует число в символьную форму. |
ASC(s$) | Вычисляет десятичный код символа. |
CHR$(x) | Преобразует код в символ. |
INKEY$ | Функция опроса клавиш, нажатых на клавиатуре. |
Пример: составить программу подсчитывающую, количество букв "а" в предложении.
REM кол-во букв "а"
INPUT "Введите предложение", s$
FOR I=1 TO LEN(s$)
IF MID$(s$,I,1)="а" THEN k=k+1
NEXT
PRINT "Кол-во букв а =", k
END
Пример: Заменить все буквы "а" в предложении на буквы "о".
REM замена букв
ss$=""
INPUT "Введите предложение", s$
FOR I=1 TO LEN(s$)
IF MID$(s$,I,1)="а" THEN
ss$=ss$+"о"
ELSE
ss$=ss$+MID$(s$,I,1)
END IF
NEXT
PRINT "Исправленная строка: ", ss$
END
Пример: Получить предложение в обратном порядке следования символов.
REM обратный порядок букв
ss$=""
INPUT "Введите предложение", s$
FOR I=LEN(s$) TO 1 STEP -1
ss$=ss$+MID$(s$,I,1)
NEXT
PRINT "Исправленная строка: ", ss$
END