28.04.2013 Views

3.3 Teoria de la demostració - La Salle

3.3 Teoria de la demostració - La Salle

3.3 Teoria de la demostració - La Salle

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Operacions sobre facts<br />

Els fets que formen part d’una base da<strong>de</strong>s po<strong>de</strong>n estar especificats en temps <strong>de</strong><br />

compi<strong>la</strong>ció (estàticament) en <strong>la</strong> secció c<strong>la</strong>uses i <strong>de</strong>sprés, durant l’execució, se n’hi<br />

po<strong>de</strong>n afegir <strong>de</strong> nous o esborrar-ne.<br />

Visual Prolog permet mitjançant predicats pre<strong>de</strong>finits fer les següents operacions:<br />

- Afegir nous fets (assert)<br />

- Esborrar fets (retract)<br />

- Llegir un conjunt <strong>de</strong> fets <strong>de</strong> fitxer (consult)<br />

- Guardar un conjunt <strong>de</strong> fets a fitxer (save)<br />

Fixeu-vos que per actualitzar alguna informació d’un fet, hem d’esborrar i afegir. És a<br />

dir, no existeix cap operació d’actualització.<br />

Predicats assert. Afegint-hi fets<br />

Po<strong>de</strong>m afegir fets a qualssevol <strong>de</strong> les bases <strong>de</strong> da<strong>de</strong>s internes a través <strong>de</strong>ls predicats<br />

assert o a través <strong>de</strong>ls predicats consult.<br />

Hi ha tres predicats assert que permeten d’afegir-hi un fet en temps d’execució:<br />

asserta(El fet que hi volem afegir)<br />

asserta(El fet que hi volem afegir, NomDatabase)<br />

assertz(El fet que hi volem afegir)<br />

assertz(El fet que hi volem afegir, NomDatabase)<br />

assert(El fet que hi volem afegir)<br />

assert(El fet que hi volem afegir, NomDatabase)<br />

Com po<strong>de</strong>u observar cadascun <strong>de</strong>ls predicats té dues sintaxis, una en el cas <strong>de</strong> tenir<br />

una so<strong>la</strong> base da<strong>de</strong>s sense nom i l’altra en el cas <strong>de</strong> tenir diverses bases <strong>de</strong> da<strong>de</strong>s<br />

perquè puguem especificar on volem afegir.<br />

Recor<strong>de</strong>u que l’ordre <strong>de</strong>ls fets és important a l’hora d’executar el programa, per tant, el<br />

programador pot escollir introduir el fet <strong>de</strong> primer (asserta) o d’últim (assertz). Assert<br />

es comporta com assertz.<br />

Predicat consult. Llegint fets<br />

Una altra manera d’afegir-hi fets, és llegir-los d’un fitxer. Això permet tenir fitxers (tipus<br />

text) amb fets que po<strong>de</strong>n ser introduïts durant l’execució <strong>de</strong>l programa.<br />

Restriccions sobre el fitxer <strong>de</strong> fets:<br />

1. No po<strong>de</strong>n haver-hi caràcters en majúscules ni espais. Només si són en strings.<br />

2. No po<strong>de</strong>n haver-hi comentaris ni línies bui<strong>de</strong>s.<br />

3. No po<strong>de</strong>n haver-hi symbols sense dobles cometes.<br />

4. Un fet per línia i acabant amb un punt.<br />

Els predicats que permeten llegir són:<br />

131

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!