КАК ЗАСЕЯТЬ ДВУХМЕРНОЕ ПОЛЕ
В статье «Случайны ли случайные числа» («Наука и жизнь», № 10, 1986 г.) М. Максимов рассказал, что встроенный генератор псевдослучайных чисел FRAN() имеет ряд недостатков. Особенно ярко неслучайный характер последовательности проявляется, если при построении двухмерной гистограммы в качестве значений координат каждой следующей точки выбирать абсолютную величину очередного случайного числа - рисунок слева. Есть, однако, простой способ, позволяющий значительно улучшить двухмерное распределение FRAN(). Между двумя последовательными выборками чисел нужно сделать одну или две «холостые» выборки, обращаясь к генератору, например, с помощью команды X FRAN(). Время выполнения программной строки возрастает при этом всего на 0,02 с, а картина заметно улучшается, - рисунок справа. Нельзя, однако, забывать, что такой способ имеет и оборотную сторону. Это уменьшение длины псевдослучайной последовательности до первого повторения. Теперь максимальная длина последовательности всего около 11 тысяч чисел.
И ещё об одной возможности. Генератор FRAN() использует для своей работы ячейку памяти с десятичным адресом 956, расположенную в системной области ОЗУ. Считывая после каждого обращения к генератору содержимое этой ячейки, например, командой FX(1,1674), можно получить распределение псевдослучайных целых чисел в диапазоне от -32768 до 32768, по своим свойствам ничем не отличающееся от распределения FRAN().
Ю. ЗАЛЬЦМАН («МП-клуб», г. Алма-Ата).
ПРОГРАММА «ТЕЛЕФОН»
Возможности «Электроники БК-0010», не ограничиваются вычислениями, рисованием на экране, воспроизведением музыки и речи. Микро-ЭВМ можно на время превратить в электронный телефон с кнопочным набором номера, однако для этого прежде всего нужно собрать схему, изображённую на рисунке, и подключить её к разъёму порта ввода-вывода, Транзисторы Т1, Т2 - КТ608, КТ801.
Загрузив программу в оперативную память компьютера и запустив её, можно снять трубку. Для этого предназначена команда «;». Затем следует цифровыми клавишами набрать нужный номер. Для импровизированного электронного телефона достаточно одной телефонной трубки, но можно подключить и обычный телефонный аппарат. Для того, чтобы положить трубку, предусмотрена команда «S», но когда после одного разговора требуется набрать следующий номер, то без этой команды можно обойтись, вновь набрав «;» и номер.
2.1 X FP(1,177777); X FP(2,1); S U=1 2.4 S N = FCHR(-1); X FCHR(N) 2.46 I (N-59) 2.47,5.1, 2.47 2.47 I (N-45) 2.48,6.1,2.48 2.48 I (N-83) 2.5,10.1,2.5 2.5 S T(U)=N-48; S K(U)=T(U); I (T(U)-10) 2.7, 2.4, 2.4 2.7 I (T(U)) 2.4,2.75,2.8 2.75 S T(U)=10 2.8 X FP(1,2); F R=1,T(U); D3 2.9 X FP(2,1); X FP(1,2); S U=U+1 ; G 2.4 3.1 X FP(1,1); X FP(2,2); F B=1,2; 3.2 X FP(2,3); F B=1,2; 5.1 X FP(2,2); T !,"НАБИРАЙТЕ НОМЕР",!; F I=1,200; 5.3 X FP(1,2); G 2.4 6.1 X FP(2,2); T !,"ПОВТОР",!; F I=1,200; 6.2 X FP(1,2); F L=1,U-1; D 8; X FP(2,1); X FP(1,2) 6.3 G 2.4 8.1 T %1.00, K(U);F M=0,50; 8.2 F R=1, T(U); D 3 10.1 X FP(2,2); T !,"ЖДУ", !; G 2.4
Кратко поясню назначение отдельных строк программы:
2.1 устанавливает порт ввода-вывода в исходное состояние, необходимое для работы программы. 2.4-2.75 опрашивают клавиатуру и выбирают заданный режим работы или определяют набранную цифру. 2.8-2.9, 3.1-3.2 набирают заданную цифру, подобно тому, как это делалось с помощью диска номеронабирателя. 5.1-5.3 переводят микро-ЭВМ в режим набора цифр, что соответствует режиму поднятой трубки. 6.1-6.3, 8.1-8.2 организуют режим повторного набора номера. БК извлекает из памяти ранее набранный номер и повторяет цикл набора. 10.1 переводит микро-ЭВМ в режим положенной трубки, а программа переходит в режим ожидания.
Безусловно, программа - не предел совершенства, на её основе нетрудно создать телефон с памятью на 200, а то и более номеров, можно предусмотреть автоматический поиск по фамилии или имени абонента. Все, кто уже научился использовать речевые возможности БК, смогут сделать автоответчик, который будет, например, переадресовывать звонки на более удобное время, или попросит подождать минутку, пока хозяин возьмёт трубку.
В. ЯРОШЕНКО (г. Москва).
МАЛЕНЬКИЕ ХИТРОСТИ
Эта подборка, подготовленная по письмам наших читателей, посвящена возможностям «БК-0010», известным не всем его пользователям.
Ф. Суханов (г. Омск). Номер строки программы, составленной на Фокале, занимает в оперативной памяти компьютера 6 байт, независимо от того, идёт ли речь о номере 1.1 или 111.2. Память распределена так - пять байт отведены на номер, а ещё один байт нужен для хранения пробела, отделяющего номер от текста оператора. Начинающие программисты пишут программы упрощенно, по одному-два оператора в строке. Хотя такие программы наглядны, однако они занимают больше места в памяти машины, да и выполняются дольше. Опытный программист старается «уплотнять» строки, включая в них как можно больше операторов. Здесь, однако, важно следить за тем, чтобы не нарушалась логика программы, особое внимание обращая на те строки, где есть операторы цикла.
А. Константинов (г. Свердловск). «Руководство пользователя» рекомендует дублировать кассеты лишь через ЭВМ, то есть нужно считать текст с одной кассеты в оперативную память машины, а затем загрузить его на другую кассету. Если же программа не считывается, её все же можно «вытянуть» с кассеты, воспользовавшись двумя магнитофонами. С кассетного магнитофона я перезаписываю программу на катушечный, выбирая скорость ленты 19 см/с, а считываю программу в память компьютера уже на скорости 4 см/с. Восстановленную таким образом программу можно, как обычно, переслать из памяти компьютера на кассету.
ПОМОЖЕТ КОМПЬЮТЕР
Подавляющее большинство недорогих отечественных и зарубежных ЭВМ подключается к домашнему телевизору - он используется как дисплей. Между тем компьютер может нарисовать на экране отладочную таблицу, которая позволит проверить важные характеристики изображения (линейность строк и кадров, сведение лучей) и выявить геометрические искажения.
Я делал такую проверку с компьютером БК-0010, но ясно, что его может заменить любой компьютер с достаточно развитой графикой. Для настройки телевизора, я ввожу программу.
1.1 А "М=", М 1.2 S Х=0; S Y=0; S К=300 1.3 S G=K/M; S V=G*0,75 1.4 X FT(0,X,K); X FV(1,X,0);S X=X+G 1.5 I (X-K) 1.4, 1.6 1.6 X FT (0,M,Y); X FV(1,0,Y);S Y=Y+V 1.7 I (Y-M) 1.6,1.8 1.8 Q
Перед тем как запустить её командой GOTO в командной строке, я очищаю экран и убираю курсор клавишами СБР и КУРСОР. После нажатия клавиши ВВОД на экране появляется запрос машины о числе линий «М=». М - любое положительное число, не превышающее размера сетчатого поля К = 300. Обычно я использую сетку из 15 линий. Достаточно набрать М, нажать клавишу ВВОД, и машина примется рисовать таблицу. Дальнейшая настройка телевизора ничем не отличается от традиционной.
К. ЦЕГЕЛЬСКИЙ.
(г. Львов).