- •Лекция № 23 основы програмирования на языке qbasic Вопросы:
- •Литература:
- •Конструкции языка.
- •Структура программы.
- •Операторы.
- •Понятие алгоритма линейной структуры.
- •Алгоритмы и программы ветвящейся структуры
- •Оператор безусловного перехода
- •Условные операторы
- •Линейная форма
- •Пример Составить программу и вывести на печать значение функции
- •Блок-схема
- •Блочная форма
- •Алгоритмы и программы циклической структуры
- •Операторы цикла
- •Операторы while…wend
- •Обработка массивов
- •Блок-схема алгоритма
Структура программы.
Программа состоит из последовательности строк. Строка может состоять из:
[N строки/метка] оператор [:оператор]...['комментарий]
Квадратные скобки означают, что позиция, заключенная в эти скобки, может отсутствовать в программе. Номер строки от 0 до 65535. Операторы для удобства чтения лучше располагать блоками, ступенчато. Начинающим программистам рекомендуется начинать нумерацию строк с десятого номера с шагом равным 10, что позволяет вставить дополнительные операторы между строками. Метка должна начинаться с буквы.
В некоторых примерах сохранена нумерация строк для удобства объяснения задач.
Операторы.
Оператор указывает, что должно быть выполнено и как следует воспринимать данные (если они есть), следующие за этим оператором.
Операторы делятся на две группы:
- выполняемые операторы, которые определяют действия программы, указывая, какую операцию необходимо выполнить (PRINT, GOTO, READ);
- невыполняемые операторы, описывающие характер и упорядочение данных, позволяют вводить в программу пояснения (DATA, REM).
Оператор LET.
Оператор LET присваивает значение переменной (числовой или символьной).
Общий вид
[ N строки] [LET] переменная = выражение
Присвоение выполняется справа налево. Переменная и выражение должны быть одного типа (оба числовыми или оба символьными).
Пример:
LET a = 9.85
LET t$ = "TEXT"
LET b(I) = (a(0) + a(I)) / 2
Оператор LET можно помещать в любом месте многооператорной строки. Слово LET может быть опущено.
Оператор INPUT.
Оператор INPUT позволяет вводить и анализировать данные с клавиатуры в процессе выполнения программы.
Общий вид
[N строки] INPUT <список>
где <список> - последовательность переменных (числовых или символьных), разделенных запятыми.
Встретив оператор INPUT, Бейсик печатает знак ? и ждет ввода значений для каждой переменной, указанной в операторе. Значения разделяются запятыми. При нажатии ENTER производится ввод данных слева направо и анализ их на соответствие типа переменных вводимым значениям. Число вводимых данных должно соответствовать числу переменных в операторе. Лишние значения игнорируются. В TURBO BASIC в оператор ввода разрешается включать пояснительный текст.
Например:
INPUT "Ввести А, В,С"; А,В,С
В процессе выполнения программы на экране появится сообщение Ввести А,В,С ?
После знака ? необходимо ввести численные значения переменных А,В,С через запятую, т.е. эта строка примет вид
Ввести А,В,С ? 1,2.2,3Е-2 или INPUT "Ввести А,В,С",А,В,С
Ввести А,В,С 1,2.2,3Е-2
Следует обратить внимание на то, что при использовании точки с запятой (;) после пояснительного текста на экране выводится знак вопроса (?), а при использовании запятой (,) после пояснительного текста знак вопроса на экране отсутствует.
Операторы READ, DATA, RESTORE.
Операторы READ и DATA используются для организации блока данных, который считывается во время выполнения программы.
Общий вид
[N строки] READ <список>
где <список> - последовательность переменных (числовых или символьных), разделенных запятыми.
[N строки] DATA <список значений>
где <список значений> - последовательность констант (числовых или (и) символьных), разделенных запятыми.
Перед выполнением программы БЕЙСИК просматривает все операторы DATA в порядке их появления и создает блок данных. Каждый раз, когда в программе встречается оператор READ, из блока данных выбирается последовательно соответствующие значения для переменных этого оператора в том порядке, в котором они заданы в блоке данных.
После выполнения оператора READ положение последнего считанного данного запоминается (с помощью указателя). Следующий оператор READ начинает выбирать данные с той позиции, которая была установлена предыдущим оператором READ.
Пример:
READ A,B $
DATA 3.5, режим
БЕЙСИК присваивает значения в следующем порядке:
А=3.5
В$ =режим
Оператор READ допускается помещать в любом месте многооператорной строки.
Оператор DATA должен быть единственным или последним оператором строки. Обычно он ставится в конце программы.
При выполнении оператора READ указатель считывания данных перемещается. БЕЙСИК осуществляет повторное считывание одних и тех же данных с помощью оператора RESTORE.
Пример:
10 READ a, b, c
20 RESTORE
30 READ D, e, F
40 DATA 2,4.5,6,8,10
50 END
Оператор READ в строке 10 читает первые три значения из оператора DATA в строке 40.
А=2
В=4.5
С=6
Затем оператор RESTORE (строка 20) перемещает указатель данных на начало блока данных так, что второй оператор READ в строке 30 читает те же первые значения.
D = 2
e = 4.5
c = 6
Оператор PRINT.
Оператор PRINT выводит данные на терминал в процессе выполнения программы.
Общий вид
[N строки] PRINT <список>
где <список> - последовательность констант, переменных или выражений, подлежащих выводу.
Если элементом списка является выражение, БЕЙСИК вычисляет его и печатает результат.
Пример:
LET A1 = 25: A2 = 35
PRINT "A1+A2="; A1 + A2
Результат, выводимый на терминал: А1+А2=60
Строка символов, выводимая на терминал, состоит из 5 зон по 14 позиций в каждой зоне.
Оформление списка редактора PRINT.
Если между элементами списка оператора PRINT стоит запятая, то последующий элемент списка печатается в свободной зоне. Если последняя зона в строке заполнена, печать продолжается с первой зоны следующей строки.
Если две запятые стоят рядом, то выполняется пропуск одной зоны.
Если за элементом списка стоит точка с запятой (;), то
следующее значение размещается после числа через один пробел, а после символьного значения - в следующей позиции.
Если за последним элементом списка не стоит "," или ";", то первое значение, выводимое следующим оператором PRINT, размещается на следующей строке.
Если за последним элементом списка стоит "," или ";", то первое значение, выводимое следующим оператором PRINT, размещается в следующей зоне или следующей позиции.
Оператор PRINT без списка элементов служит для перевода строки терминала.
Пример:
PRINT -4
PRINT 15; ; 30
Сообщение, выводимое на терминал:
-4
15 30
Для вывода символьных данных используется символ " (кавычки).
Пример:
Нужно вывести на печать слово СКОРОСТЬ
По оператору
PRINT"СКОРОСТЬ"
БЕЙСИК выведет на терминал:
СКОРОСТЬ
Для вывода данных в заданном формате используется оператор PRINT USING, имеющий структуру:
[N строки] PRINT USING <список форматов>;<список вывода>
где <список вывода> оформляется так же, как в операторе
PRINT;
<список форматов> - последовательность специальных символов, заключенных в кавычки.
В качестве специальных символов используются:
# - вывод одной цифры;
. - вывод десятичной точки;
+ или (-) - вывод знака числа (+ или -);
(-) - вывод знака отрицательного числа (без скобок);
^^^^ - выделение поля для вывода экспоненты
и другие.
Примеры использования форматов:
Формат Выводимое число Результат
## 12 12
###.## 12 12.00
###.## 123 123.00
+### 123 +123
-### -123 -123
-### 123 123
##.##^^^^ 123 1.23Е+02
Например, оператор
PRINT USING "+##.#";A,B,C
выводит значения переменных А,В,С со знаками. Каждое значение имеет две цифры в целой части и одну в дробной.
Операторы END и STOP.
Операторы END и STOP используются для приостанова и завершения выполнения программы.
Формат оператора
END
Оператор END должен быть последним в программе.
Оператор STOP приостанавливает выполнение программы, но не закрывает файлы в отличие от оператора END, который завершает выполнение программы и закрывает файлы. Оператор STOP можно размещать в различных местах программы для проверки выполнения логики программы. Оператор STOP вызывает останов программы и выводит сообщение:
STOP AT LINE HC
READY,
где НС - номер строки, на которой произошел останов программы.
Оператор CLS - очистка экрана.