Урок 29. Программирование на QBasic
Массивы. Одномерные массивы.
При работе с большим числом данных одного типа очень удобно использовать
массивы.
Для того чтобы использовать массив его надо сначала объявить в программе.
Для этого используют оператор DIM. По умолчанию (если нет
оператора DIM в программе) считается заданным массив из 10
элементов.
Пример: Составить программу заполнения массива из 15 элементов случайными числами в
диапазоне от 1 до 10. Предусмотреть вывод массива на экран.
REM Заполнение и вывод массива
DIM mas(15) AS INTEGER
FOR I=0 TO 14
mas(I)=1+INT(RND*10)
NEXT
CLS
PRINT "Вывод массива"
FOR I=0 TO 14
PRINT mas(I);
NEXT
END
Пример: Вывести количество отрицательных элементов массива.
REM Вывести количество отрицательных элементов
INPUT "Введите число элементов массива", n
DIM mas(n) AS INTEGER
FOR I=0 TO n-1
INPUT "Введите элемент массива", mas(I)
NEXT
CLS
PRINT "Вывод массива"
FOR I=0 TO n-1
PRINT mas(I);
NEXT
FOR I=0 TO n-1
IF mas(I)<0 THEN k=k+1
NEXT
PRINT
PRINT "Число отрицательных элементов: ",k
END
Подсчет количества отрицательных элементов массива происходит в цикле:
FOR I=0 TO n-1
IF mas(I)<0 THEN k=k+1
NEXT
Пример: Составить программу для вычисления наибольшего элемента массива и его
номера.
REM вычисления наибольшего элемента массива и его номера
INPUT "Введите число элементов массива", n
DIM mas(n) AS INTEGER
FOR I=0 TO n-1
INPUT "Введите элемент массива", mas(I)
NEXT
CLS
PRINT "Вывод массива"
FOR I=0 TO n-1
PRINT mas(I);
NEXT
max=mas(0)
nomer=1
FOR I=0 TO n-1
IF mas(I)>max THEN
max=mas(I)
nomer=I+1
END IF
NEXT
PRINT
PRINT "Максимальный элемент: ", max, " с номером ", nomer
END
Пример: составить программу сортировки массива по возрастанию.
REM сортировка массива
INPUT "Введите число элементов массива", n
DIM mas(n) AS INTEGER
FOR I=0 TO n-1
mas(I)=1+INT(RND*10)
NEXT
CLS
PRINT "Вывод массива"
FOR I=0 TO n-1
PRINT mas(I);
NEXT
REM сортировка массива
FOR I=0 TO n-2
FOR J=I+1 TO n-1
IF mas(I)>mas(J) THEN
REM если нашли меньший элемент, то обменяем их местами
a=mas(I)
mas(I)=mas(J)
mas(J)=a
END IF
NEXT J
NEXT I
REM конец сортировки массива
PRINT
PRINT "Вывод отсортированного массива"
FOR I=0 TO n-1
PRINT mas(I);
NEXT
END
Пример: ввод массива с использование оператора DATA.
REM Ввод данных из DATA
DIM mas(5) AS INTEGER
DATA 2, -4, 1, 5, 9
REM ввод массива
FOR I=0 TO 4
READ mas(I);
NEXT
REM вывод массива
FOR I=0 TO 4
PRINT mas(I);
NEXT
EN
Массивы. Двумерные массивы.
Двумерные массивы можно представить себе как
таблицы, в ячейках которых хранятся значения элементов массива, а индексы
элементов массива являются номерами строк и столбцов.
Объявляются двумерные массивы так же, как переменные и одномерные массивы.
Например, целочисленный числовой массив, содержащий 3 строк и 4 столбца
объявляется следующим образом:
DIM tabl(3 ,4)
DIM tabl(3 ,4) AS INTEGER
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"
Пример:
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