x = n / d print( x ) print( y ) print( x - y )
Сделайте выводы.
Случайные и псевдослучайные числа
В некоторых задачах, в том числе в компьютерных играх, необходимо моделировать случайные явления, например, ре-зультат бросания игрального кубика (на нём может выпасть число от 1 до 6). Как сделать это на компьютере, который «не-случаен», то есть строго выполняет заданную ему программу?
Случайные числа – это последовательность чисел, в которой невозможно предсказать следующее число, даже зная все пре-дыдущие.
Чтобы получить истинно случайные числа, можно, напри-мер, бросать игральный кубик или измерять какой-то шумовой сигнал (например, шум радиоэфира или сигнал, принятый из космоса). Так раньше составлялись таблицы случайных чисел, которые публиковались в книгах.
Но вернёмся к компьютерам. Ставить сложные приборы на каждый компьютер очень дорого, и повторить эксперимент бу-дет невозможно – завтра все значения будут уже другие. Суще-ствующие таблицы слишком малы, когда, скажем, нужно полу-чать 100 случайных чисел каждую секунду. Для хранения больших таблиц требуется много памяти.
Чтобы выйти из положения, математики придумали алго-ритмы получения псевдослучайных («как бы случайных») чисел. Для стороннего наблюдателя псевдослучайные числа практиче-ски неотличимы от случайных, но они вычисляются по некото-рой математической формуле: зная первое число («зерно»), можно по формуле вычислить второе, затем третье и т.п.
Функции для работы с псевдослучайными числами в языке
Python собраны в модуле random. В библиотеке Python исполь-
26 http://kpolyakov.spb.ru
05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин
зуется один из наиболее совершенных алгоритмов для генера-ции псевдослучайных чисел – «вихрь Мерсенна», разработан-ный в 1997 году.
Для получения псевдослучайных чисел в заданном диапа-
зоне мы будем использовать функции из модуля random:
• randint(a,b) – случайное целое число на отрезке [a; b];
• uniform(a,b) – случайное вещественное число на отрез-
ке [a; b].
Для того чтобы записать в переменную n случайное число на отрезке [1; 6] (результат бросания игрального кубика), можно использовать такие команды:
from random import randint n = randint( 1, 6 )
В первой строке из модуля random импортируется (загружается) функция randint, во второй она вызывается для получения случайного числа.
Вещественное случайное число на отрезке [5; 12] получается так:
from random import uniform x = uniform( 5, 12 )
Выводы:
Переменная — это величина, которая имеет имя, тип и зна-чение. Значение переменной может изменяться во время вы-полнения программы.
Идентификатор — это имя переменной.
Основные операции с переменными – ввод, вывод, присваи-вание нового значения.
Если переменной присваивается новое значение, предыду-щее стирается.
Арифметические выражения обычно записываются в одну
строчку. Операция умножения обозначается знаком «*», а операция деления – знаком «/».
27 http://kpolyakov.spb.ru
05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин
Для целочисленного деления в языке Python используется
оператор //, для вычисления остатка от деления – опера-тор %.
Арифметические операции выполняются в следующем по-рядке:
1) действия в скобках;
2) возведение в степень, справа налево;
3) умножение, деление и взятие остатка, слева направо;
4) сложение и вычитание, слева направо.
Случайные числа – это последовательность чисел, в которой невозможно предсказать следующее число, даже зная все предыдущие. На компьютере обычно используют псевдослу-чайные числа, которые получают по некоторой формуле.
Интеллект-карта
целые вещественные строки
присваивание
ввод
присваивание
ввод
имя (идентификатор)
присваивание
ввод
присваивание
ввод
числа
скобки
присваивание
ввод
**
присваивание
ввод
*/ // % +-
Рис. 3.3.
Практическая работа №7. Линейные программы
Практическая работа №8. Операции с целыми числами
28 http://kpolyakov.spb.ru
переменные
тип
значение
вывод
арифметическое
выражение
05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин
Практическая работа №9. Операции с вещественными числами
Практическая работа №10. Случайные числа
Вопросы и задания
1. Во многих языках программирования (в том числе в школь-ном алгоритмическом языке и в языке Паскаль) переменные нужно заранее объявлять. Обсудите в классе, какие достоин-ства и недостатки имеет такой подход.
2. Почему желательно выводить на экран подсказку перед вво-дом данных?
3. Чем отличаются два оператора вывода:
print( a ) и print( "a" )
Какой из них может привести к ошибке во время выполне-ния программы? В каком случае?
4. Когда можно вычислять результат прямо в операторе выво-да, а когда нужно сохранять его в отдельной переменной?
5. В каком порядке выполняются операции, если они имеют одинаковый приоритет?
6. Зачем используются скобки в арифметических выражениях?
7. Объясните, чем отличаются случайные числа от псевдослу-чайных. Почему в компьютерах используются именно псев-дослучайные числа?
Задачи
1. Что будет выведено при выполнении следующей команды при a = 5 и b = 3?
а) print( a, ">", b, "!" ) б) print( "a>", "b!" )
в) print( "(", a, ")<(", a+b, ")" )
2. Запишите команду для вывода значений целых переменных a = 5 и b = 3 в следующем формате:
а) 3+5=? б) (5)(3)
в) a=5; b=3;
29 http://kpolyakov.spb.ru
05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин
г) Ответ: (5;3)
3. Вычислите значение вещественной переменной c при a = 2 и b = 3:
а) с = a + 1 / 3
б) с = a + 4 / 2 * 3 + 6 в) с = (a + 4) / 2 * 3
г) с = (a + 4) /(b + 3) * a
4. Вычислите значение целочисленной переменной c при a = 26 и b = 6:
а) c = a % b + b б) c = a // b + a в) b = a // b г) b = a // b + b
c = a // b c = a % b + a д) b = a % b + 4 е) b = a // b
c = a % b + 1 c = a % (b+1) ж) b = a % b
c = a // (b+1)
5. *Выполните предыдущее задание при a = –22 и b = 4.
6. Напишите программу, которая находит сумму, произведение и среднее арифметическое трёх целых чисел, введённых с клавиатуры. Например, при вводе чисел 4, 5 и 7 мы должны получить ответ
4+5+7=16 4*5*7=140
(4+5+7)/3=5.333333
7. Напишите программу, которая получает с клавиатуры коли-чество секунд и выводит то же самое время в часах, минутах и секундах.
8. Занятия в школе начинаются в 8-30. Урок длится 45 минут, перерывы между уроками – 10 минут. Напишите программу, которая получает с клавиатуры номер урока и выводит вре-мя его окончания.
9. Напишите программу, которая вычисляет стоимость не-скольких пирожков. Программа должна ввести три числа: цену пирожка (два числа: рубли, потом – копейки) и количе-
30 http://kpolyakov.spb.ru
05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин
ство пирожков. Требуется вывести сумму, которую нужно за-платить (рубли и копейки).
10. В игре «Русское лото» из мешка случайным образом выби-раются бочонки, на каждом из которых написано число от 1 до 90. Напишите программу, которая выводит наугад пер-вые 5 выигрышных номеров.
11. *Доработайте программу «Русское лото» так, чтобы все 5 значений гарантированно были бы разными.
12. Игральный кубик бросается три раза (выпадает три слу-чайных значения). Из этих чисел составляется целое число, программа должна найти его квадрат.
13. Требовалось написать программу, которая меняет местами значения двух переменных в памяти. Программист торо-пился и написал программу так:
a = b
b = a
Что получится, если вначале значения переменных были равны a = 1, b = 2? Как исправить программу?
14. *Попробуйте поменять местами значения двух переменных, используя только операции сложения и вычитания и не ис-пользуя дополнительные переменные.
15. Напишите программу, которая возводит полученное число в степень 10, используя только четыре операции умножения.
16. Напишите программу, которая получает с клавиатуры трёх-значное число и разбивает его на цифры. Например, при вводе числа 123 программа должна вывести «1,2,3».
17. Напишите программу, которая получает с клавиатуры че-тырёхзначное натуральное число и переставляет его первую и последнюю цифры, например, из числа 1234 должно по-лучиться число 4231.
18. Напишите программу, которая получает с клавиатуры че-тырёхзначное число и «вырезает » из него вторую цифру с
31 http://kpolyakov.spb.ru
05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин
начала, например, из числа 1234 должно получиться число 134.
19. Напишите программу, которая получает с клавиатуры че-тырёхзначное число и удаляет из него первую и последнюю цифры, например, из числа 1234 должно получиться число 23.
20. Напишите программу, которая получает с клавиатуры два целых числа, а и b (a < b), и выводит на экран 5 случайных целых чисел на отрезке [a; b].
21. Напишите программу, которая моделирует бросание двух игральных кубиков: при запуске выводит случайное число на отрезке [2; 12].
22. Напишите программу, которая случайным образом выбира-ет дежурных: выводит два случайных числа на отрезке [1; N], где N – количество учеников вашего класса. Какая про-блема может при этом возникнуть?
23. Напишите программу, которая получает с клавиатуры два вещественных числа, а и b (a < b), и выводит на экран 5 случайных вещественных чисел на отрезке [a; b].
Темы сообщений:
а) «Научный формат вывода чисел»
б) «Как получают псевдослучайные числа?»
32 http://kpolyakov.spb.ru
05.04.2019 К.Ю. Поляков, Е.А. Еремин
сложное условие операция «И» операция «ИЛИ» операция «НЕ»
логические переменные экспертная система
Информатика, 8 класс
Достарыңызбен бөлісу: |