Главная страница
Навигация по странице:

  • программа ::= определение_функции | определение_функции

  • external -директива ; программа | программа

  • список_имён_функций |

  • имя_функции , список_имён_функций

  • external -директивы должен стоять знак ; .

  • external -директиве

  • М. В. Ломоносова Факультет вычислительной математики и кибернетики Е. И. Большакова, Н. В. Груздева Основы программирования на языке Рефал Учебное пособие


    Скачать 0.92 Mb.
    НазваниеМ. В. Ломоносова Факультет вычислительной математики и кибернетики Е. И. Большакова, Н. В. Груздева Основы программирования на языке Рефал Учебное пособие
    Анкорqewqe
    Дата02.01.2022
    Размер0.92 Mb.
    Формат файлаdoc
    Имя файлаRefalP-1.doc
    ТипУчебное пособие
    #323127
    страница15 из 22
    1   ...   11   12   13   14   15   16   17   18   ...   22

    3.5.Оформление программы


    Если программа на языке Рефал-5 состоит из нескольких модулей, доступные для использования в других модулях функции помечаются в начале своего описания системным словом $ENTRY. Если в модуле используются функции, описанные в других модулях, их имена должны быть объявлены как внешние в соответствующей external-директиве. Приведём соответствующие БНФ-правила:

    программа ::= определение_функции | определение_функции  программа |
    определение_функции ; программа | external-директива ; программа |
    программа external-директива ;

    external-директива ::= $EXTERNAL список_имён_функций |
    $EXTERN список_имён_функций |

    $EXTRN список_имён_функций

    список_имён_функций ::= имя_функции |

    имя_функции , список_имён_функций

    Отметим, что системные слова $ENTRY, $EXTERNAL и его сокращения всегда записываются прописными (заглавными) буквами.

    Обратим также внимание, что определение функции обычно отделяется от последующей программы знаком ;, но этот знак может и отсутствовать. Неоднозначности не возникает, поскольку определение функции всегда состоит из двух элементов – имени функции и блока рефал-предложений в фигурных скобках. В то же время в конце external-директивы должен стоять знак ;.

    В программах на Рефале-5 могут использоваться два вида комментариев – строковые комментарии (как в Рефале-2) и комментарии-вставки. Строкой комментария считается любая строка программы, начинающаяся со знака *. Комментарием-вставкой является любая строка, начинающаяся комбинацией символов /* и заканчивающаяся */, она возможна в любом месте программы, где может быть вставлен пробел.

    Как и в Рефале-2, для инициализации поля зрения рефал-машины используется функция с именем Go; перед её именем необходимо поставить системное слово $ENTRY.

    В отличие от Рефала-2, встроенные функции объявлять в external-директиве не нужно.

    Ниже приведён пример программы вычисления факториала, состоящей из двух модулей: основной модуль находится в файле prog.ref, функция вычисления факториала описана в файле fact.ref.

    * Основной модуль программы вычисления факториала

    $EXTRN Fact ;

    $ENTRY Go {

    =


    >

    } ;

    * Функция проверяет, что введённая цепочка символов -

    * число, и выводит факториал этого числа. Если

    * введено не число, выводится строка

    * 'Число введено неверно '.

    Check { s.1 e.2 ,

    : True

    =
    >> ;

    e.1 =


    } ;

    * Вспомогательная функция проверки, что введённая

    * цепочка символов состоит из цифр.

    Subset { (e.1) = True ;

    s.1 e.2 (e.3 s.1 e.4) =

    ;

    e.1 = False

    }

    * Модуль вычисления факториала

    $ENTRY Fact { e.1 = };

    Fact1 { (e.1) 1 = e.1 ;

    (e.1) e.2 = )<- (e.2) 1>>

    }

    Для запуска приведённой программы необходимо сначала откомпилировать каждый из файлов, выполнив две команды:

    refc prog

    refc fact

    В результате будут сформированы два новых файла: prog.rsl и fact.rsl, и запуск программы осуществляется командой:

    refgo prog+fact

    4.Примеры решения задач на языке Рефал


    В данной главе на примере решения нескольких задач рассматриваются полезные приёмы программирования на языке Рефал. Если программы решения рассматриваемых задач для языков Рефал-2 и Рефал-5 отличаются только синтаксисом, приводится только программа на языке Рефал‑2.
    1   ...   11   12   13   14   15   16   17   18   ...   22


    написать администратору сайта