如何接受输入并将它们存储在prolog中

时间:2017-03-12 00:18:41

标签: prolog

我需要设计一个谓词,它以交互方式接受输入,以创建一个带有空类列表的新学生记录。另外,我需要通过检查studentID不在数据库中来检查学生是否还在系统中。

这是学生数据库

% name, studentId, course list
student(name(jane, [ann]), 5555, ['CS3230'] ). 

输出应该是这样的

?- addStudent.
Student last name: doe.
Student first name: [jim,k].
Student Id: 23123.
true. 

这是我的代码

addStudent :- write('Student last name: '),
          read(L),
          write('Student first name: '),
          read(F),
          write('Student ID: '),
          read(ID),
          assertz(student(name([L,F])),ID,_),
          not(member(ID,student)).

我收到错误:添加/ 3:未定义的程序:读取输入后断言(询问学生ID后) 我如何解决这个问题来处理我的代码?

1 个答案:

答案 0 :(得分:0)

在谓词addStudent中,调用您定义的中间谓词:

addStudent :-
[...]
read(ID),
insertStd(L,F,ID).

%Case where student exist, will return true and not get to the second predicate%
insertStd(L,F,ID) :- student(name(L,F),ID,_).

%Case where student do not exsist, will insert it to the fact database%
insertStd(L,F,ID) :- assertz(student(L,F),ID,[])).

祝其余的作业好运,这个怪异的作业中的问题变得越来越轻松!

编程范式的受害者