Basic 1969 г.

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


Глава 9

Функции

Краткое содержание: DEF, LEN, STRS, VAL, SGN,
ABS, INT, SQR, FN
Функции - это зашитые в бейсик систему подпрограммы, которые
получая на входе одни значения, называемые аргументами, возвраща-
ют другие значения-результаты.

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

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

PRINT LEN ''SINCLAIR''
а компьютер выведет ответ '8', т.е. количество букв в слове
'SINCLAIR' (для ввода с клавиатуры имени функции LEN, вы должны
войти в необходимый режим, нажав клавиши CAPS SHIFT и SYMBOL
SH-i FT, курсор изменится с (L) на (Е) , и нажать клавишу К.

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

Функция STRS преобразует число в символьный вид, подобный фор-
мату вывода чисел оператором PRINT:
LET AS * STRS 1E2
аналогично по действию команде

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

PRINT LEN STRS 100.0000
и получи1-е ответ 3, так как STRS 100.0000 8 "100"
функция VAL обратится к функции STRS и преобразует строку в
число, так VAL "3.5" ■ 3.5

или

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

VAL ( "2" *3" ) » б
В последнем случае происходит вычисление двух выражений, сна-
чала строкового с получением строки ''2*3", затем числового с
получением строки "6". Можно попасть в затруднительное положе-
ние, например:

PRINT VAL "VAL" "VAL" " " "2" " " " " " "
Помня, что внутри строки кавычки удваиваются, мы видим, что в на-
шем случае может понадобиться учетверение или даже увосьмирение.

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

VAL*" " "FRUIT PUNCH" " " * "FRUIT PUNCH/"
сделайте

LET А» * ''99' '
и затем выведете все следующие значения:
VAL AS
VAL "AS"

VAL " " 4 ' AS' ' " "

VALS AS
VALS "AS"

VALS " " "AS" " "
Некоторые из них сработают, а некоторые нет. Проанализируйте все
ответы.

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

если аргумент отрицателен,
функция ABS преобразует аргумент в положительное число;
AbS -3..2 = ABS 3.2 - 3.2
функция INT (от 'INTEGER PART' - целая часть) преобразует дробиОе
число к целому отбрасыванием дробной части:
I NT -3.9 ■ -3

функция SQR вычисляет корень квадратный от числа, например:
SQR 4*2
SQR 0.2 5 » 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 S (LEN "CHICKEN"/2 + 3)
функция INT всегда округляет до целого; для округления с точ-
ностью 0.5 надо добавить к результату '.5'. Вы можете задать для
себя такую функцию:

THE NEAREST INTEGER,
и можете затем попробовать ввести:

FN R (2.9) -3 FN R (2.4) » 2

FN R (-2.9) * -3 FN R (-2.4) » -2

Введите и выполните следующее:

10 LET Х«0: LET Y»0: LET A«10
20 DEF FN P (X, Y) -A + X*Y
30 DEF FN Q () *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', 'Y' соответственно 2 и 3,
так как они аргументы и результат будет 10+2*3*16.

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

20 DEF FN Р (X, Y) » FN Q ()
В этом случае FN Р (2,3) будет возвращать значение 10. Некото-
рые версии бейсика имеют функции LEFTS и RIGHTS, TLS:

LEFTS (AS, N) - возвращает подстроку, содержащую 'N'

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

последних символов в строке 'AS';
TLS (AS')t - возвращает подстроку, содержащую все
символы строки '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 строковых.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
PC и Spectrum - обзор интернет ресурсов посвященных Спектруму.
Доска почета - Антология компьютерных журналов для ZX Spectrum.
Анкета - Введение.
Music scene - обзор активных на 2007-2008 года спектрумовских музыкантов.
the loop - долгожданная дема "the loop", которой мы ждали почти 3 года, наконецто, отдана в массы...

В этот день...   21 ноября