ОСНОВЫ ПРИКЛАДНОЙ ИНФОРМАТИКИ Раздел: Описание языка Турбо-Бейсик Справочное пособие для студентов всех специальностей АННОТАЦИЯ Настоящее пособие содержит описание основных средств языка Турбо-Бейсик, а также необходимые сведения по среде Турбо-Бейсика. Пособие в основном ориентировано на использование при выполнении практикума по курсу
"Основы прикладной информатики". Может также использоваться в качестве справочника по языку Турбо-Бейсик. С О Д Е Р Ж А Н И Е 1. Основные средства языка 1. Структура программы 2. Типы данных 3. Массивы 4. Выражения 5. Стандартные функции 6. Основные операторы 7. Операторы цикла 8. Подпрограммы, функции и процедуры 2. Цвет и графика 3.
Файлы. Работа с файлами данных последовательного и прямого доступа 1. Файлы последовательного доступа 2. Файлы прямого доступа. 4. Движущиеся изображения, звуковые эффекты и нестандартный ввод с клавиатуры 1. Оператор DRAW 2. Операторы GET и PUT. 3. Оператор BEEP 4. Оператор SOUND 5. Оператор PLAY 6. INKEY$ 5.
Библиотека стандартных процедур в Турбо-Бейсике 6. Рекомендуемый порядок работы на ПЭВМ при создании и выполнении программ на языке Турбо-Бейсик ОСНОВНЫЕ СРЕДСТВА ЯЗЫКА 1. Структура программы Программа состоит из строк. Одна строка содержит один или несколько операторов, разделенных двоеточием. Например, a=1: b=1 Перенос оператора на другую строку допускается.
В этом случае используется знак переноса Например, a=1: b_ =1 Строки могут нумероваться (но это не обязательно) . Ссылка в нужное место программы может осуществляться также по метке. Метка размещается в отдельной строке, начинается с буквы и содержит любое количество букв и цифр. После метки ставится двоеточие. Например, aaa: x=x+1
GOTO aaa Если первым символом в строке является апостроф (') , то строка воспринимается как комментарий. Имя образуется из букв от A до Z (или от a до z) , знака подчеркивания и цифр от 0 до 9, начинается с буквы. Имя используется для обозначения переменных, меток, процедур и т.п. 2. Типы данных Целый (значения от -32767 до 32767, занимает 2 байта) ; длинный целый (от 2я5-31 до 2я531,4 байта) ; вещественный (4 байта) ; вещественный двойной точности (8 байт) ; символьный (последовательность
любых символов, каждый символ занимает 1 байт) . Тип переменной определяется типом данных, которые она представляет. Указание типа переменной задается соответствующим знаком после имени. a$ - символьный a% - целый a& - длинный целый - 5 a вещественный обычной точности а# - вещественный двойной точности Если знак после имени отсутствует, то эта переменная считается по умолчанию вещественной обычной точности. То есть a! =1.1 и а=1.1 одно и то же. 3. Массивы Описание массивов осуществляется с помощью оператора
DIM с указанием размеров. Например, оператор DIM a(10) , b(10: 20,25: 45) описывает одномерный массив a, элементы которого имеют индексы от 0 до 10, и двухмерный массив b, элементы которого имеют индексы: первый от 10 до 20, второй от 25 до 45. Если нижняя граница индексов в описании не указана, то она считается равной 0. Используя оператор OPTION BASE n можно задать нижнюю границу индексов равной n. Например, OPTION BASE 1 DIM a(10) В этом случае индекс элементов массива a будет принимать значения,
начиная с 1. Если описание массива отсутствует, то по умолчанию верхний индекс равен 10 (нижний - 0) . В описании массива вместо константы может использоваться переменная. Например, DIM a(n) Значение n должно быть предварительно определено. Используя оператор ERASE можно освободить память, выделенную под массив, и вернуть ее для дальнейшего использования. Например, оператор ERASE a возвращает память, выделенную под массив a.
4. Выражения Символьные выражения. состоят из символьных констант (последовательность символов, заключенная в кавычки) , символьных переменных, символьных функций, соединенных знаком + (конкатенация, или объединение) . Например, a$="КАТЯ" b$="ЛЕНА" f$=a$+" И "+b$ В результате f$ будет иметь значение "КАТЯ И ЛЕНА". При помощи функций LEFT$, RIGHT$,
MID$ можно выбрать часть символьной переменной слева, справа или из середины. Например, F1$=LEFT$(f$, 4) F2$=RIGHT(f$, 4) F3$=MID$(f$, 6,1) В результате будет F1$ = "КАТЯ", F2$ = "ЛЕНА" и F3$ = "И". Числовые выражения включают в себя константы, переменные, функции, соединенные знаками арифметических операций, при этом могут использоваться величины разных типов.
Приоритеты арифметических операций: 1. Возведение в степень (^) 2. Умножение, деление (*, /) 3. Деление нацело () (например, 52 равно 2) 4. Вычисление остатка от деления (MOD) (например, 45 MOD 19 равно 7) 5. Сложение, вычитание (+, -) 5. Стандартные функции Запись на Бейсике Математическая запись
ABS (x) іxі SIN (x) sin x COS (x) cos x TAN (x) tg x ATN (x) arctg x EXP (x) eя5x LOG (x) ln x LOG2(x) log42 x LOG10(x) lg x INT (x) целая часть х SGN (x) знак х (+1 при х > 0,0 при х=0, -1 при x < 0) SQR (x) квадратный корень из х - 7 LEN (а$) количество символов а$ LEFT$(a$, n) выбирает из a$ n символов, начиная с первого
MID$ (a$, m, n) выбирает из a$ n символов, начиная с m-го RIGHT$ (a$, n) выбирает n символов а$, начиная с последнего STR$ (x) преобразует число к символьному виду VAL (a$) определяет числовое значение а$ ASC (a$) определяет код первого символа а$ TAB (n) указывает номер позиции для вывода следующего элемента в списке вывода оператора PRINT SPC (n) вывод n пробелов, используется в списке вывода оператора
PRINT RND [(x) ] выдает случайное число из интервала (0,1) Замечания. 1. [] обозначают необязательный параметр. 2. Если х=0, то повторяется последнее сгенерированное число; если х < 0, то для каждого x генерируется новая последовательность случайных чисел; если x > 0 или отсутствует, то генерируется очередное случайное число, но при повторном запуске последовательность
повторяется. Можно использовать оператор RANDOMIZE (перед первым использованием функции RND) , чтобы при новом запуске программы получать новую последовательность случайных чисел. Операции отношения: <, <=, >, >=, <>. Левая и правая части отношения - это числовое или символьное выражение (в последнем случае сравниваются числовые коды символов) . Если отношение удовлетворяется (является истинным) , то его значение равно
-1, если не удовлетворяется (является ложным) , то его значение 0. Отношения могут быть использованы также в числовых выражениях. Например, при выполнении оператора PRINT 5 > 6,5 < 6, (5 < 6) * 15 будет напечатано 0, -1 и -15. Логические операции: AND (логическое и) , OR (логическое или) , XOR (исключающее или) ,
EQV (эквивалентность) , IMP (импликация) . Логические операции осуществляются над целыми числами -1 (TRUE) и 0 (FALSE) . -1, если A = -1, B = -1 A AND B 0, в остальных случаях 0, если A = 0, B = 0 A OR B -1, в остальных случаях -1, если A и B не совпадают A XOR B 0, если A и B совпадают -1, если A и B совпадают
A EQV B 0, если A и B не совпадают 0, если A = -1, B = 0 A IMP B -1, в остальных случаях 1.6. Основные операторы Оператор присваивания имеет вид переменная = выражение Оператор безусловного перехода имеет вид GOTO метка Условный оператор имеет вид IF условие THEN операторы [ELSE операторы]
Например, IF a < b THEN t=15: V=16 ELSE t=17 В качестве условия может использоваться целое выражение, которое интерпретируется как FALSE, если его значение равно 0, и TRUE, если не равно 0. Если после THEN или после ELSE располагается целая группа операторов, то можно использовать IF блок, который имеет следующую структуру IF условие THEN операторы ELSE операторы END IF При этом
ELSE и операторы за ним могут отсутствовать, т.е. возможна конструкция IF условие THEN операторы END IF Если после ELSE необходима проверка условия, то используется оператор ELSEIF IF условие THEN операторы ELSEIF условие THEN операторы ELSE операторы END IF Оператор конца END используется для окончания выполнения программы. Может использоваться в программе несколько раз. Используется также с
IF, SUB, DEF, SELEСT (см. ниже) Оператор очистки экрана CLS обычно располагается в начале программы для очистки экрана перед выводом результатов программы. Оператор ввода INPUT имеет вид INPUT [;] [поясняющий текст], список переменных Поясняющий текст заключается в кавычки. Переменные в списке отделяются друг от друга запятыми. ";" после INPUT означает, что курсор останется на той же строке, когда будет нажат "
Ввод". Оператор вывода PRINT имеет вид PRINT [список вывода] Элементы списка разделяются ", " или ";" или пробелом. В первом случае вывод следующего элемента начинается в новую зону (строка экрана условно разделена на 5 зон по 14 позиций каждая) , во втором - через пробел (для чисел) или непосредственно вслед (для символьных строк) за предыдущим элементом. Элементом списка может быть имя переменной, константа (символьная
заключается в кавычки) или выражение (перед выводом вычисляется) . Оператор вывода PRINT USING имеет вид PRINT USING формат; список вывода Формат задается в виде символьной строки (заключенной в кавычки) , задающей форму вывода каждого элемента списка по следующим правилам для чисел: # - для каждой цифры, ^^^^ - для вывода в показательной форме. Остальные символы обозначают сами себя. Например1, ##. ## - будет выведено 2 цифры в качестве целой
части и две - дробной. Если целая часть содержит более двух цифр, то перед числом будет напечатан знак %. #. ## ^^^^ - вывод будет осуществляться в показательной форме. Для символьных строк: " " - (два пробела) - будет выведено четыре символа "\" (без пробела) - будет выведено два символа Вообще количество выведенных символов будет равно числу пробелов между двумя наклонными линиями + 2. "! " будет выведен один символ "&" - будут
выведены все символы Например, A$= "КОТ": GA= 6.5 B$= "СОБАКА": GB= 15.3 PRINT USING "& ВЕСИТ #. #, ВЕСИТ ##. # КГ";A$, GA, B$, GB При выполнении этого оператора на экране появится КОТ ВЕСИТ 6.5, СОБАКА ВЕСИТ 15.3 КГ Оператор определения положения курсора LOCATE i, j устанавливает координаты (номер строки i и номер столбца j) , в которые начнется вывод данных
оператором PRINT. 1.7. Операторы цикла 1. FOR i=iя4нач to iя4кон [STEP ih] операторы NEXT i i, iя4нач, iя4кон, ih - соответственно, управляющая переменная цикла, ее начальное, конечное значения и шаг изменения. Если ih=1, то шаг можно опустить. Например, FOR i=1 to 10 NEXT i FOR i=1 to 10 FOR j=1 to 20 NEXT j: NEXT i - 11 или FOR i=1 to 10 FOR j=1 to 20
NEXT j, i 2. DO WHILE 1условие 1операторы LOOP или WHILE условие операторы WEND (операторы выполняются, пока выполняется условие) 3. DO UNTIL условие операторы LOOP (операторы выполняются до тех пор, пока не будет выполнено условие. Как только условие будет выполнено, осуществляется выход из цикла) . 4. DO операторы LOOP Выход из цикла в этом случае осуществляется оператором
EXIT. Оператор EXIT (выход) используется с SELECT, DEF, FOR, IF, LOOP, SUB, WHILE. Например, EXIT FOR осуществляет выход из цикла, организованного операторами FOR/NEXT до его завершения EXIT IF - выход из любого места IF блока EXIT LOOP - выход из цикла, заканчивающегося оператором LOOP или WEND. Остальные случаи использования EXIT будут рассмотрены вместе с соответствующими операторами.
Операторы выбора ON/GOTO и ON/GOSUB ON n GOTO метка [, метка ] n может принимать значения от 0 до 255. Переход осуществляется на метку, определяемую значением n. Например, при n = 2 переход осуществляется на вторую метку в списке. Если n = 0 или n больше количества меток в списке, то выполняется следующий по порядку оператор. ON n GOSUB 1метка [, метка ] n принимает значения от 0 до 255.
Переход осуществляется к одной из возможных подпрограмм (см. ниже) , определяемых метками в списке, в зависимости от значения n. После выполнения подпрограммы возврат осуществляется к оператору, следующему за ON/GOSUB. 1.8. Подпрограммы, функции и процедуры Подпрограммая помеченная последовательность операторов, заканчивающаяся оператором RETURN. Выполняется, когда достигнут GOSUB. GOSUB aa
END aa: операторы RETURN Оператор RETURN осуществляет возврат к оператору, непосредственно следующему за GOSUB. Функция может быть определена одной строкой (оператор-функция) или несколькими строками (подпрограмма-функция) . DEF FN 1им [(список параметров0) ] = выражение (это определение оператора-функции) . Здесь список параметров может включать 0не более 16 параметров. DEF FN 1им [(список параметров0) ] описание переменных операторы [EXIT
DEF] [FN 1им = выражение0] END DEF (это определение подпрограммы-функции) . Обращение к функции записывается там, где нужно получить ее значение. При этом параметры заменяются их фактическими значениями. Например, DEF FNF (x, y) = x * x + y * y - 13 a = 3: b = 4 P = FNF (a, b) или P = FNF (3,4) Функция возвращает одно значение, тип которого определяется именем
функции. Определение функции может располагаться в любом месте программы (обычно в начале или в конце) . Например, F = FNa (1.5) PRINT F DEF FNa (x) FNa = x*x END DEF END или F = FNa (1.5) PRINT F END DEF FNa (x) FNa = x*x END DEF В результате будет напечатано 2.25. Список параметров оператора-функции может включать только имена переменных.
Процедура - это последовательность строк программы, расположенная между операторами SUB и END SUB и выполняемая при обращении к ней при помощи оператора CALL. SUB имя [(список параметров) ] описание переменных операторы [EXIT SUB] END SUB Имя может содержать до 31 символа. Список параметров (не более 16) может включать имена переменных и массивов. Для массивов в скобках указывается размерность.
Например, 1 - для одномерного массива, 2 - для двухмерного и т.д. В обращении к процедуре за именем фактического массива следуют пустые скобки. Например, SUB SUM (x (1) , n, S) S = 0 - 14 FOR I=1 to n S = S + x (I) NEXT I END SUB DIM A (3) A (1) = 1: A (2) = 2: A (3) = 4 CALL SUM (A () , 3, S) S = S/3 PRINT S END
Эта программа вычисляет среднее значение элементов массива A, процедура SUM суммирует элементы массива. Основные отличия процедуры от подпрограммы-функции: 1 - процедура не обязана возвращать значение, она не имеет типа; 2 - вызывается оператором CALL, а не из выражения. Отдельные переменные, используемые в процедуре (или подпрограмме-функции) , могут быть объявлены локальными,
т.е. действующими только в данной подпрограмме (оператор LOCAL) , общими, т.е. действующими как в подпрограмме, так и в основной программе (оператор SHARED) и статическими, т.е. действующими в данной подпрограмме как LOCAL, но сохраняющими полученные значения до следующего обращения (оператор STATIC) . По умолчанию в подпрограмме-функции переменная является
SHARED, а в процедуре STATIC. DEF FNF1 LOCAL i, S FOR i =1 to 10 S = S + i NEXT i FNF1 = S END DEF После выхода из подпрограммы-функции переменные i и S теряют свои значения (при входе в подпрограмму всегда S = 0) . Эти же имена могут использоваться в программе для обозначения других величин. DEF FNF2 LOCAL i SHARED S FOR i = 1 to 10 S = S + i
NEXT i - 15 FNF2 = S END DEF В этом случае S сохраняет значение после выхода из подпрограммы и имеет один и тот же смысл во всех частях программы. DEF FNF3 LOCAL i STATIC S FOR i = 1 to 10 S = S + i NEXT i FNF3 = S END DEF В этом случае S сохраняет значение после выхода из подпрограммы до следующего обращения к ней, т.е. после первого обращения значение функции
FNF3 будет 55, после второго - 110 и т.д. (S нельзя изменять в основной программе) . 2. ЦВЕТ И ГРАФИКА В графическом режиме экран рассматривается как решетка, точки в узлах которой могут быть включены (белым или другим возможным цветом) или выключены. Точка идентифицируется координатами x, y; x - номер позиции по горизонтали (от 0 до 319 или до 639 в зависимости от режима) , y - номер позиции по вертикали (от 0 до 199 или до 349 в зависимости от режима)
. Точка с координатами 0,0 находится в верхнем левом углу экрана. Графический режим устанавливается (или отменяется) оператором SCREEN. SCREEN i[, j] i = 0, j = 0 черно-белый текстовый режим i = 0, j = 1 цветной текстовый режим i = 1, j = 0 цветная графика при средней разрешающей способности (320 позиций по горизонтали, 200 по вертикали) i = 1, j = 1 черно-белая графика при средней разрешающей способности i = 2 черно-
белая графика при высокой разрешающей способности (640 позиций по горизонтали, 350 по верти кали) После выполнения оператора SCREEN точка устанавливается в середину экрана. Оператор COLOR устанавливает цвет фона экрана и палитру (из трех цветов) для окрашивания точек (для текстового режима - еще и цвет рамки) . Существует две палитры цветов: 0 и 1, следующего состава: Палитра 0я. Палитра 1 1 - зеленый 1 - голубой 2 - красный 2 - сиреневый 3
- желтый 3 - белый Для фона можно выбрать один из 16 цветов (0 - черный, 1 - синий, 2 - зеленый, 3 - бирюзовый, 4 - красный, 5 - лиловый, 6 коричневый, 7 - белый, 8 - серый, 9 - голубой, 10 - ярко-зеленый, 11 ярко-бирюзовый, 12 - ярко-красный, 13 - ярко-лиловый, 14 - желтый, 15 - ярко-белый) Оператор
COLOR имеет вид COLOR i, j[, k] - 17 где i - цвет фона, j - номер палитры, k - цвет рамки. Например, операторы SCREEN 1,0 COLOR 9,0 устанавливают цветной графический режим при средней разрешающей способности; цвет фона - голубой; последующие операторы должны использовать цвета из 0-й палитры. В графическом режиме (для получения на экране неподвижных изображений) могут использоваться следующие операторы: PSET(PRESET) - включает (или выключает) точку;
LINE- чертит линию; CIRCLE- чертит окружность или ее часть; PAINT- закрашивает указанную часть экрана. Более сложные операторы для получения движущихся изображений (DRAW, GET, PUT) рассматриваются в п. 4. Оператор PSET (x, y) включает точку с координатами x, y. Оператор PSET STEP (x, y) включает точку, отстоящую на x позиций по горизонтали и на y позиций по вертикали от текущей точки. Например, если в предыдущем положении точка имеет координаты (60,75) , то оператор
PSET (10,20) определяет точку с координатами (10,20) , а оператор PSET STEP (10,20) определяет точку с координатами (70,95) . Операторы PSET (x, y) , 0 или PRESET(x, y) стирают точку (x, y) с экрана. Оператор LINE позволяет начертить отрезок прямой, указав его начало (x1, y1) , конец (x2, y2) и цвет k LINE[(x1, y1) ]-(x2, y2) , k Если начальная точка отсутствует, то линия будет прочерчена, начиная
с точки, в которой остановился предыдущий оператор. С помощью оператора LINE можно также чертить и закрашивать прямоугольники LINE (x1, y1) (x2, y2) , [k], B[F] Точки (x1, y1) и (x2, y2) трактуются при этом как левая нижняя и - 18 правая верхняя вершины прямоугольника. Если цвет k отсутствует, то прямоугольник будет начерчен 3-м цветом палитры. При наличии параметра F площадь внутри прямоугольника будет закрашена.
Например, оператор LINE (80,175) - (100,25) , 2, BF закрашивает красным цветом прямоугольник, расположенный между 80-ой и 100-ой позициями по горизонтали и 175-ой и 25-ой позициями по вертикали. Оператор CIRCLE позволяет строить окружности, дуги, секторы и эллипсы. Оператор CIRCLE(x, y) , r, k чертит окружность радиуса r с центром в точке (x, y) цветом k. После вычерчивания окружности последней использованной точкой считается ее центр.
Оператор CIRCLE (x, y) , r, k, ALPHA1, ALPHA2 вычерчивает дугу, имеющую начало под углом ALPHA1 и конец под углом ALPHA2. Например, оператор (при PI = 3.1416) CIRCLE (160,100) , 80,2, PI/2, PI строит дугу от PI/2 до PI окружности радиуса 80 с центром в точке (160,100) вторым цветом палитры. Если использовать знак " - " перед начальной и конечной точками дуги, то будет нарисован
сектор, т.е. конечные точки дуги будут соединены с центром. Например, CIRCLE (160,100) , 80,2, PI/2 PI Можно изобразить сплюснутую (или наоборот вытянутую) окружность, добавив в оператор CIRCLE еще один параметр. Если значение этого параметра меньше 1, то окружность будет сплюснута по вертикали, если больше 1, то - по горизонтали. Например, CIRCLE (160,100) , 80,2 3/4 Все параметры оператора
CIRCLE задаются в определенном порядке и разделяются запятыми. Обязательными являются только параметры, указывающие положение центра и радиус окружности. Остальные параметры необязательны, однако, запятые должны быть оставлены, если пропущены параметры в середине списка. Оператор PAINT позволяет закрашивать большие области экрана. Для закрашивания необходимо указать произвольную точку внутри закрашиваемой области (x, y) , цвет,
которым нужно закрасить область (k1) и цвет границы, которую нельзя пересекать при закрашивании (k2) , k1 и k2 могут совпадать. Оператор PAINT имеет вид - 19 PAINT (x, y) , k1, k2 Например, оператор PAINT (160,100) , 2,2 закрасит окружность нарисованную последним оператором CIRCLE, красным цветом, как и цвет окружности, использованный в операторе
CIRCLE. 3. ФАЙЛЫ. РАБОТА В БЕЙСИКЕ С ФАЙЛАМИ ПОСЛЕДОВАТЕЛЬНОГО И ПРЯМОГО ДОСТУПА Если необходимо использовать набор данных или программу многократно, то необходимо сохранить их на внешнем устройстве памяти (например, диске или дискете) . Для этого создается файл. Файл должен иметь имя. Имя состоит из двух частей: собственно имя и расширение имя. расширение Имя может содержать до 8 символов, расширение - до трех.
Могут использоваться следующие символы A - z 0 - 9 () { } @ # $ % ^ & / ' ~ Полное имя файла в MS DOS содержит весь путь по дереву от корневой директории к нужному файлу. Например, C: STLABwork. bas, где C - имя диска, ST - имя директории на диске, LAB - имя поддиректории директории ST, work. bas - имя программы на Бейсике. Далее речь пойдет только о файлах данных. 3.1.
Файлы последовательного доступа Последовательный файл состоит из записей, доступ к которым осуществляется последовательно, т.е. n-я запись следует за (n 1) -ой как при формировании файла, так и при считывании из него. Создание последовательного файла включает следующие шаги: открытие файла (оператор OPEN) , вывод данных в файл (операторы PRINT#, WRITE#, или PRINT# USING) и закрытие файла (оператор CLOSE) . Считывание из последовательного файла включает следующие
шаги: открытие файла, ввод данных из файла (операторы INPUT#, INPUT$, LINE INPUT#) , закрытие файла. Оператор OPEN подготавливает файл для чтения из файла (INPUT) или записи в файл (OUTPUT, если создается новый файл, APPEND, если добавляются записи в уже существующий файл) . INPUT OPEN имя файла FOR OUTPUT AS #номер файла APPEND
Оператор CLOSE я. закрывает файл, т.е. делает невозможным чтение или запись. CLOSE [#номер файла] Оператор CLOSE без параметров закрывает все открытые файлы. Единицей информации, которая передается при записи в файл или чтении из файла, является запись (логическая запись) я2. Запись делится на поля. Каждое поле связано с одним элементом данных. Могут быть созданы два типа последовательных файлов:
1) с разделителями полей, когда каждое поле автоматически отделяется специальным символом (например, запятой) . Для создания такого файла используется оператор WRITE#, для чтения из него оператор INPUT#. Данные в файле хранятся в таком виде, как если бы они набирались на клавиатуре при выполнении оператора INPUT, т.е. разделены запятыми и каждая запись заканчивается переводом строки. Оператор INPUT# имеет вид INPUT #номер файла, список переменных, где переменные в
списке по типу должны соответствовать данным в файле. 2) поля не разделены, и каждая запись точно такая же, как если бы эти данные отображались на экране или печатались на принтере. Для создания такого файла используется оператор PRINT#, для чтения из него - операторы INPUT$ или LINE INPUT#. Оператор INPUT$я. передает из файла сразу всю строку (запись) указанной длины n в символьную
переменную, например, ST$ ST$я2 = INPUT$ (n, #номер файла) Оператор LINE INPUT# передает в указанную переменную ST$ всю строку независимо от ее длины LINE INPUT #номер файла, ST$ Пример (с разделителями полей) : OPEN "SEQU. DAT" FOR OUTPUT AS #1 ST$ = " ИВАНОВ "
INT% = 1972 FLOT! = 75.3 'теперь записываем строку в файл WRITE #1, ST$, INT%, FLOT! ST$ = " ПЕТРОВ " INT% = 1975 FLOT! = 62.5 'записываем другую строку в файл WRITE #1, INT%, ST$, FLOT! CLOSE #1 END Созданный файл будет следующим " ИВАНОВ ", 1972,75.3 1975, " ПЕТРОВ ",
62.5 Следующая программа читает из этого файла: OPEN "SEQU. DAT" FOR INPUT AS #1 ST$ = " " INT% = 0 FLOT! = 0 'теперь читаем строку текста из файла INPUT #1, ST$, INT%, FLOT! PRINT ST$, INT%, FLOT! ST$ = " " INT% = 0 FLOT! = 0 'читаем другую строку INPUT #1,
INT%, ST$, FLOT! PRINT INT%, ST$, FLOT! CLOSE #1 END Пример (без разделителей полей) : OPEN "SEQUEN. DAT" FOR OUTPUT AS #1 ST$ = " ИВАНОВ " INT% = 1972 FlOT! = 73.1 'записываем строку текста в файл PRINT #1, ST$, INT%, FLOT! ST$ = " ПЕТРОВ "
INT% = 1975 FLOT! = 64.3 'запишем другую строку, используя оператор PRINT #1, USING "+####$#. ##^^^^"; INT%, ST$, FLOT! CLOSE #1 END Содержание созданного файла будет таким: ИВАНОВ 1972 73.1 1975 ПЕТРОВ 6.43Е+01 - 23 Следующая программа читает из этого файла: OPEN "SEQUEN. DAT" FOR INPUT AS #1 ST$ = " "
ST$ = INPUT$ (80, #1) PRINT ST$ LINE INPUT #1, ST$ PRINT ST$ CLOSE #1 END 3.2. Файлы прямого доступа Файл прямого доступа состоит из записей, доступ к которым возможен в произвольном порядке по номеру записи. Создание файла прямого доступа включает следующие шаги: открытие файла (оператор OPEN) ; задание структуры записи файла, или разметка буфера (оператор
FIELD) ; передача записи в буфер (операторы LSET или RSET) ; пересылка содержимого буфера в файл (оператор PUT) , при этом если номер записи в операторе PUT не указан явно, буфер помещается на место текущей записи, при открытии файла указатель текущей записи равен 1, после каждой операции ввода или вывода указатель сдвигается на следующую запись; закрытие файла (оператор
CLOSE) . Записи передаются в виде строк символов. Поэтому необходимо использовать соответствующие функции преобразования данных в строку символов и обратно. Ниже перечислены функции и осуществляемые ими преобразования. MKI$ (MKL$) - целое (длинное целое) в 2-х (4-х) байтовую строку; MKS$ (MKD$) - вещественное (вещественное двойной точности) в 4-х (8-ми) байтовую строку.
CVI(CVL) - 2-х (4-х) байтовую строку в целое (длинное целое) ; CVS(CVD) - 4-x (8-ми) байтовую строку в вещественное (вещественное двойной точности) . Считывание из файла прямого доступа включает также пять шагов: открытие файла; разметка буфера; передача записи из файла в буфер (оператор GET) ; обработка данных буфера (переменные буфера доступны из программы) ; закрытие файла. Если вывод в файл и ввод из файла осуществляются в одной программе, то открытие и
закрытие файла осуществляется один раз перед началом и после окончания всех операций с файлом. Оператор OPEN имеет вид OPEN имя файла AS #номер файла LEN= длина записи (отсутствие указания режима ввода или вывода означает, что файл прямого доступа) . Оператор FIELD имеет вид FIELD #номер файла, n1ASим [я2, n2ASимя2 ], где n1, n2 - длина поля в байтах под переменные им, имя2 (им, имя2, символьные переменные) .
Операторы LSET, RSET имеют вид LSET имя=символьное выражение RSET имя=символьное выражение Оператор LSET (RSET) заполняет одно поле записи в буфере (оператор LSET - с начала, RSET - с конца, оставшиеся позиции заполняются пробелами) . Оператор PUT имеет вид PUT#номер файла[я2, номер записи] Этот оператор передает содержимое буфера в файл на место записи с указанным номером (или текущей, если
номер не указан) .
! |
Как писать рефераты Практические рекомендации по написанию студенческих рефератов. |
! | План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом. |
! | Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач. |
! | Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты. |
! | Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ. |
→ | Виды рефератов Какими бывают рефераты по своему назначению и структуре. |