Xreferat.com » Рефераты по информатике » Описание языка Turbo Basic для студентов всех специальностей

Описание языка Turbo Basic для студентов всех специальностей

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 2  0или RSET); пересылка содержимого буфера в файл

(оператор PUT), при этом если номер записи в операторе PUT 2  0не

указан явно, буфер помещается на место текущей записи, при откры-

тии файла указатель текущей записи равен 1, после каждой операции

ввода или вывода указатель сдвигается на следующую запись; закры-

тие файла (оператор CLOSE).

Записи передаются в виде строк символов. Поэтому необходимо

использовать соответствующие функции преобразования данных в

строку символов и обратно.

Ниже перечислены функции и осуществляемые ими преобразова-

ния.

MKI$ (MKL$) - целое (длинное целое) в 2-х (4-х) байтовую

строку;

MKS$ (MKD$) - вещественное (вещественное двойной точности) в

4-х (8-ми) байтовую строку.

CVI(CVL) - 2-х (4-х) байтовую строку в целое (длинное це-

лое);

CVS(CVD) - 4-x (8-ми) байтовую строку в вещественное (ве-

щественное двойной точности).

Считывание из файла прямого доступа включает также пять ша-

гов: открытие файла; разметка буфера; передача записи из файла в

буфер (оператор GET); обработка данных буфера (переменные буфера


- 24 -

доступны из программы); закрытие файла.

Если вывод в файл и ввод из файла осуществляются в одной

программе, то открытие и закрытие файла осуществляется один раз

перед началом и после окончания всех операций с файлом.

 _Оператор OPEN . 2  0имеет вид

OPEN 2  1имя файла 2  0AS # 1номер файла 2  0LEN 2  0=  1длина записи

(отсутствие указания режима ввода или вывода означает, что файл

прямого доступа).

 _Оператор FIELD . 2  0имеет вид

FIELD # 2  1номер файла 0, 2  0n1 2  0AS 2  1имя1 0 [ 2, 0n2 2  0AS 2  1имя2 0, 2  0...] 2  0,

где n1, n2, ... - длина поля в байтах под переменные  1имя1 0,  1имя2 0,

... ( 1имя1 0,  1имя2 0, - символьные переменные ).

 _Операторы .  _LSET, RSET . 2  0имеют вид

LSET 2  1имя 2  0= 2  1символьное выражение

RSET 2  1имя 2  0= 2  1символьное выражение

Оператор LSET (RSET) заполняет одно поле записи в буфере

(оператор LSET - с начала, RSET - с конца, оставшиеся позиции за-

полняются пробелами).

 _Оператор PUT . имеет вид

PUT 2  0# 2  1номер файла 2  0[ 2,  1номер записи 0]

Этот оператор передает содержимое буфера в файл на место за-

писи с указанным номером (или текущей, если номер не указан).

 _Оператор GET . 2  0имеет вид

GET 2  0# 2  1номер файла 2  0[, 2  1номер записи 2и 0]

Этот оператор передает содержимое записи с указанным но-

мером в буфер (если номера нет, передается текущая запись).

В качестве примера приводится программа, которая формирует

файл прямого доступа из записей следующей структуры:

N п/п Фамилия Год рождения

В программе переменные обозначены n%, nam$, dat%; для соответс-

твующих полей буфера используются обозначения np$ (2 байта), nm$

(10 байт), dt$ (6 байт).

OPEN "GSR.DAT" AS #1 LEN = 18

FIELD #1, 2 AS np$, 10 AS nm$, 6 AS dt$

FOR i%=1 to 3

INPUT n%, nam$, dat%

LSET np$ = MKI$ (n%)

LSET nm$ = nam$

LSET dt$ = MKI$ (dat%)


- 25 -

PUT #1,i%

NEXT i%

CLOSE #1

END

Следующая программа осуществляет ввод данных из файла GSR.DAT и

их печать в обратном порядке.

OPEN "GSR.DAT" AS #1 LEN = 18

FIELD #1, 2 AS np$, 10 AS nm$, 6 AS dt$

FOR i% = 3 to 1 STEP -1

GET #1, i%

n% = CVI (np$)

dat%=CVI (dt$)

PRINT n%, nm$, dat%

NEXT i%

CLOSE #1

END


- 26 -


4. ДВИЖУЩИЕСЯ ИЗОБРАЖЕНИЯ, ЗВУКОВЫЕ ЭФФЕКТЫ

И НЕСТАНДАРТНЫЙ ВВОД С КЛАВИАТУРЫ


4.1. Оператор DRAW


При помощи оператора DRAW можно чертить (рисовать) на экране

различные фигуры (предметы), используя параметры Un, Dn, Ln, Rn

для перемещения на n позиций от текущей точки вверх (U), вниз

(D), влево (L) или вправо (R); En, Fn, Gn, Hn для перемещения по

диагонали на n точек вверх и вправо (E), вниз и вправо (F), вниз

и влево (G), вверх и влево (H); M h,V для перемещения в точку с

координатами h и V; M  7+ 0h, 7+ 0V для относительного перемещения на h

позиций вправо (+) или влево (-) и на V позиций вниз (+) или

вверх (-). Кроме того, параметр An устанавливает угол n, где n=0

(0 градусов), 1 (90 градусов), 2 (180 градусов) или 3 (270 граду-

сов); TAn - поворачивает на угол n, где n меняется от -360 до 360

градусов. При n>0 поворот осуществляется против часовой стрелки,

при n<0 - по часовой стрелке; Cn - устанавливает цвет n из теку-

щей палитры; Sn - определяет масштаб n/4, n может меняться от 1

до 255 (по умолчанию n=4); B - подавляет высвечивание точек по

пути перемещения в соответствии с командой С (по умолчанию путь

перемещения высвечивается в виде линий, С содержит какие-либо из

перечисленных параметров); N означает возврат в исходную позицию

после выполнения команды перемещения С.

Последовательность параметров, определяющая режим и порядок

перемещений, заключается в кавычки и указывается в операторе DRAW.

Например, оператор

DRAW "M 160, 100"

осуществляет перемещение от текущей позиции в позицию (160, 100),

оставляя при этом след в виде закрашенных точек. Оператор

DRAW "BM160, 100"

осуществляет то же перемещение, но не оставляя следа. Оператор

DRAW "L10 U10 R10 D10"

прочерчивает линию на 10 позиций влево, на 10 позиций вверх, на

10 позиций вправо и на 10 позиций вниз, т.е. образует квадрат.

Пробелы, разделяющие параметры, необязательны и используются для

наглядности. Оператор

DRAW "BM 180, 20 NU10 ND10 NL10 NR 10"


- 27 -

осуществляет перемещение без обозначения пути в точку (180, 20),

а затем чертит крест (знак +).

В операторе DRAW можно использовать не только символьные

константы (см.выше), но и символьные переменные, в которых зара-

нее заготавливаются отдельные фрагменты рисунка (или весь рису-

нок), что позволяет воспроизводить их многократно различными опе-

раторами DRAW. Например,

SQAR$ = "L10U10R10D10"

DRAW SQAR$

Аргументы перемещения n, k, V могут быть заданы константами, как

в приведенных выше примерах операторов DRAW, или переменными. В

последнем случае нужно использовать функцию VARPTR$. Например,

операторы

DRAW " E15 "

и

a = 15

DRAW " E = " + VARPTR$ (a)

выполняют одно и то же действие. Это же относится и к операторам

I% = 1

DRAW " M = " + VARPTR$ (I%) + " , 40"

и

DRAW " M = 1, 40"

Но в первом случае (при использовании переменной I%) оператор

DRAW может выполняться при различных ее значениях, например, в

цикле.

Замечание. Выполнение оператора DRAW возможно только в гра-

фическом режиме (переход при помощи оператора SCREEN).


4.2. Операторы GET и PUT


Операторы GET и PUT позволяют создавать движущиеся изображе-

ния.

При выполнении оператора GET текущее состояние части экрана

запоминается. При выполнении оператора PUT изображение, сохранен-

ное оператором GET, воспроизводится в другом указанном месте эк-

рана, т.е. изображение как бы движется.

Оператор GET запоминает изображение заданной области экрана в

массиве, который должен быть заранее описан. Оператор GET имеет

вид


- 28 -

GET (x1, y1) - (x2, y2), B

(x1, y1), (x2, y2) определяют верхнюю левую и нижнюю правую гра-

ницы запоминаемой области, B - имя числового массива, в котором

сохраняется копия этой части экрана.

Существует формула, определяющая требуемую длину массива (в

байтах), исходя из размера запоминаемой области и режима работы

экрана. Так при средней разрешающей способности для сохранения n1

точек по горизонтали и n2 точек по вертикали необходимый размер

массива N вычисляется по формуле

N = 4 + INT((n1*2+7)/8) * n2

при высокой разрешающей способности

N = 4 + INT((n1 + 7)/8) * n2

При использовании массива целого типа (один элемент равен

двум байтам) необходимо предусмотреть размер INT((N + 1)/2).

Оператор PUT помещает копию части экрана, сохраненную опера-

тором GET в любую часть экрана, левый верхний угол которой задан

точкой (x, y). Этот оператор имеет вид

PUT (x, y), B


4.3. Оператор BEEP


Этот оператор вызывает звуковой сигнал определенной частоты

и длительности 0,25 секунды. Используется, когда нужно привлечь

внимание при выполнении какой-либо части программы.


4.4. Оператор SOUND


Этот оператор вызывает звуковой сигнал частоты x (от 37 до

32767 Гц) и длительности в "тиках" (1/18 секунды) y

SOUND x, y

Оператор SOUND с нулевой длительностью прерывает работу пре-

дыдущего оператора SOUND, даже если тот не отзвучал до конца. Ис-

пользуется для специальных звуковых эффектов (сирена и пр.).


4.5. Оператор PLAY


Этот оператор позволяет создавать музыку. Общий вид операто-

ра

PLAY  1символьное выражение


- 29 -

где символьное выражение 1  0задает порядок звучания нот, их длитель-

ность, номер октавы и т.д., используя следующие параметры: буквы

C, D, E, F, G, A, B (ноты от "до" до "си"), A 1# 0, или A+, обознача-

ет A диез, A- обозначает A бемоль, аналогично - для остальных

нот; On означает играть в октаве n (n изменяется от 0 до 6, окта-

ва начинается с ноты "до" (буква C), по умолчанию n = 4). Напри-

мер,

PLAY " O3 FGA O4 ABC "

В этом примере в 3-ей октаве звучат ноты F, G, A, в четвертой ок-

таве ноты A, B, C. Если перед нотой используется знак > или < ,

например, > A, < C то это означает, что номер текущей октавы уве-

личивается или уменьшается на 1.

Можно вместо номера октавы и символа ноты задать ее порядко-

вый номер (от 1 до 84), указав перед ним букву N. Например,

PLAY " O4G "

аналогично оператору

PLAY " N44 "

Длительность ноты устанавливается параметром Ln, где n может

принимать значения от 1 до 64 и обозначает долю полной ноты, т.е.

L1 обозначает полную ноту, L2 обозначает половинную, L4 - чет-

вертную ноту и т.д.

Пауза задается параметром Pn (n - длина паузы, измеряется в

длительностях, установленных параметром L).

Темп задается параметром Tn, где n - число четвертных нот в

минуту, может принимать значения от 32 до 255 (по умолчанию n =

120). Параметры MS, MN или ML определяют долю времени звучания

каждой ноты от длительности, определенной параметром L:

MS - в 3/4 этой длительности (стаккато),

MN - в 7/8 (обычное, нормальное звучание),

ML - полное время (легато).

Режим звучания может быть  _основным ., когда следующий оператор

программы не будет выполняться, пока оператор PLAY не завершен

(параметр MF), или  _фоновым ., когда выполнение оператора PLAY не

препятствует выполнению остальных операторов программы (параметр

MB). Например,

PLAY "L8 MF MS O3 GG L4 AG O4 C O3 L2 B"

Отдельные музыкальные отрезки можно описать предварительно в

виде символьных строк и использовать их затем в операторе PLAY.

Например,


- 30 -

A$="EDE" : B$ = "CDE" : PLAY A$ + B$


4.6. Функция INKEY$


Функция INKEY$ действует аналогично оператору INPUT, однако

при вводе на экране не высвечивается вводимый символ и не требу-

ется нажатие клавиши "Ввод". Программа при этом не прерывает ра-

боту, как при выполнении оператора INPUT. При выполнении операто-

ра

X$ = INKEY$

символ, соответствующий нажатой клавише, присваивается перемен-

ной X$.

Рассмотрим в качестве примера программу:

PRINT "Задайте направление: 1-север, 2-юг,_

3-запад, 4-восток"

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту
Нужна помощь в написании работы?
Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Пишем статьи РИНЦ, ВАК, Scopus. Помогаем в публикации. Правки вносим бесплатно.

Похожие рефераты: