Презентация "Одномерные массивы" 10 класс
Подписи к слайдам:
- Презентация по программированию
- Автор: учитель информатики
- МОУ Плесской СОШ
- Юдин А.Б.
- 2012 год
- Одномерные
- массивы
- Массив – пронумерованная совокупность ячеек памяти, названная одним именем
- 44
- 22
- 10
- 11
- 14
- 30
- 19
- 1 2 3 4 5 6 7
- А
- A [ 4 ] := 11;
- Имя массива
- Индекс (порядковый номер) элемента массива
- Значение элемента массива
- Определение 1
- Описание массива 2
- Var имя:ARRAY[1..N] OF тип;
- Объявление массива в разделе описания переменных:
- Например:
- Var A:Array[1..10] of Integer;
- Var Tem:Array[1..100] of Real;
- Имя массива
- Количество элементов
- Тип элементов
- Type t=array[1..10] of integer;
- Var a : t;
- Const m=10; Var a : array [1.. m] of integer;
- Количество элементов можно описать в разделе констант
- Иногда массив объявляют как пользовательский тип данных
- Описание массива 3
- С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;
- В зависимости от задачи индексы элементов могут начинаться не только с единицы или быть символьного типа
- 1. Заполнение массива с клавиатуры
- For i:=1 to N do begin
- Write(' a [ ' , i , ' ] = ' );
- ReadLn ( a [ i ] );
- End;
- i , 1, N
- Ввод a i
- Заполнение массива 5
- 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)
- 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
- а) в столбик:
- 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
- Вывод массива в две строки 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, вывод осуществляется в строку
- Вывод массива в две строки 10
- i , 1, 10
- Вывод a i
- a i = a i + 1
- Конец
- i , 1, 10
- Вывод a i
- a i = случайное [-10 ; 10]
- Начало
- 1
- 1
- Пустой Writeln между циклами обычно в блок-схеме не изображают.
- Разрыв блок-схемы, если она целиком на лист не убирается
- Заполнение массива 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.
- Значение элемента массива зависит только от порядкового номера
- Заполнение массива 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.
- Значение элемента массива зависит от предшествующего элемента
- Изменение элементов массива удовлетворяющих условию
- 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
- 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;
- Нахождение суммы элементов массива удовлетворяющих условию:
- 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);
- Если элемент подходит по условию, добавляем его к произведению
- Предполагаем, что произведение равно единице
- Подсчет количества элементов удовлетворяющих условию:
- 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
- Задача 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
- Определяем число случайным образом
- Выводим его на экран
- Добавляем к сумме
- 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
- Нахождение максимального элемента в массиве и его номера:
- 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:= 1;
- for i:=2 to N do if a[i] > a[max] then max:=i;
- writeln('Максимальный элемент ',а[max]);
- writeln('Его номер ', Max);
- Иногда в задаче достаточно определить индекс наибольшего элемента
- Максимальный и минимальный элемент массива 20
- Предполагаем, что наибольший элемент стоит на первом месте
- Если i-ый элемент больше стоящего на месте max
- то, запоминаем его индекс в переменной max
- Сортировка элементов массива по возрастанию
- 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
- по возрастанию с изменениями происходящими в массиве
- Сортировка массива 22
- i, 1, N-1
- j, i, N
- ai>aj
- p=ai
- ai=aj
- aj=p
- Да
- Нет
- Общая идея алгоритма:
- Берем i-ый элемент
- Последовательно сравниваем его со всеми элементами с права
- Если находится элемент меньший чем i-ый, то они меняются местами
- Так на i-ом месте окажется самый маленький элемент
- i увеличиваем на единицу и повторяем процесс…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Сортировка массива 23
- Упорядочить по возрастанию: 4 -2 6 -5
- Вставка элемента с номером 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
- 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
- Вставка элементов удовлетворяющих условию в другой массив. Пусть нам дан массив с именем А, а переместить элементы нужно в массив В
- j:=0;
- For i:=1 to N do
- if (а[i]…) then begin
- j:=j+1;
- b[j]:=a[i];
- end;
- K:=j;
- Порядковый номер элемента в массиве В
- Если элемент из А удовлетворяет условию
- То, увеличиваем количество элементов в В, и под этим индексом помещаем элемент из А
- Количество элементов в массиве В будет равно последнему порядковому номеру перенесенного элемента
- Выбор элементов массива в другой массив 26
- Задача 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
- Находим разность между первым и вторым элементом
- Предполагаем, что массив – арифметическая прогрессия
- Организуем цикл от второго до предпоследнего элемента
- Если находится пара элементов, у которых другая разность, то это не арифметическая прогрессия
- Если значение истинно
- То выводим разность и соответствующее сообщение
- Иначе – выводим соответствующее сообщение
- Начало
- Проверка массива 28
- r:= a2-a1;
- flag:=true
- i, 2, 9
- ai+1-ai ≠ r
- flag:=false
- flag=true
- 1
- Вывод:
- Прогрессия
- Вывод:
- Не прогрессия
- Конец
- Заполнение массива и вывод его на экран
- 1
- Нет
- Нет
- Да
- Да
- Цикл в котором проверяется разность между соседними элементами
- Условие проверяющее изменилась ли переменная Flag
- Задача 6. Дан массив из 10 случайных чисел из интервала от -10 до 10. Найти номер первого отрицательного элемента (Он обязательно существует)
- Поиск элемента 29
- // заполнить массив
- i:=1;
- while (a[i]>=0) do i:=i+1;
- write('Первое отрицательное ',a[i]:4);
- Пока элемент массива положителен или ноль берем следующий элемент
- Заполнение массива 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;
- Цикл отвечающий за количество чисел в массиве
- Цикл возвращающий процесс назад если такое число уже было
- Цикл в котором проверяется не встречалось ли такое число
- Заполнение массива 31
- i,1,10
- flag=false
- a i = случайное[0;10)
- j, 1, i-1
- ai=a j
- flag=true
- flag=false
- Вывод
- a i
- Да
- Нет
- Да
- Нет
- Цикл возвращающий процесс назад если такое число уже было
- Цикл отвечающий за количество чисел в массиве
- Цикл в котором проверяется не встречалось ли такое число
Информатика - еще материалы к урокам:
- Презентация "Программирование" 9 класс
- Презентация по информатике "Кодирование текстовой информации" 10 класс
- Практикум "Обработка данных средствами электронных таблиц. Практические занятия в Microsoft Excel"
- Презентация "Глобальная компьютерная сеть Интернет" 8 класс
- Презентация по информатике "Обработка информации" 5 класс
- Презентация "Знакомство с отрицанием" 3 класс