Ввод данных

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

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

Вспомним один из скриптов прошлого занятия:

Если мы хотим предоставить человеку самому определять скорость, а не ограничивать ее только тремя вариантами, код станет проще:

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

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

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

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

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

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

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

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

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

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

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

Задания

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

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

Курс с ответами к заданиям и двумя дополнительными уроками:
pdf-версия