Информатика. Учебное пособие
.pdf82
фиксированной точкой и с плавающей точкой. Константа с фиксированной точкой содержит десятичную точку между целой и дробной частью числа.
Например, 1.2345, -0.001. Константа с плавающей точкой - это число,
представленное в экспоненциальной форме и содержащее мантиссу, затем, в
зависимости от типа, букву E или D, - экспоненту. Например. значением константы 12.345E2 является число 1234,5, а значением константы 314159D-5
является число 3,14159.
Строковая константа - это последовательность символов, заключенных в двойные кавычки. Например, "3,1415", "Сумма", "Quick BASIC". Строковую константу могут составлять любые символы клавиатуры. Исключение составляет сам символ ".
Язык QB допускает использование именованных (символических)
констант, которые могут заменять в программе числовые и строковые величины. Чтобы использовать именованную константу, ее необходимо объявить при помощи ключевого слова CONST:
CONST имя_константы=выражение[,имя_константы=выражение]···
Например:
CONST pi=3.14159, message="Для продолжения нажми клавишу"
Переменная - это данное, которое может изменяться в ходе выполнения программы. Каждая переменная характеризуется именем. Имя переменной может содержать до 40 символов и должно начинаться с буквы, например, alfa, x2, sum.of.length. Имя переменной не должно быть зарезервированным словом или совпадать с именем именованной константы.
Тип переменной должен быть объявлен до или во время ссылок на эту переменную. Объявление типа переменной может быть выполнено одним из трех способов:
83
-явное указание типа с помощью соответствующего символа,
добавляемого к имени переменной при каждой ссылке на нее, например;
k%, factorial&, summa!, integral#, str$
-неявное указание типа переменной по первой букве ее имени с помощью оператора DEF, имеющего следующий формат:
DEFтип {буква|диапазон_букв}[,{буква|диапазон_букв}]···
Здесь тип представляет собой одно из следующих зарезервированных слов: INT (тип INTEGER), LNG (тип LONG), SNG (тип SINGLE), DBL (тип
DOUBLE), STR (тип STRING);
буква - первая буква имен переменных;
диапазон_букв - диапазон букв в алфавитном порядке, к которому относится данное объявление, разделенные знаком - (минус). Например,
DEFINT i-n или DEFSTR a,r-t
-явное указание типа переменной:
DIM имя AS тип [, имя AS тип], ···
Например:
DIM str1 AS STRING, index AS INTEGER, root AS DOUBLE
По умолчанию тип переменной устанавливается SINGLE.
Комментарии
Начало комментария обозначается знаком ' (апостроф)
Пример:
84
'Это комментарий
'PRINT пустая строка
PRINT ' комментарий
' Вывод пустой строки PRINT
В последней строке оператор PRINT не выполняется, так как он включен в строку комментарий.
Задание. Какие из следующих примеров не числа?
9,34 / -345A.34 / 234.324D+19 / 123.24 / "12454.34" / -234.45
Сложные арифметические выражения можно получить, если связать в программе числа друг с другом, например, для вычислений. Символы, с
помощью которых числа вступают друг с другом в некоторые отношения называют знаками операций, имеющие значения (табл. 9.2).
Таблица 9.2
Знак |
|
Значение |
* |
|
Умножение |
/ |
|
Деление |
+ |
|
Сложение |
- |
|
Вычитание |
( |
|
Открывающая скобка |
) |
|
Закрывающая скобка |
^ |
|
Возведение в степень |
|
Строковые выражения |
|
Простейшая строка – это текст, заключенный в кавычки ("), состоящий из произвольных комбинаций букв, цифр и специальных знаков.
Пример:
85
"Задайте высоту"
"2345,34"
"Программа окончена?(Y/N)" "Эта программа вычисляет V" "-----"
Примеры описания констант:
CONST pi!=3.14
CONST mwst%=14
CONST text$="С днем",pi!=3.14,steuer6%=17
CONST steuer7%=steuer6%*mwst%+6
Объявление переменных выглядит так:
DIM[SHARED]Имя_переменной[,Имя_переменной]…
Здесь SHARED – указание на то, что переменную можно использовать во всех функциях и процедурах программы.
Примеры объявления переменных:
DIM SHARED height!
DIM breadth!
DIM height!,length!,okt$,telefon$
Задание. Объявить переменные со следующим содержанием:
-Фамилии
-Телефакс-Num
-Заработная плата
-Номер счета
86
9.5.3. Ввод/вывод. Вывод на экран
PRINT [Выражение][{; ,}Выражение]…[{; ,}]
Выражение
{; ,}
;
,
арифметическое или строковое выражение. Значение выражения выводится на экран; устанавливает начало последующего вывода;
значение очередного выражения следует непосредственно за значением предыдущего; значение очередного выражения размещается в начале
следующей области вывода. Область вывода – блок из 14 символов.
Если в конце PRINT-выражения нет ни знака ":", ни ",", то выполняется перевод
строки, и вывод следующего значения начинается с новой строки.
Пример: Необходимо разместить следующее сообщение в одной строке экрана:
"Объем 211,37 квадратных миллиметров".
'Подавление переноса строки
PRINT "Объем "; PRINT 211,37;
PRINT "квадратных миллиметров" 'Конец программы
Первые два оператора PRINT заканчиваются точкой с запятой, поэтому
перевод строки не происходит и все предложение размещается в одной строке
экрана.
Ввод с клавиатуры
INPUT [Текст{; ,}]Имя_переменной[,Имя_переменной]…
Текст
{; ,}
Текст, который будет выведен на экран перед тем, как пользователь осуществит ввод точка с запятой обозначает, что после текста выводится знак
вопроса для обозначения необходимости ввода данных. Если вместо точки с запятой стоит запятая, знак вопроса после текста не появится.
87
9.5.4. Управляющие операторы.
Оператор безусловного перехода
GOTO метка_перехода
Пример: В данной программе происходит переход к последнему оператору
PRINT. В результате на экране получаем сообщение "Хелло, Делли!.
PRINT "Хелло," GOTO weiter
PRINT "здесь проявляется GOTO"; weiter: ' метка перехода
PRINT "Долли!"
' Конец программы
Оператор условного перехода в программе
Этот оператор позволяет изменить порядок выполнения операторов в
программе в зависимости от определенных условий.
Синтаксис оператора:
IF Условие THEN [Оператор 1-1]
.
.
.
[Оператор 1-n] ELSE
[Оператор 2-1]
.
.
.
[Оператор 2-m] END IF
Как видно из синтаксического описания, оператор IF состоит из THEN-
ветви с операторами 1-1 … 1-n и из ELSE-ветви, которая содержит операторы
2-1 … 2-m.
88
Если условие, заданное в операторе IF истинно, то выполняется THEN-
ветвь, т.е. последовательно выполняются операторы 1-1 … 1-n. В противном случае выполняются операторы 2-1 … 2-m ELSE-ветви. После выполнения одной из ветвей работа программы продолжается с оператора, следующего за
END IF, если ход выполнения программы не изменяется оператором GOTO.
Если отсутствует ELSE-ветвь и условие в операторе IF ложно, то работа программы всегда продолжается с оператора, следующего за END IF.
Пример:
'Пример применения оператора IF DIM a!
CLS
INPUT "Ввести A";a! IF a!=1 THEN
PRINT "A равно 1" END IF
PRINT " Конец IF-оператора"
'Конец программы
Оператор THEN-ветви выполняется только тогда, когда после запроса на ввод условие "A=1" будет истинно.
9.5.5. Циклы
Цикл WHILE
С помощью конструкции WHILE…WEND можно реализовать выполнение ряда операторов до тех пор, пока выполняется определенное условие.
Последовательность операторов, выполнение которых повторяется циклически,
называется циклом.
WHILE Условие [Оператор_1]
.
.
.
[Оператор_n]
WEND
89
До тех пор пока соблюдается условие, последовательно выполняются
операторы от 1 до n. Ключевое слово WEND закрывает конструкцию по
аналогии с командой END IF.
Если условие цикла больше не соблюдается, то выполнение программы
продолжается, начиная с оператора, следующего за WEND.
Пример:
'Проверка вводимых величин используя while DIM zahl!
CLS
WHILE zahl<0
INPUT "Введите положительное число",zahl! WEND
PRINT "Спасибо!"
'Конец программы
После запуска программы можно убедиться в том, что нельзя ввести
значение в переменную. Цикл WHILE не выполняется ни разу, потому что в
арифметических переменных изначально хранится число ноль, следовательно,
значение логического выражения цикла WHILE всегда ложно.
Вставьте перед строкой WHILE… следующий оператор:
Zahl!=-1
В результате программа будет работать правильно.
Пример. Рассмотрим программу:
'Проверка вводимых величин
DIM height!, breadth!, length! CLS
INPUT "Задайте высоту (>1000)", height! INPUT "Задайте ширину (<66)", breadth! INPUT "Задайте длину (>=123)", length!
'Конец программы
90
Пусть по каким-либо причинам значения вводимых переменных ограничены следующими условиями:
-область значений для высоты: >1000;
-область значений для ширины: <66;
-область значений для длины: >=123.
Продолжите программу для контроля вводимых значений, в которой: a) проверка осуществляется с помощью операторов IF и GOTO.
б) проверка выполняется в операторе WHILE…WEND.
Цикл DO
Конструкция DO…LOOP очень похожа на конструкцию WHILE…WEND.
Здесь также имеется последовательность операторов, повторное выполнение которых зависит от некоторых условий.
Вариант 1:
DO
[Оператор_1]
.
.
.
[Оператор_n] [EXIT DO]
LOOP [{WHILE | UNTIL} Условие]
Вариант 2:
DO [{WHILE | UNTIL} Условие]
[Оператор_1]
.
.
.
[Оператор_n] [EXIT DO]
LOOP
{WHILE | UNTIL} Ключевыми словами WHILE или UNTIL определяется способ проверки условий. При
91
использовании WHILE цикл выполняется до тех пор, пока соблюдается условие (значение логического выражения истинно). И, наоборот, при использовании UNTIL, цикл выполняется только тогда, когда условие не соблюдается (значение логического выражения ложно).
EXIT DO Оператор EXIT DO преждевременно прерывает выполнение цикла DO…LOOP. Работа программы продолжается с оператора , следующего за LOOP.
В первом варианте цикл выполняется по крайней мере один раз, так как
проверка условия находится в конце цикла. А во втором варианте цикл может
вообще не выполняться, если соответствующее условие с самого начала не
позволяет входить в него. Этот вариант очень похож на цикл WHILE…WEND.
Как видно из синтаксического описания, DO…LOOP может работать без
проверки условий. В этом случае из бесконечного цикла можно выйти с
помощью оператора EXIT DO.
Пример:
'Контроль ввода с помощью оператора DO…LOOP DIM zahl!
CLS DO
INPUT "Введите положительное число", zahl! LOOP UNTIL zahl!>0
PRINT "Спасибо!"
'Конец программы
Пример: В этом примере корректность ввода проверяется в конструкции IF, и,
если условие выполняется, выход из цикла происходит с помощью оператора
EXIT DO.
' Контроль ввода с помощью оператора DO…LOOP DIM zahl!
CLS
DO
INPUT "Введите положительное число", zahl! IF zahl!>0 THEN
EXIT DO
