|
Главная -> Справочник по алгоритмам 0 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 мощью ряда специальных функций (см. табл. 2.10). Массивы (одномерные и двумерные) в бейсике-80 задаются, как н в других версиях языка бейсик, именем переменной и номерами строк и столбцов в скобках: например, А2(3,4) задает переменную массива А2 с индексами 3 и 4. Задание памяти под массив обеспечивается оператором DIM. В строчных переменных массивов необходил(Ъ резервировать и число знаков в строке. Например, оператор DIMA )2((10,20,25) резервирует память под строчную переменную из массива АП. Приоритет выполнения операций в бейсике-80. Функция CSNG(X) вычисляет выражение X с обычной точностью (до 7 десятичных позиций). Пример. 10 A# = l.DO/3.DO 20 PRINT CSNG(A#)/2, А#/2 RUN .1666667 .166666666666667 Функции CVI, CVS, CVD преобразуют строки в числа: CVI - 2-символьную строку в целое число, CVS - 4-символьную строку в число с обычной точностью и CVD - 8-символьную строку в число с двойной точностью. Они используются для восстановления числовых значений из поля буфера
Самый низкий приоритет у логических операций. Они выполняются в порядке их наименования: НЕ, И, ИЛИ, исключающее ИЛИ, логическая импликация и логическая эквивалентность. Арифметические и логические выражения в бейсике-80 строятся по правилам, типичным для других версий (они описаны выше). Специальные функции языка бейсик-80 - такие функции, которые характерны для данной версии бейсика и имеют те или иные отличия от функций бейсика, описанных ранее. Арифметическая функция CDBL(X) изменяет тип выражения X на представление с двойной точностью с плавающей точкой. В этом формате результат выдается с точностью до 16 десятичных цифр. Пример. 10 А# = 1/3 20 B#=CDBL(l/3) 30 PRINT А#, ВФ 40 END .333333 .333333333333333 Строчная функция CHRC! (Выражение) приводит выражение к целому числу в интервале от О до 255. Арифметическая функция CINT{X) округляет выражение (X) до целого значения. Пример. 10 INPUT А, В, С 20 PRINT {CINT{A + B + C)/3) 30 END RUN ? 45, 24, 77 49 файла прямого доступа и являются обратными функциями МК1П, MKSn и МКОП Функция INP (Выражение) вводят значение байта со входного порта, номер которого указан целочисленным выражением (от О до 255). Функция ШРиТП (Выражение; Номер файла) читает заданное количество символов из указанного номером файла. Пример. В программе 10 OPEN "I" Ф2, ":С1" 20 PRINT INPUTH (10,2) 30 CLOSE #2 40 END • RUN 123456789 (BK) 123456789 строка 20 печатает первые 10 символов файла #2, а оператор CLOSE закрывает файл. Функция INSTR ищет первое вложение второй строки ВП в первой строке АП и определяет порядковый номер второй строки. Она формирует О при трех условиях: если I больше длины АП, если ВП не может быть найдена н если АП не содержит символа. Вид записи функции: INSTR([1,] Строчное выражение АП,. Строчное выражение ВП). Пример. 10 АП ="RANDON NUMBER SUBROUTINE" 20 Bn="R" 30 PRINT INSTR (АП, ВП) 40 PRINT INSTR (2, АП, ВП) 50 END RUN функция INT(X) отыскивает наибольшее целое значение, меньшее или равное указанному выражению или числу X. Например, если B = INT(15,021). то распечатка В дает значение 15. Строчная функция LEFTD (Строчная переменная. Выражение) находит значение строки ХП и определяет 1 левых символов. Пример. 10 ХП ="WHITE, SMITH, JONES, BLACK. GREEN" 20 Yn = LEFT П (ХП, 11) 30 PRINT vn WHITE. SMITH Строчная функция LEN(Xn) подсчитывает количество символов строки ХП, включая непечатаемые символы и пробелы. Функция LOC в файле прямого доступа определяет текущий номер последней записанной или прочитанной записи. В последовательном файле функция LOC определяет число секторов, прочитанных или записанных со времени выполнения последнего оператора OPEN. Функция записывается в виде LOC (Номер файла) Пример. 10 OPEN "R", #3,:Fl:RANDON 20 GET #3, 44 30 PRINT LOC(3) 40 END Функция LOF (Номер файла) вычисляет число записей в файле прямого доступа, а в файле последовательного доступа вычисляет число секторов с данными (128 байт на сектор) в файле. Функция M1DQ (ХП, I [, J]) проверяет строку ХП и выделяет ее правые символы, начиная с позиции, заданной значением 1. Здесь I и J -"целые числа от О до 255. Если указан аргумент J, определяется J символов, начиная с позиции I. Если I больше, чем LEN(Xn), то МЮП формирует пустую строку. Если J больше числа символов в ХП справа от 1-й позиции или J не указано, функция МЮП формирует остаток строки. Пример. 10 ХП ="JOHN J. JONES" 20 PRINT МЮП (ХП, 10. 3) 30 END .Функция MKin. MKSn и MKDH преобразовывают данные как числовые значения в 2-, 4- или 8-байтные строки соответственно. МК1 П используется для преобразования целого значения, MKSH - для преобразования значения с плавающей запятой с обычной точностью и МКОП - для преобразования значения с плавающей запятой с двойной точностью. Функция ОСТ П (Выражение) определяет строку восьмеричных цифр, представляющую значение целого аргумента (выражения). Функция РЕЕК (Выражение) читает один байт памяти в указанном месте, а функция РОКЕ (см. далее) записывает один байт в указанное место памяти. Например: PRINT РЕЕК (0FABH) 200 где 200 - прочитанный байт из места 0FABH памяти. Функция POS (Целое число или Выражение) указывает позицию курсора после последнего оператора PRINT. В записи POS(I) аргумент I является фиктивным,, самая левая позиция курсора соответствует 1=1. Функция RANDOMIZE запрашивает ввод нового случайного числа, которое является начальным для функции генерации случайных чисел с равномерным распределением RDN. Если функция RANDOMIZE не используется, то одна и та же последовательность случайных чисел будет повторяться каждый раз. Функция RANDOMIZE записывается в виде RANDOMIZE (Выражение) причем начальное случайное число задается выражением (либо константой или переменной). Функция RIGHTH (Строка, Целое I) определяет I правых символов строки ХП. Если 1 = 0, выдается пустая строка, а если I превышает длину строки ХП, то выдается вся строка. Пример. 10 An="JOHN J. JONES" 20 ХП= RIGHTH (АП, 8) 30 PRINT ХП 40 RUN J. JONES Функция SPACEH- (Целочисленное выражение) формирует в строке пустой интервал, состоящий из пробелов, число которых задается значением целочисленного выражения. Функция SPS (Целое число) совместно с оператором PRINT также формирует пустой интервал из N пробелов (N - целое число). Функция STRINGH (Целое, Целое) определяет строку, в которой заданный символ повторяется указанное число раз. В записи STRINGD (Целое, Строчное выражение) заданное число раз повторяется первый символ строчного выражения. Функция STRH (Выражение) формирует строку десятичных знаков, которая представляет значение целочисленного выражения. Пример. 10 FOR 1=0 ТО 9 20 АП=АП+МЮП (STRH (I), 2) 30 NEXT I 40 PRINT АП RUN 0123456789 функция USRN задает обращения к определенным пользователем подпрограммам, записанным на языке ассемблера, фортран-80 или ПЛ/М-80. Оператор DEF USRN определяет начальный адрес соответствующей подпрограммы USRN. Аргумент N может быть любым целым от О до 24; если он не указан, полагается N = 0. Символ типа обозначает тип результата. Если обозначение типа отсутствует, результат определяется как целое число в регистрах Н и L микропроцессора. Функция VAL (Строка) определяет численное значение строки. Пример. 10 INPUT AG 20 A1=VAL (АП)*52 30 PRINT Al RUN ? 4 (т. е. АР =4) 208 (т. е. имеем 4*52) Специальные директивы и операторы. Под специальными директивами и операторами языка бейсик-80 подразумеваются специфические именно для него директивы и операторы. Ниже они даны в алфавитном порядке. Директива- ATTRIB изменяет атрибуты файлов на дисках или защищает любой файл от записи, стирания или изменения имени. Защита файла выполняется директивой в виде ATTRIB :F Номер дисковода, "Имя файла". "WI" Запись, стирание и изменение ранее защищенного файла обеспечивается директивой ATTRIB :F Номер дисковода, "Имя файла", "W0" Директива AUTO обеспечивает автоматическое присвоение номера каждой строке программы. Она вводится в виде AUTO Приращение номера [, Номер первой строки Так, директива AUTO 50, 300 задает номера строк с приращением 50, начиная со строки 300, т. е. строки будут иметь номера 300, 350, 400, 450 и т. д. По умолчанию, т. е. при вводе только директивы AUTO, приращению и номеру первой строки присваиваются значения 10. Если задаваемый директивой AUTO номер строки имеется в программе, он отмечается знаком *. Директива CLEAR обнуляет все поре-•менные и массивы, определения функций и закрывает файлы. Символьные переменные при этом становятся пустыми строками. Эта директива может записываться в виде CLEAR [Выражение [Адрес]] Численное значение выражения указывает пространство для строк в байтах. Например, директива CLEAR 2000, 0D000H резервирует (высвобождает) 2000 байт для строк и не позволяет использовать адреса памяти выше 0D000H. Директива CLOSE [Номер] закрывает файл с заданным номером. Если аргумент (номер) не указан, директива CLOSE за- крывает все файлы. Все файлы закрывают также директивы END, NEW, MERGE, LOAD, RUN (без F). Директива DEF FN(X) задает функцию пользователя. Здесь FN - имя функции, X - аргумент (функция может быть с любым числом аргументов). Директива DELETE НС, где НС - номер строки, уничтожает одну строку с заданным номером, директива DELETE -НС уничтожает строку с номером НС и все предшествующие ей строки. Директива DELETE НС1, НС2 уничтожает строки с номерами от НС1 до НС2. Директива DIR воспроизводит имена, число блоков и длины (в байтах) файлов, сохраняемых на указанном после нее диске. Оператор END останавливает выполнение программы и закрывает все файлы. Переменные при этом сохраняют свои значения. Оператор STOP действует как END, но файлы не закрываются и при его исполнении появляется сообщение BREAK IN НС (т. е. останов в строке НС). Оператор END рекомендуется ставить в конце программы, хотя это не обязательно. Оператор ERROR "Выражение" имитирует происхождение ошибки. Если ERROR выполняется с номером, который не соответствует сообщению об ошибке, будет напечатано сообщение UNPRINTABLE ERROR Оператор FIELD# «Номер файла» используется для назначения памяти в одном из шести 128-байтных буферов файлов прямого доступа. Для чтения определенной записи из дискового файла в 128-байтный буфер служит оператор GET[#] Номер файла [, Номер записи] Оператор условных переходов в бейсике-80 может иметь вид IF Выражение THEN Инструкция ELSE Инструкция Например, оператор 50 IF Х = 0 THEN А = 5 ELSE А = 20 означает, что если Х=0, то А = 5, иначе А=20. Оператор . KILL Строчное выражение служит для исключения из дисковой памяти программы. Он также уничтожает заголовок программы в оглавлении. Оператор INPUT помимо обычного применения (задания численных значений переменной или переменным списка) используется в составном операторе LINE INPUT. Последний читает целую строку данных и присваивает ее указанной строчной переменной в качестве значения. Данные могут быть прочитаны из файла на диске или введены 0 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 0.0211 |
|