Форматированный вывод.
Вы можете предопределить формат вывода с помощью соответствующего поля спецификации. Например, %5d означает, что будет напечатано целое число, которое имеет ширину 5 позиций. Если число начинается с 0, то те позиции которые не заняты заполняются 0 вместо пробелов.
Форматы вывода:
|
Обозначение формата |
Тип аргумента |
Печать(prints) |
|
%d |
С фиксированной точкой |
Десятичное число |
|
%o |
С фиксированной точкой |
Восьмеричное число |
|
%x |
С фиксированной точкой |
Шестнадцатеричное число |
|
%f |
С плавающей точкой |
Формат [-]ddd.ddd |
|
%e |
С плавающей точкой |
Формат [-]d.ddde[-]ddd |
|
%g |
С плавающей точкой |
Число вида f или e, которое дает максимальную точность и занимает минимальное количество позиций |
|
%s |
Строка, символ |
Строка без кавычек или печатное имя символа |
|
%c |
Строка, символ |
один символ |
|
%n |
С фиксированной точкой, С плавающей точкой |
число |
|
%L |
список |
Тип данных по умолчанию |
printf( t_formatString [ g_arg1 ... ] ) => t
Форматированный вывод в poport.
Пример:
x = 197.9687 => 197.9687
printf("The test measures %10.2f.\n" x)
The test measures 197.97
fprintf( p_port t_formatString [ g_arg1 ... ] ) => t
Форматированный вывод в p_port(первый аргумент).
Пример:
p = outfile("power.out")
=> port:"power.out"
for(i 0 15 fprintf(p "%20d %-20d\n" 2**i 3**i))
=> t
close( p)
sprintf( {s_Var | nil } t_formatString [ g_arg1 ... ] ) => t_string
Форматированный вывод в строку.
Пример:
sprintf(s "Memorize %s number %d!" "transaction" 5)
=> "Memorize transaction number 5!"
s
=> "Memorize transaction number 5!"
p = outfile(sprintf(nil "test%d.out" 10))
=> port:"test10.out"
Ввод.
evalstring( t_string [ s_langMode ] ) => g_value | nil
Читает и вычисляет выражения, сохраненные в строке символов.
t_string- строка, содержащая Skill выражение, которое необходимо вычислить
s_langMode- данный аргумент должет быть типа символ. Доступные значения:
‘ils вычисляет строку в Skill++
‘il вычисляет строку в Skill, данное значение установлено по умолчанию
Возвращает вычисленное значение или nil если строка не прочитана.
Пример:
evalstring("1+2") => 3
The 1+2 infix notation is the same as (plus 1 2).
evalstring("cons('a '(b c))") => (a b c)
car '(1 2 3) => 1
loadstring( t_string [ s_langMode ] ) => t
Открывает строку для чтения, затем разделяет и выполняет выражения, хранящиеся в строке, как только функция load загрузит файл.
Замечание: Функция loadstring отличается от evalstring в двух случаях:
(1) использует модель lineread,
(2) всегда возвращает t, если вычисления успешны
Аргументы идентичны предыдущей функции
Пример:
loadstring "1+2" => t
loadstring "procedure( f(y) x=x+y )" => t
loadstring "x=10\n f 20\n f 30" => t
x => 60
errsetstring( t_string [ g_errprint ] [ s_langMode ] ) => l_value | nil
Читает и вычисляет выражения, находящиеся в строке символов. Функция подобна функции evalstring, за исключением того, что вызывает errset, чтобы обнаружить любую ошибку, которая может произойти во время вычислений.
Если произошла ошибка, то возвращается nil, в противном случае, возвращается список, содержащий значение вычисления. Обнаруженные ошибки сохраняются в errset.errset.
t_string- строка
g_errprint- метка для контроля за ошибками в выражении. Если значение t, то выражение будет проверяться на наличие ошибок. По умолчанию значение nil
s_langMode- данный аргумент должет быть типа символ. Доступные значения:
‘ils вычисляет строку в Skill++
‘il вычисляет строку в Skill, данное значение установлено по умолчанию
Пример:
errsetstring("1+2") => (3)
errsetstring("1+'a") => nil
Returns nil because an error occurred.
errsetstring("1+'a" t) => nil
Prints out error message:
*Error* plus: can't handle (1+a)...
load( t_fileName [ t_password ] ) => t
Открывает файл, неоднократно вызывает функцию lineread для чтения в файл. Сразу же после прочтения вычисляет каждую форму. Использует расширение файла для определения модели языка (.il для SKILL и .ils для SKILL).
Закрывает файл, когда достигнут конец файла. Если не обнаружены ошибки, файл читается спокойно. Если load прервана нажатием клавиши Control-c, функция пропускает остаток загруженного файла.
t_fileName – имя файла, который необходимо загрузить
t_password – пароль, если файл зашифрованный
Возвращает t, если файл загружен успешно.
Пример:
load( "testfns.il")
loadi( t_fileName [ t_password ] ) => t
В отличии от функции load, функция loadi игнорирует ошибки, обнаруженные во время загрузки. Прежде чем остановиться, loadi печатает сообщение, указывая причину ошибки, и продолжает загрузку пока не дойдет до конца файла.
Во всем остальном loadi подобна функции load.
lineread( [ p_inputPort ] ) => t | nil | l_results
Преобразует строку входящего порта в список, с которым вы можете в дальнейшем работать. Понимает синтаксис SKILL и SKILL++.
Читает только одну строку вводимой информации, пока открыты скобки или вычислены все аргументы операторов.
p_inputPort- входной порт, по умолчанию piport
возвращает:
t- если следующая строка прочитана в пустую строку
nil- если входной порт находится в конце файла
l_results- в противном случае возвращается прочитанный список объектов
Пример:
lineread(piport) ; Reads in the next input expression
f 1 2 + ; First input line of the file being read
