Презентация, доклад на тему Программирование на языке Python

Содержание

Программирование на языке PythonАлгоритм и его свойства

Слайд 1Программирование на языке Python
Алгоритм и его свойства
Простейшие программы
Вычисления
Ветвления
Символьные строки
Циклические алгоритмы
Массивы (списки)
Поиск

в массиве

Программирование на языке PythonАлгоритм и его свойстваПростейшие программыВычисленияВетвленияСимвольные строкиЦиклические алгоритмыМассивы (списки)Поиск в массиве

Слайд 2Программирование на языке Python
Алгоритм и его свойства

Программирование на языке PythonАлгоритм и его свойства

Слайд 3Что такое алгоритм?
Алгоритм — это точное описание порядка действий, которые должен

выполнить исполнитель для решения задачи за конечное время.

Исполнитель – это устройство или одушёвленное существо (человек), способное понять и выполнить команды, составляющие алгоритм.

Формальные исполнители: не понимают (и не могут понять) смысл команд.

Что такое алгоритм?Алгоритм — это точное описание порядка действий, которые должен выполнить исполнитель для решения задачи за

Слайд 4
Свойства алгоритма
Дискретность — алгоритм состоит из отдельных команд, каждая из которых

выполняется за конечное время.
Детерминированность (определённость) — при каждом запуске алгоритма с одними и теми же исходными данными получается один и тот же результат.
Понятность — алгоритм содержит только команды, входящие в систему команд исполнителя.
Конечность (результативность) — для корректного набора данных алгоритм должен завершаться через конечное время.
Корректность — для допустимых исходных данных алгоритм должен приводить к правильному результату.
Массовость — алгоритм можно использовать для разных исходных данных.

Свойства алгоритмаДискретность — алгоритм состоит из отдельных команд, каждая из которых выполняется за конечное время.Детерминированность (определённость) —

Слайд 5Программирование на языке Python
Простейшие программы

Программирование на языке PythonПростейшие программы

Слайд 6Простейшая программа
# Это пустая программа
комментарии после # не обрабатываются
# coding: utf-8
#

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

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

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

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

Слайд 7Вывод на экран
print ( "2+2=?" )
print ( "Ответ: 4" )
Протокол:

2+2=?
Ответ: 4



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

print ( '2+2=?' )
print ( 'Ответ: 4' )

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

Слайд 8Задания
«4»: Вывести на экран текст «лесенкой»
Вася

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

Слайд 9Сложение чисел
Задача. Ввести с клавиатуры два числа и найти их сумму.
Протокол:

Введите два целых числа
25
30
25+30=55

компьютер

пользователь

компьютер считает сам!

Сложение чиселЗадача. Ввести с клавиатуры два числа и найти их сумму.Протокол: Введите два целых числа 25

Слайд 10Сумма: псевдокод
ввести два числа
вычислить их сумму
вывести сумму на экран


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

Сумма: псевдокодввести два числа вычислить их сумму вывести сумму на экран Псевдокод – алгоритм на русском языке

Слайд 11Переменные
Переменная – это величина, имеющая имя, тип и значение. Значение переменной

можно изменять во время работы программы.



a

Значение

Имя

ПеременныеПеременная – это величина, имеющая имя, тип и значение. Значение переменной можно изменять во время работы программы.aЗначениеИмя

Слайд 12Имена переменных
МОЖНО использовать
латинские буквы (A-Z, a-z)


русские буквы (не рекомендуется!)
цифры


знак подчеркивания _
заглавные

и строчные буквы различаются

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

имя не может начинаться с цифры

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

Имена переменныхМОЖНО использоватьлатинские буквы (A-Z, a-z)русские буквы (не рекомендуется!)цифрызнак подчеркивания _заглавные и строчные буквы различаютсяНЕЛЬЗЯ использоватьскобки знаки

Слайд 13Типы переменных
a = 4
print ( type(a) )

целое число (integer)
a

= 4.5
print ( type(a) )


вещественное число

a = "Вася"
print ( type(a) )


символьная строка

a = True
print ( type(a) )


логическая

Типы переменныхa = 4print ( type(a) ) целое число (integer)a = 4.5print ( type(a) ) вещественное числоa

Слайд 14Зачем нужен тип переменной?
Тип определяет:
область допустимых значений
допустимые операции
объём памяти
формат хранения данных

Зачем нужен тип переменной?Тип определяет:область допустимых значенийдопустимые операцииобъём памятиформат хранения данных

Слайд 15Как записать значение в переменную?
a = 5
оператор присваивания
5

Оператор – это команда

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

a


a = 7

7



Как записать значение в переменную?a = 5оператор присваивания5Оператор – это команда языка программирования (инструкция).Оператор присваивания – это

Слайд 16Ввод значения с клавиатуры

5
a

Ввод значения с клавиатуры5a

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

с переменной a

b = input()

с = a + b

print ( c )

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

a = int( input() )

b = int( input() )

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

Ввод значения с клавиатурыa = input()ввести строку с клавиатуры и связать с переменной ab = input()с =

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

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

Слайд 19Изменение значений переменной
a = 5
b = a + 2
a = (a

+ 2)*(b – 3)
b = b + 1

a

5

b

=5+2

7

28

=(5+2)*(7-3)


=7+1

8


Изменение значений переменнойa = 5b = a + 2a = (a + 2)*(b – 3)b = b

Слайд 20Вывод данных
print ( a )
значение переменной
print ( "Ответ: ", a )
значение

и текст

print ( "Ответ: ", a+b )

вычисление выражения

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

2 + 3 = 5

через пробелы

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

2+3=5

sep = ""

убрать разделители

Вывод данныхprint ( a )значение переменнойprint (

Слайд 21Вывод данных через format
print ( a, "+", b, "=", c, sep

= "" )

2+3=5

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

Вывод данных через formatprint ( a,

Слайд 22Сложение чисел: простое решение
a = int ( input() )
b = int

( input() )
c = a + b
print ( c )
Сложение чисел: простое решениеa = int ( input() )b = int ( input() )c = a +

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

)
b = int ( input() )
c = a + b
print ( a, "+", b, "=", c, sep="" )

Сложение чисел: полное решение

Протокол:
Введите два целых числа
25
30
25+30=55

компьютер

пользователь

подсказка

print (

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

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

Слайд 25Задания
«5»: Ввести три числа, найти их сумму, произведение и среднее арифметическое.

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

Слайд 26Программирование на языке Python
Вычисления

Программирование на языке PythonВычисления

Слайд 27Арифметическое выражения
a = (c + b**5*3 - 1) / 2 *

d

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

1

2

3

4

5

6


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

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

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

Арифметическое выраженияa = (c + b**5*3 - 1) / 2 * dПриоритет (старшинство):скобкивозведение в степень **умножение и

Слайд 28Деление
Классическое деление:
a = 9; b = 6
x = 3 / 4

# = 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

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

Слайд 29Остаток от деления
% – остаток от деления
d = 85
b = d

// 10 # 8
a = d % 10 # 5
d = a % b # 5
d = b % a # 3





a = 15
b = 19
d = a // b # 0
a = a % b # 15



Остаток от деления% – остаток от деленияd = 85b = d // 10  # 8 a

Слайд 30Операторы // и %
a = 1234
d = a % 10; print(

d )
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

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

Слайд 31Сокращенная запись операций
a += 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 %= b # a = a % b

a += 1

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

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

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

input().split() )

input()

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

21 33

input().split()

21

33

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

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

21

33

целые

применить

эту операцию

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



Ввод двух значений в одной строкеa, b = map ( int, input().split() )input()ввести строку с клавиатуры21 33

Слайд 33Задания
«3»: Ввести три числа: цену пирожка (два числа: рубли, потом –

копейки) и количество пирожков. Найти сумму, которую нужно заплатить (рубли и копейки)
Пример:
Стоимость пирожка:
12 50
Сколько пирожков:
5
К оплате: 62 руб. 50 коп.
«4»: Ввести число, обозначающее количество секунд. Вывести то же самое время в часах, минутах и секундах.
Пример:
Число секунд:
8325
2 ч. 18 мин. 45 с
Задания«3»: Ввести три числа: цену пирожка (два числа: рубли, потом – копейки) и количество пирожков. Найти сумму,

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

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

Слайд 35Случайные числа
Случайно…
встретить друга на улице
разбить тарелку
найти 10 рублей
выиграть в лотерею
Случайный выбор:
жеребьевка

на соревнованиях
выигравшие номера в лотерее

Как получить случайность?

Случайные числаСлучайно…встретить друга на улицеразбить тарелкунайти 10 рублейвыиграть в лотереюСлучайный выбор:жеребьевка на  соревнованияхвыигравшие номера  в

Слайд 36Случайные числа на компьютере

Электронный генератор
нужно специальное устройство
нельзя воспроизвести результаты

318458191041
564321
209938992481
458191
938992
малый период (последовательность

повторяется через 106 чисел)

Метод середины квадрата (Дж. фон Нейман)

в квадрате

Псевдослучайные числа – обладают свойствами случайных чисел, но каждое следующее число вычисляется по заданной формуле.

зерно

Случайные числа на компьютереЭлектронный генераторнужно специальное устройствонельзя воспроизвести результаты318458191041564321209938992481458191938992малый период  (последовательность повторяется через 106 чисел)Метод середины

Слайд 37Линейный конгруэнтный генератор
X = (a*X+b) % c | интервал от 0

до c-1

X = (X+3) % 10 | интервал от 0 до 9

X = 0

зерно

→ 3

→ 6

→ 9

→ 2

→ 5

→ 8

→ 0

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

8

→ 1

→ 4

→ 7

Компилятор GCC:
a = 1103515245
b = 12345
c = 231

Линейный конгруэнтный генераторX = (a*X+b) % c | интервал от 0 до c-1X = (X+3) % 10

Слайд 38Генератор случайных чисел
Генератор на [0,1):
X = random.random() # псевдосл. число
Y

= random.random() # уже другое число!

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

X = random.randint(1,6) # псевдосл. число
Y = random.randint(1,6) # уже другое число!

import random

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

Генератор на [a, b] (вещественные числа):

X = random.uniform(1.2, 3.5)
Y = random.uniform(1.2, 3.5)

Генератор случайных чиселГенератор на [0,1): X = random.random() # псевдосл. числоY = random.random() # уже другое число!Целые

Слайд 39Генератор случайных чисел
Генератор на [0,1):
X = random() # псевдослучайное число
Y

= random() # это уже другое число!

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

X = randint(10,60) # псевдослучайное число
Y = randint(10,60) # это уже другое число!

from random import *

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

подключить все!

Генератор случайных чиселГенератор на [0,1): X = random() # псевдослучайное числоY = random() # это уже другое

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

очков в среднем выпало?
Пример:
Выпало очков:
5 3 1
(5+3+1)/3=3

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

Задачи«3»: Игральный кубик бросается три раза (выпадает три случайных значения). Сколько очков в среднем выпало? Пример:Выпало очков:5

Слайд 41Задачи
«5»: Получить случайное трёхзначное число и вывести через запятую его отдельные

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

Слайд 42Программирование на языке Python
Ветвления

Программирование на языке PythonВетвления

Слайд 43Условный оператор
Задача: изменить порядок действий в зависимости от выполнения некоторого условия.

полная

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

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

Условный операторЗадача: изменить порядок действий в зависимости от выполнения некоторого условия.полная форма ветвленияif a > b: M

Слайд 44Условный оператор: неполная форма

неполная форма ветвления
M = a
if b

> a:
M = b

M = max(a, b)

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

M = a if a > b else b

Условный оператор: неполная форманеполная форма ветвленияM = a  if b > a:  M = bM

Слайд 45Условный оператор
if a < b:
с = a

a = b
b = c

4

6

?

4

6

4

a

b

3

2

1

c

a, b = b, a

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

Условный операторif a < b:  с = a   a = b b = c

Слайд 46Знаки отношений
>
=

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

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




if a

== b:
print("Одного возраста")
else:
print("Борис старше")

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

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

Вложенные условные операторыif a > b: print(

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

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

Слайд 49Каскадное ветвление
cost = 1500
if cost < 1000:
print ( "Скидок

нет." )
elif cost < 2000:
print ( "Скидка 2%." )
elif cost < 5000:
print ( "Скидка 5%." )
else:
print ( "Скидка 10%." )

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

Скидка 2%.

Каскадное ветвлениеcost = 1500 if cost < 1000: print (

Слайд 50Задачи (без функций min и max!)
«3»: Ввести два целых числа, найти

наибольшее и наименьшее из них.
Пример:
Введите два целых числа:
1 5
Наибольшее число 5
Наименьшее число 1

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

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

Слайд 51Задачи
'5': Ввести пять чисел и найти наибольшее из них.
Пример:

Введите пять чисел:
4 15 9 56 4
Наибольшее число 56
Задачи'5': Ввести пять чисел и найти наибольшее из них.  Пример:      Введите

Слайд 52Задачи
«6»: Ввести последовательно возраст Антона, Бориса и Виктора. Определить, кто из

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

Слайд 53Сложные условия
Задача: набор сотрудников в возрасте 25-40 лет (включительно).
if

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

and

v >= 25 and v <= 40

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

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


Слайд 54Сложные условия
Задача: набор сотрудников в возрасте 25-40 лет (включительно).
if

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

v < 25 or v > 40

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

or

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


Слайд 55Сложные условия
if not(a < b):
print("Cтарт!")
not
Приоритет :
отношения (, =,

==, !=)
not («НЕ»)
and («И»)
or («ИЛИ»)

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

if a >= b:
print("Cтарт!")


Слайд 56Задачи
«3»: Напишите программу, которая получает три числа - рост трёх спортсменов,

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

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

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

Слайд 58Задачи
«5»: Напишите программу, которая получает возраст человека (целое число, не превышающее

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

Слайд 59Программирование на языке Python
Символьные строки

Программирование на языке PythonСимвольные строки

Слайд 60Символьные строки
Начальное значение:
Сложение:
s = "Привет!"
Вывод на экран:
print ( s )
Умножение:
s =

"АУ"
s5 = s*5

АУАУАУАУАУ

s5 = s + s + s + s + s

s1 = "Привет"
s2 = "Вася"
s = s1 + ", " + s2 + "!"

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


Слайд 61Символьные строки
Вывод символа на экран:
Длина строки:
n = len ( s )
print

( s[5] )


print ( s[-2] )

s[len(s)-2]


Символьные строкиВывод символа на экран:Длина строки:n = len ( s )print ( s[5] )print ( s[-2] )s[len(s)-2]

Слайд 62Символьные строки
Ввод с клавиатуры:
s = input ( "Введите имя: " )
Изменение

строки:

s[4] = "a"


... но можно составить новую строку:

s1 = s + "a"

Изменение строки запрещено!

s = "информатика"
print(s[-2]+s[3]+s[-4])

составить «кот»

Символьные строкиВвод с клавиатуры:s = input (

Слайд 63Срезы
s = "0123456789"
s1 = s[3:8] # "34567"



разрезы


Срезыs =

Слайд 64Срезы строк
s = "0123456789"
s1 = s[:8] #

"01234567"

от начала строки

s = "0123456789"
s1 = s[3:] # "3456789"

до конца строки

s1 = s[::-1] # "9876543210"

реверс строки

Срезы строкs =

Слайд 65Операции со строками
Срезы с отрицательными индексами:
s = "0123456789"
s1 = s[:-2]

# "01234567"

len(s)-2

s = "0123456789"
s1 = s[-6:-2] # "4567"

len(s)-2

len(s)-6

Операции со строкамиСрезы с отрицательными индексами:s =

Слайд 66Операции со строками
Вставка:
s = "0123456789"
s1 = s[:3] + "ABC" + s[3:]
Удаление:
s

= "0123456789"
s1 = s[:3] + s[9:] # "0129"

"012"

"9"

"012ABC3456789"

Операции со строкамиВставка:s =

Слайд 67Задачи
«3»: Ввести с клавиатуры пароль (символьную строку), если его длина меньше,

чем 6 символов, вывести сообщение «Слишком короткий пароль!», иначе вывести сообщение «ОК».
Пример:
Введите пароль:
12345
Слишком короткий пароль!
Пример:
Введите пароль:
123456789
ОК.
Задачи«3»: Ввести с клавиатуры пароль (символьную строку), если его длина меньше, чем 6 символов, вывести сообщение «Слишком

Слайд 68Задачи
«4»: Ввести с клавиатуры пароль (символьную строку). Если его длина меньше,

чем 6 символов, вывести сообщение «Слишком короткий пароль!». Если пароль начинается с букв «qwerty» вывести сообщение «Ненадёжный пароль!». Если ошибок не было, вывести сообщение «ОК».
Пример:
Введите пароль:
qwerty12345
Ненадёжный пароль!
Пример:
Введите пароль:
asdUTY7sakh
ОК.
Задачи«4»: Ввести с клавиатуры пароль (символьную строку). Если его длина меньше, чем 6 символов, вывести сообщение «Слишком

Слайд 69Задачи
«5»: Ввести с клавиатуры имя файла. Если расширение имени файла –

htm, html или php, выдать сообщение «Это веб-страница!», иначе выдать сообщение «Что-то другое.»
Пример:
Введите имя файла:
C:\DOC\Сайт\index.html
Это веб-страница!
Пример:
Введите имя файла:
C:\Документы\Приказ.doc
Что-то другое.
Задачи«5»: Ввести с клавиатуры имя файла. Если расширение имени файла – htm, html или php, выдать сообщение

Слайд 70Программирование на языке Python
Циклические алгоритмы

Программирование на языке PythonЦиклические алгоритмы

Слайд 71Что такое цикл?
Цикл – это многократное выполнение одинаковых действий.
Два вида циклов:
цикл

с известным числом шагов (сделать 10 раз)
цикл с неизвестным числом шагов (делать, пока не надоест)

Задача. Вывести на экран 10 раз слово «Привет».

Что такое цикл?Цикл – это многократное выполнение одинаковых действий.Два вида циклов:цикл с известным числом шагов (сделать 10

Слайд 72Повторения в программе
print("Привет")
print("Привет")
...
print("Привет")

Повторения в программеprint(

Слайд 73Блок-схема цикла

начало
конец
да
нет
тело цикла

Блок-схема цикланачалоконецданеттело цикла

Слайд 74Как организовать цикл?
счётчик = 0
пока счётчик < 10:
print("Привет")
увеличить счётчик

на 1

счётчик = 10
пока счётчик > 0:
print("Привет")
уменьшить счётчик на 1

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

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


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

b: 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

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

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

Слайд 76Цикл с условием
Задача. Определить количество цифр в десятичной записи целого положительного

числа, записанного в переменную n.

счётчик = 0
пока n > 0:
отсечь последнюю цифру n
увеличить счётчик на 1

n = n // 10

счётчик = счётчик + 1





счётчик += 1

Цикл с условиемЗадача. Определить количество цифр в десятичной записи целого положительного числа, записанного в переменную n.счётчик =

Слайд 77Цикл с условием
count = 0
while :





n = n // 10
count += 1

тело цикла

начальное значение счётчика

n > 0

условие продолжения

заголовок цикла

Цикл с условиемcount = 0while    :   n = n // 10count +=

Слайд 78Задачи
«3»: Ввести с клавиатуры количество повторений и вывести столько же раз

какое-нибудь сообщение.
Пример:
Сколько раз:
5
Привет!
Привет!
Привет!
Привет!
Привет!
Задачи«3»: Ввести с клавиатуры количество повторений и вывести столько же раз какое-нибудь сообщение.Пример:Сколько раз:5Привет!Привет!Привет!Привет!Привет!

Слайд 79Задачи
«4»: Ввести с клавиатуры натуральное число и определить, сколько раз в

его записи встречается цифра 1.
Пример:
Введите число:
51211
3

«5»: Ввести с клавиатуры натуральное число и найти сумму значений его цифр.
Пример:
Введите число:
1234
Cумма цифр 10

Задачи«4»: Ввести с клавиатуры натуральное число и определить, сколько раз в его записи встречается цифра 1.Пример:Введите число:512113«5»:

Слайд 80Задачи
«6»: Ввести натуральное число и определить, верно ли, что в его

записи есть две одинаковые цифры, стоящие рядом.
Пример:
Введите натуральное число:
12342
Нет.
Пример:
Введите натуральное число:
12245
Да.
Задачи«6»: Ввести натуральное число и определить, верно ли, что в его записи есть две одинаковые цифры, стоящие

Слайд 81Алгоритм Евклида
Алгоритм Евклида. Чтобы найти НОД двух натуральных чисел, нужно вычитать

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

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

пока a != b:
если a > b:
a -= b # a = a - b
иначе:
b -= a # b = b - a

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

НОД(1998,2) =

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

Алгоритм ЕвклидаАлгоритм Евклида. Чтобы найти НОД двух натуральных чисел, нужно вычитать из большего числа меньшее до тех

Слайд 82Алгоритм Евклида
Модифицированный алгоритм Евклида. Заменять большее число на остаток от деления

большего на меньшее до тех пор, пока меньшее не станет равно нулю. Другое (ненулевое) число и есть НОД чисел.

НОД(1998,2) = НОД(0,2) = 2

пока ???:
если a > b:
a = a % b
иначе:
b = b % a

a!=0 and b!=0:

если a != 0:
вывести a
иначе:
вывести b

Алгоритм ЕвклидаМодифицированный алгоритм Евклида. Заменять большее число на остаток от деления большего на меньшее до тех пор,

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

с помощью алгоритма Евклида.
Пример:
Введите два числа:
21 14
НОД(21,14)=7

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

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

Слайд 84Задачи
«5»: Ввести с клавиатуры два натуральных числа и сравнить количество шагов

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

Слайд 85Обработка строк в цикле
Задача. Ввести строку и определить, сколько в ней

цифр.

счётчик = 0
для каждого символа строки:
если символ – цифра:
счётчик += 1

s = input()
k = 0
for c in s:
if c.isdigit():
k += 1

for c in s:

для всех символов в строке

если c – это цифра

Обработка строк в циклеЗадача. Ввести строку и определить, сколько в ней цифр.счётчик = 0для каждого символа строки:

Слайд 86Проверка символов
if c.isalpha():
print("Буква")
if c.islower():
print("Строчная буква")
if c.isupper():
print("Заглавная буква")
if c.isdigit():

print("Цифра")

if c in ["а","б"]:
print("Это а или б")

Проверка символовif c.isalpha(): print(

Слайд 87Задачи
«3»: Ввести с клавиатуры число в двоичной системе счисления. Определить, сколько

в его записи единиц и сколько нулей.
Пример:
Введите число:
1010100
Нулей: 4
Единиц: 3

«4»: Ввести с клавиатуры символьную строку. Если это правильная запись двоичного числа, вывести сообщение «Да», иначе вывести сообщение «Нет».
Пример:
Введите число: Введите число:
1010100 abcd10
Да. Нет.

Задачи«3»: Ввести с клавиатуры число в двоичной системе счисления. Определить, сколько в его записи единиц и сколько

Слайд 88Задачи
«5»: Ввести с клавиатуры символьную строку и составить новую строку, удалив

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

Слайд 89Цикл с переменной
Задача. Вывести 10 раз слово «Привет!».
 
while

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

i = 0

i < 10

i += 1

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

i in range(10)

в диапазоне [0,10)

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

range(10) → 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Цикл с переменнойЗадача. Вывести 10 раз слово «Привет!». while    : print(

Слайд 90Цикл с переменной
Задача. Вывести все степени двойки от 21 до 210.
 
while

:
print ( 2**k )
 

k = 1

k <= 10

k += 1

for :
print ( 2**k )

k in range(1,11)

в диапазоне [1,11)

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

range(1,11) → 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

возведение в степень

Цикл с переменнойЗадача. Вывести все степени двойки от 21 до 210. while    : print (

Слайд 91Цикл с переменной: другой шаг
100
81
64
49
36
25
16
9
4
1
1
9
25
49
81
for

:
print ( k**2 )

k in range(1,11,2)

for :
print ( k**2 )

k in range(10,0,-1)

шаг

10,9,8,7,6,5,4,3,2,1

1,3,5,7,9

Цикл с переменной: другой шаг10081644936251694119254981for          : print (

Слайд 92Сколько раз выполняется цикл?
a = 1
for k in range( 3): a

+= 1

a = 4

a = 1
for k in range( 3,1): a += 1

a = 1

a = 1
for k in range( 1,3,-1): a += 1

a = 1

a = 1
for k in range( 3,1,-1): a += 1

a = 3

Сколько раз выполняется цикл?a = 1for k in range( 3): a += 1a = 4a = 1for

Слайд 93Задачи
«3»: Ипполит задумал трёхзначное число, которое при делении на 15 даёт

в остатке 11, а при делении на 11 даёт в остатке 9. Найдите все такие числа.

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

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

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

Слайд 95Программирование на языке Python
Массивы (списки)

Программирование на языке PythonМассивы (списки)

Слайд 96Что такое массив?
Массив – это группа переменных одного типа, расположенных в

памяти рядом (в соседних ячейках) и имеющих общее имя. Каждая ячейка в массиве имеет уникальный номер (индекс).

Надо:

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

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

Слайд 97Что такое массив?


A
массив
2
15
НОМЕР элемента массива
(ИНДЕКС)
A[0]
A[1]
A[2]
A[3]
A[4]
ЗНАЧЕНИЕ элемента массива
A[2]
НОМЕР (ИНДЕКС) элемента массива: 2
ЗНАЧЕНИЕ

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



Что такое массив?Aмассив215НОМЕР  элемента массива(ИНДЕКС)A[0]A[1]A[2]A[3]A[4]ЗНАЧЕНИЕ элемента массиваA[2]НОМЕР (ИНДЕКС)  элемента массива: 2ЗНАЧЕНИЕ  элемента массива: 15

Слайд 98Массивы в Python: списки
A = [1, 3, 4, 23, 5]
A =

[1, 3] + [4, 23] + [5]

[1, 3, 4, 23, 5]

A = [0]*10

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Создание массива из N элементов:



N = 10
A = [0]*N

Массивы в Python: спискиA = [1, 3, 4, 23, 5]A = [1, 3] + [4, 23] +

Слайд 99Заполнение массива
N = 10 # размер массива
A = [0]*N

# выделить память
for i in range(N):
A[i] = i

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

N = 10 # размер массива
A = [ i for i in range(N) ]

Целыми числами (начиная с 0!):

i

i


Заполнение массиваN = 10   # размер массиваA = [0]*N # выделить памятьfor i in range(N):

Слайд 100Заполнение случайными числами
from random import randint
N = 10 #

размер массива
A = [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

Заполнение случайными числамиfrom random import randintN = 10   # размер массиваA = [0]*N # выделить

Слайд 101Вывод массива на экран
Как список:
print ( A )
[1, 2, 3, 4,

5]

В строчку через пробел:

for i in range(N):
print ( A[i], end = " " )

1 2 3 4 5

или так:

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

1 2 3 4 5

пробел после вывода очередного числа

или так:

print ( *A )

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

print (1, 2, 3, 4, 5)


Вывод массива на экранКак список:print ( A )[1, 2, 3, 4, 5]В строчку через пробел:for i in

Слайд 102Задачи
«3»: Ввести два натуральных числа a и b (a < b)

и заполнить массив из 10 элементов случайными числами в диапазоне от a до b.
Пример:
Введите границы диапазона:
5 10
10 9 10 6 8 5 9 6 10 9

«4»: Ввести два натуральных числа a и b и заполнить массив из 10 элементов случайными числами в диапазоне между a и b (a может быть больше b).
Пример:
Введите границы диапазона:
10 5
10 9 10 6 8 5 9 6 10 9

Задачи«3»: Ввести два натуральных числа a и b (a < b) и заполнить массив из 10 элементов

Слайд 103Задачи
«5»: Ввести два натуральных числа a и b и заполнить массив

из 10 элементов: первая половина массива заполняется случайными числами в диапазоне между a и b (a может быть больше b), а вторая половина массива содержит их квадраты в том же порядке.
Пример:
Введите границы диапазона:
10 5
5 8 7 10 6 25 64 49 100 36

Задачи«5»: Ввести два натуральных числа a и b и заполнить массив из 10 элементов: первая половина массива

Слайд 104Ввод массива с клавиатуры
Создание массива:
N = 10
A = [0]*N
for i in

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

или кратко:

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

Ввод по одному элементу в строке:

Ввод массива с клавиатурыСоздание массива:N = 10A = [0]*Nfor i in range(N): A[i] = int( input() )или

Слайд 105Ввод массива с клавиатуры
Ввод всех чисел в одной строке:
data = input()

# "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()]

Ввод массива с клавиатурыВвод всех чисел в одной строке:data = input()  #

Слайд 106Как обработать все элементы массива?
Создание массива:


Обработка:
N = 5
A = [0]*N
# обработать

A[0]
# обработать A[1]
# обработать A[2]
# обработать A[3]
# обработать A[4]
Как обработать все элементы массива?Создание массива:Обработка:N = 5A = [0]*N# обработать A[0]# обработать A[1]# обработать A[2]# обработать

Слайд 107Как обработать все элементы массива?
Обработка с переменной:
i = 0
# обработать A[i]
i

+= 1
# обработать A[i]
i += 1
# обработать A[i]
i += 1
# обработать A[i]
i += 1
# обработать A[i]

i += 1


Обработка в цикле:

i = 0
while i < N:
# обработать A[i]
i += 1


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

for i in range(N):
# обработать A[i]


Как обработать все элементы массива?Обработка с переменной:i = 0# обработать A[i]i += 1# обработать A[i]i += 1#

Слайд 108Перебор элементов
Общая схема (можно изменять A[i]):
for i in range(N):
... #

сделать что-то с A[i]

Если не нужно изменять A[i]:

for x in A:
... # сделать что-то с x

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

x = A[0], A[1], ..., A[N-1]

for x in A:
print ( x )

Перебор элементовОбщая схема (можно изменять A[i]):for i in range(N): ... # сделать что-то с A[i]Если не нужно

Слайд 109Что выведет программа?
A = [2, 3, 1, 4, 6, 5]
print( A[3]

)

print( A[0]+2*A[5] )

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

# 4

# 12

# 7

# 27

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

# 18

# 22

for k in range(6):
A[k] += 2
print( 2*A[3]+3*A[4] )

# 36

# [4,5,3,6,8,7]

Что выведет программа?A = [2, 3, 1, 4, 6, 5]print( A[3] )print( A[0]+2*A[5] )A[1] = A[0] +

Слайд 110Подсчёт нужных элементов
Задача. В массиве записаны данные о росте баскетболистов. Сколько

из них имеет рост больше 180 см, но меньше 190 см?

count = 0
for x in A:
if 180 < x and x < 190:
count += 1

Подсчёт нужных элементовЗадача. В массиве записаны данные о росте баскетболистов. Сколько из них имеет рост больше

Слайд 111Перебор элементов
summa = 0
for x in A:
if x % 2

== 0:
summa += x
print ( summa )

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

или так:

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

сумма массива B

Перебор элементовsumma = 0for x in A: if x % 2 == 0:  summa += xprint

Слайд 112Как работает цикл?
summa = 0
for x in A:
if x %

2 == 0:
summa += x

A

x

summa

4

3

6

8

1

0

4

10

18






Как работает цикл?summa = 0for x in A: if x % 2 == 0:  summa +=

Слайд 113Среднее арифметическое
count = 0
summa = 0
for x in A:
if x

% 10 == 5:
count += 1
summa += x
print ( summa/count )

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

или так:

B = [ x for x in A ]
if x % 10 == 5]
print ( sum(B)/len(B) )


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

Задача. Найти среднее арифметическое элементов массива, которые оканчиваются на цифру 5.

Среднее арифметическоеcount = 0summa = 0for x in A: if x % 10 == 5:  count

Слайд 114Задачи
«3»: Введите массив из 5 элементов с клавиатуры и найдите среднее

арифметическое его значений.
Пример:
Массив:
1 2 3 4 5
Среднее арифметическое 3.000

«4»: Заполните массив из 10 элементов случайными числами в интервале [0,100] и подсчитайте отдельно среднее значение всех элементов, которые <50, и среднее значение всех элементов, которые ≥50.
Пример:
Массив:
3 2 52 4 60 50 1 2 60 58 6
Ср. арифм. элементов < 50: 3.000
Ср. арифм. элементов >=50: 56.000

Задачи«3»: Введите массив из 5 элементов с клавиатуры и найдите среднее арифметическое его значений.   Пример:

Слайд 115Задачи
«5»: Введите размер массива N и заполните массив из N элементов

числами Фибоначчи. Первые два числа Фибоначчи равны 1, а каждое следующее равно сумме двух предыдущих.
Пример:
Введите размер массива:
6
Числа Фибоначчи:
1 1 2 3 5 8
Задачи«5»: Введите размер массива N и заполните массив из N элементов числами Фибоначчи. Первые два числа Фибоначчи

Слайд 116Программирование на языке Си
Поиск в массиве

Программирование на языке СиПоиск в массиве

Слайд 117Поиск в массиве
Найти элемент, равный X:
i = 0
while A[i] != X:

i += 1
print ( "A[", i, "]=", X, sep = "" )


i = 0
while i < N and A[i] != X:
i += 1
if i < N:
print ( "A[", i, "]=", X, sep = "" )
else:
print ( "Не нашли!" )

i < N

Поиск в массивеНайти элемент, равный X:i = 0while A[i] != X: i += 1print (

Слайд 118Поиск в массиве
nX = -1
for i in range ( N ):

if A[i] == X:
nX = i
break
if nX >= 0:
print ( "A[", nX, "]=", X, sep = "" )
else:
print ( "Не нашли!" )

Вариант с досрочным выходом:

break

досрочный выход из цикла

номер найденного элемента

Поиск в массивеnX = -1for i in range ( N ): if A[i] == X:  nX

Слайд 119for i in range ( N ):
if A[i] == X:

print ( "A[", i, "]=", X, sep = "" )
break
else:
print ( "Не нашли!" )

Поиск в массиве

Варианты в стиле Python:

if X in A:
nX = A.index(X)
print ( "A[", nX, "]=", X, sep = "" )
else:
print ( "Не нашли!" )

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

Слайд 120Задачи
«3»: Заполните массив из 10 элементов случайными числами в диапазоне [100,200].

Найдите первое число в массиве, у которого последняя цифра – 2. Если такого числа нет, вывести ответ «Не нашли».
Пример:
Массив:
131 180 117 170 162 111 109 155 159 137
Нашли: A[4]=162
Пример:
Массив:
131 180 117 170 163 111 109 155 159 137
Не нашли.
Задачи«3»: Заполните массив из 10 элементов случайными числами в диапазоне [100,200]. Найдите первое число в массиве, у

Слайд 121Задачи
«4»: Заполните массив из 10 элементов случайными числами в интервале [0,5].

Введите число X и найдите все значения, равные X.
Пример:
Массив:
1 2 3 1 2 4 2 5 1 3
Что ищем:
2
A[2]=2
A[5]=2
Пример:
Массив:
1 2 3 1 2 4 2 5 1 3
Что ищем:
6
Не нашли.
Задачи«4»: Заполните массив из 10 элементов случайными числами в интервале [0,5]. Введите число X и найдите все

Слайд 122Задачи
«5»: Заполните массив из 10 элементов случайными числами в интервале [0,5].

Найдите пару одинаковых элементов, стоящих рядом.
Пример:
Массив:
1 2 3 3 4 1 5 1 3 2
A[2]=A[3]=3
Пример:
Массив:
1 2 3 4 2 1 5 1 2 3
Нет.
Задачи«5»: Заполните массив из 10 элементов случайными числами в интервале [0,5]. Найдите пару одинаковых элементов, стоящих рядом.

Слайд 123Максимальный элемент
Задача: найти в массиве максимальный элемент.
Алгоритм:




Решение:
считаем, что первый

элемент – максимальный
просмотреть остальные элементы массива: если очередной элемент > M, то записать A[i] в M
вывести значение M
Максимальный элементЗадача: найти в массиве максимальный элемент.Алгоритм: Решение: считаем, что первый элемент – максимальный просмотреть остальные элементы

Слайд 124Максимальный элемент
M = A[0]
for i in range(1,N):
if A[i] > M:


M = A[i]
print ( M )

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

Варианты в стиле Python:

M = max ( A )

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

Слайд 125Максимальный элемент и его номер

Максимальный элемент и его номер

Слайд 126Максимальный элемент и его номер
M = max(A)
nMax = A.index(M)
print ( "A[",

nMax, "]=", M, sep = "" )

Вариант в стиле Python:

Максимальный элемент и его номерM = max(A)nMax = A.index(M)print (

Слайд 127Задачи (без функций min и max)
«3»: Заполнить массив из 10 элементов

случайными числами в интервале [10,100] и найти минимальный и максимальный элементы массива и их номера.
Пример:
Массив:
39 52 84 77 45 32 19 38 49 85
Минимальный элемент: A[6]=19
Максимальный элемент: A[9]=85
Задачи (без функций min и max)«3»: Заполнить массив из 10 элементов случайными числами в интервале [10,100] и

Слайд 128Задачи (без функций min и max)
«4»: Заполнить массив из 10 элементов

случайными числами в интервале [10,100] и найти минимальный и максимальный элементы из чётных элементов массива.
Пример:
Массив:
39 52 84 77 45 32 19 38 49 85
Минимальный чётный: 32
Максимальный чётный: 84
Задачи (без функций min и max)«4»: Заполнить массив из 10 элементов случайными числами в интервале [10,100] и

Слайд 129Задачи (без функции max)
«5»: Ввести с клавиатуры массив из 5 элементов

и найти два максимальных элемента массива и их номера.
Пример:
Массив:
5 5 3 4 1
Максимальный элемент: A[1]=5
Второй максимум: A[2]=5
Задачи (без функции max)«5»: Ввести с клавиатуры массив из 5 элементов и найти два максимальных элемента массива

Слайд 130Задачи
«6»: Введите массив с клавиатуры и найдите (за один проход) количество

элементов, имеющих максимальное значение.
Пример:
Массив:
3 4 5 5 3 4 5
Максимальное значение 5
Количество элементов 3
Задачи«6»: Введите массив с клавиатуры и найдите (за один проход) количество элементов, имеющих максимальное значение.

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

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

Что такое shareslide.ru?

Это сайт презентаций, где можно хранить и обмениваться своими презентациями, докладами, проектами, шаблонами в формате PowerPoint с другими пользователями. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами.


Для правообладателей

Яндекс.Метрика

Обратная связь

Email: Нажмите что бы посмотреть