Выбранный для просмотра документ Массивы.ppt
Скачать материал
Рабочие листы
к вашим урокам
Скачать
1 слайд
Презентация по программированию
Автор: учитель информатики
МОУ Плесской СОШ
Юдин А.Б.
2012 год
Одномерные
массивы
2 слайд
Массив – пронумерованная совокупность ячеек памяти, названная одним именем
44
22
10
11
14
30
19
1 2 3 4 5 6 7
А
A [ 4 ] := 11;
Имя массива
Индекс (порядковый номер) элемента массива
Значение элемента массива
Определение 1
3 слайд
Описание массива 2
Var имя:ARRAY[1..N] OF тип;
Объявление массива в разделе описания переменных:
Например:
Var A:Array[1..10] of Integer;
Var Tem:Array[1..100] of Real;
Имя массива
Количество элементов
Тип элементов
4 слайд
Type t=array[1..10] of integer;
Var a : t;
Const
m=10;
Var a : array [1.. m] of integer;
Количество элементов можно описать в разделе констант
Иногда массив объявляют как пользовательский тип данных
Описание массива 3
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;
В зависимости от задачи индексы элементов могут начинаться не только с единицы или быть символьного типа
6 слайд
1. Заполнение массива с клавиатуры
For i:=1 to N do begin
Write(' a [ ' , i , ' ] = ' );
ReadLn ( a [ i ] );
End;
i , 1, N
Ввод a i
Заполнение массива 5
7 слайд
2. Заполнение массива случайными числами.
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;
i , 1, N
Вывод a i
a i = случайное [A ; B)
8 слайд
3. Заполнение массива при помощи прогрессии.
Заполнить массив числами 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;
i , 2, N
Вывод a i
ai = ai-1 + 2
Вывод a 1
a1 = 3
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
i , 1, N
Вывод a i
Вывод массива 8
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
i , 1, 10
Вывод a i
a i = a i + 1
Конец
i , 1, 10
Вывод a i
a i = случайное [-10 ; 10]
Начало
1
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
15 слайд
i , 1, N
ai = значение
условие
нет
да
Блок-схема обработки массива
Блок-схема обработки и вывода
в одном цикле
Обработка массива 14
i , 1, N
Вывод a i
ai = значение
условие
нет
да
Цикл обработки и вывода элементов массива на экран
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);
Если элемент подходит по условию, добавляем его к произведению
Предполагаем, что произведение равно единице
17 слайд
Подсчет количества элементов удовлетворяющих условию:
k:=0;
For i:=1 to N do If (условие) then k:=k+1;
WriteLn('Кол-во=',k:10);
Предполагаем, что таких элементов нет
Если такой элемент есть, то К увеличиваем на 1.
i , 1, N
Вывод k
k := k + 1
условие
нет
да
k := 0
Подсчет количества элементов удовлетворяющих условию 16
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
Определяем число случайным образом
Выводим его на экран
Добавляем к сумме
19 слайд
Writeln;
s:=s/15;
Writeln('Среднее арифметическое = ',s:10:5);
k:=0;
For i:=1 to 15 do
if (a[i] Mod 2 = 0) and (a[i]<s) then k:=k+1;
Writeln('Четных чисел меньших среднего арифметического ', k:8);
Находим среднее арифметическое
Выводим его на экран
Предполагаем, что таких элементов нет
Организуем цикл из 15 повторений
Если элемент четный и меньше среднего арифметического, увеличиваем К на единицу
Выводим К на экран
Нахождение суммы элементов массива 18
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
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
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
по возрастанию с изменениями происходящими в массиве
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;
За каждый оборот цикла смещаем элементы на один номер в право.
12
11
14
7
Вставка и удаление элементов массива 24
Перебираем элементы от последнего до места на которое нужно вставить,
На место с индексом Р ставим нужное значение и увеличиваем на 1 количество элементов
9
14
11
12
7
100
N
p
9
26 слайд
9
12
11
14
7
Удаление элемента с номером 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
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
Находим разность между первым и вторым элементом
Предполагаем, что массив – арифметическая прогрессия
Организуем цикл от второго до предпоследнего элемента
Если находится пара элементов, у которых другая разность, то это не арифметическая прогрессия
Если значение истинно
То выводим разность и соответствующее сообщение
Иначе – выводим соответствующее сообщение
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);
Пока элемент массива положителен или ноль берем следующий элемент
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
Да
Нет
Да
Нет
Цикл возвращающий процесс назад если такое число уже было
Цикл отвечающий за количество чисел в массиве
Цикл в котором проверяется не встречалось ли такое число
Рабочие листы
к вашим урокам
Скачать
Выбранный для просмотра документ Описание_Одномерные_массивы.doc
Скачать материал
Рабочие листы
к вашим урокам
Скачать
Рабочие листы
к вашим урокам
Скачать
Информа́тика (фр. Informatique; англ. Computer science) — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений[1].
Информатика включает дисциплины, относящиеся к обработке информации в вычислительных машинах и вычислительных сетях: как абстрактные, вроде анализа алгоритмов, так и конкретные, например разработка языков программирования и протоколов передачи данных.
6 367 067 материалов в базе
«Информатика», Босова Л.Л., Босова А.Ю.
Главное меню. Запуск программ
Больше материалов по этой темеНастоящий материал опубликован пользователем Бровкова Альбина Геннадьевна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт
Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.
Удалить материалВаша скидка на курсы
40%Курс профессиональной переподготовки
600 ч.
Курс повышения квалификации
72 ч. — 180 ч.
Курс повышения квалификации
72 ч. — 180 ч.
Современные педагогические технологии в работе с детьми с нарушениями зрения
Эффективная коммуникация c родителями и коллегами в стиле DISC
Современные ДОУ. Государственный образовательный стандарт
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.