164____________________________________________

должно соответствовать переводу из десятичной системы в шестнадцате-ричную и из шестнадцатеричной в десятичную. Опять же ради удобства утилиты должны принимать код числа, который может состоять из нескольких десятков разрядов как параметр команды и выдавать результат на экран дисплея. Утилиты должны выявлять грубые ошибки ввода (отсутствие параметра или символы не соответствующие цифрам) и выдавать сообщения об этих ошибках.

При разработке таких программ необходимо ознакомиться со способами решения нескольких задач. Во-первых, нужно научиться запускать программу не из среды QBasic, а из среды MS DOS и возвращаться в последнюю по завершению работы программы. Способ решения этой задачи уже изложен. Во-вторых, нужно научиться читать параметр команды запускающей программу. Для этой цели в среде MS DOS имеется параметр COMMAND, но, как мы уже выяснили, он отсутствует среди доступных нам параметров ENVIRON$. Поэтому придется читать команду со страницы вывода. В-третьих, нужно разработать такие алгоритмы перевода чисел из одной системы счисления в другую, которые не ограничены разрядностью представляемых в QBasic чисел.

Начнем с последней задачи. Та конкретная запись числа, которой вы пользуетесь, это отнюдь не само количество, а только его закодированное представление в позиционной системе счисления. Для математической постановки задачи перевода необходимо представить выражение, позволяющее по коду числа получить его значение. Пусть некоторое число закодировано в позиционной системе счисления с основанием Р цифрами A(I) и содержит м разрядов. Тогда его значение может быть представлено как многочлен и вычислено по формуле:

АЩ*?^ + A(2)*PA(M-1) + A(3)*P^(M-2) + ... + А(М-1)*Р + А(М)

Поскольку вы привыкли вычислять значения с использованием кодов чисел, это выражение кажется тавтологией, то есть попыткой объяснить некоторое понятие через само объясняемое понятие. Поэтому обратимся к смысловому содержанию этой формулы. Возьмем в качестве воображаемого объекта счета спички и предположим Р=Ю. Каким образом при помощи этих спичек определить представляемое формулой количество? Необходимо взять пустую коробку и положить в нее А(М) спичек, добавить туда А(м-1) десятков спичек, затем А(м-2) сотен и А(М-З) тысяч спичек и так далее до тех пор, пока не будут учтены все разряды числа. В итоге в коробке окажется количество спичек заданное кодом числа. И это количество не зависит от объекта счета (мы можем позволить нашему воображению считать не только спички, но и любые другие исчисляемые предметы).

В системе счисления с основанием о число с тем же значением представляется цифрами в (J) и содержит N разрядов:

BCL^O^N + B(2)*QA(N-1) + B(.3)*Q^W-2) + ... + B(N-1)*Q + В (N)

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