Как Петя Бейсиков Тоню Соображалкину программировать учил
- Автор: Бруно Мартузан
- Жанр: Околокомпьютерная литература / Детская образовательная литература / Basic, Visual Basic, VB Script, VBA и т.п.
- Дата выхода: 1987
Читать книгу "Как Петя Бейсиков Тоню Соображалкину программировать учил"
ЗАЧЕМ НУЖНЫ СЛУЧАЙНЫЕ ЧИСЛА
Представь, что я хочу сделать игральную кость с девятью гранями, чтобы иметь случайные числа от 1 до 9, которые я буду давать ученику перемножать. А такой кости нет и вообще быть не может. Поэтому я интервал от 0 до 1 разбиваю на девять одинаковых частей и даю функции RND тыкать в этот интервал. Если она попадает в пятую часть, то я говорю, что мне выпала пятерка, если в третью, то тройка и так далее. На самом деле мне функция RND дает только число С между нулем и единицей и мне самому надо определить, в какую из частей оно попадает. Это делается так: полученное число делим на одну девятую и узнаем, сколько девятых оно содержит. Например, если С=0.76812, то, деля на 1/9, или, что то же самое, умножая на 9, получим 6.91308. Значит, это число находится за шестью девятыми, но ближе семи девятых, то есть в седьмой части.
RND выбрасывает кости
Как найти эту семерку или, в крайнем случае, шестерку? Здесь неоценимую помощь оказывает наша знакомая — функция INT. Скажи, чему равна целая часть 6.91308?
— Да шести же!
— Осталось немного. Чтобы рассчитать, в какую часть интервала попала функция RND, нужно добавить единицу к этой целой части. Все это делается в строке 170. И в строке 200, где выбирается второе число. Подчеркну, что, повторно обращаясь к функции RND, мы всякий раз получаем другое случайное число. Почти так же мы поступили бы и в случае, если нужно было бы иметь целое случайное число от 1 до произвольного числа М. Тогда вместо 9 в строке 170 подставили бы переменную М.
— Ты слишком далеко умчался. Я так и не поняла, что происходит в строке 180… Так-так, ты полученное число сравниваешь с единицей, и поскольку единицы тебе не нравятся, то ты переделываешь значение А с единицы на семерку.
— И подобным образом я поступаю с переменной В. Смотри строки 200, 210 и 220.
— Ладно. И строка 230 хочет у бедного ребенка узнать, какое же все-таки получается произведение.
— Да, действительно. Но остановись, эту строку полезно поизучать. Видишь пробелы после слов СКОЛЬКО БУДЕТ и также после и перед УМНОЖИТЬ НА? Они нужны потому, что значения переменных выводятся сразу после этих текстов — видишь точки с запятыми после А и В? И еще одна мелочь: после значения В выводим пробел, так как следующим идет оператор INPUT, который в той же строке покажет вопросительный знак. И будет красивей, если значение В и вопросительный знак отделим пробелом.
Кстати, этот вопросительный знак оператор INPUT показывает всегда, и отменить его показ нельзя, поэтому я в выводе перед вводом обычно задаю вопросы. Как в этом случае: СКОЛЬКО БУДЕТ, а не НАЙДИ или как-то еще по-другому.
— Прекрасно. Ученик ввел ответ, и ты в строке 250 сравниваешь этот ответ с правильным результатом.
— Если все правильно, я сочиняю следующий пример. При этом, как видишь, я ухожу на оператор NEXT, чтобы увеличить значение переменной цикла — счетчика примеров и вообще чтобы цикл работал как надо.
— А если ответ неправильный, увеличиваешь счетчик сделанных ошибок и выводишь неприятное сообщение.
— Еще и правильный ответ, чтобы человек знал.
— Сейчас цикл уже закончен, все примеры рассмотрены и мы находимся на строке 290. Что такое было К? Количество ошибок. Проверяем, не нуль ли количество ошибок?.. Если нуль, то идем на строку 360, А если не нуль… A-а! Выводится количество правильных и неправильных ответов. Да?
— Совершенно верно.
— И что это за Р1 в строке 310? Оценка? И так ты вычисляешь оценку?!