Презентация, доклад к уроку информатики Одномерные массивы в Pascal

Содержание

Массив – пронумерованная совокупность ячеек памяти, названная одним именем1 2 3 4 5 6 7 АA [ 4

Слайд 1Презентация по программированию
2015 год
Одномерные массивы

Презентация по программированию2015 годОдномерные массивы

Слайд 2Массив – пронумерованная совокупность ячеек памяти, названная одним именем
1

2 3 4 5 6 7



А

A [ 4 ] := 11;

Имя массива

Индекс (порядковый номер) элемента массива

Значение элемента массива

Определение 1




Массив – пронумерованная совокупность ячеек памяти, названная одним именем1    2    3

Слайд 3Описание массива

2

Var имя:ARRAY[1..N] OF тип;

Объявление массива в разделе описания переменных:

Например:

Var A:Array[1..10] of Integer;

Var Tem:Array[1..100] of Real;

Имя массива

Количество элементов

Тип элементов

Описание массива

Слайд 4Type t=array[1..10] of integer;
Var a : t;
Const   m=10;

Var a : array [1.. m] of integer;

Количество элементов можно описать в разделе констант

Иногда массив объявляют как пользовательский тип данных

Описание массива 3

Type t=array[1..10] of integer; Var  a : t; Const   m=10;  Var a : array

Слайд 5Сonst a:array[1..5] of  integer =


(3,-2,1,4,3);

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

Описание массива 4

Var N:Array ['A'..'Z'] of Integer;

Var R:Array [-20..20] of Real;

В зависимости от задачи индексы элементов могут начинаться не только с единицы или быть символьного типа

Сonst a:array[1..5] of  integer =

Слайд 61. Заполнение массива с клавиатуры
For i:=1 to N do begin

Write(' a [ ' , i , ' ] = ' );
ReadLn ( a [ i ] );
End;

Заполнение массива 5

1. Заполнение массива с клавиатурыFor i:=1 to N do begin

Слайд 72. Заполнение массива случайными числами.
m[i]:=RANDOM (А)
случайное число из интервала [0;

А)
m[i] :=RANDOM(B-A)+A;
случайное число из интервала [A ; B)
m[i] :=RANDOM(B-A+1)+A;
случайное число из интервала [A ; B]

Заполнение массива 6

Например:
Случайное число из интервала [-5 ; 8).
А = - 5, В = 8,
подставим в формулу
m[i] :=RANDOM(B-A)+A;
m[i] :=RANDOM(8-(-5))+(-5);
такую запись нужно упростить
m[i] :=RANDOM(13)-5;

For i:=1 to N do begin
a[i]:=Random(B-A)+A;
WriteLn(a[i]:10:5);
End;

2. Заполнение массива случайными числами.m[i]:=RANDOM (А) случайное число из интервала [0; А)m[i] :=RANDOM(B-A)+A; случайное число из интервала

Слайд 83. Заполнение массива при помощи прогрессии.
Заполнить массив числами 3,5,7,9,11 и т.д.
На

первом месте стоит 3
На втором 3+2 = 5
На третьем 5+2 = 7 и т.д.
То есть ai = ai - 1 + 2
Это арифметическая прогрессия.

Заполнение массива 7

a[1]:=3;
Writeln(a[1]);
For i:=2 to N do begin
a[i]:=a[i-1] + 2;
Writeln(a[i]:5);
End;

3. Заполнение массива при помощи прогрессии.Заполнить массив числами 3,5,7,9,11 и т.д.На первом месте стоит 3На втором 3+2

Слайд 9
а) в столбик:
For i:=1 to N do Writeln(a[i]:4:2);
б) в

строку
For i:=1 to N do Write(a[i]:4:2);

2.23
3.19
1.44
4.93
5.58

2.23 3.19 1.44 4.93 5.58

Вывод массива 8

а) в столбик: For i:=1 to N do Writeln(a[i]:4:2); б) в строкуFor i:=1 to N do Write(a[i]:4:2);2.233.191.444.935.582.23

Слайд 10Вывод массива в две строки

9

Задача 1. Заполнить массив из 10 элементов случайными числами из интервала от -10 до 10, вывести на экран, а затем увеличить каждый элемент массива на 1 и повторно вывес­ти на экран.

var A:array [1..10] of integer;
i:integer;
Begin
Clrscr;
for i:=1 to 10 do begin
a[i]:= random(21)-10;
write(a[i]:5);
end;
writeln;
for i:=1 to 10 do begin
a[i]:=a[i]+1;
write(a[i]:5);
end;
end.


Оператор вывода без LN, вывод осуществляется в строку


Пустой оператор вывода с LN, когда первая строка закончена, переход на вторую


Оператор вывода без LN, вывод осуществляется в строку

Вывод массива в две строки

Слайд 11Вывод массива в две строки

10

1

Пустой Writeln между циклами обычно в блок-схеме не изображают.

Разрыв блок-схемы, если она целиком на лист не убирается

Вывод массива в две строки

Слайд 12Заполнение массива

11

Задача 2. Составить программу заполняющую массив из 10 элементов, числовой последовательностью: 1,4,9,16…
(где A i = i 2 )

Program n2;
Uses Crt;
var a:array[1..10] of integer;
i:integer;
begin
clrscr;
for i:=1 to 10 do begin
a[i]:=i*i;
write(a[i]:5);
end;
end.

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


Заполнение массива

Слайд 13Заполнение массива

12

Задача 3. Составить программу заполняющую массив из 10 элементов, числовой последовательностью: 2, 3, 5, 9, 17 и т.д.

Uses Crt;
var a:array[1..10] of integer;
i:integer;
begin
clrscr;
a[1]:=2;
write(a[1]:5);
for i:=2 to 10 do begin
a[i]:=2*a[i-1]-1;
write(a[i]:5);
end;
end.

Значение элемента массива зависит от предшествующего элемента


Заполнение массива

Слайд 14Изменение элементов массива удовлетворяющих условию
For i:=1 to N do If

(условие) then a[i]:=значение:

Условия:
a [ i ] > 0 – положительный элемент массива
a [ i ] Mod 2 = 0 – четный элемент массива
a [ i ] = int(a [ i ]) – целый элемент массива
a [ i ] = i – элемент массива равен своему порядковому номеру
i Mod 2 = 0 – четные порядковые номера
a [ i ] = К – элемент массива равный числу К

Изменения:
a [ i ] :=5 – заменить i-ый элемент на число 5
a [ i ] := - a [ i ] – заменить i-ый элемент на противоположный по знаку
a [ i ] := a [ i ] * 2 – удвоить каждый элемент массива
a [ i ] := a [ i - 1]+3 –заменить i-ый элемент предшествующим плюс 3

Обработка массива 13

Изменение элементов массива удовлетворяющих условию For i:=1 to N do If (условие) then a[i]:=значение: Условия:a [ i

Слайд 15Блок-схема обработки массива
Блок-схема обработки и вывода
в одном цикле
Обработка массива

14

Цикл обработки и вывода элементов массива на экран

For i:=1 to N do begin
If (условие) then a[i]:=значение:
Writeln(a[i]:5);
end;

Блок-схема обработки массиваБлок-схема обработки и вывода в одном циклеОбработка массива

Слайд 16Нахождение суммы элементов массива удовлетворяющих условию:
s:=0;
For i:=1 to N do

If (условие) then s:=s+ a[i];
WriteLn ('Сумма = ', s:10:5);

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



Предполагаем, что сумма равна нулю

Если элемент подходит по условию, добавляем его к сумме

Нахождение произведения элементов массива удовлетворяющих условию:

p:=1;
For i:=1 to N do If (условие) then p:=p* a[i];
WriteLn('Произведение = ', p:10:5);


Если элемент подходит по условию, добавляем его к произведению


Предполагаем, что произведение равно единице

Нахождение суммы элементов массива удовлетворяющих условию: s:=0;For i:=1 to N do If (условие) then s:=s+ a[i];WriteLn ('Сумма

Слайд 17Подсчет количества элементов удовлетворяющих условию:
k:=0;
For i:=1 to N do If

(условие) then k:=k+1;
WriteLn('Кол-во=',k:10);

Предполагаем, что таких элементов нет

Если такой элемент есть, то К увеличиваем на 1.

Подсчет количества элементов удовлетворяющих условию 16



Подсчет количества элементов удовлетворяющих условию: k:=0;For i:=1 to N do If (условие) then k:=k+1;WriteLn('Кол-во=',k:10); Предполагаем, что таких

Слайд 18Задача 4. Дан массив из 15 целых чисел заполненный случайными числами

из интервала [0; 20]. Выведите этот массив в строку и найдите количество четных элементов массива, которые меньше среднего арифметического его элементов.

ClrScr;
s:=0;
For i:=1 to 15 do begin
a[i]:=Random(21);
write (a[i]:10);
S:=S+a[i];
end;






Предполагаем, что сумма равна нулю

Организуем цикл из 15 повторений

Нахождение суммы элементов массива 17

Определяем число случайным образом

Выводим его на экран

Добавляем к сумме

Задача 4. Дан массив из 15 целых чисел заполненный случайными числами из интервала [0; 20]. Выведите этот

Слайд 19Writeln;
s:=s/15;
Writeln('Среднее арифметическое = ',s:10:5);
k:=0;
For i:=1 to 15

do
if (a[i] Mod 2 = 0) and (a[i] Writeln('Четных чисел меньших среднего арифметического ', k:8);







Находим среднее арифметическое

Выводим его на экран

Предполагаем, что таких элементов нет

Организуем цикл из 15 повторений

Если элемент четный и меньше среднего арифметического, увеличиваем К на единицу

Выводим К на экран

Нахождение суммы элементов массива 18

Writeln; s:=s/15; Writeln('Среднее арифметическое = ',s:10:5); k:=0; For i:=1 to 15 do

Слайд 20Нахождение максимального элемента в массиве и его номера:
max:=a[1];
k:=1;
for i:=2 to

N do if (a[i]>max) then begin
max:=a[i];
k:=i;
end;
WriteLn(‘Max=’,max:10:5);
WriteLn(‘Номер=’,k:5);

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

Если находится больший элемент

Он становится максимальным

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

Максимальный и минимальный элемент массива 19





Нахождение максимального элемента в массиве и его номера:max:=a[1]; k:=1;for i:=2 to N do if (a[i]>max) then begin

Слайд 21 max:= 1;
for i:=2 to N do if a[i] >

a[max] then max:=i;
writeln('Максимальный элемент ',а[max]);
writeln('Его номер ', Max);

Иногда в задаче достаточно определить индекс наибольшего элемента

Максимальный и минимальный элемент массива 20


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


Если i-ый элемент больше стоящего на месте max

то, запоминаем его индекс в переменной max


max:= 1; for i:=2 to N do if a[i] > a[max] then max:=i; writeln('Максимальный элемент ',а[max]);

Слайд 22Сортировка элементов массива по возрастанию
For i:=1 to N-1 do

For j:=i to N do
if (a[i]>a[j]) then begin
p:=a[i];
a[i]:=a[j];
a[j]:=p;
end;

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





Перебираем элементы от первого до предпоследнего

Перебираем от i-ого элемента до конца

Если в оставшейся строке находится элемент меньше чем i-ый …

То меняем их местами

Сортировка массива:
4; -2; 6; -5
по возрастанию с изменениями происходящими в массиве

Сортировка элементов массива по возрастаниюFor i:=1 to N-1 do      For j:=i to

Слайд 23Сортировка массива

22

i, 1, N-1

j, i, N

ai>aj

p=ai
ai=aj
aj=p

Да

Нет

Общая идея алгоритма:
Берем i-ый элемент
Последовательно сравниваем его со всеми элементами с права
Если находится элемент меньший чем i-ый, то они меняются местами
Так на i-ом месте окажется самый маленький элемент
i увеличиваем на единицу и повторяем процесс…

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

Слайд 24Сортировка массива

23









Упорядочить по возрастанию: 4 -2 6 -5










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

Слайд 25Вставка элемента с номером p в последовательность
For i:=N downto p

do a[i+1]:=a[i];
a[p]:=значение;
N:=N+1;

За каждый оборот цикла смещаем элементы на один номер в право.

Вставка и удаление элементов массива 24

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




На место с индексом Р ставим нужное значение и увеличиваем на 1 количество элементов

9

14

11

12

7

100

N

p

9

Вставка элемента с номером p в последовательность For i:=N downto p do a[i+1]:=a[i];a[p]:=значение;N:=N+1;За каждый оборот цикла смещаем

Слайд 26Удаление элемента с номером p из массива:
for i:=p to (N-1) do

a[i]:=a[i+1];
N:=N-1;

Вставка и удаление элементов массива 25

Перебираем элементы от места которое удаляем до предпоследнего элемента




Уменьшаем на 1 количество элементов

За каждый оборот цикла смещаем элементы на один номер в лево.

14

11

12

7

p

9

N

100

Удаление элемента с номером p из массива:for i:=p to (N-1) do a[i]:=a[i+1];N:=N-1; Вставка и удаление элементов массива

Слайд 27Вставка элементов удовлетворяющих условию в другой массив. Пусть нам дан массив

с именем А, а переместить элементы нужно в массив В

j:=0;
For i:=1 to N do
if (а[i]…) then begin
j:=j+1;
b[j]:=a[i];
end;
K:=j;

Порядковый номер элемента в массиве В

Если элемент из А удовлетворяет условию

То, увеличиваем количество элементов в В, и под этим индексом помещаем элемент из А

Количество элементов в массиве В будет равно последнему порядковому номеру перенесенного элемента

Выбор элементов массива в другой массив 26





Вставка элементов удовлетворяющих условию в другой массив. Пусть нам дан массив с именем А, а переместить элементы

Слайд 28Задача 5. Дан массив из 10 целых, положительных не повторяющихся чисел.

Проверить образуют ли его элементы арифметическую прогрессию. Если образуют, то вывести разность прогрессии.

// заполнить массив
r:= a[2]-a[1];
flag:=true;
For i:=2 to 9 do if (a[i+1]-a[i]<>r) then flag:=false;
If flag then Begin
Writeln('Арифметическая прогрессия');
Writeln('Разность = ',r:8);
End
else
Writeln('Не арифметическая прогрессия');

Проверка массива 27








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

Предполагаем, что массив – арифметическая прогрессия

Организуем цикл от второго до предпоследнего элемента

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

Если значение истинно

То выводим разность и соответствующее сообщение

Иначе – выводим соответствующее сообщение

Задача 5. Дан массив из 10 целых, положительных не повторяющихся чисел. Проверить образуют ли его элементы арифметическую

Слайд 29Начало
Проверка массива

28

r:= a2-a1;

flag:=true

i, 2, 9

ai+1-ai ≠ r

flag:=false

flag=true

1

Вывод:
Прогрессия

Вывод:
Не прогрессия

Конец

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

1

Нет

Нет

Да

Да

Цикл в котором проверяется разность между соседними элементами

Условие проверяющее изменилась ли переменная Flag

НачалоПроверка массива

Слайд 30Задача 6. Дан массив из 10 случайных чисел из интервала от

-10 до 10. Найти номер первого отрицательного элемента (Он обязательно существует)

Поиск элемента 29

// заполнить массив
i:=1;
while (a[i]>=0) do i:=i+1;
write('Первое отрицательное ',a[i]:4);


Пока элемент массива положителен или ноль берем следующий элемент

Задача 6. Дан массив из 10 случайных чисел из интервала от -10 до 10. Найти номер первого

Слайд 31Заполнение массива

30

Задача 7. Заполнить массив из 10 элементов случайными числами из интервала [0; 10), так, чтобы числа не повторялись.

For i:=1 to 10 do
begin
repeat
flag:=false;
a[i]:=random(10);
for j:=1 to i-1 do if a[i]=a[j] then flag:=true;
until flag=false;
write(a[i]:5);
end;






Цикл отвечающий за количество чисел в массиве

Цикл возвращающий процесс назад если такое число уже было

Цикл в котором проверяется не встречалось ли такое число

Заполнение массива

Слайд 32Заполнение массива

31

i,1,10

flag=false

a i = случайное[0;10)

j, 1, i-1

ai=a j

flag=true

flag=false

Вывод
a i

Да

Нет

Да

Нет

Цикл возвращающий процесс назад если такое число уже было

Цикл отвечающий за количество чисел в массиве

Цикл в котором проверяется не встречалось ли такое число

Заполнение массива

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

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


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

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

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

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