Ввод данных в Scratch. Команда "спросить … и ждать"

Часто в программах требуется, чтобы человек выполнил какое-нибудь действие. Это можно назвать вводом данных в программу. Мы уже с этим сталкивались в скриптах, ожидающих от пользователя нажатия клавиш клавиатуры или мыши.

Помимо этого программы могут просить человека ввести какое-нибудь число или строку. После этого скрипт связывает полученные данные с именем какой-нибудь переменной, чтобы сохранить данные и потом их использовать.

Вспомним основную часть одного из примеров прошлого урока:

Здесь человек может изменять значение переменной "скорость", нажимая клавиши 1, 2 или 0. Но что, если мы не хотим ограничивать ее только тремя вариантами, а хотим, чтобы человек сам вводил значение скорости. В этом случае надо как-то попросить его ввести число. В Scratch для таких случаев предусмотрен блок "спросить … и ждать". С ним приведенная выше программа упрощается до такого скрипта:

Когда выполняется команда "спросить … и ждать", на сцене появляется поле, куда пользователь должен что-то ввести и нажать Enter на клавиатуре. Также он может ничего не вводить, а просто нажать Enter.

В Scratch команда "спросить … и ждать" блокирует свой скрипт, но не другие. Блокирует она свой скрипт до тех пор, пока не будет нажат Enter в поле ввода. После этого то, что было введено в поле, присваивается встроенной переменной "ответ", которая далее используется в скрипте.

Что будет, если человек введет не число, а слова? Переменная "ответ" будет содержать введенную строку текста. Но поскольку в команду "идти … шагов" бессмысленно подставлять строку, кот останется стоять на месте.

Допустим, мы хотим, чтобы в случае ввода текста, программа не пыталась бы его подставлять в команду "идти … шагов". Вместо этого на сцене появлялось бы сообщение о неправильном вводе.

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

Таким образом, если модуль ответа не совпадает с самим ответом, значит было введено что-то не то: либо строка, либо отрицательное число. Если же модуль ответа совпадает с самим ответом, значит было введено положительное число.

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

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

Второй вариант – создать одну переменную, в которой постепенно накапливать сумму.

Когда выполняется команда "задать <сумма> значение <сумма + ответ>", сначала выполняется подвыражение <сумма + ответ>. И только после потом результат этого подвыражения записывается в переменную "сумма".

Например, переменная "сумма" содержит число 3. Пользователь вводит число 5. Когда выполняется выражение <сумма + ответ>, из переменной "сумма" извлекается число 3 и к нему добавляется 5. После этого результат 8 записывается в переменную "сумма". Старое значение 3 переменной при этом затирается, то есть теряется.

Задания 1

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

Задания 2

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

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


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




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