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

Лекция 2.

Организация данных. Символы. Строки.

Операторы доступа в SKILL

Некоторые операторы доступа имеют характерный тип (вид). То есть синтаксис доступа к различным типам данных может быть одинаковым.

Оператор “стрелка” (->)

Применяется для доступа к свойствам ассоциативных таблиц, списков, структур, определяемых пользователем и др. Свойства, к которым осуществляется доступ этим оператором, всегда должны быть символами, значения которых могут быть любым типом данных SKILL.

Оператор “волнистая стрелка” (~>)

Этот оператор является обобщением обычной стрелки. Кроме доступа непосредственно к объекту с помощью этого оператора также можно осуществить доступ к списку подобных объектов. В этом случае оператор «стрелка» будет применён к каждому элементу списка.

Доступ к массиву( матрице) [ ]

Данный синтаксис может быть использован для доступа к:

  • элементам матрицы

  • паре значений в ассоциативной таблице.

Символы (Symbol)

В SKILL символы играют ту же роль, что и переменные в С. Часто термины “символ” и “переменная” подменяют друг друга; при этом символы в SKILL могут быть использованы и для других целей. Каждый символ обладает следующими составляющими:

  • имя

  • значение

  • функциональное выражение

  • список свойств.

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

Создание символов

Система создает символ всякий раз когда впервые встречает текстовую ссылку на символ. Когда система создает новый символ, его значение задается как unbound. Обычно нет необходимости явно создавать символы, но в некоторых случаях это необходимо.( Например, задать значение по умолчанию)

Создание символов с заданным именем с помощью функции gensym():

Система определяет индекс (указатель), прикрепляемый к базовому (заданному) имени для того, чтобы убедиться, что символ новый.

gensym([ S_arg ])

Возвращает новый символ исходя из входного аргумента. Печатное имя нового символа получается в результате объединения печатного представления аргумента, или “G”, если аргумент не задан, и десятичного представления числа. Возвращаемый символ уникален, то есть не существует в момент вызова функции. Значение символа по умолчанию unbound.

Пример:

gensym() => G5

gensym(“test”) => test6

test7=10

gensym(“test”) => test8 так как test7 уже существует.

num - это символ.

num = 5 ; = - знак присвоения.

=> 5 ; возвращается значение 5.

‘ - обращение к знаковому изображению символа,

а = ‘num ;возвращает не 5, а num

a => num

Создание символов из нескольких строк (concat)

concat(Sx_arg1[ Sx_arg2 ... ])

Складывает строки, символы или целые числа в единый символ. Эта функция полезна для преобразования строк в символы. Для складывания нескольких строк в единую строку используйте функцию strcat. Имя символа ограничено 255 знаками.

Символьные функции eq, memq, caseq и др. работают гораздо быстрее, чем их аналоги member, case, equal, так как они сравнивают указатели, а не данные. Для увеличения быстродействия вы можете использовать функцию concat для преобразования строки в символ перед выполнением memq на больших списках.

Sx_arg1 – Строка, символ или целое число, предназначенное для сложения.

Sx_arg2 – Ни одной или более строк, символов, целых чисел для сложения.

Пример

concat("string") => string

concat("ab" 123 'xy) => ab123xy

Печатное имя символа

Имена символов могут содержать знаки алфавита в обоих регистрах и цифры от 0 до 9 (a-z, A-Z, 0-9), знак подчёркивания (_), знак вопроса (?). Если первым знаком в имени символа является цифра, перед ней должен стоять обратный слэш (\). Можно также использовать другие печатные символы, если перед ними ставить обратный слэш.

Получение печатного имени символа

Для получения печатного имени символа необходимо использовать функцию get_name. Эта функция наиболее полезна в программах, работающих с переменными, значение которых есть символ. Например:

location = 'U235

get_pname( location ) => "U235"

Значение символа

Значение символа может быть любого типа, включая тип символ.

Придание символу значения

Чтобы придать символу значение используйте оператор (=). Оператору (=) соответствует функция setq. Следующие выражения эквивалентны:

U235 = 100

setq( U235 100 )

setq(s_variableName g_newValueExp)

setq(s_variableName = g_newValue)

Задает новое значение переменной. Символ s_variableName связан со значением g_newValueExp.

s_variableNameимя переменной

g_newValueExpвычисляемое выражение, присваиваемое переменной s_variableName.

Пример

x = 5 => 5

Присвоение значения 5 переменной x.

setq( x 5 ) => 5

Аналогично.

y = 'a => a

Присвоение символа a переменной y.

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