CODE = 2000 domains i = integer s = symbol st = string li = i* ls = s* lst = st* key = arr;aba;izq;der;f(i);otro;enter database - posicion posicion(i,i) % (menu,actual) database - menu ual,col_nuevo) database - opc opc(i,i,i,st,st,st) % (menu,pos,long,opc,help,arch_bat) database - fin predicates actualiza_pos(i,i,i) % (menu,actual, 1) a_key(key) aviso(i,st) % (Menu,Help) b_key(i,key) clear(li) e_tecla(key) fill(st,i) % (Relleno,Renglones) - (i,i) key(i,key) mes(i,st) pantalla remove(li) retardo(i,i) % (segundo,valor) - (i,i) run % ciclo infinito del programa shift(li) clauses % ___________________________________________________________________________ % ------------------- Control del cursor -------------------------------- % ------- --- ------- run:- fin("si"), remove([1,2,3,4,5]), !. run:- a_key(K), e_tecla(K), !, run. run:- !. % para trazar a_key(Key):- readchar(_), readchar(K), char_int(K,Asc), key(Asc,Key). % para correr a_key(Key):- inkey(K), !, char_int(K,Asc), key(Asc,Key). a_key(K_):- !, a_key(K_). key(13,enter):- !. key(72,arr):-!. key(80,aba):-!. key(75,izq):-!. key(77,der):-!. key(0,Key):- readchar(T), char_int(T,Asc), b_key(Asc,Key). key(_,otro):- !. b_key(72,arr):-!. b_key(80,aba):-!. b_key(75,izq):-!. b_key(77,der):-!. b_key(N,f(K)):- N >= 59, N <= 68, !, N - 58 = K. b_key(_,otro):-!. e_tecla(enter):- posicion(Menu,Pos), ejecuta(Menu,Pos), !. e_tecla(enter):- !, fail. e_tecla(f(1)):-!. /* shift([5]), file_str("ayuda.pro",Logo), display(Logo), clear([5]), shift([3]), !.*/ e_tecla(Flecha):- Flecha = der, !, posicion(Menu,Actual), actualiza_pos(Menu,Actual,1), !; Flecha = aba, !, posicion(Menu,Actual), actualiza_pos(Menu,Actual,1), !; Flecha = izq, !, posicion(Menu,Actual), actualiza_pos(Menu,Actual,-1),!; Flecha = arr, !, posicion(Menu,Actual), actualiza_pos(Menu,Actual,-1),!. e_tecla(_):-!. % ___________________________________________________________________________ % --------------------------------------------------------------------------- % ___________________________________________________________________________ % --------- -- --------- ejecuta(1,Opc):- Opc = 10, !, remove([1,2,3,4,5]), % Terminar renamefile("sid.bat","fin.bat"), fail; !, Opc + 1 = Menu, menu(Menu,Opcs,Ventana,_,_,_,Col_n), Opcs + 3 = Fondo, Opc + 3 = Ren, desp_opc(Menu,0,Ventana), opc(1,Opc,_,_,Help,_), aviso(1,Help), shift([Ventana]), retractall(_,posicion), asserta(posicion(Menu,0),posicion),opc(Menu,0,Long,_,_,_), field_attr(0,2,Long,Col_n), run, remove([6]), shift([5]),!, retractall(_,posicion), asserta(posicion(1,Opc),posicion). ejecuta(Menu,Opcion):- opc(Menu,Opcion,_,_,_,Arch), Arch = "", !, fail. ejecuta(Menu,Opcion):- opc(Menu,Opcion,_,_,_,Arch), file_str("sid.bat",Arch), !, retractall(_,fin), asserta(fin("si"),fin), fail; opc(Menu,Opc,_,_,_,Archivo), makewindow(7,78,78,"",14,15,5,45,1,255,"ɻȼͺ"), write("\n SID_FIE ..."), time(_,_,Seg,_), Segcont = Seg + 4, retardo(Seg,Segcont), !, remove([7]). % ___________________________________________________________________________ % --------------------------------------------------------------------------- % ___________________________________________________________________________ % ------------------- manejo de ventanas -------------------------------- % ------ -- -------- shift([]):- !. shift([H|T]):- shiftwindow(H), !, shift(T). clear([]):- !. clear([H|T]):- shift([H]), clearwindow(), !, clear(T). remove([]):- !. remove([H|T]):- shift([H]), removewindow(), !, remove(T). % ___________________________________________________________________________ % --------------------------------------------------------------------------- % ___________________________________________________________________________ % -------- --- ------ actualiza_pos(Menu,Actual,Inc):- Actual + Inc = Nueva, menu(Menu,Nopc,Ventana,Inicio,Max,Col_a,Col_n), Inicio - 1 = Minimo, Nueva > Minimo, Nueva < Max, % opciones + Inicio = Opc opc(Menu,Actual,Long1,_,_,_), opc(Menu,Nueva,Long2,_,Help,_), aviso(Menu,Help), shift([Ventana]), field_attr(Actual,2,Long1,Col_a), field_attr(Nueva,2,Long2,Col_n), % Color --> field_attr(Actual,2,Long1,Col_a), field_attr(Nueva,2,Long2,Col_n), retractall(_,posicion), asserta(posicion(Menu,Nueva),posicion), !; menu(Menu,Nopc,Ventana,Inicio,Max,Col_a,Col_n), Actual + Inc = Max, opc(Menu,Actual,Long1,_,_,_), opc(Menu,Inicio,Long2,_,Help,_), aviso(Menu,Help), shift([Ventana]), field_attr(Actual,2,Long1,Col_a), field_attr(Inicio,2,Long2,Col_n), retractall(_,posicion), asserta(posicion(Menu,Inicio),posicion), !; menu(Menu,Opc,Ventana,Inicio,_,Col_a,Col_n), Actual + Inc = Inicio - 1, opc(Menu,Actual,Long1,_,_,_), opc(Menu,Opc,Long2,_,Help,_), aviso(Menu,Help), shift([Ventana]), field_attr(Actual,2,Long1,Col_a), field_attr(Opc,2,Long2,Col_n), retractall(_,posicion), asserta(posicion(Menu,Opc),posicion), !. aviso(Menu,Help):- Menu = 1, clear([4]), write(Help), !; !. desp_opc(Menu,Pos,Ventana):- opc(Menu,Pos,Long,Opc,Help,_), field_str(Pos,2,Long,Opc), clear([4]),write(Help),shift([Ventana]), Pos + 1 = Pos1, !, desp_opc(Menu,Pos1,Ventana). desp_opc(_,_,_):-!. % ___________________________________________________________________________ % --------------------------------------------------------------------------- % ___________________________________________________________________________ % --------------------- efectos de video -------------------------------- % ------- -- ----- mes(1,"ENE/"):-!. mes(2,"FEB/"):-!. mes(3,"MAR/"):-!. mes(4,"ABR/"):-!. mes(5,"MAY/"):-!. mes(6,"JUN/"):-!. mes(7,"JUL/"):-!. mes(8,"AGO/"):-!. mes(9,"SEP/"):-!. mes(10,"OCT/"):-!. mes(11,"NOV/"):-!. mes(12,"DIC/"):-!. fill(_,0):-!. fill(Bety,Rafa):- write(Bety), Rafa - 1 = BEyRa, !, fill(Bety,BEyRA). pantalla:- makewindow(1,16,0,"",0,0,25,80), % limpia pantalla fill(Bety,24), date(A,M,_), str_int(An,A), mes(M,Me), concat(Me,An,Fecha), makewindow(1,30,0,"",0,0,1,80), % derechos reservados [2] write(" ------------------------------------------------------------------------------"), makewindow(2,31,112,"",4,54,14,25), % carpetas [4] makewindow(2,31,112,"",3,52,14,25), makewindow(2,7,112,"",2,50,14,25), file_str("pant.1",Logo), window_str(Logo), makewindow(3,78,0,"",24,0,1,80), % derechos reservados [2] write(" (\74. \82. \82. \79.) \85\77\83\78\72\47\70\73\69\47\83\73\68 ",Fecha), makewindow(4,15,3,"",21,1,3,78,1,0,"ɻȼͺ"), % Ayuda sound(10,300), !. retardo(Seg,Seg):-!. retardo(_,Seg):- time(_,_,Seg1,_),!, retardo(Seg1,Seg). % ___________________________________________________________________________ % --------------------------------------------------------------------------- % ___________________________________________________________________________ % --------------------------- meta -------------------------------------- % ---- goal pantalla, retractall(_,opc), retractall(_,menu), retractall(_,fin), asserta(fin("no"),fin), renamefile("out.out","sid.bat"), asserta(menu(1,10,5,1,11,2,46),menu), % principal. asserta(menu(2,3,6,0,4,12,112),menu), % procesadores de texto. asserta(menu(7,3,6,0,4,12,112),menu), % Bases de datos. asserta(menu(8,1,6,0,2,12,112),menu), % Sistemas de aprendizaje. asserta(menu(10,6,6,0,7,12,112),menu), % Antivirus. %Color --> asserta(menu(_,_,_,_,_,121,30),menu), % opc(menu,pos,long,opc,help,arch_bat) "),opc), ,opc), ), mas",""),opc), ",""),opc), opc), asserta(opc(1,7,23,"SISTEMAS DE APRENDIZAJE","Control de bancos de informac,""),opc), lexibles",""),opc), asserta(opc(1,10,5,"SALIR","Terminar contacto con F.I.E./S.I.D.",""),opc), shift([5]), desp_opc(1,1,5), % opc(menu,pos,long,opc,help,arch_bat) PROCESADORES DE TEXTO asserta(opc(2,0,16,"Word Perfect 6.0","","FWP60"),opc), asserta(opc(2,1,9,"Works 3.0","","FWK3"),opc), asserta(opc(2,2,16,"Write (Windows)","","FWRI"),opc), asserta(opc(2,3,8,"Regresar","",""),opc), % opc(menu,pos,long,opc,help,arch_bat) HOJAS DE CALCULO asserta(opc(3,0,9,"Works 3.0","","FWK3"),opc), asserta(opc(3,1,9,"Excel 4.0","","FEXCEL"),opc), asserta(opc(3,2,8,"Regresar","",""),opc), % opc(menu,pos,long,opc,help,arch_bat) LENGUAJES DE PROGRAMACION asserta(opc(4,0,13,"Turbo C++ 3.0","","FTCPP3"),opc), asserta(opc(4,1,16,"Turbo Pascal 6.0","","FTP60"),opc), asserta(opc(4,2,16,"Turbo Prolog 2.0","","FTPRO"),opc), asserta(opc(4,3,15,"Quick Basic 4.5","","FQB45"),opc), asserta(opc(4,4,10,"Dbase III+","","FDB3P"),opc), asserta(opc(4,5,8,"Fox Base","","FFOX"),opc), asserta(opc(4,6,8,"Regresar","",""),opc), % opc(menu,pos,long,opc,help,arch_bat) SISTEMAS DE SIMULACION asserta(opc(5,0,12,"Pc Spice 5.0","","FSPICE"),opc), asserta(opc(5,1,11,"EWB Digital","","FEWBD"),opc), asserta(opc(5,3,5,"Orcad","","FORCAD"),opc), asserta(opc(5,4,10,"Program CC","","FCC"),opc), asserta(opc(5,5,6,"Derive","","FDE"),opc), asserta(opc(5,6,7,"MathCad","","FMCAD"),opc), asserta(opc(5,7,7,"MathLab","","FMLAB"),opc), asserta(opc(5,8,8,"Regresar","",""),opc), % opc(menu,pos,long,opc,help,arch_bat) SISTEMAS GRAFICOS asserta(opc(6,0,11,"Auto CAD 12","","FCAD12"),opc), asserta(opc(6,1,21,"Paint Brush (windows)","","FPB"),opc), asserta(opc(6,2,12,"Windows 3.11","","FWIN"),opc), asserta(opc(6,3,8,"Regresar","",""),opc), % opc(menu,pos,long,opc,help,arch_bat) BASES DE DATOS asserta(opc(7,0,9,"Works 3.0","","FWK3"),opc), asserta(opc(7,1,10,"Dbase III+","","FDB3P"),opc), asserta(opc(7,2,8,"Fox Base","","FFOX"),opc), asserta(opc(7,3,8,"Regresar","",""),opc), % opc(menu,pos,long,opc,help,arch_bat) SISTEMAS DE APRENDIZAJE asserta(opc(8,0,13,"TUTOR DEL DOS","","FT2"),opc), asserta(opc(8,1,8,"Regresar","",""),opc), % opc(menu,pos,long,opc,help,arch_bat) UTILERIAS asserta(opc(9,0,11,"Pctools 4.1","","FPCT"),opc), asserta(opc(9,1,21,"Copy 2 pc 6.0 (a: a:)","","FC2PCA"),opc), asserta(opc(9,2,21,"Copy 2 pc 6.0 (b: b:)","","FC2PCB"),opc), asserta(opc(9,3,6,"Norton","","FNORTON"),opc), asserta(opc(9,4,4,"Tech","","FTECH"),opc), asserta(opc(9,5,8,"Regresar","",""),opc), % opc(menu,pos,long,opc,help,arch_bat) ANTIVIRUS asserta(opc(10,0,7,"Msav a:","","FMSAVA"),opc), asserta(opc(10,1,7,"Msav b:","","FMSAVB"),opc), asserta(opc(10,2,7,"Scan a:","","FSCANA"),opc), asserta(opc(10,3,7,"Scan b:","","FSCANB"),opc), asserta(opc(10,4,9,"Killer a:","","FKILLA"),opc), asserta(opc(10,5,9,"Killer b:","","FKILLB"),opc), asserta(opc(10,6,8,"Regresar","",""),opc), field_attr(1,2,21,46), retractall(_,posicion), asserta(posicion(1,1),posicion), shift([5]),run. % ___________________________________________________________________________ % % Programa: menured.pro % Objetivo: Mostrar los programas instalados en la red. % U. M. S. N. H. % ------------------------------------------------------------------------