- •Содержание
- •Введение
- •1. Общие сведения
- •2. Основные элементы языка Бейсик
- •2.1. Алфавит.
- •2.2. Типы данных.
- •2.3. Стандартные функции языка Бейсик
- •2.4. Арифметическое выражение
- •3. Управляющие операторы языка Бейсик
- •3.1. Оператор присваивания
- •3.2. Операторы ввода/вывода данных
- •4. Операторы управления
- •4.1. Программирование разветвлений
- •4.1.1. Логические выражения и выражения отношения
- •4.1.2. Оператор if-then-else-условный оператор
- •4.1.3. Оператор select case
- •4.2. Программирование циклов
- •4.2.1. Операторы организации циклов for-next
- •4.2.2. Оператор while-wend-итерационный цикл 1
- •4.2.3. Оператор do-while (until) lоор-итерационный цикл 2
- •4.3. Процедуры и функции
- •5. Описание и обработка массивов
- •5.1. Оператор размерности массива dimension
- •5.2. Сортировка массивов
- •5.2.1. Сортировка методом пузырька
- •5.2.2. Сортировка массива с помощью оператора обмена swap
- •5.2.3. Другие методы сортировки
- •6. Строковые выражения и функции
- •7. Файлы данных
- •8. Работа с графикой
- •Литература
3.2. Операторы ввода/вывода данных
Оператор INPUT обеспечивает ввод данных с терминала. Встретив этот оператор, интерпретатор языка Бейсик приостанавливает выполнение программы, выдает на экран символ-приглашение (обычно это знак вопроса) и переходит в состояние ожидания ввода значений для элементов списка ввода, перечисленных через запятую после служебного слова INPUT. С помощью одного оператора INPUT можно ввести значения сразу для нескольких переменных или элементов массивов. Вводимые с терминала данные должны разделяться запятыми, и тип каждого из них должен быть совместим с типом соответствующей ему переменной из списка ввода.
Оператор INРUТ позволяет выводить на экран текст некоторого сообщения. Этот текст должен указываться в виде строки символов, стоящей непосредственно за словом INРUТ, строка при этом заключается в кавычки и отделяется от списка ввода разделителем (запятой или точкой с запятой). Если после сообщения в операторе INРUТ стоит точка с запятой, то в конце выдачи сообщения на экран выводится еще и стандартный символ-приглашение "?". Если же сообщение отделяется от списка ввода запятой, то символ-приглашение на экран не выводится. В этом случае вводимые пользователем значения будут располагаться непосредственно за последним символом сообщения.
Сообщение — это, как правило, подсказка пользователю, значения каких переменных и в каком порядке нужно вводить по данному оператору.
Общий вид оператора INPUT:
INPUT [;] ["приглашение"{; | ,}] список переменных
LINE INPUT [;] ["приглашение";] переменная$
INPUT #номер файла%, список переменных
LINE INPUT #номер файла%, переменная$
где
приглашение необязательная строка, отображаемая на экране перед вводом пользователем данных. Точка с запятой, стоящая сразу после приглашения, добавляет знак вопроса в строку приглашения.
список переменных одна или несколько переменных, разделенных запятыми, в которых хранятся данные, введенные от клавиатуры или считанные из файла. Имя переменной может состоять из 40 символов и должно начинаться с буквы. Допустимыми являются символы A,a-Z,z, 0-9 и точка (.).
переменная$ хранит строку символов, введенных от клавиатуры или считанных из файла.
номер файла% номер открытого файла.
INPUT использует запятую для разделения записей.
LINE INPUT считывает все символы до клавиши ENTER.
При вводе с клавиатуры точки с запятой, стоящей сразу после INPUT, курсор остается в той же строке до нажатия пользователем клавиши Enter.
Для вывода результатов работы на экран дисплея в языке Бейсик используется оператор PRINT. Общий вид оператора PRINT:
PRINT [#номер_файла%,][выражения][{; | ,}]
LPRINT [выражения] [{;| ,}]
где
номер_файла% номер открытого файла. Если номер не указан, PRINT выводит данные на экран.
выражения одно или несколько числовых или символьных выражений для печати.
{; | ,} Определяет, где начинается следующий вывод:
; - печать сразу после последнего значения.
, - печать в начале следующей зоны печати. Ширина зоны печати
– 14 символов.
С помощью оператора PRINT в процессе выполнения программы можно выдать на экран значения констант, переменных, элементов массивов и выражений. Если элементом списка вывода является выражение, то сначала вычисляется его значение, а затем печатается результат. Элементы списка вывода оператора PRINT отделяются друг от друга запятой или точкой с запятой. Любые два значения, разделенные в операторе PRINT точкой с запятой, выводятся непосредственно друг за другом. Числовые значения, однако, при печати отделяются от следующего элемента вывода одним пробелом, так как слитный вывод числовых значений плохо воспринимается. Пробел ставится в конце выводимого числа, но из-за того, что знак плюс, как правило, опускается и вместо него выводится пробел, положительные числа обрамляются пробелами с двух сторон. Ниже приводится пример, иллюстрирующий вывод на экран строк символов, положительных и отрицательных чисел. После выполнения трех операторов
XI =5.2
У1=-6.4
PRINT "Х1="; XI; " У1="; У1;Х1+У1
на экране появится следующая строка:
Х1= 5.2 У1=-6.4-1.2
Замена в операторе PRINT точки с запятой на запятую позволяет выводить значения в табличной форме. Строка терминала при этом разбивается на зоны по 14 позиций в каждой. Значение следующего за запятой элемента из списка вывода печатается с левого края следующей зоны, например оператор
PRINT "Х1=";Х1,"У1=";У1,Х1+У1
выведет на экран строку
X1= 5.2 У1=-6.4 -1.2
<———14———><———14———><———14———>
Если последняя зона текущей строки уже заполнена, то происходит автоматический переход на следующую строку экрана.
Две запятые подряд в списке вывода вызывают пропуск зоны в текущей строке. Если список вывода оператора PRINT заканчивается запятой или точкой с запятой, то следующий оператор PRINT продолжит вывод на той же строке. Например, операторы
Х=3.14159/2
PRINT "Х=";Х,
PRINT "SIN(Х)=";SIN(Х)
напечатают одну строку вида
Х= 1.570795 SIN(Х)= .99999999999912
Оператор PRINT без списка вывода вызывает переход курсора на новую строку.
Управлять выводом данных в операторе PRINT можно также при помощи встроенных в язык функций ТАВ и SРС. Функция ТАВ(N) перемещает текущую позицию печати следующего символа вперед в N-ю позицию строки. Если указана позиция, находящаяся левее текущей, то большинство систем перемещает текущую позицию в N-ю позицию следующей строки. Например, оператор печати
PRINT 2.5; ТАВ (8); 6.4; ТАВ(16); -9.9
напечатает значение 6.4, начиная с 8-й позиции строки (для положительных чисел вместо знака плюс выводится пробел), а —9.9 - начиная с 16-й позиции:
2.5 6.4 -9.9
<——8——>
<————16————>
Указание положения следующего выводимого символа при помощи функции ТАВ обычно применяется при выводе всевозможных таблиц. Для удобства пользователей во многих системах определена также функция SPC(N), она выводит N пробелов в данном месте строки. Например, оператор печати
PRINT 2.5; SРС (8); 6.4; SРС (16); -9.9
выведет строку вида
2.5 6.4 -9.9
Параметр N в обеих функциях может быть задан выражением, значение которого приводится к целому типу.
В языке Бейсик предусмотрен также специальный оператор форматного вывода - PRINT USING. Как и оператор PRINT, оператор PRINT USING содержит список значений, предназначенных для вывода. Первым в этом списке обязательно должно стоять строковое значение, оно задает вид, в котором будут выводиться все остальные элементы списка вывода.
Общий вид оператора:
PRINT [#номер_файла%,] USING символы_формата$; выражения [{; | ,}]
Описание формата заключается в кавычки и представляет собой образ формы представления выводимых числовых или строковых значений. В качестве разделителя в одних версиях используется запятая, в других — точка с запятой. Список вывода — обычный список оператора PRINT.
Сначала рассмотрим форматный вывод числовых значений. Числовой формат задается с помощью символов "#". Каждый такой символ соответствует одному выводимому разряду числа. Поле чисел всегда выравнивается по правому краю. Место десятичной точки определяется положением символа "." в числовом формате.
Например, операторы
PRINT USING "###.##";-l2.345,35.1
PRINT USING "###.##";34l.26,2435.9
PRINT USING "###";-98.7937
выведут на экран данные в следующем виде:
-12.35 35.10
341.26%2435.90
-99
Из примера видно, что незначащие нули слева не выводятся (заменяются пробелами), а незначащие нули после десятичной точки печатаются в соответствии с форматом. Если знаков в дробной части числа больше, чем указано в формате, производится округление этого числа. Если знаков в целой части числа больше, чем позиций в формате, оно все равно выводится полностью, а перед самой первой его цифрой выводится знак процента. При этом, как видно из примера, десятичная точка оказывается не на своем месте. При выводе чисел в подобных форматах под знак отрицательных чисел отводится позиция формата, а знак плюс не выводится.
Можно задать формат, в котором под знак числа отводится позиция, задаваемая в формате, для этого необходимо добавить в формат знак " + ". Знак числа " + " или " — " добавляется в начало выводимого числового значения, если " + " является первым символом числового формата, и в конец, если знак "+" является последним символом формата. Операторы
PRINT USING "+##.###";36.4,-2.74
PRINT USING "###.##+";96.97,-10.147
напечатают числовые значения в виде двух столбцов:
+36.400 -2.740
96.97+ 10.15-
В формат можно также добавлять знак "—", но только в качестве последнего символа формата. В этом случае после отрицательного числа должен выводиться знак "—", а после положительного — пробел.
Для наглядности большие числа часто записываются с запятыми через каждые три цифры. С помощью оператора PRINT USING можно выводить числа и в таком виде. Обычно запятая ставится перед десятичной точкой, но может указываться в любом месте формата до десятичной точки.
Оператор
PRINT USING "########,.#";12349876.5
выведет число, разделив его на триады:
12,349,876.5
Для вывода числовых значений в экспоненциальной форме надо поставить в конце обычного числового формата четыре символа ^^^^. Например, оператор
PRINT USING "###.##^^^^";-3478.268
выведет число в экспоненциальной форме:
-34.78Е+02
При этом первая из позиций, предназначенных для старших цифр, резервируется для знака числа.
С помощью оператора PRINT USING можно выводить и строковые значения, причем либо полностью, либо заданное число символов строковой переменной, отсчитываемое слева. Знак & в строковом формате означает строковое поле переменной длины и обеспечивает вывод всей строки. Знак ! означает, что выводится только первый символ строкового значения. Пара знаков обратной косой черты задает строковое поле фиксированной длины. Длина этого поля определяется как общее число символов формата, включая обе косые черты и все заключенные между ними пробелы. Строковое значение при таком формате выводится в поле начиная с крайней левой позиции.
Если выводимая строка символов не помещается в заданное поле, то лишние правые символы отбрасываются, Если же длина строки меньше длины поля, то оставшиеся свободные места справа в поле заполняются пробелами. Например, операторы
PRINT USING "!"; "BASIC", "FORTRAN", "ALGOL"
PRINT USING "\ \"; "ОТЛИЧНО","*", "ХОРОШО"
PRINT USING "&"; "УДОВЛЕТВОРИТЕЛЬНО"
выведут на экран три строки:
BFA
ОТЛ* ХОP
УДОВЛЕТВОРИТЕЛЬНО
Для вывода результатов работы программы на устройство печати используются операторы LPRINT и LPRINT USING.
Форматы этих операторов аналогичны соответственно форматам операторов PRINT и PRINT USING.
Оператор LOCATE устанавливает курсор в нужное место на экране дисплея и позволяет управлять параметрами самого курсора.
Формат записи оператора LOCATE
LOCATE
[номер-строки][,[номер-колонки][![]()
[,[начало-курсора][,конец-курсора]]]]
Операнды номер-строки и номер-колонки задают место, куда помещается курсор. Значение числового выражения, задающего номер строки, находится в пределах от 1 до 25; значение числового выражения, задающего номер колонки, лежит в пределах от 1 до 40 или от 1 до 80 в зависимости от установленной ширины строки экрана дисплея. Если третий позиционный параметр равен 0, то курсор будет не видим на экране во время выполнения программы; 1- видим. По умолчанию этот параметр равен 1. Параметры начало-курсора (верхняя линия) и конец-курсора (нижняя линия) задают количество линий сканирующего луча, которые формируют толщину курсора. Значения этих параметров лежат в пределах от 0 до 31. Линии нумеруются сверху вниз от 0 до 13 для алфавитно-цифрового и от 0 до 7 для графического дисплеев.
В результате выполнения оператора LOCATE курсор будет установлен в указанную строку и колонку с заданной видимостью и толщиной. Толщиной курсора можно управлять только в текстовом режиме. Если какой-то операнд опущен, то система будет использовать значение, которое установлено по умолчанию в системе или предыдущим оператором LOCATE.
Пример.
СLS
LOCATE 2,5
PRINT "ПРОГРАММА ЗАВЕРШЕНА УСПЕШНО"
