12+
Матрицы и программирование

Бесплатный фрагмент - Матрицы и программирование

Лабораторные работы

Объем: 34 бумажных стр.

Формат: epub, fb2, pdfRead, mobi

Подробнее

Введение

В течение 5 лет я преподавал в 2х средних специальных учебных учреждениях города Санкт-Петербурга:

Техникуме библиотечных и информационных технологий и университетском политехническом Колледже федерального государственного автономного образовательного учреждения высшего образования Политехнический университет Петра Великого.

В колледже технического университета имени Петра Великого по специальности 09.02.03 Программирование в компьютерных системах и 09.02.07 Информационные системы и программирование в процессе обучения студенты выполняли ряд лабораторных работ и заданий, связанных с приобретением знаний и практических навыков по разработке программ на языке Pascal.

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


ТАБЛИЦА 1. СЦЕНАРИЙ ПРОВЕДЕНИЯ ЛАБОРАТОРНЫХ И ПРАКТИЧЕСКИХ ЗАНЯТИЙ

Из сценария в таблице 1 видно, что очередной темой нащих занятий является тема «Создание алгоритмов и отладка программ обработки двухмерных массивов». Таким образом, данное занятие сводится к решению задач по теме «Матрицы» на языке программирования Паскаль.

1.Обработка двумерных числовых массивов

При выполнении работы необходимо знать:


— Знать и уметь строить алгоритмы циклической структуры для обработки двумерных массивов.

— Знать операторы цикла (смотри лаб. работу №5).

— Знать принципы и приемы обработки двумерных числовых массивов с использованием операторов цикла.

— Уметь составить схему программы (алгоритм) циклической структуры для обработки двумерного числового массива и записать программу по готовому алгоритму.


Теоретический минимум:


Переменные-массивы являются переменными сложного (структурированного) типа и представляют собой организованную группу элементов одного типа (линейную или прямоугольную таблицу).

Массив — это упорядоченная совокупность однотипных данных, имеющая одно общее имя.

Объявление массива. Перед началом работы с массивом, необходимо объявить его, а также зарезервировать место в памяти под соответствующие количество элементов.


Объявление двумерного массива в программе:


Type Mas = array [1..5, 1..6] of integer; {объявляем тип массив из 5 строк и 6 столбцов}

{содержащий элементы целого типа}

Var A, B: Mas; {переменные A, B типа двумерный массив}


Массивы можно объявить и так:

Var A, B: array [1..5, 1..6] of integer;

{переменные A, B типа массив из 5 строк и 6 столбцов}


Первый способ объявления предпочтительнее.

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

Приведем пример организации ввода двумерного массива целых чисел А [5, 6]. Нулевую строку и нулевой столбец использовать не будем, хотя это допускается.


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


For i:=1 to 5 do begin

For j:=1 to 6 do begin

Writeln («Введите значение A [», i,», j,»]:»);

Readln (A [i, j]);

End;

End;


При запуске на выполнение необходимо поочередно ввести 30 элементов массива (долго, не всегда удобно).

Ввод элементов двумерного массива случайным образом:


Randomize;

For i:=1 to 5 do begin

For j:=1 to 6 do begin

A [i, j]:=random (200) -100;

End;

End;

При запуске программы на выполнение элементы массива получат случайные значения при помощи генератора случайных чисел Random в интервале [-100; 100 [.


Вывод двумерного массива на экран. Осуществляется также при помощи двойного вложенного цикла: необходимо организовать цикл по строкам и цикл по столбцам. Чтобы массив выводился в виде прямоугольной таблицы, необходимо осуществлять вывод элементов через пробел, а затем перевести строку после того, как выведены элементы одной строки. С этой целью между операторами End; завершающими вложенные циклы, ставится пустой оператор Writeln; для перевода строки.


Вывод значений элементов двумерного массива на экран:

ClrScr; {очищение экрана}

For i:=1 to 5 do begin

For j:=1 to 6 do begin

Write (A [i, j]:5);

End;

Writeln;

End;

Обработка двумерных массивов может вестись либо в горизонтальном направлении (по строкам), либо в вертикальном направлении (по столбцам). Если обработка массива ведется по строкам, то внешний (первый) цикл будет по строкам. Если обработка массива ведется по столбцам, то внешний (первый) цикл будет по столбцам.

Естественным направлением просмотра двумерного массива обычно считается горизонтальное. Но если требуется подсчитать какие–либо величины в каждом столбце, то направление просмотра будет вертикальное.

Задача 1.1

Заполнить двумерный числовой массив B [4, 5] целыми числами. Найти произведение элементов каждого столбца массива.


Математическая формулировка задачи:


Чтобы определить такое произведение, нужно организовать обработку двумерного массива по столбцам. Для каждого столбца вычисляется свое произведение (всего должно получиться 5 ответов, так как имеется 5 столбцов). Будем вычислять произведение каждого столбца при помощи одной и той же переменной Р. Необходимо учесть, что при переходе в каждый новый столбец произведение должно вычисляться сначала, то есть значение Р надо сбрасывать в 1. Чтобы произведение предыдущего столбца при этом не пропадало, необходимо выводить на экран ответ (произведение каждого столбца) сразу после его вычисления, то есть во внешнем цикле. Внешний цикл (по столбцам) выполняется 5 раз, поэтому у нас получится 5 ответов.

Алгоритм обработки двумерного массива по столбцамк задаче 1.1

Текст программы к задаче 1. 1.

Program Ex_9_1;

Uses Crt;

Type Mas = array [1..4, 1..5] of integer;

{объявляем тип массив из 4 строк и 5 столбцов}


Var

B: Mas; {переменная B типа массив}

P: real; {произведение каждого столбца}

i, j: integer; {индексы массива}

Begin

ClrScr; {очищение экрана}

Textcolor (1); {цвет текста синий}

Randomize;

For i:=1 to 4 do begin

For j:=1 to 5 do begin

B [i, j]:=random (200) -100;

Write (B [i, j]);

End;

Writeln;

End;


For j:=1 to 5 do begin

P:=1;

For i:=1 to 4 do begin

P:=P*B [i, j];

End;

Writeln («Произведение», j,» столбца», P);

End;

Readln;

End.

Задача 1.2

Заполнить двумерный числовой массив Q [5, 5] целыми числами. Найти среднее арифметическое положительных элементов главной диагонали массива. При выводе массива выделить красным цветом положительные элементы главной диагонали.


Математическая формулировка задачи:


Главная диагональ квадратной матрицы имеет ту особенность, что номера строк и столбцов элементов главной диагонали совпадают, то есть у этих элементов i=j.

Таким образом, у нашего массива элементы главной диагонали будут: Q [1, 1]; Q [2, 2,]; Q [3, 3,]; Q [4, 4]; Q [5, 5]. Чтобы найти среднее арифметическое положительных элементов главной диагонали массива, нужно подсчитать сумму положительных элементов главной диагонали и их количество. Затем необходимо разделить сумму на количество (после выхода из цикла подсчета суммы).

Как при выводе массива выделить красным цветом положительные элементы главной диагонали? Организуем цикл вывода массива и будем проверять, является ли элемент массива положительным и к тому же принадлежащим главной диагонали. Если да, то установим цвет вывода красный, а иначе белый.

Текст программы к задаче 1. 2.

Program Ex_9_2;

Uses Crt;


Type Mas = array [1..5, 1..5] of integer;

{объявляем тип массив

из 5 строк и 5 столбцов}

Var

Q: Mas; {переменная Q типа массив}

Sr: real; {среднее арифметическое}

k: integer; {количество}

i, j: integer; {индексы массива}


Begin

ClrScr; {очищение экрана}

Textcolor (7); {цвет текста белый}

Randomize;

For i:=1 to 5 do begin

For j:=1 to 5 do begin

Q [i, j]:=random (200) -100;

{ввод элементов массива случайным образом}

Write (Q [i, j]);

End;

Writeln;

End;

For i:=1 to 5 do begin

If Q [i, i]> 0 then begin

k:=k+1;

S:=S+Q [i, i]; {подсчет количества и суммы положительных элементов массива}

End;

End;

Sr:=S/k;

Writeln («Sr=», Sr);


For i:=1 to 5 do begin

For j:=1 to 5 do begin

{окрашивание положительных эл-ов главной диагонали}

If (i=j) and (Q [i, j]> 0) then

Textcolor (4)

else Textcolor (7);

Write (Q [i, j]);

End;

Writeln;

End;

Readln;

End.

2.Задачи, рассматриваемые в работах 9 и 10

В математике таблицы чисел, состоящие из строк и столбцов называются матрицами и записываются соответствующим образом:

Бесплатный фрагмент закончился.

Купите книгу, чтобы продолжить чтение.