Prolog Programs

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 7

Medical diagnosis

/*trace*/
domains
disease, indication=symbol
name=string
predicates
hypothesis (name,disease)
symptom (name,indication)
response (char)
go
goonce
clauses
go:-
goonce,
write("will you like to try again (y/n)?"),
response (Reply),
Reply='n'.
go.
goonce:-
write("what is the patient's name?"),nl,
readln(Patient),
hypothesis (Patient,Disease),!,
write(Patient, "probably has", Disease),nl.
goonce:-
write("sorry, i am not in position to diagnose"),
write("the disease.").
symptom(Patient,fever):-
write("does",Patient," has a fever (y/n)?"),nl,
response (Reply),
Reply='y',nl.
symptom(Patient,rash):-
write("does", Patient," has a rash (y/n)?"),nl,
response(Reply),
Reply='y',nl.
symptom(Patient,body_ache):-
write("does",Patient," has a body_ache (y/n)?"),nl,
response(Reply),
Reply='y',nl.
symptom(Patient,runny_nose):-
write("does",Patient,"has a runny_nose (y/n)?"),
response(Reply),
Reply='y'.
hypothesis(Patient,flu):-
symptom(patient,fever),
symptom(Patient,body_ache).
hypothesis(Patient,common_cold):-
symptom(Patient,body_ache),
symptom(Patient,runny_nose).
response(Reply):-
readchar(Reply),
write(Reply).
goal
makewindow(1,7,7,"EXPERT MEDICAL DIAGNOSIS",2,2,23,70),
go.
output
Family
/*trace*/
domains
name=symbol
predicates
father(name,name)
g_father(name,name)
brother(name,name)
clauses
father(dashrath,ram).
father(dashrath,lakshman).
father(ram,lov).
father(ram,kush).
g_father(X,Z):-
father(X,Y),
father(Y,Z).
brother(X,Y):-
father(Z,X),
father(Z,Y),
X<>Y.
output

Fi
le handling

domains
file = temp_fl
Undefined = symbol
Sym,Sym1,Sym2 = integer
Sym3,Int = integer
predicates
exec
process(integer)
readfile
openthefile
repeat
check(integer)
clauses
exec :-
makewindow(1,7,7,"File Operations",0,0,25,80),nl,
write("\tOPERATIONS SUPPORTED ..."),nl,
write("\t 1 > Enter write data for new file "),nl,
write("\t 2 > Enter write data to append to file "),nl,
write("\t 3 > Enter write data for modifying contents of file "),nl,
write("\t 4 > Read file contents "),nl,
write("\t 5 > Exit program "),nl,
write("\t Enter selection : "),
readint (Int),
process(Int).

process(Var) :-
Var = 1,nl,
makewindow(1,7,7,"File Write Operation",0,0,25,80),nl,
write("Enter string to write to file : "),
readln(Sym1),
openwrite(temp_fl,"file1.pro"),
writedevice(temp_fl),nl,
write(Sym1),
closefile(temp_fl),
write("Writing to file ..."),
/*readchar(Undefined),*/
readchar(_),
check(Var).
process(Var) :-
Var = 2,nl,
makewindow(1,7,7,"File Append Operation",0,0,25,80),nl,
write("Enter string to append : "),
readln(Sym1),
openappend(temp_fl,"file1.pro"),
writedevice(temp_fl),nl,
write(Sym1),
closefile(temp_fl),
write("Writing to file ..."),
/*readchar(Undefined),*/
readchar(_),
check(Var).
process(Var) :-
Var = 3,nl,
makewindow(1,7,7,"File Modify Operation",0,0,25,80),nl,
write("Enter new string to be used to modify the file : "),
readln(Sym2),nl,
write("Enter file position to be changed ( from start ) : "),
readint(Sym3),
openmodify(temp_fl,"file1.pro"),
filepos(temp_fl,Sym3,0),
writedevice(temp_fl),
write(Sym2),
closefile(temp_fl),
write("Writing to file ..."),
readchar(_),
check(Var).
process(Var) :-
Var = 4,nl,
makewindow(1,7,7,"File Read Operation",0,0,25,80),nl,
write("\t Reading file contents "),nl,
openthefile,
readfile,
check(Var).
openthefile:-
openread(temp_fl,"file1.pro"),
readdevice(temp_fl),
writedevice(screen).

check(Var) :-
not(5 = Var),
exec.
check(Var):-
Var= 5,!.
readfile:-
not(eof(temp_fl)),
readln(S),
write(S),nl,
repeat. /* exit condn . */
readfile :-
nl,write("\t End of file "),
readdevice(keyboard),
readchar(_),
closefile(temp_fl).
repeat:-
readfile.
goal
exec.

output

Login
domains
name,password=symbol
predicates
logon
getinput(name,Password)
user(name,password)
clauses
logon:-
clearwindow,
getinput(Name,Password),
write("u can work").
logon:-
write("u are not allowed pl try again"),
logon.
getinput(Name,Password):-
write("enter ur name pl"),
readln(Name),
write("enter ur password pl"),nl,
readln(Password),
user(Name,Password).
user(deepankar,hb).
user(akshay,aksethi).
user(ikshwansu,iksh).
user(krishna,kc).
/*
goal:-
clearwindow,
logon.*/
output

Login graphical
domains
name,password=symbol
predicates
logon
getinput(name,Password)
user(name,password)
clauses
logon:-
getinput(name,password),nl,
/*write("u can work"),*/
clearwindow,
makewindow(2,7,7,"U CAN WORK EDITOR",4,4,18,50),nl,
cursor(12,12),
edit(" ",_).
logon:-
write("u are not allowed pl try again"),
logon.
getinput(_,_):-
write("enter ur name pl"),nl,
readln(Name),
write("enter ur password pl"),nl,
attribute(0),
readln(Password),
attribute(7),
user(Name,Password).
user(rp,arora).
user(mona,ar).
user(xx,aa).
goal
clearwindow,
makewindow(1,7,7,"NAME_PASSWORD",2,3,20,60),
logon.

Output

Prolog in SWI PROLOG


Factorial
factorial(0,1).
factorial(A,B):-
A>0,
C is A-1,
factorial(C,D),
B is A*D.
yes
output
% library(win_menu) compiled into win_menu 0.00 sec, 11,948 bytes
% library(swi_hooks) compiled into pce_swi_hooks 0.00 sec, 2,188 bytes
Welcome to SWI-Prolog (Multi-threaded, 32 bits, Version 5.10.2)
Copyright (c) 1990-2010 University of Amsterdam, VU Amsterdam
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.
For help, use ?- help(Topic). or ?- apropos(Word).
1 ?-
% c:/Users/deepankar/Desktop/ai/fact.pl compiled 0.00 sec, 1,160 bytes
1 ?-
| factorial(10,What).
What = 3628
Fibonacci
fib(0, 1).
fib(1, 1).
fib(X, Y):-
X > 1, X1 is X - 1, X2 is X - 2, fib(X1, Z), fib(X2, W), Y is W + Z.
Output
% library(win_menu) compiled into win_menu 0.00 sec, 11,948 bytes
% library(swi_hooks) compiled into pce_swi_hooks 0.00 sec, 2,188 bytes
Welcome to SWI-Prolog (Multi-threaded, 32 bits, Version 5.10.2)
Copyright (c) 1990-2010 University of Amsterdam, VU Amsterdam
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.
For help, use ?- help(Topic). or ?- apropos(Word).
1 ?-
% c:/Users/deepankar/Desktop/ai/fib.pro compiled 0.00 sec, 1,196 bytes
1 ?-
| fib(10,What).
What = 89

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy