home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 01 / tracer / t.pro < prev    next >
Encoding:
Prolog Source  |  1988-11-01  |  3.0 KB  |  105 lines

  1.  
  2. /* Testprogramm zur Demonstration des TRACER-Programmes  */
  3. /*                F A K U L T                            */
  4.  
  5.  
  6. DOMAINS
  7.   backtracking     = integer
  8.   praedikat        = string
  9.   uhrzeit          = integer
  10.   verbrauchte_zeit = integer
  11.   x,y = integer
  12.  
  13.  
  14. DATABASE
  15.    zeiten(backtracking,praedikat,uhrzeit,verbrauchte_zeit)
  16.   /* Leer !!! */
  17.  
  18.  
  19. PREDICATES
  20.    start
  21.    vorher(praedikat)
  22.    nachher(praedikat)
  23.    ergebnisse
  24.   fakult(x,y)
  25.   los
  26.   ton(x)
  27.  
  28.  
  29. GOAL
  30.   consult("DATBANK.ZEI"),
  31.   time(0,0,0,0),
  32.   start,
  33.   makewindow(2,11,12," Turbo Prolog - Tracer ",0,0,25,80),
  34.   ergebnisse.
  35. CLAUSES
  36.   start:-
  37.          vorher(los),los,nachher(los).
  38.   start.
  39.  
  40.  
  41.  
  42. los:-
  43.   write("Beliebige Taste betätigen!"),readchar(_),nl,
  44.       vorher(fakult),  fakult(6,Ergebnis) ,nachher(fakult),
  45.   write(Ergebnis).
  46.  
  47. fakult(1,1).
  48. fakult(X,Rest) :-
  49.   X>0 ,
  50.   X1=X-1,
  51.   write("Beliebige Taste betätigen!"),readchar(_),nl,
  52.       vorher(ton),  ton(X1) ,nachher(ton),
  53.       vorher(fakult),  fakult(X1,FakultX1) ,nachher(fakult),
  54.   Rest=X*FakultX1.
  55.  
  56. ton(0).
  57. ton(M):-
  58.   M1=M-1,
  59.   beep,
  60.       vorher(ton),  ton(M1) ,nachher(ton).
  61.   vorher(Praedikat):-
  62.     zeiten(Backtracking,Praedikat,Uhrzeit,Verbrauchte_Zeit),
  63.     Backtracking>0,
  64.     Backtracking1 = Backtracking+1,
  65.     retract(zeiten(Backtracking,Praedikat,Uhrzeit,Verbrauchte_Zeit)),
  66.     assertz(zeiten(Backtracking1,Praedikat,Uhrzeit,Verbrauchte_Zeit)),!.
  67.   vorher(Praedikat):-
  68.     zeiten(Backtracking,Praedikat,_,Verbrauchte_Zeit),
  69.     Backtracking=0,
  70.     time(Hours,Minutes,Seconds,Hundreds),
  71.     Uhrzeit_Neu=Hundreds+100*Seconds+6000*Minutes+360000*Hours,
  72.     retract(zeiten(0,Praedikat,_,Verbrauchte_Zeit)),
  73.     asserta(zeiten(1,Praedikat,Uhrzeit_Neu,Verbrauchte_Zeit)),!.
  74.   vorher(_) :-
  75.     nachher(_).
  76.   vorher(_).
  77.   nachher(Praedikat):-
  78.     zeiten(Backtracking,Praedikat,Uhrzeit,Verbrauchte_Zeit),
  79.     Backtracking>1,
  80.     Backtracking1 = Backtracking-1,
  81.     retract(zeiten(Backtracking,Praedikat,Uhrzeit,Verbrauchte_Zeit)),
  82.     assertz(zeiten(Backtracking1,Praedikat,Uhrzeit,Verbrauchte_Zeit)),!.
  83.   nachher(Praedikat):-
  84.     zeiten(1,Praedikat,Uhrzeit,Verbrauchte_Zeit),
  85.     time(Hours,Minutes,Seconds,Hundreds),
  86.     Uhrzeit_Neu=Hundreds+100*Seconds+6000*Minutes+360000*Hours,
  87.     Verbrauchte_Zeit_Neu=Verbrauchte_Zeit+Uhrzeit_Neu-Uhrzeit,
  88.     retract(zeiten(1,Praedikat,Uhrzeit,Verbrauchte_Zeit)),
  89.     assertz(zeiten(0,Praedikat,Uhrzeit_Neu,Verbrauchte_Zeit_Neu)),!.
  90.   ergebnisse:-
  91.     zeiten(Backtracking,Praedikat,Uhrzeit,Verbrauchte_Zeit),
  92.     Backtracking>0,
  93.     nachher(Praedikat),
  94.     retract(zeiten(Backtracking,Praedikat,Uhrzeit,Verbrauchte_Zeit)),
  95.     write(Backtracking," --> ",Praedikat," --> ",Verbrauchte_Zeit),nl,
  96.     fail.
  97.   ergebnisse :-
  98.     zeiten(Backtracking,Praedikat,Uhrzeit,Verbrauchte_Zeit),
  99.     Backtracking=0,
  100.     retract(zeiten(Backtracking,Praedikat,Uhrzeit,Verbrauchte_Zeit)),
  101.     write(Backtracking," --> ",Praedikat," --> ",Verbrauchte_Zeit),nl,
  102.     fail.
  103.   ergebnisse.
  104.  
  105.