Читаем Язык программирования Euphoria. Справочное руководство полностью

Данная процедура предназначена только для отладочных целей. Библиотека safe.e регистрирует и отслеживает блоки памяти, которые вашей программе разрешено использовать в подпрограммах peek(), poke(), mem_copy() и т.п. Процедура нормально работает только с теми участками памяти, которые выделены вами для своих целей путем выполнения команд Euphoria allocate() или allocate_low() и которые еще не освобождены с помощью команд Euphoria free() или free_low(). В некоторых случаях вы можете затребовать добавочные, внешние, участки памяти, например, в результате вызова функции Си. Если вы отлаживаете вашу программу с использованием safe.e, вы должны также регистрировать эти внешние участки памяти, иначе safe.e будет препятствовать вашему доступу к ним. Когда вы закончите использование внешнего блока, вы сможете отменить его регистрацию с помощью команды unregister_block().

Когда вы включаете machine.e, у вас вызываются другие версии процедур register_block() и unregister_block(), которые не производят никаких операций. Подобный приём делает простыми и лёгкими переходы между отладочным и штатным режимами исполнения вашей программы.

Пример :


atom addr


addr = c_func(x, {})

register_block(addr, 5)

poke(addr, "ABCDE")

unregister_block(addr)


См. также:

unregister_block, safe.e


remainder


Синтаксис:

x3 = remainder(x1, x2)

Описание:

Вычисляет остаток от деления x1 на x2. Результат будет иметь тот же знак, что и x1, а величина результата будет меньше, чем величина x2.

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

Аргументы, подаваемые в эту функцию, могут быть атомами или рядами. В случае рядов применяются правила действий с рядами.

Пример 1:


a = remainder(9, 4)

-- a будет равно 1


Пример 2:


s = remainder({81, -3.5, -9, 5.5}, {8, -1.7, 2, -4})

-- s будет равно {1, -0.1, -1, 1.5}


Пример 3:


s = remainder({17, 12, 34}, 16)

-- s будет равно {1, 12, 2}


Пример 4:


s = remainder(16, {2, 3, 5})

-- s будет равно {0, 1, 1}


См. также:

floor


repeat


Синтаксис:

s = repeat(x, a)

Описание:

Создаёт ряд длины a, где каждый элемент является x.

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

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

Пример 1:


repeat(0, 10) -- {0,0,0,0,0,0,0,0,0,0}


Пример 2:


repeat("JOHN", 4) -- {"JOHN", "JOHN", "JOHN", "JOHN"}

-- интерпретатор создаст только одну копию "JOHN"

-- в памяти


См. также:

append, prepend, оператор формирования ряда


reverse


Синтаксис:

include misc.e

s2 = reverse(s1)

Описание:

Оборачивает порядок элементов в ряде.

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

Создаётся новый ряд, в котором элементы высшего уровня имеют порядок, обратный по отношению к исходному ряду.

Пример 1:


reverse({1,3,5,7}) -- {7,5,3,1}


Пример 2:


reverse({{1,2,3}, {4,5,6}}) -- {{4,5,6}, {1,2,3}}


Пример 3:


reverse({99}) -- {99}


Пример 4:


reverse({}) -- {}


См. также:

append, prepend, repeat


routine_id


Синтаксис:

i = routine_id(st)

Описание:

Функция выдаёт целое число i, известное как номер (идентификатор) подпрограммы, который присваивается процедуре или функции Euphoria, уже определённой программистом. Имя подпрограммы задаётся символьным рядом st. Если подпрограмма с таким именем ещё не определена, выдаётся -1.

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

Полученный с помощью данной функции номер подпрограммы может подаваться в call_proc() или call_func() для непрямого (косвенного) вызова подпрограммы с именем st.

Подпрограмма с именем st должна быть видимой, т.е. доступной для вызова в той точке вашей программы, где вызвана функция routine_id() для получения номера подпрограммы. Непрямые вызовы подпрограмм по неким неизвестным пока их номерам могут появляться в программе ранее собственно определения подпрограмм, но конкретное численное значение каждого номера может быть выработано только после определения конкретной подпрограммы - внимательно просмотрите пример 2 ниже.

Правильный номер подпрограммы, как только ему присвоено конкретное значение, будет работать в любом месте вашей программы при косвенных вызовах подпрограммы по этому её номеру через call_proc() / call_func().

Некоторые типовые применения номеров, вырабатываемых routine_id():

1. Указание на подпрограмму, которая в программе будет определена позже.

2. Создание подпрограммы, которая вызывает другую подпрограмму через численный аргумент - см. Пример 2 ниже.

Перейти на страницу:

Все книги серии Euphoria

Язык программирования Euphoria. Справочное руководство
Язык программирования Euphoria. Справочное руководство

Euphoria (юфо'ри, также рус. эйфори'я, ра'дость) — язык программирования, созданный Робертом Крейгом (Rapid Deployment Software) в Канаде, Торонто. Название Euphoria — это акроним для «End-User Programming with Hierarchical Objects for Robust Interpreted Applications».Euphoria — интерпретируемый императивный язык высокого уровня общего назначения. C помощью транслятора из исходного кода на Euphoria может быть сгенерирован исходный код на языке Си, который в свою очередь может быть скомпилирован в исполнияемый файл или динамическую библиотеку при помощи таких компиляторов, как GCC, OpenWatcom и др. Программа Euphoria также может быть «связана» с интерпретатором для получения самостоятельного исполняемого файла. Поддерживается несколько GUI-библиотек, включая Win32lib и оберток для wxWidgets, GTK+ и IUP. Euphoria имеет встроенную простую систему баз данных и обертки для работы с другими типам баз данных.[Материал из Википедии]

Коллектив авторов

Программирование, программы, базы данных

Похожие книги

Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ

Эта книга представляет собой перевод третьего издания американского бестселлера Effective C++ и является руководством по грамотному использованию языка C++. Она поможет сделать ваши программы более понятными, простыми в сопровождении и эффективными. Помимо материала, описывающего общую стратегию проектирования, книга включает в себя главы по программированию с применением шаблонов и по управлению ресурсами, а также множество советов, которые позволят усовершенствовать ваши программы и сделать работу более интересной и творческой. Книга также включает новый материал по принципам обработки исключений, паттернам проектирования и библиотечным средствам.Издание ориентировано на программистов, знакомых с основами C++ и имеющих навыки его практического применения.

Скотт Майерс , Скотт Мейерс

Программирование, программы, базы данных / Программирование / Книги по IT