Мониторинг обменных курсов валют
18c0693f

Логические функции. Управляющие структуры


ЛЕКЦИЯ 4.

Логические функции. Управляющие структуры. Простые функции печати. PROGN.


Содержание

4.1 MEMBER.

    Функция проверяет, находится ли первый аргумент внутри списка, представленного вторым аргументом.

    Если элемента в списке нет, MEMBER возвращает nil.

    Функция MEMBER имеет два аргумента:

  • Первый аргумент - это s-выражение,

  • Второй - обязательно список.

( MEMBER < s-выражение > < список > )

    * ( member ' b ' ( c d b a ) )

    ( b a )


    Если элемент в списке есть, то MEMBER возвращает хвост второго аргумента, начинающийся с этого элемента.

Таким образом member в качестве истины возвращает не Т , а величину не-NIL.

В Лиспе для предикатов значение не-NIL означает истину.

    * ( member ' с ' ( a b ( c ) ) )

    NIL


Т.к. элемент находится
не на том уровне.

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

Для объединения предикатов в сложные выражения и для выделения элементов - NIL в Лиспе

используются логические функции

,

и

.

4.2.1 NOT.

            Функция NOT берет один аргумент и возвращает значение, противоположное значению аргумента. Если аргумент NIL,
            NOT возвращает Т. Если аргумент любое значение не-NIL,
            NOT возвращает NIL.


    NOT имеет один аргумент, который может быть
    любым s-выражением (не только предикатом).

( NOT < s-выражение >)

Примеры:

          * ( not ( zerop 1 ) )
          T


          * ( not nil )

          T


          * ( not ' ( a b c ) )

          NIL



4.2.2 OR.

        Логическая функция OR берет один или несколько аргументов. Она выполняет эти аргументы слева направо и возвращает значение первого аргумента, который не NIL.Если все аргументы OR имеют значение NIL, то OR возвращает NIL.


    В OR , аналогично NOT, аргументами могут быть любые выражения.

( OR < arg-1 >< arg-2 >< arg-3 > . . . )









      * ( print ( cdr row ) )

      ( x x ) -
      печать


      ( x x ) -
      значение



        * ( cons 'o (

        print ( cdr row ) ) )

        ( x x ) -
        печать


        ( o x x ) -
        значение

<



br>



4.5 PROGN, PROG1, PROG2.



Предложения PROGN, PROG1, PROG2 позволяют работать с несколькими вычисляемыми формами:

( PROGN < форма-1 > < форма-2 > ...... < форма-n >)

( PROG1 < форма-1 > < форма-2 > ...... < форма-n >)

( PROG2 < форма-1 > < форма-2 > ...... < форма-n >)



У этих предложений переменное число аргументов, которые они последовательно вычисляют:





В Лиспе часто используется так называемый неявный PROGN , т.е вычисляется последовательность форм, а в качестве значения берется значение последней формы.



4.5.1 Определение функций с использованием неявного PROGN.

При определении функций может использоваться неявный PROGN .



( defun
< имя функции >
< список параметров >
< форма1 форма2 .... формаN > )


Пример:

Определим функцию, которая печатает список, вводит два числа, и печатает их сумму.







    ( defun print-sum ( ) ; функция без аргументов

    ( print ' ( type two number ) )

    ( print ( + ( read ) ( read ) ) ) )





    *( print-sum )

    ( type two number ) 3 4

    7

    7





Самый выгодный курс обмена валюты