скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыРеферат: Все о Turbo Basic

После выполнения подпрограммы возврат осуществляется к опе­ратору, следующему за ON/GOSUB.

1.8. Подпрограммы, функции и процедуры

Подпрограмма - помеченная последовательность операторов, за­канчивающаяся оператором RETURN. Выполняется, когда достигнут GOSUB.

....

GOSUB aa

....

END aa: операторы RETURN

Оператор RETURN осуществляет возврат к оператору, непосредственно следующему за GOSUB.

Функция может быть определена одной строкой (оператор-функ­ция) или несколькими строками (подпрограмма-функция).

DEF FN имя [(список параметров)] = выражение

(это определение оператора-функции).

Здесь список параметров может включать не более 16 параметров. DEF FN имя [(список параметров)]

описание переменных

операторы

[EXIT DEF]

....

[FN имя = выражение]

END DEF

(это определение подпрограммы-функции).

Обращение к функции записывается там, где нужно получить ее зна­чение. При этом параметры заменяются их фактическими значениями. Например,

DEF FNF (x,y) = x * x + y * y 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

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

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]

где 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) трактуются при этом как левая нижняя и правая верхняя вершины прямоугольника. Если цвет 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 имеет вид

PAINT (x, y), k1, k2

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

PAINT (160, 100), 2, 2

закрасит окружность  нарисованную  последним  оператором  CIRCLE,

красным цветом, как и цвет окружности, использованный в операторе

CIRCLE.

3. ФАЙЛЫ. РАБОТА В БЕЙСИКЕ С ФАЙЛАМИ ПОСЛЕДОВАТЕЛЬНОГО

И ПРЯМОГО ДОСТУПА

Если необходимо использовать набор данных или программу мно­гократно, то необходимо сохранить их на внешнем устройстве памяти (например, диске или дискете). Для этого создается файл. Файл должен иметь имя. Имя состоит из двух частей: собственно имя и расширение

имя.расширение

Имя может содержать до 8 символов,  расширение - до  трех.

Могут использоваться  следующие символы

A - z 0 - 9 ( )   @ # $ % ^ & ! - _ / ' ~

Полное имя файла в MS DOS содержит весь путь по дереву от корневой директории к нужному файлу. Например,

C:\ST\LAB\work.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 без параметров закрывает все открытые файлы. Единицей информации, которая передается при записи в файл

или чтении из файлаявляется запись (логическая запись). Запись

делится на поля. Каждое поле связано с одним элементом данных. Могут быть созданы два типа последовательных файлов:

1) с разделителями полей, когда каждое поле автоматически отделяется специальным символом (например, запятой). Для создания такого файла используется оператор WRITE#, для чтения из него - оператор INPUT#.

Данные в файле хранятся в таком виде, как если бы они наби­рались на клавиатуре при выполнении оператора INPUT, т.е. разде­лены запятыми и каждая запись заканчивается переводом строки. Оператор INPUT# имеет вид

INPUT #номер файла, список переменных

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

файле.

2) поля  не разделеныи                       каждая запись точно такая же,  как

если бы эти данные отображались на экране или печатались на прин­тере. Для создания такого файла используется оператор PRINT#, для чтения из него - операторы INPUT$ или LINE INPUT#. Оператор INPUT$ передает из файла сразу всю строку (запись) указанной дли­ны n в символьную переменную, например, ST$

ST$ = 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

Следующая программа  читает  из этого файла:

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-х) байтовую строку;

Страницы: 1, 2, 3


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.