При первом способе ввод/вывод списка осуществляется операторами read(X), write(X), при этом список Х рассматривается как один терм. Так, например, программа
'прог':- write(' Введите список L '),nl,read(L),nl,
write(' Список L= '),
write(L),nl.
при целевом утверждении
? - 'прог'.
будет выполняться следующим образом (то, что подчеркнуто, вводится пользователем):
Введите список
[1,4,72,0].
Cписок L=[1,4,72,0].
Поэлементный ввод/вывод списка может быть организован с помощью рекурсивно определенных предикатов:
'ввод_списка'([X|T]):-write(' Введите элемент "),read(X),X\==кон,!,
'ввод_списка'(Т).
'ввод_списка'([]).
'вывод_списка'([]):- nl.
'вывод_списка'([H|T]):- write(H),tab(2),'вывод_списка'(Т).
Тогда при задании целевого утверждения
? - 'ввод_списка'(L),nl,write(' Список L '),nl,'вывод_списка'(L).
возникает следующий диалог:
Введите элемент 1.
Введите элемент 4.
Введите элемент 0.
Введите элемент ‘кон’.
список L
1 4 0
Здесь ‘кон’ - это терм, свидетельствующий о достижении конца списка. Не забывайте при вводе чисел ставить точку как признак конца терма.
|