Turbo Basic 1.1. Руководство пользователя


Turbo Basic 1.1. Руководство пользователя - стр. 115


       FACTORAIAL(факториал).(6!=1*2*3*4*5*6=720)
  Факториал не входит в набор встроенных матоператоров Т.Б. ,но мно-
  гострочные функции покрывают этот пробел:
           100 DEF FNFACTORIAL(X%)
           110 LOCAL I%,TOTAL#
           120 IF X%<0 OR X%>170 THEN FNFACTORIAL#=-1:EXIT DEF
           130 TOTAL#=1
           140 FORI%=X% TO 2 STEP -1
           150 TOTAL#=TOTAL#*I%
           160 NEXT I%
           170 FNFACTORIAL#=TOTAL#
           180 END DEF
           FNFACTORIAL демонстрирует структуру многострочной  функции(нумера-
  ция  строк включена,чтобы мы могли ссылаться на различные строки по их но-
  мерам в процессе обсуждения-они ,конечно,опциональны).
                                     - 61 -
          
          
  Определения функции заключены в скобки,образуемые операторами  DEF
  FN и END DEF.
  В строке 180 функции дается ее имя и следовательно тип(# -означает
  двойную  точность).FNFACTORIAL имеет формальный параметр как единичное це-
  лое,X%.
  В строке  110  заявляется  пара  "локальных  "  переменных  ,I%  и
  TOTAL#.Локальные  переменные это временные структуры,существующие и выдан-
  ные только в пределах определений функций и процедур.(подробно они  обсуж-
  даются позднее в разделе,озаглавленном "локальные переменные").
  В  строке 120 выполняется проверка ошибки в аргументе,подаваемом в
  FNFACTORIAL.Нет места попыткам вычислять  факториал  отрицательного  числа
  или  факториал  такого значения аргумента,при котором результат получается
  вне значения двойной точности,в этих случаях вы  определяете  возвращаемое
  значение  функции  как  -1 и выход из определения.Программа ,в которой ис-
  пользуется FNFACTORIAL должна уметь распознать,что  возвращаемое  значение
  -1  представляет  условие  ошибки,и  соответственно себя вести.(Между про-
  чим,0! определяется равным 1).
  EXIT DEF предназначен для функции ,что и RETURN для подпрограммы:с
  его помощью управление возвращается к оператору ,которым функция ранее вы-



Начало  Назад  Вперед