BigEdu.ru

Функції рядків

Функції рядків призначені для роботи з текстами. Вони забезпечують виконання великої кількості операцій над текстовими данними — порівняння, пошуку та перетворення P - імен символів та чисел.

1. UNPACK . Повертає список символів, P - імена кожного з яких складаються з символів атома . Якщо не є атомом, повертається NIL.

$ (UNPACK ‘abcde) $ (UNPACK 216) $ (SETQ *PRINT-BASE 16*)

(a b c d e) (\2 \1 \6) $ (UNPACK 216)

(\0 \D \8)

2. PACK . Повертає символ, P - ім’я якого складіється зі счеплених P - імен атомів у списку . Для визначення P - імен чисел використову- ється поточна система числення. Функція PACK завжди повертає символ, навіть якщо P - ім‘я складається тільки з однозначних чисел.

$ (PACK ‘(a b c d e) $ (PACK ‘(\7 \3 \1) $ (PACK ‘(Q \7 \A \1))

abcde |731| Q7A1

3. PACK* ... . Повертає символ, P-ім’я якого складається зі счеплених P-імен атомів. Ця функція є вузькою версією PACK, оскільки вона працює не зі списком атомів, а з будь-якою кількістю атомів.

$ (PACK* ‘a ‘b ‘c) $ (PACK 4 ‘QW ‘T)

ABC |4QWT|

4. CHAR . Якщо — символ або число, а — невід’ємне ціле число, функція CHAR повертає символ, P - ім’я якого є n-ий символ P - імені , причому відлік символів починається з 0. Функція повертає NIL якщо не ноль і не додатнє ціле число, або якщо P - ім’я атома містить меньш ніж n символів.

(DEFUN CHAR (atm n) $ (CHAR ‘ABCDE 3) $ (CHAR 12345 0)

((ATOM atm) D \1

(NTH n (UNPACK atm)) ) )

5. SUBSTRING . Якщо — символ або число, та — невід’ємні цілі, nЈm, то функція SUBSTRING повертає символ, P - ім’я якого складається з символів P - імен атома починаючи з n-ого до m-ого, причому відлік символів починається з 0. Якщо nЈ0, то вважається що n=0. Якщо m не вказано, або меньше за 0 чи більше за кількість символів в P - імені атома, m вважається рівним кількості символів в P - імені атома. Якщо n>m повертається NIL.

(DEFUN SUBSTRING (atm n m)

((AND (ATOM atm) (INTEGERP n))

((MINUSP n) (SUBSTRING atm 0 m))

(PACK (SUBLIST (UNPACK atm) n m))

$ (SUBSTRING ‘ABCDEFG 2 4) $ (SUBSTRING ‘ABCDEFG 3)

CDE DEFG

$ (SUBSTRING 123456 3) $ (SUBSTRING ‘ABCDEFG 0 3)

|456| ABCD

6. STRING , де = ‘123 ‘123)

NIL 3

7. STRING-UPCASE . Повертає символ, P - ім’я якого співпадає з P - іменем атома, але всі його літери перетворюються в великі. Якщо не є атомом, повертається NIL.

$ (STRING-UPCASE “Lisp Is A Language”) $ (STRING-UPCASE ‘(a s d))

|LISP IS A LANGUAGE| NIL

8. STRING-DOWNCASE . Повертає символ, P - ім’я якого співпадає з P - іменем атома, але всі його літери перетворюються в маленькі. Якщо не є атомом, повертається NIL.

$ (string-upcase |This is A TEXT|) $ (string-downcase |This is A TEXT|)

|THIS IS A TEXT| |this is a text|

$ (STRING-UPCASE ‘i) $ (STRING-DOWNCASE ‘I)

I \i

9. FINDSTRING . Повертає номер позиції першого входження P - імені атома1 в P - ім’я атома2. Якщо - ноль або додатнє ціле, пошук починається з n-ого символа атома2. Якщо P - ім’я атома1 не знайдено, повертається NIL.

$ (FINDSTRING ‘BC ‘ABCDEFG) (FINDSTRING ‘abc ‘abdeabcde)

1 4

10. PRINT-LENGTH . Повертає кількість символів в P - імені атома з урахуванням значень контрольних змінних *PRINT-BASE* та *PRINT-ESCAPE*.

$ (DEFUN PRINT-LENGTH (atm) $ (PRINT-LENGTH ‘Mulisp)

((ATOM atm) (LENGTH (UNPACK atm))) 6

$ (PRINT-LENGTH -156) $ (PRINT-LENGTH NIL)

4 3

Приклади

1. Написати функцію, яка для заданого атома знаходить максимальну кількість літер, яка в ньому йде підряд. Повернути конс, який складається з літери та числа. Наприклад, для атома a22eeerty повернути (e . 3).

(DEFUN symmax (atm) $ (symmax ‘a22eeerty)

((NOT (ATOM atm)) NIL) (e . 3)

(SETQ lst (UNPACK atm) endel (ASCII 0) endct 0) $ (symmax ‘nil)

(LOOP (n . 1)

((NULL lst)) $ (symmax 1222334)

(SETQ el (CAR lst) ct 0) (\2 . 3 )

(LOOP

((NOT (EQL (CAR lst) el)))

(POP lst)

(INCQ ct) )

(IF (> ct endct) (SETQ endct ct endel el)) )

(CONS endel endct) )

Робота з файлами

По замовченню за пристрій потокового вводу (CIS - Current Input Stream) береться консоль.1. 1. Для читання даних з вхідного потоку використовують функцію READ. Після виконання команди (SETQ a (READ)) ви повинні ввести з консолі вираз, який буде прочитано та присвоєно змінній а. При цьому якщо буде введено декілька об’єктів, то змінній а буде присвоєно перший об’єкт. Наприклад, якщо ви введете: as bf gh, то змінна a прийме значення as. Якщо Ви хочете ввести список (складний об’єкт), то його необхідно вводити в круглих дужках: (as df gh).

2. 2. Функція (CLEAR-INPUT) чистить буфер вводу. В будь-якому випадку повертається NIL.

3. 3. Функція (READ-LINE) читає елементи з CIS поки не буде прочитано символ переходу на новий рядок (). Повертається символ, Р-ім’я якого складається з усіх прочитаних символів як ті були розташовані у вхідному рядку, окрім .

4. 4. Функція (READ-CHAR) читає наступний елемент з CIS та повертає його.

5. 5. Функція (UNREAD-CHAR) повертає в CIS останній прочитаний символ.

6. 6. Функція (LISTEN) повертає T якщо CIS не порожній, та NIL якщо ми дійшли до кінця файлу.

7. 7. Функції (OPEN-INPUT-FILE “”) та (CLOSE-INPUT-FILE “”) використовуються для відкриття та закриття файла для вводу.

8. 8. Функції (OPEN-OUTPUT-FILE “”) та (CLOSE-OUTPUT-FILE “”) відповідно відкривають та закривають файл для виводу інформації.

Приклади

1. Надрукувати кількість літер sym в файлі name.

(DEFUN f (name sym) (SETQ a (READ))

(SETQ c 0) (IF (EQL a sym) (INCQ c)) )

(OPEN-INPUT-FILE name) (CLOSE-INPUT-FILE name)

(LOOP c )

((NOT (LISTEN)))

2. Надрукувати файл в оберненому порядку, якщо його елементи є атомами.

(DEFUN rew (in out) (PUSH (READ) temp) )

(OPEN-INPUT-FILE in) (LOOP

(OPEN-OUTPUT-FILE out) ((EQL temp NIL))

(SETQ temp NIL) (WRITE (POP temp))

(LOOP (SPACES 1) )

((NOT (LISTEN))) (CLOSE-INPUT-FILE in)

(CLOSE-OUTPUT-FILE out) )

Завдання

1. Написати функцію (SRT ), яка сортує текстовий файл та виводить дані в файл .

2. Написати функції (PRNUM2 num) та (PRNUM16 num), які відповідно друкують введені десяткові числа в двійковому та шістнадцятковому представленні.

3. Згенерувати за даними числом n та символом y список (y yy yyy yyyy .... yyyyyyyy. Кількість літер s в останньому елементі списку дорівнює n.

Відповіді

1. (DEFUN appl (lst1 lst2)

((NULL lst1) (append lst3 lst2))

((NULL lst2) (append lst3 lst1))

((STRING (y yy yyy yyyy yyyyy yyyyyy yyyyyyy)

(DEFUN m1 (sym n list)

((ZEROP n) NIL)

(CONS (APPEND sym list) (m1 sym (- n 1) (PACK* sym list))) )

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать
Рефераты по информатике Функції рядків призначені для роботи з текстами. Вони забезпечують виконання великої кількості операцій над текстовими данними — порівняння, пошуку
Оценок: 573 (Средняя 5 из 5)

Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.

© 2016 - 2022 BigEdu.ru