Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КОНСПЕКТ ЛЕКЦИЙ_(полный вариант).doc
Скачиваний:
124
Добавлен:
09.04.2015
Размер:
1.01 Mб
Скачать

Лекция 10 Описание и обработка матриц

Матрицей называется двумерный массив. То есть массив, имеющий два измерения. Из-за «определенности» матрицы – строго ограниченного набора данных (известно: количество элементов по горизонтали, вертикали, известен тип элементов) ее обработка ведется в 4 стандартных этапа.

I ЭТАП. Состоит в том, что необходимо задать размерность матрицы.

П ЭТАП. Состоит в формировании элементов матрицы.

Ш ЭТАП. Состоит в выполнении задания.

IV ЭТАП. Состоит в выводе на экран или печать элементов исходной и полученной матрицы.

Все этапы являются стандартными и однотипными. Рассмотрим их подробнее.

I этап. Задание количества строк и столбцов, определяющих общее количество элементов. Как правило, в условии задачи не дана строгая размерность матрицы, а даны лишь пределы размерностей. Например, N <= 15, M<=10. Следовательно, матрица может быть и 7х8 и 10х4 и т.д. Но перед началом обработки матрицы необходимо выделить в памяти место для хранения элементов матрицы. Можно выделить сразу максимально нужное количество ячеек памяти. Но оперативная память является важным элементом, влияющим на скорость выполнения программ и с ней необходимо аккуратно обращаться. Следовательно, необходимо выделять ровно то количество ячеек памяти, которое необходимо. Это достигается использование цикла с предусловием DOLOOP UNTIL.

DO

INPUT “Введите количество строк матрицы 1<=N<=15”; N

LOOP UNTIL N>=2 and N<=15

DO

INPUT “Введите количество столбцов матрицы 1<=M<=15”; M

LOOP UNTIL M>=2 and M<=15

DIM A(N, M)

После ввода размерностей используемой матрицы в памяти выделяется место под хранение массива, для этого надо описать матрицу с помощью оператора DIM .

Имя и размерность матрицы, тип ее данных. определяются оператором DIM аналогично массивам.

П этап Формирование элементов матрицы может происходить двумя способами.

1 Ввод значений с клавиатуры. Ввод с клавиатуры осуществляется тогда, когда известны элементы матрицы. Из-за того, что матрица имеет два измерения ее обработку ведут посредством двух вложенных циклов.

FOR I=1 TO M

FOR J=1 TO N

Input “ введите значение”, a(I,j)

NEXT J

NEXT I

Этот способ малоэффективен из-за больших временных затрат на занесение. Если задана матрица 14*18 , то необходимо вводить с клавиатуры 252 значения. Если не указаны значения элементов матрицы, то лучше использовать датчик случайных чисел RND, а если элементы целые, то в совокупности с функцией INT.

Задание значений матрицы с помощью генератора случайных чисел

FOR I=1 TO M

FOR J=1 TO N

A(I,J) = INT(RND(1)*100-50)

NEXT J

NEXT I

Функция RND (1) формирует случайные значения в диапазоне от 0 до 1. Т.е. полученное число может быть в диапазоне 0,0000......1 до 0,9999........9. Умножая на 100 и вычитая 50 , мы сможем получить помимо положительных значений и отрицательные. Функция INT возьмет только целые части сформированных элементов. Таким образом, мы получим целочисленную матрицу с элементами в диапазоне от –50 до 50. На данном этапе удобно сразу после формирования выводить элемент матрицы на экран оператором PRINT . Тогда цикл, формирующий матрицу, будет следующим:

FOR I=1 TO M

FOR J=1 TO N

A(I,J) = INT(RND(1)*100-50)

PRINT A (I,J);

NEXT J

PRINT

NEXT I

;” – осуществляет вывод следующей переменной матрицы непосредственно за предыдущей. Оператор PRINT после оператора NEXT J служит для перевода курсора на новую строку, что бы матрица имела удобный математический вид.

Ш этап Выполнение задания по обработке матрицы. Здесь происходит выполнение задания определенного в условии задачи. Основным здесь является то, что обработка матрицы и выполнение задания происходит в двух циклах так же как и при формировании элементов матрицы.

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

FOR I=1 TO M

FOR J=1 TO N

PRINT B (I, J);

NEXT J

PRINT

NEXT I

Здесь так же используется “;” и пустой оператор PRINT для придания матрице «математического» вида. Если в задании указан формат выводимого числа, например «###.##», то, тогда необходимо использовать оператор PRINT USING.

Пример:

FOR I=1 TO M

FOR J=1 TO N

PRINT USING “###.##”;B (I,J);

NEXT J

PRINT

NEXT I