Средства программирования алгоритмов линейной структуры
При решении задач линейной структуры следует помнить, что:
· программы с линейной структурой являются простейшими и используются, как правило, для выполнения простых вычислений по формулам;
· в программах с линейной структурой все предписания выполняются последовательно, одно за другим;
· алгоритм программы с линейной структурой может быть представлен в виде схемы, показанной на рис.9.
В языке QB отсутствует оператор, соответствующий действию начала алгоритма, однако имеется оператор END, который должен располагаться в последней строке программы, означающий конец программы. Этот оператор является необязательным и может отсутствовать, тогда концом программы служит последний оператор текста программы. Однако, если вставить оператор END после логически завершенного участка программы, то выполнение происходит только до этого оператора. На практике этот прием часто используется для отладки участков программы.
Рис.9 Блок-схема алгоритма линейной структуры
Простейшим и вместе с тем фундаментальным средством обработки данных в языке QB является оператор присваивания, имеющий следующий формат:
[LET] переменная = выражение, |
гдепеременная - имя переменной любого типа;
=это знак операции присваивания;
выражение– выражение любого допустимого типа. Ключевое слово LET обычно опускается.
Ограничимся пока рассмотрением случаев, когда переменные в левой части операторов присваивания имеют один из числовых типов. Тогда выражение в правой части оператора присваивания может быть только арифметическим.
При выполнении оператора присваивания сначала вычисляется выражение справа от знака =, затем результат вычисления, преобразованный к типу переменной в левой части оператора, запоминается в переменной, стоящей слева от знака=. Например:
k = 1 - присваивание переменной k значения константы 1;
x = -0.5 - присваивание переменной x значения константы -0.5;
y=SIN(x)+1 -присваивание переменной yзначения вычисленного выражения;
z = y -присваивание переменной z значения переменной y;
k = k+2 - увеличение переменной k на2.
При работе с оператором присваивания необходимо учитывать особенности преобразования типа во время присваивания вычисленного значения выражения. Например, при преобразовании вещественных значений к целому типу происходит округление по правилам математики.
В табл. 6 приведены примеры преобразования типа данных при выполнении операторов присваивания.
Таблица 6
Оператор | Результат | Пояснения |
a%=12.44 | Вещественная константа преобразована в целое значение | |
a% =12.77 | Округление при преобразовании к целому типу | |
a# = 6#/7 | 0.8571428571428571 | Действия и результат с двойной точностью |
a = 6#/7 | 0.8571429 | Результат с обычной точностью (округлен) |
Для ввода исходных данных с клавиатуры используется оператор INPUT. Он имеет следующий формат:
INPUT [;] [подсказка { ; | , }] список_переменных, |
гдеподсказка - строковая константа, выводимая на экран для пояснения - что требуется ввести;
списокпеременных - список, содержащий перечень имен переменных, разделенных запятыми, которым будут присвоены соответствующие значения в порядке их ввода с клавиатуры.
После подсказки должен следовать символ точка с запятой (после подсказки на экран выводится знак вопроса) или запятая (знак вопроса не выводится). Если после слова INPUT указать точку с запятой, то после ввода данных курсор остается в текущей позиции. При выполнении программы оператор INPUT выводит на экран подсказку, а пользователь должен ввести с клавиатуры данные в порядке и количестве, указанном в операторе INPUT, отделяя одно данное от другого запятыми, а по окончании ввода нажать клавишу Enter. Если подсказка отсутствует (это допустимо), то зачастую сложно понять, что и в каком порядке следует вводить. Если при вводе допущена ошибка, то на экране появляется сообщение “?Redofromstart”(повторить сначала).
Например,
INPUT “Введите коэффициенты уравнения a, b, c “, a#, b#, c# INPUT ;“Радиус круга”; r! |
При вводе строковых данных их значения могут не заключаться в кавычки. Если кавычки использованы, то строковый элемент будет состоять из всех символов между кавычками.
Если набор данных не меняется от одного выполнения программы к другому, то для его ввода могут быть использованы операторы READ,DATA и RESTORE. При этом оператор DATA является неисполняемым оператором, и может находиться в любом месте программы. Исключение составляет оператор цикла, внутри которого DATA располагаться не может. Он содержит список вводимых значений, разделенных запятыми. Оператор READ является исполняемым оператором. Он содержит список переменных, разделенных запятыми, которым присваиваются соответствующие им значения из списка оператора DATA. После выполнения оператора RESTORE оператор READначинает чтение данных с первого элемента текущего оператора DATA, если нет номера строки в операторе RESTORE, или того оператора DATA, на который указывает номер_строкив оператореRESTORE. Операторы имеют следующие форматы:
DATA список_значений READ список_переменных RESTORE [номер_строки] |
Количество и типы переменных в операторе READ должны строго соответствовать количеству и типам данных соответствующего оператора DATA. Например,
READ ff, stroke$, t1% DATA 2.5, “Quick BASIC”, 10000 |
Один оператор READ может работать не с одним, а с несколькими операторами DATA, в этом случае считывание данных производится в порядке следования операторов DATA.Например,
DATA 10,20 DATA 30,40 READ A, B RESTORE READ C,D |
Результат выполнения программы:
A, B, C, Dполучаютзначения10,20,10, 20.
Для вывода данных на экран монитора служит оператор PRINT, который при вводе с клавиатуры может быть заменен символом?. Оператор имеет следующий формат:
PRINT [список] [ {,|;} ] |
Выражения, указанные в списке, могут быть как арифметическими, так и строковыми, разделенными запятыми или точками с запятой. Позиция каждого выводимого на экран элемента определяется символом-разделителем. QB делит строку на пять зон по 14 символов. Если разделитель - запятая, то очередной элемент списка выводится в начале следующей зоны, если - точка с запятой, то элемент списка выводится непосредственно в следующую символьную позицию, причем числовые данные дополняются в конце одним пробелом, а для положительных чисел перед числом (вместо знака +) добавляется пробел. Например, оператор
PRINT “k=“; k, “a=“; a |
при k=25 и a=-2.25 выведет на экран, начиная с первой позиции, следующую строку:
k= 25 a=-2.25.
Если|k| > 9999999,то значение k выводится в виде чисел с плавающей точкой.Если в конце списка стоит запятая или точка с запятой, то следующий оператор PRINT производит вывод в той же самой строке. Если в операторе PRINT отсутствует список данных, то выводится одна пустая строка. Это используется для пропуска строки или для перехода на следующую строку.
В операторе PRINT для управления позицией вывода очередного элемента списка могут быть использованы функции SPC(n) и TAB(n),где n - арифметическое выражение целого типа. Функция SPC(n) размещает n пробелов после текущей позиции курсора, а функция TAB(n) помещает курсор в позицию n. При этом, если номер позиции n меньше текущей позиции курсора, то курсор помещается в следующей строке позиции n. Например, оператор
PRINT TAB(10);”Quick”;SPC(5);”BASIC” |
выведет на экран строку
Quick BASIC
Для вывода на принтер используется оператор LPRINT, формат и порядок выполнения которого аналогичны рассмотренному выше оператору PRINT.
Для перемещения курсора в нужную позицию экрана используется оператор LOCATE, имеющий следующий формат:
LOCATE [строка], [колонка] |
где строка - номер строки экрана в диапазоне от 1 до 25, а колонка - номер горизонтальной позиции символа в диапазоне от 1 до 80.
Оператор PRINT, следующий за оператором LOCATE, выводит символы на экран, начиная с указанной позиции. Чтобы вывести на печать строку из одинаковых символов, часто используют функцию STRING$(n, символ),которая формирует строку из nсимволов.
Выполнение любой программы рекомендуется начинать с оператора CLS, выполняющего очистку экрана от результатов выполнения предыдущей программы.
Контрольные вопросы для самоподготовки студентов
1. Чем характеризуется линейный алгоритм?
2. Как можно определить начальные значения переменных?
3. Каков приоритет выполнения операций в арифметическом выражении?
4. Какие типы данных (констант и переменных) можно использовать в программах на QB?
5. В чем заключается отличие переменной от константы?
6. Объяснить назначение оператора CLS.
7. Какие стандартные функции используются в QB?
8. Каковы особенности выполнения оператора присваивания?
9. Как объявить тип переменной в программе?
10. Как объявить в программе именованную константу?
11. Объяснить назначение операторов READ, DATA, RESTORE?
12. Какой оператор используется в программе для вывода результатов на экран?
Дата добавления: 2016-05-31; просмотров: 2158;