КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Clausesreadlist([H|T] :- readint(H) ,! , readlist(T). readlist [ ]).
Строки, символы и символические имена Под строкой понимается последовательность из нуля или нескольких символов. В Прологе такая последовательность используется для преобразования двух видов термов: символических имен и строк. Символическое имя – это неправильная последовательность букв, цифр и знака подчеркивания, начинающаяся с маленькой буквы (stol_stul,l1,m1). Символическое имя относится к типу symbol . Строка – это последовательность любых символов, заключенная в двойные кавычки (”stol”), строка относится к типу string. Символические имена можно использовать для именования объектов и отношений, а строки – только для названия объектов и значений их атрибутов. Символические имена и строки автоматически преобразуются друг в друга, и все предикаты, определенные для строки, могут быть применены и к символическим именам. Основное различие между ними в том, что символические имена хранятся в таблице в оперативной памяти и доступ к ним осуществляется быстрее, чем к строкам, обработка которых ведется посимвольно. Для ввода строк используется предикат readln(Str), для ввода символов – readchar(Ch), а для вывода любых термов – предикат write(…). Пример. Описания строк, символических имен и символов. Domains simvol=char simvol_imya=symbol str=string Пример. Применение предикатов ввода-вывода для различных типов данных. Goal write(”Введите символ ”), readchar(Ch), write(”Ch= ”,Ch, ” ”), nl, write(”Введите строку ”),readln(Str), write(”Str= ”,Str, ” ”), nl, write(”Введите символическое имя ”),readln(Sym), write(”Sym”, Sym, ” ”), nl. Встроенные предикаты для обработки строк:
Лексема - это последовательность символов, определяемая как: · имя в соответствии с синтаксисом Турбо-Пролога, · строчное представление числа, · отдельный символ (может быть пустым - пробел). Пример. Создать предикат, имеющий два аргумента, который будет преобразовывать строку в список символов. Первый аргумент - заданная строка, второй аргумент — список, состоящий из символов исходной строки. str_list("",[]). str_list(S,[H|T]):– frontchar(S,H,S1), str_list(S1,T). /* пустой строке соответствует пустой список */ /* H — первый символ строки S, S1 — остаток строки */ /* T — список, состоящий из символов, входящих в строку S1*/ Пример. Вычислить длину строки.
|