⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ans_183b.pro

📁 prolog,人工智能推理程序,运行环境prolog
💻 PRO
字号:
/*
   Turbo Prolog 2.0, Answer to Second Exercise on page 183.
   
   Copyright (c) 1986, 88 by Borland International, Inc

   Please note, we have added a KEY associated with each text string
   to make this example a bit more realistic.
*/
domains

  textlink = link(KEY,Text,TextLink) ; nil
  text = string
  KEY = string
  
predicates
  w_str(string)
  do(textlink)
  options(textlink)
  insert(KEY,string,textlink,textlink)
  showtext(textlink)
  showkey(KEY,textlink)
  do_choice(char,textlink,textlink)
  repeat

goal

  do(nil).

clauses

  do(Link):-
    makewindow(1,11,14," HYPER TEXT ",0,0,25,80,1,-1,"崭跃统"),
    repeat,
    clearwindow,
    makewindow(3,10,0,"",23,1,1,78),
    write(" Select your option by selecting first letter"),
    makewindow(2,10,12," Main Menu ",10,30,6,17,1,-1,"诳蕾某"),
    write("Add a new text\n"),
    write("Show all text\n"),
    write("Key text\n"),
    write("Exit program"),
    cursor(0,0),
    readchar(Choice),
    removewindow,
    removewindow,
    do_choice(Choice,Link,NewLink),
    do(NewLink).

  do_choice('a',nil,link(KEY,Text,nil)):-
    write("Please enter a key for text :"),nl,
    % Your options
    readln(KEY),KEY<>"",nl,nl,
    write("Please enter a line of text :"),nl,
    readln(Text).

  do_choice('a',Link,NewLink):-
    write("Please enter a key for text :"),nl,
    write("\nOptions are:\n"),
    options(Link),
    readln(KEY),KEY<>"",nl,nl,
    write("Please enter a line of text :"),nl,
    readln(Text),
    insert(KEY,Text,Link,NewLink).

  do_choice('s',Link,Link):-
    showtext(Link),
    readchar(_).

  do_choice('k',Link,Link):-
    write("enter key:"),nl,
    readln(Key),
    showkey(Key,Link),
    readchar(_).

  do_choice('e',_,_):-
    exit.

  insert(KEY,Text,nil,link(KEY,Text,nil)):-!.

  insert(KEY,Text,link(Old_id,OldText,Next),link(Old_id,Oldtext,NewNext)):-
    insert(KEY,Text,Next,NewNext).

  showtext(nil).
  showtext(link(KEY,Text,Next)):-
    write(KEY,"\n",Text),nl,nl,
    showtext(Next).

  showkey(KEY,link(KEY,Text,_)):-!,
    write(KEY,"\n",Text).
  showkey(KEY,link(_,_,Next)):-
    showkey(KEY,Next).
  showkey(KEY,_):-
    write(KEY," is an invalid key."),
    readchar(_).  

  repeat.
  repeat:-repeat.
  
  
w_str(""):-!.
w_str(Str):-
   fronttoken(Str,Sym,Rest),
   write(Sym),nl,
   w_str(Rest).
   
Options(link(_,Str,nil)):-!,
  w_str(Str).   
Options(link(_,Str,Link)):-!,
  w_str(Str),
  Options(Link).   
   
   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -