Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебник Информатики

.pdf
Скачиваний:
54
Добавлен:
23.02.2015
Размер:
560.16 Кб
Скачать

входящих в него элементов (операндов) и видом применяемых к ним операций. Примеры выражений: 0.6 + a, с > 2 AND c <= 5 и т.д.

Порядок выполнения операций в выражении следующий:

в первую очередь вычисляется то, что заключено в круглые скобки, причём для любых вложенных друг в друга пар круглых скобок сначала вычисляется внутренняя часть выражения, а затем – внешняя;

дальнейшие действия выполняются в соответствии с их приоритетами. Из арифметических операций самый высокий приоритет имеет, т.е. вы-

полняется в первую очередь, операция возведения в степень. Затем выполняются операции умножения и деления и в последнюю очередь – сложения и вычитания.

Логические операции выполняются после арифметических. Из них максимальный приоритет имеют все операции отношений, затем логическая операция NOT, остальные логические операции идут по убыванию приоритета сле-

дующим образом: AND, OR, XOR, EQV, IMP.

Операции одного приоритета в выражении выполняются в том порядке, как они записаны, т.е. слева направо. При использовании знака операции, являющегося служебным словом, он должен быть отделён от операндов пробелом.

QBasic позволяет сравнивать (больше или меньше) как числа, так и строки. Сравнение последних производится на основе алфавитной упорядоченности символов в строке, начиная с первого символа. Чем ближе символ к концу алфавита, тем он больше.

Любое логическое выражение (просто отношение или группа отношений, связанных знаками логических операций) имеет числовое значение. Если логическое выражение ложно, то его значение равно 0, если оно истинно, то его значение равно -1 (не ноль).

Значения бинарных логических операций AND, OR, XOR, EQV и IMP представлены в таблице 3 (И – истина, Л – ложь).

21

Таблица 3

Таблица истинности для бинарных логических операций

 

 

 

 

 

 

 

 

 

 

 

X

Y

X AND Y

X OR Y

X XOR Y

X EQV Y

X IMP Y

 

 

 

 

 

 

 

 

 

 

 

 

 

И

И

И

И

Л

И

И

 

 

 

 

 

 

 

 

 

 

 

 

 

И

Л

Л

И

И

Л

Л

 

 

 

 

 

 

 

 

 

 

 

 

 

Л

И

Л

И

И

Л

И

 

 

 

 

 

 

 

 

 

 

 

 

 

Л

Л

Л

Л

Л

И

И

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Логическое отрицание NOT имеет только один операнд (унарная операция). Результатом её выполнения будет «ложь», если операнд имеет значение «истина», и наоборот.

Структура программы

Программа, написанная на языке программирования QBasic, может состоять из нескольких разделов, например:

раздела объявления констант;

раздела объявления переменных;

раздела объявления типов;

тела программы.

Порядок размещения разделов произвольный. Можно создавать несколько одинаковых разделов. Единственное правило, которое необходимо строго выдерживать, состоит в том, что в любом месте программы можно использовать лишь те элементы языка, которые были определены ранее по тексту программы или являются предопределёнными. Любой раздел кроме тела программы может отсутствовать.

Объявление констант. Для объявления констант в QBasic применяется оператор

CONST v = b,

где v – идентификатор константы, b – выражение числового или символьного типов.

22

Как правило, операторы объявления констант размещаются в самом начале программы. Например, CONST abc = 0.01. Тип константы определяется типом соответствующего выражения.

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

Объявление переменных. В QBasic допустимо явное и неявное объявление переменных. Для явного объявления переменных применяется оператор DIM, который записывается следующим образом:

DIM v as T,

где v – идентификатор переменной, T – её тип (целый, действительный и т.д.).

Например, DIM s AS SINGLE, DIM kol AS INTEGER.

Водном операторе DIM можно указать несколько переменных, отделяя их объявления запятыми: DIM i AS LONG, sl AS STRING, s AS SINGLE.

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

впамяти в зависимости от её идентификатора. По умолчанию считается, что необъявленная переменная имеет тип SINGLE.

Если последним в идентификаторе переменной окажется один из специальных символов, характеризующих её тип, то она будет рассматриваться как переменная соответствующего типа (см. таблицу 4). Например: i%, lg&, sg!, d#

и str$.

Воператоре DIM можно указывать тип переменной как с помощью последнего символа идентификатора, так и с помощью ключевого слова AS. Поэтому обе формы объявления символьной переменной s DIM s AS STRING и DIM s$ верны. Следующее объявление переменной s DIM s$ AS STRING является ошибочным.

23

Таблица 4

Символы в конце идентификатора, характеризующие тип переменной

 

 

 

 

 

 

Тип переменной

Символ в конце идентификатора

 

 

 

 

 

 

 

 

INTEGER

%

 

 

 

 

 

 

 

 

LONG

&

 

 

 

 

 

 

 

 

SINGLE

!

 

 

 

 

 

 

 

 

DOUBLE

#

 

 

 

 

 

 

 

 

STRING

$

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Неявным образом тип переменной можно объявить также по первой букве её идентификатора. Для этого в QBasic имеется набор операторов (см. таблицу 5). Каждый из них связывает тип и соответствующую букву или диапазон букв и определяет тип переменных, идентификаторы которых начинаются с этих букв.

Таблица 5

Операторы, связывающие начальную букву идентификатора и тип

 

 

 

 

 

 

Задаваемый тип

Оператор

 

 

 

 

 

 

 

 

INTEGER

DEFINT

 

 

 

 

 

 

 

 

LONG

DEFLNG

 

 

 

 

 

 

 

 

SINGLE

DEFSNG

 

 

 

 

 

 

 

 

DOUBLE

DEFDBL

 

 

 

 

 

 

 

 

STRING

DEFSTR

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Например, согласно оператору DEFINT a, p-s, z все переменные, идентификаторы которых начинаются с букв a, p, q, r, s и z относятся к типу INTEGER.

Объявление массивов. Объявление массивов в общем виде можно осуществить следующим образом:

DIM v(n TO m) as T,

24

где v – идентификатор массива, n и m – минимальный и максимальный индексы массива, T – тип массива.

Минимальный и максимальный индексы массива можно задавать либо константами, либо идентификаторами. Например, массив A, состоящий из 50 элементов действительного типа, можно объявить следующим образом: DIM A(1 TO 50) AS SINGLE. В объявлении массива можно указать только его максимальный индекс. Например, DIM K(100) AS INTEGER. При этом, однако, надо помнить, что нумерация элементов массива в QBasic по умолчанию начинается с нуля, то есть, у массива в данном случае есть не только первый элемент, но и нулевой. Поэтому объявленный таким образом массив содержит 101 элемент целого типа.

На практике, как правило, применяются массивы с привычным диапазоном индексов, начинающимся с единицы. Писать для каждого массива «1 TO» довольно неудобно, поэтому в QBasic есть специальный оператор, задающий начало отсчёта индексов: либо с 0, либо с 1. Его вид OPTION BASE n, где n равно 0 или 1. Поэтому достаточно в начале программы один раз указать OPTION BASE 1 и в дальнейшем в объявлении массивов указывать только их максимальные индексы.

При объявлении массивов можно использовать также их неявное объявление с помощью последнего символа в идентификаторе. Например, оператор DIM name$(50) объявляет массив символьного типа.

Объявление массивов большей размерности (2, 3 и т.д.) аналогично. Чтобы объявить массив с числом измерений большим единицы, надо указать диапазоны индексов для каждого измерения через запятую. Например, матрицу B (двумерный массив) действительного типа, состоящую из 10 строк и 15 столбцов элементов, можно объявить следующим образом:

1)DIM B(1 TO 10, 1 TO 15) AS SINGLE

2)OPTION BASE 1

DIM B(10, 15) AS SINGLE

25

3)OPTION BASE 1 DIM B!(10, 15)

4)OPTION BASE 1 DIM B(10, 15).

Объявление типов. Чтобы ввести в программу на QBasic новый (пользовательский) тип данных используется следующий оператор:

TYPE T v1 AS T1 v2 AS T2

…………

vn AS Tn END TYPE,

где T – определяемый тип, v1, v2, ..., vn – идентификаторы элементов определяемого типа данных, T1, T2, ..., Tn – типы элементов.

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

В QBasic строки, как правило, не нумеруются, но могут и нумероваться. В строке может помещаться один или несколько операторов. В последнем случае строка называется многооператорной. Между операторами одной строки ставится разделительный знак : (двоеточие). Программа может заканчиваться любым оператором. При явном указании на конец вычислений последним оператором программы должен быть оператор END – оператор конца программы. Он завершает программу и закрывает все файлы.

Комментарии. Любую программу полезно сопровождать комментариями. В них указывается та информация, которая служит более глубокому её понима-

26

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

Программирование алгоритмов линейной структуры

Программы линейной структуры не содержат указаний к условным и безусловным переходам. Поэтому операторы, из которых они состоят, выполняются в той последовательности, в которой они записаны. Для организации таких программ используются операторы присваивания, ввода исходных данных и вывода результатов их обработки.

Оператор присваивания. Оператор присваивания служит для вычисления выражения и присваивания вычисленного значения идентификатору переменной.

Он имеет следующий вид: v = b,

где v – идентификатор переменной, b – выражение.

Оператор присваивания может начинаться с ключевого слова LET и иметь следующую форму записи

LET v = b.

Однако предпочтительней является форма v = b.

Организация ввода и вывода данных в QBasic

Оператор ввода данных с клавиатуры (интерактивного ввода). Этот оператор предназначен для ввода данных с клавиатуры ЭВМ. Он имеет следующую форму записи:

INPUT ["текст" {; | ,}] v1, v2, ..., vn,

27

где "текст" – текст, выводимый на экран перед вводом данных; v1, v2, ..., vn – идентификаторы переменных, подлежащих вводу (список ввода).

Здесь и в дальнейшем, то, что заключено в квадратные скобки, является необязательным (может не указываться); а конструкция { | } означает возможность выбора между двумя или более вариантами.

Если после конструкции "текст", которая, согласно вышесказанному, является необязательной, стоит точка с запятой, то на экране появляется знак вопроса. В противном случае – знака вопроса на экране не будет.

При вводе с клавиатуры надо придерживаться следующих правил:

вводимые значения должны отделяться друг от друга запятыми;

их количество должно быть равно количеству идентификаторов в списке ввода;

их типы должны соответствовать типам вводимых переменных.

Если что-то из указанного не соблюдается, то программа перезапускается с самого начала.

Оператор вывода данных. Этот оператор используется для вывода на экран монитора числовой и текстовой информации. Он имеет следующую форму записи:

PRINT [список вывода] [{; | ,}],

где конструкция "список вывода" может содержать константы, простые и индексированные переменные, выражения и функции, которые разделяются между собой запятыми или точками с запятой. Поэтому различаются зонный и компактный выводы. Если данные в списке вывода разделены запятыми, то каждое выводимое значение размещается в соответствующей зоне (зона – 14 позиций). Если данные в списке вывода разделены точками с запятой, то вывод значений осуществляется компактно, подряд друг за другом (например, числа выводятся через один пробел). Запятые и точки с запятой могут использоваться в операторе PRINT совместно.

28

Оператор PRINT без списка вывода выводит строку пробелов. Отсутствие запятой или точки с запятой в конце списка вывода означает переход на следующую строку. Вместо слова PRINT при написании программы можно указывать знак вопроса ?. Интерпретатор QBasic после запуска программы автоматически заменит все знаки вопроса на операторы PRINT.

Форматный вывод данных. Для оформления вывода результатов вычислений используются оператор вывода PRINT с функциями TAB и SPC и оператор форматного вывода PRINT USING.

Функция TAB(n%), где n% – целое число, позволяет позиционировать строку по горизонтали. Аргумент n% этой функции определяет начальную позицию в строке вывода. Функция SPC(n%), где n% – также целое число, позволяет вывести n% пробелов. Её удобно использовать, если требуется разделить выводимые значения несколькими пробелами. Например, PRINT TAB(20); "График", PRINT x; SPC(5); COS(x)

Оператор форматного вывода. Оператор форматного вывода PRINT USING позволяет гибко управлять формой представления выводимых данных, путём задания форматов (шаблонов) вывода значений. Он имеет следующий вид:

PRINT USING формат$; список вывода [{; | ,}],

где формат$ – символьное выражение, содержащее один или более определителей формата.

Список вывода оператора PRINT USING аналогичен списку вывода оператора PRINT. Числовые и символьные форматы задаются с помощью специальных символов управления форматом вывода (определителей формата). Числовой формат задаётся символом #. Каждый такой символ соответствует одному выводимому разряду десятичного числа. Ширина поля числового формата равна числу символов #. Положение десятичной точки определяется символом точка (.). Число выравнивается по правому краю поля.

Например, PRINT USING "#####.##"; sg.

29

Определители формата, используемые в операторе PRINT USING, приведены в таблице 6.

Таблица 6

Определители формата, используемые в операторе PRINT USING

Символы, форматирующие числовые выражения

#

Позиция цифры

 

 

.

Позиция десятичной точки

 

 

,

Вывод запятой после каждой третьей цифры (ставит-

 

ся слева от десятичной точки)

 

 

+

Позиция знака числа

^^^^Вывод числа в показательной форме

-

Вывод конечного знака для отрицательных чисел (ста-

вится после позиции цифры)

 

 

 

$$

Вывод первым знака денежной единицы

 

 

**

Заполнение мест отсутствующих впереди цифр сим-

 

волами *

 

 

**$

Совмещение ** и $$

 

 

Символы, форматирующие символьные выражения

 

 

&

Вывод символьного выражения целиком

 

 

!

Вывод только первого символа выражения

 

 

\ \

Вывод n первых символов, где n – число пробелов меж-

ду косыми чертами + 2

 

 

 

Символы, используемые для вывода символьных констант

 

 

_

Вывод следующего в формате символа как литерала

 

 

Все, не перечисленные в таблице символы, выводятся как литералы

30