Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Присвоение значений переменным.

Поиск

Общая характеристика языка

Basic (Beginners All-purpose Symbolic Instruction Code) — многоцелевой язык символических инструкций для начинающих) представляет собой простой язык программирования, разработанный в 1964 году для использования новичками в программировании. Он был разработан как простейший язык для непосредственного общения человека с вычислительной машиной. Поэтому первоначально работа велась в интерактивном режиме с использованием интерпретаторов. В настоящее время для этого языка имеются также и компиляторы.

Согласно концепциям, заложенным в Basic, этот язык в смысле строгости и стройности является антиподом языка Pascal. В частности, в нем широко распространены различные правила умолчания, что считается плохим тоном в большинстве языков программирования подобного типа.

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

Начиная с MS-DOS 5.0, QBASIC сменил старые версии GW-Basic и BASICA. Наибольшее различие между QBASIC и предыдущими версиями — в удобстве работы с первым. Пользователь, знакомый с семейством Quick-языков фирмы Microsoft (MS QuickC, MS QuickPascal, MS QuickBasic), в среде QBASIC чувствует себя более уверенно. Так же, как и предыдущие версии, QBASIC является интерпретатором. Это означает, что QBASIC непосредственно выполняет операторы языка, не транслируя их в машинные коды.

По сравнению с GW-Basic или BASICA возможности языка QBASIC значительно расширены и почти идентичны языковым средствам компилятора Quick-BASIC. Совместимость такова, что любая программа, написанная на QBASIC, может быть обработана Quick-BASIC-компилятором. И, наоборот, почти любую программу, написанную на Quick-BASIC, можно выполнить в QBASIC.

Поскольку QBASIC является интерпретатором, скорость выполнения программы в нем относительно невысока. Кроме того, при передаче программ другому пользователю нужно быть уверенным в том, что у него есть QBASIC (или Quick-BASIC). Не всем нравится также каждый раз запускать QBASIC для выполнения программы. Наконец, пользователь Вашей программы имеет неограниченную возможность изменения самого текста программы или использования его в дальнейшем. Подобных неудобств помогает избежать BASIC-компилятор. Компилятор транслирует весь исходный текст Вашей программы один раз и создает готовую к работе программу в машинных кодах — ЕХЕ- файл. Скорость выполнения ЕХЕ-файла намного выше. Кроме того, скомпилированную программу можно передавать другим, не боясь ее изменения.

Элементы языка QBASIC

Алгоритм решения практически любой задачи можно трансформировать в компьютерную программу. Такую программу в общем случае можно рассматривать как последовательность некоторых слов и специальных символов. Слова и символы образуют более сложные конструкции, которые должны формироваться по определенным правилам. В отличие от естественных, в языках программирования эти правила должны соблюдаться более строго: даже забытая запятая может привести к тому, что программа либо будет работать не корректно, либо вовсе не сможет выполняться. Набор правил для написания программ называется синтаксисом языка программирования.

Ключевые слова

Некоторые слова, используемые в программах, имеют особый смысл и поэтому называются ключевыми (или зарезервированными). Интерпретация или компиляция ключевого слова всегда вызывает вполне определенное действие компьютера. Например, ключевое слово PRINT задает вывод информации на экран.

Синтаксические соглашения

Имеются различные способы описания синтаксиса языковых конструкций. По понятным причинам для описания элементов языка QBASIC мы будем пользоваться той же формой описания синтаксиса, что и в Help-системе QBASIC. Следующая таблица дает представление о применяемых обозначениях.

Элемент Значение
Ключевое слово Ключевые слова QBASIC всегда записываются большими (заглавными) буквами
Метка-заполнитель Выражение
[ ] Необязательный параметр
{А1|А2} Выбор одного из альтернативных значений
: Три точки, следующие одна за другой, обозначают, что предшествующий элемент может повторяться
Ключевое слово1... Ключевое слово2 Три точки одна под другой обозначают несущественный в данном контексте фрагмент программы.

Комментарии

Включенные в программу комментарии QBASIC просто игнорирует. Использование комментариев позволяет включать в программу любой текст, не нарушая ее семантики. Комментарии используются для объяснения тех или иных действий в программе. Если Вы вернетесь к своей программе через несколько недель (месяцев или даже лет), они помогут Вам быстрее в ней освоится. В QBASIC начало комментария обозначается знаком ' (одинарная кавычка). Остаток строки нельзя переносить в начало следующей строки, содержащей оператор.

Пример:'Это комментарий'PRINT без дополнений выводит на экран пустую строкуPRINTPRINT 'За каждым оператором следует комментарийPRINT'Вывод пустой строки PRINT Примечание: Вся последняя строка интерпретируется QBASIC как комментарий, т.е. включенный в эту строку оператор PRINT не выполняется. Теперь перейдем к рассмотрению арифметических выражений.

Арифметические выражения.

Арифметическое выражение — это комбинация чисел, арифметических констант и некоторых функций, которые связаны между собой знаками арифметических операций. Числа — простейшая форма арифметических выражений. Число состоит из цифр "О...9" и специальных знаков "- +. D". Обратите внимание, что вместо запятой ",", отделяющей целую часть от дробной, используется точка ".".

Примеры:

4.23 вместо 4,23
9.23D+78 вместо 9,23*1078
-2.77 вместо -2,77
-1.34D-23 вместо -1,34*10 -23

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

Знак Значение
* умножение
/ деление
+ сложение
- вычитание
( открывающая скобка
) закрывающая скобка
^ возведение в степень
Примечание: В QBASIC операции "*", "/", "^" имеют больший приоритет, чем операции "+","-". Впрочем на последовательность вычислений можно влиять, применяя в нужных местах круглые скобки.

Новое представление оператора PRINT дает возможность работать с арифметическими выражениями.
PRINT [Выражение]
Выражение - Арифметическое выражение. Значение выражения выводится на экран.
Так как в операторе PRINT выражение — необязательный параметр, то c его помощью можно выводить на экран пустую строку.

Пример:'Пример программы для применения оператора PRINT'Для начала выведем простые числаPRINT 12PRINT 23.34PRINT-345.454PRINT 'Вывод пустых строкPRINTPRINT'Вывод арифметических выраженийPRINT 12-4PRINT+6+56-6PRINT 3*4-4* (4+1)PRINT 3+2^3'Конец программы

Строковые выражения

Строковое выражение — это комбинация текстов, текстовых констант, текстовых переменных и определенных функций, которые связаны операцией "+". Простейшая строка — это текст, заключенный в кавычки ("), состоящий из произвольных комбинаций букв, цифр и специальных знаков. Тексты используются, например, чтобы выводить на экран заглавия, комментарии или примечания.
Примеры:
"Задайте высоту"
"2345,34"
"Программа окончена? (Y/N)"
"Эта программа вычисляет объем бруса"

Примечание: Так как кавычка является ограничивающим текст знаком, то его нельзя применять в качестве элемента самого текста (например, "Введите "Y/N"). Чтобы включить кавычку в текст, используйте функцию CHR$ (см. главу "Обработка строк").

Объединяя отдельные тексты оператором "+", можно получать более длинные строковые выражения. Эта операция называется конкатенацией.
Пример:
"Сегодня" + " хорошая" + " погода", в результате получим "Сегодня хорошая погода".
Теперь расширим синтаксическое описание оператора PRINT, чтобы иметь возможность работать со строковыми выражениями.
PRINT [Выражение]
Выражение - Числовое или строковое выражение. Значение выражения выводится на экран.

Пример:'Вывод выражений с помощью оператора PRINTPRINT "Вывод чисел:"PRINT 23.4PRINT-10.2PRINTPRINTPRINT "Вычислим (10+4) - 4*(2-3'^2)"PRINT (10 + 4)-4* (2-3^2)PRINTPRINT "В заключение объединим отдельные"PRINTPRINT "слова в текст:"PRINT "Сегодня" + " " + "хорошая" + " погода"'Конец программы

Типы данных

Как правило, любой программе необходимы данные, которые каким-то образом обрабатываются программой. Эти данные могут быть совершенно различными. Так, в простейшем случае различают два типа данных: числовые и строковые. В QBASIC разные типы данных должны иметь четкие различия и признаки.

Стандартные типы данных.

В QBASIC можно объявить следующие стандартные типы данных:

Тип Символ Содержание
INTEGER % целые числа в интервале от -32 768 до +32 768
LONG & целые числа в интервале от -2 147483648 до +2 147483648
SINGLE ! числа с плавающей запятой в интервале от ± 8,43*10-37 до ± 3,З7*1038
DOUBLE # числа с плавающей запятой в интервале от ± 4,19*10-307 до ± 1,67*10308
STRING $ любые тексты с максимальной длиной 32 767 знаков
Примечание: Обработка данных типа INTEGER производится значительно быстрее, чем данных типа DOUBLE.

Константы и переменные.

Константы.

Константы определяют в начале программы. После определения они могут использоваться во всей программе.
CONST Имя_константы = Выражение [, Имя_константы "Выражение]...
Имя_константы - Имя константы содержит максимум 40 символов и должно начинаться с буквы. Допустимые символы: "A...Z","0...9" и точка".". Причем несущественно, строчные или заглавные буквы составляют имя константы. Последним должен быть один из символов, идентифицирующих тот или иной стандартный тип (! # % $). По умолчанию QBASIC сам присвоит тип SINGLE. Следует следить за тем, чтобы не присвоить константе ключевое слово в качестве имени. Выражение - Значение, которое должно храниться в константе. Это значение может быть просто числом, другой константой, текстом или арифметическим выражением (не применять операцию"^").

Пример:'Работа с константами CONST р1!-3.14 CONST mwst% - 14

Переменные.

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

Примечание: BASIC часто критикуют за то, что переменные не обязательно объявлять в начале программы. Если во время работы программы необходима переменная, ее можно просто применять. В других языках программирования (Паскаль, Си, Кобол и др.) переменные объявляются в начале программы. В своих собственных интересах программисту следует привыкать к объявлению переменных в начале программы, так как в этом случае значительно повышается наглядность программы. Кроме того, легче будет осваивать другие языки программирования.

Объявление переменных выглядит так:
DIM [SHARED] Имя_переменной [, Имя_переменной ]...
SHARED - Указание на то, что переменную можно использовать во всех функциях и процедурах программы.
Имя_переменной - Его максимальная длина 40 символов. Имя переменной подчиняется тем же правилам, что и имя константы.

Примеры:DIM SHARED height!DIM breadth!DIM height!, length!, okl$, telefon$ Примечание: Следите за тем, чтобы имена переменных и констант соответствовали их содержанию. С переменными height!, telefon$, length! сразу ассоциируется их применение.

Ввод/вывод.

В этой главе Вы познакомитесь с операторами и функциями, которые реализуют вывод на экран и ввод с клавиатуры.

Вывод на экран.

Оператор PRINT позволяет выводить данные на экран. Синтаксис оператора PRINT:
PRINT [Выражение] [{;|,} Выражение]...[{;|,} ]
Выражение - Арифметическое или строковое выражение. Значение выражения выводится на экран.
{;|,} - Устанавливает начало последующего вывода:
;: — значение очередного выражения следует непосредственно за значением предыдущего,
, — значение очередного выражения размещается в начале следующей области вывода. Область вывода — блок из 14 символов.
Если в конце PRINT-выражения нет ни знака ";", ни ",", то выполняется перевод строки, и вывод следующего значения начинается с новой строки.

Примечание: Оператор LPRINT выводит данные на печатающее устройство (принтер). В остальном синтаксис LPRINT идентичен синтаксису оператора PRINT.

Очистка экрана.

Оператор CLS очищает экран и используется без параметров. Следующий оператор вывода начинает размещение данных в левом верхнем углу экрана (первая строка, первый столбец).

Пример:'В данной программе демонстрируется очистка экранаCLS'Экран очищенPRINT "Вывод в левый верхний угол, ";PRINT "остальное поле экрана свободно" 'Конец программы

Ввод с клавиатуры.

Описанный далее оператор INPUT дает возможность вводить данные во время выполнения программы, после чего эти данные обрабатываются программой. Появление на экране вопросительного знака означает запрос ввода. Ввод данных завершается нажатием клавиши, и введенное значение сохраняется в заданной переменной.
INPUT [Текст{;|,}] Имя_переменной [, Имя_переменной].
Текст - Текст, который будет выведен на экран перед тем, как пользователь осуществит ввод.
{;|,} - Точка с запятой обозначает, что после текста выводится знак вопроса для обозначения необходимости ввода данных. Если вместо точки с запятой стоит запятая, знак вопроса после текста не появится.
Имя_переменной - Переменные, в которых сохраняются вводимые данные. Объявление переменных должно быть выполнено в начале программы.
Пример 1:
В приведенной ниже программе вводятся значения трех переменных — height!, breadth!, length!. Результат вычислений выводится на экран.

'Пример 1DIM height!, breadth!, length!CLSINPUT height!INPUT breadth!INPUT length!PRINTPRINT "Результат "; height! * breadth! * length!'Конец программы


Пример 2:
Предыдущая программа имеет очевидный недостаток, так как на экране не видно, что собственно требуется вводить. Однако в операторе INPUT имеется возможность перед каждым вводом данных выводить на экран текст.

'Пример 2 DIM height!, breadth!, length!CLSINPUT "Введите, пожалуйста, высоту:"; height! INPUT "Введите, пожалуйста, ширину:"; breadth! INPUT "Введите, пожалуйста, длину:"; length!PRINTPRINT "Результат V="; height! * breadth! * length!'Конец программы

Применение точки с запятой приводит к тому, что после вывода текста на экране появляется знак вопроса, вывод которого можно отменить, если точку с запятой заменить запятой. Предложение INPUT будет выглядеть так:
INPUT "Введите, пожалуйста, высоту:", height!

Примечание: Оператор INPUT проверяет, соответствует ли тип вводимой величины типу указанной переменной. Если число с плавающей запятой записать в переменную типа INTEGER, то вводимая величина будет округлена до ближайшего большего целого числа. Если текст вводится в числовую переменную, QBASIC отказывается воспринимать данные и выдает сообщение об ошибке — "Redo from start" (Начните еще раз).

Позиционирование курсора.

Для перемещения курсора в требуемую позицию экрана, как правило, применяют оператор LOCATE. Это очень удобно, например, для создания сложных форм вывода на экран.
LOCATE [Строка] [, [Столбец][,[Курсор] [,Старт[,[Стоп] ]]]
Строка - Строка экрана (1-25), на которую должен переместиться курсор.
Столбец - Столбец экрана (1-80), к которому должен переместиться курсор.
Курсор - Указывает, в каком состоянии находится курсор при выводе. 0— выключен, 1 — включен.
Старт, Стоп - Числа от 1 до 31, которые задают высоту курсора.
Синтаксически команда выглядит достаточно сложной, но ситуацию упрощает то, что большинство параметров необязательны.
Пример 1:
После очистки первый вывод на экран должен быть в десятой строке.

'Вывод в десятую строку после CLSCLSLOCATE 10PRINT "Вывод появляется в десятой строке экрана"'Конец программы

Вывод пробелов.

Функция SPC в сочетании с оператором PRINT может выводить на экран пробелы. Это полезно, например, при оформлении вывода информации на экран.
SPC (Значение)
Значение - Арифметическое выражение типа INTEGER в диапазоне значений от 0 до 32767.

Пример:CLS PRINT "Text Г; SPC(10); "Text 2"

Функция табуляции.

Функция TAB так же, как функция SPC, применяется в операторе PRINT. Позволяет начать вывод данных текущей строки с определенной позиции.
TAB (Столбец)
Столбец - Переменная типа INTEGER, задает номер столбца вывода данных текущей строки.
Функция TAB очень полезна в случаях, когда с помощью оператора LPRINT требуется оформить наглядный листинг.

Остановка программы.

В основном любой алгоритм должен как-то заканчиваться, поэтому отсутствие необходимости использовать оператор END в последних версиях QBASICа, считается отрицательным его качеством. Но он всё же существует, и вставлять его в конец программы всё же стоит (потом пригодится). Также если хотите прервать вашу программу в любом её месте то надо использовать оператор
STOP
Он останавливает выполнение программы на том месте, где стоит.

Управляющие операторы.

Рассматриваемые до сих пор программы были линейными, т.е. выполнялись последовательно оператор за оператором с начала до конца программы. В таких программах невозможно влиять на последовательность выполнения операторов, когда, например, происходит повторение фрагментов программы или выполнение ряда действий зависит от определенных условий.

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

Условия.

Результат сравнения может принимать только два значения: "истина", когда высказы- вание справедливо, или "ложь" — в противном случае. Говорят также, что истинность таких выражений либо "true" (t)(-1), либо "false" (f)(0).

Конструкция логических выражений в QBASIC довольно проста. В качестве сравниваемых значений (сравниваемых операндов) могут участвовать строки, числа, константы, переменные, арифметические и строковые выражения. Используют следующие операции сравнения:

Операция Значение
> больше
< меньше
>= больше или равно
<= меньше или равно
= равно
<> Не равно


Схематически условие можно представить следующим образом:
Выражение_1 Операция_сравнения Выражение_2
Для того чтобы сравнить строки (т.е. применить операторы ">" или "<" к строковым данным), необходимо учитывать порядок расположения символов в таблице кодов ASCII: "О" < "1" <„.< "9 "< "А ",...< "Z" < "а" <... "z".

Итак, Строка_1 больше (меньше) Строки_2, если при посимвольном сравнении строк код первого несовпадающего символа из Строки_1 больше (меньше) кода соответствующего символа из Строки_2.
Числовые переменные(константы) сравниваются обычным образом.

Также в QВasic можно использовать переменные типа Boolean, т.е. переменные которым можно присвоить какое-то логическое выражение, и значение этой переменной будет зависеть от истинности или ложности определяющего выражения. Если значение выражения ложно, то переменной будет присвоено значение 0, а если истинно, то -1.

Пример'Использование логических выраженийА=2>5B=6<=6C=8<>9PRINT APRINT BPRINT CEND'Конец программы

В результате на экране вы увидите:0-1-1

Также в логических выражениях можно использовать логические операции AND(и), OR(или), NOT(не), XOR(исключающее или, либо). Приведём таблицу истинности и приоритет операций.

Выражение А Выражение В A AND B A OR B NOT A A XOR B
           
           
           
           


Приоритет
В первую очередь вычисляется значение функции под операцией NOT, потом AND, и в конце OR, XOR.

Пример'Использование в логических выражениях логические операцииА=((2>5) AND (6<=6)) OR (NOT(8<>9))PRINT AEND'Конец программыВ результате на экране вы увидите:0

Цикл WHILE.

С помощью конструкции WHILE … WEND можно реализовать выполнение ряда операторов до тех пор, пока выполняется определенное условие. Последовательность операторов, выполнение которых повторяется циклически, называется циклом.
WHILE Условие
[Оператор_1]
.
.
.
[Оператор_n]
WEND
До тех пор пока соблюдается условие, последовательно выполняются операторы от 1 до n. Ключевое слово WEND закрывает конструкцию по аналогии с командой END IF. Если условие цикла больше не соблюдается, то выполнение программы продолжается, начиная с оператора, следующего за WEND. Если условие цикла WHILE не выполняется с самого начала, то управление сразу же передается оператору, расположенному за WEND.

Следите за тем, чтобы действия внутри цикла влияли на WHILE-условие. В данном примере показано, что произойдет, если эту рекомендацию не выполнить.

'Конструкция цикла WHILE с подвохомDIM i%i%=1WHILE i%=1PRINT "1-ый оператор в While-цикле" PRINT "2-ой оператор в While-цикле"WEND'Конец программы Примечание: Если Вы используете цикл WHILE... WEND, следите за тем, чтобы к моменту первой проверки логического условия переменные, входящие в него, были установлены соответствующим образом.

Цикл DO.

Конструкция DO...LOOP очень похожа на WHILE...WEND. Здесь также имеется последовательность операторов, повторное выполнение которых зависит от некоторых условий.
Вариант 1:
DO
[Оператор_1]
.
.
.
[Оператор_n]
[EXIT DO]
LOOP [{WHILE I UNTIL} Условие ]
Вариант 2:
DO [{WHILE I UNTIL} Условие]
[Оператор_1]
.
.
.
[Оператор_n]
[EXIT DO]
LOOP
{WHILE I UNTIL}
- Ключевыми словами WHILE или UNTIL определяется способ проверки условий. При использовании WHILE цикл выполняется до тех пор, пока соблюдается условие (значение логического выражения истинно). И, наоборот, при использовании UNTIL цикл выполняется только тогда, когда условие не соблюдается (значение логического выражения ложно).
EXIT DO - Оператор EXIT DO преждевременно прерывает выполнение цикла.
DO...LOOP - Работа программы продолжается с оператора, следующего за LOOP.

В первом варианте цикл выполняется по крайней мере один раз, так как проверка условия находится в конце цикла. А во втором варианте цикл может вообще не выполняться, если соответствующее условие с самого начала не позволяет входить в него. Этот вариант очень похож на цикл WHILE...WEND. Как видно из синтаксического описания, DO...LOOP может работать без проверки условий. В этом случае из бесконечного цикла можно выйти с помощью оператора EXIT DO.

Используя оператор FOR...NEXT, можно программировать циклы, количество прохождений которых зависит от значения счетчика.
FOR Счетчик = Нач_значение ТО Кон_значение [STEP Шаг]
[Оператор_1]
.
.
.
[Оператор_n]
[EXIT FOR]
NEXT Счетчик
Счетчик
- Арифметическая переменная, которая изменяется при повторении цикла. Ее часто называют управляющей переменной цикла.
Нач значение - Арифметическое выражение, задающее начальное значение счетчика.
Кон значение - Арифметическое выражение, задающее конечное значение счетчика.
Шаг - Арифметическое выражение, задающее приращение счетчика при каждом прохождении цикла. Если эта опция пропущена, значение шага по умолчанию принимается равным +1
EXIT FOR - Прерывает выполнение цикла. Программа продолжает работу с оператора, следующего за NEXT FOR.

Операторы между FOR и NEXT повторяются до тех пор, пока управляющая переменная цикла не превысит конечное значение. После каждого прохождения цикла переменная цикла изменяется на величину шага. Если шаг — положительное число, то начальное значение переменной цикла должно быть меньше конечного значения, иначе цикл ни разу не выполнится, и, наоборот, если шаг отрицательный, то начальное значение переменной цикла должно быть больше конечного, иначе опять-таки цикл ни разу не отработает. В остальных случаях количество прохождений цикла с шагом — это ближайшее большее целое от выражения: "(конечное значение — начальное значение+1) / шаг", если шаг положительный, и "(конечное значение—начальное значение-1) / шаг", если шаг отрицательный.

Логические операции.

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

'Пример, подводящий читателя к применению более сложных логических условий DIM zahl1%, zahl2% CLSINPUT "Ввести число 1, zahl1% INPUT "Ввести число 2", zahl2% 'Конец программы

Предположим входные данные должны вводится только тогда, когда zahll % больше нуля, и одновременно zahl1% меньше нуля. Как проверить одно из условий, Вы уже знаете. Рассмотрим способ, позволяющий объединить оба условия.

Логическое И (AND).

AND (И) коньюктивно объединяет логические условия:
Условие_1 AND Условие_2 [AND Условие_3] …
Результат такого объединения лишь тогда истинен, когда истинно каждое отдельное условие.
Таблицу истинности данной операции смотри в главе Условия

Пример:DIM zahl1%, zahl2%CLSDOINPUT "Введите число 1> 0", zahl1% INPUT "Введите число 2 < 0 ", zahl2%LOOP UNTIL zahll %>0 AND zahl2% < 0PRINT "Спасибо за корректный ввод"'Конец программы

Только тогда, когда zahl1% > 0 и zahl2%< 0, значение всего логического выражения станет истинно, а значит, выполнение цикла закончится.

Логическое ИЛИ (OR).

OR (ИЛИ) дизъюнктивно объединяет логические условия:
Условие_1 OR Условие_2 [OR Условие_3...]
Результат такого объединения только тогда ложен, когда ложны все составляющие:
Таблицу истинности данной операции смотри в главе Условия

Пример:DIM zahl1%, zahl2% CLS DOPRINT "Число 1 или число 2 должно быть больше нуля" INPUT "Введите число 1", zahl1% INPUT "Введите число 2", zahl2% LOOP UNTIL zahl1% >0 OR zahl2% >0 PRINT "Спасибо за корректный ввод"'Конец программы

В этом примере выход из LOOP-цикла не произойдет только в том случае, если значение каждого из вводимых чисел будет меньше или равно нулю.

Логическое отрицание (NOT).

NOT инвертирует (меняет на противоположное) значение логического выражения, т.е. то, что было "ложь", становится "истиной" и наоборот:
Таблицу истинности данной операции смотри в главе Условия

Пример:DIM zahl%CLSINPUT "Введите число " zahl%IF NOTzahl% > 0 THENPRINT "Число не больше нуля" ELSEPRINT "Число больше нуля" END IF 'Конец программы

Обработка строк

В этой главе рассмотрим функции, которые осуществляют обработку строк. В QBASIC функция состоит из имени и аргументов, которые заключаются в круглые скобки и располагаются всегда за именем функции. Значения функций обработки строк могут быть или типа STRING, или принадлежать к группе арифметических типов данных. Функции, наряду с переменными и константами, применяют в качестве составляющих оператора или используют при составлении выражений или логических условий. Естественно, зна- чение функции должно быть совместимо с остальными составляющими оператора, например, в арифметическое выражение нельзя встраивать функцию, значение которой является строковым выражением.

Определение длины строки.

Функция LEN выдает длину строки, т.е. количество символов в строковом выражении.

Пример:DIM a$, 1аеngе%PRINT LEN("Сегодня понедельник")INPUT "Ввести текст ";а$1aenge% = LEN(a$)PRINT a$; "Длина ";1аеnge," символов "

Выбор подстроки.

Функция MID$ копирует из строки любой ее фрагмент.
MID$ (Строка, Начало, Длина)
Строка - Строка, из которой должны выделятся символы.
Начало - Позиция, с которой начинается выбор фрагмента.
Длина - Длина подстроки.

Пример:' MID$ - функцияDIM A$, i%, j%А$=" Доброе утро"1%=3J%=5PRINT MID$ ("Хелло, QBASIC",4,4)PRINT MID$(aS,i%,j%)

Математические вычисления.

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

Абсолютное значение числа.

Функция ABS возвращает абсолютное значение заданного арифметического выражения.

Пример:'Функция ABS DIM wert% wert% = 45 PRINT ABS(wert%) PRINT ABS(-1 * wert%)

Тригонометрические функции.

В QBASIC определены следующие тригонометрические функции:

SIN (угол) Функция синус угла
COS(угол) Функция косинус угла
TAN (угол) Функция тангенс угла
ATN (арифм.выраж.) Функция арктангенс угла

 

Угол следует задавать в радианах. Функция, обратная тангенсу — ATN, возвращает значение угла, выраженное в радианах. Для преобразования значения угла из градусной меры в радианную, и наоборот, можно воспользоваться формулами:
D град = рад* (180 /pi)
D рад =град* (pi/ 180) где pi =3,14159

Пример:'Примеры тригонометрических функцийCONST pi!- 3.14159CONST bogum! - 180 / pi!CONST gradum!-pi!/ 180'Вычисление синуса, косинуса и тангенса угла 17 градусовPRINT SIN(17*gradum)PRINT COS(17 * gradum)PRINT TAN(17*gradum)'Функция, обратная тангенсу — ATN'Требуется опять получить 17 градусовPRINT ATN(TAN(197 * gradum)) * bogum'Конец программы

Массивы в QBASIC.

Под массивом понимают объединение переменных одного типа в единую структуру. Обращение к отдельным элементам в массиве осуществляется по индексу. Допустим, в программе необходимо 20 переменных для запоминания стоимостей каких-то товаров artprl,..artpr20. Переменные можно объявить следующим образом:
Dim artpi1!, artpr2!,......artpr20!
Ввод данных выглядит примерно так:
INPUT "Artpri ",artpr1!
INPUT "Artpr 20 ",anpr20!
Перечень подобных примеров можно продолжить (вывод наименований товаров, суммирование цен, стирание старых цен и т.п.). Значительно удобнее в подобных случаях вместо 20 отдельных полей данных использовать массив из 20 элементов и отдельный элемент идентифицировать с помощью числового индекса. Причем индекс может изменятся, например, как переменная цикла. Массив объявляется командой DIM:
DIM [SHARED] Переменная [Размерность]
В отличие от объявления простых переменных появляется новая спецификация — размерность. В ней указывается максимальное значение индекса массива.

Пример:DIM artlkel$(1 T0 20) DIM prels%(5 TO 10) DIM alter%(18 T0 65)'20 строковых элементов 1...20'6 Integer-элементов 5...10 '48 Integer-элементов 18...65

В программе для выбора элемента из массива используется индекс.

Пример:PRINT preis%(5) 'Выбор элемента массива с индексом 5

При программировании вышеописанного примера отчетливо видны преимущества применения массивов.

Пример:'Упражнение с использованием массиваDIM artpr!(1 TO 20) 'массив ценDIM 1% 'индекс-переменнаяCLS'Ввод цен для 20 наименований товаровFOR i%-1 T0 20PRINT "Ввести стоимость "; 1%; "-го товара";'Ввод в элемемент массива с индексом 1% INPUT "",artpr(l%)NEXT I %'Вывод 20 наименованийCLS'Вывод в строку'суммы, количества, среднего значения, Max, Min

До сих пор мы рассматривали одномерные массивы. Но в QBASIC массив может иметь несколько индексов. Например, использование второго индекса позволяет обрабатывать двумерные таблицы. Трехмерный массив можно представить как куб. Можно описать массивы с четырьмя, пятью и более индексами. Максимально допустимое число индексов для одного массива — 255.

Пример:'Использование трехмерных массивов DIM zahl%(1 TO 10, 4 ТО 16, 6 ТО 30) zahl%(1,5,23)=13 PRINTzahl%(1,523)

Собственные функции.

В предшествующих главах Вы познакомились с некоторыми встроенными функциями QBASIC (например, MID$ или SQR). Теперь рассмотрим составление собственных функций.

Вернемся к математической функции INT. INT — имя функции. Этим именем определяются некоторые программные действия, невидимые программисту, и которые инициализируются автоматически с появлением в программе имени функции. Иначе говоря, функцию можно понимать как группу операторов в программе, объединенных под именем функции. С помощью заключенного в круглые скобки аргумента (сравни INT (3.34)) в подпрограмму, инициируемую именем функции, передаются конкретные данные. Над этими данными производятся некоторые преобразования, и результат, как правило, возвращается в основную программу.

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

Пример:
STRICH$()-Возвращаемое значение - строка
RUNDEN%()-Возвращаемое значение - число типa INTEGER
WURZEL! ()-Возвращаемое значение — число типа SINGLE
В QBASIC пользовательские функции объявляются при вводе ключевого слова FUNCTION и следующего за ним имени функции. В этом случае редактор автоматически генерирует новое программное окно, в котором нет ничего, кроме операторов, ограничивающих тело функции:
FUNCTION Имя_функции END FUNCTION
В пространство между ограничивающими ключевыми словами вносят операции QBASIC, обеспечивающие выполнение необходимых действий. Чтобы вернуться в главную программу, надо нажать клавишу. На экране появляется поле списков со всеми BIBL.BAS и сохраните его под новым именем ("Save as..."). Если Вы будете составлять свою программу в этом файле, из нее можно вызывать все процедуры и функции файла BIBL.BAS.

Покажем создание функции извлечения корня, упомянутой в главе "Математические вычисления", функция должна извлекать из числа корень любой степени. Начнем с главной программы:

'Главная программа для функции извлечения корняDIM argument!, wurz%CLSDOINPUT "Ввести аргумент: ", argument!INPUT "Ввести степень корня: ", wurz%LOOP WHILE argument! < 0PRINTPRINT wurzel!(argument!, wurz%)'Конец главной программы

Составим шаблон функции:
FUNCTION wurzel! (argument!, wurz%) END FUNCTION
Извлечение корня из аргумента можно представить функцией возведения аргумента в степень, обратную степени корня. Функция извлечения корня любой



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 250; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.79.188 (0.011 с.)