Пример 1:
pretty_print(1, "ABC", {})
{65'A',66'B',67'C'}
Пример 2:
pretty_print(1, {{1,2,3}, {4,5,6}}, {})
{
{1,2,3},
{4,5,6}
}
Пример 3:
pretty_print(1, {"Euphoria", "Programming", "Language"}, {2})
{
"Euphoria",
"Programming",
"Language"
}
Пример 4:
puts(1, "word_list = ") -- курсор остановится в колонке 13
pretty_print(1,
{{"Euphoria", 8, 5.3},
{"Programming", 11, -2.9},
{"Language", 8, 9.8}},
{2, 4, 13, 78, "%03d", "%.3f"}) -- первые 6 из 8 подрежимов
word_list = {
{
"Euphoria",
008,
5.300
},
{
"Programming",
011,
-2.900
},
{
"Language",
008,
9.800
}
}
См. также:
?, print, puts, printf
Синтаксис:
print(fn, x)
Описание:
Выводит в файл или на устройство fn объект x со скобками { , , , }, чтобы показать (сохранить) его структуру.
Пример 1:
print(1, "ABC") -- выводится: {65, 66, 67}
puts(1, "ABC") -- выводится: ABC
Пример 2:
print(1, repeat({10,20}, 3))
-- выводится: {{10,20},{10,20},{10,20}}
См. также:
?, pretty_print, puts, printf, get
printf
Синтаксис:
printf(fn, st, x)
Описание:
Выводит x в файл или на устройство fn, используя строку формата st. Если x является рядом, то очередные элементы формата из st применяются к соответствующим элементам ряда x. Если x является атомом, тогда обычно st будет содержать единственный элемент формата, который будет применён к x, однако, если элементов формата несколько, каждый элемент формата будет применён к единственной величине x. Таким образом, printf() всегда ожидает точно 3 аргумента. Только длина последнего аргумента, содержащего выводимые величины, будет изменяться. Изменения могут происходить и в строке формата. Основные форматы:
%d - печатать атом как десятичное целое
%x - печатать атом как шестнадцатеричное целое. Отрицательные числа печатаются как двоичное дополнение, т.е. -1 будет выведено как FFFFFFFF
%o - печатать атом как восьмеричное целое
%s - печатать ряд как строку символов, или печатать атом как отдельный символ
%e - печатать атом как число с плавающей точкой в экспоненциальной форме
%f - печатать атом как число с плавающей точкой в форме с десятичной точкой, а не в экспоненциальной
%g - печатать атом как число с плавающей точкой в наиболее подходящем формате, исходя из величины числа
%% - печатать собственно символ '%'
К основным форматам может быть добавлена ширина полей, т.е. %5d, %8.2f, %10.4s. Число перед десятичной точкой даёт минимальную ширину поля. Число после десятичной точки даёт число точных знаков.
Если ширина поля отрицательная, т.е. %-5d, тогда величина будет выравниваться по левой границе поля внутри поля. Обычно выравнивание производится по правой границе поля. Если ширина поля начинается с нуля, т.е. %08d, поле будет спереди заполняться до заданной ширины нулями. Если ширина поля предваряется знаком '+', т.е. %+7d, тогда положительные величины будут начинаться со знака '+'.
Комментарии:
Обратите внимание на следующую общую ошибку:
name="John Smith"
printf(1, "%s", name) -- ошибка!
В этом случае будет напечатан только первый символ имени, J, так как каждый из символов имени форматируется как отдельная величина. Чтобы вывести всё имя, вы должны вместо предыдущей дать команду:
name="John Smith"
printf(1, "%s", {name}) -- правильно
Теперь третий аргумент, поданный в printf(), является одноэлементным рядом, содержащим всё то, что должно быть отформатировано.
Пример 1:
rate = 7.875
printf(myfile, "The interest rate is: %8.2f\n", rate)
The interest rate is: 7.88
Пример 2:
name="John Smith"
score=97
printf(1, "%15s, %5d\n", {name, score})
John Smith, 97
Пример 3:
printf(1, "%-10.4s $ %s", {"ABCDEFGHIJKLMNOP", "XXX"})
ABCD $ XXX
Пример 4:
printf(1, "%d %e %f %g", 7.75) -- одна и та же величина в разных форматах
7 7.750000e+000 7.750000 7.75
См. также:
sprintf, puts, open
profile
Синтаксис:
profile(i)
Описание:
Включает или выключает режим профилирования во время исполнения программы. Команда действует в отношении обоих профилей, профиля команд (операций) и профиля времени. Если i равно 1, профилирование включается, генерируется отчёт. Если i равно 0, профилирование выключается, отчёт не создаётся.
Комментарии:
По командам "with profile" ("с профилем операций") или "with profile_time" ("с профилем времени") профилирование включается автоматически. Используйте profile(0), чтобы выключить его. Используйте затем profile(1) для включения профилирования именно в том месте программы, начиная с которого оно вам необходимо.
Пример 1:
with profile_time
profile(0)
...
procedure slow_routine()
profile(1)
...
profile(0)
end procedure
См. также:
trace, profiling, special top-level statements
prompt_number
Синтаксис:
include get.e
a = prompt_number(st, s)
Описание:
Приглашает пользователя ввести число с клавиатуры. st является текстовой строкой с приглашением, которая отображается на экране. s является рядом, состоящим из двух величин {меньшая, большая}, определяющих диапазон величин, которые пользователь вправе ввести. Если пользователь выйдет из этого диапазона допустимых значений, приглашение повторяется. s может быть пустым рядом, {}, если ограничений нет.
Комментарии:
Если данная процедура слишком проста и не отвечает вашим потребностям, не стесняйтесь скопировать её и затем сделать из неё свою собственную более специализированную версию.
Пример 1:
age = prompt_number("Сколько вам лет? ", {0, 150})
Пример 2:
t = prompt_number("Введите температуру по Цельсию:\n", {})
См. также:
get, prompt_string
prompt_string
Синтаксис:
include get.e
s = prompt_string(st)
Описание:
Приглашает пользователя ввести строку текста. st включает в себя текст приглашения, отображаемый на экране. Строка, которую ввёл пользователь, размещается в ряде s за вычетом любых служебных символов перевода строки и возврата каретки.