- •Информатика
- •Издательство тгту Cодержание
- •Программирование алгоритмов линейной структуры.
- •Программирование алгоритмов разветвляющейся и циклической структуры.
- •Составление простейших вычислительных программ циклической структуры.
- •Обработка массивов.
- •Составление программ с использованием процедур и функций.
- •Файлы с последовательным и прямым доступом.
Обработка массивов.
Цель работы: Овладение навыками алгоритмизации и программирования структур с вложенными циклами, навыками использования приемов программирования во вложенных циклах, способами ввода, обработки и вывода массивов.
Задание:
1 Изучить особенности программирования алгоритмов работы с массивами на алгоритмическом языке Паскаль.
2 Ввести текст программы в компьютер.
3 Обработать матрицу в соответствии с вариантом задания (элементами матрицы являются случайные значения функции f(x)).
Для конкретного варианта составить массив исходных данных. Написать программу, реализующую заданный алгоритм обработки массива. Вывести на печать результаты и исходную матрицу в общепринятом виде
Методические указания.
В терминах языка программирования такое математическое понятие как матрица заменяется понятием двумерного массива. В общем случае массив представляет собой набор однотипных элементов, в котором каждый элемент помимо своего натурального выражения характеризуется значениями индексов этого элемента.
Размерность массива, а следовательно и количество индексов элемента массива, может выражаться любым целым положительным числом.
Практически все действия над массивами, в зависимости от размерности, выполняются в циклах или во вложенных циклах. В последнем случае в цикл, называемый внешним, могут входить один или несколько вложенных циклов, называемых внутренними. Организация как внешнего, так и внутреннего цикла осуществляется по тем же правилам, что и простого цикла.
При записи программы со структурой вложенных циклов необходимо обращать внимание на правильность размещения внешнего и внутреннего циклов. Одни постановки задач допускают смену мест внутреннего и внешнего циклов, а в других постановках такая смена приводит к неправильным результатам.
При записи программ со структурой вложенных циклов зона действия внутреннего цикла должна располагаться в зоне действия внешнего или охватывающего цикла.
Таблица 6
Вариант задания |
Условие задачи |
Функция f(x) и диапазон изменения аргумента |
1 |
Для матрицы A (10,10) найти сумму всех элементов матрицы |
x[-5;5]
|
2 |
Для матрицы B (12,12) найти сумму элементов в строках матрицы |
x[0;5]
|
3 |
Для матрицы C (15,10) найти сумму элементов в столбцах матрицы |
x[-5;5]
|
4 |
Для матрицы D (10,11) найти максимальный элемент в матрице |
x[-π;π]
|
5 |
Для матрицы B (12,12) найти минимальный элемент в матрице |
x[-8;7]
|
6 |
Для матрицы A (13,13) найти максимальный элемент в каждой строке матрицы |
x[-10;10]
|
7 |
Для матрицы С (10,15) найти минимальный элемент в каждой строке матрицы |
x[-8;9]
|
8 |
Для матрицы D (11,11) найти максимальный элемент в каждом столбце матрицы |
; x[-100;100]
|
9 |
Для матрицы E (8,8) найти минимальный элемент в каждом столбце матрицы |
x[-π;3π/2]
|
10 |
Для матрицы C (15,15) найти максимальную из сумм строк матрицы |
x[-π;π]
|
11 |
Для матрицы R (7,7) найти минимальную из сумм строк матрицы |
x[-5;5]
|
12 |
Для матрицы Z (14,14) найти максимальную из сумм столбцов матрицы |
x[-5;5]
|
13 |
Для матрицы N (12,8) найти минимальную из сумм столбцов матрицы |
x[0;2π]
|
14 |
Для матрицы R (4,4) найти сумму положительных элементов матрицы |
x[-5;5]
|
15 |
Для матрицы S (14,14) найти сумму отрицательных элементов матрицы |
x[π;π]
|
Пример программы:
{ Найти максимальный элемент среди элементов, находящихся выше главной диагонали квадратной матрицы.
Указать его индексы. }
uses crt; { Подключение библиотеки ввода-вывода }
const n = 3; { Задается размерность матрицы }
var i, j, max, imax, jmax: Integer;
a: Array [1..n,1..n] of Integer;
begin
ClrScr; { Очистка экрана }
WriteLn('Составил Поляков Д.Г., КТФ, Р-11');
WriteLn; { Вывод пустой строки }
for i := 1 to n do { Во вложенном цикле }
begin { происходит заполнение матрицы }
for j := 1 to n do
begin
WriteLn('Введите ',i,'.',j,'-й элемент матрицы');
Read(a[i,j]); { Ввод элементов матрицы }
end;
WriteLn; { Вывод пустой строки }
end;
for i := 1 to n do { Во вложенном цикле }
begin { происходит вывод матрицы }
for j := 1 to n do Write(a[i,j]:3,' ');
WriteLn; { Вывод пустой строки }
end;
max := a[2,1];
for i := 1 to n do {Производится поиск макс. элемента и его координат }
begin { согласно заданию. }
for j := 1 to n do
if (j-i) >= 1 then
if a[i,j] > max then
begin
max := a[i,j];
imax := i;
jmax := j;
end;
end;
WriteLn('Выводится max: ',max); { Выводятся макс. элемент и его координаты }
WriteLn('Выводится cтрока: ',imax); { согласно заданию. }
WriteLn('Выводится столбец: ',jmax);
ReadKey; { Производится задержка экрана }
end.
Содержание отчёта по лабораторной работе
1 Цель лабораторной работы.
2. Задание.
3. Методические указания.
4. Блок-схема алгоритма программы.
5. Текст программы.
6. Результаты расчетов.
Контрольные вопросы
1 Как задается массива?
2 Как можно обратиться к отдельному элементу массива?
3 Каковы правила записи индексов?
4 Как определяют индексы в двумерном массиве?
5 Каким может быть тип массива?
6 Как располагаются в памяти ЭВМ элементы массива?
7 Каким образом можно присвоить начальные значения элементам массива?
8 Какой оператор цикла используется при введении элементов массива?
9 Как осуществляется вывод элементов матрицы на экран?
10 Какие виды массивов Вы знаете?
Литература [2, 3].
Лабораторная работа 5