Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
skill / Лбы skill / Лекция3_м.doc
Скачиваний:
60
Добавлен:
05.06.2015
Размер:
130.56 Кб
Скачать

Форматированный вывод.

Вы можете предопределить формат вывода с помощью соответствующего поля спецификации. Например, %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

Соседние файлы в папке Лбы skill