Разделы презентаций


Двумерные массивы в языке программирования Pascal

Содержание

В математике таблицы чисел, состоящие из строк и столбцов называются матрицами и записываются в круглых скобках. Двумерный массив. Матрицы

Слайды и текст этой презентации

Слайд 1Двумерные массивы
Автор: учитель информатики МКОУ Плесской средней общеобразовательной школы
Юдин

Андрей Борисович
Часть 1

Двумерные  массивыАвтор: учитель информатики МКОУ Плесской средней общеобразовательной школы Юдин Андрей БорисовичЧасть 1

Слайд 2В математике таблицы чисел, состоящие из строк и столбцов называются

матрицами и записываются в круглых скобках.

Двумерный массив. Матрицы

1
В математике таблицы чисел, состоящие из строк и столбцов называются матрицами и записываются в круглых скобках. Двумерный

Слайд 3Двумерный массив. Применение.

2

Использование двумерных массивов для построения поверхностей.

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

Слайд 4Двумерный массив. Определение.

3

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

Способ организации данных, при котором каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен, называется двумерным массивом

Двумерный массив. Определение.

Слайд 5Двумерный массив. Определение

4

1 2 3 4 5 6

1

2

3

В математике:

В Pascal:

Ai;j

A[i,j]

A[2,4]

A[1,2]

A[3,5]

Двумерный массив. Определение

Слайд 6Двумерный массив. Описание

5

Самый простой способ описания массива

a : array [1..10, 1..20] of real;

Имя массива

Количество строк

Количество столбцов

Тип данных в массиве

a: array [1..10] of array [1.. 20] of real;





Описание как массив массивов:

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

Каждый элемент которого в свою очередь является одномерным массивом



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

Слайд 7Двумерный массив. Описание

6

Const   m=10; n =20; Var   a : array [1.. m, 1.. n] of integer;

Количество строк и столбцов через константу.


В разделе констант указываем число строк и столбцов

type t=array[1..m,1..n] of integer;
var a : t;

Определением нового типа данных.


Определяем пользовательский тип , двумерный массив

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

Слайд 8Двумерный массив. Описание

7

const
a: array[1..3,1..5] of  integer =
((3,-2,1,4,3),
(-5,-9,0,3,7),
(-1,2,1,-4,0));

Массив констант.


Непосредственно в программе указываем значения элементов массива.

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

Слайд 9For i := 1 to 3 do begin

For j := 1 to 4 do

begin
write('A[ ', i, ', ',j, ']= ');
readln(a[i, j])
end;

Двумерный массив. Заполнение 8

Заполнение массива с клавиатуры:



Цикл отвечающий за перебор строк. Берем первую, вторую и так далее строки

Цикл отвечающий за перебор ячеек в каждой строке.


end;

For i := 1 to 3 do begin    For j := 1 to 4

Слайд 10Двумерный массив. Заполнение

9

Блок-схема заполнения с клавиатуры:

Цикл отвечающий за перебор строк. (Внешний цикл)

Цикл отвечающий за перебор ячеек в каждой строке. (Внутренний цикл)

Двумерный массив. Заполнение

Слайд 11Двумерный массив. Заполнение

10

Заполнение массива случайными числами:

For i := 1 to 3 do begin
For j := 1 to 4 do begin
a[i, j] := random(21) - 10;
write(a[i, j]:6);
end;
writeln;
end;


Write без LN выводит элементы массива в строку


Когда i-я строка закончилась, пишем пустой WriteLN для перехода на новую строку

Двумерный массив. Заполнение

Слайд 12Двумерный массив. Заполнение

11

j , 1, N

Вывод a i , j

i , 1, N

a i , j=
случайное[-10;10]

Цикл отвечающий за перебор строк. (Внешний цикл)

Цикл отвечающий за перебор ячеек в каждой строке. (Внутренний цикл)

Двумерный массив. Заполнение

Слайд 13Двумерный массив. Заполнение

12

Заполнение массива по правилу:

For i := 1 to 3 do begin
For j := 1 to 4 do begin
a[i, j] :=ФОРМУЛА;
write(a[i, j]:6);
end;
writeln;
end;

Заполнить произвольный массив размером N x N (N<10) по следующему правилу:
11111
22222
33333
44444
55555

ClrScr;
Write('ВВеди N = ');Readln(n);
For i:=1 to n do begin
For j:=1 to n do begin
a[i,j]:=i;
write(a[i,j]:4);
end;
writeln;
end;


Значение элемента в каждой ячейке строки равно номеру строки.

Двумерный массив. Заполнение

Слайд 14Двумерный массив. Заполнение

13

a11





a22

a23

a32

a33

a14



a41



a44

1 2 3 4

1

2

3
4

Главная диагональ:
I=J

Побочная диагональ:
I+J=N+1

Заполнить произвольный массив размером
N x N (N<10) по следующему правилу:
00001
00010
00100
01000
10000

ClrScr;
Write('ВВеди N = ');Readln(n);
For i:=1 to n do begin
For j:=1 to n do begin
if (i+j = n+1) then a[i,j]:=1
else a[i,j]:=0;
write(a[i,j]);
end;
writeln;
end;


Если побочная диагональ то заполнить ячейку 1 во всех остальных случаях 0

Двумерный массив. Заполнение

Слайд 15Двумерный массив. Заполнение

14

Фрагмент блок-схемы задачи заполнения побочной диагонали единицами

j , 1, N

Вывод a i , j

i , 1, N

a i , j= 0

Ввод N

i+j=N+1

a i , j= 1

Да

Нет

Двумерный массив. Заполнение

Слайд 16Двумерный массив. Заполнение

15





a11




a22


a33






a44






a55



Удовлетворяет неравенству
i < j

Удовлетворяет неравенству
i > j

1
2
3
4
5

1 2 3 4 5

Двумерный массив. Заполнение

Слайд 17Двумерный массив. Заполнение

16





a15




a24


a33






a42






a51



Удовлетворяет неравенству
i+j

Удовлетворяет неравенству
i+j>n+1

1 2 3 4 5

1
2
3
4
5

Двумерный массив. Заполнение

Слайд 18Двумерный массив. Заполнение

17




a11




a22


a33






a44





a55



1
2
3
4
5

1 2 3 4 5

a42

a51

a24

a15

(i+j

(i+j>n+1) And (i

(i+j>n+1) And (i>j)

(i+jj)

Системы неравенств

Двумерный массив. Заполнение

Слайд 19Двумерный массив. Заполнение

18

Заполнить произвольный массив размером N x N (N<10) по следующему правилу:
00001
00011
00111
00011
00001

Это пересечение двух множеств. Элементы лежащие на и ниже побочной диагонали и элементы лежащие на и выше главной диагонали


Write('ВВеди N = '); Readln(n);
For i:=1 to n do begin
For j:=1 to n do begin
if (i+j>=n+1) and (i<=j) then a[i,j]:=1
else a[i,j]:=0;
write(a[i,j]:2);
end;
writeln;
end;



Проверяем условие принадлежности данному множеству

Двумерный массив. Заполнение

Слайд 20Двумерный массив. Сумма элементов

19

Заполнить двумерный массив N x N случайными числами из интервала [-10 ; 10] и найти сумму элементов массива лежащих на главной диагонали.

Один или два прохода по массиву?

Первый способ. Один проход по массиву
ClrScr;
Write('ВВеди N = ');Readln(n);
s:=0;
For i:=1 to n do begin
For j:=1 to n do begin
a[i,j]:=random(20)-10;
write(a[i,j]:4);
if (i=j) then s:=s+ a[i,j];
end;
writeln;
end;
writeln('Сумма элементов =',s:5);


Заполняем случайными числами и выводим на экран


И сразу же находим сумму элементов лежащих на главной диагонали

Второй способ. Два прохода по массиву
Write(' ВВеди N = ');Readln(n);
s:=0;
For i:=1 to n do begin
For j:=1 to n do begin
a[i,j]:=random(20)-10;
write(a[i,j]:4);
end;
writeln;
end;
For i:=1 to n do
For j:=1 to n do
if (i=j) then s:=s+ a[i,j];
writeln('Сумма элементов =',s:5);


Первый проход. Заполняем массив и выводим его на экран


Второй проход. Находим сумму.

Замечание.
Если нужно что то сделать только
с главной диагональю,
то можно обойтись без вложенных циклов
For i:=1 to n do s:=s+ a[i,i];

Двумерный массив. Сумма элементов

Слайд 21Двумерный массив. Сумма элементов

20

j , 1, N

Вывод a i , j

i , 1, N

a i , j=
случайное[-10;10]

Ввод N

S = 0

i = j

S =S + a i , j

Вывод S

Да

Нет

Нахождение суммы элементов на главной диагонали за один проход по массиву

Двумерный массив. Сумма элементов

Слайд 22Двумерный массив. Сумма элементов

21

1

Нахождение суммы элементов на главной диагонали за два прохода

Двумерный массив. Сумма элементов

Слайд 23Двумерный массив. Сумма элементов

22

i , 1, N

S =S + a i , i

Вывод S

Нахождение суммы элементов на главной диагонали за два прохода (в случае когда речь идет только о главной диагонали и остальной массив не нужен)

Двумерный массив. Сумма элементов

Слайд 24Двумерный массив. Минимальный элемент

23

Один или два прохода по массиву? Рассуждение второе.

Заполнить двумерный массив N x N случайными числами из интервала [-10 ; 10] и найти минимальный элемент лежащий на главной диагонали.


Двумерный массив. Минимальный элемент

Слайд 25Двумерный массив. Минимальный элемент

24

Стандартный способ без анализа задачи
Write('ВВеди N = ');Readln(n);
For i:=1 to n do begin
For j:=1 to n do begin
a[i,j]:=random(21)-10;
write(a[i,j]:4);
end;
Writeln;
end;
m:=a[1,1];
For i:=1 to n do
For j:=1 to n do
if (a[i,j] writeln(' Минимальный элемент =',m:5);


Заполняем массив случайными числами


Предполагаем, что минимальный элемент стоит в левом верхнем углу


Если встречается элемент меньше m, и он лежит на главной диагонали, то он становится минимальным

Замечание.
В данном случае можно не бегать по всему
массиву а пройти только по главной диагонали, обойдясь без вложенных циклов.

m:=a[1,1];
For i:=2 to n do
if (a[i,i]

Двумерный массив. Минимальный элемент

Слайд 26Двумерный массив. Минимальный элемент

25

Если немного по рассуждать, можно увидеть, что самое «маленькое» число, которое может выдать генератор случайных чисел это 10. Все остальные числа будут меньше его. Т.к. в условии задачи нам точно задан интервал
[-10 ; 10].

С анализом исходных данных задачи
Write('ВВеди N = ');Readln(n);
m:=10;
For i:=1 to n do begin
For j:=1 to n do begin
a[i,j]:=random(21)-10;
write(a[i,j]:4);
if (a[i,j] end;
Writeln;
end;
writeln(' Минимальный элемент лежащий на главной диагонали =',m:5);


Предполагаем, что самое маленькое число 10, правая граница исходного интервала.


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

Двумерный массив. Минимальный элемент

Слайд 27Двумерный массив . Максимальный элемент в строке

26

Заполнить двумерный массив N x N случайными числами из интервала [-10 ; 10] и найти максимальный элемент в каждой строке.









Двумерный массив . Максимальный элемент в строке

Слайд 28Двумерный массив. Максимальный элемент в строке

27

Write('ВВеди N = ');Readln(n);
For i:=1 to n do begin
max:=-10;
For j:=1 to n do begin
a[i,j]:=random(21)-10;
write(a[i,j]:4);
if (a[i,j]>max) then max:= a[i,j];
end;
write(' MAx = ',max:5);
writeln;
end;

Решение в один проход,
с анализом задачи


Предполагаем, что самое большое число - 10, левая граница исходного интервала.


Перебираем строки



Заполняем элемент массива и выводим его на экран


Если в строке встречается элемент больше максимального, то он становится максимальным


Выводим наибольший элемент в строке

Двумерный массив. Максимальный элемент в строке

Слайд 29Двумерный массив. Максимальный элемент в строке

28

j , 1, N

Вывод a i , j

i , 1, N

a i , j=
случайное[-10;10]

Ввод N

Мах = - 10

a i , j > Max

Max = a i , j

Вывод Max

Да

Нет

Нахождение максимального элемента в каждой строке в один проход

Конец

Двумерный массив. Максимальный элемент в строке

Слайд 30Двумерный массив. Максимальный элемент в строке

29

ClrScr;
Write(‘Введи N = ');Readln(n);
For i:=1 to n do begin
For j:=1 to n do begin
a[i,j]:=random(21)-10;
write(a[i,j]:4);
end;
writeln;
end;

Заполняем массив и выводим его на экран

For i:=1 to n do begin
max:=a[i,1];
For j:=2 to n do if (a[i,j]>max) then
max:= a[i,j];
writeln('В ',i,' строке max = ',max:5);
end;









Перебираем строки

Предполагаем, что наибольший элемент в каждой строке стоит на первом месте

Идем по строке и если находим элемент больший чем максимальный, то он становится максимальным

Вывод наибольшего элемента в строке

Стандартным способом,
первый проход – заполнение,
второй проход – поиск
максимального в строках

Двумерный массив. Максимальный элемент в строке

Слайд 31Двумерный массив. Максимальный элемент в строке

30

j , 1, N

Вывод a i , j

i , 1, N

a i , j=
случайное[-10;10]

Ввод N

1

j , 2, N

i , 1, N

Мах = a i , 1

a i , j > Max

Max = a i , j

Вывод Max

Да

Нет

1

Начало

Конец

Нахождение максимального элемента в каждой строке в два прохода

Двумерный массив. Максимальный элемент в строке

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика