Сегодня мы представляем Вам нашу новую книгу "30 часов БЕЙСИКа для начинающих". Надо сказать, что это наш первый опыт в том смысле, что до сих пор мы издавали только книги, написанные собственными руками. Сейчас, увы, дело обстоит так, что Вы, уважаемые друзья, читаете быстрее, чем мы пишем и потому нам пришлось обратиться к классике. Поводом для этого стали многочисленные обращения дать что-то для начинающих или хотя бы повторить наше самое первое издание, с которым мы дебютировали в 1989 г. - "Большие возможности Вашего "Спектрума".
Мы сразу отказались от идеи повтора нашей первой книги, ведь за эти годы она была перепечатана многими организациями, где слово в слово, где с добавлениями и, вполне возможно, она Вам встречалась под другим наименованием. Вместо этого мы сделали перевод с книги Клайва Пригмора (Clive Prigmore) и Пола Шрива (Paul Shreeve), которая является методическим пособием по "Спектруму" для Британского Национального колледжа заочного повышения квалификации (National Extension College).
Книга готова и ее оригинал-макет на дискете предлагается всем желающим самостоятельно заняться печатью по нашей лицензии и распространением. Мы же ждем ее выход из типографии не раньше ноября текущего года.
В этой книге нам больше всего понравился ход мысли автора. Все основные операторы БЕЙСИКа даются читателю на основе конкретных практических задач. Сегодня в качестве презентации новой книги мы даем одну маленькую главу, которая, как нам кажется, хорошо иллюстрирует методический подход автора. Глава посвящена членению стрингов оператором (...TO...).
Мы никогда не задумывались о том, что такое дата? Например, как компьютер представляет себе 23 июня 1973 года?
Мы знаем, что компьютер умеет хранить данные. И делает это двумя способами - в виде чисел или в виде символьных строк (стрингов). В виде чисел он уделяет по 5 байтов памяти на каждое число, а для стрингов - по одному байту на каждый символ. Так что же такое дата? Число или стринг?
23 июня 1973 года - вроде бы стринг, а если мы запишем то же самое как 230673 - то вроде бы это число. Давайте разбираться.
Если 230573 это число, то почему 110593 (11 мая 1993 года) меньше, ведь 93-ий год был позже 73-го? А если это стринг, то спрашивается, как компьютер сможет рассчитать, сколько лет будет в 93-м году молодому человеку, родившемуся в 73-м, да и вообще как тогда оперировать с календарем?
Ответ очень прост. Даты - это особый вид информации и работать с ними надо особо. Их надо вводить, как стринги, а хранить в памяти и обрабатывать надо как числа. И вводят их именно как стринги еще и потому, что не все элементы даты нам одинаково важны.
Например, если наша организация ежегодно в декабре месяце повышает заработную плату тем, кто отработал у нас более десяти лет, то для этого важен только год, в котором работник был зачислен. Если же наша организация занимается настройкой пианино и роялей, то каждые три месяца мы рассылаем всем своим зарегистрированным клиентам письмо-напоминание о том, что надо бы обслужить инструмент. В этом случае нас интересует только месяц, когда был последний раз обслужен данный клиент, а год и день не имеют никакого значения.
Наконец, для отдела жалоб и претензий, которому полагается разбираться с каждым заявлением в 30-ти дневный срок, важен день и месяц поступления заявления.
Итак, мы видим, что стринг, содержащий дату, имеет важное значение как единое целое, но есть серьезные причины для того, чтобы вырезать из него отдельные части и обрабатывать их отдельно. Таким образом, после того, как дата была введена в формате:
ДДММГГ или
ДД.ММ.ГГ или
ММ.ДД.ГГ или как угодно, нам нужно иметь возможность "вырезать" из нее отдельно дни, месяцы и годы и работать с ними порознь, но теперь уже как с числами.
Для этого нужен специальный оператор, и он есть. На "Спектруме" это делает оператор (...TO...).
Его полная форма, например, такая: x$ (a TO b)
Здесь из стринга x$ вырезается его часть, начинающаяся с символа, номер которого равен a и до символа с номером b.
Если x$ = "СПЕКТРУМ", то
x$ (5 TO 7) = "ТРУ"
Вы можете посмотреть, как это происходит, на примере следующей программы:
12 INPUT "Введите исходное слово";т$ 16 PRINT m$
20 INPUT "Начало вырезки"; a 40 PRINT a
50 INPUT "Конец вырезки"; b 60 PRINT b
80 LET n$=m$(a TO b)
90 PRINT m$;"(";a;" TO ";b;")=";n$
100 STOP
В некоторых других языках программирования, а также в некоторых других версиях БЕЙСИКа Вы найдете еще несколько операторов для вычленения субстринга из стринга. Нам бы не стоило на них и останавливаться, но Вы должны знать, как Вам реализовывать те же возможности, раз этих операторов у Вас нет.
LEFT$ (x$,k) - дает Вам k левых символов стринга. На "Спектруме" его аналогом будет:
x$(1 TO k).
RIGHT$ (х$,к) - дает k правых символов стринга. На "Спектруме" аналог подобрать труднее, приходится пользоваться функцией LEN, которую мы рассмотрели ранее:
x$(LEN (x$)-k+1 TO LEN (x$))
MID$(x$,k,m) - дает Вам m символов, начиная с k-го символа. С этим оператором дело обстоит проще:
x$(k TO k+m)
Книга написана в стиле дружеского диалога, имеет большое количество вопросов для самоконтроля и упражнений с решениями. Она доставит удовольствие не только тем, кто сам осваивает БЕЙСИК, но и тем, кто передает свой опыт другим.
Общий объем книги довольно велик, но мы "уложили" его в 208 стр. стандартного формата.
Спешите приобрести лицензию, а мы в это время планируем издание собственной книги "БЕЙСИК для подготовленного пользователя".
Ваш "ИНФОРКОМ".