пятница, 13 сентября 2013 г.

Функции для организации циклов в Autolisp.



В статье логические  функции, мы уже говорили о том, что   очень часто   логические функции используются для организации циклов. Ну а в этом посту речь пойдет о логических функциях, которые применяются  в циклах. А также о функция, которые и создают циклы.   Вообще цикл – это способ   организации операций  повторяющихся большое и не  очень   количество раз.
Функция  if,  выполняет  операцию, если то  иначе.  Например, если а больше б выполняется условие с , а если а меньше б выполняется условие д. Надеюсь вы поняли.  Работает с любыми  типами аргументов.  Синтаксис вида:
 ( if  <условие>  <выражение 1> <выражение 2>)  Возвращает вычисленное значение аргумента  выражение 1  если соблюдается  условие  или выражение 2, если условие не соблюдается.
Пример:
(if (<  x   y) 3  4)- возвращает 3, если x < y, и 4 если  x >y , либо равен  ему.
Функция progn используется  для объединения нескольких выражений в одно.  Часто используется вместе с функцией  if. Так как функция if может работать только с  двумя выражениями.  Синтаксис:   (progn  <выражение1>  <выражение2 > …….)   Аргумент может быть любого типа.
Пример:
(if  (>  a b)

(progn

(setg  c  ( - h 2))

(setg  h  (* 2 3))

); конец progn

(progn

(setg  c  ( - h 10)

(setg  h  (* 20 30))

); конец progn

); конец if
Функция cond, используется для объединения нескольких условий со своими выражениями   в одно.
Синтаксис:
(cond  [<условие 1><выражение 1><выражение2>….] [<условие2><выражение1><выражение2>…..]

…..)    
Итак, мы переходим к изучению самих функций для организации циклов.  Таких функций две (по крайне мере мы рассмотрим две из них)
И первая функция  while, которая выполняет множество операций по проверяемому условию. Синтаксис:
(while  <условие> <выражение 1> <выражение2> ……N).
Функция на каждом шаге вычисляет  условие и если оно истинно, то вычисляет выражение и так до тех пор, пока условие не станет ложным.  Поэтому, чтобы программа не зациклилась на каком то этапе условие должно стать ложным.
Пример:
( setg  I ( + '( 1)  '( 1) )

(while  (< i  10)

( setg  i (1+ i)))
Код с функцией while  в редакторе
Здесь функция    while ,будет прибавлять к I единицу пока та не станет равной 9, как только это произойдет   цикл закончится.  Знак апострофа ' всегда надо ставить перед  числовыми константами.     Сначала  мы  переменной  i присвоили  значение равной двум ( + 1  1). А далее запустили цикл, как только I стало  равным 10 условие стало ложным  и значению I было присвоено последние выражение, то есть  i  равное 9.
Вторая функция – это repeat, выполняющая цикл с фиксированным количеством повторений.
Синтаксис:
(repeat   <количество > ( выражение 1) …) Тип аргумента количество  - целое число, не вещественное.
  (repeat  '  (5)

(setg  h (1+ h))

);  конец  repeat.
Аргумент h будет увеличен на 1 пять раз.
Ну вот мы и рассмотрели функции для циклов, конечно не все и  не очень подробно, но достаточно для одного поста. Думаю будут еще статьи в которых мы более подробно рассмотрим на примерах функции repeat и    while . Тем более есть еще важные функции из этого контекста.
Изучайте AutoLISP – это интересно.  

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

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