Цель: способствовать формированию у обучающихся навыков заполнения и обработки двумерных массивов.
Ход урока:
1. Проверочная работа: «Двумерные массивы»:
- 5-7 мин. отводиться на выполнение проверочной работы (см. Приложение 1).
- Самопроверка. Обучающиеся проверяют свои работы, сверяясь с правильными ответами на экране проектора, (см. Приложение 2) и сами выставляют себе оценки.
- Учитель собирает работы для дальнейшего анализа степени усвоения материала.
2. Постановка задачи с элементами проблемного обучения.
Что это такое?
2х2=4
2х3=6 2х4=8 2х5=10 2х6=12 2х7=14 2х8=16 2х9=18 2х10=20 |
3х2=6
3х3=9 3х4=12 3х5=15 3х6=18 3х7=21 3х8=24 3х9=27 3х10=30 |
4х2=8
4х3=12 4х4=16 4х5=20 4х6=24 4х7=28 4х8=32 4х9=36 4х10=40 |
5х2=10
5х3=15 5х4=20 5х5=25 5х6=30 5х7=35 5х8=40 5х9=45 5х10=50 |
6х2=12
6х3=18 6х4=24 6х5=30 6х6=36 6х7=42 6х8=48 6х9=54 6х10=60 |
7х2=14
7х3=21 7х4=28 7х5=35 7х6=42 7х7=49 7х8=56 7х9=63 7х10=70 |
8х2=16
8х3=24 8х4=32 8х5=40 8х6=48 8х7=56 8х8=64 8х9=72 8х10=80 |
9х2=18
9х3=27 9х4=36 9х5=45 9х6=54 9х7=63 9х8=72 9х9=81 9х10=90 |
Предполагаемый ответ обучающихся: таблица умножения.
А это, что такое?
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 |
3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 |
4 | 8 | 12 | 16 | 20 | 24 | 28 | 32 | 36 |
5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 |
6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 |
7 | 14 | 21 | 28 | 35 | 42 | 49 | 56 | 63 |
8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 72 |
9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 |
Предполагаемый ответ учащихся – тоже таблица умножения, но в другом виде.
Комментарии учителя: таблица умножения, представленная в матричной форме, называется “Матрица Пифагора”.
А как ей пользоваться? По какому алгоритму, получаются значения в матрице Пифагора?
Предполагаемый ответ учащихся – номер столбца нужно умножить на номер строки.
Задание: Сформировать, средствами языка программирования Turbo Pascal, матрицу Пифагора и вывести ее на экран монитора.
Давайте, формализуем постановку нашей задачи.
Каким типом данных в Turbo Pascal, можно представить матрицу Пифагора?
Предполагаемый ответ учащихся – двумерным массивом.
В каких числовых приделах будут изменяться индексы этого двумерного массива?
I – Номер строки от 2 до 9,
J – Номер столбца так же от 2 до 9.
Какая формула будет использоваться для заполнения элементов двумерного массива?
Предполагаемый ответ учащихся- a[I,J]:=I*J.
Таким образом,
Формализованная постановка задачи: Дан двумерный массив, номера строк и столбцов, которого изменяются от 2 до 9. Заполнить данный массив по формуле I*J и вывести значения его элементов на экран по строкам.
Этапы построения программы:
- Описать двумерный массив A (индексы строк изменяются от 2 до 9, индексы столбцов изменяются от 2 до 9) и переменные для индексов I,J.
- Заполнить массив по формуле A[I,J]:=I*J.
- Вывести на экран двумерный массив А построчно.
Program xx;
uses crt;
var
a:array[2..9,2..9] of integer;
i,j:integer;
begin
clrscr;
for i:=2 to 9 do
for j:=2 to 9 do
a[i,j]:=i*j;
for i:=2 to 9 do
begin
for j:=2 to 9 do
write(a[i,j]:3);
writeln;
end;
readkey
end.
Обратите внимание, что мы сначала для заполнения используем два цикла, причем один цикл вложен в другой. Затем точно такие же циклы используем для вывода значений элементов массива.
Можно ли оптимизировать алгоритм?
Для оптимизации алгоритма можно данные вложенные циклы использовать только один раз, а не два. Для этого нужно после вычисления значения элемента массива, осуществить его вывод на экран. Тем самым количество строк алгоритма не изменится, но сократится время выполнения программы, что является в программировании очень важным.
Фрагмент программы | Оптимизированный фрагмент программы |
for i:=2 to 9 do for j:=2 to 9 do a[i,j]:=i*j; for i:=2 to 9 do begin for j:=2 to 9 do write(a[i,j]:3); writeln; end; |
for i:=2 to 9 do begin for j:=2 to 9 do begin a[i,j]:=i*j; write(a[i,j]:3); end; writeln; end; |