Файл: Технологии программирования. Основы программирования на языке QBasic.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 29.06.2023

Просмотров: 107

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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.