Вводим данные. Оператор INPUT.
Чем хорош Бейсик? Тем, что позволяет писать программы, весьма дружественно настроенные к пользователю, запрашивающие у него свойственные только ему параметры и решающие поставленную задачу для вполне конкретных данных вполне конкретного человека или любого другого объекта.
По негласным законам программирования хорошая программа не должна зависеть от исходной информации и обязана решать поставленную задачу для произвольных данных. Например, если это задача о расчете среднего роста учеников вашего класса, то программа должна быть написана таким образом, чтобы при введении данных о росте всех учеников результатом был бы средний рост вашего класса, а при введении данных о росте только мальчиков – средний рост мальчиков.
Это позволяет делать оператор input.
Оператор input обеспечивает запрос данных, необходимых для выполнения программы, непосредственно у пользователя, которые тот вводит прямо с клавиатуры. Это дает возможность вести диалог с пользователем и решать задачу, исходя из его конкретных запросов.
Работает оператор input следующим образом. В том месте программы, где вы хотите запросить у пользователя какие-то данные, вы должны написать input, а после него через пробел – переменную или несколько переменных, в которые будут занесены вводимые данные. Например:
CLS:?"Каков Ваш рост в см?" INPUT R ?"Ваш рост превышает 1 м на ";R-100;"см"
Эта элементарная программа работает так: оператор cls очищает экран, оператор print выводит на экран надпись "Каков Ваш рост в см?". Далее вступает в действие оператор input. Когда программа встречает этот оператор, она приостанавливает свое действие, выводит на экран знак вопроса, после которого мигает курсор. Таким образом, программа показывает, что она ожидает от пользователя ввода данных с клавиатуры. Неискушенный пользователь в этот момент обычно пугается, что программа зависла и начинает звать на помощь. Тот же, кто внимательно прочитает эту книгу, будет знать, что делать, а именно ответить на заданный вопрос, в данном случае – набрать на клавиатуре свой рост и нажать клавишу Enter.
После таких абсолютно правильных действий пользователя программа заносит введенное число в память в переменную с именем R, где оно и будет храниться, после чего переходит к исполнению следующей за input команды. В рассматриваемой программе она определяет вывод на экран результатов – надписи "Ваш рост превышает I м на ", затем компьютер вычислит разность между значением переменной R и 100 см, выведет ее на экран и добавит единицу измерения "см".
Очень запоминается следующий пример диалоговой программы, которая запрашивает у пользователя имя, а затем здоровается с ним:
CLS:?"Kaк вас зовут?" '; INPUT NAME$ Rem 'Знак $ указывает на то, что ожидается ввод Rem не числовой, а символьной информации ? "Здравствуйте"; NAME$
Эта программа очищает экран (оператор cls), затем выводит сообщение "Как вас зовут?", следом вступает в дело оператор input. При этом программа приостанавливает свое действие и ждет от человека ввода его имени, например Ваня, которое запоминается компьютером в переменной name$. После этого на экране появится сообщение "Здравствуйте, Ваня!". Ваня обычно радуется, как маленький, даже если это уже взрослый человек.
Для тех, кто в дальнейшем планирует изучать язык Паскаль, пожалуй, стоит запомнить именно такую конструкцию оператора input: сначала вывод сообщения оператором print, а затем запрос данных. Но Бейсик в этом смысле облегчает работу и позволяет объединить два действия в одном. Тогда обе вышеприведенные программы обретут иной вид.
Про средний рост:
CLS:INPUT "Каков Ваш рост в cm";R ?"Ваш рост превышает 1 м Ha";R-100; "см"
Про "Здравствуйте, Ваня!":
CLS: INPUT "Как вас 3OByT";NAME$ ? "Здравствуйте"; NAME$
То есть в операторе input сначала можно разместить подсказку (но только одну), а затем после точки с запятой указать имя запрашиваемой переменной, или, если их несколько, перечислить через запятую.
Кроме того, обратите внимание, что в модифицированных вариантах программ в вопросах опущены знаки вопросов, т. к. оператор input при работе сам выставляет знак вопроса.