dos_compilers/Borland Turbo C v2/PBAR.PRO
2024-07-02 06:22:27 -07:00

85 lines
2.6 KiB
Prolog
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* 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.