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


Статические массивы

Содержание

Статические массивы1. ПонятиеМассивы – формальное объединение нескольких однотипных объектов (чисел, символов, строк и т.п.), рассматриваемое как единое целое.var a: array [1..10] of real; b: array[0..50] of integer; c: array[-3..4] of boolean;Объявление массива b[17] :=

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

Слайд 1Статические массивы
Понятие
Заполнение значениями;
Вычисления;
Поиск;
Вычислительная сложность алгоритмов;
Сортировка.

Статические массивыПонятиеЗаполнение значениями; Вычисления; Поиск;Вычислительная сложность алгоритмов; Сортировка.

Слайд 2Статические массивы
1. Понятие
Массивы – формальное объединение нескольких однотипных объектов (чисел,

символов, строк и т.п.), рассматриваемое как единое целое.
var
a: array

[1..10] of real;
b: array[0..50] of integer;
c: array[-3..4] of boolean;

Объявление массива

b[17] := 123;
c[-2] := a[1]>a[2];
for k := 1 to 10 do a[k] := 0;

Обращение к элементу массива

Статические массивы1. ПонятиеМассивы – формальное объединение нескольких однотипных объектов (чисел, символов, строк и т.п.), рассматриваемое как единое

Слайд 3Статические массивы
Статические массивы
var
a: array[1..3] of array[–2..2] of array[1..5] of

real;
var
a: array[1..3, –2..2, 1..5] of real;
или более компактная запись
Многомерные

массивы
Статические массивыСтатические массивыvar a: array[1..3] of array[–2..2] of array[1..5] of real;var a: array[1..3, –2..2, 1..5] of real;или

Слайд 4Статические массивы
Статические массивы
var
a, b: Vector;
или
a, b: array[1..5]

of real;
...
a := b;
Можно передать все элементы одного массива другому

массиву

var
a: array[1..5] of real;
b: array[1..5] of real;
...
a := b; {Здесь возникнет ошибка несоответствия типов}

Статические массивыСтатические массивыvar a, b: Vector;или  a, b: array[1..5] of real;...a := b;Можно передать все элементы

Слайд 5Статические массивы
Статические массивы
var
a, b: array[1..5] of real;
eq: boolean;

i: integer;
...
eq := true;
for i := 1 to 5 do

if a[i]<>b[i] then eq := false;
if eq then ...

Над массивами не определены операторы отношения

Статические массивыСтатические массивыvar a, b: array[1..5] of real; eq: boolean; i: integer;...eq := true;for i := 1

Слайд 6Статические массивы
Понятие
Заполнение значениями;
Вычисления;
Поиск;
Вычислительная сложность алгоритмов;
Сортировка.

Статические массивыПонятиеЗаполнение значениями; Вычисления; Поиск;Вычислительная сложность алгоритмов; Сортировка.

Слайд 7Генератор случайного числа:
Random(maxValue: integer): integer;
        Возвращает случайное целое в

диапазоне от 0 до maxValue-1
Random(a,b: integer): integer;         Возвращает случайное

целое в диапазоне от a до b
Random: real;         Возвращает случайное вещественное в диапазоне [0..1)

Пример: заполнить массив вещественными числами из отрезка [5;10]

2. Заполнение значениями

2. Заполнение значениями

Генератор случайного числа: Random(maxValue: integer): integer;         Возвращает случайное целое в диапазоне от 0 до maxValue-1 Random(a,b: integer):

Слайд 8const
N = 10;
var
m : array [1..N] of real;

// массив
i : integer;

// счетчик цикла
begin
// заполнение массива значениями
for i := 1 to N do
m[i] := random(50+1)/10 + 5;
// вывод значений на экран
for i := 1 to N do
writeln('m[',i:2,'] =',m[i]:4:1);
end.

Вариант 1 (используя Random(maxValue: integer): integer)

m[ 1] = 9.1
m[ 2] = 9.9
m[ 3] = 6.0
m[ 4] = 5.7
m[ 5] = 7.3
m[ 6] = 5.0
m[ 7] = 9.0
m[ 8] = 9.4
m[ 9] = 5.9
m[10] = 7.0

2. Заполнение значениями

Статические массивы

const N = 10;var m : array [1..N] of real;  // массив i : integer;

Слайд 9const
N = 10;
var
m : array [1..N] of real;

// массив
i : integer;

// счетчик цикла
begin
// заполнение массива значениями
for i := 1 to N do
m[i] := random(50,100)/10;
// вывод значений на экран
for i := 1 to N do
writeln('m[',i:2,'] =',m[i]:4:1);
end.

Вариант 2 (используя Random(a,b: integer): integer)

m[ 1] = 7.2
m[ 2] = 6.4
m[ 3] = 5.0
m[ 4] = 5.0
m[ 5] = 6.2
m[ 6] = 5.9
m[ 7] = 8.5
m[ 8] = 7.9
m[ 9] = 7.1
m[10] = 9.5

2. Заполнение значениями

Статические массивы

const N = 10;var m : array [1..N] of real;  // массив i : integer;

Слайд 10const
N = 10;
var
m : array [1..N] of real;

// массив
i : integer;

// счетчик цикла
begin
// заполнение массива значениями
for i := 1 to N do
m[i] := random*5 + 5;
// вывод значений на экран
for i := 1 to N do
writeln('m[',i:2,'] =',m[i]:4:1);
end.

Вариант 3 (используя Random: real)

m[ 1] = 6.0
m[ 2] = 5.9
m[ 3] = 5.5
m[ 4] = 6.1
m[ 5] = 7.7
m[ 6] = 9.3
m[ 7] = 9.6
m[ 8] = 9.0
m[ 9] = 7.4
m[10] = 5.2

2. Заполнение значениями

Статические массивы

const N = 10;var m : array [1..N] of real;  // массив i : integer;

Слайд 11Замечания по примеру:
в данном случае можно было использовать только

один цикл, в нем формировать и выводить на экран значения.

В общем случае на операции формирования, обработки и вывода требуется свой цикл;
в вариантах 1 и 2 результат вещественный с точностью до десятых, в 3 – 11-12 значимых.

2. Заполнение значениями

2. Заполнение значениями

Замечания по примеру: в данном случае можно было использовать только один цикл, в нем формировать и выводить

Слайд 12Пример: заполнение двумерного массива
2. Заполнение значениями
2. Заполнение значениями
const


Nr = 2; Nc = 4;
var
a, b

: array [1..Nr,1..Nc] of integer;
i,j : integer;
begin
writeln('После объявления массива a');
for i := 1 to Nr do
begin
for j := 1 to Nc do write (a[i,j]:3);
writeln;
end;
for i := 1 to Nr do
for j := 1 to Nc do a[i,j] := random(11);
Пример: заполнение двумерного массива 2. Заполнение значениями 2. Заполнение значениямиconst  Nr = 2;  Nc =

Слайд 13 2. Заполнение значениями
2. Заполнение значениями
writeln('После заполнения массива a');
for

i := 1 to Nr do
begin
for j

:= 1 to Nc do write (a[i,j]:3);
writeln;
end;
b := a;
writeln('Содержимое массива b');
for i := 1 to Nr do
begin
for j := 1 to Nc do write (b[i,j]:3);
writeln;
end;
end.

После объявления массива a
0 0 0 0
0 0 0 0
После заполнения массива a
0 9 1 4
2 7 5 5
Содержимое массива b
0 9 1 4
2 7 5 5

2. Заполнение значениями 2. Заполнение значениямиwriteln('После заполнения массива a');for i := 1 to Nr do begin

Слайд 14Статические массивы
Понятие
Заполнение значениями;
Вычисления;
Поиск;
Вычислительная сложность алгоритмов;
Сортировка.

Статические массивыПонятиеЗаполнение значениями; Вычисления; Поиск;Вычислительная сложность алгоритмов; Сортировка.

Слайд 15Задача вычисления:
среднее арифметическое;
среднее геометрическое;
аппроксимация;
интерполяция;
и другие

математические вычисления
3. Вычисления
3. Вычисления

Задача вычисления: среднее арифметическое; среднее геометрическое; аппроксимация; интерполяция; и другие математические вычисления3. Вычисления 3. Вычисления

Слайд 16Аппроксимация – приближенное описание сложной функции более простыми
3. Вычисления
3.

Вычисления

Аппроксимация – приближенное описание сложной функции более простыми3. Вычисления 3. Вычисления

Слайд 17Интерполяция - нахождения промежуточных значений величины по имеющемуся дискретному набору

известных значений
3. Вычисления
3. Вычисления

Интерполяция - нахождения промежуточных значений величины по имеющемуся дискретному набору известных значений3. Вычисления 3. Вычисления

Слайд 183. Вычисления
3. Вычисления
Алгоритм решения:
Задать значения функции в виде точек

(массив аргументов, массив значений)
Задать точку, для которой вычисляется значение функции.
Найти

в массиве аргументов ближайший к заданной точке.
Вычисление коэффициентов полинома первого порядка (y=kx+b)
Вычисление значения функции в заданной точке.

Пример: вычислить значение функции в точке заданной таблично

3. Вычисления 3. ВычисленияАлгоритм решения:Задать значения функции в виде точек (массив аргументов, массив значений)Задать точку, для которой

Слайд 193. Вычисления
2. Вычисления
const
N = 5;
var
mx : array

[1..N] of real; // массив аргументов
my : array

[1..N] of real; // массив значений
x,y : real; // точка, для которой вычисляется
k,b : real; // коэффициенты полинома
i : integer; // счетчик цикла
findPoint: boolean; // маркер поиска точки
3. Вычисления 2. Вычисленияconst N = 5;var mx : array [1..N] of real;  // массив аргументов

Слайд 203. Вычисления
2. Вычисления
begin
writeln('Задайте функцию в виде таблицы');
for

i := 1 to N do
begin

write('Точка ',i,' (x,y) ');
read(mx[i], my[i]);
end;
write('Введите значение аргумента, для которого необходимо вычислить значение функции, x=');
readln(x);
3. Вычисления 2. Вычисленияbegin writeln('Задайте функцию в виде таблицы'); for i := 1 to N do

Слайд 213. Вычисления
3. Вычисления
//поиск ближайшего аргумента
i := 1; findPoint

:= false;
while not findPoint do // поиск ближайшего

аргумента
begin
if (x >= mx[i]) and (x < mx[i+1]) then
begin // ближайший аргумент найден
findPoint := true;
k := (my[i+1] - my[i])/(mx[i+1] - mx[i]);
b := my[i] - k*mx[i];
y := k*x+b;
writeln('Значение функции в точке x=',x,' равно y=',y:0:2);
end;
if i = N-1 then // точки кончились
findPoint := true;
else
i := i + 1;
end;
end.
3. Вычисления 3. Вычисления//поиск ближайшего аргумента i := 1; findPoint := false;  while not findPoint do

Слайд 223. Вычисления
3. Вычисления
x= 4.5
Точное значение y=20.25
Интерполированное значение y=20.5
Ошибка –

1.23%

3. Вычисления 3. Вычисленияx= 4.5Точное значение y=20.25Интерполированное значение y=20.5Ошибка – 1.23%

Слайд 23Статические массивы
Понятие
Заполнение значениями;
Вычисления;
Поиск;
Вычислительная сложность алгоритмов;
Сортировка.

Статические массивыПонятиеЗаполнение значениями; Вычисления; Поиск;Вычислительная сложность алгоритмов; Сортировка.

Слайд 244. Поиск
4. Поиск
поиск min/max
поиск по заданному условию

поиск цепочек

4. Поиск 4. Поиск поиск min/max поиск по заданному условию поиск цепочек

Слайд 254. Поиск
4. Поиск
Алгоритм решения:
Заполнить массив случайными числами
Поиск подряд идущих

четных элементов
Определение самой длинной из них

Пример: Найти и вывести самую

длинную цепочку четных элементов массива
4. Поиск 4. ПоискАлгоритм решения:Заполнить массив случайными числамиПоиск подряд идущих четных элементовОпределение самой длинной из нихПример: Найти

Слайд 264. Поиск
4. Поиск
const
N = 20;
var
m : array

[1..N] of integer;
i : integer;
c, l :

integer; //позиции и длина текущей цепочки
cm, lm : integer; //позиции и длина самой длинной цепочки
flag1, flag2 : boolean; // флаги цепочки
begin
for i := 1 to N do
begin //заполним и распечатаем массив
m[i] := random(10 + 1);
write(m[i],' ');
end; П
Writeln;
4. Поиск 4. Поискconst N = 20;var m : array [1..N] of integer;  i : integer;

Слайд 274. Поиск
3. Поиск
// зададим начальные значения для текущий
//

позиций цепочки и их макс знач.
c := 0; l

:= 0;
cm := 0; lm := 0;
flag1 := false; flag2 := false;
for i := 2 to N do
begin
flag2 := (m[i-1] mod 2=0) and (m[i] mod 2=0); // два соседних элемента четные
if flag2 then
begin
if not flag1 then begin c := i-1; l := 2; end //два подряд четных, а пред - нет
else l := i - c + 1; //больше двух подряд четных
if l > lm // длина текущей цепочки больше предыдущей
then cm := c; lm := l;
end
else
begin
// сброс параметров текущей цепи в нуль
l := 0; c := 0;
end;
flag1 := flag2;
writeln(c,'-',l,'|',cm,'-',lm);
end;
4. Поиск 3. Поиск// зададим начальные значения для текущий // позиций цепочки и их макс знач. c

Слайд 28Статические массивы
3. Поиск
if cm 0 then

for i := cm to cm+lm-1 do write(m[i],' ')

else writeln('Цепочек нет')
end.
Статические массивы 3. Поискif cm 0 then   for i := cm to cm+lm-1 do write(m[i],'

Слайд 294. Поиск
3. Поиск
Алгоритм решения:
Заполнить массивы координатами точек
Задать координаты заданной

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

минимальное расстояние

Пример: Найти точку на плоскости, ближайшую заданной

4. Поиск 3. ПоискАлгоритм решения:Заполнить массивы координатами точекЗадать координаты заданной точкиОбойти все исходные точки, определить расстояние до

Слайд 304. Поиск
3. Поиск
const
N = 5; //кол-во точек

на плоскости
var
px,py : array [1..N] of real; // координаты

исходных точек
x,y : real;
i, imin : integer;
L, Lmin : real; //текущее и минимальное расстояние
begin
writeln('Исходные точки');
for i := 1 to N do // заполняем координаты точек
begin
px[i] := 5 - 10*random;
py[i] := 5 - 10*random;
writeln('(',px[i]:5:2,',',py[i]:5:2,')');
end;
writeln('Введите координаты точек');
write('x=');readln(x);
write('y=');readln(y);

4. Поиск 3. Поискconst  N = 5; //кол-во точек на плоскостиvar px,py : array [1..N] of

Слайд 314. Поиск
3. Поиск

Lmin := sqrt(sqr(x-px[1]) + sqr(y-py[1]));

imin := 1;
writeln('Точка #1 расстояние ',Lmin:5:2);
for i :=

2 to N do
begin
L := sqrt(sqr(x-px[i]) + sqr(y-py[i]));
if Lmin > L then begin Lmin := L; imin := i; end;
writeln('Точка #',i,' расстояние ',L:5:2);
end;
writeln('Ближайшая точка #',imin,' расстояние ',Lmin:5:2);
end.
4. Поиск 3. Поиск  Lmin := sqrt(sqr(x-px[1]) + sqr(y-py[1])); imin := 1; writeln('Точка #1 расстояние ',Lmin:5:2);

Слайд 324. Поиск
3. Поиск
(-4.07,-0.33)
( 1.92, 2.72)
(-3.72, 4.01)
(-4.19,-4.36)
(-1.67, 2.33)
Введите координаты точек
x=0
y=0
Точка

#1 расстояние 4.08
Точка #2 расстояние 3.33
Точка #3 расстояние 5.47
Точка #4

расстояние 6.05
Точка #5 расстояние 2.87
Наиближайшая точка #5 расстояние 2.87
4. Поиск 3. Поиск(-4.07,-0.33)( 1.92, 2.72)(-3.72, 4.01)(-4.19,-4.36)(-1.67, 2.33)Введите координаты точекx=0y=0Точка #1 расстояние 4.08Точка #2 расстояние 3.33Точка #3

Слайд 334. Поиск
Понятие
Заполнение значениями;
Вычисления;
Поиск;
Вычислительная сложность алгоритмов;
Сортировка.

4. ПоискПонятие Заполнение значениями; Вычисления; Поиск;Вычислительная сложность алгоритмов; Сортировка.

Слайд 345. Вычислительная сложность
5. Вычислительная сложность алгоритма
Вычислительная сложность алгоритма —

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

от количества обрабатываемых элементов.

O(…) – вычислительная сложность «О-большое», значит не хуже чем …

Примеры:
O(1) – операция взятия значения по индексу
O(n) – поиск в массиве конкретного значения методом последовательного перебора
O(logN) – бинарный поиск
O(N^2) – поиск пары самых близко расположенных точек на плоскости
O(2^N), O(N!) – unreal

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

Слайд 355. Вычислительная сложность
5. Вычислительная сложность алгоритма

5. Вычислительная сложность 5. Вычислительная сложность алгоритма

Слайд 365. Вычислительная сложность
5. Вычислительная сложность алгоритма
Время вычисления при млн.

операций в секунду

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

Слайд 375. Вычислительная сложность
5. Вычислительная сложность алгоритма
Какова верхняя оценка O

алгоритма поиска минимального числа?
начало; поиск минимального элемента массива array из

N элементов
min := array[1]
для i от 2 до N выполнять:
если array[i] < min
min := array[i]
конец; вернуть min

N – 1 операция присваивания счетчику цикла i нового значения;
N – 1 операция сравнения счетчика со значением N;
N – 1 операция сравнения элемента массива со значением min;
от 1 до N операций присваивания значения переменной min.

O(f(N)) = O(N-1+N-1+N-1+N +1) = O(4N-2) = O(N)

5. Вычислительная сложность 5. Вычислительная сложность алгоритмаКакова верхняя оценка O алгоритма поиска минимального числа?начало; поиск минимального элемента

Слайд 385. Вычислительная сложность
5. Вычислительная сложность алгоритма
Обработка массива размером N=108

5. Вычислительная сложность 5. Вычислительная сложность алгоритмаОбработка массива размером N=108

Слайд 39Статические массивы
Понятие
Заполнение значениями;
Вычисления;
Поиск;
Вычислительная сложность алгоритмов;
Сортировка.

Статические массивыПонятие Заполнение значениями; Вычисления; Поиск;Вычислительная сложность алгоритмов; Сортировка.

Слайд 40Задача сортировки:
для заданной последовательности
a1, a2, …, an
найти перестановку её элементов

в таком порядке
a'1,a'2, … ,a'n,
что при заданной функции f справедливо

отношение:
f(a'1)   f(a'2)  …  f(a'n)
f(x) – функция упорядочивания, её значение называется ключом

Типы сортировки:
внутренний (все элементы находятся в памяти машины);
внешний (часть в памяти, часть на внешних носителях);
устойчивая сортировка (не меняет относительный порядок сортируемых элементов, имеющих одинаковые ключи)

Основные характеристики:
время;
дополнительный объем памяти (без привлечения, с привлечением, необходимо копировать массив).

6. Сортировка

6. Сортировка

Задача сортировки:для заданной последовательностиa1, a2, …, anнайти перестановку её элементов в таком порядкеa'1,a'2, … ,a'n,что при заданной

Слайд 41Сортировка простыми обменами (пузырьком)
564 41 165 815 685 764 827


41 564 165 685 815 764 827
41 165 564

685 764 815 827
41 165 564 685 764 815 827
41 165 564 685 764 815 827
41 165 564 685 764 815 827
41 165 564 685 764 815 827

6. Сортировка

5. Сортировка

Сортировка простыми обменами (пузырьком)564 41 165 815 685 764 827 41 564 165 685 815 764 827

Слайд 426. Сортировка
5. Сортировка
const
N = 10;
var
arr:

array[1..N] of integer;
i, j, k: integer;
begin

write ('Исходный массив: ');
for i := 1 to N do begin
arr[i] := random(101);
write (arr[i]:4);
end;
writeln; writeln;
for i := 1 to N-1 do
for j := 1 to N-i do
if arr[j] > arr[j+1] then begin
k := arr[j];
arr[j] := arr[j+1];
arr[j+1] := k
end;
write ('Отсортированный массив: ');
for i := 1 to N do write (arr[i]:4);
writeln;
end.
6. Сортировка 5. Сортировкаconst  N = 10;var  arr: array[1..N] of integer;  i, j, k:

Слайд 43Сортировка выбором
1) поиск номера минимального значения в текущем списке;
2) обмен

этого значения со значением первой не отсортированной позиции 3) сортируется

хвост списка, исключив из рассмотрения уже отсортированные элементы

195 700 949 274 444 108 698
108 700 949 274 444 195 698
108 195 949 274 444 700 698
108 195 274 949 444 700 698
108 195 274 444 949 700 698
108 195 274 444 698 700 949
108 195 274 444 698 700 949

6. Сортировка

5. Сортировка

Сортировка выбором1) поиск номера минимального значения в текущем списке;2) обмен этого значения со значением первой не отсортированной

Слайд 44Сортировка вставками
10 3 335 33 355 217 536
3 10

335 33 355 217 536
3 10 335 33 355

217 536
3 10 33 335 355 217 536
3 10 33 335 355 217 536
3 10 33 217 335 355 536
3 10 33 217 335 355 536

6. Сортировка

6. Сортировка

Сортировка вставками	10 3 335 33 355 217 536 	3 10 335 33 355 217 536 	3 10

Слайд 45Другие методы:
шейкер-сортировка;
метод Шелла;
быстрая сортировка Хора;
быстрая сортировка

(quicksort);
и тд

6. Сортировка
5. Сортировка

Другие методы: шейкер-сортировка; метод Шелла; быстрая сортировка Хора; быстрая сортировка (quicksort); и тд6. Сортировка 5. Сортировка

Слайд 466. Сортировка
5. Сортировка

6. Сортировка 5. Сортировка

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

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

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

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

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


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

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