Пример 4. Чтение символа из файла и вывод его на экран дисплея.
Domains
file=infile
predicates
position
Goal
write(" С каким файлом Вы хотите работать ? \n "),
readln(Fname), openread(infile,Fname), position.
Clauses
position:- readdevice(keyboard), nl,write("Введите номер позиции: "),
readreal(X), readdevice(infile), filepos(infile,X,0),
readchar(Y), write(" Здесь записан символ:",Y), position.
Форматный вывод.
writef(Format,Arg1,...,Argn) - подобен write, но осуществляет форматированный вывод в соответствии с параметром Format, который представляется в виде %p
Возможные значения p :
d - нормальное десятичное число ( символы и целые числа);
u - беззнаковое целое;
s - строка (атомы или строки);
c - символ (символы и целые);
g - вещественное в самом коротком формате;
e - вещественное в экспоненциальном представлении;
f - вещественное в десятичном представлении ( задается по умолчанию);
x - шестнадцатиричное число (символы и целые числа).
Ввод и вывод чисел и символов.
Пример 5. Вычисление куба числа, вводимого с терминала.
Domains
i=integer
Predicates
process(i)
cube
Clauses
cube:- write("Next number,please:"), readint(X), process(X).
process(N):- C=N*N*N, write("Cube",N,"is equal",C,"\n"), cube.
Goal
cube.
Пример 6. Считывание целых чисел с терминала и занесение их в список
Domains
list=integer*
Predicates
readlist(list)
Goal
readlist(TheList),write("\n The list is: ", TheList).
Clauses
readlist([H|T]):-readint(H),!,readlist(T). readlist([]).
После набора каждого целого числа нужно нажать ENTER. Завершение программы происходит по любому символу, который не является целым числом, плюс ENTER.
Пример 7. Вывод списков
Domains
i_list=integer*
n_list=symbol*
Predicates
writelist(i_list)
writelist(n_list)
Clauses
writelist([]).
writelist([H|T]):- write(H," "),writelist(T).
Обработка строк.
Стандартные предикаты обработки строк в Турбо-Прологе:
1.concat(Str1,Str2,Str1_2) - утверждает, что Str1_2 - это объединение строк Str1 и Str2; при этом по крайней мере два параметра должны быть определены заранее.
2.frontchar(Str1_2,Char,Str2) - работает в соответствии с уравнением:
Str1_2 = Char U Str2
3.frontstr(Length,InpString,StartString,RestString) - назначает первые Length символов строки InpString в строку StartString, остальные - в строку RestString.
4.fronttoken(String,Token,RestString)
String - входная строка;
Token - первый атом строки (последовательность символов до пробела);
RestString - остаток строки.
5.str_len(String,Length) - определяет длину строки.
Пример 8. Преобразование строки в список символов.
Domains
charlist=char*
Predicates
name(string,charlist)
Clauses
name(" ",[]).
name(S,[H|T]):-frontchar(S,H,S1), name(S1,T).
Дата добавления: 2016-05-05; просмотров: 523;