Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторки по информатике.doc
Скачиваний:
18
Добавлен:
06.11.2018
Размер:
9.06 Mб
Скачать

1.8.5. Вопросы для самопроверки

1. Что такое массив ?

2. Для чего в алгоритмическом языке БЭЙСИК служит оператор DIM ?

3. Могут ли быть индексы дробными числами ?

4. Как определяется среднее арифметическое значение положительных (отрицательных) элементов массива ?

5. На чем основывается поиск минимального и максимального элемента массива ?

6. Построить блок-схему алгоритма формирования одномерного массива.

Лабораторная работа № 1.9 ( C:\USER\GROUP\NOF\lab 9.bas )

Формирование двумерных массивов и выполнение операций с матричными элементами

1.9.1. Цель работы. Получение практических навыков алгоритмизации и программирования процесса формирования и обработки двумерных массивов.

1.9.2. Справочный материал. При формировании двумерных (многомерных) массивов используются вычислительные процессы, содержащие два и более включенных друг в друга циклов, которые являются сложными (вложенными) циклическими процессами. В них выделяются внешние и внутренние циклы. Цикл, который не входит в другие циклы, называется внешним. Цикл, который включается в другие циклы, называется внутренним. Участок алгоритма или программы, включающий в себя внешний и один или несколько внутренних циклов, называется сложным циклом.

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

1.9.3. Пример. Подготовить и организовать вычисления на ПЭВМ значений элементов матрицы Zij (двумерного массива) по формуле:

( 1.9.1)

где Xi = 0.25; -3.41; 2; -1.14; -1.53; Yj = 1.25; 0; -0.25; 1 , а также предусмотреть вычисления количества отрицательных элементов в каждой строке и столбце и произведение положительных элементов главной диагонали матрицы Z.

1.9.3.1. Алгоритм формирования матрицы Z должен предусматривать вычисление двадцати элементов, состоящих из пяти строк, так как i = 1,...,5 ( массив Xi содержит пять компонент ), и четырех столбцов j = 1,...,4 (массив Yj содержит четыре компоненты). При этом нумерация элементов массивов Х и Y начинается с единицы. Нумерация и вычисления матричных элементов Zij достигается с помощью построения сложного циклического вычислительного процесса ( см. раздел 1.9.2 ).

Внутренний цикл по j = 1,...,4 при фиксированном значении параметра внешнего цикла i вычисляет элементы i строки матрицы Z ( Zi,1; Zi,2; Zi,3 ; Zi,4 ). Внешний цикл по i = 1,...,5, наложенный на внутренний цикл по j ( следует помнить, что для каждого значения индекса i индекс j пробегает значения от 1 до 4), обеспечивает формирование всех строк матрицы Z, т. е. формирование элементов всей матрицы. Отметим, что элементы, лежащие на главной диагонали, имеют одинаковые индексы i= j, над главной диагональю - i< j, а под главной диагональю - i > j.

Текст БЭЙСИК- программы алгоритма формирования матрицы Zi,j для примера (1.9.3) приводится ниже :

10 DIM X( 5 ), Y( 4 ), Z( 5 , 4 )

20 FOR I = 1 TO 5

30 READ X( I ) : NEXT I

40 DATA 0.25 , -3.41 , 2 , -1.14 , -1.53

50 FOR J = 1 TO 4

60 READ Y( J ) : NEXT I

65 DATA 1.25 , 0.1 , -0.25 , 1

70 FOR I = 1 TO 5

80 FOR J = 1 TO 4

90 Z( I , J ) = X( I ) * Y( J ) / SQR( X( I )^2 + Y( J )^2 )

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

110 NEXT J : PRINT : NEXT I

Результаты расчета:

0,25 0,09 0,18 0,24

-1,17 -0,10 0,25 -0,96

1,06 0,10 -0,25 0,89

-0,84 -0,10 0,24 -0,75

-0,97 -0,10 0,25 -0,84

При вводе одномерных массивов Х и У применена в строках 30-65 блочная структура ввода данных, а в строках 100-110 используется форматированный вывод элементов матрицы Z, при этом комбинация ###.## задает формат вывода чисел с плавающей запятой - три символа до запятой и два после. В конце 100-й строки после Z(I,J) ставится “;”с целью печати всех элементов матрицы Zij в одну строку, но в строке 110 после оператора завершения цикла по j (NEXT J) имеется “пустой” оператор PRINT, позволяющий после формирования очередной строки матрицы Zij переводить курсор в начало следующей строки экрана ПЭВМ и тем самым формировать двумерный массив Zij в виде структуры матрицы.

1.9.3.2. Вычислим количество отрицательных элементов в каждой строке матрицы Zij .Так как индекс i ( см. 70 строку) является номером строки матрицы Zij ,то необходимо для каждого значения индекса i “обнулять” начальное значение числа отрицательных элементов L, тогда блок программы вычисления количества отрицательных элементов в каждой строке имеет вид:

120 FOR I = 1 TO 5

130 L = 0 : FOR J = 1 TO 4

140 IF Z( I, J )< 0 THEN L = L + 1

150 NEXT J: PRINT “Колич. отриц. эл-тов=“;L;”в строке-”;I