Двумерные массивы: описание, запоминание. Решение задач на использование двумерных массивов

Разделы: Информатика


Цель: расширить кругозор учащихся в области использования массивов;

Задачи:

  • познакомить с общими принципами применения массивов и некоторыми базовыми приемами их обработки:
  • научить описывать двумерный массив;
  • научить заполнять двумерный массив;
  • уметь применять полученные знания при решении задач;
  • способствовать развитию алгоритмического мышления учащихся.

План урока

  1. Организационный момент
  2. Проверка домашней работы (повторение пройденного материала -тест на доске)
  3. Новая тема
  4. Закрепление (разбор задачи на поиск максимального элемента, индексов максимального элемента с использованием подпрограмм)
  5. Постановка домашней работы
  6. Подведение итогов урока (выставление оценок)

Ход урока

Учитель: Здравствуйте, сегодня у нас гости, поздоровайтесь с гостями. Садитесь.

Учитель: Посмотрите на доску, прочитайте вопрос и сформулируйте ответ: укажите, какие из перечисленных структур данных позволяют хранить несколько значений вещественного типа (примеры данных 2.56, 98.21, 100)

  1. p: array[1..10] of single;
  2. w: array[1..15] of integer;
  3. b: single;
  4. qq: array[-5..5] of real;
  5. a: real;

Как Вы думаете, почему эти структуры данных позволяют хранить несколько значений?

Потому, что эти структуры данных: массивы.

А, что такое массив?

Кто-то из ребят по желанию руку поднимает и отвечает на поставленный вопрос (массив-то совокупность однотипных данных, хранящихся в последовательных ячейках памяти и имеющих общее имя)

Вспомним ребята, как же описывается одномерный массив.(один из уч-ся по желанию выходит к доске и описывает массив).

Вспомним заполнение массива и вывод элементов на экран.

Есть несколько способов, перечислите?

  1. заполнение массива с клавиатуры;
  2. по формуле;
  3. значениями датчика случайных чисел, используя функцию random.

Пожалуйста к доске (кто-то из ребят заполняет)

Одномерный массив

описание

1. const n=5;
type
Mass=array[1..n] of integer;
Var
a: Mass;

2. заполнение

randomize;{для запуска генератора случайных чисел воспользуемся}

for i:=1 to n do
begin
a[i]:=-50+random(101);
write(a[i]:4);
end;
writeln;

Двумерный массив

описание

1. const n=5; m=6;
type
Mass=array[1..n,1..m] of integer;
var
a: Mass;

2. заполнение

randomize;
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=-50+random(101);
write(a[i,j]:4);
end;
writeln;
end;

Когда заполняет массив, уч-ся должны проговаривать, что так как ТР не имеет средств ввода-вывода элементов массива сразу, поэтому ввод и вывод значений производится поэлементно в цикле.

Пока ребята описывают, заполняют массив (учитель рассказывает)

Учитель: С понятием массив мы встречаемся при обработке совокупностей большого количества значений при решении прикладных задач.

Еще одно название массивов- тип регулярный (ряды) –они получили за то, что в них объединены однотипные (логически однородные) элементы, упорядоченные по индексам.

Одномерный массив визуально можно представить как строку элементов или вектор, однако наш мир не ограничивается одним измерением.

Как вы, думаете , ребята почему мы вспомнили описание одномерного массива, заполнение?

Уч-ся: Потому, что мир не бывает одномерным, как вы сказали Н.Т.(могут сказать)

Учитель: Из всего сказанного можете сформулировать тему урока?

Уч-ся: пытаются сформулировать тему урока

Учитель: Логический вывод сделали, бывают массивы трехмерные, 4-х мерные, а сегодня мы с вами будем говорить о двумерных массивах.

Открыли тетради, записали число и тему урока: Двумерные массивы.

Мы сегодня должны научиться:

  1. описывать двумерный массив;
  2. заполнять двумерный массив и вывести на экран элементов массива;
  3. уметь применять наши знания при решении задач, то есть расширить наш кругозор в области использования массивов.

Внимание на доску (перед Вами двумерный массив)

Имя массива? (любые буквы латинского алфавита)

Из скольких строк состоит этот массив?

Из скольких столбцов?

Значениями этих элементов массива являются- а[1,3]=3, a[3,1]=8

Назовите элементы массива, значениями, которых являются только отрицательные числа?

В общем виде а[i,j]

То есть местоположение каждого элемента определяется индексом-номером строки и индексом- номером столбца.

Нигде не определено, что i- номер строки, а j- номер столбца,

так как выводом на экран занимается программист, он сам решает, как ему удобнее. Мне удобнее считать, что номер строки- первый индекс, а номер столбца-второй индекс.

Если мы вернемся в наш кабинет информатики, вы все являетесь значениями элементов двумерного массива. Ваши места- это элементы массива, только тип массива будет строковый- ваши фамилии и имена- тип string.

Согласны со мной, посмотрите на этот массив, что на доске.

Догадались?

Строки-номера парт, столбцы-ряды.

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

Например: a[1,3], a[2,4], a[5,2] и т.д.

Поняли? Идем дальше.

Внимание сюда на доску. В описании одномерного массива, что необходимо добавить? Может кто желает выйти к доске?

Заполнение, немножко сложновато, но общими усилиями преодолеем.

У двумерного массива два индекса, поэтому при заполнении используем вложенный цикл (заполняем)

Кстати, в математике двумерный массив называют матрицей.

Вопрос: какая прикладная программа, которую вы изучили в 10 классе напоминает вам двумерный массив ( ответ учащихся Microsoft Excel).

Учитель: Кому непонятно?

Идем дальше. Переходим к применению при решении задач. Дана задача, решим её применяя наши полученные знания. Прочитайте условия.

Задача:

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

Для этого надо выполнить следующие действия:

  1. формирование массива и вывод элементов на экран;
  2. нахождение максимального элемента, индексов максимального элемента;
  3. вывод максимального элемента, вывод номера строки и номера столбца максимально элемента.

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

a) исходные данные:

возьмем a- массив двумерный, n=4 – число строк, m=3 – число столбцов,

Max – максимальный элемент, Imax – номер строки максимального элемента, Jmax – номер столбца максимального элемента. i,j – соответственно индекс строки и индекс столбца.

Ребята, а как мы находи максимальный элемент?

Давайте проговорим( кто-то из уч-ся говорит)

  1. Сначала считаем, что максимальный элемент-Мax есть а[1,1];
  2. Сравниваем нашего кандидата в максимумы с всеми остальными элементами массива, начиная с самого себя в цикле.
  3. А почему начинаем с самого себя? ( дело в том, что, если далее начинать сравнивать Мax в цикле при i=1 и j=2, то элемент 2 строчки и 1 столбца не будет сравниваться с Мax);
  4. И если наш кандидат в максимумы оказался меньше или равно текущего элемента, то в кандидаты в максимумы будем считать текущий элемент.
  5. Почему меньше или равно? (так как сравниваем с самого себя)

(Учитель раздает домашнюю работу и комментирует)

Дома:

  1. найти минимальный элемент двумерного массива, а также номер строки и столбца, содержащие минимальный элемент. Формирование массива, вывод элементов и нахождение минимального элемента попробуйте оформить в виде процедур без параметров;
  2. Найти сумму всех элементов двумерного массива.

Учитель: Один из уч-ся рисует блок- схему нахождения максимального элемента, второй пишет полностью программу.( формирования массива и блок-схему берем с доски) Туда кое-что надо добавить?

А что, именно?

n=4; m=3;
Program Maxsimum;
В var I, j, Max, Imax, Jmax: integer;

Блок-схема нахождения максимального элемента:

Программа: (описании и заполнение берем готовую с таблицы, которая на доске)

Program Maxsimum;
Uses CRT;
const n=4; m=3;
type
Mass=array[1..n,1..m] of integer;
var
a:Mass;
I, j, Max, Imax, Jmax: integer;
begin
Clrscr;
Randomize;
for i:=1 to n do
begin
for j:=1 to m do
begin
a[I,j]:=-50+random(101);
write(a[I,j]:4);
end;
writeln;
end;
Max:=a[1,1];
for i:=1 to n do
for j:=1 to m do
if Max:<=a[i,j] then
begin
Max:=a[i,j];
Imax:=i: Jmax:=j:
end;
Writeln(‘Max=’,Max);
Writeln(‘Imax=’,Imax);
Writeln(‘Jmax=’,Jmax);
Readln;
end.

Подведение итогов урока:

  1. О чем сегодня говорили?
  2. Тему урока, дорогие выпускники поняли?
  3. Расширили свой кругозор в области использования массивов?

Хорошо, я довольна Вашими ответами и активным участием на уроке, поэтому выставляю(кто у доски работал -5, а за участие на уроке-4).

Если время останется ,можно сформулировать условие классной задачи таким образом: найти, у кого самый высокий бал тестирования по математике за эту неделю. Вывести, например номер фамилии и номер дня тестирования. Номер фамилии- это номер строки, а номер дня тестирования- это номер столбца.