Цели:
- образовательные: способствовать формированию представления о двумерном массиве и основных свойств квадратных матриц; рассмотреть действия, которые можно выполнить над матрицами; познакомить с типовыми алгоритмами обработки матриц на языке Pascal; создать условия для формирования умения решать алгоритмы с двумерными массивами;
- развивающие: создать условия для развития умений работать за ограниченный промежуток времени, развития навыков самостоятельной работы, развития навыков работы с конспектом.
- воспитательные: содействовать созданию на уроке психологического комфорта для работы, воспитанию собранности, ответственного отношения к своему труду, повышения мотивации к учебной деятельности.
Тип урока: комбинированный.
Методы обучения: лекция, самостоятельная работа.
Формы организации: фронтальная работа, индивидуальная работа.
Оборудование: задания для работы в классе (индивидуальные карточки, задание на компьютере), записи на доске.
Ход урока:
1. Организационный момент .
Приветствие.
Сообщается тема.
Ставиться цель урока и задачи.
2. Актуализация полученных знаний
Устно проговариваются основные моменты предыдущей темы: “Одномерные массивы”. Фронтальный мини опрос по основным определениям.
3. Целеполагание, постановка задач:
4. Лекция
Определение.
Двумерным массивом называется совокупность данных, каждое значение которых зависит от двух чисел, которые можно рассматривать как индекс столбца в матрице.
Формат записи
<имя>: array [н_индекс_1..в_индекс_1, н_индекс_2 ..в_индекс_2] of <тип>
1) Var
A: array[1..n,1..m] of integer;
2) const
Для того чтобы использовать элемент массива, надо указать имя массива и индекс элемента. Первый индекс соответствует номеру строки, второй – номеру столбца. Например:
for i:=1 to n do
for j:=1 to n do
a[i,j]:= random (100);
При инициализации двумерных массивов каждая строка заключается в дополнительную пару круглых скобок:
const a:mas= ((2,3,1,0),
(1,9,1,3),
(3,5,7,0));
Аналогом массивов языка Паскаль в математике являются матрицы. Матрица, у которой число строк равно числу столбцов, называется квадратной. A(n,n) – квадратная матрица
Основные свойства квадратных матриц:
1. Квадратные матрицы имеют главную и побочные диагонали. Например, для матрицы А на главной диагонали лежат элементы 1,5 и 9, а на побочной – 3, 5 и 7.
.
Если:
i=j – элементы расположены на главной диагонали;
i> j – элементы расположены ниже главной
диагонали;
i<j – элементы расположены выше главной
диагонали;
i?j – элементы расположены на главной диагонали и
ниже;
i+j= n+1– элементы расположены на побочной
диагонали;
i+j< n+1– элементы расположены над побочной
диагональю;
i+j> n+1– элементы расположены под побочной
диагональю;
2. Квадратная матрица, у которой все элементы, исключая элементы главной диагонали, равны нулю, называется диагональной матрицей
.
3. Диагональная матрица, у которой все элементы, стоящие на главной диагонали, равны 1 , называется единичной матрицей
4. Если в матрице A (m,n) поменять местами строки и столбцы, то получится матрица At (m,n), которая называется транспонированной матрицей.
Основные действия, которые можно выполнять над матрицами
- суммировать;
- находить разность;
- произведение матрицы на некоторое число;
- произведение двух матриц.
Типовые алгоритмы обработки матриц на языке Паскаль
- Вывод матрицы в виде таблицы:
- Использование генератора случайных чисел:
- 2-ой способ вывода матрицы в виде таблицы:
- Суммирование матриц:
- Транспонирование матрицы – зеркальное отражение ее элементов относительно главной диагонали. Сделать это можно, введя новый массив:
for i:= 1 to n do
begin
for j:= 1 to m do
write (a[i,j]:4);
writeln
end;
randomize;
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=random(100)-10;
write(a[i,j]:4);
end;
writeln;
end;
for i:= 1 to n do
for j:= 1 to m do
if j>m then write (a[i,j]:4)
else writeln (a[i,j]:4);
for i:= 1 to n do
begin
for j:= 1 to m do
c[i,j]:=a[i,j]+ b[i,j]
end;
for i:= 1 to n do
for j:= 1 to n do
b[i,j]= a[j,i];
5. Первичный контроль
“Контурная карта” 2 варианта
1 вариант
- Исправьте неточности в описании двумерного массива:
- Вставьте пропущенные определения:
- Вставьте пропущенные определения:
- Вставьте пропущенные определения:
- Найдите ошибки в алгоритме:
Var
A= array[1..n,1..m] of integer;
… … двумерных массивов каждая строка заключается в дополнительную пару круглых скобок:
const a:mas= ((2,3,1,0),
(1,9,1,3),
(3,5,7,0));
Основные действия, которые можно выполнять над матрицами: суммирование, произведение двух матриц,….,….
Матрица, у которой число строк равно числу столбцов, называется …. ….. .
for i:= 1 to n do
begin
for j:= 1 to m do
c[i,j]:=a[i,j]+ a[i,j]
end;
Какую типовую задачу выполняет алгоритм?
2 вариант
- Исправьте неточности в описании массива:
const
n=4; m=3;
type
mas:array[1..m,1..n] of integer;
- Вставьте пропущенные определения:
- Вставьте пропущенные определения:
- Вставьте пропущенные определения:
- Найдите ошибки в алгоритме:
…… называется совокупность данных, каждое значение которых зависит от двух чисел, которые можно рассматривать как индекс столбца в матрице.
Диагональная матрица, у которой все элементы, стоящие на главной диагонали, равны … , называется единичной матрицей
Квадратная матрица, у которой все элементы, исключая элементы главной диагонали, равны нулю, называется … … .
randomize;
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=random(100)-10;
end;
end;
Какую типовую задачу выполняет алгоритм?
А теперь сверимся: Приложение 1
Алгоритмы на языке Паскаль
- Написать программу, которая для целочисленной матрицы 3х4 определяет среднее арифметическое ее элементов и количество положительных элементов в каждой строке. Приложение 2
- Написать программу, которая для прямоугольной целочисленной матрицы 3х4 определяет номер самого левого столбца, содержащего только положительные элементы. Если такого столбца нет, выводится сообщение. Приложение 3
program sred_n;
const m=3;
n= 4;
var
a: array[1..m,1..n] of integer;
i,j,n_pos_el:integer;
sred:real;
begin
for i:=1 to m do
for j:=1 to n do read(a[i,j]);
sred:=0;
for i:=1 to m do begin
n_pos_el:=0;
for j:=1 to n do begin
sred:=sred+a[i,j];
if a[i,j]>0 then inc(n_pos_el);
end;
writeln('V',i,'-oi stroke',n_pos_el,'polozitelnix elementov');
end;
sred:=sred/m/n;
writeln('Srednee arifmeticheskoe:',sred:6:2);
end.
program num_posit;
const m=3;
n=4;
var
a: array[1..m,1..n] of integer;
i,j,num:integer;
all_posit:boolean;
begin
randomize;
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=random(100)-10;
write(a[i,j]:4);
end;
writeln;
end;
num:=0;
for j:=1 to n do begin
all_posit:=true;
for i:=1 to m do
if a[i,j] < 0 then
begin
all_posit:=false;
break; end;
if all_posit then begin
num:=j; break; end;
end;
if num = 0 then
writeln('Takix stolbcov net')
else
writeln('Nomer stolbca:',num);
end.
Ученики загружают файлы в Паскале, анализируют данный алгоритмы, просматривают результаты выполнения программ, отвечают на дополнительные вопросы:
- Как организуется двумерный массив?
- Что означает процедура inc?
- Что означает процедура break?
- Как используется генератор случайных чисел?
6. Формирование навыков решения задач.
Решение задач по индивидуальным карточкам самостоятельно, в алгоритмической среде.
Примеры задач:
- Дана матрица А5х5, содержащая случайные элементы. Найти сумму всех элементов матрицы.
- Вывести на экран таблицу Пифагора.
- Найти сумму положительных элементов указанного столбца матрицы А5х5 целых чисел.
7. Итоги урока, постановка домашнего задания.
Подведение итогов. Оценка уровня усвоения.
Д/З конспект, задачи:
Для всех:
- Дан двумерный квадратный массив. Найти номера строк, все элементы которых равны нулю.
- Дан двумерный квадратный массив. Найти номера строк, элементы в каждой из которых одинаковы между собой.
- Определить минимальный элемент двумерного массива. Напечатать номер строки, содержащей максимальное число минимальных элементов, если такие имеются.
- Дан двумерный массив. Найдите строку с наибольшей суммой элементов и наименьшей. Вывести на экран найденные строки и суммы их элементов.
Для учащихся, имеющих представление о двумерных массивах и способах их решения:
Вместо лекции – решение задач повышенной сложности.
Примеры задач:
- Дан двумерный массив. Преобразовать его по следующему правилу: строку с номером N сделать столбцом с номером N, а столбец – строкой.
- В двумерном массиве Х все числа различны. В каждой строке выбирается минимальный элемент, затем среди этих чисел выбирается максимальное. Напечатать номер строки массива Х, в которой расположено выбранное число.
- Дан двумерный массив. Найти наибольшее из значений элементов первой и последней строки.
- Написать программу, которая выводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов по столбцам.
- Написать программу, которая вычисляет сумму диагональных элементов квадратной матрицы.