- Презентации
- Презентация к уроку информатики Одномерные массивы в Pascal
Презентация к уроку информатики Одномерные массивы в Pascal
Автор публикации: Попова Е.Н.
Дата публикации: 18.05.2016
Краткое описание:
1
Презентация по программированию 2015 год
2
Массив – пронумерованная совокупность ячеек памяти, названная одним именем 1 2 3 4 5 6 7 А A [ 4 ] := 11, Имя массива Индекс (порядковый номер) элемента массива Значение элемента массива Определение 1
0
Благодаря этой рекламе сайт может продолжать свое существование, спасибо за просмотр.
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, Заполнение массива 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,
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,
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
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
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), Если элемент подходит по условию, добавляем его к произведению Предполагаем, что произведение равно единице
17
Подсчет количества элементов удовлетворяющих условию: k:=0, For i:=1 to N do If (условие) then k:=k+1, WriteLn(Кол-во=,k:10), Предполагаем, что таких элементов нет Если такой элемент есть, то К увеличиваем на 1. Подсчет количества элементов удовлетворяющих условию 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 i a i j a j ai>,aj 1 4 1 4 4>,4 нет 1 4 2 -2 4>, -2 да 1 -2 3 6 -2 >, 6 нет 1 -2 4 -5 -2 >, -5 да 2 4 2 4 4>,4 нет 2 4 3 6 4>,6 нет 2 4 4 -2 4>, -2 да 3 6 3 6 6>,6 нет 3 6 4 4 6>,4 да Массив 4 -2 6 -5 -2 4 6 -5 -2 4 6 -5 -5 4 6 -2 -5 4 6 -2 -5 4 6 -2 -5 -2 6 4 -5 -2 6 4 -5 -2 4 6
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
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
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 Да Нет Да Нет Цикл возвращающий процесс назад если такое число уже было Цикл отвечающий за количество чисел в массиве Цикл в котором проверяется не встречалось ли такое число