/*********************************************************************
TRABAJO CON ARCHIVO
Inteligencia artificial
Gonzalo Villarreal Farah.
Corre con la versión Turbo Prolog 2.0
********************************************************************/
openread(SymbolicFileName,DosFileName)
(file,string) - (i,i)
Permite abrir un archivo para su lectura
SymbolicFileName: Nombre simbolico al cual se le asociara el nombre del
archivopara, de esta manera en el futuro, se hace
referencia a este en otras instrucciones y no al
nombre del archivo. Es de tipo file y se declara en
el DOMAINS.
DosFileName : nombre y opcionalmente el camino (path) del archivo
que se desea abrir
Ejemplo:
DOMAINS
file = base
PREDICATES
abre_lee
CLAUSES
abre_lee:-openread(base,"c:\\prolog\\prolog.hlp").
%-----------------------------------------------------------------------
openwrite(SymbolicFileName,DosFileName)
(file,string) - (i,i)
Permite abrir un archivo para su escritura. Si el archivo contiene algo
esto se pierde.
SymbolicFileName y DosFileName: iguales que en openread
Ejemplo:
DOMAINS
file = base
PREDICATES
abre_escribe
CLAUSES
abre_escribe:-openwrite(base,"c:\\prolog\\prolog.hlp").
%-----------------------------------------------------------------------
openappend(SymbolicFileName,DosFileName)
(file,string) - (i,i)
Permite abrir un archivo para agregarle al final de Çste alg£n texto.
SymbolicFileName y DosFileName: iguales que en openread
Ejemplo:
DOMAINS
file = base
PREDICATES
abre_agrega
CLAUSES
abre_agrega:-opeappend(base,"c:\\prolog\\prolog.hlp").
%-----------------------------------------------------------------------
openmodify(SymbolicFileName,DosFileName)
(file,string) - (i,i)
Permite abrir un archivo para modificarlo.
SymbolicFileName y DosFileName: iguales que en openread
Ejemplo:
DOMAINS
file = base
PREDICATES
abre_modifica
CLAUSES
abre_modifica:-opemodify(base,"c:\\prolog\\prolog.hlp").
%-----------------------------------------------------------------------
readdevice(SymbolicFileName)
(file) - (i) (o)
Permite cambiar la unidad de lectura, por defecto es el teclado (i). De lo
contrario, permite saber que unidad esta activa como lectura.
SymbolicFileName: iguales que en openread. Aqui se aprecia que hace la
conecci¢n con el archivo que se desea por medio de SymbolicFileName
Nota: Primero debe ser abierta algun archivo.
Ejemplo:
DOMAINS
file = base
PREDICATES
lectura_activa(file)
trae_nuevo(file,file)
modifica_device_lectura(fiel)
GOAL
openread(base,"c:\\prolog\\prolog.hlp"),
lectura_activa(File),trae_nuevo(File,File2),
modifica_device_lectura(Fiel2).
CLAUSES
lectura_activa(File):-readdevice(File).
% Aqui File es de output
intercambia_device(keyboar,base).
intercambia_device(_,keyboar).
modifica_device_lectura(Fiel):-readdevice(File).
% Aqui File es de input
%-----------------------------------------------------------------------
writedevice(SymbolicFileName)
(file) - (i) (o)
Permite cambiar la unidad de escritura, por defecto es la pantalla (i).
De lo contrario, permite saber que unidad esta activa como escritura.
Nota: Primero debe ser abierta algun archivo.
SymbolicFileName: iguales que en openread.
Ejemplo:
DOMAINS
file = base
PREDICATES
escritura_activa(file)
trae_nuevo(file,file)
modifica_device_escritura(fiel)
GOAL
openwrite(base,"c:\\prolog\\prolog.hlp")
escritura_activa(File),trae_nuevo(File,File2),
modifica_device_escritura(Fiel2).
CLAUSES
escritura_activa(File):-readdevice(File).
% Aqui File es de output
intercambia_device(keyboar,base).
intercambia_device(_,keyboar).
modifica_device_escritura(Fiel):-writedevice(File).
% Aqui File es de input
%-----------------------------------------------------------------------
closefile(SymbolicFileName)
(file) - (i)
Permite cerrar un archivo.
Ejemplo:
DOMAINS
file = base
PREDICATES
...
GOAL
openwrite(base,"c:\\prolog\\prolog.hlp")
...
closefile(base).
CLAUSES
...
%-----------------------------------------------------------------------
filepos(SymbolicFileName,FilePosition,Mode)
(file,real,integer) - (i,i,i) (i,o,i)
Mode specifies: 0:Inicio 1:Relativo 2:Fin
Permite leer la posici¢n donde esta el cursor en un archivo(output), ya sea
para leer de el o escribir, o permite colocar el cursor en alguna posici¢n
deseada, para leer o escribir.
SymbolicFileName: igual que en openread.
FilePosition : coloca el cursor en una posici¢n deseada o lee la posici¢n
donde esta el cursor. Este valor es real por que su cuenta
es por cada caracter.
%-----------------------------------------------------------------------
eof(SymbolicFileName)
(file) - (i)
Permite controlar cuando es fin de archivo. Cuando estamos leyendo, por
ejemplo en un ciclo, este se realiza mientras no sea fin de archivo
(eof: end of file)
Ejemplo:
DOMAINS
file = base
PREDICATES
lee_escribe
GOAL
makewindow(1,31,7,"",0,0,25,80),
openread(base,"a:\\prolog\\archivo.pro"),
lee_escribe.
CLAUSES
lee_escribe:-readdevice(base),not(eof(base)),readln(A),write(A),nl,
readdevice(keyboard),readchar(_),lee_escribe.
lee_escribe.
%-----------------------------------------------------------------------
existfile(DosFileName)
(string) - (i)
Permite verificar si un archivo existe.
DosFileName: igual que en openread
Ejemplo:
PREDICATES
existe_archivo(sting)
GOAL
existe_archivo("c:\\prolog\\prolog.hlp").
CLAUSES
existe_archivo(Archivo):-existfile(Archivo).
% Si existe tiene exito sino fracasa
%-----------------------------------------------------------------------
deletefile(DosFileName)
(string) - (i)
Permite borrar un archivo (similar al DELETE de DOS).
DosFileName: igual que en openread
Ejemplo:
PREDICATES
borra_archivo(sting)
GOAL
borra_archivo("c:\\prolog\\prolog.hlp").
CLAUSES
borra_archivo(Archivo):-deletefile(Archivo).
% Debe existe el archivo para tener exito sino fracasa
%-----------------------------------------------------------------------
renamefile(OldDosFileName,NewDosFileName)
(string,string) - (i,i)
Permite renombrar un archivo (similar al RENAME de DOS).
OldDosFileName: nombre de archivo que se desea renombrar
NewDosFileName: nuevo nombre que se le desea colocar al archivo
Ejemplo:
PREDICATES
renombra_archivo(sting,string)
GOAL
renombra_archivo("WORK.PRO","TRABAJO.PRO").
CLAUSES
borra_archivo(AntiguoArchivo,NuevoArchivo):-
renamefile(AntiguoArchivo,NuevoArchivo).
% Debe existe el archivo para tener exito sino fracasa
%-----------------------------------------------------------------------
disk(DosPath)
(string) - (i) (o)
Permite cambiar la unidad de disco o camino (path) activa o ver cual esta
activa.
DosPath:unidad de disco o camino (path)
Ejemplo:
PREDICATES
ve_disco_activo
modifica_path(string)
GOAL
ve_disco_activo,modifica_path("C:\\TEMP").
CLAUSES
ve_disco_activo:-disck(DosCamino),
write("El disco y directorio activo es: ",DosCamino).
modifica_pat(DosCamino):-disck(DosCamino).
%-----------------------------------------------------------------------