Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

информатика / Инф1_Л 6_Массивы_в_QBasic

.docx
Скачиваний:
70
Добавлен:
08.04.2015
Размер:
35.02 Кб
Скачать

4.

Массивы в ЯП QBasic.

Массив в программировании – это совокупность однотипных данных, объединенных общим названием. Чаще данные объединяются в массив одной общей задачей их обработки (перебор данных, их анализ, однотипное изменение и др.). Различают одномерные и многомерные массивы.

Одномерный массив (вектор) – это совокупность однотипных данных, объединённых общим названием, каждый элемент которой имеет одну координату (порядковый номер).

Например: Массив А, содержащий пять чисел  (5,7,3,0,4)

Первый элемент массива в Quick Basic по умолчанию имеет № = 0. Можно в программе начать нумерацию элементов массива с любого числа (удобнее с единицы).

Многомерный массив – это совокупность однотипных данных, объединённых общим названием, каждый элемент которой имеет несколько координат.

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

Формат имени массива.

Имя (число_элементов_n [, число_элементов_m])

Характеристики массива:

  1. Имя массива.

  2. Тип данных, из которых состоит массив.

  3. Размер массива, т.е. количество элементов, из которых он состоит.

  4. Координаты (индекс) каждого элемента массива.

  5. Значение каждого элемента массива.

Имя массива в QBasic формируется по общим правилам, используемым для переменных.

Объявление массива.

Если в массиве, создаваемом в Quick Basic, хотя бы по одной координате больше десяти элементов, то перед формированием его обязательно нужно объявить, иначе программа выведет сообщение об ошибке.

Объявление используется в первую очередь для того, чтобы зарезервировать место в памяти ЭВМ перед размещением массива. Объявление массива осуществляется с помощью оператора DIM.

Формат объявления массива:

DIM Имя (число_элементов_n [, число_элементов m]) [AS тип]

  • Количество элементов можно задавать числом, переменной, математическим выражением или диапазоном (например: min TO max).

  • Если указывать только число элементов, то первый элемент получает номер 0.

Например: DIM V(10)  резервируется место для 11 элементов (от 0 до 10); DIM V(1 - 10)  резервируется место для 10 элементов (от 1 до 10).

  • Все элементы массива – данные одного типа. Если тип не указывать, то элементам массива автоматически присваивается тип SINGLE.

  • В одной строке оператор DIM может объявить несколько массивов и переменных, которые должны отделяться запятой.

Например: DIM V1 (20), V2 (1 TO x), N AS INTEGER

Формирование одномерного массива.

Чтобы ЭВМ могла работать с массивом данных, его нужно сформировать (создать), иначе не будет самого объекта для работы.

Наиболее распространенные методы формирования массива.

  1. Метод формирования прямым присваиванием

Например: А(1) = 10: А(2) = 3: А(3) = 5: … и т.д.

  1. Метод формирования оператором ввода (INPUT):

Примеры:

  • INPUT A(1); A(2); A(3); A(4)

  • INPUT “Введите пять элементов массива”; A(1); A(2); A(3); A(4); A(5)

  • FOR i=1 TO 5 INPUT A(i) NEXT

  • FOR i=0 TO 3 INPUT A(i) NEXT

  1. Метод формирования оператором DATA…READ

Например:

  • DATA 1, 5, 2, 7, 3 FOR i = 1 TO 5 READ A(i) NEXT

В программе всегда нужно указывать номер элемента, с которым она работает. Номер указывается в скобках за названием массива. Если массив создаётся и обрабатывается циклом, в качестве переменной, обозначающей номер текущего элемента, используется счётчик цикла.

Если элементу массива присваивается значение типа, не соответствующего типу массива выводится сообщение об ошибке Type mismatch (Несоответствие типа).

Если в массив вводится лишний параметр (элемент) или параметра будет не хватать выводится сообщение об ошибке Wrag number of dimention (Неправильное число размерностей).

Вывод одномерного массива на экран монитора.

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

Например:

  • Вывод третьего элемента массива A PRINT A(3)

  • Вывод пяти элементов массива A в одну строку PRINT A(1), A(2), A(3), A(4), A(5)

  • Вывод элементов массива Y(10) в одну строку PRINT “Массив Y” FOR i = 1 TO 10 PRINT Y(i); NEXT y PRINT

Некоторые алгоритмы обработки одномерных массивов.

Расчёт значений функции по формуле и заданных одномерным массивом значениях переменных.

Пример: Рассчитать формулу. Значения аргумента функции представлены в массиве X(1 TO 5).

FOR i = 1 TO 5 INPUT “Ввести значения элементов массива X”; X(i) NEXT i FOR i = 1 TO 5 Y = SQR (X(i)) PRINT “Y =”; Y NEXT i END

  • Изменение значения каждого элемента одномерного массива.

Пример: Умножить массив X(10) на 5.

FOR i = 1 TO 10 X(i) = X(i) * 5 NEXT i END

  • Поиск максимального и минимального элемента одномерного массива.

Пример: Найти MAX и MIN элементы массива X(10).

MAX = X(1) MIN = X(1) FOR i = 2 TO 10 IF X(i) > MAX THEN MAX = X(i) IF X(i) < MIN THEN MIN = X(i) NEXT i PRINT “MAX =”; MAX PRINT “MIN =”; MIN END

  • Поиск порядкового номера удовлетворяющего условию элемента одномерного массива.

Пример: Найти порядковые номера MAX и MIN элементов массива X(10).

MAX = X(1): Nmax = 1 MIN = X(1): Nmin = 1 FOR i = 2 TO 10 IF X(i) > MAX THEN MAX = X(i): Nmax = i IF X(i) < MIN THEN MIN = X(i): Nmin = i NEXT i PRINT “Номер MAX =”; Nmax PRINT “Номер MIN =”; Nmin END

  • Перемена местами двух элементом одномерного массива.

Для решения этой задачи в QBasic существует оператор SWAP. Он меняет между собой значения двух элементов массива.

Формат оператора.

SWAP аргумент_n, аргумент _m

Пример: Поменять местами элементы 2 и 5 вектора B(N)

INPUT “Введите номера элементов массива”; c, d SWAP B(c), B(d) …

Если не использовать оператор, то используется временная переменная (в этом пример, TNK)

INPUT “Введите номера элементов массива”; c, d TMK = B(c) B(c) = B(d) B(d) = TMK

  • Изменение последовательности элементов одномерного массива.

Изменение последовательности заключается в перестановки значений элементов одномерного массива согласно определённому условию. К этому типу действий относятся алгоритмы сортировки.

Пример: Записать массив B(N) в обратном порядке (элемент B(1) должен стать B(N), B(N) − B(N) и т.д.).

INPUT “Введите количество элементов массива”; N DIM B(N) FOR i = 1 TO N INPUT “Ввести значения элементов массива X”; X(i) NEXT i FOR i = 1 TO N/2 ‘ замен должно быть в два раза меньше числа элементов SWAP B(i), B(N + 1 – i) NEXT i FOR i = 1 TO N PRINT B(i); NEXT i END

Пример: Расположить элементы массива B(N) в порядке возрастания их значений.

FOR i = 1 TO N -1 FOR j = 1 TO N IF B(i) < B(j) THEN SWAP B(i), B(j) NEXT j, i END

  • Действия с несколькими одномерными массивами одинаковой размерности.

Пример: Сложить массивы X(10) и B(10).

FOR i = 1 TO 10 C(i) = X(i) + B(i) NEXT i END

Двумерные массивы

Двумерный массив – это совокупность однотипных элементов, каждый из которых имеет две координаты: номер строки и номер столбца. Как правило, двумерные массивы называют матрицами.

Обработка матриц проходит в двух вложенных циклах. Внешней задаёт номер текущей строки, вложенный - номер текущего столбца.

Формирование и вывод на экран двумерного массива.

Пример: Сформировать матрицу M(3, 4).

DIM M(1 TO 3, 1 TO 4) FOR i = 1 TO 3 FOR j =1 TO 4 INPUT M(i, j) NEXT j, i END

И вывод на экран монитора

FOR i = 1 TO 3 FOR j =1 TO 4 PRINT M(i, j) NEXT j NEXT i END

Некоторые алгоритмы обработки двумерных массивов.

  • Изменение элементов матрицы.

Значения элементов матрицы хранятся в памяти компьютера. Изменить значение – это значит записать в соответствующую ячейку памяти новую величину. Для этого необходимо указать координаты ячейки, с которой нужно взаимодействовать.

Пример:

  1. Присвоить элементу (2, 3) матрицы M значение 5. M(2, 3) = 5

  2. Увеличить значение элемента (2, 3) матрицы M на 5 M(2, 3) = M(2, 3) + 5

  3. Умножить матрицу M(3, 4) на константу h.

INPUT “h =”; h FOR i = 1 TO 3 FOR j = 1 TO 4 M(i, j) = M(i, j) * h NEXT j, i END

  • Транспонирование матрицы.

Транспонирование матрицы заключается в получении другой матрицы, столбцы которой равны строкам исходной. Транспонирование необходимо в некоторых численных методах. Например, при решении системы линейных уравнений.

Пример: Трансформировать матрицу M(3, 4).

DIM M(3, 4), MT(4, 3) PRINT “Исходная матрица“ DATA 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3 FOR i = 1 TO 3 FOR j =1 TO 4 READ M(i, j) PRINT M(i, j); NEXT j : PRINT : NEXT i FOR i = 1 TO 4 FOR j =1 TO 3 MT(i, j) = M(j, i) NEXT j NEXT i PRINT “Трансформированная матрица“ FOR i = 1 TO 4 FOR j =1 TO 3 PRINT MT(i, j); NEXT j : PRINT : NEXT i END

Результат:

1

1

1

1

1

2

3

2

2

2

2

1

2

3

3

3

3

3

1

2

3

1

2

3

  • Анализ элементов матрицы.

Большой спектр задач связан с изменением или сортировкой матрицы по определённому критерию. Как правило такие алгоритмы содержат циклы и операторы условной передачи управления.

Пример: Обнулить элементы матрицы M(3, 4), попадающие в интервал A, B.

INPUT A, B FOR i = 1 TO 3 FOR j = 1 TO 4 IF A <= M(i, j) AND M(i, j) <= B THEN M(i, j) = 0 PRINT M(I, j); NEXT j : PRINT : NEXT i END