Алгоритмы с использованием двумерных массивов

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


Цель: способствовать формированию у обучающихся навыков заполнения и обработки двумерных массивов.

Ход урока: 

1. Проверочная работа: «Двумерные массивы»:

  1. 5-7 мин. отводиться на выполнение проверочной работы (см. Приложение 1).
  2. Самопроверка. Обучающиеся проверяют свои работы, сверяясь с правильными ответами на экране проектора, (см. Приложение 2) и сами выставляют себе оценки.
  3. Учитель собирает работы для дальнейшего анализа степени усвоения материала.

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 и вывести значения его элементов на экран по строкам.

Этапы построения программы:

  1. Описать двумерный массив A (индексы строк изменяются от 2 до 9, индексы столбцов изменяются от 2 до 9) и переменные для индексов I,J.
  2. Заполнить массив по формуле A[I,J]:=I*J.
  3. Вывести на экран двумерный массив А построчно.

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;