Главная » Basic » СТАНДАРТНЫЕ ЧИСЛОВЫЕ ФУНКЦИИ

0

Во многих вычислениях используются  действия, которые не могут быть простым способом сведены к арифметическим операциям +, -, *, /, ↑. Частным примером может служить извлечение квадратного корня из числа.  В языке Бейсик предусмотрены специальные  функции для выполнения некоторых таких действий. Например, оператор

20 А = SQR (X)

вычисляет квадратный корень из значения  X и запоминает полученный результат в А. Функции типа SQR могут входить в состав выражений.  При вычислении таких выражений  имя функции заменяется на результат ее вычислений. Аргумент X приведенной выше функции можно заменить на выражение при  условии,  что результат его вычисления не будет отрицательным. Таким образом, допустимы следующие операторы:

20  А = SQR (А + В * 3.1) 20 A=B-SQR (14.7) 20  A=SQR(3+SQR(X))

В табл. 3.1 приводится  рекомендованный перечень стандартных функций. Эти функции  должны иметься во всех версиях Бейсика. Через X в этой таблице обозначается числовое выражение.

Таблица 3.1. Стандартные числовые функции Бейсика

Функция

Действие

ABS(X)

ATN(X)

COS(X)

Дает абсолютное значение X, т. е. значение,

получаемое после замены знака числа X на плюс: ABS(-3.7) = 3.7

Дает значение арктангенса X, т. е. угла, тангенс которого равен X. Результатом является угол в радианах в диапазоне   -π/2 … π/2. Для перевода из радианов в градусы пользуйтесь соотношением

180 градусы=(180/π)* радианы где 180/π =57.29577951

Дает косинус угла X, где X задается в радианах. Для перевода из градусов в радианы пользуйтесь соотношением

радианы=(π/180)*градусы где π/180=1.745329252Е-2

Таблица 3.1 (окончание)

Функци

я

Действие

ЕХР(Х)

INT(X)

LOG(X)

RND или RND(X)

SGN(X)

SIN(X)

Дает е (=2.718281828) в степени X, т. е. еX. Обратите

внимание на то, что е служит основанием натуральных логарифмов, а функции ЕХР и LOG являются взаимно обратными.   Таким образом, LOG(EXP(X)) = X=EXP(LOG(X))

Дает наибольшее целое число, не превышающее X, т.

е. такое целое число N, что N≤X<N+1 Например: INT(3.7) = 3 INT(-3.7)= -4

Дает натуральный логарифм X; аргумент X  должен быть положительным. Для перевода в обычный логарифм (по основанию 10) пользуйтесь соотношением

обычный логарифм (X) =0.434294481*натуральный логарифм (X)

В форме RND функции никакого аргумента не передается. Эта функция возвращает  следующее значение из  последовательности псевдослучайных чисел, равномерно распределенных в диапазоне 0… 1. (См. ниже оператор RANDOMIZE.)   В форме RND(X) аргумент X может служить фиктивным параметром или же использоваться для выбора другой последовательности случайных чисел. Детали применения в различных системах см. в приведенных далее таблицах

Дает знак X согласно следующим правилам:

-1, если X < 0; 0,  если X = 0; +1, если X > 0,

Дает синус X, где X задается в радианах (см. также

ATN, COS)

SQR(X)   Дает неотрицательное значение квадратного корня из X; аргумент X должен быть положительным или равным 0

TAN(X)  Дает тангенс X, где X задается в радианах (см. также

SIN, ATN, COS)

Примечание. RANDOMIZE N, где N — константа или переменная представляет собой оператор, а не функцию и   используется для  того,  чтобы  функция RND  выдавала  другую  последовательность случайных чисел.

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

tg(x)=sin(x)/cos(x)                                   ctg(x)=cosx(x)/sin(x) 63

Так как из  обратных тригонометрических функций в число стандартных входит только ATN (X)

[arctg (x)], то другие функции можно получить  из соотношений

arccos (x)=π/2 arcsin (x)

Приведенная ниже программа иллюстрирует применение нескольких стандартных функций: 10 REM ПРИМЕНЕНИЕ ФУНКЦИЙ

20 PRINT "X"," ABS(X)","INT(X)","SGN(X)"

30 FOR X=-1.5 TO 1.5 STEP .5

40   PRINT X, ABS(X), INT(X), SGN(X)

50 NEXT X

60 END

RUN

X                         ABS(X)   INT(X)            SGN(X)

-1.5                      1.5         -2                       -1

-1                         1            -1                       -1

-.5                        .5           -1                       -1

б            0                         0

.5                         .5           0                         1

1                          1            1                         1

1 .5                      1.5         1                         1

END  AT  LINE 60

Чтобы получить требуемый формат вывода при работе с Бейсиком ВВС, модифицируйте строку 20 так, чтобы в ней была указана одна строка символов с соответствующим числом пробелов между заголовками:

20  PRINT "X    ABS (X)   INT (X)   SGN (X)"

Во  многих системах с  Бейсиком предусмотрены  дополнительные функции; в  табл.  3.2  —  3.4

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

Таблица 3.2. Числовые функции, предлагаемые в Бейсике для персональной ЭВМ ZX81 фирмы Sinclair

дополнительно к перечисленным в табл. 3.1 стандартным функциям

Функция

Действие

ACS(X)

ASN(X) LOG

LN(X)

π

RND

Дает арккосинус X, т. е. выражаемое в радианах

значение угла, косинус которого равен X. (См. ATN в табл. 3.1.)

Дает арксинус X, т. е. выражаемое в радианах значение угла, синус которого равен X. (См. ATN в табл. 3.1.) Такой функции в данной версии Бейсика нет; ее заменяет функция LN

Дает натуральный логарифм X. (См. LOG в табл. 3.1.) Эта функция не имеет аргумента. Дает значение константы π =3.141592654

Дает  значение следующего  представителя

последовательности случайных чисел. Аргументов не имеет. Оператор RAND N обеспечивает переход к новой последовательности случайных чисел

Таблица 3.3. Числовые функции, предлагаемые в Бейсике Microsoft дополнительно к перечисленным в

табл. 3.1 стандартным функциям

Функция

Действие

CDBL(X)

CINT(X)

CSNG(X#) FIX(X)

RND(X)

или RND

Преобразует стандартное вещественное значение X в

значение двойной точности. Например: в результате исполнения оператора

А# =CDBL (454.67)

переменная А# получит значение представления числа

454.67 с повышенной точностью

Преобразует стандартное вещественное значение Х в целое число (вызывает те же действия, что и функция INT). Учтите, что при этом X должно быть в диапазоне +32767

Преобразует значение двойной точности Х# в стандартное вещественное значение

Отбрасывает дробную часть у числа X. Эквивалентна выражению SGN(X)* INT(ABS(X)) и совпадает с INT(X) при положительном  X

Дает следующее случайное число со значением между 0 и 1. При X < 0 обеспечивает переход к новой последовательности; при X=0 вновь дает значение предыдущего случайного числа. Если X > 0 или опущено, то дает значение следующего случайного числа. Для перехода к новой последовательности случайных чисел можно пользоваться также оператором RANDOMIZE N

Таблица       3.  4.  Числовые  функции,  предлагаемые  в  Бейсике  ВВС  дополнительно   к перечисленным в табл. 3.1 функциям

Функция

Действие

ACS(X)

ASN(X)

DEG(X) LN(X)

LOG(X)

RAD(X)

RND (1)

RND (0) RND(-K)

RND(N) RND

Дает арккосинус X, т. е. выражаемое в радианах

значение угла, косинус которого равен X (См. ATN в табл. 3.1)

Дает арксинус X, т. е. выражаемое в радианах значение угла, синус которого равен X (См. ATN в табл. 3.1) Переводит значения X из радиан в градусы

Дает натуральный логарифм X. Эквивалентна функции

LOG из табл. 3.1

Дает обычный (десятичный) логарифм X. Обратите внимание на это отличие от стандарта, приведенного в табл. 3.1

Переводит значения X из градусов в радианы

Дает следующее случайное число со значением между

0.0 и 0.999999

Дает значение предыдущего случайного числа,

полученного с помощью RND (1)

Отрицательное значение аргумента вызывает переход к новой последовательности случайных чисел (как в случае оператора RANDOMIZE) и возврат этого значения в качестве результата

При положительном  целом N дает  случайное  целое число в  диапазоне 1 .. .N

При отсутствии аргумента возвращает случайное целое число в диапазоне ±2147483647 (диапазон машинного представления целых чисел 32 битами)

В приведенной ниже программе для проверки, делится ли  одно число на другое нацело, используется функция INT (целая часть). Если деление нацело имеет место, то N1/N2=целая часть (N1/N2) :

10 INPUT А,В

20 D=A/B

30 IF INT(D)<>D THEN 60

40   PRINT А; "ДЕЛИТСЯ НАЦЕЛО НА" ;В

50   GOTO 70

60   PRINT A; "HE ДЕЛИТСЯ НАЦЕЛО НА";В

70 END RUN

?96.12

96 ДЕЛИТСЯ НАЦЕЛО НА 12

END AT LINE 70

RUN

?21.4

21 HE ДЕЛИТСЯ НАЦЕЛО НА 4

END AT LINE 70 66

Структограмма этой программы такова:

Простые  числа уже  много  лет  являются  объектом  исследования. Обсуждавшаяся  выше

программа  предоставляет  определенные  возможности для  решения вопроса,  является  ли данное число простым или  нет. Простым называется такое целое (положительное)  число, у которого нет других делителей, кроме единицы   и самого себя. Следующая структограмма иллюстрирует  программу, определяющую, является ли  вводимое значение переменной А простым

Сама программа такова:

10  REM ПРОГРАММА ДЛЯ ПРОВЕРКИ ПРОСТОТЫ ЧИСЛА га  INPUT A

30   FOR B=2 TO A-1

40       D=A/B

50       IF INT(D)<>D THEN 80

60           PRINT A; "HE ЯВЛЯЕТСЯ ПРОСТЫМ ЧИСЛОМ"

70            STOP

80   NEXT В

90  PRINT А; "ЯВЛЯЕТСЯ ПРОСТЫМ ЧИСЛОМ"

100   END

Хотя та часть, которая отвечает за проверку первого делителя, несколько изменилась  по сравнению с предыдущей программой, тем не менее и структо-

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

3.4.1. СЛУЧАЙНЫЕ ЧИСЛА

Генерация случайных  чисел требует  некоторых  разъяснений, так  как  почти в  каждой  системе реализация  функции RND  имеет свои специфические  особенности. Эта  функция используется достаточно широко: многие игровые программы и эмуляторы применяют случайный порядок выбора элементов данных. ЭВМ не имеют генераторов действительно случайных чисел (такие генераторы должны  реализовываться аппаратно)  и   генерируют числа программно,  используя рекуррентные формулы.  Хотя  эти числа лишь псевдослучайные,  обычно  они образуют  вполне  приемлемые последовательности. Чаще  всего случайные числа находятся в  диапазоне 0.  .  .  1,  но  бывают  и исключения. Например, в Бейсике ВВС предусмотрено несколько вариантов (см. табл. 3.4).

Основная особенность функции RND состоит в том, что при каждом обращении к ней получается другое значение. Ниже приводится пример простой программы (в Вашей системе может получиться другая последовательность случайных чисел) :

10 REM ПРОСТЫЕ СЛУЧАЙНЫЕ ЧИСЛА

20 FOR I=1 ТО 8

30   X=RND

40   PRINT I,X

50 NEXT I

60 END

При работе с Бейсиком ВВС для получения нужного формата вывода замените строку 40 на оператор

40   PRINT ; I,Х

Так  как  числа генерируются по  формуле,  всегда  начинающей с  одного  и   того  же  стартового значения,  то   при  каждом   запуске   программы   командой   RUN   получится  одна   и     та   же последовательность. Исключение составляет Бейсик ВВС, при работе с которым последовательность случайных чисел продолжается до тех пор, пока не будет инициирована заново. Хотя возобновление последовательности случайных чисел при каждом запуске программы и  удобно для тестирования и отладки программы, оно мало приемлемо  при эксплуатации программы. Обычно алгоритм генерации случайных чисел

опирается на  стартовое  "порождающее"  значение, которое  может  быть  изменено оператором RANDOMIZE, или  вызовом RND (X) с отрицательным значением аргумента X, или  каким-либо иным способом  (см.  табл.  3.1  —  3.4).  После  этого  генерируется новая   последовательность псевдослучайных  чисел. Ниже приводятся примеры инициации   новой   последовательности для различных систем:

100   RANDOMIZE 92 100   RAND 4 100  X=RND (-42)

Если добавить в приведенный выше простой пример ввод значения и переустановку с его помощью генератора случайных чисел, то получатся следующие результаты:

3.5.  ФОРМАТ ВЫВОДА ДАННЫХ

В этом разделе речь пойдет о тех возможностях управления форматом вывода данных,  которых вполне достаточно при написании  программы для работы в режиме диалога. Если же  требуется печатать важные таблицы и  отчеты, то дополнительно могут потребоваться средства  управления шириной столбцов и  форматами вывода чисел. Такие возможности предоставляются  оператором PRINT  USING,  обсуждаемым  в  разд.  6.3.  Похожие возможности управления  обеспечиваются в Бейсике ВВС и другим путем (см. следующий подраздел).

Источник: Уолш Б.    Программирование на Бейсике: Пер. с англ. М.: Радио и связь, 1988. 336 с: ил.

По теме:

  • Комментарии