Слайды и текст этой онлайн презентации
Слайд 1
ОДНОМЕРНЫЕ МАССИВЫ ЦЕЛЫХ ЧИСЕЛ НА ЯЗЫКЕ PYTHON
АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ
Слайд 2
Ключевые слова
массив
описание массива
заполнение массива
вывод массива
обработка массива
последовательный поиск
сортировка
Слайд 3
Массив
Массив – это поименованная совокупность однотипных элементов, упорядоченных по индексам, определяющим положение элемента в массиве.
Размерность массива – это количество индексов, необходимое для однозначного доступа к элементу массива.
Массивы с одним индексом называют одномерными, с двумя – двумерными и т.д.
Мы будем рассматривать одномерные массивы
Слайд 4
Размерность массива
Одномерный массив
Слайд 5
Обращение к элементу массива в языке Python
В языке Python нет такой структуры данных, как «массив»; для хранения группы однотипных объектов используют списки – объекты типа list.
Нумерация элементов массивов в Python всегда начинается с нуля.
Для того, чтобы обратиться к элементу массива, записывают имя массива, а после него в квадратных скобках указывают индекс нужного элемента.
i – индексы
1.2.-3.5.7
Значение элементов
A[i] – обращение
к элементам
A[0]
A[1]
A[2]
A[4]
A[3]
Слайд 6
Обращение к элементу массива в языке Python
A – имя массива
A[0] = 1 (значение элемента массива A с индексом 0 равно 1), A[1] = 2, A[2] = -3, A[3] = 5, A[4] = 7,
Индексом может быть не только целое число, но и целое значение переменной или арифметического выражения. Так, в нашем примере A[4 * i – 2] = -3 при i = 1.
Индексом может быть даже значение элемента массива. В нашем примере A[A[1]] = -3.
i – индексы
1.2.-3.5.7
Значение элементов
A[i] – обращение
к элементам
A[0]
A[1]
A[2]
A[4]
A[3]
Слайд 7
Обращение к элементу массива в языке Python
При обращении к элементу массива с несуществующим индексом происходит серьезная ошибка – выход за границы массива – и программа завершается аварийно.
Длина массива (количество элементов массива) определяется с помощью функции len():N = len(A).
Иногда размер массива хранят в отдельной переменной:
N = 5.
Слайд 8
Способы заполнения массива в языке Python
1 способ. Перечисление значений элементов
A = [1, 2, -3, 5, 7]
или с помощью записи
D = [1] * 5
2 способ. Ввод значений элементов в клавиатуры. Небольшие массивы можно вводить с клавиатуры. Для этого можно использовать цикл с параметром, выполняющий оператор ввода отдельно для каждого элемента массива:
for i in range (N):
A[i] = int(input())
Слайд 9
Способы заполнения массива в языке Python
2 способ. Чтобы перед вводом значения очередного элемента на экране появлялась подсказка с индексом этого элемента, можно использовать следующий цикл:
for i in range (N):
print(“A[{}]=”.format(i),end=“”)
A[i] = int(input())
В это случае, например, при вводе значения элемента с индексом 2 на экран будет выведено A[2]= и справа от знака «=» будет мигать курсор – приглашение к вводу.
Слайд 10
Способы заполнения массива в языке Python
3 способ. Заполнение массива случайными числами. Для работы со случайными числами сначала нужно подключить функцию randint() модуля random(), генерирующую целое число в заданном диапазоне:
from random import randint
Далее задаем цикл с параметром:
for i in range (N):
A[i] = randint(10,110)
Массив из N элементов будет заполнен случайными числами, принадлежащих отрезку от [10, 110].
Слайд 11
Способы заполнения массива в языке Python
4 способ. Задание значений элементов массива по формуле:
Пример 1
for i in range (N):
A[i] = i
Заполнит массив целыми числами от 0 до N-1
Пример 2
for i in range (N):
A[i] = i**2
Заполняет элементы массива числами, равными квадратам их индексов.
Слайд 12
Вывод массива на языке Python
1 способ. Вывести список как один объект:
print(A)
[45,.21,.56,.43,.83,.56,.69,.34,.28,.15]
2 способ. Вывести по одному, используя цикл:
for i in range (len(A)):
print(A[i], end = “ ”)
Параметр end определяет, что после вывода каждого элемента добавляется пробел, а не символ перехода на новую строку.
45.21.56.43.83.56.69.34.28.15
Слайд 13
Вывод массива на языке Python
3 способ. Вывести в столбик:
for i in range (len(A)):
print(A[i])
A[1]=4
A[2]=1
A[3]=6
A[4]=3
A[5]=8
A[6]=5
A[7]=9
A[8]=4
A[9]=8
A[10]=7
4 способ. Вывести с комментарием:
for i in range (N):
print(‘A[‘,i,’]=‘,A[i])
Слайд 14
Вывод массива на языке Python
На основании рассмотренных примеров напишем программу, в которой осуществляется: заполнение целочисленного массива A, состоящего из 10 элементов, случайными числами, значения которых изменяются в диапазоне от 0 до 99; вывод массива A на экран:
Слайд 15
Проверка домашнего задания
№ 68 ТР. На блок-схеме представлен алгоритм ввода массива из 10 целых чисел с помощью цикла с предусловием. Запишите соответствующую программу на зыке Pyrthon
N=10
A=[0]*N
i=1
while i<=10:
print('a[',i,']')
A[i]=int(input())
i+=1
Нет
Да
Слайд 16
Проверка домашнего задания
№ 69 ТР. На блок-схеме представлен алгоритм ввода массива из 10 целых чисел с помощью цикла с параметром. Запишите соответствующую программу на языке Python
N=10
A=[0]*10
for i in range(10):
A[i]=int(input())
print('a[',i,'] = ',A[i])
Слайд 17
Проверка домашнего задания
№ 69 ТР. На блок-схеме представлен алгоритм ввода массива из 10 целых чисел с помощью цикла с постусловием. Запишите соответствующую программу на зыках программирования
N=10
A=[0]*10
i=1
while True:
print('a[',i,']')
A[i]=int(input())
i+=1
if i>10:
break
Нет
Да
Слайд 18
Вычисление суммы элементов массива
Пример. В некотором населенном пункте N домов. Известно, сколько людей проживает в каждом из домов. Составим алгоритм подсчета количества жителей населенного пункта.
Исходные данные (количество жильцов) представим в виде одномерного массива А, содержащего N элементов: A [0] - количество жильцов дома 1, A [1] – количество жильцов дома 2, A [N-1] – количество жильцов дома N.
Слайд 19
Вычисление суммы элементов массива
Начало
Конец
Слайд 20
Вычисление суммы элементов массива
Суммирование элементов массива
осуществляется за счёт поочерёдного добавления слагаемых:
Определяется ячейка памяти (переменная s),
в которой будет последовательно накапливаться
результат суммирования
Переменной s присваивается начальное значение 0
- число, не влияющее на результат сложения
Для каждого элемента массива из переменной s
считывается её текущее значение и складывается
со значением элемента массива;
полученный результат присваивается переменной s.
Слайд 21
Вычисление суммы элементов массива
N раз текущее значение переменной s
складывается со значением текущего массива A [i] ;
полученный результат присваивается переменной s.
Слайд 22
Вычисление суммы элементов массива на Python
s = 0.s = 0
s =s + A[0].s = 0 + A[0]
s =s + A[1].s = 0 + A[0]+ A[1]
s =s + A[2].s = 0 + A[0]+ A[1]+ A[2]
….…
s =s + A[N-1].s = 0+A[0]+A[1]+A[2]+…+A[n-1]
Основной фрагмент программы:
s=0
for i in range (N):
s += A[i]
Слайд 23
Вычисление суммы элементов массива на Python
s=0
for i in range(N):
s=s+A[i]
print(‘s = ‘,s)
Вычисление суммы элементов массива
Вывод результата
Слайд 24
Вычисление суммы элементов массива
N=10
a=[0]*N
from random import randint
s=0
for i in range(N):
a[i]=randint(50,200)
print(a[i],'')
s=s+a[i]
print('s = ',s)
Второй способ оформления:
Используем операторные скобки и всё (ввод, вывод, обработку) делаем в одном цикле.
Слайд 25
Вопросы и задания
1. Объясните разницу между понятиями «индекс элемента массива» и «значение элемента массива».
2. Может ли массив одновременно содержать целые и вещественные значения?
3. Для чего предназначены массивы?
4. Для чего необходимо описание массива?
Слайд 26
Вопросы и задания
5. Запишите в следующем формате:
A[<индекс>]=<значение элемента массива>
Значения элементов массивов, сформированных следующим образом:
а) for i in range (7): A[i]=1
i.0.1.2.3.4.5.6
A[i].1.1.1.1.1.1.1
Слайд 27
Вопросы и задания
б) for i in range (7): A[i]=i
i.0.1.2.3.4.5.6
A[i].0.1.2.3.4.5.6
в) for i in range (7): A[i]=i*i-4
i.0.1.2.3.4.5.6
A[i].-4.-3.0.5.12.21.32
Слайд 28
Вопросы и задания
г) A[3,4,-1,5,0,10,-12]
i.0.1.2.3.4.5.6
A[i].3.4.-1.5.0.10.-12
д) for i in range (8):
if i%2==0:
A[i]=i/2
else: A[i]=0
i.0.1.2.3.4.5.6
A[i].0.0.1.0.2.0.3
Слайд 29
Напишем программы
а) for i in range (7):
A[i]=1
N=7
A=[0]*N
for i in range (7):
A[i]=1
for i in range (7):
print('A[',i,'] = ',A[i])
б) for i in range (7):
A[i]=i
N=7
A=[0]*N
for i in range (7):
A[i]=i
for i in range (7):
print('A[',i,'] = ',A[i])
Слайд 30
Напишем программы
г) A[3,4,-1,5,0,10,-12]
A=[3,4,-1,5,0,10,-12]
for i in range (7):
print('A[',i,'] = ',A[i])
в) for i in range (7):
A[i]=i*i-4
N=7
A=[0]*N
for i in range (7):
A[i]=i*i-4
for i in range (7):
print('A[',i,'] = ',A[i])
Слайд 31
Напишем программы
д) for i in range (8):
if i%2==0:
A[i]=i/2
else: A[i]=0
N=7
A=[0]*N
for i in range (7):
if i%2 == 0:
A[i]=i/2
else:
A[i]=0
for i in range (7):
print('A[',i,'] = ',A[i])
Слайд 32
Вопросы и задания
6. Что вы можете сказать о массиве сформированным следующим образом?
а) for i in range (10):
A[i]=random.randint(-50,50)
б) for i in range (20):
A[i]=i
в) for i in range (0,5):
A[i]=2*i-1
а) массив а, состоящих из 10 элементов, значениями которых являются случайные целые числа, принадлежащие отрезку [–50; 50]
б) массив а, состоящих из 20 элементов, значениями которых являются целые числа, совпадающие с индексами элементов;
в) массив а, состоящих из 5 целочисленных элементов, значения которых вычисляются по заданной формуле.
Слайд 33
Вопросы и задания
7. Чему равна сумма элементов массива A[0] и A[5] сформированным следующим образом?
Алгоритмический язык.Пример выходных данных
нц для i от 0 до 9
A[i]:= i*i-5
кц.for i in range (10):
A[i]= i*i-5
i.0.1.2.3.4.5.6.7.8.9
A[i].-5.-4.-1.4.11.20.31.44.59.76
A[0] + A[5] = -5 + 20 = 15
Слайд 34
Напишем программу
N=10
A=[0]*N
s=0
for i in range (10):
A[i]=i*i-5
for i in range (10):
print('A[',i,'] = ',A[i])
for i in range(N):
s=A[0]+A[5]
print('s = ',s)
Слайд 35
Вопросы и задания
8. Известны значения элементов одномерного целочисленного массива A, состоящего из 5 элементов:
i.0.1.2.3.4
A[i].4.1.-5.7.2
Чему равно значение A[A[4]]?
A[4] = 2, A[2] = -5
Слайд 36
Вопросы и задания
9. Чему равно среднее арифметическое элементов массива A[3] и A[4], сформированного следующим образом?
Алгоритмический язык.Пример выходных данных
нц для i от 0 до 9
если mod(i,2)=0
то A[i]:=i/2
иначе A[i]:=(i+1)/2
все
кц.for i in range (10):
if i%2==0:
A[i]= i*i-5
else: A[i]=(i+1)/2
Слайд 37
Вопросы и задания
N=10
A=[0]*N
for i in range (10):
if i%2==0:
A[i]=i/2
else:
A[i]=(i+1)/2
for i in range (10):
print('A[',i,'] = ',A[i])
for i in range(N):
s=A[3]+A[4]
sr=s/2
print('sr = ',sr)
Слайд 38
Вопросы и задания
10. Найдите сумму значений элементов массива A[1] и A[4], сформированного следующим образом
for i in range (6):
A[i]= i*(i+1)
i.0.1.2.3.4.5
A[i].0.2.6.12.20.30
Напишем программу
A[1] + A[4] = 2 + 20 = 22
N=6
A=[0]*N
for i in range (6):
A[i]=i*(i+1)
for i in range (6):
print('A[',i,'] = ',A[i])
for i in range(N):
s=A[1]+A[4]
print('s = ',s)
Слайд 39
Вопросы и задания
11. Массив задан следующим образом:
B[2,1,2,3,5,11].
Найдите значение выражения
B[5]*B[4]-B[2]-B[3]*B[1].
Слайд 40
Вопросы и задания
12. Массив A из десяти элементов сформирован следующим образом:
Алгоритмический язык.Пример выходных данных
нц для i от 0 до 9
A[i]:=i*i
кц.for i in range (10):
A[i]= i*i
К данному массиву был применён следующий алгоритм:
Алгоритмический язык.Пример выходных данных
b:=A[9]
нц для i от 0 до 8
A[9-i]:=A[8-i]
кц
A[0]:=b.b=a[9]
for i in range (9):
A[9-i]=A[8-i]
A[0]=b
Чему равно значение седьмого элемента образованного массива?
Слайд 41
Напишем программу
Сформированный массив
i.0.1.2.3.4.5.6.7.8.9
A[i].0.1.4.9.16.25.36.49.64.81
Обработанный массив
i.0.1.2.3.4.5.6.7.8.9
A[i].81.0.1.4.9.16.25.36.49.64
N=10
A=[0]*N
for i in range (10):
A[i]=i*i
b=A[9]
for i in range(9):
A[9-i]=A[8-i]
A[0]=b
for i in range (10):
print('A[',i,'] = ',A[i])
print(A[7])
Слайд 42
Вопросы и задания
13. Массив A из десяти элементов сформирован следующим образом:
Алгоритмический язык.Пример выходных данных
нц для i от 0 до 9
A[i]:=11-i
кц.for i in range (10):
A[i]= 11-i
К данному массиву был применён следующий алгоритм:
Алгоритмический язык.Пример выходных данных
нц для i от 0 до 8
A[i+1]:=A[i]
кц.for i in range (9):
A[i+1]=A[i]
Чему равно среднее арифметическое значений элемента образованного массива?
Слайд 43
Напишем программу
Сформированный массив
i.0.1.2.3.4.5.6.7.8.9
A[i].11.10.9.8.7.6.5.4.3.2
Обработанный массив
i.0.1.2.3.4.5.6.7.8.9
A[i].11.11.11.11.11.11.11.11.11.11
N=10
A=[0]*N
s=0
for i in range(10):
A[i]=11-i
for i in range(9):
A[i+1]=A[i]
print('A[',i,'] = ',A[i])
for i in range(9):
s+=A[i]
sr=s/10
print('sr = ',sr)
Слайд 44
Вопросы и задания
14. Определите, что будет выведено в результате выполнения следующей программы:
а) A = [1,7,3,6,0,10]
s=0
for i in range (6):
s=s+A[i]
sr=s/6
print(‘sr = ‘,sr)
i.0.1.2.3.4.5
s.1.8.11.17.17.27
sr.-.-.-.-.-.4.5
sr = 4.5
Слайд 45
Вопросы и задания
б) A = [0]*7
for i in range (7):
A[i]=i*3
k=0
for i in range(7):
if A[i] > 10:
k+=1
print(‘k= ‘,k)
i.0.1.2.3.4.5.6
k.0.0.0.0.1.2.3
k = 3
Слайд 46
Вопросы и задания
в) A=[-1,7,-3,-6,0,1,2]
m=0
n=0
k=0
for i in range(7):
if A[i]>0:
m+=1
if A[i] < 0:
n+=1
if A[i]==0:
k+=1
print('m = ',m,'n = ',n,'k = ',k)
i.0.1.2.3.4.5.6
m..1....2.3
n.1..2.3...
k.....1..
m = 3, n = 3, k = 1
Слайд 47
Вопросы и задания
г) A=[-1,7,-3,-6,0,1,2]
d = 0
m = A[0]
for i in range(1,5):
if m < A[i]:
d = 1
m = A[i]
print(‘d = ',d)
i..1.2.3.4.5
d.0...1.1.
m.0...-3.-6.
d = 1
Слайд 48
Вопросы и задания
№ 7 Учебник. Напишите программу, которая вычисляет среднюю температуру воздуха за неделю с точностью до двух знаков после запятой. Исходные данные вводятся с клавиатуры.
Пример входных данных.Пример выходных данных
Введите температуру
Понедельник 12
Вторник 10
Среда 16
Четверг 18
Пятница 17
Суббота 16
Воскресенье 14.Средняя температура за неделю: 14,71
Слайд 49
Напишем программу
Dat = [0]*7
s=0
print('Введите температуру:')
Dat[0] = int(input('Понедельник '))
Dat[1] = int(input('Вторник '))
Dat[2] = int(input('Среда '))
Dat[3] = int(input('Четверг '))
Dat[4] = int(input('Пятница '))
Dat[5] = int(input('Суббота '))
Dat[6] = int(input('Воскресенье '))
for k in range(7):
s+=Dat[k]
sr=s/7
print('Средняя температура за неделю: ','{:.2f}'.format(sr))
Слайд 50
Последовательный поиск в массиве
Типовые задачи поиска
Нахождение наибольшего (наименьшего)
элемента массива
Нахождение элемента массива, значение
которого равно заданному значению
Слайд 51
Последовательный поиск в массиве
Для решения таких задач в программе необходимо организовать последовательный просмотр элементов массива и сравнение значения очередного просматриваемого элемента с неким образцом.
Рассмотрим подробно решение задач первого типа: нахождение наибольшего (наименьшего) элемента.
Представим себе одномерный массив в виде стопки карточек, на каждой из которых написано число.
Слайд 52
Нахождение наибольшего элемента
в стопке карточек с записанными числами:
1) возьмем верхнюю карточку, записать на доске
(запомнить) число как наибольшее.
2) Возьмем следующую карточку; сравним числа,
записанные на карточке и на доске; если число
на карточке больше, то сотрем число, записанное
на доске, и запишем там то же число, что и на карточке;
если же новое число не больше, то на доске оставим
имеющуюся запись; уберем карточку в сторону
3) Повторить действия, описанные в пункте 2 для всех
оставшихся карточек.
!
При организации поиска наибольшего элемента массива правильнее искать его индекс.
Слайд 53
Последовательный поиск в массиве
В программировании при обосновании корректности циклических алгоритмов используется понятие инварианта цикла.
Инвариант цикла – логическое выражение (условие), зависящее от переменных, изменяющихся в теле цикла и после каждого перехода тела цикла.
Условие, «записанное на доске число – самое большое из всех просмотренных до сих пор» является инвариантом цикла для рассмотренного алгоритма.
Так как доступ к значению элемента массива осуществляется по его индексу, при организации поиска наибольшего элемента в одномерном массиве можно искать его индекс.
Слайд 54
Последовательный поиск в массиве
Обозначим искомый индекс imax. Тогда описанный выше алгоритм поиска наибольшего элемента в массиве A на языке Python можно записать следующим образом
Слайд 55
Последовательный поиск в массиве
Рассмотрим работу этого алгоритма для массива
A = [100, 120, 130, 80, 70]
imax.i.A[i] > A[imax]
0.1.120 > 100 (Да)
1.2.130 > 120 (Да)
2.3.80 > 130 (Нет)
2.4.70 > 13 (Нет)
Наибольший элемент: 130
Если в массиве есть несколько элементов, значения которых равны максимальному значению, то данная программа найдет первый из них (первое вхождение). Подумайте, чтобы в ней находился последний из максимальных элементов. Как следует преобразовать программу, чтобы с ее помощью можно было найти минимальный элемент массива?
Слайд 56
Последовательный поиск в массиве
Результатом решения задачи второй типа (элемента массива, значение которого равно заданному значению) может быть:
k – индекс элемента массива такой, что A[k] = x, где x – заданное число;
сообщение о том, что искомого элемента в массиве не обнаружено.
10.50.1.3.50.14.21.50.10.21
Здесь:
трём равен 4-й элемент;
десяти равны 1-й и 9-й элементы;
нет элемента, равного 12.
Слайд 57
Последовательный поиск в массиве
Слайд 58
Последовательный поиск в массиве
В этой программе последовательно просматриваются все элементы массива. Номер найденного элемента сохраняется в переменной k (nx); начальное значение, присваиваемое этой переменной, заведомо не совпадает ни с одним из значений индексов элементов массива. Если значение k (nx) не изменилось в ходе выполнения цикла и осталось равным 0 (-1), то это означает, что в массиве нет элемента равного x.
Слайд 59
Последовательный поиск в массиве
Во многих случаях требуется найти первый из элементов, имеющих соответствующее значение, и дальнейший просмотр массива прекратить
Для этой цели можно использовать следующий фрагмент программы:
nx = -1
for i in range(N):
if A[i] == x:
nx = i
break
if nx >=0:
print(“A[{}]={}”.format(nx,x))
else:
print(‘Элемент не найден’)
Слайд 60
Последовательный поиск в массиве
Используя цикл с параметром, мы начали последовательный перебор элементов массива и завершим его досрочно, как только будет найдено требуемое значение. В таком случае для выхода из цикла используется оператор break.
Выполнение алгоритма будет завершено (прервано) в одном из двух случаев:
в массиве найден первый из элементов, равный заданному;
все элементы массива просмотрены.
Слайд 61
Последовательный поиск в массиве
Запишите полный текст программы и выполните ее на компьютере.
N=10
A=[0]*N
from random import randint
for i in range(N):
A[i]= randint(0,99)
print ('A[',i,'] = ',A[i])
x = int(input(‘x = ‘))
nx = -1
for i in range(0,N):
if A[i] == x:
nx = i
break
if nx >=10:
print('A[{}]={}',format(nx,x))
else:
print('Элемент не найден',nx)
Слайд 62
Последовательный поиск в массиве
Зачастую требуется определить количество элементов, удовлетворяющих некоторому условию. В этом случае вводится переменная, значение которой увеличивается на единицу каждый раз, когда найден нужный элемент.
Определите, количество каких элементов подсчитывается с помощью следующего фрагмента программы.
k = 0
for i in range(10):
if A[i] > 50:
k = k + 1;
print(‘k = ’,k)
Слайд 63
Последовательный поиск в массиве
Если требуется определить сумму значений элементов, удовлетворяющих некоторому условию, то вводят переменную, к значению которой прибавляют значение найденного элемента массива.
Определите, какому условию удовлетворяют элементы массива, значения которых суммируются с помощью следующего фрагмента программы
s = 0
for i in range(10):
if A[i] > 50 and A[i] < 60:
s += A[i]
print(‘s = ’,s)
Слайд 64
Последовательный поиск в массиве
Запишите полные тексты двух последних программ и выполните их на компьютере.
A = [1,55,50,120,50,17,4,-50,80,50]
s = 0
for i in range (10):
if (A[i]>50) and (A[i]<60):
s+=A[i]
print('s = ',s)
Слайд 65
Вопросы и задания
17. Проанализируйте представленный в форме блок-схемы алгоритм и укажите результат его выполнения при заданном входном потоке данных: -5, 3, 1, -4, -3, 2, 5, -1, -7, 4.
Слайд 66
Напишем программу
Запишите соответствующую программу на языке программирования Python.
A=[-5,3,1,-4,-3,2,5,-1,-7,4]
y=0
z=0
for i in range(10):
if A[i]>0:
z+=A[i]
else:
y+=A[i]
print('y = ',y,'','z = ',z)
Слайд 67
Вопросы и задания
18. Установите соответствие между записанными на языке Python фрагмент программ обработки одномерного массива и результатами их работы.
а) y = 0
for i in range(10):
if A[i] == 0:
y += 1
д) m = a[0]
for i in range(1,10):
if A[i] > m:
m = A[i]
б) s = 0
for i in range(15):
if A[i] % 2 == 0:
s += a[i]
е) z = 1
for i in range(10):
if A[i] != 0:
z *= A[i]
в) n = 0
for i in range(1,10):
if A[i] < a[n]:
n = i
1. Произведение ненулевых элементов массива
2. Значение наибольшего элемента массива
3. Сумма всех элементов массива с четными номерами
г) k = 0
for i in range(100):
if A[i] % 5 == 0:
k += 1
4. Номер (индекс) минимального элемента массива
5. Количество всех элементов массива, значение которых кратно 5
6. Количество ненулевых элементов массива
Слайд 68
Вопросы и задания
19. В массиве Dat хранятся данные измерений среднесуточной температуры за неделю в градусах (Dat [1] – данные за понедельник, Dat[2] – данные за вторник и т.д.). Определите, что будет выведено в результате работы программы, записанной на алгоритмическом языке. Запишите эту программу на языке Python.
алг
нач
целтаб Dat [1..7]
цел m, k
Dat [1] =12; Dat [2] = 14;
Dat [3] =13; Dat [4] = 15;
Dat [5] =15; Dat [6] = 12;
Dat [7] =16
m := 0
нц для k от 1 до 7
если Dat[k] > 14 то
m := m + 1
все
кц
вывод m
кон
Dat = [12,14,13,15,15,12,16]
m=0
for k in range(7):
if Dat[k]>14:
m+=1
print(m)
Слайд 69
Вопросы и задания
№ 18 доп. главы. Дан массив из десяти целых чисел. Напишите программу подсчета количества элементов этого массива, имеющих максимальное значение
Зададим массив вводом с клавиатуры
N = 10
A = [0]*N
for i in range (N):
A[i]=int(input())
print('A [',i,']= ',A[i])
imax=A[0]
for i in range (1,N):
if A[i] > imax:
imax=A[i]
print('Максимальный элемент = ', imax)
cnt = 0
for i in range(N):
if A[i]==imax:
cnt+=1
print('Количество максимальных элементов = ', cnt)
Слайд 70
Вопросы и задания
№ 18 доп. главы. Дан массив из десяти целых чисел. Напишите программу подсчета количества элементов этого массива, имеющих максимальное значение
Зададим массив с помощью рандомных чисел
N = 10
A = [0]*10
from random import randint
for i in range(N):
A[i] = randint(0,99)
print('A[',i,'] = ',A[i])
imax=A[0]
for i in range (1,N):
if A[i] > imax:
imax=A[i]
print('Максимальный элемент = ', imax)
cnt = 0
for i in range(N):
if A[i]==imax:
cnt+=1
print('Количество максимальных элементов = ', cnt)
Слайд 71
Вопросы и задания
№ 8 Учебник (№ 19 доп. главы). В классе 20 учеников писали диктант по русскому языку. Напишите программу, подсчитывающую количество двоек, троек, четверок и пятерок, полученных за диктант.
N=20
A=[0]*N
from random import randint
cnt2=0
cnt3=0
cnt4=0
cnt5=0
for i in range(N):
A[i]=randint(2,5)
print('a [ ',i,'] = ',A[i])
if A[i]==2:
cnt2+=1
elif A[i]==3:
cnt3+=1
elif A[i]==4:
cnt4+=1
elif A[i]==5:
cnt5+=1
print('Количество двоек ',cnt2)
print('Количество двоек ',cnt3)
print('Количество двоек ',cnt4)
print('Количество двоек ',cnt5)
Слайд 72
Вопросы и задания
№ 9 Учебник (№ 20 доп. главы). Объявлен набор в школьную баскетбольную команду. Известен рост каждого из N учеников, желающих попасть в эту команду. Составьте алгоритм подсчета количества претендентов, имеющих шанс попасть в команду, если рост игрока команды должен быть не менее 170 см. Запишите программу на языке Python. Считайте рост претендента в команду случайным числом из диапазона от 150 до 200 см, а число претендентов N = 50.
N = 50
A = [0]*N
cnt=0
from random import randint
for i in range(N):
A[i] = randint(150,201)
print('A[',i,'] = ',A[i])
if A[i] >= 170:
cnt+=1
print('Количество претендентов ',cnt)
Слайд 73
Вопросы и задания
№ 10 Учебник (№ 21 доп. главы). В целочисленных массивах A и B содержатся длины катетов десяти прямоугольных треугольников (A [i] – длина первого катета, B [i] – длина второго катета i – го треугольника). Найдите треугольник с наибольшей площадью. Выведите его номер, длины катетов и площадь. Предусмотрите случай, когда таких треугольников несколько.
Слайд 74
Сортировка массива
Под сортировкой (упорядочением) массива понимают перераспределение значений его элементов в некотором определенном порядке.
Порядок, при котором в массиве первый элемент имеет самое маленькое значение, а значение каждого следующего элемента меньше значения предыдущего элемента, называют неубывающим.
Порядок, при котором в массиве первый элемент имеет самое большое значение, а значение каждого следующего элемента больше значения предыдущего элемента, называют невозрастающим.
Цель сортировки – облегчить последующий поиск элементов: искать нужный элемент в упорядоченном массиве легче.
Рассмотрим один из возможных алгоритмов сортировки массивов – сортировку выбором.
Слайд 75
Сортировка массива
Сортировка элементов массива по невозрастанию
выбором осуществляется следующим образом:
1. В массиве выбирается максимальный элемент
2. Максимальный и первый элемент меняются местами
(первый элемент считается отсортированным)
3. В неотсортированной части массива снова выбирается
максимальный элемент; он меняется местами с первым
неотсортированным элементом массива
Действия пункта 3 повторяются с неотсортированными
элементами массива, пока не останется один
неотсортированный элемент (минимальный)
Слайд 76
Сортировка массива
Рассмотрим процесс сортировки выбором на примере массива
A = [0, 1, 9, 2, 4, 3, 6, 5]
Индекс.1.2.3.4.5.6.7.8
Значение.0.1.9.2.4.3.6.5
Шаги.1........
2........
3........
4........
5........
6........
7........
Итог:........
Слайд 77
Сортировка массива
Приведем фрагмент программы, реализующий описанный алгоритм:
for i in range (n-1):
imax = i
for j in range (i + 1, n):
if A[j] > A[imax]:
imax = j
A[i], A[imax] = A[imax], A[i]
Здесь мы использовали один цикл внутри другого. Такая инструкция называется вложенным циклом.
Слайд 78
Сортировка массива
Запишите полный текст программы и выполните ее на компьютере для рассмотренного в примере массива A
N=10
A=[0]*N
print('Исходный массив')
for i in range(N):
A[i]=int(input())
for i in range(N):
print('A[',i,'] = ',A[i])
for i in range(N-1):
imax=i
for j in range(i+1,N):
if A[j] > A[imax]:
imax=j
x=A[i]
A[i]=A[imax]
A[imax]=x
print('Отсортированный по убыванию массив ')
for i in range(N):
print('A[',i,'] = ',A[i])
Слайд 79
Вопросы и задания
№ 11 Учебник (№ 22 доп. главы). Занесите информацию о десяти странах мира в массивы NAME (название страны), K (численность населения), S (площадь страны). Напишите программу, выводящую названия стран в порядке возрастания плотности их населения.
Слайд 80
Самое главное
Массив - это поименованная совокупность однотипных элементов, упорядоченных по индексам, определяющим положение элементов в массиве. В языках программирования массивы используются для реализации таких структур данных, как последовательности и таблицы.
Заполнять массив можно либо вводя значение каждого элемента с клавиатуры, либо присваивая элементам некоторые значения. При заполнении массива и его выводе на экран используется цикл с параметром.
Решение разнообразных задач, связанных с обработкой массивов, базируется на таких типовых задачах, как:
суммирование элементов массива;
поиск элемента с заданными свойствами;
сортировка массива.