Работа с ZX-Spectrum 1993 г.

Глава 9 - функции.


ГЛАВА 9

ФУНКЦИИ

Краткое содержание: DEF, LEN, STR$, VAL,

SGN, ABS, INT, SQR, FN

Функции - это зашитые в BASIC-систему подпрограммы, которые, полу-
чая на входе одни значения, называемые аргументами, возвращают другие
значения - результаты.

Функции используются в выражении простым включением в него
имени функции с последующими аргументами.

При вычислении выражения, вычисляется и значение функции.
Например, функция LEN возвращает длину заданного в ней строкового аргу-
мента. Вы можете записать:

PRINT LEN "SINCLAIR"
А компьютер введёт ответ "8", т.е. количество букв в слове "SINCLAIR"
(для ввода с клавиатуры имени функции LEN, Вы должны войти в необ-
ходимый режим, нажав клавиши (JAPS SHIFT и SYMBOL SHIFT, курсор
изменится с [L] на [Е], и нажать клавишу "К").

Если в одном выражении используются и функции и опера'ции, то
функции будут вычислены перед выполнением любых операций. Однако, Вы
можете изменить этот порядок, применяя скобки.

Функция STR$ преобразует число в символьный вид, подобный форма-
ту вывода чисел оператором PRINT:
LET A$=STR$ 1Е2
Аналогично по действию команде

' LET 100"
или выполните

PRINT LEN STR$ 100.0000
и получите ответ 3, так как STR$ 100.0000 - "100".
Функция VAL обратная к функции STR$ и преобразует строку в число.
Так,

VAL"3.5" =3.5

или

VAL "2*3" в 6
или даже так

VAL ("2"+"*3")=6

В последнем случае происходит вычисление двух выражений, сначала
строкового с получением строки "2*3", затем числового с получением
строки 6.

Можно попасть в затруднительное положение, например:

PRINT VAL "VAL""VAL".......2............

помня; что внутри строки кавычки удваиваются, мы видим, что в нашем
случае может понадобиться учетверение или даже увосьмирение.

Имеется ещё одна функция подобная VAL - это VALS. И аргументом и
результатом этой функции является строка символов. Она работает как VAL,
применяя дважды, раскрывая все кавычки в строках:
VAL$ """Fruit punch""" = "Fruit punch"

сделайте

LET a$«"99"
и затем выведите все следующие значения:
VAL а$
VAL "а$"
VAL"""a$"""
VAL$ "а$"
VAL$ """а$"""

некоторые из них сработают, а некоторые нет, проанализируйте все
ответы.

• Функция SGN - это так называемая математическая функция сигнум
(знак). И аргумент и результат её числовые. Результат равен:
X если результат положителен,
О, если результат равен О,

если результат отрицателен.

• Функция ABS преобразует аргумент в положительное число:

ABS -3.2 = ABS 3.2 - 3.2

• Функция INT (от integer part - целая часть) преобразует дробное
число к целому отбрасыванием дробной части числа:

INT 3.9-3

Сложности возникают при отрицательном аргументе, так как округ-
дение происходит к ближайшему целому, не большему, чем аргумент:
INT -3.9 «-4

• Функция SQR вычисляет корень квадратный из числа, например:

SQR4=2
SQR 0.25 в 0.5

SQR 2= 1.4142136 (приближенно)
Если аргумент отрицательный, то выдается сообщение:

"A INVALID ARGUMENT"
Вы также можете сами опреджелить для себя какую-нибудь функцию,
-указав FN и имя этой функции (букву, если аргумент числовой и $, если
строковый). Аргументы должны быть обязательно заключены в скобки.

Вы можете определить функцию вводом оператора DEF в некотором
месте программы. Например, зададим функцию, вычисляющую квадрат
числа:

10 DEF FN S(X) = Х*Х: REM THE SQUARE OF X
DEF вводится в соответствующем режиме (SYMBOL SHIFT И 1).
Теперь функция может использоваться в программе:
PRINT FN S(2)
PRINT FN S(3+4)

PRINT 1 + INT FN $(LEN "CHICKEN"/2+3)
Функция INT всегда округляет до целого; для округления с точностью
0.5 надо добавить к результату " .5". Вы можете задать дял себя такую
функцию

20 DEF FN R(X) - INT (X - 0.5): REM GIVES X ROUNDED
TO THE NEAREST INTEGER
и можете затем попробовать ввести:
FN R(2.9) = 3
FN R(-2.9) e -3
FNR(2.4)«2
FNR(-2.4) = -2
Введите и выполните следующее:

10 LET Х«0: LET Y«0: LET A-10'
20 DEF FN P(X,Y) = A + X*Y
30 DEF FNQ()«A + X*Y
40 PRINT FN P(2,3), FN Q()
Есть одна тонкость в этой программе. Во-первых, функция FN Q не
использует аргументов, но скобки при этом должны обязательно использо-
ваться. Во-вторых, операторы DEF не выполняемые, компьютер после выпол-
нения .строки 10 просто переходит к выполнению строки 40. Помните, что
DEF может быть только оператором, но не командой. В-третьих, "X" и "Y" -
имена целых переменных в программе и в то же время имена аргументов в
функции FN Р.

Функция FN Р использует в вычислении результата значения аргумен-
тов "X ,"Y" и переменной "А", не являющейся аргументом. Так, когда
вычисляется FN Р(2,3) занчение "А" равно 10, как и определено в програм-

ме, а значения "Xй, HYH соответственно 2 и 3, так как они аргументы и
результат будет 10 + 2*3 = 16.

При вычислении FN Q0 участвуют только переменные программы, так
как аргументов нет, и ответ в этом случае будет 10 + 0*0 = 10. Теперь
изменим строку 20 на

20 DEF FN P(X,Y) ■ FN Q()

В этом случае FN Р (2,3) будет возвращать значение 10. Некоторые
версии BASIC'a имеют функции LEFTS, RIGHTS и TLS:

• LEFTS (AS.N) - возвращает подстроку, содержащую "N" первых
символов строки "AS";

• RIGHTS (AS,N) - возварщает подстроку, содержащую HN" последних
символов в строке "AS";

• TLS (AS) - возвращает подстроку, содержащую все символы строки
"AS", кроме первого.

Вы можете определить такие функции на своем компьютере:

10 DEF FN TS (AS) * AS (2 ТО): REM TLS 20 DEF FN LS
(AS,N) - AS (TO N): REM LEFTS

Проверьте их работу со строками длиной 0 и 1.
ПРИМЕЧАНИЕ: функция может иметь до 26 числовых аргументов и в то же
время до 26 строковые-




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
britelite/dekadence - интервью.
Новости - новости от Челябинских спектрумистов.
Письмо №290
Новости - Группа RAGE завершила проект - Monster Land. Вышел ZX-ELEMENT #2.
БАЙК-ШOУ report - Глaзamи oчeвидцa...

В этот день...   18 апреля