Средства и методы организации диалога
ВБейсике сильно развиты команды и функции ввода-вывода данных, позволяющие осуществлять диалог (интерактивный интерфейс) с пользователем.
Для осуществления клавиатурного управления программой, помимо уже известных операторов ввода INPUT и вывода PRINT, используют функцию INPUT$(n), возвращающею значение введенной символьной строки из п символов с ожиданием, функцию INKEYS, принимающею символьное значение нажатой клавиши без ожидания, функции STICK(n), STRIG(O), определяющие коды стрелок или направления джойстика (внешнего управляющего устройства для компьютерных игр и тренажеров).
Часто при разработке компьютерных программ необходимо использовать коды клавиш в ASCI-представлении. Следующая программа печатает код нажатой клавиши и может оказаться полезной при отсутствии под рукой таблицы ASCI кодов.
Программа 77 5 ' ************ коды символов ************
10 cls
20 f$ = INPUT$(1)
30 PRINT "символ="; f$; "код="; ASC(f$)
40 PRINT 50 GOTO 20
Полную таблицу кодов символов можно получить и другим способом, см. программу 78.
Программа 78 5 ************ до коду печать символа **************
10 FOR i = 1 ТО 256
20 PRINT "код="; i, "символ="; CHR$(i)
30 a$ = INPUT$(1)
40 NEXT I
Функцию INPUTS часто используют для приостановки выполнения программы до нажатия любой клавиши:
п г$ = INPUTS(l): IF r$ = "" THEN n
В отличие от оператора INPLT ф\ нкцпя не ставит знак "?"и не высвечивает вводимые символы. Это свойство удобно использовать для защиты доступа к какой-либо информации. В следующем примере демонстрируется фрагмент проверки «своего» клиента с помощью пароля. Если при вводе четырехсимвольного пароля ("") трижды допущена ошибка, программа приостанавливает работу.
Программа 79 ;
5 ********** пароль *********'**
7 CLS
8 PRINT "нажми любую клавишу"
9 r$=INPUT$(l) : IF r$=""THEN 9
10 code$ = "1996" : k = О
20 INPUT "Имя"; а$
30 PRINT "Пароль"
40 р$ = INPUT$(4)
50 IF p$ = code$ THEN GOTO 80
60 k = k + 1 70 IF k < 3 THEN GOTO 30 ELSE PRINT "До свидания" : END
80 . PRINT 90 PRINT a$, "добро пожаловать"
100 END
С помощью строковой переменной INKEYS аналогично можно осуществлять временную задержку программы до нажатия любой клавиши:
n sS=INKEYS: IF sS=""THEN n
Ниже приведен пример назначения некоторых клавиш, управляющих процессом рисования точек (простейший графический редактор). Здесь код 27 (строка 20) означает клавишу Esc.
Программа 80
•^ i ********** простейший графический редактор ************ 5 SCREEN 2
6 х = 100: у = 100: h = 2
7 PSET (х, у)
10 g$ = INKEY$
20 IF g$ = CHR$(27) THEN 80
30 IF g$ = "A" OR g$ = "a " THEN х = х - h
40 IF g$ = "S" OR g$ = "s " THEN х = х + h
50 IF g$ = "Z" OR g$ = "z" THEN у = у + h
60 IF g$ = "W" OR g$ = "w" THEN у = у - h
70 GOTO 7
80 END
При разработке компьютерных программ полезно бывает использовать функциональные клавиши в качестве «горячих» (НОТ KEY). Назначение команд функциональным клавишам осуществляет оператор KEY. Его работу можно изучить по следующей демонстрационной программе.
Программа 81
5 ' ********** назначение функциональных клавиш ********
10 FOR i = 1 ТО 10
20 KEY i, "+ STR$(i)
30 NEXT i
40 KEY 30, "
50 KEY 31, "+ CHR$(13)
60 KEY LIST
70 KEY ON
80 r$ = INPUT$(1): IF r$ = ""THEN 80
Контрольные задания
1. Составьте программу, подсчитывающую количество слогов в заданном слове.
2. Разработайте собственный компьютерный вариант игры «Поле чудес».
3. Придумайте новые варианты программ шифрования и дешифрования текста.
4. Разработайте клавиатурный тренажер, используя игровые элементы.
5. Разработайте игру «Крестики-нолики».
6. Разработайте компьютерный вариант карточной игры «21».
ВЕРСИИ БЕЙСИКА
Бейсик характерен необычайным обилием версий, которые иногда настолько отличаются друг от друга, что могли бы считаться разными языками.
Хотя первая официальная публикация по Бейсику создавшей его группы разработчиков Дартмутского колледжа (США) относится к 1967 г., к этому времени уже было создано три «Дартмутских версии»; первая из них относится к 1964 г. После 1967 г. к разработке этого языка подключились крупные фирмы, и были созданы версии для систем с разделением времени, для сетевых информационных систем, для мощных ЭВМ третьего поколения (включая отечественную версию «Бейсик ЕС»), для малых ЭВМ.
Большой толчок развитию Бейсика дало появление персональных компьютеров. На какое-то время Бейсик с его естественной ориентацией на трансляторы интерпретирующего типа оказался доминирующим для «персоналок» языком программирования. Бейсик оказался пригоден для первых учебных и бытовых ЭВМ с малым объемом оперативной памяти и невысоким уровнем системного программного обеспечения. Зачастую Бейсик-интерпретатор выполнял и функции операционной системы (например, бывшая популярной в России в конце 80-х - начале 90-х годов версия MSX-Бейсик учебных компьютеров «Ямаха»).
Бейсик начала 60-х годов был прост и примитивен. Он насчитывал всего порядка двух десятков команд. Несмотря на простоту работы с Бейсиком, интерфейс пользователя оставлял желать лучшего. Вся информация (текст программы, «мусор», результаты работы, сообщения) размещались на скроллирующем экране. В силу несложной процедуры разработки транслятора-интерпретатора Бейсика каждый разработчик персональных компьютеров встраивал (обычно в ПЗУ) свой вариант Бейсика.
Бурное развитие микропроцессорной техники в 70-х, затем в 80-х годах и связанные с этим проблемы совместимости заставили разработчиков задуматься о стандарте Бейсика для персональных компьютеров. Аппаратное и программное развитие позволило существенно расширить возможности языка. Бейсик стал системой программирования со всеми сервисными утилитами и инструментарием программиста. Наибольшей популярностью для школьного и педвузовского образования приобрел Бейсик-MSX. Для большинства учебных компьютеров (Ямаха, Корвет, УКНЦ) были разработаны трансляторы версии Бейсик-MSX. Описание и практика работы с этим языком достаточно полно раскрыты в существующих популярных учебниках для вузов и школ.
Бейсик последних версий, в основном, отличается интерфейсом. Например, основное меню Турбо-Бейсика расположено в верхней строке экрана и представляет систему ниспадающих подменю, команды которых позволяют выполнять все необходимые действия по составлению, отладке и выполнению программ. В Турбо-Бейсике существуют несколько экранных режимов. Основной исходный экран представляет поле редактирования текста программы. Встроенный текстовый редактор выполняет две функции - редактирования текста и синхронной интерпретации строки. В этой связи строки нумеровать необязательно. Результаты работы программы, комментарии и сообщения интерпретатора представляются в текстовом экране (по умолчанию режим SCREEN 0). При работе с графикой изображения строятся в графическом экране, который имеет несколько режимов (режимы SCREEN n, п=2,3,...). Аналогичные возможности предусмотрены и в QBasic. Следует отметить, что в последних версиях Бейсика предусмотрены управляющие структуры. Введены операторы выбора SELECT CASE, циклические конструкции с пост- и предусловием WHILE-WEND, DO-LOOP-WHILE, DO-WHILE-LOOP, развит аппарат подпрограмм (SUB-CALL).
Особый интерес представляет система помощи - help (подсказок), имеющая контекстную структуру с возможностью копирования примеров из текста подсказок, что позволяет осваивать работу с языком программирования практически самостоятельно.
БЕЙСИК И ПАСКАЛЬ
Сопоставим эти популярные языки - не в деталях, а в целом. В Бейсике отсутствуют:
• ряд структур данных (множества, записи, перечисляемые и интервальные типы);
• ссылочные типы и динамические переменные (хотя в старших версиях возможно динамическое описание массивов);
• в большинстве версий - процедуры и функции (их слабыми аналогами являются подпрограммы);
• модули (и, следовательно, возможности организации больших внешних библиотек).
По работе с графикой, возможностям обработки строк (текстов) Бейсик не уступает Паскалю, а по возможностям организации диалога, пожалуй, даже превосходит.
Одна из неприятных особенностей Бейсика для тех, кто привык к структурной записи программного кода, состоит в том, что Бейсик провоцирует программиста к неструктурности. Впрочем, это вопрос навыков и привычек. По большому счету, однако, язык, в котором нет настоящих процедур и средств создания внешних библиотек, не может быть языком структурного программирования.
Усложненные версии Бейсика, в которых фигурируют истинные процедуры и другие средства, заимствованные из более мощных языков, производят неоднозначное впечатление, так как теряется одно из главных достоинств языка - простота (лучше уж тогда пользоваться во многих отношениях превосходящим Бейсик языком операционального программирования Фортран-77). При написании же коротких простых программ Бейсик реально не уступает Паскалю (и многие специалисты утверждают, что процедура программирования на Бейсике проще, хотя это спорно). Поскольку современные версии Бейсик-систем используют не интерпретаторы, а компиляторы, эффективность программ не ниже, чем аналогичных на Паскале.
ВВЕДЕНИЕ В ЯЗЫК ПРОГРАММИРОВАНИЯ СИ