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

📄 dbatest.pro

📁 prolog,人工智能推理程序,运行环境prolog
💻 PRO
字号:
project "register"
check_determ

DOMAINS
  dom = reference f(integer,char,real,string)
  DB_SELECTOR = dba


PREDICATES
  write_dba(INTEGER)
  read_dba
  rd(REF)
  count_dba(INTEGER)
  count(REF,INTEGER,INTEGER)
  replace_dba
  replace(REF)
  double_dba
  double(REF)
  half_dba
  half(REF)
  mixture


CLAUSES

/*----------------------------------------------------------------------------*/

  write_dba(0):-!.
  write_dba(N):-
	chain_inserta(dba,names,dom,f(1,'x',88.99,"Prolog Development system"),_),
	chain_insertz(dba,names,dom,f(1,'x',88.99,"Prolog Compiler"),_),
/*	writef("\nREF1=% REF2=%",REF1,REF2), */
	N1=N-1,
	write_dba(N1).

/*----------------------------------------------------------------------------*/

  read_dba:-
	db_chains(dba,CHAIN),
	chain_terms(dba,CHAIN,dom,_,_),
/*	write("\n",REF,"  -->>  ",TERM), */
	fail.
  read_dba:-
	db_chains(dba,CHAIN),
	chain_first(dba,CHAIN,REF),
	rd(REF),
	fail.
  read_dba.

  rd(REF):-
	ref_term(dba,dom,REF,_),fail.
  rd(REF):-
	chain_next(dba,REF,NEXT),!,
	rd(NEXT).
  rd(_).

/*----------------------------------------------------------------------------*/

  replace_dba:-
	chain_first(dba,names,REF),
	replace(REF).

  replace(REF):-
	term_replace(dba,dom,REF,f(1,'x',88.99,"Prolog Toolbox")),
	chain_next(dba,REF,NN),
	chain_next(dba,NN,NEXT),!,
	replace(NEXT).
  replace(_).

/*----------------------------------------------------------------------------*/

  half_dba:-
	chain_last(dba,names,REF),
	half(REF).

  half(REF):-
	chain_prev(dba,REF,PP),
	chain_prev(dba,PP,PREV),!,
	term_delete(dba,names,REF),
	half(PREV).
  half(_).

/*----------------------------------------------------------------------------*/

  double_dba:-
	chain_first(dba,names,REF),
	double(REF).

  double(REF):-
	chain_next(dba,REF,NEXT),!,
	chain_insertafter(dba,names,dom,REF,f(1,'x',88.99,"Users guide"),_),
	double(NEXT).
  double(_).

/*----------------------------------------------------------------------------*/

  count_dba(N):-
	chain_first(dba,names,REF),
	count(REF,1,N).

  count(REF,N,N2):-
	chain_next(dba,REF,NEXT),!,
	N1=N+1,
	count(NEXT,N1,N2).
  count(_,N,N).

/*----------------------------------------------------------------------------*/

  mixture:-
	write("\nReplace every second term:"),
	replace_dba,
	write("\nDouble the number of terms:"),
	double_dba,
	write("\nErase every second term:"),
	half_dba,
	write("\nUse db_instance for all terms:"),
	read_dba,
	count_dba(N),
	write("\nThere are now ",N," terms in the database"),
	db_flush(dba),
	db_statistics(dba,NoOfRecords,MemSize,DbaSize,FreeSize),
	writef("\nNoOfRecords=%, MemSize=%, DbaSize=%, Freesize=%",NoOfRecords,MemSize,DbaSize,FreeSize).

/*----------------------------------------------------------------------------*/

GOAL	write("\n\n\n\tTEST OF DATABASE SYSTEM\n\t***********************\n\n"),
	time(H1,M1,S1,D1),
	db_create(dba,"dd.dat",in_memory),
	write("\n\nWrite records in the database:"),
	write_dba(100),
	read_dba,
	mixture,

	write("\n\n\nCopy memory -> ems"),
	db_copy(dba,"dd.dat",in_ems),
	db_close(dba), db_delete("dd.dat",in_memory),
	db_open(dba,"dd.dat",in_ems),
	mixture,

	write("\n\n\nCopy ems -> file"),
	db_copy(dba,"dd.dat",in_file),
	db_close(dba), db_delete("dd.dat",in_ems),
	db_open(dba,"dd.dat",in_file),
	mixture,
	db_close(dba),

	write("\n\n\nOpen the database on file"),
	db_open(dba,"dd.dat",in_file),
	mixture,
	db_close(dba), /* db_delete("dd.dat",in_file), */

	time(H2,M2,S2,D2),
	Time=(D2-D1)+100.0*( (S2-S1) + 60.0*( (M2-M1) +60.0*(H2-H1) ) ),
	write("\n\nTime = ",Time,"/100 Sec" ),nl.

⌨️ 快捷键说明

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