Підпрограми, розгалуження і цикли. Логічні функції. Функції WHILE і IF.

 

У будь-якій мові програмування є засоби для створення підпрограм, циклів, розгалужень у програмах у залежності від результатів перевірки умов. Такі засоби є й в Автоліспі.

Підпрограма дозволяє описати деяку послідовність дій один раз, а використовувати її в різних місцях програми і навіть включати в інші програми, що значно спрощує програмування.

Для цих цілей в Автоліспі служить вже відома функція DEFUN. Опис деякої функції за допомогою DEFUN і можна вважати підпрограмою, а звертання до описаної раніше функції - викликом підпрограми. При звертанні на місце символічних аргументів в описі функції підставляються значення цих змінних. Наприклад, описана в Програмі 1 функція SINCOS(A) може розглядатися як підпрограма. А рядок (SINCOS 0.0), який зустрічається в якій-небудь програмі, є звертанням до цій підпрограми, причому аргумент А приймає значення 0.

Розгалуження в програмі організуються за допомогою функції IF:

 

(IF <умова> <функція1> [<функція2>])

Тут < умова> - такий вираз Автоліспа, який серед інших значень може в якійсь ситуації одержати значення NIL.

Функція IF обчислює значення умови і, якщо воно не NIL, те виконує < функцію1 >, інакше - виконує <функцію2>, якщо та присутня. Функція IF повертає результат виконання функції. Таким чином, функція IF відповідає керуючій структурі псевдокоду ЯКЩО - ТО - ІНАКШЕ.

Для запису умов найчастіше використовуються функції, що назвемо логічними. До них відносяться функції

= (дорівнює) < (менше) > (більше)

/= (не дорівнює) < = (менше або дорівнює)

> = (більше або дорівнює),

які дозволяють виконувати порівняння чисел або текстів, а також функції AND, OR, NOT, що забезпечують можливість будувати складні умови з простих.

Усі ці функції можуть повертати одне з двох значень: NIL ("ні", умова не виконується) або Т ("так", умова виконується).

Наприклад, функція " = " має вигляд:

(= <атом> <атом>...)

Тут як атоми можуть стояти або числа (як цілі, гак і речовинні), або текстові дані. Функція повертає Т, якщо всі атоми рівні між собою, інакше - NIL.

Функція "/=" визначена тільки для двох атомів.

Функція "<":

(< <атом> <атом>...)

Якщо кожен попередній атом менше наступного, то повертається Т, інакше - NIL.

Аналогічно визначаються інші функції порівняння. Для текстових констант поняття "менше" означає наступне: порівняння виконується по першій літері. "Меншим" вважається той символ, ASCII-код якого менше. Для літер алфавіту коди наростають за абеткою (окремо для заголовних, окремо для малих літер).

Функції AND, OR, NOT є функціями алгебри логіки.

(AND <вираз> ...)

Функція виконує операцію логічного “І” над списком виразів, тобто функція повертає NIL, якщо хоча б один вираз має значення NIL. Інакше повертається Т.

(OR <вираз> ...)

Виконується операція логічного “АБО”. Повертається Т, якщо хоча б один вираз має значення Т, інакше - NIL.

(NOT < вираз >)

Виконується логічна функція “НІ”. Якщо вираз має значення NIL, то повертається Т, у всіх інших випадках повертається NIL.

Приклади:

Нехай маються .наступні значення:

А = 5

В = "ТЕХТ1”

С = NIL

Тоді

(= А 5) повертає Т

(= А 5.0) - Т

(>= A 10) - NIL

(< У “ТЕХТ2") -Т

(AND А В С) - NIL

(OR А В С)-Т

(NOT З) - Т

(OR(= A5)(= A 10))-Т

Наведена нижче Програма 4 ілюструє розгалуження за умовою з використанням функції IF.








Дата добавления: 2016-11-02; просмотров: 603;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.