Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Основы программирования на языке QBasic (Бейсик (BASIC)

Содержание:

Введение

С развитием и совершенствованием ЭВМ тесно связано появление средств программирования. Для машин первого поколения они составлялись в машинных кодах. Это был трудоемкий процесс, поскольку программисту самому приходилось распределять память под программу, исходные данные и результаты. Разобраться в такой программе, модифицировать ее было практически невозможно. Еще в период перехода к машинам второго поколения (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>. Если строка не найдена, появится сообщение, извещающее об этом, а если найденная строка, подсветится как выделенная часть текста.

Puc. 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 Как задать значение переменной

Чтобы указать значение, которое должна иметь переменная, используется оператор Бейсика, который называется оператором присваивания. Он выг­лядит так:

переменная = значение

В левой части оператора указывается имя переменной, в которую будет за­носиться значение, расположенное в правой части (справа от символа =). Например, чтобы значением переменной Y% (имеющей тип INTEGER) ста­ло число 10, надо написать так:

Y% = 10

При этом желательно, чтобы переменная Y% уже была описана в программе ранее:

DIM Y%

Если попробовать присвоить переменной целого типа (INTEGER или LONG) значение с плавающей точкой, например:

Y% = 5.5

то эта переменная Y% получит округленное значение числа 5,5 (а именно, 6).

Это значение можно вывести на экран с помощью уже знакомого опера­тора PRINT. Целиком такая небольшая программа будет выглядеть так:

DIM Y AS INTEGER Y% = 5.5 PRINT Y%

А как ее выполнить? Для выполнения загруженной в QBasic программы надо нажать клавишу F5. После этого на экране вывода будет напечатано число 6.

Округление чисел выполняется в зависимости от значения дробной части числа. Если она больше или равна 0,5, то округление происходит в боль­шую сторону, если меньше — то в меньшую (в вышеприведенном примере число 5.4999 будет округлено до 5).

Если попытаться дать переменной Y% слишком большое для типа INTEGER значение 100000, то при выполнении программы (клавиша F5) QBasic выде­лит оператор присваивания другим цветом и сообщит, что произошло пере­полнение (Overflow) значения переменной Y%.

Аналогично происходит и занесение в переменные строк:

DIM Str$

Str$ = "всем привет"

PRINT Str$

На экран будет выведена строка «всем привет» (без кавычек).

3.3 Нумерация операторов

Каждый оператор Бейсика может иметь свой номер. Так повелось еще с самых первых версий этого языка, когда требование нумерации каждой строки программы было обязательным. В QBasic строки можно не нумеро­вать, но такая возможность может быть полезной, например, при использо­вании старых, с номерами операторов, текстов программ.

Номер ставится слева от оператора и отделяется от него одним или несколь­кими пробелами. Номер должен быть неотрицательным числом (возможно, с точкой). Разрешается использовать числа, следующие друг за другом в произвольной последовательности. На порядке выполнения операторов нумерация не сказывается. В частности, вышеприведенную программу из трех строк можно переписать так:

0 DIM str$

2.0 Str$ = "всем привет"

300 PRINT Stir $

или так:

12 DIM Str$

30.0 Str$ = "всем привет"

0 PRINT Str$

3.4 Комментарии

Программу очень полезно сопровождать комментариями, чтобы в дальней­шем сразу понимать, что происходит в различных ее частях. Комментиро­вать нужно не оператор Бейсика, а выполняемое им действие. Например, оператор

Speed# = 60

правильно снабдить не очевидными словами «в переменную Speed# запи­сывается число 60», а осмысленным текстом: «значение скорости делаем равным 60 км/час».

Комментарий может содержать любой текст. Он начинается с символа 1 (одиночная кавычка). Все символы, следующие за такой кавычкой до кон­ца текущей строки, интерпретатором просто пропускаются.

Speed# = 60 ' Значение скорости делаем равным 60 км/ч Комментарий можно начинать и с первой позиции:

вся эта строка - комментарий

Кроме того, при записи операторов Бейсика в тех местах, где допускаются пробелы, их можно использовать в неограниченном количестве, как прави­ло, с целью повышения удобочитаемости исходного текста программы. Например:

10 Speed# = 60 ' пробелы хороши в меру

3.5 Арифметические операторы

Просто записывать в переменные числовые или текстовые значения, конечно, удобно, но этого недостаточно. Практически в любой программе не обойтись без различных вычислений: подсчета символов в строке, теку­щего курса доллара, определения размеров окна и т. д. Для выполнения арифметических вычислений в операторах Бейсика используются уже зна­комые по работе с окном Immediate символы + (сложить), - (вычесть), * (ум­ножить), / (делить) и Л (возвести в степень). Кроме того, символ \ (обратная косая черта) применяется для целого деления, в результате которого полу­чается целое число. Например, значением выражения 1000 / 3 будет число 333.3333333333333, а значением выражения 1000 \ 3 — число 333.

При таком делении для чисел типов INTEGER и LONG дробная часть част­ного просто отбрасывается, в то время как при обычном делении происхо­дит округление дробного результата.

В результате выполнения оператора Y% = 5/3 переменная Y% получит зна­чение 2 (округление в большую сторону), а при использовании оператора Y% = 5 \ 3 это значение окажется равным 1.

3.6 Сцепление строк

Оператор сложения + определен не только для чисел, но и для строк. С его помощью можно сцепить (сложить) вместе несколько строк. Например, значением выражения

"Это" + " строка!" станет строка:

"Это строка!"

Можно сцепить несколько строк:

"123" + "456" + "7890"

Результирующим значением станет строка “1234567890”.

3.7 Выражения

Выполнять арифметические действия над числами и сцепление строк тоже полезно. Однако и этого недостаточно для создания даже небольшой про­граммы. Складывать и умножать заранее известные числа можно и с помо­щью калькулятора, а вот Бейсик позволяет производить вычисления с переменными, значения которых к моменту выполнения соответствующего оператора разработчику неизвестны. Это — базовая, фундаментальная воз­можность всех языков программирования.

В правой части оператора присваивания можно записывать не только число, но и произвольное выражение, допустимое правилами записи Бейсика. В нем могут использоваться:

• знаки арифметических действий, определяющие действия над числами и переменными;

• круглые скобки, задающие последовательность выполнения действий;

• числа, над которыми выполняются действия;

• переменные, над значениями которых выполняются арифметические действия;

• стандартные функции Бейсика (вроде 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.8 Константы

Представьте, что вы пишете большое приложение, выполняющее сложные математические расчеты, в ходе которых неоднократно приходится прибе­гать к использованию одного и того же числа, несущего определенную смыс­ловую нагрузку (например, числа 0,001, задающего точность вычислений). После того как программа разработана и проверена на контрольных при­мерах, вполне может возникнуть желание использовать ее в более широ­ких целях. При этом, в частности, наверняка потребуется изменить величину точности вычислений с более высокой на более низкую или наоборот. Но тогда придется искать все операторы, где встречается это число, и каждый раз менять его на новое значение вручную. При этом легко и ошибиться, введя или не дописав лишний ноль.

Есть хороший способ — всем числовым или строковым константам, кото­рые встречаются в программе более одного раза, дать имена, как перемен­ным. Для этого предназначен оператор

CONST {имя-константы} = (выражение)

Например, вместо числа 0,001 можно использовать константу POROG (име­на констант для удобства отличия их от переменных записывают, как пра­вило, большими буквами):

CONST POROG = 0.001

Размещаются операторы описания констант обычно в самом начале про­граммы.

Теперь, если потребуется изменить значение уровня точности, достаточно будет только поменять одно число в одном месте исходного текста.

Использовать константы полезно еще и в случае, если программа готовится для работы на нескольких языках (например, русском и английском). Тогда все строковые сообщения лучше хранить в двух видах (одно из них как комментарии), и когда потребуется быстро перевести приложение на новый язык, достаточно будет добавить описание констант на этом языке, а ста­рые описания «закомментировать», добавив апостроф в начало каждой строки.

' Программа содержит сообщения на разных языках ' Текущий язык — французский ' Русский язык:

' CONST HELLO = "привет"

' Английский язык:

' CONST HELLO = "hello"

' Французский язык:

CONST HELLO = "salut"

3.9 Задание начальных значений в программе

Константы удобно применять, если с их помощью надо описать относитель­но небольшое число значений. А когда требуется обработать тысячу значе­ний, заранее подготовленных (перечисленных через запятую) и набранных в редакторе? Их можно включить в программу с помощью оператора 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.10 Вывод информации на экран

Чтобы вывести информацию на экран, используется оператор 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.11 Ввод информации от пользователя

Мало уметь только выводить данные на экран. Надо уметь также вводить всевозможную информацию в программу. Для этого предназначен опера­тор 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. Чернов Б.И. Программирование на алгоритмических языках Бейсик, Фортран, Паскаль. – М.: Просвещение, 1991. – 192 с.

8. Абрамов С.А., Зима Е.В. Начала информатики Москва Наука 1989г.-256с Задачи и упражнение по программированию. Под редакцией А.Я. Савельева Москва Высшая школа 1989г.-110с

9. Пярнпуу А.А. Программирование на современных алгоритмических языках Москва Наука 1990г.-380с

10. Горячев А., Шафрин Ю. Практикум по информационным технологиям Москва Лаборатория базовых знаний. 1999г.-272с

11. Гусева В.А. Учимся информатике: задачи и методы их решения Москва Диалог-МИФИ 1999г.-320с

12. Мельшикова О.И., Бонюшкина А.Ю. Начала программирования на языке QBASIC Москва ЭКОМ 2000г.-303с