85 lines
2.6 KiB
Prolog
85 lines
2.6 KiB
Prolog
/* PBAR.PRO -- sample Turbo Prolog program to be used with BAR.C
|
||
|
||
Copyright (c) 1987,88 Borland International. All rights reserved.
|
||
*/
|
||
|
||
database
|
||
barchart(integer)
|
||
chartbar(integer,integer,integer,integer,integer,integer)
|
||
|
||
global predicates
|
||
cbar(integer,integer,integer,integer,integer)-(i,i,i,i,i) language c
|
||
predicates
|
||
process(char)
|
||
repeat
|
||
myretractall
|
||
drawbar(integer,integer,integer,integer)
|
||
|
||
goal
|
||
graphics(1,0,0),
|
||
asserta(barchart(0)),
|
||
makewindow(1,1,1,"Bar",0,0,20,40),
|
||
makewindow(2,1,1,"",20,0,4,40),
|
||
repeat,
|
||
write("Press any key to continue"), readchar(_),
|
||
clearwindow,
|
||
makewindow(1,1,1,"Bar",0,0,20,40),
|
||
write("m. Make a bar Chart.\n"),
|
||
write("s. Save your bar Chart.\n"),
|
||
write("l. Load your bar Chart.\n"),
|
||
write("d. Draw your bar Chart.\n"),
|
||
write("e. End\nEnter Choice: "),
|
||
readchar(Choice),
|
||
clearwindow,
|
||
shiftwindow(2),
|
||
process(Choice),
|
||
bios(16,reg(3,0,0,0,0,0,0,0),_).
|
||
|
||
clauses
|
||
process('m'):-
|
||
barchart(Nu),
|
||
retract(barchart(Nu)),
|
||
NewNu = Nu+1,
|
||
asserta(barchart(NewNu)),
|
||
write("Enter the number of bars: "),
|
||
readint(NuOfBars),clearwindow,
|
||
write("Enter max value on Y scale: "),
|
||
readint(Max),clearwindow,
|
||
YScale = 140/Max,
|
||
Width = 265/NuOfBars,
|
||
Start = 305-Width,
|
||
clearwindow,
|
||
drawbar(NuOfBars, Width, Start, Yscale),
|
||
fail.
|
||
process('s'):-
|
||
write("Enter file name of chart: "),readln(Name),
|
||
concat(Name,".CHT",FName),save(Fname),fail.
|
||
process('l'):-
|
||
myretractall,
|
||
write("Enter file name of chart: "),readln(Name),
|
||
concat(Name,".CHT",FName),consult(FName),fail.
|
||
process('d'):-
|
||
barchart(Chart),
|
||
chartbar(Chart,XPosition,Ypos,Width,YBarSize,1),
|
||
cbar(XPosition,Ypos,Width,YBarSize,1),fail.
|
||
process('e').
|
||
|
||
drawbar(0,_,_,_):-!.
|
||
drawbar(Nu,Width,XPosition,Yscale):-
|
||
XNuNew=Nu-1,clearwindow,
|
||
write("Enter the value associated bar ",Nu ,": "),
|
||
readint(Y),
|
||
YBarSize=Y*YScale,
|
||
Ypos=140 - YBarSize,
|
||
cbar(XPosition,Ypos,Width,YBarSize,1),
|
||
barchart(Chart),
|
||
asserta(chartbar(Chart,XPosition,Ypos,Width,YBarSize,1)),
|
||
XNewPos= XPosition-Width-5,
|
||
drawbar(XNuNew,Width,XNewPos,Yscale).
|
||
|
||
repeat.
|
||
repeat:- repeat.
|
||
myretractall:- retract(_),fail.
|
||
myretractall.
|
||
|
||
|