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

85 lines
2.6 KiB
Prolog
Raw 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.