Случайные числа в Scratch

В некоторых сферах программирования, например, при разработке игр, часто используются случайные числа. Обычно в язык программирования встроен своего рода генератор таких чисел, который выдает очередное случайное число, когда программист об этом просит, то есть дает специальную команду.

На самом деле числа не случайные, а псевдослучайные, так как вычисляются согласно заложенной в генератор формуле. Но нас сейчас это не волнует. Для нас они выглядят как случайные, и этого достаточно.

В Scratch команда-генератор случайных чисел находится в зеленом разделе "Операторы" и имеет два поля для ввода чисел.

Блок "выдать случайное от … до …" генерирует случайное число в промежутке от первого указанного числа до второго включительно. Например, если дана команда "выдать случайное от 10 до 30", то программа выдаст любое число, которое не меньше 10 и не больше 30. Это, например, может быть число 10, а может быть 17, или 25. Также возможно получить число 30.

В Scratch допустимо сначала указать большее число, а затем меньшее. Например, "выдать случайное от 100 до 50". Команда и в этом случае будет правильно работать и генерировать любое число от 50 до 100.

Кроме того, можно указывать отрицательные и дробные числа. В последнем случае целая и дробная часть разделяются точкой, а не запятой.

В Scratch блоки-команды, выглядящие как прямоугольники со скругленными углами, выдают какое-то значение, то есть данные. Можно сказать, информацию. Если ее никуда не передать, то она потеряется, забудется. Так в примере выше мы не просто вызываем генератор случайных чисел, а еще передаем данные (полученное от него случайное число) в команду "сказать …", то есть сразу используем их.

Однако можно сохранить число в переменной и потом много раз обращаться к нему в программе.

В этом примере переменная "скорость" может принять любое значение от -3 до 3 включительно. В том числе это может быть 0. И тогда спрайт будет стоять на месте, даже если часть программы, находящаяся в цикле "повторять всегда" будет выполняться. Получится, что программа зависнет, так как кот никогда не дойдет до края. Поэтому мы используем блок "стоп этот скрипт" в первой ветке сценария.

Разработчик этой программы решил, что отрицательное значение случайного числа будет обозначать желание кота пойти налево, а положительное ‒ направо. В Scratch можно использовать отрицательные числа в блоке "идти … шагов". Однако в этом случае спрайт начинает пятиться задом. Чтобы такого не было, берется модуль от случайного числа, а его знак влияет на направление, куда кот будет повернут.

Рассмотрим пример с циклом "повторять пока не …". Составим программу, в которой человеку предлагается угадать загаданное компьютером число.

Итак, чтобы компьютер загадал случайное число, нам нужна команда "выдать случайное от … до …". Это число надо будет где-то сохранить, чтобы потом сравнивать с тем, что вводит человек. Значит, нам понадобиться переменная.

Человек должен отгадывать число до тех пор, пока не отгадает. Значит, нам нужен цикл "повторять пока не …". Что значит, пока не угадает? Это значит, что пока то, что ввел человек, не совпадет с тем, что загадал компьютер, цикл должен продолжать крутиться и все просить и просить ввести очередное число.

В случае совпадения чисел, цикл должен прекращать свою работу, а на сцене должно появляться поздравление.

Задание 1

Переделайте скрипт про угадывание числа так, чтобы

  1. компьютер загадывал число от 1 до 100.

  2. Если человек вводит число, которое больше загаданного, то программа должна говорить ему "слишком много".

  3. Если человек вводит число, которое меньше загаданного, то программа должна говорить ему "слишком мало".

Подумайте, когда программа выполняется, какой способ отгадывания числа самый оптимальный. То есть как нужно отгадывать число, чтобы угадать его за меньшее количество попыток?

Задание 2

Составьте код, согласно которому, кот переходит в случайное место на холсте. Однако диапазон случайности задает человек, то есть указывает минимум и максимум как для координаты x, так и y.

Задание 3

Найдите в коллекции Scratch спрайт Bat (летучая мышь). Составьте сценарий ее метания по сцене в течение 10 секунд со случайными скоростью, направлением, сменой этих характеристик. Среди прочего для выполнения задания вам понадобится блок "сбросить таймер" и встроенная переменная "таймер", которые находятся в разделе "Сенсоры".

Задание 4 (сложное)

Составьте программу, которая предлагает человеку решить пять примеров. Каждый пример состоит из одного арифметического действия, которое может быть сложением, вычитанием, умножением или делением (результат деления следует округлять до целого). Действие и числа для каждого примера должны определяться случайно. В конце кот должен сообщать, сколько было правильных ответов.

PDF-версия курса с ответами к заданиям


Программирование в Scratch. Курс




Все разделы сайта