четверг, 12 сентября 2013 г.

Логические функции в Autolisp.


Ну вот мы и приступаем к  освоению логических функций.  
И первая функция  =, которая проверяет равенство аргументов. Может использоваться для проверки не только чисел, но и строк.  (= < аргумент 1> [<аргумент2>]…..N). Может оперировать любыми типами аргументов.    Возвращаемое значения : логическое Т (истина), если аргументы совпали и nil, если не совпали.
Если задан только один аргумент вернет Т.  Если количество аргументов   более 2, то при совпадении   значений вернет  Т, а если хотя бы один из аргументов отличается, вернет  nil.
Логические функции ЛИСП  в редакторе.
Примеры:
( =  16.0  16  16.000) – вернет Т, так как значение всех аргументов совпадает. Несмотря на то, что два аргумента при этом имеет вещественное значение.
 (=  2) –вернет Т
( = 2 10) – вернет nil.
( =  женя женя) – вернет Т.
Следующая функция  /=, которая проверяет неравенство всех аргументов.  Таже используется для чисел или строк.  Тип аргументов любые . Такой же синтаксис, как и у =. Возвращает  Т, только, если аргументы не равны и nil, если равны.
Примеры:
(/= 10) вернет Т
( /= 11 11.0) вернет nil
(/= 10 11) вернет Т
Следующая функция  <.  Проверяет аргументы по возрастанию. Проверяет слева на право.
   (<   < аргумент 1> [<аргумент2>]…..N. Тип возвращаемого  значения  только логическое.  Тип аргумента  числа, как целые так и вещественные, а также строки.
Примеры:
( <  20) вернет Т, так как один аргумент
(< -20  0) вернет Т, так как аргументы расположены по возрастанию.    
(< 1 1 2) вернет nil, так как два первых аргумента равны.
Функция  <=. Проверяет расположение аргументов не по убыванию.  Тип аргумента вещественные и целые числа, а так же строки.  Тип возвращаемого значения логическое.  Возвращает  Т,  если аргументы расположены не по убыванию   и nil – в любом другом случае.
Примеры:
( <= -2) вернет Т, так как один аргумент
(<= -50 0) вернет  Т
(<=  1  1 2) вернет Т, сравните с примерами с функцией <. Возвращает Т несмотря на то, что первые два аргумента равны.
Функция  >.  Проверяет расположение аргументов по убыванию. Как и в предыдущих случаях, проверка идет слева на право.   Тип аргументов, как целые числа так и вещественные, а так же, как обычно строки.
Примеры:
(> 10) вернет Т, так как один аргумент.
(> -  5  0) вернет nil, так как аргументы расположены по возрастанию, а не по убыванию
( > 1 1 2) вернет nill , так как аргументы расположены не по убыванию.
Функция  and.  Похожа с операцией логического И.  Тип аргумента любые.    Возвращает значение Т, если значение всех аргументов истина. И nil во всех остальных случаях.  Если аргументы не заданы  или только один аргумент, то вернет Т.
Примеры:
(and 20)  вернет  Т, так как один аргумент.
(and nil T  T )  вернет  nil, так как один из аргументов равен nil
(and  10 T T ) вернет Т, так как все аргументы равны истине.
Функция  or  выполняет логическую операцию или. Работает с любыми типами аргументов.   Тип возвращаемого значения Т, если хотя бы один аргумент имеет истинное значения и nil, если все аргументы имеют ложное значения.
Примеры:
(or  5) вернет Т
(or  nil T T) вернет  Т (сравните с функцией  and)
(or 10 T T)  вернет  Т.
Функция null выполняет поверку аргумента на nil . ( null <аргумент>). Тип аргумента может иметь любое значение.  Возвращает Т, если аргумент равен nil, и nil, если равен.
Обычно применяется для проверки  не пустого списка.
Примеры:
(null  Т) – возвращает   nil, так как  список не  пуст
 (null nil) – возвращает  Т, так как есть nil
(null  () )  - возвращает Т, та как список пуст.
        Функция minusp, предназначена для проверки числа на отрицательность. Тип аргумента целое или вещественное число. Возвращает значение Т, если число отрицательно, и nil – в  случае если число положительное.
Примеры:
(minusp 10) – возвращает nil, так как число положительное
(minusp – 5.1) – вернет Т, так как число отрицательное.    
Функция zerop, предназначена для проверки числа на предмет равенства нулю.  Тип аргумента целое или вещественное число. Вернет Т, если аргумент равен нулю и nil, если не равен.
Примеры:
(zerop 0) – вернет  Т.
(zerop  10) – вернет nil, причем такой же будет результат если аргумент будет равен – 10
Функция vl-consp, предназначена для проверки аргумента на предмет не является ли он пустым списком точечной парой или точечным списком.
Примеры:
(vl-consp  (1  2  3)) вернет Т
(vl-consp ())  вернет nil  -список пуст.
Функция Listp – очень важная функция в языке AutoLisp, предназначена для построения споисков, а также для проверки является ли аргумент списком. Тип аргумента любой. Вернет Т, если аргумент является списком и nil, если нет.
Примеры:
(Listp 10) –вернет nil
(listp  (1 2 3)) –вернет Т
(listp nil) – вернет Т, сам не знаю почему.
И последняя функция boundp, предназначена для проверки  присвоено ли  значение переменной.
Тоже важная функция. Тип аргумента любой.   Возвращает Т, если значение символу присвоено и nil, если значение не задано или равно nil.
Как вы поняли,  логические функция в ЛИСП предназначены для проверки условий. В принципе программирование на этом и строится.   Если вы будете создавать сложные программы с циклами, то знать логические функции необходимо. В следующем посту речь как раз и пойдет о циклах.
        

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

Отправить комментарий