Kniga-Online.club
» » » » W Cat - Язык программирования Euphoria. Справочное руководство

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

Читать бесплатно W Cat - Язык программирования Euphoria. Справочное руководство. Жанр: Программирование издательство неизвестно, год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

Когда программа исполняется в окне DOS с частотой таймера иной, чем 18.2, функция time() не будет убегать вперед, если данное окно не является активным окном.

С частотой таймера, отличающейся от 18.2, функция time() под DOS занимает примерно 1/100 от обычного времени её исполнения. Под Windows и FreeBSD функция time() всегда исполняется очень быстро.

До тех пор, пока ex.exe исполняется, система будет поддерживать правильное время дня. Но если произойдет отказ ex.exe (т.е. вы увидите сообщение об ошибке "CauseWay..."), когда частота таймера установлена высокая, вам (или вашему пользователю) может потребоваться перезапуск машины, чтобы восстановить правильную исходную частоту. Если не сделать этого, системное время будет быстро опережать реальное. Эта проблема не свойственна Windows 95/98/NT и имеет место только под DOS или Windows 3.1. Но вы всегда можете вернуться к правильному времени, поддерживаемому батарейными часами вашей машины, перезагрузив машину.

Пример:

tick_rate(100)

-- time() идёт с шагом .01 секунды

-- вместо обычных .055 секунды

См. также:

time, time profiling

time

Синтаксис:

a = time()

Описание:

Выдаёт число секунд, прошедших от некоторого фиксированного момента в прошлом.

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

Если вам нужно измерить, например, сколько времени ушло на выполнение какого-то участка кода вашей программы, найдите разность между двумя отсчетами time(), взятыми в начале и в конце данного участка кода.

Разрешение под DOS32 обычно около 0.05 секунды. Под WIN32 и Linux/FreeBSD разрешение около 0.01 секунды.

Под DOS32 вы можете улучшить разрешение, вызвав процедуру tick_rate() с необходимым параметром.

Под DOS32 период времени, который вы можете так измерить, ограничен 24 часами. После этого величина, выдаваемая time() будет переустановлена и начнётся новый счёт. Если, тем не менее, вы вызывали tick_rate(), и частота часов была выше обычной 18.2/сек, результат time() будет оставаться правильным намного дольше, так как в этом случае Euphoria обрабатывает прерывания от часов прямо и накапливает отсчёты в более ёмкой переменной, 32-битной.

Эмуляция DOS под Windows XP не вполне совершенна. Когда вы производите профилирование времени (with profile_time), функция time() может иметь погрешность до нескольких процентов. Эта проблема не имеет места под Windows ME/98/95.

На некоторых машинах функция time() может выдавать отрицательное число. Тем не менее, вы можете использовать разность отсчётов от time(), чтобы измерять истекшее время.

Пример:

constant ITERATIONS = 1000000

integer p

atom t0, loop_overhead

t0 = time()

for i = 1 to ITERATIONS do

-- время пустого цикла

end for

loop_overhead = time() - t0

t0 = time()

for i = 1 to ITERATIONS do

p = power(2, 20)

end for

? (time() - t0 - loop_overhead)/ITERATIONS

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

См. также:

date, tick_rate

trace

Синтаксис:

with trace

trace(i)

Описание:

Если i равно 1 или 2, включается полноэкранная интерактивная трассировка/отладка исполнения команд программой. Если i равно 3, включается трассировка команд в файл протокола с именем ctrace.out. Если i равно 0, трассировка выключается. Когда i равно 1, отображение на экране трассировки цветное. Когда i равно 2, трассировка отображается в монохромном режиме. Трассироваться будут только те подпрограммы, которые были откомпилированны с метакомандой "with trace". Процедура trace() не будет давать эффекта, если вызвана вне участка вашей программы, на котором действует команда "with trace".

См. Часть I - 3.1 Отладка и профилирование, чтобы уяснить детали по вопросам трассировки и отладки.

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

Используйте trace(2), если цветное отображение на вашей системе затруднено.

Все формы trace() поддерживаются интерпретатором.

Транслятором с Euphoria на Си поддерживается только trace(3).

Пример:

if x then

-- да, этот участок требует отладки...

trace(1)

-- и т.д.

...

end if

См. также:

profile, debugging and profiling

...

от U до Z

unlock_file

Синтаксис:

include file.e

unlock_file(fn, s)

Описание:

Отпирает открытый файл fn или участок файла fn. Данный файл должен быть перед этим заперт с использованием lock_file(). Под DOS32 и WIN32 вы можете отпереть некоторый участок внутри файла, задавая аргумент s в виде {первый_байт, последний_байт}. Этот же самый участок в файле должен быть перед этим заперт с использованием lock_file(). Под Linux/FreeBSD в данной версии вы можете запирать и отпирать только весь файл целиком. Аргумент s должен быть пустым рядом {}, если отпирается весь файл. Под Linux/FreeBSD аргумент s всегда должен быть пустым рядом {}.

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

Вы должны отпереть запертый вами файл при первой же возможности, чтобы сделать доступным его использование другими программами (процессами).

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

См. lock_file() для изучения дальнейших комментариев и примера.

См. также:

lock_file

unregister_block

Синтаксис:

include machine.e (or safe.e)

unregister_block(a)

Описание:

Удаляет блок памяти из списка безопасных блоков, поддерживаемого safe.e (отладочной версией machine.e). Участок памяти, занятый этим блоком, начинается по адресу a.

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

Данная процедура предназначена для использования только в отладочных целях. Применяйте её для вычеркивания блоков памяти, которые вы ранее внесли в список с помощью процедуры register_block(). Вычеркивая (удаляя) блок, вы исключаете его из списка безопасных блоков, поддерживаемого safe.e. Это предохраняет вашу программу от любых последующих операций чтения-записи по адресам внутри блока.

См. register_block() для уяснения деталей и изучения примера.

См. также:

register_block, safe.e

upper

Синтаксис:

include wildcard.e

x2 = upper(x1)

Описание:

Преобразует атом или ряд символов на латинском алфавите к верхнему регистру.

Пример:

s = upper("Euphoria")

-- s равно "EUPHORIA"

a = upper('g')

-- a равно 'G'

s = upper({"Euphoria", "Programming"})

-- s равно {"EUPHORIA", "PROGRAMMING"}

См. также:

lower

use_vesa

Платформа:

DOS32

Синтаксис:

include machine.e

use_vesa(i)

Описание:

use_vesa(1) переведет Euphoria в режим подчинения рекомендациям графического стандарта VESA. Это может улучшить работу программ Euphoria в режимах SVGA графики с некоторыми видеоплатами. use_vesa(0) восстановит оригинальный метод, применяемый Euphoria при работе с видеоплатами.

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

Большинство пользователей Euphoria может не обращать на эту процедуру внимания. Однако, если возникли трудности при переходе в графические режимы SVGA, вы можете попытаться выполнить use_vesa(1) в начале вашей программы перед любыми вызовами функции graphics_mode().

Аргументы в use_vesa(), отличающиеся от 0 или 1, не должны использоваться.

Пример:

use_vesa(1)

fail = graphics_mode(261)

См. также:

graphics_mode

value

Синтаксис:

include get.e

s = value(st)

Описание:

Читает строковое представление объекта Euphoria и рассчитывает его величину. Выдаёт 2-х элементный ряд вида {error_status, величина}, где элемент error_status может быть одним из:

GET_SUCCESS -- найдено законное представление объекта

GET_EOF -- конец строки обнаружен слишком быстро

GET_FAIL -- неправильный синтаксис

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

Данная функция работает точно так же как и get(), но чтение производится из строки, которую вы подаёте, а не из файла и не с устройства.

После прочтения одного законного представления объекта Euphoria value() приостанавливает дальнейшее чтение и игнорирует любые добавочные символы в строке. Например, "36" и "36P" - оба случая дадут вам {GET_SUCCESS, 36}.

Пример 1:

s = value("12345"}

-- s равно {GET_SUCCESS, 12345}

Пример 2:

s = value("{0, 1, -99.9}")

-- s равно {GET_SUCCESS, {0, 1, -99.9}}

Пример 3:

s = value("+++")

-- s равно {GET_FAIL, 0}

См. также:

get, sprintf, print

video_config

Синтаксис:

include graphics.e

s = video_config()

Описание:

Выдаёт ряд величин, описывающих конфигурацию вашей видеоподсистемы:

{цветной монитор?, графический режим, число строк текста, число колонок текста, число пикселов по горизонтали, число пикселов по вертикали, число цветов, число страниц}.

В библиотечном файле graphics.e определены следующие константы:

global constant

VC_COLOR = 1,

VC_MODE = 2,

VC_LINES = 3,

VC_COLUMNS = 4,

VC_XPIXELS = 5,

VC_YPIXELS = 6,

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

W Cat читать все книги автора по порядку

W Cat - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


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

Отзывы читателей о книге Язык программирования Euphoria. Справочное руководство, автор: W Cat. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*