Содержание

Слайд 2

Задача: в одномерном массиве, состоящем из n целых чисел найти минимальный

Задача: в одномерном массиве, состоящем из n целых чисел найти минимальный

по модулю элемент и его номер
Слайд 3

const n = 10; type miniarr = array[1..n] of integer; var

const n = 10;
type miniarr = array[1..n] of integer;
var

a, b: miniarr;
i: byte;
begin
write ('Введите ', n, ' чисел через пробел: ');
for i := 1 to n do read (a[i]);

end.

Задание: Ниже приведен фрагмент решения некоторой задачи. Внимательно рассмотрев решение, сформулируйте решаемую задачу

Слайд 4

const N = 10; var arr: array[1..N] of integer; i, k:

const N = 10;
var arr: array[1..N] of integer;
i, k:

byte; sum: integer;
avr: real;
begin
…….
sum := 0; i := 1; k := 0;
while i <= N do
begin
sum := sum + arr[i]; k := k + 1; i := i + 2
end;
writeln(sum);
avr := sum / k;
writeln(avr);
readln;
end.

сформулировать условие задачи, которая решается в данном фрагменте программы:

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

Слайд 5

const N = 10; var arr: array[1..N] of integer; i, k:

const N = 10;
var arr: array[1..N] of integer;
i, k:

byte; sum: integer;
avr: real;
begin
…….
sum := 0; i := 1; k := 0;
while i <= N do
begin
if (arr[i] mod 2) = 0 then
begin sum := sum + arr[i]; k := k + 1 end;
i := i + 2
end;
writeln(sum);
if k <> 0 then
begin avr := sum / k; writeln(avr)
end
else writeln('No elements');
readln; end.

сформулировать условие задачи, которая решается в данном фрагменте программы:

Находится сумма четных элементов массива с нечетными индексами и их среднее арифметическое, при условии, что такие элементы существуют.

Слайд 6

Точно и четко сформулировать условие задачи, которая решается в данной программе:

Точно и четко сформулировать условие задачи, которая решается в данной программе:

Program

Kr_2_3; Const NMax = 100; Type LinMass = Array[1..NMax] Of Integer; Var A : LinMass; N, I, M : Integer; Begin Write('Количество элементов массива? '); ReadLn(N); M := -32768; For I := 1 To N Do Begin Write('Введите A[', I, '] '); ReadLn(A[I]); If A[I] > M Then M := A[I] End; For I := 1 To N Do A[I] := A[I] + M; For I := 1 To N Do Write(A[I] : 6); WriteLn End.

Вводится с клавиатуры количество элементов массива, сами элементы массива. Находится максимальный элемент, и каждый элемент массива увеличивается на значение максимального элемента. Полученный массив выводится на экран.

Слайд 7

Сортировка массивов Метод «пузырька»

Сортировка массивов

Метод «пузырька»

Слайд 8

Метод пузырька Сортировка методом «пузырька» использует метод обменной сортировки и основана

Метод пузырька

Сортировка методом «пузырька» использует метод обменной сортировки и основана на

выполнении в цикле операций сравнения и при необходимости обмена соседних элементов.
Слайд 9

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

Метод пузырька. Идея

Идея – пузырек воздуха в стакане воды поднимается со

дна вверх.
Для массивов – самый маленький ("легкий") элемент перемещается вверх ("всплывает").

начиная снизу, сравниваем два соседних элемента; если они стоят "неправильно", меняем их местами
за 1 проход по массиву один элемент (самый маленький) становится на свое место

1-ый проход

2-ый проход

3-ий проход

Для сортировки массива из N элементов нужен N-1 проход (достаточно поставить на свои места N-1 элементов).

Слайд 10

a b c = = 2 5 Как поменять значения? 2 5 2

a

b

c

=

=

2

5

Как поменять значения?

2

5

2

Слайд 11

Метод пузырька. Программа 1-ый проход: сравниваются пары A[N-1] и A[N], A[N-2]

Метод пузырька. Программа

1-ый проход:

сравниваются пары
A[N-1] и A[N], A[N-2] и A[N-1]


A[1] и A[2]

A[j] и A[j+1]

2-ой проход

for j:=N-1 downto 2 do
if A[j] > A[j+1] then begin
c:=A[j]; A[j]:=A[j+1]; A[j+1]:=c;
end;

2

for j:=N-1 downto 1 do
if A[j] > A[j+1] then begin
c:=A[j]; A[j]:=A[j+1]; A[j+1]:=c;
end;

1

i-ый проход

for j:=N-1 downto i do
...

i

Слайд 12

Метод пузырька. Программа program qq; const N = 10; var A:

Метод пузырька. Программа

program qq;
const N = 10;
var A: array[1..N] of integer;

i, j, c: integer;
begin
{ заполнить массив }
{ вывести исходный массив }
for i:=1 to N-1 do begin
for j:=N-1 downto i do
if A[j] > A[j+1] then begin
с := A[j];
A[j] := A[j+1];
A[j+1] := с;
end;
end;
{ вывести полученный массив }
end;

i

элементы выше A[i] уже поставлены

Слайд 13

Метод пузырька. Идея Или наоборот - самый большой ("тяжелый") элемент перемещается

Метод пузырька. Идея

Или наоборот - самый большой ("тяжелый") элемент перемещается вниз

("тонет").

1-ый проход

2-ый проход

3-ый проход

4-ый проход

Слайд 14

Метод пузырька. Алгоритм i=1, N-1 j=1, N-i Aj > Aj+1 c:=

Метод пузырька. Алгоритм

i=1, N-1

j=1, N-i

Aj > Aj+1

c:= Aj+1
Aj+1:= Aj

Aj:= c

+

-

program qq;
const N = 10;
var A: array[1..N] of integer;
i, j, c: integer;
begin
{ заполнить массив }
{ вывести исходный массив }
for i:=1 to N-1 do begin
for j:=1 to N-i do
if A[j] > A[j+1] then begin
с := A[j+1];
A[j+1] := A[j];
A[j] := с;
end;
end;
{ вывести полученный массив }
end;

Слайд 15

Сортировка массивов Сортировка выбором

Сортировка массивов

Сортировка выбором

Слайд 16

Сортировка выбором. Идея При сортировке массива a[1], a[2], ..., a[n] методом

Сортировка выбором. Идея

При сортировке массива a[1], a[2], ..., a[n] методом простого

выбора среди всех элементов находится элемент с наименьшим значением a[i], и a[1] и a[i] обмениваются значениями. Затем этот процесс повторяется для получаемых подмассивов a[2], a[3], ..., a[n], ... a[j], a[j+1], ..., a[n] до тех пор, пока мы не дойдем до подмассива a[n], содержащего к этому моменту наибольшее значение.
Слайд 17

Сортировка выбором. Пример

Сортировка выбором. Пример

Слайд 18

Сортировка выбором. Алгоритм i=1, N-1 Min:= xi nom:= i j=i+1, N

Сортировка выбором. Алгоритм

i=1, N-1

Min:= xi
nom:= i

j=i+1, N

xj < Min

Min:= xj
nom:=

j

c:= xi
xi:= xnom
xnom:= c

Найдем в массиве самый маленький элемент (блоки 3–6) и поменяем его местами с первым элементом (блок 7). Повторим алгоритм поиска минимального элемента, начиная со второго, и поменяем его местами со вторым элементом (блоки 3–7). Описанную выше операцию поиска проводим до полного упорядочивания элементов в
массиве.

1

2

3

4

5

6

7

Слайд 19

… for i := 1 to N-1 do begin Min:= x[


for i := 1 to N-1 do begin
Min:= x[ i ];

nom := i ;
for j:= i+1 to N do
if x[j] < Min then
begin
Min:=x[j]; nom := j; end;
if nom <> i then begin
c:=x[i];
x[i]:=x[nom];
x[nom]:=c;
end;
end;

i=1, N-1

Min:= xi
nom:= i

j=i+1, N

xj < Min

Min:= xj
nom:= j

c:= xi
xi:= xnom
xnom:= c

1

2

3

4

5

6

7

Слайд 20

Сортировка выбором. Программа for i := 1 to N-1 do begin

Сортировка выбором. Программа

for i := 1 to N-1 do begin
Min:= x[

i ];
nom := i ;
for j:= i+1 to N do
if A[j] < A[nom] then
begin
Min:=A[j]; nom := j; end;
if nom <> i then begin
c:=A[i];
A[i]:=A[nom];
A[nom]:=c;
end;
end;

N-1

N

нужно N-1 проходов

поиск минимального от A[i+1] до A[N]

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

i+1

i

Слайд 21

Сортировка выбором. Программа for i := 1 to N-1 do begin

Сортировка выбором. Программа

for i := 1 to N-1 do begin
nMin

= i ;
for j:= i+1 to N do
if A[j] < A[nMin] then nMin:=j;
if nMin <> i then begin
c:=A[i];
A[i]:=A[nMin];
A[nMin]:=c;
end;
end;

N-1

N

нужно N-1 проходов

поиск минимального от A[i] до A[N]

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

i+1

i

Слайд 22

Слайд 23

Сортировка массивов Метод вставки

Сортировка массивов

Метод вставки

Слайд 24

Метод вставки. Идея На каждом шаге алгоритма мы выбираем один из

Метод вставки. Идея

На каждом шаге алгоритма мы выбираем один из элементов

входных данных и вставляем его на нужную позицию в уже отсортированной части массива, до тех пор пока набор входных данных не будет исчерпан.
Метод выбора очередного элемента из исходного массива произволен; может использоваться практически любой алгоритм выбора. Обычно (и с целью получения устойчивого алгоритма сортировки), элементы вставляются по порядку их появления во входном массиве.
Слайд 25

i=2, N A[j + 1] := c j >0 and A[j]

i=2, N

A[j + 1] := c

j >0 and A[j] >

c

A[j + 1] := A[j];
j := j – 1;

c:= A[i]
j:= i-1

+

-

Метод вставки. Алгоритм

Слайд 26

Метод вставки. Программа for i = 2 to N do begin

Метод вставки. Программа

for i = 2 to N do
begin
c

:= A[i];
j := i – 1;
while (j > 0) and (A[j] > c) do
begin
A[j + 1] := A[j];
j := j – 1;
end;
A[j + 1] := c;
end;
Слайд 27

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

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

Слайд 28

Двумерный массив можно представить себе в виде таблицы (матрицы), в которой

Двумерный массив можно представить себе в виде таблицы (матрицы), в которой

все строки и столбцы пронумерованы.
Каждый элемент такого массива имеет два индекса:
Первый индекс – это номер строки;
Второй индекс – номер столбца.
Слайд 29

Const n=4; m=5; Var A :array [1..n, 1..m] of integer; A

Const n=4;
m=5;
Var A :array [1..n, 1..m] of integer;

A [2,4]

A [4,2]

Описание

двумерных массивов:
Слайд 30

const N = 3; M = 4; var A: array[1..N,1..M] of

const N = 3;
M = 4;
var A: array[1..N,1..M] of integer;

B: array[-3..0,-8..M] of integer;
Q: array['a'..'d',False..True] of real;

Описание двумерных массивов. Примеры

Пример 1.

Слайд 31

Пример 2. Массив можно описать как одномерный, элементами которого в свою

Пример 2. Массив можно описать как одномерный, элементами которого в свою

очередь являются одномерные массивы.
Const   n=20; m=30; Type   MyArray1 = array [1..m] of integer;   MyArray2 = array [1..n] of MyArray1; Var   V : MyArray1;   A : MyArray2;

Описание двумерных массивов. Примеры

Слайд 32

Пример 3. Const n=20; m=30; Type MyArray2 = array [1..n] of

Пример 3.
Const   n=20; m=30; Type   MyArray2 = array [1..n] of array

[1..m] of integer; Var   A : MyArray2;

Описание двумерных массивов. Примеры

Слайд 33

Пример 4. Const n=20; m=30; Type MyArray2 = array [1..n, 1..m]

Пример 4.
Const   n=20; m=30; Type   MyArray2 = array [1..n, 1..m] of

integer; Var   A : MyArray2;

Описание двумерных массивов. Примеры

Слайд 34

Создание двумерных массивов Ввод с клавиатуры: for i:=1 to N do

Создание двумерных массивов

Ввод с клавиатуры:

for i:=1 to N do
for j:=1

to M do begin
write('A[',i,',',j,']=');
read ( A[i,j] );
end;

A[1,1]=

25

A[1,2]=

14

A[1,3]=

14

...

A[3,4]=

54

i

j

for j:=1 to M do
for i:=1 to N do begin

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

for i:=1 to N do
for j:=1 to M do
A[i,j] := random(25) - 10;

цикл по строкам

цикл по столбцам

Слайд 35

Создание двумерных массивов Заполнение по некоторому правилу For i:=1 to n

Создание двумерных массивов

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

For i:=1 to n do
for

j:=1 to m do
a[i,j]:=i*j;

A[1,1]=

1

A[1,2]=

2

A[1,3]=

3

...

A[3,4]=

12

Program Vvod2;
Var I, J : Integer;
A : Array [1..20, 1..20] Of Integer;
Begin
FOR I := 1 TO 3 DO
FOR J := 1 TO 2 DO A[I, J] := 456 + I
End.

Слайд 36

Задание: Ниже приведен фрагмент решения некоторой задачи. Внимательно рассмотрев решение, сформулируйте

Задание: Ниже приведен фрагмент решения некоторой задачи. Внимательно рассмотрев решение, сформулируйте

решаемую задачу

for i := 1 to n do
begin       for j := 1 to m do write(X[i, j]:5);
        writeln;    
end;

Begin   Randomize;     for i := 1 to n do
      for j := 1 to m do
        X[i, j]:= Random(50);
End;

Слайд 37

Обработка всех элементов массива Задача: заполнить матрицу из 3 строк и

Обработка всех элементов массива

Задача: заполнить матрицу из 3 строк и 4

столбцов случайными числами и вывести ее на экран. Найти сумму элементов матрицы.

program qq;
const N = 3; M = 4;
var A: array[1..N,1..M] of integer;
i, j, S: integer;
begin
S := 0;
Randomize;
for i:=1 to N do
for j:=1 to M do
begin
A[i,j] := random(25) - 10;
S := S + A[i,j];
end;
writeln('Сумма элементов матрицы ', S);
end;

Слайд 38

Обработка двумерных массивов Для обработки двумерных массивов могут применяться те же

Обработка двумерных массивов

Для обработки двумерных массивов могут применяться те же

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

Стандартные задачи обработки массивов Нахождение элементов и количества элементов с данным

Стандартные задачи обработки массивов

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

отвечает ли заданный массив некоторым требованиям
Изменение значений некоторых элементов, удовлетворяющих заданному свойству
Заполнение массива по правилу
Слайд 40

НАХОЖДЕНИЕ ЭЛЕМЕНТОВ И КОЛИЧЕСТВА ЭЛЕМЕНТОВ С ДАННЫМ СВОЙСТВОМ

НАХОЖДЕНИЕ ЭЛЕМЕНТОВ И КОЛИЧЕСТВА ЭЛЕМЕНТОВ С ДАННЫМ СВОЙСТВОМ

Слайд 41

Задача 1. Найти максимальный элемент массива и его индексы. Идея: Предположим,

Задача 1. Найти максимальный элемент массива и его индексы.

Идея:
Предположим, что максимумом

является первый элемент → запомним первую строку и первый столбец
Пробегаем последовательно строки и столбцы массива
Проверяем: если среди элементов массива нашелся больший элемент, то внесем новое найденное значение в переменную Мах и запомним новую строку и новый столбец
Слайд 42

Задача 1. Найти максимальный элемент массива и его индексы. Алгоритм: i=1,

Задача 1. Найти максимальный элемент массива и его индексы.

Алгоритм:

i=1, N

A[i, j]

> Max

Max := A[i, j]
Maxi := i
Maxj := j

+

Max:= A[1,1]
Maxi := 1
Maxj := 1

j=1, M

Слайд 43

Max := X[1, 1]; Maxi := 1; Maxj := 1; for

Max := X[1, 1];
  Maxi := 1;
  Maxj :=

1; for i := 1 to n do       for j := 1 to m do         if X[i, j] > Max           then             begin               Max := X[i, j]; Maxi := i; Maxj := j;
            end;

{Предположим, что максимумом является первый элемент}

Задача 1. Найти максимальный элемент массива и его индексы.

Программа:

{запомним первую строку и первый столбец}

{если среди элементов массива нашелся больший элемент, то}

{внесем новое найденное значение в переменную Мах}

{запомним индексы строки и столбца }

Слайд 44

Задача 2. Найти количество отрицательных элементов в массиве.

Задача 2. Найти количество отрицательных элементов в массиве.

Слайд 45

Способ 1 - использовать счетчик, находить количество элементов строки и выводить

Способ 1 - использовать счетчик, находить количество элементов строки и выводить

значение на экран.
for i := 1 to n do     begin       k := 0;         for j := 1 to m do        if X[i, j] < 0     then           k:=k+1;         writeln(i,' - ', k);     end;

Задача 3. Найти количество отрицательных элементов в каждой строке.

Слайд 46

Способ 2 - количество элементов каждой строки хранить в одномерном массиве

Способ 2 - количество элементов каждой строки хранить в одномерном массиве

(Y) соответствующей размерности.
for i := 1 to n do     begin       Y[i] := 0; {записываем начальное значение количества элементов в соответствующую столбцу ячейку}         for j := 1 to m do           if X[i, j] < 0 {если отрицательный элемент найден}             then              Y[i] := Y[i]+1; {то увеличиваем текущее значение на единицу}     end;

Задача 3. Найти количество отрицательных элементов в каждой строке.

Слайд 47

Задание: Ниже приведен фрагмент решения некоторой задачи. Внимательно рассмотрев решение, сформулируйте

Задание: Ниже приведен фрагмент решения некоторой задачи. Внимательно рассмотрев решение, сформулируйте

решаемую задачу

for i:=1 to N do
write(A[i,i]:5);

S := 0;
for i:= 1 to N do
for j:= 1 to i do
S := S + A[i,j];

A[2,2]

A[3,3]

A[N,N]

A[1,1]

Слайд 48

Задание: Ниже приведен фрагмент решения некоторой задачи. Внимательно рассмотрев решение, сформулируйте

Задание: Ниже приведен фрагмент решения некоторой задачи. Внимательно рассмотрев решение, сформулируйте

решаемую задачу

for j:=1 to M do begin
c := A[2,j];
A[2,j] := A[4,j];
A[4,j] := c;
end;

for i:=1 to N do A[i,3]:=A[i,3]+A[i,6];

2

4

j

A[2,j]

A[4,j]

+

Слайд 49

ОПРЕДЕЛИТЬ, ОТВЕЧАЕТ ЛИ ЗАДАННЫЙ МАССИВ НЕКОТОРЫМ ТРЕБОВАНИЯМ

ОПРЕДЕЛИТЬ, ОТВЕЧАЕТ ЛИ ЗАДАННЫЙ МАССИВ НЕКОТОРЫМ ТРЕБОВАНИЯМ

Слайд 50

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

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

диагонали.

Массив является симметричным, если для него выполняется равенство A[i, j]=A[j, i] для всех i=1, ..., n и j=1, ..., n.

Var   i, j : integer; Flag : Boolean; Begin
….   Flag := True; {Предполагаем, что матрица симметрична}   i := 2;   while Flag and (i….  End.

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

Слайд 51

Задача. Определить, есть ли в заданном массиве элемент, равный 0.

Задача. Определить, есть ли в заданном массиве элемент, равный 0.

Слайд 52

ТЕСТ

ТЕСТ

Слайд 53

Задан одномерный массив х[1..N]. Фрагмент алгоритма s:=0; нц для k от

Задан одномерный массив х[1..N]. Фрагмент алгоритма
s:=0; нц для k от 1

до N | если (0<х[k]) | | то s:=s+х[k] | все кц
определяет: 1) максимальный элемент массива;
2) сумму положительных элементов; 3) количество положительных элементов;
4) индекс последнего положительного элемента; 5) индекс первого положительного элемента.
Слайд 54

Для массива X[1..n] алгоритм P:=0; for k:=n downto 1 do if

Для массива X[1..n] алгоритм
P:=0;
for k:=n downto 1 do
if X[k]<>T

then P:=k;
определяет: 1) Номер последнего элемента массива, не равного T; 2) Количество элементов массива, не равных T; 3) Номер первого элемента массива, не равного T;
4) Номер последнего элемента, равного T; 5) Количество элементов, равных T;
6) Ни один из ответов 1-5 не верен.
Слайд 55

Задан фрагмент алгоритма и три массива по шесть элементов в каждом.

Задан фрагмент алгоритма и три массива по шесть элементов в каждом.

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

нц для k от 1 до 3 | если (x[k] > x[3+k]) | | то S:=x[k]; x[k]:= x[3+k]; x[3+k]:=S; | все кц

26, 17, 35, 62, 53, 44
17, 35, 44, 53, 26, 62
62, 17, 44, 53, 26, 35

Слайд 56

Задан двумерный массив A[1..n,1..n]. Фрагмент алгоритма s:=0 нц для i от

Задан двумерный массив A[1..n,1..n]. Фрагмент алгоритма
s:=0 нц для i от 1 до n нц

для j от 1 до n если A[i,j]>0 то s:=s+A[i,j]* A[i,j] кц кц
 вычисляет: 1) сумму положительных элементов массива 2) количество положительных элементов массива 3) сумму квадратов элементов массива 4) количество квадратов положительных элементов массива 5) сумму квадратов положительных элементов массива
Слайд 57

Дан массив A[1,6], состоящий из чисел 1, -2, -3, 2, -4,

Дан массив A[1,6], состоящий из чисел 
1, -2, -3, 2, -4, 0. 

Укажите, какой из предложенных массивов получен в результате выполнения алгоритма:
ib:=1; ifin:=6 нц для i от 1 до 6 если a[i]>0 то c[ib]:= a[i]; ib:=ib+1 иначе c[ifin]:=a[i]; ifin:=ifin-1 кц
1, 2, 0, -2, -3, -4; 
1, 2, 0, -4, -3, -2;     
0, 1, 2, -4, -3, -2;    
0, 1, 2, -2, -3, -4;    
2, 1, 0, -4, -3, -2.
Слайд 58

Критерии оценивания теста

Критерии оценивания теста

Слайд 59

Ответы

Ответы

Слайд 60

САМОСТОЯТЕЛЬНАЯ РАБОТА

САМОСТОЯТЕЛЬНАЯ РАБОТА

Слайд 61

1 Вариант Измените знак всех нечетных (четных) элементов массива, состоящего из

1 Вариант
Измените знак всех нечетных (четных) элементов массива, состоящего из L

чисел
Найти и вывести на экран индексы четных элементов каждой строки массива (если их нет выдать соответствующее сообщение)
2 Вариант
Дан одномерный целочисленный массив A(1..N). Вывести на экран индексы равных элементов.
Найти сумму и количество отрицательных элементов каждого столбца, меньших заданного числа а;