Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Языки Бейсик

.pdf
Скачиваний:
0
Добавлен:
11.08.2026
Размер:
622 Кб
Скачать

Глава XII. Бейсик-HELP

201

Записывает данные на экран или в последовательный файл.

Формат записи:

WRITE [[#]номер_файла%,] выражение

ãäå

 

номер_файла%

номер открытого последовательного файла. Если номер фай-

 

ла опущен, WRITE выводит данные на экран.

Выражение

одна или несколько переменных или выражений, разделен-

 

ных запятыми, значения которых записываются на экран или

 

â ôàéë.

WRITE вставляет запятые между объектами и заключает в кавычки строки в той последовательности, в которой они написаны. WRITE записывает значе- ния в файл в той форме, которая может быть считана оператором INPUT.

Пример:

CLS

OPEN “LIST” FOR OUTPUT AS #1 DO

INPUT “ ÈÌß : “, Name$

INPUT “ ВОЗРАСТ: “, Age$ WRITE #1, Name$, Age$ INPUT “Добавить еще”; R$

LOOP WHILE UCASE$(R$) = “Ä” CLOSE #1

'Печать файла на экране. OPEN “LIST” FOR INPUT AS #1

CLS

PRINT “Записи в файле:”: PRINT DO WHILE NOT EOF(1)

INPUT #1, Rec1$, Rec2$ 'Считывает записи из файла PRINT Rec1$, Rec2$ 'Печатает записи на экране LOOP

CLOSE #1

KILL “LIST”

См. также INPUT, LINE INPUT, OPEN, PRINT, LPRINT

XOR XNACK-булева операция

Знаки булевых операций выполняют манипуляции битами, булевы операции или проверку многократных отношений. Они возвращают значение “истина” (не-ноль) или “ложь” (ноль), которое используется при принятии решения.

результат = выражение1 булева_операция выражение2

ãäå

булева_операция любая из следующих булевых операций: NOT Отрицание

AND Конъюнкция

202

Языки Бейсик

OR Дизъюнкция (включающее “или”)

XOR Исключающее “или”

EQV Эквивалентность

IMP Импликация

Каждая операция возвращает результат, как это приведено в следующей таблице истинности.

И — “истина” (не-ноль); Л — ложь (ноль).

Выраже-

Выраже-

NOT

AND

OR

XOR

EQV

IMP

íèå1

íèå2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

È

È

Ë

È

È

Ë

È

È

 

 

 

 

 

 

 

 

È

Ë

Ë

Ë

È

È

Ë

Ë

 

 

 

 

 

 

 

 

Ë

È

È

Ë

È

È

Ë

È

 

 

 

 

 

 

 

 

Ë

Ë

È

Ë

Ë

Ë

È

È

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Булевы операции выполняются после арифметических и операций отношений, в восходящем порядке.

Перед выполнением булевых операций выражения переводятся в целые или длинные целые.

Если выражение равно 0 или — 1, то в результате булева операция возвращает 0 или — 1. Поскольку булевы операции выполняют поразрядные вычисления, использование значений, отличных от 0 для “ложь” и — 1 для “истина”, может привести к неожиданным результатам.

Глава XIII. Примеры программ

203

Глава XIII. Примеры программ

13.1. Программа сортировки чисел

'Сортировка чисел программист В.Алиев

CLS

'Очистим экран

DIM a(100)

'Определяем массив как variant

DIM b$

'Определяем переменную для ввода

 

'с клавиатуры чисел

 

'как символьную

k% = 1

'Вводим целочисленную переменую

 

'для индекса

g0: INPUT “Введите очередное число или +++ “; b$ 'Вводим с

 

 

'клавиатуры число

IF b$ =

“+++” THEN GOTO g1 'Проверка на конец ввода

a(k%) =

VAL(b$)

'Если не конец ввода,

 

 

'то преобразуем в число и

 

 

'и пересылаем в массив

k% = k%

+ 1

'Переходим на следующий элемент

 

 

'массива

GOTO g0

 

'Идем на ввод очередного числа

g1: kolchs% = k% — 1

'Запоминаем количество введенных

 

 

'чисел

PRINT “введено “; kolchs%; “ чисел” 'Выводим на экран

'количество введенных чисел 'Приступаем к сортировке чисел в массиве

FOR i = 1 TO kolchs% — 1 'Устанавливаем цикл на число

'введенных чисел

IF a(i) <= a(i + 1) THEN GOTO g2 'Сравниваем два рядом стоящих

 

'элемента массива

SWAP a(i), a(i + 1)

'Если последовательность

 

'нарушена, то меняем их местами

IF i > 1 THEN i = i — 2

'Проверяем, не первый ли

 

'это элемент массива?

 

'Если не первый, то делаем шаг

 

'назад,

 

'чтобы сравнить с предыдущим.

g2: NEXT i

'Проверяем, закончился ли

 

'массив введенных чисел?

'печать отсортированных чисел

 

FOR i = 1 TO kolchs%

 

PRINT a(i)

 

NEXT

 

END

 

13.2. Программа сортировки символьных констант

'Сортировка

Символьных констант программист В.Алиев

CLS

 

'Очистим экран

DIM

a$(100)

'Определяем массив как символьный

204 Языки Бейсик

DIM b$ 'Определяем переменную для ввода 'с клавиатуры символов 'как символьную

k% = 1 'Вводим целочисленную переменную 'для индекса

g0: INPUT “Введите очередную константу или +++ “; b$ 'Вводим с

 

'клавиатуры символьную константу

IF b$ = “+++” THEN GOTO g1

'Проверка на конец ввода

a$(k%) = b$

'Если не конец ввода,

 

'то пересылаем в массив

k% = k% + 1

'Переходим на следующий элемент

 

'массива

GOTO g0

'Идем на ввод очередной константы

g1: kolchs% = k% — 1

'Запоминаем количество введенных

 

'констант

PRINT “введено “; kolchs%;

“ констант” 'Выводим на экран

 

'количество введенных констант

'Приступаем к сортировке констант в массиве

FOR i = 1 TO kolchs% — 1

'Устанавливаем цикл на число

 

'введенных констант

IF a$(i) <= a$(i + 1) THEN

GOTO g2 'Сравниваем два рядом

 

'стоящих элемента массива

SWAP a$(i), a$(i + 1)

'Если последовательность нарушена,

 

'то меняем их местами

IF i > 1 THEN i = i — 2

'Проверяем, не первый ли

 

'это элемент массива?

 

'Если не первый, то делаем шаг назад,

 

'чтобы сравнить с предыдущим

g2: NEXT i

'Проверяем, закончился ли

 

'массив введенных констант?

 

'Печать отсортированных констант

FOR i = 1 TO kolchs%

 

PRINT a$(i)

 

NEXT

 

END

 

13.3. Программа построения графиков

'ПОСТРОЕНИЕ графиков

 

CLS

 

SCREEN 12

'установка режима экрана

 

'построение осей координат

LINE (320, 0)-(320, 480)

'îñü Õ

LINE (0, 240)-(640, 240)

'îñü Ó

WINDOW (50, — 50)-(-50, 50) 'Установка масштаба экрана дисплея

FOR

x = — 10

TO

10 STEP .01 'устанавливаем интервал вычислений

y =

SQR(100 — x

^ 2)

'вычисляем функцию

PSET

(x, y),

4

 

'высвечиваем точку

NEXT

x

 

 

 

END

 

 

 

 

 

Глава XIII. Примеры программ

205

13.4. Программа построения окружностей

'Программа построения окружностей и их фрагментов CONST pi = 3.141593

SCREEN 2

CIRCLE (320, 100), 200, , — pi, — pi / 2 CIRCLE STEP(-100, — 42), 100

CIRCLE STEP(0, 0), 100, , , , 5 / 25

LOCATE 25, 1: PRINT “нажмите любую клавишу”

DO

LOOP WHILE INKEY$ = ““

13.5.Программа построения модели солнечной системы. Планеты земной группы

'Модель солнечной системы. Планеты земной группы С.Н. Гольцов DECLARE SUB Planety (x!, y!, rad!)

DECLARE SUB Orbita (x!, y!)

DECLARE SUB Sol (x!, y!, rad!)

DIM SHARED Mer(550), Ven(550), Zem(1550), Mar(1550), Jup(1550) 'kf — коэффициент масштаба (1.5 — для планет земной группы

'T — масштаб времени

CLS : kf = 1.5: x = 320 * kf: y = 240 * kf: rad = 10: d = 0: T =

1

SCREEN 12: WINDOW (0, 0)-(640 * kf, 480 * kf)

CALL Planety(x, y, rad): CALL Sol(x, y, rad)

COLOR 14: LOCATE 3, 1:

PRINT “Солнечная система”: PRINT “Планеты земной группы”

DO

x1 = x — rad * 4 — COS(d1) * .387 * 200 'Двигаем Меркурий y1 = y — rad * 4 + SIN(d1) * .387 * 200

PUT (x1, y1), Mer, PSET d1 = d1 + T / (.24 * 30)

IF d1 > 6.28 THEN Mergod = Mergod + 1

LOCATE 15, 33: PRINT Mergod

x2 = x — rad * 4 — COS(d2) * .723 * 200 'Двигаем Венеру y2 = y — rad * 4 + SIN(d2) * .723 * 200

PUT (x2, y2), Ven, PSET d2 = d2 + T / (.62 * 30)

IF d2 > 6.28 THEN Vengod = Vengod + 1 LOCATE 15, 28: PRINT Vengod

x3 = x — rad * 4 — COS(d3) * 1 * 200 'Двигаем Землю y3 = y — rad * 4 + SIN(d3) * 1 * 200

PUT (x3, y3), Zem, PSET d3 = d3 + T / (1 * 30)

IF d3 > 6.28 THEN Zemgod = Zemgod + 1 LOCATE 15, 23: PRINT Zemgod

x4 = x — rad * 4 — COS(d4) * 1.524 * 200 'Двигаем Марс y4 = y — rad * 4 + SIN(d4) * 1.524 * 200

206 Языки Бейсик

PUT (x4, y4), Mar, PSET d4 = d4 + T / (1.88 * 30)

IF d4 > 6.28 THEN Margod = Margod + 1 LOCATE 15, 14: PRINT Margod

CALL Orbita(x, y)

IF d1 >= 6.28 THEN d1 = 0

IF d2 >= 6.28 THEN d2 = 0

IF d3 >= 6.28 THEN d3 = 0

IF d4 >= 6.28 THEN d4 = 0

LOOP UNTIL INKEY$ = “ “

END

SUB Orbita (x, y)

CIRCLE (x, y), 75, 8 'Орбита Меркурия

CIRCLE (x, y), 140, 8'Орбита Венеpы

CIRCLE (x, y), 200, 8'Орбита Земли

CIRCLE (x, y), 1.524 * 200, 8'Орбита Маpса

END SUB

SUB Planety (x, y, rad) 'pисую и запоминаю планеты CLS

CIRCLE (x, y), rad * .382, 7 'Рисуем МЕРКУРИЙ PAINT (x, y), 7, 7

GET (x — rad * 4, y — rad * 4)-(x + rad * 4, y + rad * 4),

Mer(0) CLS

CIRCLE (x, y), rad * .95, 13 'Рисуем Венеру PAINT (x, y), 13, 13

GET (x — rad * 4, y — rad * 4)-(x + rad * 4, y + rad * 4), Ven(0)

CLS

CIRCLE (x, y), rad, 11 ' Рисуем Землю PAINT (x, y), 3, 11

GET (x — rad * 4, y — rad * 4)-(x + rad * 4, y + rad * 4),

Zem(0) CLS

CIRCLE (x, y), rad * .531, 12' Рисуем Марс PAINT (x, y), 12, 12

GET (x — rad * 4, y — rad * 4)-(x + rad * 4, y + rad * 4), Mar(0)

CLS

END SUB

SUB Sol (x, y, rad)

CIRCLE (x, y), rad + 6, 4 ' Рисуем СОЛНЦЕ

PAINT (x, y), 14, 4

CIRCLE (x, y), rad + 4, 4

CIRCLE (x, y), rad + 2, 4

END SUB

Глава XIII. Примеры программ

207

13.6. Программа построения модели солнечной системы. Внутренние планеты солнечной системы

'Внутренние планеты солнечной системы. Программист С.Н. Гольцов

DECLARE SUB Zem ()

DECLARE SUB osi (x!, y!) x = 100

y = x / 4 * 3 SCREEN 12

DIM Mer(150), Ven(150), Ter(150)

'рисую Землю и запоминаю ее в массив Ter Zem

GET (1, 1)-(36, 30), Ter CLS

'Рисую Меркурий и запоминаю его в массив Mer

CIRCLE (18, 15), 9 * .3, 7 PAINT (18, 15), 13, 7

GET (1, 1)-(36, 30), Mer CLS

'Рисую Венеру и запоминаю ее в массив Ven CIRCLE (18, 15), 9 * .9, 5

PAINT (18, 15), 5, 5

GET (1, 1)-(36, 30), Ven CLS

RANDOMIZE TIMER

WINDOW SCREEN (-x, y)-(x, — y) CALL osi(x, y)

COLOR 11: LOCATE 2, 20

PRINT “ВНУТРЕННИЕ ПЛАНЕТЫ СОЛНЕЧНОЙ СИСТЕМЫ И ЗЕМЛЯ” COLOR 14: LOCATE 15, 34: PRINT “СОЛНЦЕ”

COLOR 3: LOCATE 5, 3: PRINT “¥ Планета год (з.с.)” COLOR 7: LOCATE 6, 3: PRINT “1. Меркурий 88”

LOCATE 7, 3: PRINT “2. Венера 224.7”

LOCATE 8, 3: PRINT “3. Земля 365.257” FOR i = 1 TO 1000

zx = RND * 200 — 100: zy = RND * 200 — 100 PSET (zx, zy), RND * 15

NEXT i

'Это СОЛНЦЕ

CIRCLE (6, 5), 9 * .9, 12 CIRCLE (6, 5), 9, 12 CIRCLE (6, 5), 9 * 1.1, 12 PAINT (6, 5), 14, 12

DO

xMer = SIN(p * 6) * 80 * .3: yMer = COS(p * 6) * 60 * .3 xVen = SIN(p * 1.5) * 80 * .7: yVen = COS(p * 1.5) * 60 * .7 xTer = SIN(p) * 80: yTer = COS(p) * 60

PUT (xMer, yMer), Mer, XOR

PUT (xVen, yVen), Ven, XOR

PUT (xTer, yTer), Ter, XOR

208

Языки Бейсик

PUT (xMer, yMer), Mer, XOR

PUT (xVen, yVen), Ven, XOR

PUT (xTer, yTer), Ter, XOR

p = p + .005

IF p = 6.28 THEN p = 0 LOOP UNTIL INKEY$ = “ “

'данные для рисунка Земли DATA 0,0,0,0,1,1,1,1,1,0,0,0 DATA 0,0,0,1,1,1,1,1,1,1,0,0 DATA 0,0,0,9,9,0,0,0,0,9,9,9

DATA 0,0,0,9,9,9,9,9,9,9,9,0 DATA 0,0,0,9,9,9,9,9,9,9,9,0 DATA 0,0,0,9,0,9,9,9,9,9,0,0 DATA 0,9,9,0,0,0,9,9,9,9,0,0

DATA 0,9,9,9,9,9,9,0,0,9,9,0

DATA 0,0,9,9,9,9,0,0,0,0,9,0 DATA 0,0,9,9,9,0,0,0,9,0,0,0 DATA 0,0,9,9,9,0,0,0,9,9,9,0

DATA 0,0,0,9,0,0,0,0,0,9,9,0 DATA 0,0,1,1,1,1,1,1,1,1,1,0 DATA 0,0,0,1,1,1,1,1,1,1,0,0

SUB osi (x, y)

LINE (x, y)-(-x, — y), , B

END SUB

SUB Zem 'рисуем Землю

CIRCLE (17, 15), 9, 11

PAINT (18, 15), 9, 11

FOR y = 9 TO 22: FOR x = 11 TO 22: READ k IF k = 9 THEN PSET (x, y), 10

IF k = 1 THEN PSET (x, y), 15 NEXT x, y

END SUB

13.7. Программа построения модели солнечной системы

'Программа построения модели солнечной системы. С.Н. Гольцов DECLARE SUB Planety ()

DECLARE SUB Orbita (x!, y!) DECLARE SUB sol (x!, y!, rad!)

DIM SHARED mer(550), Ven(550), Zem(1550), Mar(1550), Jup(1550) 'kf — коэффициент масштаба (1.5 — для планет земной группы : '5 — c Юпитером

'25 — вся солнечная система

CLS : kf = 5: x = 320 * kf: y = 240 * kf: rad = 10 SCREEN 12: WINDOW (0, 0)-(640 * kf, 480 * kf) GOSUB Planety

d = 0

Глава XIII. Примеры программ

209

DO

 

 

 

 

 

 

 

 

x1

=

x

rad *

4

COS(d1) * .387 * 200 'Двигаем Меркурий

 

y1

=

y

rad *

4

+

SIN(d1) * .387 * 200

 

PUT (x1,

y1), mer,

PSET

 

d1

=

d1 + 1 / (.24

* 30)

 

x2

=

x

rad *

4

COS(d2) * .723 * 200 'Двигаем Венеру

 

y2

=

y

rad *

4

+

SIN(d2) * .723 * 200

 

PUT (x2,

y2), Ven,

PSET

 

d2

=

d2 + 1 / (.62

* 30)

 

x3

=

x

rad *

4

COS(d3) * 1 * 200 'Двигаем Землю

 

y3

=

y

rad *

4

+

SIN(d3) * 1 * 200

 

PUT (x3,

y3), Zem,

PSET

 

d3

=

d3 + 1 / (1 *

30)

 

x4

=

x

rad *

4

COS(d4) * 1.524 * 200 'Двигаем Марс

 

y4

=

y

rad *

4

+

SIN(d4) * 1.524 * 200

 

PUT (x4,

y4), Mar,

PSET

 

d4

=

d4 + 1 / (1.88 * 30)

 

x5

=

x

rad *

14 — COS(d5) * 5.203 * 200 'Двигаем Юпитер

 

y5

=

y

rad *

14 + SIN(d5) * 5.203 * 200

 

PUT (x5,

y5), Jup,

PSET

 

d5

=

d5 + 1 / (11.86 * 30)

 

CALL

sol(x, y,

rad)

 

 

CALL

Orbita(x,

y)

 

 

 

a$ =

INKEY$

 

 

 

 

IF a$ = “ “ THEN EXIT DO

 

LOOP

 

 

 

 

 

 

 

END

 

 

 

 

 

 

 

 

Planety:

 

 

 

 

 

'рисую

è

запоминаю

планеты

 

CLS

 

 

 

 

 

 

 

 

CIRCLE

(x, y),

rad

* .382, 7 'Рисуем МЕРКУРИЙ

 

PAINT (x, y), 7,

7

 

 

GET (x

rad *

4, y — rad * 4)-(x + rad * 4, y + rad * 4),

 

mer(0)

 

 

 

 

 

 

CLS

 

 

 

 

 

 

 

 

CIRCLE

(x, y),

rad

* .95, 13 'Рисуем Венеру

 

PAINT (x, y), 13, 13

 

GET (x

rad *

4, y — rad * 4)-(x + rad * 4, y + rad * 4),

 

Ven(0)

 

 

 

 

 

 

CIRCLE

(x, y),

rad, 11 ' Рисуем Землю

 

PAINT (x, y), 3,

11

 

 

GET (x

rad *

4, y — rad * 4)-(x + rad * 4, y + rad * 4),

 

Zem(0)

 

 

 

 

 

 

CLS

 

 

 

 

 

 

 

 

CIRCLE

(x, y),

rad

* .531, 12' Рисуем Марс

 

PAINT (x, y), 12, 12

 

GET (x

rad *

4, y — rad * 4)-(x + rad * 4, y + rad * 4),

 

Mar(0)

 

 

 

 

 

 

CLS

 

 

 

 

 

 

 

 

CIRCLE

(x, y),

rad

* 11.2, 8' Рисуем Юпитер

 

PAINT (x, y), 6,

8

 

 

210

 

 

 

Языки Бейсик

' Рисуем Юпитеp

 

 

CIRCLE

(x + rad * 11.2 / 5, y — rad * 11.2 / 5), rad * 11.2 / 5,

4, , ,

.4

 

 

 

PAINT (x +

rad

* 11.2 / 5, y — rad * 11.2 / 5), 4, 4

GET (x

— rad *

14, y — rad * 14)-(x + rad * 14, y + rad * 14),

Jup(0)

 

 

 

 

CLS

 

 

 

 

RETURN

 

 

 

 

SUB Orbita

(x,

y)

 

CIRCLE

(x,

y),

75, 8 'Орбита Меркурия

CIRCLE

(x,

y),

140, 8 'Орбита Венеры

CIRCLE

(x,

y),

200, 8 'Орбита Земли

CIRCLE

(x,

y),

1.524 * 200, 8 'Орбита Марса

CIRCLE

(x,

y),

5.203 * 200, 7 'Орбита Юпитера

CIRCLE

(x,

y),

9.539 * 200, 7 'Орбита Сатурна

CIRCLE

(x,

y),

19.182 * 200, 7 'Орбита Урана

CIRCLE

(x,

y),

30.058 * 200, 7 'Орбита Нептуна

CIRCLE

(x,

y +

(39.439 * 200) / 4), 39.439 * 200, 14, , , 1.1

'Орбита Плутона

 

 

END SUB

 

 

 

 

SUB sol (x, y,

rad)

CIRCLE

(x,

y),

rad + 6, 4 ' Рисуем СОЛНЦЕ

PAINT (x, y), 14, 4

CIRCLE

(x,

y),

rad + 4, 4

CIRCLE

(x,

y),

rad + 2, 4

END SUB

 

 

 

 

13.8. Программа поиска корней многочлена

'программа

поиска корней многочлена

'на числовом отрезке

CLS

 

 

 

 

DIM min AS

DOUBLE 'начало интервала поиска корня

DIM max AS

DOUBLE 'конец интервала поиска корня

DIM x AS DOUBLE

 

'переменная

DIM y1

AS DOUBLE

'функция

'DIM y2 AS

DOUBLE 'функция

DIM h AS DOUBLE

 

'точность вычислений

DIM x1

AS DOUBLE

'корень

'определяем функцию пользователя

DEF fny (x) = x ^ 3 — 5 * x ^ 2 — 3 * x + 8 PRINT “вычисление корня многочлена”

SCREEN 9

VIEW (340, 10)-(620, 200), 6, 7 'правое верхнее окно

WINDOW (-14, — 9)-(14, 9) 'определяем Декартову систему координат LINE (-14, 0)-(14, 0), 3 'чертим ось Х

LINE (0, — 9)-(0, 9), 3 'чертим ось У

FOR i = — 13 TO 13 'цикл чертим координаты по оси Х LINE (i, — .5)-(i, .5), 4

NEXT i

'чертим функцию

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]