ПРОГРАММА 10
. . .
50 FOR I=1 TO 4
. . .
80 FOR J=1 TO 4
. . .
100 NEXT J
. . .
125 NEXT I
При I = 1 переменная J поочередно принимает значения от 1 до 4, затем I увеличивается на 1 и переменная J опять принимает значения от 1 до 4 и так далее, пока I не примет последнее значение 4. В итоге получаем цикл в цикле. Для усвоения этой темы можно выполнить программу 11.
ПРОГРАММА 11
5 CLS
10 FOR I = 1 TO 6
20 FOR J = 1 TO 4
30 PRINT "I = ";I,"J = ";J
40 NEXT J
50 NEXT I
В Basic не делается ограничений на число вложенных циклов.
1.3. Двумерные массивы
Значения элементам двумерного массива могут быть присвоены любым из способов, которые мы использовали для присвоения значений переменным (см. программы 1, 2). Наиболее естественный путь присваивания значений двумерным массивам – использование этих операторов в теле цикла FOR. Счетчик одного цикла I пробегает по строкам массива, счетчик другого цикла J – по столбцам. При этом используются так называемые вложенные циклы. Этот прием показан в программе 12.
ПРОГРАММА 12
10 DIM R(2,3)
15 FOR I=1 TO 2
20 FOR J=1 TO 3
25 READ R(I,J)
30 NEXT J
35 NEXT I
. . .
90 REM значения элементов массива
95 DATA 1,3,7,6,9,10
100 END
Двумерные массивы необходимо вводить в привычном виде (по строкам), начиная ввод новой строки массива в новую строку экрана.
Для распечатки значений элементов двумерного массива удобнее пользоваться вложенными циклами. После вывода очередной строки матрицы оператор PRINT (строка 75 в программе 13) обеспечивает переход на новую строку.
ПРОГРАММА 13
10 DIM R(2,3)
. . .
50 REM печать значений элементов на экран
55 FOR I = 1 TO 2
60 FOR J = 1 TO 3
65 PRINT R(I,J);
70 NEXT J
75 PRINT
80 NEXT I
. . .
100 END
Рассмотрим несколько примеров программ с использованием двумерных массивов.
В программе 14 в переменную S поочередно складываются значения элементов матрицы B(I,J) размерностью N строк на M столбцов. После окончания работы программы в переменной S будет содержаться искомая величина элементов матрицы.
ПРОГРАММА 14
90 REM Вычисление суммы элементов матрицы
100 S = 0
110 FOR I = 1 TO N
120 FOR J = 1 TO M
130 S = S+B(I,J)
140 NEXT J
150 NEXT I
В программе 15 производится суммирование элементов матриц А и В одинаковой размерности (N x M), в результате которого получается суммарная матрица С той же размерности. Суммирование производится при использовании вложенных циклов.
ПРОГРАММА 15
90 REM Суммирование матриц
100 FOR I = 1 TO N
110 FOR J = 1 TO M
120 C(I,J) = A(I,J)+B(I,J)
130 NEXT J
140 NEXT I
В программе 16 в переменную S поочередно складываются элементы матрицы В, принадлежащие строке 1.
ПРОГРАММА 16
90 REM Вычисление суммы I-й строки матрицы
100 S = 0
110 FOR J = 1 TO M
120 S = S+B(I,J)
130 NEXT J
1.3.1. Задания для самостоятельной работы
Составьте программу, позволяющую заполнять двумерную числовую матрицу размерностью
и выводить ее на экран.Составьте программу, определяющую сумму элементов произвольного столбца матрицы.
Составьте программу, вычисляющую произведение двух матриц размерностями
.Напишите программу, вычисляющую определитель матрицы размерностью
.Напишите программу, заменяющую строки матрицы ее столбцами.
2. Общее задание на выполнение лабораторной работы по вариантам
2.1. Цель работы
Изучить возможности языка Basic и овладеть практическими навыками в программировании задач, используя данные в виде массивов. Совершенствовать навыки в редактировании программ.
2.2. Порядок выполнения работы
1. Изучить операторы, позволяющие организовать данные в виде массивов.
2. Изучить возможности ввода и вывода данных в массив различными способами, включая способ вложения циклов.
3. Вводить, редактировать, отлаживать и реализовывать программы на языке Basic.
4. Оформить отчет. Отчет содержит: 1) цель работы; 2) постановку задачи согласно варианта; 3) листинг текста программы; 4) результаты реализации программы (распечатка) согласно заданиям каждого варианта; 5) выводы по проделанной работе.
2.3. Пример выполнения лабораторной работы
Дана матрица:
Задание 1. Найти среднее значение элементов, стоящих в первой строке.
Задание 2. Умножить все элементы матрицы на число 3 и вывести полученную матрицу на печать.
Заданной матрице присвоить имя A. Матрица двумерная, следовательно все ее значения заносятся в программу в цикле. В данном примере используется оператор DATA-READ. Умножение элементов матрицы на число 3 также удобнее выполнить в цикле. Для нахождения среднего значения определяется переменная S и ее значение выводится на печать. В конце программы элементы полученной новой матрицы выводятся на печать также с помощью цикла. Для того, чтобы на экране элементы матрицы располагались в привычном для нас виде, то есть по три элемента в строке, в программе написаны два оператора PRINT.
2.4. Программа
5 REM очистка экрана
10 CLS
15 REM присвоение данных элементам матрицы
20 DIM A(2,3)
25 FOR I = 1 TO 2
30 FOR J = 1 TO 3
35 READ A(I,J)
40 NEXT J
45 NEXT I
50 REM вычисление среднего значения элементов матрицы
55 S = (A(1,1)+A(1,2)+A(2,3))/3
60 PRINT " СРЕДНЕЕ ЗНАЧЕНИЕ ЭЛЕМЕНТОВ ПЕРВОЙ
СТРОКИ S = ";S:PRINT
65 REM умножение элементов матрицы на число
70 FOR I = 1 TO 2
75 FOR J = 1 TO 3
80 B(I,J) = A(I,J)*3
85 NEXT J
90 NEXT I
95 REM распечатка значений элементов новой матрицы
100 PRINT "ЗНАЧЕНИЯ ЭЛЕМЕНТОВ НОВОЙ МАТРИЦЫ": PRINT
105 FOR I = 1 TO 2
110 FOR J = 1 TO 3
115 PRINT B(I,J);
120 NEXT J
125 PRINT:PRINT
130 NEXT I
135 DATA 2,3.1,8.1,-1,5,-3
140 END
После отладки программы необходимо вывести на печать текст программы, используя команду LLIST. Для вывода результатов вычислений на печать используется оператор LPRINT. В программе надо все операторы PRINT заменить оператором LPRINT и запустить программу. Результат будет печататься на бумаге.
2.5. Результат выполнения программы
СРЕДНЕЕ ЗНАЧЕНИЕ ЭЛЕМЕНТОВ ПЕРВОЙ СТРОКИ S = 4.4
ЗНАЧЕНИЯ ЭЛЕМЕНТОВ НОВОЙ МАТРИЦЫ
2.6. Контрольные вопросы
Определение массивов.
Одномерные массивы.
Двумерные массивы.
Операторы описания массивов.
Различные способы присвоения значений элементам массивов.
Операторы присвоения DATA-READ, INPUT, LET.
Операторы цикла.
Вложенные циклы.
Использование вложенных циклов для присвоения значений элементам массива.
Использование вложенных циклов для вывода результатов на печать.
Операторы вывода на печать.
Приложение
Вариант 1
Оклады сотрудников распределены по степеням и классам:
Степень1 | Степень 2 | Степень 3 | |
Класс 1Класс 2Класс 3 | 97311801300 | 98912651400 | 106013451520 |
Произведено увеличение окладов для 1 класса на 2.3 %; для 2 класса на 3.5 %; для 3 класса на 5.6 %.
Задание 1. Подсчитать новые оклады и вывести их на печать в заданной форме.
Задание 2. Найти сумму всех окладов.
ВАРИАНТ 2
Результаты сдачи экзаменов занесены в ведомость:
Математика | История | Физика | |
Иванов Кузнецов Михайлов Петров | 3 с+1 5 3 | 3 3 с+1 4 | 5 3 5 с+1 |
Задание 1. Подсчитать средний балл по каждой дисциплине и по каждому учащемуся.
Задание 2. Подсчитать общий средний балл по группе.
ВАРИАНТ 3
Дана матрица:
Задание 1. Найти сумму всех элементов матрицы и сумму элементов, стоящих на главной диагонали матрицы.
Задание 2. Поменять местами первый и второй столбец и распечатать полученную матрицу.
ВАРИАНТ 4
Дан определитель:
Задание 1. Найти значение определителя.
Задание 2. Умножить определитель на число с+2.3. Вывести полученный определитель на печать.
ВАРИАНТ 5
Даны две матрицы:
иЗадание 1. Найти сумму матриц и распечатать полученную матрицу.
Задание 2. Найти определители матриц.
ВАРИАНТ 6
В компании служат шесть человек с различной почасовой оплатой:
Служащий | 1 | 2 | 3 | 4 | 5 | 6 |
Отработанные за неделю часы | 40+c | 42 | 38+c | 44 | 35+c | 36 |
Плата за один час | 3.2 | 3.2 | 3.0 | 3.0 | 3.0 | 2.8 |
Задание 1. Подсчитать недельный заработок каждого служащего и всю сумму денег, выплачиваемую всем служащим за неделю.
Задание 2. Результаты задания 1 вывести на печать в виде одномерного массива.
ВАРИАНТ 7
Дана матрица:
Задание 1. Умножить первую строку на число "c". Матрицу вывести на печать.
Задание 2. Поменять местами второй и третий, первый и четвертый столбец. Матрицу вывести на печать.
ВАРИАНТ 8
Даны две матрицы:
иЗадание 1. Найти произведение матриц. Вывести полученную матрицу на печать.
Задание 2. Найти среднее значение элементов полученной матрицы.
ВАРИАНТ 9
Дана матрица: