Программирование (Python)

Содержание

Слайд 2

Программирование (Python)

§ 17. Введение

Программирование (Python) § 17. Введение

Слайд 3

Что такое программирование?

Программирование — это создание программ для компьютеров. Этим занимаются программисты.

Чем

Что такое программирование? Программирование — это создание программ для компьютеров. Этим занимаются программисты. Чем занимаются программисты:
занимаются программисты:

Слайд 4

Направления в программировании

Направления в программировании

Слайд 5

Простейшая программа

# Это пустая программа

комментарии после # не обрабатываются

# coding: utf-8
# Это

Простейшая программа # Это пустая программа комментарии после # не обрабатываются #
пустая программа

кодировка utf-8 по умолчанию)

"""
Это тоже комментарий
"""

Слайд 6

Вывод на экран

print( "Привет!" )

оператор вывода

Оператор — это команда языка программирования.

print( "Привет",

Вывод на экран print( "Привет!" ) оператор вывода Оператор — это команда
Вася! )

print( "Привет, Вася!" )

вся строка в кавычках

Слайд 7

Переход на новую строку

print( "Привет, Вася!" )
print( "Привет, Петя!" )

Результат:

Нужно в одной

Переход на новую строку print( "Привет, Вася!" ) print( "Привет, Петя!" )
строке:

Привет, Вася!
Привет, Петя!

Привет, Вася!Привет, Петя!

Решение:

print( "Привет, Вася!", end="" )
print( "Привет, Петя!" )

переход на новую строку автоматически

end=""

после вывода данных ничего не выводить

Слайд 8

Системы программирования

Системы программирования — это средства для создания новых программ.

Транслятор — это

Системы программирования Системы программирования — это средства для создания новых программ. Транслятор
программа, которая переводит тексты программ, написанных программистом, в машинные коды (команды процессора).

компилятор — переводит всю программу в машинные коды, строит исполняемый файл (.exe)
интерпретатор — сам выполняет программу по частям (по одному оператору).

program Hello;
begin
write('Привет!')
end.

Слайд 9

Системы программирования

Отладчик — это программа для поиска ошибок в других программах.

пошаговый режим

Системы программирования Отладчик — это программа для поиска ошибок в других программах.
— выполнение программы по шагам (по одному оператору)
просмотр значений переменных во время выполнения программы
точки останова – операторы в программе, перед выполнением которых нужно остановиться.

Среда программирования (IDE):
редактор текста программ
транслятор
отладчик

Слайд 10

Задачи

«B»: Вывести на экран текст «лесенкой»
Вася
пошел
гулять
«C»: Вывести на экран

Задачи «B»: Вывести на экран текст «лесенкой» Вася пошел гулять «C»: Вывести
рисунок из букв
Ж
ЖЖЖ
ЖЖЖЖЖ
ЖЖЖЖЖЖЖ
HH HH
ZZZZZ

Слайд 11

Программирование (Python)

§ 18. Линейные программы

Программирование (Python) § 18. Линейные программы

Слайд 12

Пример задачи

Задача. Ввести два числа и вычислить их сумму.

# ввести два числа

Пример задачи Задача. Ввести два числа и вычислить их сумму. # ввести

# вычислить их сумму
# вывести сумму на экран

Псевдокод – алгоритм на русском языке с элементами языка программирования.

Слайд 13

# ввести два числа
# вычислить их сумму
# вывести сумму на

# ввести два числа # вычислить их сумму # вывести сумму на
экран

Зачем нужны переменные?

Переменная — это величина, которая имеет имя, тип и значение. Значение переменной может изменяться во время выполнения программы.

a b c

ячейки памяти

Слайд 14

Имена переменных

Идентификатор — это имя программы или переменной.

a b c

МОЖНО использовать
латинские буквы

Имена переменных Идентификатор — это имя программы или переменной. a b c
(A-Z, a-z)
цифры
знак подчеркивания _

НЕЛЬЗЯ использовать скобки, знаки ", &, |, *, +, =, !, ? и др.

Какие имена правильные?
AXby R&B 4Wheel Вася “PesBarbos” TU154 [QuQu] _ABBA A+B

Слайд 15

Работа с переменными

Присваивание (запись значения)

a = 5

=

оператор присваивания

a = 5
a = 18

Вывод

Работа с переменными Присваивание (запись значения) a = 5 = оператор присваивания
на экран

print(a)

с = 14
print(c)

с = 14
print("с")

14

c

a ← 5

Слайд 16

Работа с переменными

Изменение значения

i = i + 1

увеличить на 1

a =

Работа с переменными Изменение значения i = i + 1 увеличить на
4
b = 7
a = a + 1
b = b + 1
a = a + b
b = b + a
a = a + 2
b = b + a

4

7

5

8

13

21

15

36

i ← i + 1

Python:

a, b = 4, 7
a += 1
b += 1
a += b
b += a
a += 2
b += a

Слайд 17

Ввод с клавиатуры

Цель – изменить исходные данные, не меняя программу.

a = input()

5

a

Ввод с клавиатуры Цель – изменить исходные данные, не меняя программу. a = input() 5 a

Слайд 18

Ввод с клавиатуры

a = input()

ввести строку с клавиатуры и связать с переменной

Ввод с клавиатуры a = input() ввести строку с клавиатуры и связать
a

b = input()

с = a + b

print ( c )

Протокол:
21
33
2133

a = int( input() )

b = int( input() )

преобразовать в целое число

Слайд 19

Ввод с подсказкой

a = input( "Введите число: " )

подсказка

Введите число:

Qu-Qu

a = int(

Ввод с подсказкой a = input( "Введите число: " ) подсказка Введите
input("Введите число: ") )

преобразовать в целое число

ValueError: invalid literal for int() with base 10: 'Qu-Qu'

Введите число:

26

Слайд 20

Ввод вещественных чисел

print( "Введите число:" )
x = float (input())

или так:

x =

Ввод вещественных чисел print( "Введите число:" ) x = float (input()) или
float (input("Введите число:"))

float

float

Слайд 21

Программа сложения чисел

ожидание:

реальность:

Введите два числа:
5
7
5+7=12

5
7
12

a = int ( input()

Программа сложения чисел ожидание: реальность: Введите два числа: 5 7 5+7=12 5
)
b = int ( input() )
c = a + b
print ( c )

Слайд 22

Вывод данных с текстом

5+7=12

значение a

значение с

значение b

print(a, "+", b, "=", c)

print(a, "+",

Вывод данных с текстом 5+7=12 значение a значение с значение b print(a,
b, "=", c, sep="" )

ожидание:

реальность:

5+7=12

5 + 7 = 12

sep=""

separator

пустой

Слайд 23

Программа сложения чисел

print ( "Введите два числа: " )
a = int (

Программа сложения чисел print ( "Введите два числа: " ) a =
input() )
b = int ( input() )
c = a + b
print ( a, "+", b, "=", c, sep="" )

Слайд 24

Ввод двух чисел в одной строке

a, b = map ( int, input().split()

Ввод двух чисел в одной строке a, b = map ( int,
)

input()

ввести строку с клавиатуры

21 33

input().split()

21

33

разделить строку на части по пробелам

map ( int, input().split() )

21

33

целые

применить

эту операцию

a, b = map ( int, input().split() )

Слайд 25

Задачи

«A»: Ввести три числа, найти их сумму.
Пример:
Введите три числа:
4

Задачи «A»: Ввести три числа, найти их сумму. Пример: Введите три числа:

5
7
4+5+7=16
«B»: Ввести три числа, найти их сумму и произведение.
Пример:
Введите три числа:
4
5
7
4+5+7=16
4*5*7=140

Слайд 26

Задачи

«C»: Ввести три числа, найти их сумму, произведение и среднее арифметическое.
Пример:

Задачи «C»: Ввести три числа, найти их сумму, произведение и среднее арифметическое.
Введите три числа:
4
5
7
4+5+7=16
4*5*7=140
(4+5+7)/3=5.333333

Слайд 27

Арифметические выражения

Линейная запись (в одну строку):

a = (c + b - 1)

Арифметические выражения Линейная запись (в одну строку): a = (c + b
/ 2 * d

Операции:

+ –
* – умножение
/ – деление
** – возведение в степень (x2 → x**2)

Слайд 28

Порядок выполнения операций

a = (c + b**5*3 - 1) / 2 *

Порядок выполнения операций a = (c + b**5*3 - 1) / 2
d

Приоритет (старшинство):
скобки
возведение в степень **
умножение и деление
сложение и вычитание

1

2

3

4

5

6

перенос на следующую строку

a = (c + b**5*3
- 1) / 2 * d

перенос внутри скобок разрешён

Слайд 29

Деление

Классическое деление:

a = 9; b = 6
x = 3 / 4 #

Деление Классическое деление: a = 9; b = 6 x = 3
= 0.75
x = a / b # = 1.5
x = -3 / 4 # = -0.75
x = -a / b # = -1.5

a = 9; b = 6
x = 3 // 4 # = 0
x = a // b # = 1
x = -3 // 4 # = -1
x = -a // b # = -2

Целочисленное деление (округление «вниз»!):

Слайд 30

Частное и остаток

// – деление нацело (остаток отбрасывается)
% – остаток от деления

t

Частное и остаток // – деление нацело (остаток отбрасывается) % – остаток
= 175
m = t // 60 # 2
s = t % 60 # 55

175 сек = 2 мин 55 сек

Слайд 31

Частное и остаток

n = 123
d = n // 10 # 12
k

Частное и остаток n = 123 d = n // 10 #
= n % 10 # 3

При делении на 10 нацело отбрасывается последняя цифра числа.

Остаток от деления на 10 – это последняя цифра числа.

Слайд 32

Операторы // и %

a = 1234
d = a % 10; print( d

Операторы // и % a = 1234 d = a % 10;
)
a = a // 10 # 123
d = a % 10; print( d )
a = a // 10 # 12
d = a % 10; print( d )
a = a // 10 # 1
d = a % 10; print( d )
a = a // 10 # 0

4

3

2

1

Слайд 33

Сокращенная запись операций

a += b # a = a + b
a

Сокращенная запись операций a += b # a = a + b
-= b # a = a - b
a *= b # a = a * b
a /= b # a = a / b
a //= b # a = a // b
a %= b # a = a % b

a += 1

увеличение на 1

Слайд 34

Форматный вывод

a = 1; b = 2; c = 3
print( a, b,

Форматный вывод a = 1; b = 2; c = 3 print(
c )

1 2 3

print("{}{}{}".format(a,b,c))

123

print("{}{:3}{:5}".format(a,b,c))

1 2 3

3

5

форматная строка

Слайд 35

Форматный вывод

a = 1; b = 2
print("{}+{}={}".format(a,b,c))

1+2=3

Форматный вывод a = 1; b = 2 print("{}+{}={}".format(a,b,c)) 1+2=3

Слайд 36

Задачи

«A»: Ввести число, обозначающее количество секунд. Вывести то же самое время в

Задачи «A»: Ввести число, обозначающее количество секунд. Вывести то же самое время
минутах и секундах.
Пример:
Введите число секунд: 175
2 мин. 55 с.
«B»: Ввести число, обозначающее количество секунд. Вывести то же самое время в часах, минутах и секундах.
Пример:
Введите число секунд: 8325
2 ч. 18 мин. 45 с

Слайд 37

Задачи

«С»: Занятия в школе начинаются в 8-30. Урок длится 45 минут, перерывы

Задачи «С»: Занятия в школе начинаются в 8-30. Урок длится 45 минут,
между уроками – 10 минут. Ввести номер урока и вывести время его окончания.
Пример:
Введите номер урока: 6
13-50

Слайд 38

print("x={:10.3f}".format(x))

Форматный вывод

x=12.345678
print("x={}".format(x))

x=12.345678

12.346

3

10

всего на число

в дробной части

print("x={:8.2f}".format(x))

12.34

print("x={:10.3f}".format(x)) Форматный вывод x=12.345678 print("x={}".format(x)) x=12.345678 12.346 3 10 всего на число

Слайд 39

Форматный вывод

12.34

12.3

print("x={:2.2f}".format(x))

print("x={:0.1f}".format(x))

минимально возможное

12.34

print("x={:.2f}".format(x))

Форматный вывод 12.34 12.3 print("x={:2.2f}".format(x)) print("x={:0.1f}".format(x)) минимально возможное 12.34 print("x={:.2f}".format(x))

Слайд 40

Научный формат чисел

x=123456789
print("x={:e}".format(x))

1.234568e+008

1,234568 ⋅108

x=0.0000123456789
print("x={:e}".format(x))

1.234568e-005

1,234568 ⋅10–5

Научный формат чисел x=123456789 print("x={:e}".format(x)) 1.234568e+008 1,234568 ⋅108 x=0.0000123456789 print("x={:e}".format(x)) 1.234568e-005 1,234568 ⋅10–5

Слайд 41

Операции с вещественными числами

x=1.6
print(int(x))

int – целая часть числа

1

x=-1.2
print(round(x))

-1

round – ближайшее целое

Операции с вещественными числами x=1.6 print(int(x)) int – целая часть числа 1
число

Слайд 42

Математические функции

import math
# квадратный корень
print( math.sqrt(25) )
r = 50 # радиус

Математические функции import math # квадратный корень print( math.sqrt(25) ) r =
окружности
print( 2*math.pi*r )
print( math.pi*r**2 )

загрузить модуль math

= подключить математические
функции

Слайд 43

Операции с вещественными числами

1/3 = 0,33333…

бесконечно много знаков

x = 1/2
y =

Операции с вещественными числами 1/3 = 0,33333… бесконечно много знаков x =
1/3
z = 5/6 # 5/6=1/2+1/3
print(x+y-z)

-1.110223e-016

Слайд 44

Задачи

«A»: Ввести число, обозначающее размер одной фотографии в Мбайтах. Определить, сколько фотографий

Задачи «A»: Ввести число, обозначающее размер одной фотографии в Мбайтах. Определить, сколько
поместится на флэш-карту объёмом 2 Гбайта.
Пример:
Размер фотографии в Мбайтах: 6.3
Поместится фотографий: 325.

Слайд 45

Задачи

«B»: Оцифровка звука выполняется в режиме стерео с частотой дискретизации 44,1 кГц

Задачи «B»: Оцифровка звука выполняется в режиме стерео с частотой дискретизации 44,1
и глубиной кодирования 24 бита. Ввести время записи в минутах и определить, сколько Мбайт нужно выделить для хранения полученного файла (округлить результат в большую сторону).
Пример:
Введите время записи в минутах: 10
Размер файла 152 Мбайт

Слайд 46

Задачи

«С»: Разведчики-математики для того, чтобы опознать своих, используют числовые пароли. Услышав число-пароль,

Задачи «С»: Разведчики-математики для того, чтобы опознать своих, используют числовые пароли. Услышав
разведчик должен возвести его в квадрат и сказать в ответ первую цифры дробной части полученного числа. Напишите программу, которая по полученному паролю (вещественному числу) вычисляет число-ответ.
Пример:
Введите пароль: 1.92
Ответ: 6
потому что 1,922 = 3,6864…, первая цифра дробной части – 6

Слайд 47

Случайные и псевдослучайные числа

Случайные явления
встретил слона – не встретил слона
жеребьёвка на

Случайные и псевдослучайные числа Случайные явления встретил слона – не встретил слона
соревнованиях
лотерея
случайная скорость (направление выстрела ) в игре

Случайные числа — это последовательность чисел, в которой невозможно предсказать следующее число, даже зная все предыдущие.

Слайд 48

Случайные и псевдослучайные числа

Псевдослучайные числа — похожи на случайные, но строятся по

Случайные и псевдослучайные числа Псевдослучайные числа — похожи на случайные, но строятся
формуле.

Xn+1= (a*Xn+b) % c # от 0 до c-1

следующее

предыдущее

Xn+1= (Xn+3) % 10 # от 0 до 9

X = 0

зерно

→ 3

→ 6

→ 9

→ 2

→ 5

→ 8

→ 0

зацикливание

8

→ 1

→ 4

→ 7

Слайд 49

Датчик случайных чисел

Целые числа на отрезке:

from random import randint
K = randint(1,

Датчик случайных чисел Целые числа на отрезке: from random import randint K
6) # отрезок [1,6]
L = randint(1, 6) # это уже другое число!

англ. integer – целый
random – случайный

подключить функцию randint из модуля random

K = random.randint(1, 6)

Слайд 50

Датчик случайных чисел

Вещественные числа:

from random import random, uniform
x = random() #

Датчик случайных чисел Вещественные числа: from random import random, uniform x =
полуинтервал [0,1)
y = 7*random() # полуинтервал [0,7)
z = 7*random()+5 # полуинтервал [5,12)

from random import uniform
x = uniform(1.5, 2.8) # [1,5; 2,8]
y = uniform(5.25, 12.75) # [5,25; 12,75]

Вещественные числа на отрезке [a, b]:

Слайд 51

Задачи

«A»: В игре «Русское лото» из мешка случайным образом выбираются бочонки, на

Задачи «A»: В игре «Русское лото» из мешка случайным образом выбираются бочонки,
каждом из которых написано число от 1 до 90. Напишите программу, которая выводит наугад первые 5 выигрышных номеров.
«B»: + Доработайте программу «Русское лото» так, чтобы все 5 значений гарантированно были бы разными (используйте разные диапазоны).

Слайд 52

Задачи

«С»: + Игральный кубик бросается три раза (выпадает три случайных значения). Из

Задачи «С»: + Игральный кубик бросается три раза (выпадает три случайных значения).
этих чисел составляется целое число, программа должна найти его квадрат.
Пример:
Выпало очков:
1 2 3
Число 123
Его квадрат 15129

Слайд 53

Задачи

«D»: + Получить случайное трёхзначное число и вывести в столбик его отдельные

Задачи «D»: + Получить случайное трёхзначное число и вывести в столбик его
цифры.
Пример:
Получено число 123
сотни: 1
десятки: 2
единицы: 3

Слайд 54

Программирование (Python)

§ 19. Ветвления

Программирование (Python) § 19. Ветвления

Слайд 55

Выбор наибольшего из двух чисел

Задача: изменить порядок действий в зависимости от выполнения

Выбор наибольшего из двух чисел Задача: изменить порядок действий в зависимости от
некоторого условия.

полная форма ветвления

if a > b:
M = a
else:
M = b

Слайд 56

Вариант 1. Программа


print("Введите два целых числа")
a = int(input())
b = int(input()) if a

Вариант 1. Программа print("Введите два целых числа") a = int(input()) b =
> b: else: print("Наибольшее число", M)

M = a

M = b

полная форма условного оператора

M = max(a, b)

Решение в стиле Python:

M = a if a > b else b

Слайд 57

Выбор наибольшего из двух чисел-2

неполная форма ветвления

Выбор наибольшего из двух чисел-2 неполная форма ветвления

Слайд 58

Вариант 2. Программа


print("Введите два целых числа")
a = int(input())
b = int(input())
M = a

Вариант 2. Программа print("Введите два целых числа") a = int(input()) b =
if b > a: print("Наибольшее число", M)

M = b

неполная форма условного оператора

Слайд 59

Примеры

if a < b:
M = a
if b < a:
M

Примеры if a M = a if b M = b Поиск минимального:
= b

Поиск минимального:

Слайд 60

Примеры

if a < b:
c = a
a = b
b

Примеры if a c = a a = b b = c
= c

if a < b:
c = a
a = b
b = c

4

6

?

4

6

4

a

b

3

2

1

c

a, b = b, a

Решение в стиле Python:

Слайд 61

В других языках программирования

if a < b then begin
c:= a;

В других языках программирования if a c:= a; a:= b; b:= c;
a:= b;
b:= c;
end;

Паскаль:

С:

if (a < b) {
c = a;
a = b;
b = c;
}

Слайд 62

Знаки отношений

>

<

>=

<=

==

!=

больше, меньше

больше или равно

меньше или равно

равно

не равно

Знаки отношений > >= == != больше, меньше больше или равно меньше

Слайд 63

Вложенные условные операторы

if a > b:
print("Андрей старше")
else:

if a == b:

Вложенные условные операторы if a > b: print("Андрей старше") else: if a
print("Одного возраста")
else:
print("Борис старше")

вложенный условный оператор

Задача: в переменных a и b записаны возрасты Андрея и Бориса. Кто из них старше?

Слайд 64

Каскадное ветвление

if a > b:
print("Андрей старше")
elif a == b:
print("Одного

Каскадное ветвление if a > b: print("Андрей старше") elif a == b:
возраста")
else:
print("Борис старше")

Слайд 65

Каскадное ветвление

cost = 1500
if cost < 1000:
print ( "Скидок нет."

Каскадное ветвление cost = 1500 if cost print ( "Скидок нет." )
)
elif cost < 2000:
print ( "Скидка 2%." )
elif cost < 5000:
print ( "Скидка 5%." )
else:
print ( "Скидка 10%." )

первое сработавшее условие

Скидка 2%.

Слайд 66

Задачи (без функций min и max!)

«A»: Ввести два целых числа, найти наибольшее

Задачи (без функций min и max!) «A»: Ввести два целых числа, найти
и наименьшее из них.
Пример:
Введите два целых числа:
1 5
Наибольшее число 5
Наименьшее число 1

«B»: Ввести четыре целых числа, найти наибольшее из них.
Пример:
Введите четыре целых числа:
1 5 4 3
Наибольшее число 5

Слайд 67

Задачи

«C»: Ввести последовательно возраст Антона, Бориса и Виктора. Определить, кто из них

Задачи «C»: Ввести последовательно возраст Антона, Бориса и Виктора. Определить, кто из
старше.
Пример:
Возраст Антона: 15
Возраст Бориса: 17
Возраст Виктора: 16
Ответ: Борис старше всех.
Пример:
Возраст Антона: 17
Возраст Бориса: 17
Возраст Виктора: 16
Ответ: Антон и Борис старше Виктора.

Слайд 68

Сложные условия

Задача. Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести

Сложные условия Задача. Фирма набирает сотрудников от 25 до 40 лет включительно.
возраст человека и определить, подходит ли он фирме (вывести ответ "подходит" или "не подходит").
Особенность: надо проверить, выполняются ли два условия одновременно:
возраст ≥ 25 возраст ≤ 40

Слайд 69

Плохое решение


print("Введите ваш возраст")
x = int(input())
if x >= 25:
if x <=

Плохое решение print("Введите ваш возраст") x = int(input()) if x >= 25:
40:
print("Подходит!")
else:
print("Не подходит.")
else:
print("Не подходит.")

вложенный условный оператор

Слайд 70

Хорошее решение (операция «И»)

if :
print("подходит")
else:
print("не подходит")

and

v >= 25 and v

Хорошее решение (операция «И») if : print("подходит") else: print("не подходит") and v
<= 40

сложное условие

«И»: одновременное выполнение всех условий!

Задача: набор сотрудников в возрасте 25-40 лет (включительно).

Слайд 71

Примеры

Задача. Вывести "Да", если число в переменной a – двузначное.

if 10 <=

Примеры Задача. Вывести "Да", если число в переменной a – двузначное. if
a and a <= 99:
print("Да")

Задача. Вывести "Да", если число в переменной a – двузначное и делится на 7.

if 10 <= a and a <= 99 and (a % 7)==0:
print("Да")

Слайд 72

Сложные условия: «ИЛИ»

Задача. Самолёт летает по понедельникам и четвергам. Ввести номер дня

Сложные условия: «ИЛИ» Задача. Самолёт летает по понедельникам и четвергам. Ввести номер
недели и определить, летает ли в этот день самолёт.
Особенность: надо проверить, выполняется ли одно из двух условий:
день = 1 день = 4

if d == 1 or d == 4 :
print("Летает")
else:
print("Не летает")

сложное условие

d == 1 or d == 4

or

«ИЛИ»: выполнение хотя бы одного из двух условий!

Слайд 73

Ещё пример

Задача. Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести

Ещё пример Задача. Фирма набирает сотрудников от 25 до 40 лет включительно.
возраст человека и определить, подходит ли он фирме (вывести ответ "подходит" или "не подходит"). Использовать «ИЛИ».

if :
print("не подходит")
else:
print("подходит")

v < 25 or v > 40

Слайд 74

Сложные условия: «НЕ»

if not(a < b):
print("Cтарт!")

not

«НЕ»: если выполняется обратное условие

if a

Сложные условия: «НЕ» if not(a print("Cтарт!") not «НЕ»: если выполняется обратное условие
>= b:
print("Cтарт!")

Слайд 75

Простые и сложные условия

Простые условия (отношения)
< <= > >= == !=
Сложное

Простые и сложные условия Простые условия (отношения) >= == != Сложное условие
условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических операций:
and – одновременное выполнение условий
x >= 25 and x <= 40
or – выполнение хотя бы одного из условий
x <= 25 or x >= 40
not – отрицание, обратное условие
not (x > 25) ⇔ ???

равно

не равно

x <= 25

Слайд 76

Порядок выполнения операций

выражения в скобках
<, <=, >, >=, =, !=
not
and
or

1

if not

Порядок выполнения операций выражения в скобках , >=, =, != not and
a > 2 or c != 5 and b < a:
...

4

2

3

5

6

Слайд 77

Сложные условия

Истинно или ложно при a = 2; b = 3; c

Сложные условия Истинно или ложно при a = 2; b = 3;
= 4
not (a > b)
a < b and b < c
a > c or b > c
a < b and b > c
a > c and b > d
not (a >= b) or c = d
a >= b or not (c < b)
a > c or b > c or b > a

Да

Да

Нет

Да

Да

Нет

Нет

Да

Слайд 78

Задачи

«A»: Напишите программу, которая получает три числа - рост трёх спортсменов, и

Задачи «A»: Напишите программу, которая получает три числа - рост трёх спортсменов,
выводит сообщение «По росту.», если они стоят по возрастанию роста, или сообщение «Не по росту!», если они стоят не по росту.
Пример:
Введите рост трёх спортсменов:
165 170 172
По росту.
Пример:
Введите рост трёх спортсменов:
175 170 172
Не по росту!

Слайд 79

Задачи

«B»: Напишите программу, которая получает номер месяца и выводит соответствующее ему время

Задачи «B»: Напишите программу, которая получает номер месяца и выводит соответствующее ему
года или сообщение об ошибке.
Пример:
Введите номер месяца:
5
Весна.
Пример:
Введите номер месяца:
15
Неверный номер месяца.

Слайд 80

Задачи

«C»: Напишите программу, которая получает возраст человека (целое число, не превышающее 120)

Задачи «C»: Напишите программу, которая получает возраст человека (целое число, не превышающее
и выводит этот возраст со словом «год», «года» или «лет». Например, «21 год», «22 года», «25 лет».
Пример:
Введите возраст: 18
Вам 18 лет.
Пример:
Введите возраст: 21
Вам 21 год.
Пример:
Введите возраст: 22
Вам 22 года.

Слайд 81

Логические переменные

b = True
b = False
type(b)

только два возможных значения

Пример:

freeDay = (d==6 or

Логические переменные b = True b = False type(b) только два возможных
d==7)
...
if not freeDay:
print("Рабочий день.")
else:
print("Выходной!")


логическая (булевская) переменная

Джордж Буль

Слайд 82

Задачи

«A»: Напишите программу, которая получает с клавиатуры целое число и записывает в

Задачи «A»: Напишите программу, которая получает с клавиатуры целое число и записывает
логическую переменную значение «да» (True), если это число трёхзначное. После этого на экран выводится ответ на вопрос: «Верно ли, что было получено трёхзначное число?».
Пример:
Введите число: 165
Ответ: да.
Пример:
Введите число: 1651
Ответ: нет.

Слайд 83

Задачи

«B»: Напишите программу, которая получает с клавиатуры трёхзначное число и записывает в

Задачи «B»: Напишите программу, которая получает с клавиатуры трёхзначное число и записывает
логическую переменную значение «да» (True), если это число – палиндром, то есть читается одинаково слева направо и справа налево. После этого на экран выводится ответ на вопрос: «Верно ли, что введённое число – палиндром?».
Пример:
Введите число: 165
Ответ: нет.
Пример:
Введите число: 656
Ответ: да.

Слайд 84

Задачи

«С»: Напишите программу, которая получает с клавиатуры трёхзначное число и записывает в

Задачи «С»: Напишите программу, которая получает с клавиатуры трёхзначное число и записывает
логическую переменную значение «да» (True), если это все его цифры одинаковы. После этого на экран выводится ответ на вопрос: «Верно ли, что все цифры введённого числа одинаковы?»
Пример:
Введите число: 161
Ответ: нет.
Пример:
Введите число: 555
Ответ: да.

Слайд 85

Экспертная система

Экспертная система — это компьютерная программа, задача которой — заменить человека-эксперта

Экспертная система Экспертная система — это компьютерная программа, задача которой — заменить
при принятии решений в сложной ситуации.

База знаний = факты + правила вывода:

если у животного есть перья, то это птица;
если животное кормит детенышей молоком, то это — млекопитающее;
если животное — млекопитающее и ест мясо, то это — хищник.

Диалог:
Это животное кормит детей молоком? Нет
Это животное имеет перья? Да
Это птица.

Слайд 86

Дерево решений

хищник

?

птица

да

да

нет

нет

млекопитающее

Кормит детей молоком?

Имеет перья?

Ест мясо?

?

да

нет

Дерево решений хищник ? птица да да нет нет млекопитающее Кормит детей

Слайд 87

Программирование экспертной системы

Ответы пользователя: да и нет – символьные строки.

ans = input("Кормит

Программирование экспертной системы Ответы пользователя: да и нет – символьные строки. ans
детей молоком? ")
if ans == "да":
... # вариант 1
else:
... # вариант 2

# вариант 1
print("Млекопитающее.")
ans = input("Ест мясо? ")
if ans == "да":
print("Хищник.")
else:
print("Не знаю.")

Слайд 88

Заглавные и строчные буквы

if ans == "да":
...

не сработает на "Да"

if

Заглавные и строчные буквы if ans == "да": ... не сработает на
ans == "да" or ans == "Да":
...

if ans.lower() == "да":
...

Ещё лучше:

преобразовать все заглавные в строчные

if ans.upper() == "ДА":
...

Слайд 89

Программирование (Python)

§ 23. Отладка программ

Программирование (Python) § 23. Отладка программ

Слайд 90

Виды ошибок

Синтаксические ошибки – нарушение правил записи операторов языка программирования.

Обнаруживаются транслятором.

Логические ошибки

Виды ошибок Синтаксические ошибки – нарушение правил записи операторов языка программирования. Обнаруживаются
– неверно составленный алгоритм.

Отказ (ошибка времени выполнения) – аварийная ситуация во время выполнения программы.

Отладка – поиск и исправление ошибок в программе.

Слайд 91

Пример отладки программы

from math import sqrt
print("Введите a, b, c: ")
a = float(input())
b

Пример отладки программы from math import sqrt print("Введите a, b, c: ")
= float(input())
c = float(input())
D = b*b - 4*a*a
x1 = (-b+sqrt(D))/2*a
x2 = (-b-sqrt(D))/2*a
print("x1=", x1, " x2=", x2, sep="")

Программа решения квадратного уравнения

float – преобразовать в вещественное число

Слайд 92

Тестирование

Тест 1. a = 1, b = 2, c = 1.

x1=-1.0 x2=-1.0

x1=-1.0

Тестирование Тест 1. a = 1, b = 2, c = 1.
x2=-1.0

Реальность:

Тест 2. a = 1, b = – 5, c = 6.

x1=3.0 x2=2.0

x1=4.791 x2=0.209

Ожидание:

Найден вариант, когда программа работает неверно. Ошибка воспроизводится!

Возможные причины:
неверный ввод данных
неверное вычисление дискриминанта
неверное вычисление корней
неверный вывод результатов

Слайд 93

Отладочная печать

a = float(input())
b = float(input())
c = float(input())
print(a, b, c)
D = b*b

Отладочная печать a = float(input()) b = float(input()) c = float(input()) print(a,
- 4*a*a
print("D=", D)
...

print(a, b, c)

print("D=", D)

Идея: выводить все промежуточные результаты.

Слайд 94

Отладочная печать

Введите a, b, c:
1
-5
6
1.0 -5.0 6.0
D= 21.0

Результат:

D= 21.0

Идея: выводить

Отладочная печать Введите a, b, c: 1 -5 6 1.0 -5.0 6.0
все промежуточные результаты.

Слайд 95

Отладка программы

Тест 1. a = 1, b = 2, c = 1.

x1=-1.0

Отладка программы Тест 1. a = 1, b = 2, c =
x2=-1.0

x1=-1.0 x2=-1.0

Реальность:

Тест 2. a = 1, b = – 5, c = 6.

x1=3.0 x2=2.0

Ожидание:

x1=3.0 x2=2.0

Тест 3. a = 8, b = – 6, c = 1.

x1=0.5 x2=0.25

x1=32.0 x2=16.0

x1 = (-b+sqrt(D))/2*a
x2 = (-b-sqrt(D))/2*a

(2*a)

(2*a)

Слайд 96

Задачи

«A»: Загрузите программу, которая должна вычислять сумму цифр трёхзначного числа:
N = input(int("N

Задачи «A»: Загрузите программу, которая должна вычислять сумму цифр трёхзначного числа: N
= "))
d0 = N % 10
d1 = N % 100
d2 = N // 100
d0 + d2 = s
print(s)
Выполните отладку программы:
исправьте синтаксические ошибки
определите ситуации, когда она работает неверно
исправьте логические ошибки.

Слайд 97

Задачи

«B»: Доработайте программу из п. А так, чтобы она правильно работала с

Задачи «B»: Доработайте программу из п. А так, чтобы она правильно работала
отрицательными трёхзначными числами: при вводе числа «–123» программа должна выдавать ответ 6.

Слайд 98

Задачи

«С»: Загрузите программу, которая должна вычислять наибольшее из трёх чисел:
a = input("a

Задачи «С»: Загрузите программу, которая должна вычислять наибольшее из трёх чисел: a
= ")
b = int("b = ")
c = input("c = ")
if a > b: M = a
else M = b
if c > b M = b
else: M = c
input(M)
Выполните отладку программы:
исправьте синтаксические ошибки
определите ситуации, когда она работает неверно
исправьте логические ошибки.

Слайд 99

Программирование (Python)

§ 20. Программирование циклических алгоритмов

Программирование (Python) § 20. Программирование циклических алгоритмов

Слайд 100

Зачем нужен цикл?

Задача. Вывести 5 раз «Привет!».

print("Привет")
print("Привет")
print("Привет")
print("Привет")
print("Привет")

Цикл «N раз»:

сделай 5 раз
print("Привет")

такого

Зачем нужен цикл? Задача. Вывести 5 раз «Привет!». print("Привет") print("Привет") print("Привет") print("Привет")
оператора нет в Python!

Слайд 101

Как работает цикл?

переменная-счётчик

счётчик = 0
пока счётчик < 5
print("Привет")
счётчик = счётчик

Как работает цикл? переменная-счётчик счётчик = 0 пока счётчик print("Привет") счётчик =
+ 1

ещё не делали

счётчик += 1

c = 0
while c < 5:
print("Привет")
c += 1

сделали ещё раз

Слайд 102

c = 5
while c > 0:
print("Привет")
c -= 1

Ещё один вариант

счётчик

c = 5 while c > 0: print("Привет") c -= 1 Ещё
= 5
пока счётчик > ???
print("Привет")
счётчик = счётчик ???

Идея: запоминать, сколько шагов осталось.

0

- 1

счётчик -= 1

Слайд 103

Цикл с предусловием

условие проверяется при входе в цикл
как только условие становится ложным,

Цикл с предусловием условие проверяется при входе в цикл как только условие
работа цикла заканчивается
если условие ложно в самом начале, цикл не выполняется ни разу

while условие:
...

тело цикла

while True:
...

бесконечный цикл (зацикливание)

Слайд 104

Сколько раз выполняется цикл?

a = 4; b = 6
while a < b:

Сколько раз выполняется цикл? a = 4; b = 6 while a
a += 1

2 раза
a = 6

a = 4; b = 6
while a < b: a += b

1 раз
a = 10

a = 4; b = 6
while a > b: a += 1

0 раз
a = 4

a = 4; b = 6
while a < b: b = a - b

1 раз
b = -2

a = 4; b = 6
while a < b: a -= 1

зацикливание

Слайд 105

Сумма цифр числа

Задача. Вычислить сумму цифр введённого числа.
123 → 1 +

Сумма цифр числа Задача. Вычислить сумму цифр введённого числа. 123 → 1
2 + 3 = 6

Выделить последнюю цифру числа в переменной N:

d = N % 10

Отбросить последнюю цифру числа в переменной N:

N = N // 10

123 → 3

123 → 12

Добавить к переменной sum значение переменной d:

sum = sum + d

sum = 6 → 6 + 4 = 10
d = 4

sum += d

Слайд 106

Сумма цифр числа

выделяем последнюю цифру числа (%)
увеличиваем сумму на значение цифры (sum+=d)
отсекаем

Сумма цифр числа выделяем последнюю цифру числа (%) увеличиваем сумму на значение
последнюю цифру числа (//)

начальные значения

Слайд 107

Сумма цифр числа

начало

конец

нет

да

N != 0?

sum= 0

d = N % 10
sum += d
N

Сумма цифр числа начало конец нет да N != 0? sum= 0
= N // 10

обнулить сумму

ввод N

выполнять "пока N != 0"

вывод sum

Слайд 108

Сумма цифр числа

N = int(input("Введите целое число"))
sum = 0
print("Сумма цифр числа", N,

Сумма цифр числа N = int(input("Введите целое число")) sum = 0 print("Сумма
" равна", sum)

while N != 0:
d = N % 10
sum += d
N = N // 10

; N1= N

N1,

Слайд 109

Задачи

«A»: Напишите программу, которая получает с клавиатуры количество повторений и выводит столько

Задачи «A»: Напишите программу, которая получает с клавиатуры количество повторений и выводит
же раз какое-нибудь сообщение.
Пример:
Сколько раз повторить? 3
Привет!
Привет!
Привет!
«B»: Напишите программу, которая получает с клавиатуры натуральное число и определяет, сколько раз в его десятичной записи встречается цифра 1.
Пример:
Введите число? 311
Единиц: 2

Слайд 110

Задачи

«C»: Напишите программу, которая получает с клавиатуры натуральное число и находит наибольшую

Задачи «C»: Напишите программу, которая получает с клавиатуры натуральное число и находит
цифру в его десятичной записи.
Пример:
Введите число: 311
Наибольшая цифра: 3
«D»: Напишите программу, которая получает с клавиатуры натуральное число и определяет, есть ли в его десятичной записи одинаковые цифры, стоящие рядом.
Пример:
Введите число: 553 Введите число: 535
Ответ: да. Ответ: нет.

Слайд 111

Алгоритм Евклида

Задача. Найти наибольший общий делитель (НОД) двух натуральных чисел.

Евклид
(365-300 до. н.

Алгоритм Евклида Задача. Найти наибольший общий делитель (НОД) двух натуральных чисел. Евклид
э.)

НОД(a,b)= НОД(a-b, b)
= НОД(a, b-a)

Заменяем большее из двух чисел разностью большего и меньшего до тех пор, пока они не станут равны. Это и есть НОД.

НОД (14, 21) = НОД (14, 21-14) = НОД (14, 7)

НОД (1998, 2) = НОД (1996, 2) = … = 2

Пример:

много шагов при большой разнице чисел:

= НОД (7, 7) = 7

Слайд 112

Алгоритм Евклида

a = b?

да

нет

a > b?

да

a=a-b

нет

b=b-a

начало

конец

Алгоритм Евклида a = b? да нет a > b? да a=a-b нет b=b-a начало конец

Слайд 113

Алгоритм Евклида

while a != b:
if a > b:
a =

Алгоритм Евклида while a != b: if a > b: a =
a - b
else:
b = b - a

a -= b

b -= a

Слайд 114

Модифицированный алгоритм Евклида

НОД(a,b)= НОД(a % b, b)
= НОД(a, b %

Модифицированный алгоритм Евклида НОД(a,b)= НОД(a % b, b) = НОД(a, b %
a)

Заменяем большее из двух чисел остатком от деления большего на меньшее до тех пор, пока меньшее не станет равно нулю. Тогда большее — это НОД.

НОД (14, 21) = НОД (14, 7) = НОД (0, 7) = 7

Пример:

Слайд 115

Модифицированный алгоритм

while a != 0 and b != 0:
if a >

Модифицированный алгоритм while a != 0 and b != 0: if a
b:
a = a % b
else:
b = b % a

if a != 0:
print(a)
else:
print(b)

print( ??? )

a+b

Слайд 116

В стиле Python

while b!=0: a, b = b, a % b print(a)

заменить

В стиле Python while b!=0: a, b = b, a % b
a на b и b на (a % b)

Слайд 117

В других языках программирования

С++:

while (a!=0 && b!=0)
{
if (a >

В других языках программирования С++: while (a!=0 && b!=0) { if (a
b)
a = a % b;
else
b = b % a;
}

Паскаль:

while (a<>0) and
(b<>0) do
if a>b then
a:= a mod b
else
b:= b mod a;

Слайд 118

Задачи

«A»: Ввести с клавиатуры два натуральных числа и найти их НОД с

Задачи «A»: Ввести с клавиатуры два натуральных числа и найти их НОД
помощью алгоритма Евклида.
Пример:
Введите два числа:
21 14
НОД(21,14)=7

«B»: Ввести с клавиатуры два натуральных числа и найти их НОД с помощью модифицированного алгоритма Евклида. Заполните таблицу:

Слайд 119

Задачи

«C»: Ввести с клавиатуры два натуральных числа и сравнить количество шагов цикла

Задачи «C»: Ввести с клавиатуры два натуральных числа и сравнить количество шагов
для вычисления их НОД с помощью обычного и модифицированного алгоритмов Евклида.
Пример:
Введите два числа:
1998 2
НОД(1998,2)=2
Обычный алгоритм: 998
Модифицированный: 1

Слайд 120

Обработка потока данных

Задача. На вход программы поступает поток данных — последовательность целых

Обработка потока данных Задача. На вход программы поступает поток данных — последовательность
чисел, которая заканчивается нулём. Требуется найти сумму элементов этой последовательности.

while x!=0:
# добавить x к сумме
# x = следующее число

Слайд 121

Обработка потока данных

Sum = 0
x = int(input()) # первое число
while x!=0:
Sum

Обработка потока данных Sum = 0 x = int(input()) # первое число
+= x
x = int(input()) # ввести следующее
print("Сумма ", Sum)

Слайд 122

Задачи

«A»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём.

Задачи «A»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается
Определить, сколько получено чисел, которые делятся на 3.
«B»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Определить, сколько получено двузначных чисел, которые заканчиваются на 3.
«C»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Найти максимальное из введённых чётных чисел.

Слайд 123

Задачи на циклы (дополнительные)

«A»: Напишите программу, которая предлагает ввести число-пароль и не

Задачи на циклы (дополнительные) «A»: Напишите программу, которая предлагает ввести число-пароль и
переходит к выполнению основной части, пока не введён правильный пароль. Основная часть – вывод на экран «секретных сведений».
«B»: Напишите программу, которая получает с клавиатуры натуральное число, которое больше 1, и определяет, простое оно или нет. Для этого нужно делить число на все натуральные числа, начиная с 2, пока не получится деление без остатка.
«C»: Напишите программу, которая получает с клавиатуры два целых числа и вычисляет их произведение, используя только операции сложения.

Слайд 124

Задачи

«D»: Напишите программу, которая получает с клавиатуры натуральное число и вычисляет целый

Задачи «D»: Напишите программу, которая получает с клавиатуры натуральное число и вычисляет
квадратный корень из него – наибольшее число, квадрат которого не больше данного числа.

Слайд 125

Цикл по переменной

Задача. Вывести на экран степени числа 2 от 20 до

Цикл по переменной Задача. Вывести на экран степени числа 2 от 20
210.

k = 0
N = 1
while k <= 10 :
print(N)
N = N*2
k = k + 1

Идея: собрать всё вместе.

N = 1
for k in range(11):
print(N)
N = N*2

k in range(11)

сделать 11 раз

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

с нуля!

не включая 11!

Слайд 126

Цикл по переменной

for k in range(11):
print(k)

0
1
2

10

Начать на с 0, а с

Цикл по переменной for k in range(11): print(k) 0 1 2 …
1:

for k in range( 1 ,11):
print(k)

1

for k in [0,1,2,3,4,5,6,7,8,9,10]:
print(k)

for k in [1,2,3,4,5,6,7,8,9,10]:
print(k)

начальное значение

Слайд 127

Цикл по переменной

Задача. Найти сумму чисел от 1 до 1000.

S = 0
for

Цикл по переменной Задача. Найти сумму чисел от 1 до 1000. S
i in range(1,1001):
S += i

Задача. Вывести квадраты чисел от 10 до 1 по убыванию.

for k in range(10,0,–1):
print(k*k)

шаг

не включая 0

for k in [10,9,8,7,6,5,4,3,2,1]:
print(k*k)

Слайд 128

Цикл по переменной

Задача. Найти сумму чётных чисел от 2 до 1000.

S =

Цикл по переменной Задача. Найти сумму чётных чисел от 2 до 1000.
0
for i in range(2,1001):
if i % 2 == 0:
S += i

S = 0
for i in range(2,1001, 2 ):
S += i

2

шаг

Слайд 129

В других языках программирования

С:

int S, i;
S = 0;
for (i=1; i<=1000; i++)
S

В других языках программирования С: int S, i; S = 0; for
+= i;

Паскаль:

S:= 0;
for i=1 to 1000 do
S:= S + i;

шаг только 1 или –1 (downto)

i=i+1;

S=S+i;

Слайд 130

Задачи

«A»: Напишите программу, которая находит количество четырёхзначных чисел, которые делятся на 7.
«B»:

Задачи «A»: Напишите программу, которая находит количество четырёхзначных чисел, которые делятся на
Ипполит задумал трёхзначное число, которое при делении на 15 даёт в остатке 11, а при делении на 11 даёт в остатке 9. Напишите программу, которая находит все такие числа.
«C»: С клавиатуры вводится натуральное число N. Программа должна найти факториал этого числа (обозначается как N!) – произведение всех натуральных чисел от 1 до N. Например,
5! = 1 • 2 • 3 • 4 • 5 = 120.

Слайд 131

Задачи

«D»: Натуральное число называется числом Армстронга, если сумма цифр числа, возведенных в

Задачи «D»: Натуральное число называется числом Армстронга, если сумма цифр числа, возведенных
N-ную степень (где N – количество цифр в числе) равна самому числу. Например, 153 = 13 + 53 + 33. Найдите все трёхзначные Армстронга.

Слайд 132

Программирование (Python)

§ 21. Массивы

Программирование (Python) § 21. Массивы

Слайд 133

Что такое массив?

Массив – это группа переменных одного типа, расположенных в памяти

Что такое массив? Массив – это группа переменных одного типа, расположенных в
рядом (в соседних ячейках) и имеющих общее имя.

Надо:

выделять память
записывать данные в нужную ячейку
читать данные из ячейки

Слайд 134

Обращение к элементу массива

A

массив

2

15

НОМЕР элемента массива
(ИНДЕКС)

A[0]

A[1]

A[2]

A[3]

A[4]

ЗНАЧЕНИЕ элемента массива

Индекс элемента — это значение,

Обращение к элементу массива A массив 2 15 НОМЕР элемента массива (ИНДЕКС)
которое указывает на конкретный элемент массива.

Слайд 135

Обращение к элементу массива

i = 1
A[2] = A[i] + 2*A[i-1] + A[2*i+1]
print(

Обращение к элементу массива i = 1 A[2] = A[i] + 2*A[i-1]
A[2]+A[4] )

A[2] = A[1] + 2*A[0] + A[3]
print( A[2]+A[4] )

101

152

A[2]

ИНДЕКС элемента массива: 2

ЗНАЧЕНИЕ элемента массива

Слайд 136

Создание массива

A = [11, 22, 35, 41, 53]

A = [11, 22] +

Создание массива A = [11, 22, 35, 41, 53] A = [11,
[35, 41] + [53]

A = [11]*5

Слайд 137

Что неверно?

A = [1, 2, 3, 4, 5]
x = 1
print( A[x-8] )
A[x+4]

Что неверно? A = [1, 2, 3, 4, 5] x = 1
= A[x-1] + A[2*x]

print( A[-7] )
A[5] = A[0] + A[2]

Выход за границы массива — это обращение к элементу с индексом, который не существует в массиве.

Слайд 138

Перебор элементов массива

Перебор элементов: просматриваем все элементы массива и, если нужно, выполняем

Перебор элементов массива Перебор элементов: просматриваем все элементы массива и, если нужно,
с каждым из них некоторую операцию.

N = 10
A = [0]*N # память уже выделена

for i in range(N):
# здесь работаем с A[i]

Слайд 139

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

for i in range(N):
A[i] = i

В развёрнутом виде

A[0] = 0
A[1]

Заполнение массива for i in range(N): A[i] = i В развёрнутом виде
= 1
A[2] = 2
...
A[N-1] = N-1

0

1

2

N-1

[0, 2, 3, …, N-1]

В стиле Python:

A = [ i for i in range(N) ]

i

i

Слайд 140

X = N

Заполнение массива в обратном порядке

A[0] = N
A[1] = N-1
A[2] =

X = N Заполнение массива в обратном порядке A[0] = N A[1]
N-2
...
A[N-1] = 1

for i in range(N):
A[i] = X

X = X - 1

X = N, N-1, …, 2, 1

начальное значение

уменьшение на 1

Слайд 141

Заполнение массива в обратном порядке

A[i] = X

–1

+1

i + X =

Заполнение массива в обратном порядке A[i] = X –1 +1 i +
N

X = N - i

for i in range(N):
A[i] = N – i

В стиле Python:

A = [ N-i
for i in range(N) ]

Слайд 142

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

for i in range(N):
print( A[i] )

или так:

в столбик

Весь

Вывод массива на экран for i in range(N): print( A[i] ) или
массив сразу:

print( A )

[1,2,3,4,5]

По одному элементу:

for x in A:
print( x )

для всех элементов в массиве A

for x in A:
print( x, end=" " )

пробел между элементами

Слайд 143

Вывод массива на экран (Python)

print ( *A )

разбить список на элементы

print (1,

Вывод массива на экран (Python) print ( *A ) разбить список на
2, 3, 4, 5)

[1,2,3,4,5]

1 2 3 4 5

Слайд 144

Ввод с клавиатуры

for i in range(N):
s = "A[" + str(i) +

Ввод с клавиатуры for i in range(N): s = "A[" + str(i)
"]="
A[i] = int(input(s))

A[0] =
A[1] =
A[2] =
A[3] =
A[4] =

5
12
34
56
13

for i in range(N):
A[i] = int(input())

С подсказкой для ввода:

или так:

A = [int(input()) 
for i in range(N)]

Слайд 145

Ввод с клавиатуры (Python)

Ввод всех чисел в одной строке:

data = input() #

Ввод с клавиатуры (Python) Ввод всех чисел в одной строке: data =
"1 2 3 4 5"
s = data.split() #["1","2","3","4","5"]
A = [ int(x) for x in s ]
# [1,2,3,4,5]

int(x)

или так:

A = [int(x) for x in input().split()]

Слайд 146

В других языках программирования

const N = 10;
var A: array[0..N-1] of integer;
...
for i:=0

В других языках программирования const N = 10; var A: array[0..N-1] of
to N-1 do
A[i] = i;
for i:=0 to N-1 do
write(A[i], ' ');

Паскаль:

объявление массива

Слайд 147

В других языках программирования

С++:

int A[N], i;
for (i = 0; i < N;

В других языках программирования С++: int A[N], i; for (i = 0;
i++)
A[i] = i;
for (i = 0; i < N; i++)
cout << A[i] << " ";

Слайд 148

Задачи

«A»: а) Заполните все элементы массива из 10 элементов значением X ,

Задачи «A»: а) Заполните все элементы массива из 10 элементов значением X
введённым с клавиатуры.
б) Заполните массив из 10 элементов последовательными натуральными числами, начиная с X (значение X введите с клавиатуры).

«B»: а) Заполните массив из 10 элементов натуральными числами в порядке убывания. С клавиатуры вводится значение X. Последний элемент должен быть равен X, предпоследний равен X+1 и т.д.
б) Заполните массив из 10 элементов степенями числа 2 (от 21 до 2N), так чтобы первый элемент был равен 2, следующий – 4, следующий – 8 и т.д.

Слайд 149

Задачи

«C»: а) Заполните массив из 10 элементов степенями числа 2, начиная с

Задачи «C»: а) Заполните массив из 10 элементов степенями числа 2, начиная
конца, так чтобы последний элемент массива был равен 1, а каждый предыдущий был в 2 раза больше следующего.
б) С клавиатуры вводится целое число X. Заполните массив из 11 элементов целыми числами, так чтобы средний элемент массива был равен X, слева от него элементы стояли по возрастанию, а справа – по убыванию. Соседние элементы отличаются на единицу. Например, при X = 3 массив из 5 элементов заполняется так: 1 2 3 2 1.

Слайд 150

Заполнение случайными числами

from random import randint
N = 10 # размер массива
A =

Заполнение случайными числами from random import randint N = 10 # размер
[0]*N # выделить память
for i in range(N):
A[i] = randint(20,100)

В краткой форме:

from random import randint
N = 10
A = [ randint(20,100)
for i in range(N) ]

из библиотеки (модуля) random

взять функцию randint

Слайд 151

Обработка элементов массива

N = 10
A = [0]*N # память уже выделена

for i

Обработка элементов массива N = 10 A = [0]*N # память уже
in range(N):
# здесь работаем с A[i]

Вывести на экран в столбик:

for i in range(N):
???

print( A[i] )

Вывести на экран в строчку:

for i in range(N):
???

print( A[i], end = " " )

print( *A )

Слайд 152

for i in range(N):
???

for i in range(N):
???

Обработка элементов

for i in range(N): ??? for i in range(N): ??? Обработка элементов
массива

Вывести числа, на 1 большие, чем A[i]:

print( A[i]%10 )

Вывести последние цифры:

print( A[i]+1 )

Слайд 153

Обработка элементов массива

Увеличить на 1:

for i in range(N):
???

A[i] += 1

Обработка элементов массива Увеличить на 1: for i in range(N): ??? A[i]

Умножить на 2:

for i in range(N):
???

A[i] *= 2

Заполнить нулями:

for i in range(N):
???

A[i] = 0

Слайд 154

Задачи-2

«A»: Напишите программу, которая заполняет массив из 10 элементов случайными числами в

Задачи-2 «A»: Напишите программу, которая заполняет массив из 10 элементов случайными числами
диапазоне [0,10], выводит его на экран, а затем выводит на экран квадраты всех элементов массива.
Пример:
Массив: 5 6 2 3 1 4 8 7
Квадраты: 25 36 4 9 1 16 64 49

«B»: Напишите программу, которая заполняет массив из 10 элементов случайными числами в диапазоне [100,300] и выводит его на экран. После этого на экран выводятся средние цифры (число десятков) всех чисел, записанных в массив.
Пример:
Массив: 142 224 135 257 167 295 126 223 138 270
Число десятков: 4 2 3 5 6 9 2 2 3 7

Слайд 155

Задачи-2

«C»: Напишите программу, которая заполняет массив из 10 элементов случайными числами в

Задачи-2 «C»: Напишите программу, которая заполняет массив из 10 элементов случайными числами
диапазоне [100,500] и выводит его на экран. После этого на экран выводятся суммы цифр всех чисел, записанных в массив.
Пример:
Массив: 162 425 340 128 278 195 326 414 312 177
Суммы цифр: 9 11 7 11 17 15 11 9 6 15

Слайд 156

Программирование (Python)

§ 21. Алгоритмы обработки массивов

Программирование (Python) § 21. Алгоритмы обработки массивов

Слайд 157

Сумма элементов массива

Sum = 0
for i in range(N):
Sum = Sum +

Сумма элементов массива Sum = 0 for i in range(N): Sum =
A[i]
print( Sum )

Задача. Найти сумму элементов массива из N элементов.

0

5

1

7

2

15

3

18

4

19

Sum += A[i]

В стиле Python:

print( sum(A) )

Слайд 158

Сумма элементов массива (Python)

Sum = 0
for x in A:
Sum += x
print(

Сумма элементов массива (Python) Sum = 0 for x in A: Sum
Sum )

Задача. Найти сумму элементов массива A.

или так:

print( sum(A) )

for x in A:

для всех элементов из A

встроенная функция

Слайд 159

Сумма не всех элементов массива

Sum = 0
for i in range(N):
Sum +=

Сумма не всех элементов массива Sum = 0 for i in range(N):
A[i]
print( Sum )

Задача. Найти сумму чётных элементов массива.

if A[i] % 2 == 0:
Sum += A[i]
print( Sum )

if A[i] % 2 == 0:

Слайд 160

Сумма не всех элементов массива

Sum = 0
for x in A:
Sum +=

Сумма не всех элементов массива Sum = 0 for x in A:
x
print( Sum )

Задача. Найти сумму чётных элементов массива.

if x % 2 == 0:
Sum += x
print( Sum )

A

x

Sum

4

3

6

8

1

0

4

10

18

В стиле Python:

B = [x for x in A
if x % 2 == 0]
print ( sum(B) )

отбираем в новый массив все нужные значения

Слайд 161

Задачи

«A»: Напишите программу, которая заполняет массив из 10 элементов случайными числами на

Задачи «A»: Напишите программу, которая заполняет массив из 10 элементов случайными числами
отрезке [–5; 5] и находит сумму положительных элементов.

«B»: Напишите программу, которая заполняет массив из 10 элементов случайными числами на отрезке [–2; 2] и находит произведение ненулевых элементов.

«C»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [100; 1000] и находит отдельно сумму элементов в первой и во второй половинах массива.

Слайд 162

Подсчёт элементов по условию

Задача. Найти количество чётных элементов массива.

count = 0
for i

Подсчёт элементов по условию Задача. Найти количество чётных элементов массива. count =
in range(N):
if A[i] % 2 == 0:
count += 1
print( count )

переменная-счётчик

Слайд 163

Подсчёт элементов по условию (Python)

Задача. Найти количество чётных элементов массива.

count = 0
for

Подсчёт элементов по условию (Python) Задача. Найти количество чётных элементов массива. count
x in A:
if x % 2 == 0:
count += 1
print( count )

В стиле Python:

B = [x for x in A
if x % 2 == 0]
print ( len(B) )

размер массива

Слайд 164

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

Задача. Найти среднее арифметическое элементов массива, которые больше 180 (рост в

Среднее арифметическое Задача. Найти среднее арифметическое элементов массива, которые больше 180 (рост
см).

Sum = 0
for x in A:
if x > 180:
Sum += x
print( Sum/N )

Слайд 165

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

Задача. Найти среднее арифметическое элементов массива, которые больше 180 (рост в

Среднее арифметическое Задача. Найти среднее арифметическое элементов массива, которые больше 180 (рост
см).

Sum = 0
count = 0
for x in A:
if x > 180:
count += 1
Sum += x
print( Sum/count )

Слайд 166

Среднее арифметическое (Python)

Задача. Найти среднее арифметическое элементов массива, которые больше 180 (рост

Среднее арифметическое (Python) Задача. Найти среднее арифметическое элементов массива, которые больше 180
в см).

B = [ x for x in A
if x > 180]
print ( sum(B)/len(B) )

отбираем нужные

Слайд 167

Задачи

«A»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на

Задачи «A»: Напишите программу, которая заполняет массив из 20 элементов случайными числами
отрезке [0; 200] и считает число элементов, которые делятся на 10.

«B»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [0; 200] и считает число двузначных чисел в массиве.

«C»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [10; 100] и считает число пар соседних элементов, сумма которых делится на 3.

Слайд 168

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

с = a
a = b
b = c

элементы массива:

с = A[i]
A[i]

Перестановка элементов массива с = a a = b b = c
= A[k]
A[k] = c

Слайд 169

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

Задача. Массив A содержит чётное количество элементов N. Нужно

Перестановка пар соседних элементов Задача. Массив A содержит чётное количество элементов N.
поменять местами пары соседних элементов: 0-й с 1-м, 2-й — с 3-м и т. д.

Слайд 170

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

for i in range(N):
поменять местами A[i] и A[i+1]

?

выход

Перестановка пар соседних элементов for i in range(N): поменять местами A[i] и
за границы массива

Слайд 171

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

for i in range(0,N-1,2):
# переставляем A[i] и

Перестановка пар соседних элементов for i in range(0,N-1,2): # переставляем A[i] и
A[i+1]
с = A[i]
A[i] = A[i+1]
A[i+1] = c

A[0]↔A[1]
A[2]↔A[3]
...
A[N-2]↔A[N-1]

range(0,N-1,2):

Слайд 172

Реверс массива

Задача. Переставить элементы массива в обратном порядке (выполнить реверс).

A[0]↔A[N-1]
A[1]↔A[N-2]
A[i]↔A[N-1-i]
A[N-1]↔A[0]

0+N-1 =

Реверс массива Задача. Переставить элементы массива в обратном порядке (выполнить реверс). A[0]↔A[N-1]
N-1
1+N-2 = N-1
i+??? = N-1
N-1+0 = N-1

Слайд 173

Реверс массива

for i in range(N):
поменять местами A[i] и A[N-1-i]

i=0

i=1

i=2

i=3

(N // 2):

Реверс массива for i in range(N): поменять местами A[i] и A[N-1-i] i=0

Слайд 174

Задачи

«A»: Заполнить массив из 10 элементов случайными числами в диапазоне [0; 100],

Задачи «A»: Заполнить массив из 10 элементов случайными числами в диапазоне [0;
поменять местами пары соседних элементов, не трогая первый и последний элементы.
Массив: 53 66 88 39 26 88 35 24 38 50
Результат: 53 88 66 26 39 35 88 38 24 50
«B»: Заполнить массив из 10 элементов случайными числами в диапазоне [0; 100] и выполнить циклический сдвиг влево: каждый элемент перемещается на место предыдущего, а первый – на место последнего.
Массив: 53 66 88 39 26 88 35 24 38 50
Результат: 66 88 39 26 88 35 24 38 50 53

Слайд 175

Задачи

«C»: Заполнить массив из 10 элементов случайными числами в диапазоне [0; 100],

Задачи «C»: Заполнить массив из 10 элементов случайными числами в диапазоне [0;
сделать реверс отдельно в первой и во второй половине массива.
Массив: 53 66 88 39 26 88 35 24 38 50
Результат: 26 39 88 66 53 50 38 24 35 88

Слайд 176

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

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

Слайд 177

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

for i in range(N):
if A[i] > M:
M =

Поиск максимального элемента for i in range(N): if A[i] > M: M
A[i]
print( M )

M – значение, которое заведомо меньше всех элементов массива или
M = A[0] (или любой другой элемент)

Слайд 178

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

M = A[0]
for i in range(1,N):
if A[i] > M:

Поиск максимального элемента M = A[0] for i in range(1,N): if A[i]
M = A[i]
print( M )

начинаем с A[1], так как A[0] мы уже посмотрели

Слайд 179

Поиск максимального элемента (Python)

M = A[0]
for x in A:
if x >

Поиск максимального элемента (Python) M = A[0] for x in A: if
M:
M = x
print( M )

перебрать все элементы в массиве A

for x in A:

print( max(A) )

print( min(A) )

Слайд 180

Номер максимального элемента

Задача. Найти в массиве максимальный элемент и его номер.

M =

Номер максимального элемента Задача. Найти в массиве максимальный элемент и его номер.
A[0]; nMax = 0
for i in range(1,N):
if A[i] > M:
M = A[i]
nMax = i
print( "A[", nMax, "]=", M )

nMax = 0

nMax = i

Слайд 181

Номер максимального элемента

M = A[0]; nMax = 0
for i in range(1,N):
if

Номер максимального элемента M = A[0]; nMax = 0 for i in
A[i]> M :
M = A[i]
nMax = i
print( "A[", nMax, "]=", M )

:

A[nMax]

)

A[nMax]

Слайд 182

Задачи (без min и max)

«A»: Напишите программу, которая заполняет массив из 20

Задачи (без min и max) «A»: Напишите программу, которая заполняет массив из
элементов случайными числами на отрезке [50; 150] и находит в нём минимальный и максимальный элементы и их номера.
«B»: Напишите программу, которая заполняет массив из 10 элементов в виде
A = [ 10, 2, 3, 4, 10, 6, 7, 8, 9, 10]
и и выводит количество элементов, имеющих максимальное значение.
«C»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [100; 200] и находит в нём пару соседних элементов, сумма которых минимальна.

Слайд 183

Задачи

«D»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на

Задачи «D»: Напишите программу, которая заполняет массив из 20 элементов случайными числами
отрезке [–100; 100] и находит в каждой половине массива пару соседних элементов, сумма которых максимальна.

Слайд 184

Конец фильма

ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики
ГБОУ СОШ № 163, г. Санкт-Петербург
kpolyakov@mail.ru
ЕРЕМИН

Конец фильма ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики ГБОУ СОШ № 163,
Евгений Александрович
к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь
eremin@pspu.ac.ru