Основы программирования на языке QBasic (Запуск QBasic)
Содержание:
Введение
С развитием и совершенствованием ЭВМ тесно связано появление средств программирования. Для машин первого поколения они составлялись в машинных кодах. Это был трудоемкий процесс, поскольку программисту самому приходилось распределять память под программу, исходные данные и результаты. Разобраться в такой программе, модифицировать ее было практически невозможно. Еще в период перехода к машинам второго поколения (50-е годы) возникла необходимость в создании больших и сложных программ. Процесс их составления в машинных кодах резко снижал эффективность использования ЭВМ. Этот период характеризовался появлением первых алгоритмических языков программирования. Они отличались наглядной формой реализации алгоритма, использованием привычной математической символики, ограниченным набором ключевых слов. Основное их достоинство - универсальность.
Работа с программой, выполненной на алгоритмическом языке, очень упрощалась за счет относительной простоты написания, возможности модифицирования. Совершенствование вычислительной техники, а именно увеличение объема памяти и быстродействия машин, делало программирование на алгоритмических языках все более распространенным и перспективным. В настоящее время существует большое количество алгоритмических языков, которым присущи как общие, так и отличительные черты. Это Фортран, Бейсик, Паскаль и др. На их примере можно наглядно увидеть те характерные особенности, которые присущи программированию на алгоритмических языках вообще.
Бейсик (BASIC) – это сокращение английских слов Beginners All-purpouse Symbolic Instraction Code, что в переводе означает “многоцелевой язык символических инструкций для начинающих”. Он был разработан профессорами Дартмутского колледжа (США) Т. Куртцем и Дж. Кемени в 1965 году для обучения студентов, незнакомых с вычислительной техникой. Этот язык, напоминающий Фортран, но более простой, быстро стал очень популярным. Особенно его популярность повысилась с появлением персональных компьютеров, где он стал одним из основных языков программирования. Существует множество версий языка Бейсик и все они имеют особенности. В каждой из них можно выделить общее подмножество, в котором отражены характерные (стандартные) грамматика, синтаксис и семантика языка. Наиболее популярной версией является Qbasic, благодаря удобному интерфейсу и представлению пользователю ряда сервисных возможностей, присущих современным системам программирования. Поэтому тексты представленных в работе программ отлажены именно в ней.
ГЛАВА 1. ИНТЕРПРЕТАТОР QBASIC
Интерпретатор QBasic входит в стандартную поставку MS-DOS. Создаваемые с его помощью программы (точнее, тексты программ) можно распространять в любых целях, в том числе и коммерческих. Конечно, чтобы эти программы работали, необходимо, чтобы у пользователя тоже был установлен QBasic.
Этот интерпретатор явился завершающим продуктом в серии интерпретаторов Бейсика для MS-DOS корпорации Microsoft. Предшествующими версиями были BASICA и GW-BASIC. Вот основные отличия QBasic (версия 1.1, именно она будет рассматриваться в дальнейшем) от прежних интерпретаторов:
• модульная организация программы (возможность хранения логически законченных частей программы в разных модулях и быстрое перемещение между ними);
• новые, более мощные операторы с гибкой структурой;
• возможность определения собственных структур данных;
• поддержка чисел в разных форматах и с большей разрядностью (32 разряда помимо 16);
• работа с разными мониторами (черно-белыми Hercules и Olivetti) и в режиме VGA;
• увеличенный объем памяти для хранения программы и данных (160 Кбайт вместо 64 Кбайт);
• очень хорошая встроенная система отладки;
• расширенная диагностика ошибок (всего интерпретатор распознает 74 ошибки во время выполнения программы);
• новый многооконный интерфейс пользователя;
• динамический контроль синтаксиса (правильности написания) операторов во время их ввода в редакторе;
• дополнительные возможности редактора (поиск и замена).
1.1 Запуск QBasic
QBasic располагается в каталоге, куда была инсталлирована MS-DOS (как правило, это каталог DOS на диске С:, то есть C:\DOS). Файл интерпретатора называется qbasic.exe, файл со справочной системой (на английском языке) — qbasic.hlp. Когда QBasic будет активно использоваться, он создаст в каталоге, откуда происходит его запуск, файл qbasic.ini, который хранит информацию о текущих настройках: различных режимах работы, цветах редактора и т. д.
Запускается QBasic из командной строки:
qbasic.exe <ENTER>
При этом в командной строке можно задать любые из семи следующих параметров:
• /В (QBasic запускается в черно-белом режиме);
• /ED (QBasic будет использовать для работы с текстами программ не встроенный редактор, а отдельный стандартный редактор MS-DOS);
• /G (специальный режим работы редактора на весьма устаревших CGA-мониторах , позволяющий с повышенной скоростью обновлять экран в графическом режиме);
• /Н (отображение максимально возможного на имеющемся оборудовании числа строк в режиме редактора);
• /MBF (режим использования чисел в IEEE-формате как чисел в формате Microsoft-Binary);
• /NOHI (работа с мониторами, не поддерживающими режимы отображения символьной информации повышенной интенсивности);
• /RUN {имя-файла} (загрузка файла с программой на Бейсике и немедленный ее запуск без промежуточного отображения оболочки интерпретатора и действий по ручному выбору нужного файла).
Здесь и в дальнейшем в фигурных скобках указывается описание параметра команды или оператора. В реальной команде вместо этого должно быть использовано подходящее значение.
Глава 2. РЕДАКТОР QBASIC
2.1 Работа с редактором
После запуска интерпретатора экран примет вид, изображенный на рисунке 1. Если нажать клавишу ENTER, появится окно справочной системы QBasic; если нажать клавишу ESC, то курсор окажется в первой позиции первой строки встроенного редактора QBasic. Из него справочную систему можно вызвать с помощью комбинации клавиш SHIFT+F1.
Рис. 1. Стартовый экран программы QBasic
Набор текста осуществляется как в любом текстовом редакторе. В правом нижнем углу QBasic выводятся текущие номер строки и номер позиции в строке, где расположен курсор. Максимальная длина строки в редакторе ограничена 256 символами.
Для добавления новой строки применяется клавиша ENTER, для перехода в начало следующей строки — CTRL+ENTER. Чтобы перейти от режима вставки текста к его замене, используется клавиша INSERT (когда редактор работает в режиме замены, курсор принимает вид большого прямоугольника). Для перемещения курсора в начало текущей строки служит клавиша НОМЕ, для перемещения к концу — END. Чтобы перейти в начало текста, надо нажать CTRL+HOME, чтобы перейти в конец всего текста — CTRL+END. Произвольное перемещение по тексту осуществляется с помощью курсорных клавиш, удаление символа, на котором стоит курсор, — с помощью клавиши DELETE. Для листания текста страницами вверх и вниз служат, соответственно, клавиши PAGE UP и PAGE DOWN.
Выделение частей текста тоже происходит с помощью курсорных клавиш, только при этом удерживается нажатой клавиша SHIFT. Выделенный текст можно скопировать в буфер (CTRL+INSERT), скопировать в буфер, а из редактора удалить (SHIFT+DELETE) или просто удалить (DELETE).
Вставка текста из буфера происходит по нажатию комбинации клавиш SHIFT+INSERT. Удалить текущую строку можно с помощью CTRL+Y. Удалить остаток текущей строки (начиная от курсора) — нажав CTRL+Q, а затем клавишу Y. Чтобы удалить остаток текущего слова, начиная с курсора, надо нажать CTRL+T.
2.2 Закладки
Во время составления программы зачастую приходится перемещаться между несколькими ее частями, чтобы припомнить, что там было реализовано и как эти части согласуются друг с другом. Для такого быстрого перемещения пригодятся закладки (их может быть до четырех штук).
Закладка устанавливается нажатием комбинации клавиш Ctrl+K, а затем — цифры (0,1, 2 или 3). При этом внешне ничего не произойдет: сама закладка на экране не отображается. Перейти к ранее установленной закладке можно, нажав комбинацию клавиш Ctrl+Q и затем соответствующую цифру. При этом курсор переместится на место, где закладка была установлена.
2.3 Работа с меню
Ряд возможностей редактора дублируется главным меню QBasic. Чтобы попасть в это меню (раздел File), надо нажать клавишу ALT. При этом текущий раздел меню примет черный фон. В любой из разделов меню можно также попасть, нажав комбинацию клавиш ALT и первой буквы раздела (например, ALT+E приводит к выделению раздела Edit).
Рис. 2. Управление программой QBasic при помощи меню
Перемещение по меню происходит при помощи стрелок, возврат в редактор осуществляется нажатием клавиши ESC.
Теперь вырезать текст в буфер можно и с помощью меню: в разделе Edit для этого выбирается пункт Cut. Для копирования текста служит пункт Сору, для вставки — Paste, для удаления — Clear.
2.4 Работа с файлами
Чтобы создать новый файл, в котором будет записываться программа на Бейсике, надо выполнить команду File > New (она выполняется по умолчанию при запуске QBasic). Чтобы сохранить текущий файл, надо выполнить команду File > Save. Если сохранение происходит в первый раз, QBasic спросит, в какой каталог и под каким именем сохранить текущий файл.
Рис. 3. Сохранение программного файла
Чтобы сохранить текущий текст в новом файле, надо выполнить команду File > Save As. Чтобы загрузить в редактор другой файл, надо выполнить команду File > Open и в диалоге выбора указать соответствующий файл.
Рис. 4. Выбор открываемого программного файла
Текущий текст программы можно напечатать, выполнив команду File > Print. Выйти из QBasic можно с помощью команды File > Exit.
2.5 Поиск и замена текста
Поиск нужной информации в тексте программы осуществляется нажатием клавиш Ctrl+Q и затем F. В возникшем на экране диалоговом окне в строке Find What вводится искомый текст. Флажок Match Upper, будучи включенным, служит для задания режима поиска с учетом регистра заглавных букв, флажок Whole Word - для поиска указанного слова целиком (а не как подстроки в другом слове).
Чтобы начать поиск, надо использовать кнопку <Ок>, чтобы отменить — кнопку <Сапсе1>. Если строка не найдена, появится сообщение, извещающее об этом, а если найденная строка, подсветится как выделенная часть текста.
Рис. 5. Поиск заданного текста в программном файле
Для перемещения между строками ввода, флажками и кнопками внутри различных диалоговых окон QBasic служит клавиша TAB.
Продолжить поиск можно, нажав клавишу F3. При этом никакого диалогового окна не появляется, а поиск продолжается на основе ранее введенной строки, начиная с позиции курсора.
Команды поиска и продолжения поиска доступны и из меню (раздел Search, пункты, соответственно, Find и Repeat Last Find).
Рис. 6. Управление контекстным поиском через меню
Чтобы заменить текст, надо нажать Ctrl+Q и затем А или в разделе меню Search выбрать пункт Change. В возникшем диалоговом окне в строке Find What: указывается искомый текст, в строке Change То: — текст, на который будет произведена замена. Флажки Match Upper и Whole Word были описаны в предыдущем разделе.
Рис. 7. Управление контекстной заменой текста
Для начала процесса замены служит кнопка Find and Verify. Когда она будет нажата и редактор найдет текст, соответствующий введенному в строке Find What:, он выделит этот текст и спросит, надо ли в данном случае производить замену (кнопка <Change>) или нет (кнопка <Skip>).
После каждой выполненной замены процесс автоматически продолжится, пока не будет просмотрен весь текст. В любой момент этот процесс можно прервать нажатием клавиши ESC или с помощью кнопки <Сапсе1> в окне запроса замены.
В диалоговом окне замены имеется еще одна кнопка — <Change АН>. Если использовать ее, то замена будет произведена по всему тексту без вызова только что описанного окошка подтверждения.
Рис. 8. Выполнение контекстной замены
2.6 Работа с несколькими окнами
Редактор QBasic позволяет работать одновременно с несколькими окнами. Это удобно, когда требуется модифицировать текст программы, и в то же время не упускать из виду логически связанных с изменяемым блоком частей.
Рис. 9. Разбиение окна программы на несколько частей
Чтобы разделить текущее окно редактора на две части, надо выполнить команду View > Split. При этом возникнет новое окно редактора.
Переключаться между окнами можно с помощью клавиши F6. Закрывается одно из двух окон редактора (текущее активное окно) повторным выполнением команды Split.
В нижней части QBasic расположено окно Immediate. Это окно предназначено для немедленного выполнения отдельных операторов Бейсика. Оно может быть использовано для первого знакомства с возможностями этого языка, в качестве мощного калькулятора, а также в процессе отладки.
Работа с этим окном будет описана позднее.
Размеры каждого окна можно менять. Для этого используются комбинации клавиш ALT+- и ALT++. Текущее окно можно раскрыть на всю величину экрана с помощью комбинации клавиш Ctrl+F10.
2.7 Настройка QBasic
Настройки редактора и QBasic доступны в разделе меню Options.
Пункт Display позволяет задать цветовое оформление редактора. Переключатели:
1. Normal Text
2. Current Statement
3. Breakpoint Lines
задают цвета соответственно для обычного текста, строки, содержащий текущий выполняемый оператор, и строки, для которой установлена точка прерывания работы программы. Выделив с помощью переключателя нужный раздел, в списках Foreground (цвет символов) и Background (цвет фона) можно подобрать нужную комбинацию цветов.
Доступные цвета
Black |
Черный |
Brown |
Коричневый |
Blue |
Синий |
White |
Белый |
Green |
Зеленый |
Gray |
Серый |
Cyan |
Голубой |
Pink |
Розовый |
Red |
Красный |
Yellow |
Желтый |
Magenta |
Фиолетовый |
Если к началу названия цвета приписано Вr (например, BrGreen), то это означает цвет с повышенной яркостью.
Можно также отключить вывод полос прокрутки (флажок Scroll Bars) и указать, сколько пробелов будет вставляться в редакторе при использовании клавиши табуляции TAB (поле ввода Tab Stops:). После выполнения всех настроек для их сохранения надо нажать <Ок> (для отказа — <Сапсе1>).
Пункт Help Path позволяет задать путь к файлу справочной системы qbasic.hlp, если он находится не в одном каталоге с интерпретатором qbasic.exe.
Пункт Syntax Checking (Проверка синтаксиса) работает наподобие флажка. Если он включен (в левой части этого пункта меню загорается точка), то после ввода очередного оператора Бейсика и нажатия клавиши ENTER (или CTRL+ENTER) редактор проверяет его корректность и в случае ошибки выдает предупреждение.
Pиc. 10. Автоматическое обнаружение нарушений синтаксиса
Если данный пункт отключен (его переключение осуществляется повторным выбором), то при вводе операторов Бейсика проверки их корректности не происходит. Такой режим работы удобен, например, при использовании редактора QBasic для ввода произвольной текстовой информации.
2.8 Немедленное выполнение команд
В окне Immediate (Немедленное выполнение) можно вводить команды Бейсика, сразу их выполнять и видеть результаты на экране. Например, перейдите в это окно с помощью клавиши F6, наберите текст
PRINT 2+2
и нажать клавишу ENTER (словно PRINT переводится с английского как «печатать»). Окно QBasic пропадет, вверху черного экрана появится число 4, а внизу — надпись Press any key to continue. Что же произошло?
Оператор Бейсика PRINT предназначен для вывода значения следующего за ним выражения на экран. Он вычислил значение выражения «2+2» (равное 4) и вывел его на экран, что вы и увидели. В принципе, целая программа на Бейсике может состоять из одного такого оператора. Тогда при ее запуске на экран просто выведется число 4.
Строка Press any key to continue означает: «Нажать любую клавишу для продолжения работы». Таким образом, QBasic выполнил действие, указанное в окне Immediate, вывел результат на экран и теперь ждет нажатия клавиши, чтобы вернуться обратно.
Выражение можно усложнить. В Бейсике доступны четыре арифметических действия: сложение (знак операции +), вычитание (-), умножение (*) и деление (/), а также возведение в степень (Л). Для управления порядком вычислений служат круглые скобки: ( и).
Так, чтобы вычислить значение выражения «(5 умножить на 6) в квадрате», надо записать
PRINT (5*6) ^ 2
и нажать клавишу ENTER. На экране вывода в строке за ранее напечатанной четверкой появится число 900 — после каждого своего выполнения оператор PRINT производит перевод на новую строчку.
Бейсик содержит немало математических функций, которые можно использовать для различных вычислений. Например, стандартная функция SQR вычисляет квадратный корень из числа: оператор PRINT SQR(121) напечатает значение 11.
PRINT 2+2 print 2+2 pRINt 2+2
Во всех случаях этот оператор выполнится корректно.
Но операторы Бейсика, хотя это и не обязательно, принято набирать заглавными буквами. Это общемировая практика, а истоки ее начинаются с первых реализаций этого языка, когда вводимые в компьютеры символьные данные еще не имели разделения по регистрам. Перевод названий операторов в верхний регистр QBasic выполнит автоматически.
А вот если случайно ввести не print, a primt, то QBasic сразу же сообщит о синтаксической ошибке.
Рис. 11. Синтаксическая ошибка, вызванная опечаткой в операторе
Нельзя разбивать операторы Бейсика на части пробелами. Следующие варианты записи недопустимы:
pr int 2+2
prin t 2+2
Интерпретатор просто не поймет, что имеется в виду.
Но пробелы можно произвольно вставлять между любыми логическими частями текста. Например, можно написать
PRINT ( 5 * 6) ^2
В дальнейшем во время отладки программы вам не раз придется воспользоваться окном Immediate и оператором PRINT для уточнения различных значений используемых объектов.
2.9 Справочная система QBasic
В ходе работы с интерпретатором QBasic наверняка будут встречаться незнакомые слова, выражения, команды. Все они определены в прилагаемой к QBasic справочной системе (она содержится в файле qbasic.hlp и должна располагаться либо в том же каталоге, где и сам интерпретатор qbasic.exe, либо в каталоге, указанном в настройках с помощью команды Options > Help Path). Эта система (полностью написанная на английском языке) вызывается командой Help > Index. В появившемся окне отобразится длинный список всех команд Бейсика в алфавитном порядке. Отыщите среди них интересующее вас слово, подведите к нему курсор и нажать клавишу F1. В появившемся окне будет кратко рассказано о значении этого слова.
А если вы неплохо знаете английский, то войдите из главного окна в раздел Contents, где все аспекты работы с QBasic разбиты на разделы.
Рис. 12. Содержание справочной системы программы QBasic
Глава 3. ПОНЯТИЕ О ПРОГРАММИРОВАНИИ В QBASIC
Программа на Бейсике составляется в QBasic в его текстовом редакторе. Она представляет собой набор операторов, которые последовательно выполняются и решают определенную задачу. С помощью операторов QBasic можно производить вычисления, хранить промежуточные результаты, осуществлять те или иные действия в зависимости от состояния созданных в программе объектов, выводить информацию на принтер или экран в текстовом или графическом виде, обрабатывать действия пользователя, работать с файлами, управлять памятью и реагировать на всевозможные исключительные ситуации и ошибки, которые могут возникнуть в ходе выполнения программы.
Но составить серьезную программу достаточно сложно. Для этого надо хорошо знать возможности Бейсика, выучить основные его операторы и, самое главное, постоянно практиковаться в написании новых и новых программ.
3.1 Переменные
Зачем нужны переменные
Переменная — ключевое понятие любого языка программирования. Переменные используются для хранения промежуточных значений, получаемых в процессе выполнения программы. Например, при работе программы- редактора в ее внутренних переменных записаны вводимые пользователем тексты, при работе с электронной таблицей в переменных располагаются значения отдельных ячеек и результаты вычисления формул, при работе с графической программой в переменных могут храниться, в частности, картинки. Вообще, информация о любом объекте операционной системы может быть записана и обработана с помощью переменных.
Чтобы программа понимала, какие данные хранятся в той или иной переменной, они делятся на типы: числовые, текстовые и т. д. Переменные конкретного типа могут содержать только корректную, соответствующую этому типу информацию. При попытке записать, например, в числовую переменную текст интерпретатор сообщит об ошибке и прервет работу.
Запись чисел
В переменных могут храниться числа или строки. Числа в Бейсике бывают целые или дробные, с десятичной частью. Дробные числа (их называют числами с плавающей точкой, так как во всех языках программирования принято отделять дробную часть десятичной дроби не запятой, а точкой) в свою очередь записываются как в обычной форме (в качестве десятичного разделителя используется символ точки «.»), так и в форме с экспонентой. Это требуется для того, чтобы представлять очень большие числа или очень маленькие числа. Например, записать число 1 230 000 000 (или 1,23 с 9 нулями) в Бейсике можно так:
1.23Е+9
Такая запись означает, что число 1,23 надо умножить на 10 в 9 степени.
А число 0,00000123 (или 1,23, деленное на 10 в 6 степени) будет выглядеть следующим образом:
1.23Е-6
Символ экспоненты Е используется, когда величина степени состоит из одной или двух цифр (Е5, Е99). Если величина степени состоит из трех цифр, то вместо символа Е применяется символ D:
5.5D+123
Перед отрицательными числами спереди указывается знак «-». Пробелы в записи чисел не допускаются. Вот правильно записанные числа:
-25
3.1415
2Е22
-0
7.34D-243
0.0
-2.67Е-44
Запись строк
Строки в Бейсике берутся в двойные кавычки (”). Максимальная длина строки — 32 767 символов, минимальная — 0 (пустая строка). Внутри строки допускается использование различных символов, в том числе и русских букв, например:
"Это строка"
"123,45 output \\"
Как добавить переменные в программу
Чтобы интерпретатор знал, какие переменные будут использоваться в программе, и зарезервировал для них место в оперативной памяти, эти переменные надо явно описать (еще говорят: объявить или декларировать). Для этого применяется оператор DIM. Он записывается так:
DIM {имя-переменной) AS {тип}
В качестве имени переменной может использоваться любая комбинация английских букв и цифр (без пробелов), начинающаяся с буквы. Длина этой последовательности должна быть не менее одного символа и не более 40.
Записываться переменные могут в любых регистрах, например Abcd3 или aBcD3, но интерпретатор автоматически выполнит приведение всех различных написаний одной и той же переменной к последнему использованному написанию.
Допустимых типов переменных в QBasic шесть. Они приведены в следующей таблице.
Название типа |
Диапазон значений |
INTEGER |
от -32 768 до 32 767 |
LONG |
от -2 147 483 648 до 2 147 484 647 |
SINGLE неотрицательное |
0 или от 2.802597Е-45 до 3.402823Е+38 |
SINGLE отрицательное |
от -3.402823Е+38 до -2.802597Е-45 |
DOUBLE неотрицательное |
0 или от 4.940656458412465D-324 до 1.79769313486231D+308 |
DOUBLE отрицательное |
от -1.79769313486231D+308 до -4.940656458412465D-324 |
STRING |
строка переменной длины (от 0 до 32 767 символов) |
STRING * n |
строка фиксированной длины (п символов, п — число в диапазоне от 0 до 32 767) |
Вот допустимые описания переменных:
DIM х AS INTEGER
DIM s AS STRING
DIM str AS STRING * 500
В одном операторе DIM можно указывать несколько переменных. Их описания отделяются друг от друга запятыми:
DIM I AS DOUBLE, si AS STRING * 500, sgl AS SINGLE
Бейсик не требует обязательного описания всех используемых в программе переменных. Если интерпретатор встречает переменную, которая не была до этого описана в операторе DIM, то он автоматически отводит ей место в памяти в зависимости от ее названия. По умолчанию считается, что не описанная ранее переменная имеет тип SINGLE.
Однако сохранить в переменной с названием, например, Х1, строку “текст” не удастся. Чтобы указать интерпретатору, что переменная имеет тип, отличный от SINGLE, к ней в конец надо приписать специальный символ, характеризующий ее тип.
Вот таблица символов, характеризующих тип переменной.
Тип переменной |
Символ, приписываемый в конец названия переменной |
INTEGER |
% |
SINGLE |
1 |
STRING (строка с переменной длиной) |
$ |
LONG |
& |
DOUBLE |
# |
Например:
i%
LognVar&
sgl d#
str$
Если некоторая переменная была описана в операторе DIM (например: DIM X AS STRING), то в дальнейшем к ней можно обращаться как с указанием символа, характеризующего тип (Х$), так и без него (X).
Если же переменная была произвольно введена в программу, а ее тип указан с помощью соответствующего символа, то обращаться к такой переменной можно, только обязательно записывая в конце символ ее типа (Х$). Обращение к переменной X (без $) будет расценено интерпретатором как обращение к другой переменной типа SINGLE.
Числа в других системах счисления
Если вы не знакомы со словами «шестнадцатеричная система счисления», то можете пропустить этот параграф — никакого влияния на ваше обучение программированию он не окажет. А если знакомы, то наверняка знаете, что помимо десятичной и шестнадцатеричной можно применять и другие системы счисления с любым основанием. В компьютерной области часто применяются еще две системы: двоичная и восьмеричная.
В Бейсике есть средства поддержки работы с числами, записанными в восьмеричной и шестнадцатеричной системах счисления. Чтобы их отличать от обычных десятичных чисел, в их начале указывается либо &Н (основание системы счисления — 16) либо &0 (О — не ноль, а буква; основание системы счисления — 8).
Например:
PRINT &HF ' печатается 15
PRINT &Н10 ' печатается 16
PRINT &О10 ' печатается 8
Плохой способ задания типов переменных
Как уже говорилось, переменные в программе можно использовать сразу, не описывая их с помощью оператора DIM. По умолчанию все неописанные переменные имеют тип SINGLE. Кроме того, можно задавать типы, которые будут соответствовать переменным в зависимости от их названия, по первой букве. Для этого в Бейсике имеется целый набор операторов. Каждый из них задает диапазон (или диапазоны) букв, которые будут определять тип переменных, начинающихся с этих букв.
Оператор |
Какой тип задается |
Оператор |
Какой тип задается |
DEFINT |
INTEGER |
DEFDBL |
DOUBLE |
DEFLNG |
LONG |
DEFSTR |
STRING |
DEFSNG |
SINGLE |
Например, при использовании приведенного далее оператора переменная Ys будет автоматически считаться переменной строкового типа.
DEFSTR a-h, x-z ' заданы два диапазона: abcdefgh и xyz
3.2 Нумерация операторов
Каждый оператор Бейсика может иметь свой номер. Так повелось еще с самых первых версий этого языка, когда требование нумерации каждой строки программы было обязательным. В QBasic строки можно не нумеровать, но такая возможность может быть полезной, например, при использовании старых, с номерами операторов, текстов программ.
Номер ставится слева от оператора и отделяется от него одним или несколькими пробелами. Номер должен быть неотрицательным числом (возможно, с точкой). Разрешается использовать числа, следующие друг за другом в произвольной последовательности. На порядке выполнения операторов нумерация не сказывается. В частности, вышеприведенную программу из трех строк можно переписать так:
0 DIM str$
2.0 Str$ = "всем привет"
300 PRINT Stir $
или так:
12 DIM Str$
30.0 Str$ = "всем привет"
0 PRINT Str$
3.3 Комментарии
Программу очень полезно сопровождать комментариями, чтобы в дальнейшем сразу понимать, что происходит в различных ее частях. Комментировать нужно не оператор Бейсика, а выполняемое им действие. Например, оператор
Speed# = 60
правильно снабдить не очевидными словами «в переменную Speed# записывается число 60», а осмысленным текстом: «значение скорости делаем равным 60 км/час».
Комментарий может содержать любой текст. Он начинается с символа 1 (одиночная кавычка). Все символы, следующие за такой кавычкой до конца текущей строки, интерпретатором просто пропускаются.
Speed# = 60 ' Значение скорости делаем равным 60 км/ч Комментарий можно начинать и с первой позиции:
вся эта строка - комментарий
Кроме того, при записи операторов Бейсика в тех местах, где допускаются пробелы, их можно использовать в неограниченном количестве, как правило, с целью повышения удобочитаемости исходного текста программы. Например:
10 Speed# = 60 ' пробелы хороши в меру
3.4 Арифметические операторы
Просто записывать в переменные числовые или текстовые значения, конечно, удобно, но этого недостаточно. Практически в любой программе не обойтись без различных вычислений: подсчета символов в строке, текущего курса доллара, определения размеров окна и т. д. Для выполнения арифметических вычислений в операторах Бейсика используются уже знакомые по работе с окном Immediate символы + (сложить), - (вычесть), * (умножить), / (делить) и Л (возвести в степень). Кроме того, символ \ (обратная косая черта) применяется для целого деления, в результате которого получается целое число. Например, значением выражения 1000 / 3 будет число 333.3333333333333, а значением выражения 1000 \ 3 — число 333.
При таком делении для чисел типов INTEGER и LONG дробная часть частного просто отбрасывается, в то время как при обычном делении происходит округление дробного результата.
В результате выполнения оператора Y% = 5/3 переменная Y% получит значение 2 (округление в большую сторону), а при использовании оператора Y% = 5 \ 3 это значение окажется равным 1.
3.5 Сцепление строк
Оператор сложения + определен не только для чисел, но и для строк. С его помощью можно сцепить (сложить) вместе несколько строк. Например, значением выражения
"Это" + " строка!" станет строка:
"Это строка!"
Можно сцепить несколько строк:
"123" + "456" + "7890"
Результирующим значением станет строка “1234567890”.
3.6 Выражения
Выполнять арифметические действия над числами и сцепление строк тоже полезно. Однако и этого недостаточно для создания даже небольшой программы. Складывать и умножать заранее известные числа можно и с помощью калькулятора, а вот Бейсик позволяет производить вычисления с переменными, значения которых к моменту выполнения соответствующего оператора разработчику неизвестны. Это — базовая, фундаментальная возможность всех языков программирования.
В правой части оператора присваивания можно записывать не только число, но и произвольное выражение, допустимое правилами записи Бейсика. В нем могут использоваться:
• знаки арифметических действий, определяющие действия над числами и переменными;
• круглые скобки, задающие последовательность выполнения действий;
• числа, над которыми выполняются действия;
• переменные, над значениями которых выполняются арифметические действия;
• стандартные функции Бейсика (вроде SQR()).
Примеры арифметических выражений:
1 + 1
2*3 - 5 2 * (3-5)
Y% ^ 2 - 10.5
(X# * 2 + Y# * 3.14) / 52
(SQR(Y&) - Dist%) * 1.1Е+2
Порядок вычисления значения выражения определяется приоритетом арифметических операций. В первую очередь выполняется возведение в степень, потом умножение и деление, в заключение — сложение и вычитание. Если в выражении имеются скобки, то сначала вычисляется значение подвыражений в этих скобках. Например, значение выражения 4 Л2 * 3 равно 48 (4 в степени 2 равно 16, а 16, умноженное на 3, даст 48), а значение выражения 4 л (2 * 3) равно 4096 (сначала вычисляется выражение в скобках — 2*3 будет 6, а затем 4 возводится в степень 6).
Действия могут выполняться не только над числами и переменными числового типа, но и над строками и переменными строкового типа. Для них определен только один оператор сложения или сцепления. Например:
"текст" + S$
"Ошибка в файле " + FileName$ + ".doc"
"2 + 2 будет " + STR$(2 + 2)
В последнем случае STR$() — стандартная функция Бейсика, которая преобразовывает значение выражения 2+2 (равное 4) в строку («4»).
Теперь можно составить программу, которая будет вычислять сумму трех идущих подряд чисел, начиная с произвольного числа:
DIM X AS INTEGER, SUM AS INTEGER X% = 9 7 произвольное начальное число SUM% = X% + (X% + 1) + (X% + 2)
PRINT SUM%
3.7 Константы
Представьте, что вы пишете большое приложение, выполняющее сложные математические расчеты, в ходе которых неоднократно приходится прибегать к использованию одного и того же числа, несущего определенную смысловую нагрузку (например, числа 0,001, задающего точность вычислений). После того как программа разработана и проверена на контрольных примерах, вполне может возникнуть желание использовать ее в более широких целях. При этом, в частности, наверняка потребуется изменить величину точности вычислений с более высокой на более низкую или наоборот. Но тогда придется искать все операторы, где встречается это число, и каждый раз менять его на новое значение вручную. При этом легко и ошибиться, введя или не дописав лишний ноль.
Есть хороший способ — всем числовым или строковым константам, которые встречаются в программе более одного раза, дать имена, как переменным. Для этого предназначен оператор
CONST {имя-константы} = (выражение)
Например, вместо числа 0,001 можно использовать константу POROG (имена констант для удобства отличия их от переменных записывают, как правило, большими буквами):
CONST POROG = 0.001
Размещаются операторы описания констант обычно в самом начале программы.
Использовать константы полезно еще и в случае, если программа готовится для работы на нескольких языках (например, русском и английском). Тогда все строковые сообщения лучше хранить в двух видах (одно из них как комментарии), и когда потребуется быстро перевести приложение на новый язык, достаточно будет добавить описание констант на этом языке, а старые описания «закомментировать», добавив апостроф в начало каждой строки.
' Программа содержит сообщения на разных языках ' Текущий язык — французский ' Русский язык:
' CONST HELLO = "привет"
' Английский язык:
' CONST HELLO = "hello"
' Французский язык:
CONST HELLO = "salut"
3.8 Задание начальных значений в программе
Константы удобно применять, если с их помощью надо описать относительно небольшое число значений. А когда требуется обработать тысячу значений, заранее подготовленных (перечисленных через запятую) и набранных в редакторе? Их можно включить в программу с помощью оператора DATA, который подготавливает эти данные для автоматического присваивания их переменным.
DATA 10, 100, 3, 99
Чтобы эти данные оказались в переменных, надо использовать оператор READ {список-переменных}
READ xl, х2
Интерпретатор поймет, что надо взять очередные два значения (так как указано две переменные) из оператора DATA (сначала будут взяты числа 10 и 100), и присвоить их переменным х1 и х2. При следующем обращении к оператору READ будут использованы следующие значения. Например, оператор READ х3 считает в переменную х3 значение 3 и т. д.
В любой момент можно перейти к присваиванию значений из оператора DATA с самого начала, использовав оператор RESTORE. То есть, если в дальнейшем выполнить операторы:
RESTORE READ x2
то переменная x2 получит первое значение 10.
3.9 Вывод информации на экран
Чтобы вывести информацию на экран, используется оператор PRINT. О нем уже немного рассказывалось в разделе, посвященном работе с окном Immediate.
Оператор PRINT может выводить в строке одно или несколько значений: чисел, строк, переменных и выражений. Если эти значения разделяются точкам с запятой, то данные печатаются подряд друг за другом (если это числа, то через один пробел). Если они разделяются запятыми, то данные выводятся в следующей области вывода (эти области следуют в строке последовательно друг за другом и имеют стандартную ширину 14 символов).
Например, при выполнении операторов
Y% = 5
PRINT "у="; Y% на экран выведется
У= 5
а при выполнении операторов
Y% = 5
PRINT "у=", Y% выведется
У= 5
Помимо строк, выражений и символов «,» и «;» в операторе PRINT можно также точно указывать, с какой позиции в строке начать вывод очередной порции информации. Для этого надо воспользоваться конструкцией
TAB({позиция})
например:
PRINT TAB(5); "Эта строка выводится с пятой позиции"
Кроме того, между частями выводимого текста можно вставлять нужное число пробелов с помощью команды 8РС({число-пробелов}):
PRINT "Здесь вставлено 10"; SPC(10); "пробелов"
3.10 Ввод информации от пользователя
Мало уметь только выводить данные на экран. Надо уметь также вводить всевозможную информацию в программу. Для этого предназначен оператор INPUT. Он записывается так:
INPUT {подсказка}; {список-переменных}
и по форме очень похож на PRINT. Работает оператор ввода следующим образом: сначала на экран выводится строка-подсказка (ее можно не указывать), а потом список переменных, в которые будут вводиться набираемые человеком значения (после ввода числа или строки надо нажать клавишу ENTER). Например, чтобы ввести значение 5 для переменной Х%, надо указать в программе оператор ввода:
INPUT "Ввести значение X: "; Х%
Когда этот оператор будет выполняться, на экране покажется подсказка: Ввести значение X: ?
За знаком ? надо ввести 5 и нажать клавишу ENTER. Выполнение программы продолжится.
В операторе INPUT можно указывать несколько переменных, например:
INPUT Х%, S$
При вводе с клавиатуры нескольких значений в одном операторе эти значения надо разделять запятыми, то есть при выполнении данного оператора на подсказку QBasic надо ввести, например:
? 5, строка
ГЛАВА 4. ПРИМЕРЫ
Пока что вы изучили только оператор присваивания и операторы ввода и вывода данных. Много это или мало? Вполне достаточно для того, чтобы писать программы для проведения достаточно сложных математических и инженерных расчетов, причем работать с ними будет гораздо удобнее и проще, чем выполнять аналогичные вычисления на микрокалькуляторе. Вот несколько примеров.
Настройка велосипедного компьютера
На современных гоночных и горных велосипедах часто устанавливают специальные спортивные компьютеры, которые фиксируют скорость движения, время, пройденное расстояние и ряд других параметров. Для того, чтобы скорость и расстояние показывались правильно, такие компьютеры надо предварительно настроить на размер колеса, на котором установлен датчик оборотов — и скорость, и расстояние вычисляются в зависимости от длины велосипедной покрышки. Это делается установкой так называемого колесного фактора (Wheel Factor), аналогичного длине покрышки в миллиметрах и вычисляемого по формуле:
{диаметр колеса, мм} * 3,1416 (пи)
Данный фактор обычно приводится в инструкции для большинства стандартных покрышек, однако в них не учитывается возможность прогиба покрышки под весом велосипедиста, который может достигать 1-2 см и занижать значение колесного фактора. Для более точного определения значения данного фактора попробуете внести наиболее подходящую, на свой взгляд, поправку и затем воспользоваться следующей программой, пересчитывающей диаметр покрышки (традиционно задаваемой в дюймах, 1 дюйм = 25,4 мм) в колесный фактор.
DIM WheelFactor AS DOUBLE, D AS DOUBLE, P AS INTEGER
INPUT "Ввести диаметр колеса в дюймах и поправку в миллиметрах:", D, Р
D = D * 25.4 - Р
WheelFactor = 3.1416 * D
PRINT " WheelFactor= "; WheelFactor
END
Решение системы линейных уравнений
Составлять программы решения систем линейных уравнений программистам приходится довольно часто. Например, при создании крупных систем автоматизации предприятий, особенно имеющих модули планирования производства и определения оптимальных маршрутов движения автотранспорта, постоянно возникает необходимость решения таких уравнений с большим числом неизвестных. В нашем примере мы ограничимся классическим, известным из школьного курса математики, случаем с двумя неизвестными. Такая система выглядит так:
ах + by = е сх + dy = f
Коэффициенты a, b, с, d, е и f известны, требуется определить значения переменных х и у. Эти значения рассчитываются по правилу Крамера:
х = (е * d - b * f) / (а * d - b * с) у = (а * f - е * с) / (а * d - b * с) а вычисляющая их программа на Бейсике представлена ниже:
' программа решения системы линейных уравнений ' с двумя неизвестными по правилу Крамера
DIM |
a |
AS |
DOUBLE, |
b |
AS |
DOUBLE, |
e AS |
DOUBLE |
DIM |
c |
AS |
DOUBLE, |
d |
AS |
DOUBLE, |
f AS |
DOUBLE |
DIM |
X |
AS |
DOUBLE, |
У |
AS |
DOUBLE |
CLS
PRINT ' пустая строка PRINT "аХ + bY = е"
PRINT "сХ + dY = f"
PRINT ' пустая строка
INPUT " ввести коэффициенты а, b и е (через запятую): ", а, Ь, е
INPUT " ввести коэффициенты с, d и f (через запятую): ", с, d, f
х = (e*d-b*f) / (а * d - b * с) у = (а * f - е * с) / (a*d-b*c)
PRINT ' пустая строка PRINT "X = х PRINT "Y = "; у
PRINT ' пустая строка
PRINT "Проверка. aX + bY = "; a*x + b*y PRINT "Проверка. cX + dY = *; c*x + d*y END
В качестве контрольного примера попробуйте решить систему 10Ох + 10у = -5 -20х - Зу = 0
Запустите программу, ввести значения 100,10, -5 и -20, -3, 0.
Программа напечатает: х= -.15 Y= 1
Проверка. aX + bY = -4.999999999999999 Проверка. cX + dY = -1.110223024625157D-16
Погрешность возникает из-за слишком большой разрядности чисел типа DOUBLE.
Вычисление скорости полета в Махах
Скорость полета самолета может определяться в км/ч, а может и в Махах — скоростях звука (330 м/с, при преодолении самолетом этого порога мы обычно слышим сильный грохот). Однако скорость в Махах нельзя определить простым пересчетом скорости в км/ч, потому что она нелинейно зависит от высоты полета и обычной скорости движения.
Вычисление Махов происходит по следующей ужасающей формуле (М — Махи, V — скорость, км/ч, Н — высота полета, м):
М - квадратный корень из (5 * (((((1 + 0,2 * (V / 1225,1) в квадрате) в степени 3,5 - 1) * (1 - 6,875 * 10 в -6-й степени * Н / 0,3048) в степени -5,2656) + 1) в степени 0,286) - 1)
А вот программа, пересчитывающая скорость и высоту в Махи:
DIM М AS SINGLE, V AS INTEGER, H AS INTEGER
INPUT "ввести скорость полета {км/ч) и высоту полета (м): ", V, Н
М = SQR(5 * ((((1 + .2 * (V / 1225.1) Л 2) Л 3.5 - 1)
* ((1 - 6.875Е-06 * Н / .3048) Л -5.2656) + 1) Л .286 - 1))
PRINT М; "Махов"
END
В качестве контрольного примера укажите скорость полета 1000 (км/ч) и 10000 (м). Программа напечатает скорость в Махах:
1.384566 Махов
ЗАКЛЮЧЕНИЕ
Решение какой-либо задачи с помощью ЭВМ распадается на три основных этапа: постановка задачи, составление алгоритма решения, программная реализация алгоритма на ЭВМ. В данной работе реализованы все указанные выше этапы в среде программирования QBasic.
В работе представлены задания, направленные на овладение основами программирования в указанной среде: выполнение арифметических операций, решения задач из курса высшей математики, графические возможности.
В результате ее выполнения разработаны программы, охватывающие основные возможности версии, позволяющие выполнять все необходимые действия по составлению, отладке и выполнению программ.
В среде QBasic существует несколько экранных режимов. Основной исходный экран представляет поле редактирования текста программы. Встроенный текстовый редактор выполняет две функции – редактирования текста и синхронной интерпретации строки. В этой связи строки в некоторых программах не нумеровались. Результаты работы программы, комментарии и сообщения интерпретатора представлялись в текстовом экране (по умолчанию режим SCREEN 0). При работе с графикой изображения строились в графическом экране, который имеет несколько режимов.
Особый интерес представляла система помощи help (подсказок), имеющая контекстную структуру с возможностью копирования примеров из текста подсказок, что позволило освоить работу с языком программирования QBasic практически самостоятельно.
Таким образом, основная цель курсовой работы по овладению основами программирования в среде QBasic выполнена.
СПИСОК ЛИТЕРАТУРЫ
1. Могилев А.В. Информатика. – М., 1999. – 816 с.
2. Сафронов И.К. Бейсик в задачах и примерах. –– СПб.: BHV, 2001. – 215 с.
3. Семашко Г.Л. Программирование для всех. – М.: Наука, 1986. – 325 с.
4. Ставнистый Н.Н. QBasic в математике. Решение задач с помощью компьютера. Ч1. – М.: СОЛОН-Р, 2001. – 143 с.
5. Федоренко Ю. Алгоритмы и программы на QBASIC. - СПб.: Питер, 2002. – 287 с.
6. Хомоненко А.Д. Основы современных компьютерных технологий. – СПб.: КОРОНА принт, 1998. – 448 с.
7. Житкова В.Б., Кудрявцева Е.К. Алгоритмы и основы программирования. (Тематический контроль по информатике.). - М.: Интеллект-Центр, 1999. - 64 с.
8. Кириенко Д.П., Осипов П.О., Чернов А.В. ГИА-2013: Экзамен в новой форма: Информатика: 9-й класс: Тренировочные варианты экзаменационных работ для проведения государственной (итоговой) аттестации в новой форме. - М.: Астрель, 2013. -78 с.
9. Колдаева Н.В. Основы информатики: Учебное пособие. - Кстово: НФВИУ, 2002. -60 с.
10. Коханко В.В. Колдаева Н.В., Матвейчук. Основы программирования: Учебное пособие. - Кстово: НВВИКУ (ВИ), 2008. - 244 с.
11. Кузнецов А.А., Пугач В.И., Добудько Т.В., Матвеева Н.В. - 2-е изд., испр. - М.: БИНОМ, Лаборатория знаний, 2003. - 232 с.
12. Мамонтов Д.В. Quick Basic в задачах и примерах. - СПб.: Питер, 2006. - 256 с.
13. Острсйковский В.А., Полякова И.В. Информатика. Теория и практика: Учеб, пособие. - М.: Издательство Оникс, 2008. - 608 с.
14. Островская Е.М., Саммлкина Н.Н. ЕГЭ 2013. Информатика. Сдаем без проблем! -М.: Эксмо, 2012. - 160 с.
15. Самылкина Н.Н. Островская Е.М., Кузнецова Е.Ю. ЕГЭ 2013. Информатика: тренировочные задания. - М.: Эксмо, 2012. - 200 с.
16. Светозарова Г.И., Мельников А.А., Козловский А.В. Практикум по программированию на языке бейсик: Учеб, пособие для вузов. - М.: Наука. Гл. ред. физ.-мат. лит., 1988. - 368 с.
17. Угрснович Н.Д. Информатика и ИКТ. Базовый уровень: учебник для 11 класса. -5-е изд. - М.: БИНОМ, Лаборатория знаний, 2012. - 187 с.
11. Гусева В.А. Учимся информатике: задачи и методы их решения Москва Диалог-МИФИ 1999г.-320с
18. Мельшикова О.И., Бонюшкина А.Ю. Начала программирования на языке QBASIC Москва ЭКОМ 2000г.-303с
19. Примерная программа общеобразовательной учебной дисциплины «Информатика» для профессиональных образовательных организаций / М. С. Цветкова, И. Ю. Хлобыстова. — М.: Издательский центр «Академия», 2015. — 27 с.
- Разработка регламента выполнения процесса «Складской учет» (ПОСТРОЕНИЕ БИЗНЕС-ПРОЦЕССОВ «КАК ДОЛЖНО БЫТЬ»)
- Выбор приоритетного подхода к организации процесса повышения квалификации персонала
- Основные понятия и правовая база проведения инвентаризации
- Специфика и методы управления инновационными проектами
- Проблемы коммуникаций в современных организациях (АО «Хлебпром»)
- Выбор управленческого решения методом анализа иерархий. Оценить корректность метода на примере ООО "ИНФОСОФТ" (Понятие и характеристика метода анализа иерархий)
- Понятие хозяйственного учета, его виды, учетные измерители
- «Этапы и особенности ведения социально-психологического тренинга» .
- Жизненный цикл организации и управление организацией . .
- Интеллектуальная собственность (Сущность понятия интеллектуальной собственности)
- Объекты патентного права (Изобретения как объекты патентного права)
- Методы выбора проектов (Теоретические аспекты выбора проектов)