Цель: расширить кругозор учащихся в области использования массивов;
Задачи:
- познакомить с общими принципами применения массивов и некоторыми базовыми приемами их обработки:
- научить описывать двумерный массив;
- научить заполнять двумерный массив;
- уметь применять полученные знания при решении задач;
- способствовать развитию алгоритмического мышления учащихся.
План урока
- Организационный момент
- Проверка домашней работы (повторение пройденного материала -тест на доске)
- Новая тема
- Закрепление (разбор задачи на поиск максимального элемента, индексов максимального элемента с использованием подпрограмм)
- Постановка домашней работы
- Подведение итогов урока (выставление оценок)
Ход урока
Учитель: Здравствуйте, сегодня у нас гости, поздоровайтесь с гостями. Садитесь.
Учитель: Посмотрите на доску, прочитайте вопрос и сформулируйте ответ: укажите, какие из перечисленных структур данных позволяют хранить несколько значений вещественного типа (примеры данных 2.56, 98.21, 100)
- p: array[1..10] of single;
- w: array[1..15] of integer;
- b: single;
- qq: array[-5..5] of real;
- a: real;
Как Вы думаете, почему эти структуры данных позволяют хранить несколько значений?
Потому, что эти структуры данных: массивы.
А, что такое массив?
Кто-то из ребят по желанию руку поднимает и отвечает на поставленный вопрос (массив-то совокупность однотипных данных, хранящихся в последовательных ячейках памяти и имеющих общее имя)
Вспомним ребята, как же описывается одномерный массив.(один из уч-ся по желанию выходит к доске и описывает массив).
Вспомним заполнение массива и вывод элементов на экран.
Есть несколько способов, перечислите?
- заполнение массива с клавиатуры;
- по формуле;
- значениями датчика случайных чисел, используя функцию 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,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, заполненный случайным образом и выведите его на экран. Найдите максимальный элемент, а также укажите номер строки и столбца, содержащие этот элемент.
Для этого надо выполнить следующие действия:
- формирование массива и вывод элементов на экран;
- нахождение максимального элемента, индексов максимального элемента;
- вывод максимального элемента, вывод номера строки и номера столбца максимально элемента.
Математическая модель составляем или формализуем условие задачи:
a) исходные данные:
возьмем a- массив двумерный, n=4 – число строк, m=3 – число столбцов,
Max – максимальный элемент, Imax – номер строки максимального элемента, Jmax – номер столбца максимального элемента. i,j – соответственно индекс строки и индекс столбца.
Ребята, а как мы находи максимальный элемент?
Давайте проговорим( кто-то из уч-ся говорит)
- Сначала считаем, что максимальный элемент-Мax есть а[1,1];
- Сравниваем нашего кандидата в максимумы с всеми остальными элементами массива, начиная с самого себя в цикле.
- А почему начинаем с самого себя? ( дело в том, что, если далее начинать сравнивать Мax в цикле при i=1 и j=2, то элемент 2 строчки и 1 столбца не будет сравниваться с Мax);
- И если наш кандидат в максимумы оказался меньше или равно текущего элемента, то в кандидаты в максимумы будем считать текущий элемент.
- Почему меньше или равно? (так как сравниваем с самого себя)
(Учитель раздает домашнюю работу и комментирует)
Дома:
- найти минимальный элемент двумерного массива, а также номер строки и столбца, содержащие минимальный элемент. Формирование массива, вывод элементов и нахождение минимального элемента попробуйте оформить в виде процедур без параметров;
- Найти сумму всех элементов двумерного массива.
Учитель: Один из уч-ся рисует блок- схему нахождения максимального элемента, второй пишет полностью программу.( формирования массива и блок-схему берем с доски) Туда кое-что надо добавить?
А что, именно?
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.
Подведение итогов урока:
- О чем сегодня говорили?
- Тему урока, дорогие выпускники поняли?
- Расширили свой кругозор в области использования массивов?
Хорошо, я довольна Вашими ответами и активным участием на уроке, поэтому выставляю(кто у доски работал -5, а за участие на уроке-4).
Если время останется ,можно сформулировать условие классной задачи таким образом: найти, у кого самый высокий бал тестирования по математике за эту неделю. Вывести, например номер фамилии и номер дня тестирования. Номер фамилии- это номер строки, а номер дня тестирования- это номер столбца.