CLIPS C Language Integrated Production System
|
|
- Bonifacio Mattioli
- 6 anni fa
- Visualizzazioni
Transcript
1 CLIPS C Language Integrated Production System
2 Introduzione CLIPS: C Language Integrated Production System CLIPS è un tool per lo sviluppo di Sistemi Basati su Conoscenza le cui origini risalgono al 1984 (NASAs Johnson Space Center). Implementato in linguaggio C per eliminare i problemi legati alluso del linguaggio LISP. Linguaggio a regole basato sullalgoritmo Rete con il meccanismo di attivazione delle regole di tipo Forward Chaining La versione 5.0 (1991) introduce due nuovi paradigmi di programmazione: programmazione procedurale e programmazione orientata agli oggetti (CLIPS Object- Oriented Language (COOL))
3 Riferimenti - CLIPS Reference Manual: Volume I - The Basic Programming Guide Volume II - The Advanced Programming Guide Volume III The Interfaces Guide - CLIPS Users Guide CLIPS is released as public domain software and as such you are under no obligation to pay for its use. However, if you derive commercial or monetary benefit from use of the software or just want to show support, please consider making a voluntary payment based on the worth of the software to you as compensation for the time and effort required to develop and maintain CLIPS. Payments can be made online at
4 Esecuzione 1. utilizzando una interfaccia testuale a linea di comando;
5 2. utilizzando una interfaccia a finestre; 3. come sistema esperto embedded. Esecuzione
6 I primi comandi I comandi CLIPS sono sempre racchiusi fra parentesi Alcuni comandi importanti (exit) abbandona CLIPS (clear) rimuove tutte le regole e i fatti dalla memoria (reset) rimuove i fatti ma non le regole dalla memoria (run) avvia l'esecuzione di un programma CLIPS
7 Alla base CLIPS opera mantenendo una lista di fatti ed un insieme di regole che operano sui fatti. Un fatto rappresenta informazione (colore verde) o (genitore Giovanni Maria) I fatti vengono creati asserendoli nel database dei fatti utilizzando il comando assert: CLIPS>(assert (colore verde)) <Fact-0> Intro CLIPS: Fatti e regole <Fact-0>: risposta del CLIPS per dire che è stato inserito un nuovo fatto (numero 0) nel database dei fatti. CLIPS>(facts) f-0 (colore verde) For a total of 1 fact
8 Intro CLIPS: Fatti e regole I fatti possono anche essere rimossi dal database dei fatti utilizzando il comando retract: CLIPS>(assert (colore verde)) <Fact-0> CLIPS>(assert (colore rosso)) <Fact-1> Ritrattiamo il primo fatto e visualizziamo la lista dei fatti: CLIPS>(retract 0) CLIPS>(facts) f-1 (colour red) For a total of 1 fact. Per ritrattare un fatto bisogna specificare un numero (factindex). I fact-indice non vengono riusati. Una volta ritrattato il fatto 0, il prossimo fatto asserito avrà indice 2 e non 0
9 I soli fatto hanno un uso limitato. E' necessaria l'applicazione di regole per lo sviluppo di un programma in grado di effettuare funzioni utili. In generale, una regola è espressa nella forma SE qualcosa è vera ALLORA esegui qualche azione. Questo tipo di regola è detta produzione. Tipica regola CLIPS: Intro CLIPS: Fatti e regole (defrule morde (animale cane) => (assert (animale morde))) se c'è un fatto (animale cane) nel db dei fatti, allora asserisci un altro fatto (animale morde), nel db dei fatti
10 Una regola consiste di tre parti (defrule morde dà alla regola un nome unico (animale cane) è il pattern (la parte IF ) della regola (assert (animale morde)) è l'azione (la parte THEN) ESEMPIO Intro CLIPS: Fatti e regole CLIPS> (clear) CLIPS> (defrule morde (animale cane) => (assert (animale morde))) CLIPS> (rules) CLIPS> (assert (animale cane)) CLIPS> (facts) CLIPS> (run) CLIPS> (facts)
11 Inseriamo questa nuova regola Intro CLIPS: Fatti e regole (defrule cane (animale-ha coda) (animale-ha quattro-zampe) => (assert (animale cane))) CLIPS> (reset) Ora asseriamo i seguenti fatti (animale-ha coda) e (animale-ha quattro-zampe) CLIPS> (facts) 2 fatti CLIPS> (run) CLIPS> (facts) 4 fatti!!! Regole e fatti possono essere scritti in un file di testo con estensione clp e poi caricati in CLIPS.
12 Intro CLIPS: Fatti e regole Il costrutto deffacts ci permette di asserire più fatti nel db ogni volta che si resetta il sistema. (deffacts startup (maschio gianni) (femmina lucia) (maschio luca) (femmina maria) (genitore gianni lucia) (genitore maria lucia)) I wildcard (defrule figlio-gianni (genitore gianni?) => (printout t "trovato un figlio di Gianni" crlf)) CLIPS>(run) trovato un figlio di Gianni CLIPS>
13 Le variabili nei pattern Intro CLIPS: Fatti e regole (defrule maschi (maschio?m) => (printout t "trovato un maschio"?m crlf)) CLIPS>(run) trovato un maschio gianni trovato un maschio luca CLIPS> (defrule madre (femmina?f) (genitore?f?x) => (printout t "trovata madre"?m di?x crlf))
14 L'astrazione dati La rappresentazione dellinformazione in CLIPS avviene per mezzo di fatti, oggetti e variabili globali Fatti I fatti sono uno strumento di base, di alto livello, per la rappresentazione dellinformazione in CLIPS. Ogni fatto rappresenta una porzione di informazione memorizzata nel db dei fatti (lista dei fatti fact-list). I fatti rappresentano lunità fondamentale di dati utilizzata dalle regole. I fatti possono essere aggiunti alla fact-list (utilizzando il comando assert), rimossi dalla fact-list (utilizzando il comando retract), modificati (utilizzando il comando modify), o duplicati (utilizzando il comando duplicate).
15 Elementi di base Il CLIPS fornisce tre elementi di base per scrivere programmi: - tipi di dati primitivi, - funzioni per la manipolazione dei dati, e - costrutti per laggiunta di conoscenza. Tipi di dati per la rappresentazione di valori numerici integer: 237, 15, +12, -32 float: 237e3, 15.09, +12.0, -32.3e-7 <integer> ::= [+ -] <digit>+ <digit> ::= <float> ::= <integer> <exponent> <integer>. [exponent]. <unsigned integer> [exponent] <integer>. <unsigned integer> [exponent] <unsigned-integer> ::= <digit>+ <exponent> ::= e E <integer>
16 Elementi di base Tipi di dati per la rappresentazione di valori simbolici Symbol: sequenza di caratteri che partono con un carattere ASCII stampabile, seguito da zero o più caratteri ASCII stampabili. Non può iniziare con i caratteri? e $? poiché sono riservati alle variabili symbol: foo, Hello, B76-HI, bad_value, 127A, 2each String: insieme di caratteri che iniziano con il simbolo " seguiti da caratteri ASCII stampabili e che terminano con il simbolo " string: " foo", "a and b", "1 number", "a\"quote
17 Elementi di base external-address: gli indirizzi delle strutture dati esterne restituiti da una funzione integrata con il CLIPS fact-adresses: un fatto è una lista di valori atomici ai quali si può fare riferimento per posizione (ordered facts) o per nome (non-ordered o template facts). Ad un fatto si fa riferimento con un indice o con un indirizzo instance-name, instance-address: una istanza è un oggetto, istanziazione di una specifica classe alla quale si può far riferimento con il suo nome Oggetti CLIPS: float, integers, symbol, string, multifield, external-adresses, fact-adresses o instances di una classe user-defined.
18 Un instance-name è un simbolo racchiuso tra parentesi quadre [pump-1] [foo] [+++] [ ] Elementi di base In CLIPS un segnaposto con un valore è detto field. Un multifield value è una sequenza di zero o più single field values racchiusi tra parentesi tonde (a) (1 bar foo) () (x 3.0 "red" 567) Costante: singolo field con valore fisso Variabile: locazione simbolica utilizzata per immagazzinare valori Commenti: preceduti dal simbolo ;
19 Una funzione in CLIPS è una porzione di codice eseguibile identificata da uno specifico nome che restituisce un valore o ha un effetto collaterale. Il costrutto deffunction permette allutente di definire nuove funzioni, direttamente nellambiente CLIPS. Questo tipo di funzioni agiscono come le altre (user defined functions e system define functions), però, invece di essere eseguite direttamente (come accade per il codice scritto in un linguaggio esterno) vengono interpretate dallambiente CLIPS. Le funzioni generiche possono essere definite utilizzando i costrutti defgeneric e defmethod. Questo tipo di funzioni permettono lesecuzione di diverse porzioni di codice in base agli argomenti passati alla funzione. Quindi, un singolo nome di funzione può essere sovraccaricato con più porzioni di codice. Clips utilizza la notazione prefissa per le funzioni (* 8 (+ 3 (* 2 3 4) 9) (* 3 4)) Elementi di base
20 Il CLIPS fornisce molti costrutti: defmodule, defrule, deffacts, deftemplate, defglobal, deffunction, defclass, definstances, defmessage-handler, defgeneric, e defmethod. Elementi di base
21 I fatti Per poter utilizzare i comandi retract, modify, e duplicate è necessario specificare un fatto per mezzo del suo fact-index o fact-address. Ad ogni fatto aggiunto (o modificato) viene associato un indice intero (unico) detto fact-index i fact-index partono da zero e sono incrementati di uno per ogni nuovo fatto cambiato Leffetto dei comandi reset o clear è di porre a zero i fact-index Un fatto può anche essere specificato per mezzo del suo factaddress, ottenuto catturando il valore restituito dai comandi che restituiscono un fact-address (assert, modify, e duplicate) o mappando una variabile al fact-address di un fatto in un pattern nella LHS di una regola La memorizzazione dei fatti può avvenire in modo ordinato e in modo non-ordinato
22 Fatti ordinati I fatti ordinati sono costituiti da un simbolo seguito da una sequenza di zero o più campi separati da spazi e delimitati da una parentesi aperta a sinistra e da una parentesi chiusa a destra. Il primo campo di un fatto ordinato specifica una relazione che è applicata ai restanti campi del fatto. Per esempio, (padre giovanni mario) dice che giovanni è il padre mario. (forno acceso) (altezza 100 m) (elenco-spesa zucchero miele zucchine pomodori)
23 I fatti ordinati rappresentano informazione ordinata. Per poter accedere a questo tipo di informazione bisogna conoscere i campi che la contengono. I fatti non ordinati (o template) forniscono la possibilità di astrarre dalla struttura del fatto assegnando dei nomi ad ogni campo nel fatto. Il costrutto deftemplate (analogo alla definizione di record o di struttura in C) viene utilizzato per creare un template che poi può essere utilizzato per accedere ai campi per nome. Un template è definito da zero o più definizioni di slots. (cliente (nome "Paolo Rossi") (id X9345A)) (punto-di-massa (x-velocita 100) (y-velocita -200)) Fatti non ordinati (corso (docente "Bianchi") (#-studenti 30) (aula "37A")) (corso (#-studenti 30) (docente "Bianchi") (aula "37A"))
24 Gli oggetti Un oggetto in CLIPS è un simbolo, una stringa, un numero floating-point o intero, un multifield value, un external-address o una istanza di una classe user-defined. Gli oggetti sono descritti da una proprietà e da un comportamento. Una classe è un template di proprietà e comportamenti comuni ad oggetti che sono istanze della classe. Rolls-Royce della classe SYMBOL "Rolls-Royce" della classe STRING 8.0 della classe FLOAT 8 della classe INTEGER (8.0 Rolls-Royce 8 [Rolls-Royce]) della classe MULTIFIELD <Pointer- 00CF61AB> della classe EXTERNAL-ADDRESS [Rolls-Royce] della classe CAR (a user-defined class)
25 Variabili globali Il costrutto defglobal permette la definizione di variabili globali. È possibile accedere da qualsiasi parte a queste variabili. Alcuni costrutti (come defrule e deffunction) permettono lallocazione di variabili locali alle quali si può accedere dallinterno del costrutto, ma che non hanno significato alcuno al di fuori del costrutto. Una variabile globale in CLIPS è simile alle variabili globali dei linguaggi procedurali, ma ha tipizzazione debole (non necessariamente deve contenere un valore di un solo tipo)
26 Rappresentazione della conoscenza Per rappresentare la conoscenza CLIPS fornisce un paradigma euristico ed un paradigma procedurale. Conoscenza Euristica: le regole Un metodo per rappresentare la conoscenza in CLIPS è attraverso la regola. Le regole sono utilizzate per rappresentare euristiche che specificano un insieme di azioni da effettuare in una data situazione. Una regola è costituita da un antecedente (left-hand-side, LHS) e da un conseguente (right-hand-side, RHS)
27 Le regole Lantecedente di una regola è un insieme di condizioni (conditional elements) che devono essere vere affinché la regola sia applicabile. In CLIPS, la soddisfacibilità delle condizioni di una regola è basata sullesistenza o meno di specifici fatti nella fact-list o di specifiche istanze di classi nella instance-list. Un tipo di condizione che può essere specificata è il pattern. I pattern sono costituiti da un insieme di restrizioni utilizzate per determinare quali fatti o oggetti soddisfano le condizioni nel pattern. Il processo di matching fra fatti/oggetti e il pattern è detto pattern-matching. Il CLIPS fornisce un motore inferenziale che automaticamente mappa i pattern sulla fact-list e/o sulla instance-list corrente, determinando quali regole sono applicabili
28 Le regole Il conseguente di una regola è costituito da un insieme di azioni da eseguire quando il motore inferenziale del CLIPS decide di applicare la regola. Se sono applicabili più regole, il motore inferenziale utilizza una strategia di risoluzione di conflitti per selezionare quale regola deve essere eseguita Dopo aver eseguito le azioni della regola selezionata (che possono influenzare la lista delle regole applicabili) il motore inferenziale seleziona unaltra regola da eseguire Questo processo continua fin quando non restano regole applicabili
29 Conoscenza procedurale Il CLIPS supporta anche un paradigma procedurale per la rappresentazione della conoscenza come quello dei linguaggi Pascal e C. Le funzioni (deffunctions) e le funzioni generiche (generic functions) permettono allutente di definire nuovi elementi eseguibili che provocano un effetto collaterale oppure che restituiscono un valore. I message-handlers permettono allutente di definire il comportamento degli oggetti specificando la loro risposta ai messaggi. Deffunctions, generic functions e message-handlers sono porzioni di codice procedurale specificati dallutente che il CLIPS esegue quando opportuno. Defmodules permette di partizionare la base di conoscenza
30 CLIPS Object Oriented In un linguaggio orientato agli oggetti, tutti gli elementi di programmazione sono oggetti manipolati per mezzo di messaggi. In CLIPS, la definizione di un oggetto è più forte: numeri floating-point e interi, simboli, stringhe, multifield values, external-addresses, fact-addresses e istanze di classi userdefined. Tutti gli oggetti possono essere manipolati con i messaggi. Le istanze delle classi user-defined devono essere manipolate con i messaggi. Caratteristiche di un sistema OOP: astrazione, incapsulazione, ereditarietà, polimorfismo e binding dinamico.
31 I template I fatti ordinati rappresentano informazione posizionale. Per accedere a questo tipo di informazione, lutente deve conoscere non solo il tipo di dato memorizzato ma anche quali campi lo contengono. I fatti non ordinati (o template) forniscono la possibilità di astrarre dalla struttura dei fatti assegnando dei nomi ad ogni campo del fatto. Il costrutto deftemplate viene utilizzato per creare un template che può essere usato per definire fatti non ordinati.
32 I template (deftemplate <deftemplate-name> [<comment>] <slot-definition>*) <slot-definition> ::= <single-slot-definition> <multislot-definition> <single-slot-definition> ::= (slot <slot-name> <template-attribute>*) <multislot-definition> ::= (multislot <slot-name> <template-attribute>*) <template-attribute> ::= <default-attribute> <constraint-attribute> <default-attribute> ::= (default?derive?none <expression>*) (default-dynamic <expression>*) (deftemplate corso (slot nome) (slot studenti) (slot docente) (slot aula))
33 I valori di default <default-attribute> specifica il valore da utilizzare come default quando viene asserito un template Lattributo default specifica un valore di default statico. La valutazione avviene una sola volta alla definizione del deftemplate. Lattributo default-dynamic è un dynamic default. La valutazione avviene ogni volta che viene asserito un template.
34 I valori di default CLIPS> (clear) CLIPS> (deftemplate foo (slot w (default?none)) (slot x (default?derive)) (slot y (default (gensym*))) (slot z (default-dynamic (gensym*)))) CLIPS> (assert (foo)) [TMPLTRHS1] Slot w requires a value because of its (default?none) attribute. CLIPS> (assert (foo (w 3))) <Fact-0> CLIPS> (assert (foo (w 4))) <Fact-1> CLIPS> (facts) f-0 (foo (w 3) (x nil) (y gen1) (z gen2)) f-1 (foo (w 4) (x nil) (y gen1) (z gen3)) For a total of 2 facts. CLIPS>
35 (deftemplate object (slot name (type SYMBOL) (default?derive)) (slot location (type SYMBOL) (default?derive)) (slot on-top-of (type SYMBOL) (default floor)) (slot weight (allowed-values light heavy) (default light)) (multislot contents (type SYMBOL) (default?derive))) I vincoli
36 initial-fact Quando si asserisce o si fa riferimento ad un fatto ordinato (come in un LHS pattern) viene creato un implied template con un solo slot. CLIPS> (clear) CLIPS> (assert (foo 1 2 3)) <Fact-0> CLIPS> (defrule yak (bar 4 5 6) =>) CLIPS> (list-deftemplates) initial-fact foo bar For a total of 3 deftemplates. CLIPS> (facts) f-0 (foo 1 2 3) For a total of 1 fact. CLIPS>
37 Il costrutto deffacts Il costrutto deffacts permette di definire una lista di fatti che vengono asseriti automaticamente quando si invoca il comando reset. I fatti asseriti con deffacts possono essere ritrattati o mappati come gli atri fatti. La initial fact-list, che include ogni deffacts definito, viene sempre ricostruita dopo ogni comando reset Sintassi (deffacts <deffacts-name> [<comment>] <RHS-pattern>*)
38 Il costrutto deffacts (deffacts albero-genealogico "Albero G (maschio mario) (femmina giulia) (genitore mario giulia)) Dopo ogni avvio e dopo il comando clear, CLIPS costruisce automaticamente i seguenti deftemplate e deffacts. (deftemplate initial-fact) (deffacts initial-fact (initial-fact))
39 Il costrutto defrule Uno dei principali metodi per la rappresentazione della conoscenza in CLIPS è attraverso la regola. Una regola è una collezione di condizioni ed azioni da compiere quando le condizioni sono soddisfatte. Lo sviluppatore di un sistema esperto definisce le regole che descrivono come risolvere un problema. Lesecuzione delle regole è basata sullesistenza o meno di fatti o istanze delle classi definite dallutente. CLIPS fornisce il meccanismo (inference engine) che cerca di eseguire un matching fra le regole e lo stato attuale del sistema (come rappresentato dalla fact-list e dalla instance-list) ed applica le azioni Utilizzeremo il termine pattern entity per far riferimento ad un fatto o ad una istanza di una classe definita dallutente
40 Definire le regole Le regole sono definite utilizzando il costrutto defrule. (defrule <rule-name> [<comment>] [<declaration>] ; Rule Properties <conditional-element>* ; Left-Hand Side (LHS) => <action>*) ; Right-Hand Side (RHS) Le azioni vengono eseguite in modalità sequenziale, se e solo se, sono soddisfatte tutte le condizioni (conditional-element) in LHS. (defrule esempio "Esempio di regola" (frigo luce accesa) (frigo porta aperta) => (assert (frigo cibo guasto)))
41 Ciclo d'esecuzione di regole Costruita la base di conoscenza (in forma di regole) e preparata la fact-list e/o la instance-list, il CLIPS è pronto per eseguire le regole. Nei linguaggi di programmazione convenzionali, il programmatore definisce esplicitamente la sequenza delle operazioni. Ciò non accade in CLIPS. La conoscenza (regole) e i dati (fatti e istanze) sono separati, e il motore inferenziale fornito dal CLIPS viene utilizzato per applicare la conoscenza ai dati.
42 Ciclo d'esecuzione di regole a) Si considera la lista delle regole poste nellagenda appartenenti al modulo corrente definito nel focus stack Si seleziona quella che si trova al top della lista e la si esegue Se non ci sono regole da attivare: Si elimina il modulo corrente dal focus stack Si passa il controllo al modulo successivo: Se il focus stack è vuoto lesecuzione termina, altrimenti si attivano le regole del nuovo modulo corrente b) Si esegue la RHS della regola selezionata per lesecuzione
43 Ciclo d'esecuzione di regole c) il risultato del passo b) comporta la modifica della memoria di lavoro questo provoca lattivazione di altre regole o la disattivazione di quelle già presenti nellagenda le regole attivate vengono messe nellagenda del modulo in cui sono definite e lordine è determinato: Salience, e Conflict resolution stategy le regole disattivate vengono eliminate dallagenda d) Se è stata definita una rivalutazione dinamica del salience, allora i valori dei salience appartenenti alle regole esistenti nellagenda, vengono rivalutati; si riprende dal punto a)
44 Strategia di risoluzione dei conflitti L agenda è la lista di tutte le regole che hanno la parte sinistra (LHS) soddisfatta (e non sono ancora state eseguite). Ogni modulo ha la sua propria agenda. Agisce come uno stack: la regola al top è la prima ad essere eseguita. Quando una regola viene attivata, la sua posizione nellagenda è basata sui seguenti fattori: al di sopra di tutte le regole con salience più basso ed al di sotto di tutte le regole con salience più alto; fra regole con stesso salience, è la strategia di risoluzione del conflitto (conflict resolution strategy) a determinare la posizione; se una regola è attivata (insieme ad altre) per la stessa modifica della WM, e i passi a) e b) non sono in grado di specificare lordine, allora viene ordinata in base alla sistemazione delle altre regole attivate insieme ad essa.
45 Salience Lutente può assegnare una priorità ad una regola tramite la salience rule property. I valori di salience possono essere valutati: - quando viene definita la regola, - quando viene attivata la regola o ad ogni esecuzione. (defrule test-1 (declare (salience 99)) (fire test-1) => (printout t "Rule test-1 firing." crlf)) (defrule test-2 (declare (salience (+?*constraint-salience* 10))) (fire test-2) => (printout t "Rule test-2 firing." crlf))
46 Conflict Resolution: Depth Strategy Le regole attivate sono posizionate sopra tutte le regole con lo stesso salience il fatto-a attiva la regola-1 e la regola-2 il fatto-b attiva la regola-3 e la regola-4 Allora se viene asserito il fatto-a prima del fatto-b, la regola-3 e la regola-4 saranno poste al di sopra della regola-1 e della regola-2 nellagenda. Però la posizione, della regola-1 relativa alla regola-2 e la regola-3 relativa alla regola-4 sarà arbitraria.
47 Conflict Resol.: Breadth Strategy Le regole attivate sono posizionate al di sotto di tutte le regole con lo stesso salience. il fatto-a attiva la regola-1 e la regola-2 il fatto-b attiva la regola-3 e la regola-4 Allora se viene asserito il fatto-a prima del fatto-b, la regola-1 e la regola-2 saranno poste al di sopra della regola-3 e della regola-4 nellagenda. Però la posizione, della regola-1 relativa alla regola-2 e la regola-3 relativa alla regola-4 sarà arbitraria.
48 Conflict Res.: Simplicity-Complexity Simplicity Strategy Fra tutte le regole con lo stesso salience, le nuove regole attivate sono posizionate al di sopra di tutte le attivazioni di regole con maggiore o uguale specificità. La specificity di un regola è determinata dal numero di confronti da effettuare nella LHS della regola. Complexity Strategy Fra tutte le regole con stesso salience, le nuove regole attivate sono poste al di sopra di tutte le attivazioni di regole con minore o uguale specificità.
49 Conflict Resolution: LEX Strategy Fra tutte le regole con lo stesso salience, le nuove regole attivate sono poste utilizzando la strategia OPS5. Ogni fatto ed ogni istanza sono etichettati con un time tag per indicare quanto siano recenti rispetto agli altri fatti e istanze nel sistema. I pattern entities associati ad ogni attivazione di regola sono ordinati in modo decrescente per determinare la posizione tra le regole con lo stesso salience. Unattivazione con un più recente pattern entities è sistemata prima di una attivazione con pattern entities meno recenti. rule-6: f-1,f-4 rule-5: f-1,f-2,f-3, rule-1: f-1,f-2,f-3 rule-2: f-3,f-1 rule-4: f-1,f-2, rule-3: f-2,f-1 rule-6: f-4,f-1 rule-5: f-3,f-2,f-1, rule-1: f-3,f-2,f-1 rule-2: f-3,f-1 rule-4: f-2,f-1, rule-3: f-2,f-1
50 Conflict Resolution: MEA Strategy Fra tutte le regole con lo stesso salience, le nuove regole attivate sono posizionate utilizzando la strategia OPS5. Il primo time tag del pattern entity associato con il primo pattern è utilizzato per determinare dove inserire lattivazione. Unattivazione, il cui primo time tag del pattern è più grande di altri primi tag delle attivazioni, è inserita prima delle altre attivazione nellagenda. Esempio: sei attivazioni con lordinamento MEA (dove la virgola alla fine dellattivazione indica la presenza di un pattern negato) rule-2: f-3,f-1 rule-3: f-2,f-1 rule-6: f-1,f-4 rule-5: f-1,f-2,f-3, rule-1: f-1,f-2,f-3 rule-4: f-1,f-2,
51 Conflict Resolut.: Ramdom Strategy Ad ogni attivazione viene assegnato un numero casuale utilizzato per determinare la sua posizione rispetto a tutte quelle con lo stesso salience. Questo numero casuale viene ricordato quando viene cambiata la strategia in modo che quando viene selezionata di nuovo la strategia random viene riprodotto lo stesso ordinamento.
52 LHS Sintassi La LHS di una regola CLIPS è costituita da una serie di elementi condizionali (CEs) che devono essere soddisfatti affinché la regola sia posta in agenda. Tipi di elementi condizionali: - pattern: contengono vincoli utilizzati per determinare se qualche pattern entities (facts or instances) soddisfa il pattern. - test: usato per valutare espressioni - and: un intero gruppo di CEs deve essere soddisfatto - or: solo un elemento di un gruppo di CEs deve essere soddisfatto - not: un CE non deve essere soddisfatto - exists: occorrenza di almeno un match parziale - forall: un insieme di CEs è soddisfatto per ogni match parziale - logical: la creazione di fatti e istanze sulla RHS dipende da alcune condizioni sulla LHS
53 Sintassi <conditional-element> ::= <pattern-ce> <assigned-pattern-ce> <not-ce> <and-ce> <or-ce> <logical-ce> <test-ce> <exists-ce> <forall-ce> LHS Sintassi
54 Pattern Conditional Element I Pattern conditional elements sono costituiti da una collezione di campi constraints, wildcards, e variabili utilizzati per vincolare linsieme dei fatti o istanze che hanno un matching con il pattern CE. I field constraints sono insiemi di vincoli utilizzati per testare un singolo vincolo o slot di un pattern entity. Oltre ai literal constraints, il CLIPS fornisce altri tre tipi di vincoli: connective constraints, predicate constraints, e return value constraints. I Wildcards sono utilizzati nei pattern CEs per indicare che un singolo campo o gruppo di campi può avere un matching con qualsiasi cosa. Le Variabili sono utilizzate per memorizzare il valore di un campo in modo che da utilizzarlo successivamente nella LHS di una regola, in altri elementi condizionali, o nella RHS di una regola come argomento di unazione.
55 Literal Constraint Il vincolo più elementare (literal constraint) che può essere utilizzato in un pattern CE è quello che definisce precisamente il valore esatto da mappare con un campo Un literal pattern CE è costituito da costanti (floats, integers, symbols, strings, e instance names). Non contiene variabili o wildcards. Tutti i vincoli in un literal pattern devono avere esattamente un matching con tutti i campi di un pattern entity. Un ordered pattern CE contenente solo literal: (<constant-1>... <constant-n>) Un deftemplate pattern CE contenente solo literal : (<deftemplate-name> (<slot-name-1> <constant-1>)... (<slot-name-n> <constant-n>))
56 Wildcards Single e Multifield CLIPS ha due simboli wildcard che possono essere utilizzati per il matching nei campi di un pattern single-field wildcard, denotato dal simbolo?, mappa ogni valore memorizzato in esattamente un campo nel pattern entity multifield wildcard, denotato dai simboli $?, mappa ogni valore in zero o più campi in un pattern entity
57 Wildcards Single e Multifield CLIPS> (clear) CLIPS> (defrule find-data (data? blue red $?) =>) CLIPS> (reset) CLIPS> (agenda) 0 find-data: f-5 0 find-data: f-3 For a total of 2 activations. CLIPS> (facts) f-0 (initial-fact) f-1 (data 1.0 blue "red") f-2 (data 1 blue) f-3 (data 1 blue red) f-4 (data 1 blue RED) f-5 (data 1 blue red 6.9) For a total of 6 facts. CLIPS>
58 Wildcards Single e Multifield I Multifield wildcard e i literal constraints possono essere utilizzati insieme per fornire delle potenti capacità di patternmatching (data $? YELLOW $?) (data YELLOW blue red green) (data YELLOW red) (data red YELLOW) (data YELLOW) (data YELLOW data YELLOW)
59 Variabili Single e Multifield I simboli wildcard rimpiazzano porzioni di un pattern ed accettano ogni valore. Il valore di un campo essendo rimpiazzato può essere catturato in una variabile per confronti, visualizzazioni o altre manipolazioni successive. Questo si ottiene facendo seguire direttamente il wildcard dal nome della variabile. <constraint> ::= <constant>? $? <single-field-variable> <multifield-variable> <single-field-variable> ::=?<variable-symbol> <multifield-variable> ::= $?<variable-symbol>
60 Variabili Single e Multifield CLIPS> (clear) CLIPS> (reset) CLIPS> (assert (data 2 blue green) (data 1 blue) (data 1 blue red)) <Fact-3> CLIPS> (facts) f-0 (initial-fact) f-1 (data 2 blue green) f-2 (data 1 blue) f-3 (data 1 blue red) For a total of 4 facts. CLIPS> (defrule find-data-1 (data?x?y?z) => (printout t?x " : "?y " : "?z crlf)) CLIPS> (run) 1 : blue : red 2 : blue : green CLIPS>
61 Variabili Single e Multifield CLIPS> (reset) CLIPS> (assert (data 1 blue) (data 1 blue red) (data 1 blue red 6.9)) <Fact-3> CLIPS> (facts) f-0 (initial-fact) f-1 (data 1 blue) f-2 (data 1 blue red) f-3 (data 1 blue red 6.9) For a total of 4 facts. CLIPS> (defrule find-data-1 (data?x $?y?z) => (printout t "?x = "?x crlf "?y = "?y crlf "?z = "?z crlf "------" crlf)) CLIPS> (run)
62 ?x = 1?y = (blue red)?z = ?x = 1?y = (blue)?z = red ?x = 1?y = ()?z = blue CLIPS> Variabili Single e Multifield
63 Variabili Single e Multifield CLIPS> (clear) CLIPS> (deffacts data (data red green) (data purple blue) (data purple green) (data red blue green) (data purple blue green) (data purple blue brown)) CLIPS> (defrule find-data-1 (data red?x) (data purple?x) =>) CLIPS> (defrule find-data-2 (data red $?x) (data purple $?x) =>) CLIPS> (reset) CLIPS> (facts) f-0 (initial-fact) f-1 (data red green) f-2 (data purple blue) f-3 (data purple green) f-4 (data red blue green) f-5 (data purple blue green) f-6 (data purple blue brown) For a total of 7 facts. CLIPS> (agenda) 0 find-data-2: f-4,f-5 0 find-data-1: f-1,f-3 0 find-data-2: f-1,f-3 For a total of 3 activations. CLIPS>
64 Sono disponibili tre connective constraints per collegare singoli vincoli e variabili. - & (and): soddisfatto se i due vincoli adiacenti sono soddisfatti; - (or): soddisfatto se uno dei due vincoli adiacenti è soddisfatto; - ~ (not): soddisfatto se il successivo vincolo non si verifica. Connettivi <term-1>&<term-2>... &<term-3> <term-1> <term-2>... <term-3> ~<term> <constraint> ::=? $? <connected-constraint> <connected-constraint> ::= <single-constraint> <single-constraint> & <connected-constraint> <single-constraint> <connected-constraint> <single-constraint> ::= <term> ~<term> <term> ::= <constant> <single-field-variable> <multifield-variable>
65 Connettivi CLIPS> (clear) CLIPS> (deftemplate data-b (slot value)) CLIPS> (deffacts AB (data-a green) (data-a blue) (data-b (value red)) (data-b (value blue))) CLIPS> (defrule example1-1 (data-a ~blue) =>) CLIPS> (defrule example1-2 (data-b (value ~red&~green)) =>) CLIPS> (defrule example1-3 (data-b (value green red)) =>) CLIPS> (reset) CLIPS> (facts) f-0 (initial-fact) f-1 (data-a green) f-2 (data-a blue) f-3 (data-b (value red)) f-4 (data-b (value blue)) For a total of 5 facts. CLIPS> (agenda) 0 example1-2: f-4 0 example1-3: f-3 0 example1-1: f-1 For a total of 3 activations. CLIPS>
66 Connettivi CLIPS> (clear) CLIPS> (deftemplate data-b (slot value)) CLIPS> (deffacts B (data-b (value red)) (data-b (value blue))) CLIPS> (defrule example2-1 (data-b (value?x&~red&~green)) => (printout t "?x in example2-1 = "?x crlf)) CLIPS> (defrule example2-2 (data-b (value?x&green red)) => (printout t "?x in example2-2 = "?x crlf)) CLIPS> (reset) CLIPS> (run)?x in example2-1 = blue?x in example2-2 = red CLIPS>
67 Predicati A volte è necessario vincolare un campo in base alla verità di una data espressione booleana. Un predicate constraint permette che una predicate function (che ritorna il simbolo FALSE se non soddisfatta e il simbolo non-false se soddisfatta) venga invocata durante il processo di pattern-matching. Tipicamente, i predicate constraint sono utilizzati in congiunzione con i connective constraint e unificazione di variabile (cioè bisogna unificare la variabile da testare e connetterla al predicate constraint). :<function-call> <term> ::= <constant> <single-field-variable> <multifield-variable> :<function-call>
68 CLIPS> (clear) CLIPS> (defrule example-1 (data?x&:(numberp?x)) =>) CLIPS> (assert (data 1) (data 2) (data red)) <Fact-2> CLIPS> (agenda) 0 example-1: f-1 0 example-1: f-0 For a total of 2 activations. CLIPS> Predicati
69 CLIPS> (clear) CLIPS> (defrule example-4 (data?y) (data?x&:(>?x?y)) =>) CLIPS> (assert (data 3) ; f-0 (data 5) ; f-1 (data 9)) ; f-2 <Fact-2> CLIPS> (agenda) 0 example-4: f-0,f-2 0 example-4: f-1,f-2 0 example-4: f-0,f-1 For a total of 3 activations. CLIPS> Predicati
70 Valori di ritorno È possibile utilizzare il valore restituito da una funzione esterna per vincolare il valore di un campo. Il return value constraint (=) permette allutente di chiamare una funzione esterna da un pattern. Il valore è incorporato direttamente nel pattern nella posizione in cui la funzione è stata chiamata, come se fosse stato un literal constraint, ed ogni matching patterns deve mappare questo valore come se la regola fosse stata scritta con questo valore. Si noti che la funzione viene valutata ogni volta che viene controllato il vincolo. =<function-call> <term> ::= <constant> <single-field-variable> <multifield-variable> :<function-call> =<function-call>
71 Valori di ritorno CLIPS> (clear) CLIPS> (deftemplate data (slot x) (slot y)) CLIPS> (defrule twice (data (x?x) (y =(* 2?x))) =>) CLIPS> (assert (data (x 2) (y 4)) ; f-0 (data (x 3) (y 9))) ; f-1 <Fact-1> CLIPS> (agenda) 0 twice: f-0 For a total of 1 activation. CLIPS>
72 Valori di ritorno CLIPS> (clear) CLIPS> (defclass DATA (is-a USER) (role concrete) (pattern-match reactive) (slot x (create-accessor write))) CLIPS> (defrule return-value-example-2 (object (is-a DATA) (x?x1)) (object (is-a DATA) (x?x2&=(+ 5?x1) =(- 12?x1))) =>) CLIPS> (make-instance of DATA (x 4)) [gen1] CLIPS> (make-instance of DATA (x 9)) [gen2] CLIPS> (make-instance of DATA (x 3)) [gen3] CLIPS> (agenda) 0 return-value-example-2: [gen3],[gen2] 0 return-value-example-2: [gen2],[gen3] 0 return-value-example-2: [gen1],[gen2] For a total of 3 activations. CLIPS>
73 Indirizzi Alcune azioni RHS, come retract e unmake-instance, operano su un intero pattern CE. Per indicare su quale fatto o istanza essi agiranno, può essere unificata una variabile con i fact-address o instance-address di un pattern CE. <assigned-pattern-ce> ::=?<variable-symbol> <- <pattern-ce>
74 Indirizzi (defrule dummy (data 1)?fact <- (dummy pattern) => (retract?fact)) (defrule compare-facts-1?f1 <- (color ~red)?f2 <- (color ~green) (test (neq?f1?f2)) => (printout t "Rule fires from different facts" crlf)) (defrule compare-facts-2?f1 <- (color ~red)?f2 <- (color ~green&:(neq?f1?f2)) => (printout t "Rule fires from different facts" crlf))
75 Test Una possibilità aggiuntiva è fornita con il test conditional element. Il test CE è soddisfatto se la chiamata alla funzione con il test CE è valutata non-false e insoddisfatta se la chiamata alla funzione è valutata FALSE. <test-ce> ::= (test <function-call>) CLIPS> (clear) CLIPS> (defrule example-1 (data?x) (value?y) (test (>= (abs (-?y?x)) 3)) =>) CLIPS> (assert (data 6) (value 9)) <Fact-1> CLIPS> (agenda) 0 example-1: f-0,f-1 For a total of 1 activation. CLIPS>
76 Or Il CE or consente lattivazione di una regola da uno dei CE. Se uno dei CE allinterno del CE or è soddisfatto, allora lintero CE or sarà soddisfatto. Il CE or ha lo stesso effetto di scrivere più regole con LHS e RHS simili. <or-ce> ::= (or <conditional-element>+) (defrule system-fault (error-status unknown) (or (temp high) (valve broken) (pump (status off))) => (printout t "The system has a fault." crlf))
77 And Il CLIPS assume che tutte le regole abbiano un and CE implicito su tutti i conditional elements della LHS. Questo significa che tutti i conditional elements nella LHS devono essere soddisfatti per poter attivare la regola. Il CLIPS fornisce anche un and CE esplicito. <and-ce> ::= (and <conditional-element>+) (defrule system-flow (error-status confirmed) (or (and (temp high) (valve closed)) (and (temp low) (valve open))) => (printout t "The system is having a flow problem." crlf))
78 Not Il not conditional element fornisce la possibilità di rappresentare lassenza di informazione. Il not CE è soddisfatto solo se il conditional element che contiene non è soddisfatto. <not-ce> ::= (not <conditional-element>)
79 Not (defrule high-flow-rate (temp high) (valve open) (not (error-status confirmed)) => (printout t "Recommend closing of valve due to high temp crlf)) (defrule check-valve (check-status?valve) (not (valve-broken?valve)) => (printout t "Device "?valve " is OK" crlf)) (defrule double-pattern (data red) (not (data red?x?x)) => (printout t "No patterns with red green green!" crlf ))
80 Exists exists CE fornisce un meccanismo per determinare se un gruppo di CE è soddisfatto da almeno un insieme di pattern entities. <exists-ce> ::= (exists <conditional-element>+) (defrule example (exists (a?x) (b?x)) =>) è equivalente a (defrule example (not (not (and (a?x) (b?x)))) =>)
81 Forall forall CE fornisce un meccanismo per determinare se un gruppo di CE è soddisfatto per ogni occorrenza di un altro specificato CE. <forall-ce> ::= (forall <conditional-element> <conditional-element>+) (defrule example (forall (a?x) (b?x) (c?x)) =>) è equivalente a (defrule example (not (and (a?x) (not (and (b?x) (c?x))))) =>)
82 CLIPS> (clear) CLIPS> (defrule all-students-passed (forall (student?name) (reading?name) (writing?name) (arithmetic?name)) => (printout t "All students passed." crlf)) CLIPS> (reset) CLIPS> (agenda) 0 all-students-passed: f-0, For a total of 1 activation. CLIPS> (assert (student Bob)) <Fact-1> CLIPS> (agenda) CLIPS> Forall
83 CLIPS> (assert (reading Bob) (writing Bob)) <Fact-3> CLIPS> (agenda) CLIPS> CLIPS> (assert (arithmetic Bob)) <Fact-4> CLIPS> (agenda) 0 all-students-passed: f-0, For a total of 1 activation. CLIPS> CLIPS> (assert (student John)) <Fact-5> CLIPS> (agenda) CLIPS> (retract 1 5) CLIPS> (agenda) 0 all-students-passed: f-0, For a total of 1 activation. CLIPS> Forall
84 Proprietà delle regole È possibile definire le proprietà o le caratteristiche di una regola. Le caratteristiche sono dichiarate nella LHS di un regola utilizzando la parola chiave declare. In una regola deve esserci un solo comando declare e deve apparire prima di tutti i CE della LHS <declaration> ::= (declare <rule-property>+) <rule-property> ::= (salience <integer-expression>) (auto-focus <boolean-symbol>) <boolean-symbol> ::= TRUE FALSE
85 Salience La salience permette di assegnare una priorità ad una regola. Quando ci sono più regole in agenda, verrà eseguita quella con priorità più alta. Il valore del salience deve essere un intero compreso tra e Se non specificato, il valore salience di default per una regola è zero. (defrule test-1 (declare (salience 99)) (fire test-1) => (printout t "Rule test-1 firing." crlf)) (defrule test-2 (declare (salience (+?*constraint-salience* 10))) (fire test-2) => (printout t "Rule test-2 firing." crlf))
86 Defglobal Il costrutto defglobal permette la definizione e laccesso a variabili globali. È possibile accedere alle variabili globali in un processo di pattern-matching, ma il loro cambiamento non invoca il processo di pattern-matching. La funzione bind viene utilizzata per settare il loro valore. Il loro valore originale viene ripristinato utilizzando il comando reset oppure invocando la funzione bind senza valori. Possono essere rimosse utilizzando il comando clear o il comando undefglobal. (defglobal [<defmodule-name>] <global-assignment>*) <global-assignment> ::= <global-variable> = <expression> <global-variable> ::=?*<symbol>*
87 Defglobal Luso delle variabili globali è permesso ovunque (come per le variabili locali), ma con due eccezioni: 1. Non possono essere utilizzate come parametri in deffunction, defmethod, o message-handler; 2. Non possono essere utilizzate nello stesso modo in cui sono usate le variabili locali nella LHS di una regola per legare un valore. Regola illegale (defrule example (fact?*x*) =>) Regola legale (defrule example (fact?y&:(>?y?*x*)) =>)
88 Defglobal (defrule example (fact?y&:(>?y?*x*)) =>) Questa regola non viene modificata quando cambia il valore di?*x*. Per esempio, se?*x* è 4 e viene aggiunto il fatto (fact 3), allora la regola non è soddisfatta. Se si cambia il valore di?*x* a 2, la regola non sarà attivata. (defglobal?*x* = 3?*y* =?*x*?*z* = (+?*x*?*y*)?*q* = (create$ a b c))
89 Deffunction Il costrutto deffunction permette la definizione di nuove funzioni direttamente in CLIPS. Le deffunctions sono equivalenti alle altre funzioni, lunica differenza è che le deffunctions sono scritte in CLIPS ed interpretate, mentre le funzioni esterne sono scritte in un linguaggio esterno (come il C) ed eseguite direttamente dal CLIPS. Le deffunctions permetto laggiunta di nuove funzioni senza ricompilare il CLIPS. (deffunction <name> [<comment>] (<regular-parameter>* [<wildcard-parameter>]) <action>*) <regular-parameter> ::= <single-field-variable> <wildcard-parameter> ::= <multifield-variable> Una deffunction deve avere un unico nome, non esiste loverloading, e deve essere dichiarata prima di essere usata, ad eccezioni delle deffunctions ricorsive.
90 Deffunction CLIPS> (clear) CLIPS> (deffunction print-args (?a?b $?c) (printout t?a " "?b " and " (length?c) " extras: "?c crlf)) CLIPS> (print-args 1 2) 1 2 and 0 extras: () CLIPS> (print-args a b c d) a b and 2 extras: (c d) CLIPS> Quando una deffunction viene invocata, le sue azioni sono eseguite nellordine. Il valore restituito da una deffunction è la valutazione dellultima azione. Se una deffunction non ha azioni essa restituisce il simbolo FALSE. Se si verifica un errore tutte le azioni non ancora eseguite verranno abortite, e verrà restituito il simbolo FALSE.
91 Deffunction (deffunction factorial (?a) (if (or (not (integerp?a)) (<?a 0)) then (printout t "Factorial Error!" crlf) else (if (=?a 0) then 1 else (*?a (factorial (-?a 1)))))) La ricorsione mutua fra due deffunctions richiede una dichiarazione forward: un dichiarazione senza azioni. (deffunction foo ()) (deffunction bar () (foo)) (deffunction foo () (bar))
92 I moduli CLIPS supporta lo sviluppo e lesecuzione modulare della conoscenza. I moduli CLIPS, creati con il costrutto defmodule, permettono il raggruppamento di un insieme di costrutti in modo da controllare esplicitamente laccesso ai costrutti da altri moduli. Questo tipo di controllo è simile allo scope globale e locale utilizzato in linguaggi come il C o Ada. Restringendo laccesso ai costrutti deftemplate e defclass, i moduli possono funzionare come blackboards, permettendo solo a certi fatti e a certe istanze di essere visibili in altri moduli. I moduli sono usati anche da regole per fornire il controllo dellesecuzione.
93 (defmodule <module-name> [<comment>] <port-spec>*) <port-spec> ::= (export <port-item>) (import <module-name> <port-item>) <port-item> ::=?ALL?NONE <port-construct>?all <port-construct>?none <port-construct> <construct-name>+ <port-construct> ::= deftemplate defclass defglobal deffunction defgeneric I moduli
94 I moduli (defmodule FOO (import BAR?ALL) (import YAK deftemplate?all) (import GOZ defglobal x y z) (export defgeneric +) (export defclass?all)) (defrule DETECTION::Find-Fault (sensor (name?name) (value bad)) => (assert (fault (name?name)))) (defglobal DETECTION?*count* = 0) (defmessage-handler DETECTION::COMPONENT get-charge () (*?self:flux?self:flow)) (defmethod DETECTION::+ ((?x STRING) (?y STRING)) (str-cat?x?y))
95 I moduli Definito il modulo è possibile specificare i costrutti che ne faranno parte. I costrutti deffacts, deftemplate, defrule, deffunction, defgeneric, defclass, e definstances specificano il modulo in cui saranno presenti come parte del nome. Il modulo del costrutto defglobal è indicato specificando il nome del modulo dopo la parola chiave defglobal. Il modulo di un defmethod è specificato come parte dello specificatore di generic function. (defrule DETECTION::Find-Fault (sensor (name?name) (value bad)) => (assert (fault (name?name)))) (defglobal DETECTION?*count* = 0) (defmessage-handler DETECTION::COMPONENT get-charge () (*?self:flux?self:flow)) (defmethod DETECTION::+ ((?x STRING) (?y STRING)) (str-cat?x?y))
96 CLIPS> (clear) CLIPS> (defmodule A) CLIPS> (defmodule B) CLIPS> (defrule foo =>) CLIPS> (defrule A::bar =>) CLIPS> (list-defrules) bar For a total of 1 defrule. CLIPS> (set-current-module B) A CLIPS> (list-defrules) foo For a total of 1 defrule. CLIPS> I moduli
97 I moduli I comandi undefrule e ppdefrule richiedono il nome del costrutto sul quale operare. Con i moduli è possibile avere costrutti con lo stesso nome ma in moduli diversi. Module specifier: è la specifica esplicita del modulo di un nome (un symbol), module-name::. Per esempio MAIN::find-stuff, indica che il costrutto findstuff è nel modulo MAIN (il modulo standard del CLIPS). Un modulo può anche essere specificato implicitamente poiché esiste sempre un modulo corrente. Il modulo corrente viene cambiato ogni volta che si utilizza il costrutto defmodule oppure la funzione set-currentmodule
98 CLIPS> (clear) CLIPS> (defmodule A) CLIPS> (defglobal A?*x* = 0) CLIPS> (defmodule B) CLIPS> (defglobal B?*y* = 1) CLIPS> (ppdefglobal y) (defglobal B?*y* = 1) CLIPS> (ppdefglobal B::y) (defglobal B?*y* = 1) CLIPS> (ppdefglobal x) [PRNTUTIL1] Unable to find defglobal x CLIPS> (ppdefglobal A::x) (defglobal A?*x* = 0) CLIPS> I moduli
99 I moduli In generale i costrutti di un modulo non possono essere utilizzati da un altro modulo. Un costrutto si dice visibile in un modulo se il costrutto può essere utilizzato in quel modulo. Quindi, se per esempio, il modulo B vuole utilizzare il deftemplate foo definito nel modulo A, allora il modulo A deve esportare il deftemplate foo e il modulo B lo deve importare. CLIPS> (clear) CLIPS> (defmodule A) CLIPS> (deftemplate A::foo (slot x)) CLIPS> (defmodule B) CLIPS> (defrule B::bar (foo (x 3)) =>) [PRNTUTIL2] Syntax Error: Check appropriate syntax for defrule ERROR: (defrule B::bar (foo ( CLIPS> (clear) CLIPS> (defmodule A (export deftemplate foo)) CLIPS> (deftemplate A::foo (slot x)) CLIPS> (defmodule B (import A deftemplate foo)) CLIPS> (defrule B::bar (foo (x 3)) =>) CLIPS>
100 I moduli Export specifications Un modulo può esportare tutti i suoi costrutti visibili: export? ALL Un modulo può esportare tutti i suoi costrutti visibili di un tipo particolare: export name-of-the-construct?all Un modulo può esportare specifici costrutti visibili: export name-of-the-construct-type name-of-one-or-more-visible-constructs-of-the-specified-type (defmodule A (export?all)) (defmodule B (export deftemplate?all)) (defmodule C (export defglobal foo bar yak))
101 I moduli Import Specification Un modulo può importare tutti i costrutti visibili di un altro modulo: import module-name?all Un modulo può importare tutti i costrutti visibili di un tipo particolare da un altro modulo: import module-name name-of-the-constructtype?all Un modulo può importare specifici costrutti visibili di un altro modulo: import module-name name-of-the-construct-type name-of-one-or-more-visible-constructs-of-the-specified-type (defmodule A (import D?ALL)) (defmodule B (import D deftemplate?all)) (defmodule C (import D defglobal foo bar yak))
102 I moduli I fatti e le istanze appartengono ai moduli in cui sono definiti i corrispondenti deftemplate e defclass (e non ai moduli che li creano). I fatti e le istanze sono visibili nei moduli che importano i corrispondenti deftemplate o defclass. Questo permette una base di conoscenza partizionata in modo che le regole e gli altri costrutti possono vedere solo le istanze e i fatti cui sono interessati. Si noti che il deftemplate initial-fact deve essere esplicitamente importato dal modulo MAIN
103 CLIPS> (clear) CLIPS> (defmodule A (export deftemplate foo bar)) CLIPS> (deftemplate A::foo (slot x)) CLIPS> (deftemplate A::bar (slot y)) CLIPS> (deffacts A::info (foo (x 3)) (bar (y 4))) CLIPS> (defmodule B (import A deftemplate foo)) CLIPS> (reset) CLIPS> (facts A) f-1 (foo (x 3)) f-2 (bar (y 4)) For a total of 2 facts. CLIPS> (facts B) f-1 (foo (x 3)) For a total of 1 fact. CLIPS> I moduli
104 I moduli Ogni modulo ha la sua propria rete di pattern-matching per le sue regole ed una sua propria agenda. Quando vien dato il comando run, viene eseguita lagenda del modulo attivo. Lesecuzione delle regole continua finché non diventa attivo un altro modulo, non ci sono altre regole nellagenda, oppure viene eseguita la funzione return da una RHS di una regola. Quando un modulo attivo termina lesecuzione delle regole in agenda, il current focus viene rimosso dal focus stack e diventa attivo il successivo modulo sul focus stack. Prima che una regola venga eseguita, il modulo corrente diventa quello in cui la regola è definita. Il current focus può essere definito utilizzando il comando focus.
105 CLIPS> (clear) CLIPS> (defmodule MAIN (export?all)) CLIPS> (defrule MAIN::focus-example => (printout t "Firing rule in module MAIN." crlf) (focus A B)) CLIPS> (defmodule A (import MAIN deftemplate initial-fact)) CLIPS> (defrule A::example-rule => (printout t "Firing rule in module A." crlf)) CLIPS> (defmodule B (import MAIN deftemplate initial-fact)) CLIPS> (defrule B::example-rule => (printout t "Firing rule in module B." crlf)) CLIPS> (reset) CLIPS> (run) Firing rule in module MAIN. Firing rule in module A. Firing rule in module B. CLIPS> I moduli
Corso di Laurea in INFORMATICA
Corso di Laurea in INFORMATICA INGEGNERIA DELLA CONOSCENZA E SISTEMI ESPERTI (a.a. 2010-2011) MODULO 2 Parte III 1.4 CLIPS: C Language Integrated Production System Organizzazzione della Conoscenza in Moduli
DettagliUniversità degli Studi di Bari Dipartimento di Informatica. Laboratorio di ICSE. CLIPS - Parte 1 - Nicola Di Mauro ndm@di.uniba.it
Università degli Studi di Bari Dipartimento di Informatica Laboratorio di ICSE CLIPS - Parte 1 - Nicola Di Mauro ndm@di.uniba.it Claudio Taranto claudio.taranto@di.uniba.it Contatti Contatti Studio: stanza
DettagliUniversità degli Studi di Bari Dipartimento di Informatica. Laboratorio di ICSE. CLIPS - Parte 2 - Claudia d'amato claudia.damato@di.uniba.
Università degli Studi di Bari Dipartimento di Informatica Laboratorio di ICSE CLIPS - Parte 2 - Claudia d'amato claudia.damato@di.uniba.it Claudio Taranto claudio.taranto@di.uniba.it Wildcards Single
DettagliCorso di Laurea in INFORMATICA
Corso di Laurea in INFORMATICA INGEGNERIA DELLA CONOSCENZA E SISTEMI ESPERTI (a.a. 2010-2011) MODULO 1 Parte II 1.4 CLIPS: C Language Integrated Production System I fatti ordinati ed I Template. Claudia
DettagliUniversità degli Studi di Bari Dipartimento di Informatica. Laboratorio di ICSE. CLIPS - Parte 3 - Claudia d'amato claudia.damato@di.uniba.
Università degli Studi di Bari Dipartimento di Informatica Laboratorio di ICSE CLIPS - Parte 3 - Claudia d'amato claudia.damato@di.uniba.it Claudio Taranto claudio.taranto@di.uniba.it Conoscenza procedurale
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
DettagliINDICE. Vista Libretto Livello Digitale 2. Importazione di dati da strumento 3. Inserisci File Vari 5. Compensazione Quote 5.
Prodotto da INDICE Vista Libretto Livello Digitale 2 Importazione di dati da strumento 3 Inserisci File Vari 5 Compensazione Quote 5 Uscite 6 File Esporta Livellazioni (.CSV) 6 Corso Livello Digitale Pag.
DettagliLinguaggio C: introduzione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
DettagliIntroduzione alle macchine a stati (non definitivo)
Introduzione alle macchine a stati (non definitivo) - Introduzione Il modo migliore per affrontare un problema di automazione industriale (anche non particolarmente complesso) consiste nel dividerlo in
DettagliCONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI
CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI Introduzione alle basi di dati (2) 2 Modelli dei dati, schemi e istanze (1) Nell approccio con basi di dati è fondamentale avere un certo livello di
DettagliPG5 Starter Training Applicazione File System Daniel Ernst EN02 2012-02-26 Stefano Peracchi IT01 2013-05-20
PG5 Starter Training Applicazione File System Daniel Ernst EN02 2012-02-26 Stefano Peracchi IT01 2013-05-20 Introduzione Materiale richiesto Notebook o computer Controllore PCD1 E Cavo USB Scheda «Training»
DettagliVBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.
Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?
DettagliDefinizione di metodi
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 9 Definizione di metodi Carla Limongelli Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di metodi 1 Contenuti
DettagliINTRODUZIONE ALLE BASI DATI RELAZIONALI
INTRODUZIONE ALLE BASI DATI RELAZIONALI RELAZIONI E TABELLE Nelle BASI DI DATI RELAZIONALI le informazioni sono organizzate in TABELLE; Le tabelle sono rappresentate mediante griglie suddivise in RIGHE
DettagliProcedura operativa per la gestione della funzione di formazione classi prime
Procedura operativa per la gestione della funzione di formazione classi prime Questa funzione viene fornita allo scopo di effettuare la formazione delle classi prime nel rispetto dei parametri indicati
DettagliCAPITOLO V. DATABASE: Il modello relazionale
CAPITOLO V DATABASE: Il modello relazionale Il modello relazionale offre una rappresentazione matematica dei dati basata sul concetto di relazione normalizzata. I principi del modello relazionale furono
DettagliIntelligenza Artificiale. A n n o A c c a d e m i c o La Rappresentazione della Conoscenza: Il Linguaggio OPS5
Intelligenza Artificiale A n n o A c c a d e m i c o 2 0 0 8-2 0 0 9 La Rappresentazione della Conoscenza: Il Linguaggio OPS5 1 Sommario Introduzione al linguaggio OPS5 La working memory Le regole di produzione
DettagliACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati.
ACCESS Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati. Database Relazionale: tipo di database attualmente più diffuso grazie alla
DettagliVISUAL BASIC FOR APPLICATION
VISUAL BASIC FOR APPLICATION LA PIATTAFORMA DI SVILUPPO GLI ELEMENTI DI VBA Finestra di progetto: mostra l elenco gerarchico dei progetti aperti e di tutti i moduli di codice e finestre di interfaccia
DettagliIngegneria del Software
Ingegneria del Software Analisi Object Oriented ed Elementi di Programmazione OO Origini Le metodologie ad oggi nascono negli anni 70 ma si affermano solo nelgi anni 80 grazie alla nascita dei linguaggi
Dettagli(1) (2) (3) (4) 11 nessuno/a 9 10. (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B
Compito: Domanda 1 Per l'algoritmo fornito di seguito, qual è il valore assunto dalla variabile contatore quando l'algoritmo termina: Passo 1 Poni il valore di contatore a 1 Passo 2 Ripeti i passi da 3
DettagliOggetto: Utility per la variazione massiva del codice IVA.
Oggetto: Utility per la variazione massiva del codice IVA. Questa utility permette la variazione di massa dei codici IVA nelle anagrafiche articoli, clienti e fornitori e nei documenti significativi al
DettagliOgni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette
Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette all'utente e ai programmi di gestire i dispositivi e le periferiche
DettagliIl sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.
PROBLEMA. Un albergo di una grande città intende gestire in modo automatizzato sia le prenotazioni sia i soggiorni e realizzare un database. Ogni cliente viene individuato, tra l altro, con i dati anagrafici,
DettagliNote_Batch_Application 04/02/2011
Note Utente Batch Application Cielonext La Batch Application consente di eseguire lavori sottomessi consentendo agli utenti di procedere con altre operazioni senza dover attendere la conclusione dei suddetti
DettagliFunzioni condizionali
Excel Base- Lezione 4 Funzioni condizionali Sono funzioni il cui risultato è dipendente dal verificarsi o meno di una o più condizioni. Esempio: SE CONTA.SE SOMMA.SE E, O 1 Funzione SE La funzione SE serve
DettagliArchitettura degli elaboratori Docente:
Politecnico di Milano Il File System Architettura degli elaboratori Docente: Ouejdane Mejri mejri@elet.polimi.it Sommario File Attributi Operazioni Struttura Organizzazione Directory Protezione Il File
DettagliIndice. Introduzione 2. 1.1.1 Collegamento iniziale 3. 1.1.2 Identificazione della sede operativa (sede di lavoro) 5
S.I.L. Sintesi Comunicazioni Obbligatorie [COB] Import Massivo XML Agosto 2009 Indice Argomento Pag. Introduzione 2 1.1.1 Collegamento iniziale 3 1.1.2 Identificazione della sede operativa (sede di lavoro)
DettagliSQL Server 2008. Architettura Client-Server. SQL Server 2008. Introduzione all uso di SQL Server 2008. Dutto Riccardo. http://dbdmg.polito.
SQL Server 2008 Introduzione all uso di SQL Server 2008 Dutto Riccardo http://dbdmg.polito.it SQL Server 2008 Gestione dei server OLAP e OLTP Gestione Utenti Creazione e gestione DB SQL Server Business
DettagliCodice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli
Codice La relazione che associa ad ogni successione ben formata di simboli di un alfabeto il dato corrispondente è detta codice. Un codice mette quindi in relazione le successioni di simboli con il significato
DettagliUnità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.
Unità Didattica 3 Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa
DettagliAXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori
AXO - Architettura dei Calcolatori e Sistema Operativo organizzazione strutturata dei calcolatori I livelli I calcolatori sono progettati come una serie di livelli ognuno dei quali si basa sui livelli
DettagliAutodesk Map parte I digitalizzazione e importazione dati
Autodesk Map parte I digitalizzazione e importazione dati Marco Negretti e-mail: marco.negretti@polimi.it http://geomatica.como.polimi.it V 5.1 10/10/08 I dati in Autodesk Map I dati vengono memorizzati
Dettagli3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.
3.5 STAMPA UNIONE Le funzioni della stampa unione (o stampa in serie) permettono di collegare un documento principale con un elenco di nominativi e indirizzi, creando così tanti esemplari uguali nel contenuto,
DettagliLabVIEW parte II. Ing. Gianfranco Miele November 3, 2010
Ing. Gianfranco Miele (g.miele@unicas.it) http://www.docente.unicas.it/gianfranco_miele November 3, 2010 Le stringhe Una stringa è una sequenza di caratteri Ogni carattere ha una corrispondente codifica
DettagliClassi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++
Informatica 3 Informatica 3 LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) Modulo 1: Introduzione: oggetti e classi Modulo 2: Link e associazioni Modulo 3: Aggregazione Lezione 7 -
DettagliIl file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.
Il File System Il file system È quella parte del Sistema Operativo che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa. Realizza i concetti
DettagliEsame Laboratorio di Sistemi Operativi Cognome Nome Mat.
Esame Laboratorio di Sistemi Operativi 2-01-2008 Il compito è costituito da domande chiuse e domande aperte. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 1 ora. Domande chiuse:
DettagliTecnica basata su Relazioni I/O Circuito di Clock
SIMULAZIONE: Tecnica basata su Relazioni I/O Visualizzare nel SIMATIC Manager l «online» Carichiamo OB1 utilizzando uno dei 3 modi: A drag & drop dall offline all online B Menu «Sistema di destinazione»
DettagliManuale di Aggiornamento BOLLETTINO. Rel B. DATALOG Soluzioni Integrate a 32 Bit
KING Manuale di Aggiornamento BOLLETTINO Rel. 4.70.2B DATALOG Soluzioni Integrate a 32 Bit - 2 - Manuale di Aggiornamento Sommario 1 PER APPLICARE L AGGIORNAMENTO... 3 2 NOVITA 4.70.2B... 5 2.1 Annullo
DettagliDOCUMENTAZIONE WEB RAIN - ACCESSO CLIENTI
DOCUMENTAZIONE WEB RAIN - ACCESSO CLIENTI L accesso alle informazioni sullo stato degli ordini di vendita del sistema informativo della società RAIN avviene attraverso il sito internet della società stessa
DettagliVariabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliPSICOMETRIA. Esercitazione n.1. C.d.L. Comunicazione e Psicologia a.a. 2012/13
PSICOMETRIA Esercitazione n.1 C.d.L. Comunicazione e Psicologia a.a. 2012/13 ESERCITAZIONE 1: INDICE 1. Informazioni di carattere generale sulle esercitazioni 2. Il foglio di calcolo (Excel) 3. Avviare
DettagliCostruttore di numeri della WebDewey
Costruttore di numeri della WebDewey Elaborazione da parte della Redazione WebDewey Italiana sulla base di documenti originali prodotti da OCLC o pubblicati sul blog 025.431 L approccio generale alla costruzione
DettagliCorso di Fondamenti di Informatica Classi di istruzioni 2
Corso di Informatica Classi di istruzioni 2 Anno Accademico 2010/2011 Francesco Tortorella Strutture di controllo Caratteristica essenziale degli algoritmi è la possibilità di decidere le operazioni da
DettagliDisequazioni in una incognita. La rappresentazione delle soluzioni
Disequazioni in una incognita Una disequazione in una incognita è una disuguaglianza tra due espressioni contenenti una variabile (detta incognita) verificata solo per particolari valori attribuirti alla
DettagliDESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE.
DESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE. PIANIFICAZIONE La pianificazione è la prima fase. Questa è la più delicata
DettagliJavascript e CSS nelle pagine WEB
1 Javascript e CSS nelle pagine WEB Esempi applicativi Autrice: Turso Antonella Carmen INDICE ARGOMENTI 2... 5 LEZIONE 1... 6 COSA SONO I JAVASCRIPT... 6 LEZIONE 2... 8 STRUTTURA DEL LINGUAGGIO JAVASCRIPT
DettagliHardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre
Hardware, software e periferiche Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre Riepilogo - Concetti di base dell informatica L'informatica è quel settore scientifico disciplinare
DettagliImportazione dati. e/fiscali Spesometro - Rel. 04.05.01. con gestionale e/satto. Gestionale e/satto
e/fiscali Spesometro - Rel. 04.05.01 Importazione dati con gestionale e/satto 06118930012 Tribunale di Torino 2044/91 C.C.I.A.A. 761816 - www.eurosoftware.it Pagina 1 ATTENZIONE. Per poter procedere con
Dettaglitesto Saveris Web Access Software Istruzioni per l'uso
testo Saveris Web Access Software Istruzioni per l'uso 2 1 Indice 1 Indice 1 Indice... 3 2 Descrizione delle prestazioni... 4 2.1. Utilizzo... 4 2.2. Requisiti di sistema... 4 3 Installazione... 5 3.1.
DettagliIMPORTAZIONE PRESENZE DA RILEVATORI ELETTRONICI. tramite file tracciato
IMPORTAZIONE PRESENZE DA RILEVATORI ELETTRONICI tramite file tracciato 1. Associazione del numero di badge ai nominativi Il programma PowerDIP consente di importare le presenze acquisiste con i rilevatori
Dettagli4 GLI ARRAY E LE STRINGHE
13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si
DettagliManuale del software Supplemento. Comunicazione tra sensore per rilevamento oggetti O2D2xx e Siemens Simatic S7 704567 / 00 02 / 2011
Manuale del software Supplemento Comunicazione tra sensore per rilevamento oggetti O2D2xx e Siemens Simatic S7 704567 / 00 02 / 2011 Indice 1 Premessa 3 1.1 Simboli utilizzati 3 2 Generalità 3 3 Connessione
DettagliLe nuove utenze di accesso a SICO (da quelle di ufficio a quelle personali)
Identificazione dell utente Le nuove utenze di accesso a SICO Identificazione dell utente Fino allo scorso anno le utenze per l accesso a SICO non erano personali ma associate all Ente o all ufficio, a
DettagliUD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita
UD4 - MATLAB M-file. Efficienza degli algoritmi. Formati d uscita M-files In MatLab è possibile eseguire istruzioni contenute in file esterni; Tali file sono chiamati M-file perché devono avere estensione.m
DettagliLab. di Sistemi Operativi - Esercitazione - Comandi Shell
Lab. di Sistemi Operativi - Esercitazione - Comandi Shell 1 - Esercizi Comandi Unix - 2 Esercizio n 0 0a) creare una cartella EsercitazioneLSO-1 nella directory di lavoro 0b) creare un file testo chiamato
DettagliWINDOWS95. 1. Avviare Windows95. Avviare Windows95 non è un problema: parte. automaticamente all accensione del computer. 2. Barra delle applicazioni
WINDOWS95 1. Avviare Windows95 Avviare Windows95 non è un problema: parte automaticamente all accensione del computer. 2. Barra delle applicazioni 1 La barra delle applicazioni permette di richiamare le
DettagliManuale d uso DropSheep 4 imaio Gestione Pixmania-PRO Ver 1.1
Manuale d uso DropSheep 4 imaio Gestione Pixmania-PRO Ver 1.1 Release NOTE 1.1 Prima Versione del Manuale INDICE 1-INTRODUZIONE... 4 2- GESTIONE DEL CATALOGO PIXMANIA-PRO SU IMAIO... 5 3-Configurazione
DettagliModulo 17: Invio del BF tramite
Modulo 17: Invio del BF tramite E-mail Obiettivi del modulo 17 Gestione dell invio In questo modulo viene spiegata la funzione che permette di inviare per e-mail al cliente la prenotazione creata in agenzia
DettagliEXCEL: FORMATTAZIONE E FORMULE
EXCEL: FORMATTAZIONE E FORMULE Test VERO o FALSO (se FALSO giustifica la risposta) 1) In excel il contenuto di una cella viene visualizzato nella barra di stato 2) In excel il simbolo = viene utilizzato
DettagliCorso di Laurea Ingegneria Informatica Laboratorio di Informatica
Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Capitolo 4 Traduzione ed esecuzione di programmi Ottobre 2006 Traduzione ed esecuzione di programmi 1 Nota bene Alcune parti del presente
DettagliFUNZIONI DI BASE PANNELLO SMS
FUNZIONI DI BASE PANNELLO SMS Il pannello sms può essere utilizzato in vari: 1 Inviare un singolo sms (in questo settare solo in mittente in opzioni) 2 inviare sms multipli alla propria rubrica divisa
DettagliIL CONCETTO DI FILE. È illecito operare oltre la fine del file.
IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni
DettagliPowerDIP Software gestione presenze del personale aziendale. - Guida all inserimento e gestione dei turni di lavoro -
PowerDIP Software gestione presenze del personale aziendale - Guida all inserimento e gestione dei turni di lavoro - Informazioni preliminari. E necessario innanzitutto scaricare e installare l ultima
DettagliGestione delle eccezioni in Java
Gestione delle eccezioni in Java Fondamenti di Informatica Ingegneria Gestionale Canale AL 1 Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel
DettagliVia Oberdan, 42, 48018 Faenza (RA) Italy Tel.: ++39-0546-677111 Fax: ++39-0546-677577 E-mail: support_ahd@eu.irco.com WAVE MODE MOBILE GUIDA RAPIDA
Via Oberdan, 4, 4808 Faenza (RA) Italy Tel.: ++9-0546-677 Fax: ++9-0546-677577 E-mail: support_ahd@eu.irco.com WAVE MODE MOBILE GUIDA RAPIDA * tasti con doppia funzionalità : dipende dalla modalità di
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 1
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E03 Esempi di algoritmi e programmi A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di algoritmi e
DettagliFiles in C++ Fondamenti di Informatica. R. Basili. a.a. 2006-2007
Files in C++ Fondamenti di Informatica R. Basili a.a. 2006-2007 Sintesi Motivazioni Definizione di file in C++ Un esempio Uso dei file Esempi Esercizi Motivazioni il programma in esecuzione legge (sequenzialmente)
DettagliEsercizio 1: archivio CD e DVD
Esercizio 1: archivio CD e DVD Realizzare un applicazione Java per la creazione e la consultazione di un archivio di dischi ottici (CD e DVD). L applicazione riceve da standard input in maniera interattiva
DettagliProgrammazione Orientata agli Oggetti
Programmazione Orientata agli Oggetti Lezione 13 La programmazione ad oggetti si basa su due principi fondamentali ereditarietà polimorfismo Queste due proprietà consentono di definire nuovi tipi di dato
DettagliQuick Print. Quick Print. Guida Utente. Copyright 2013 Hyperbolic Software. www.hyperbolicsoftware.com
Quick Print Quick Print Guida Utente I nomi dei prodotti menzionati in questo manuale sono proprietà delle rispettive società. Copyright 2013 Hyperbolic Software. www.hyperbolicsoftware.com 1 Tabella dei
DettagliAGGIORNAMENTO SOFTWARE
AGGIORNAMENTO SOFTWARE Release Note Proger ClipPartsNet WE 4.1.16.16 MAGGIO 2014 Questo documento elenca sinteticamente tutte le implementazioni software rese disponibili a partire dalla release di Proger
DettagliModulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1
Concetti base della Tecnologia dell informazione Algoritmi Come interpreta un computer un problema? Algoritmi Algoritmo: sequenza ordinata di istruzioni per risolvere un problema (tradotto: sequenza di
DettagliModulo 2 Data Base - Modello Relazionale
Modulo 2 Data Base - Modello Relazionale Università degli Studi di Salerno Corso di Laurea in Scienze della comunicazione Informatica generale Docente: Angela Peduto A.A. 2004/2005 Modello Relazionale
DettagliCompilazione on-line del Piano di Studio
Compilazione on-line del Piano di Studio 1 Indice 1. INTRODUZIONE E ACCESSO AL SISTEMA... 3 1.1. Accesso alla funzionalità... 3 2. COMPILAZIONE DEL PIANO DI STUDIO... 4 2.1. Struttura della procedura di
DettagliFILE E INDICI Architettura DBMS
FILE E INDICI Architettura DBMS Giorgio Giacinto 2010 Database 2 Dati su dispositivi di memorizzazione esterni! Dischi! si può leggere qualunque pagina a costo medio fisso! Nastri! si possono leggere le
DettagliIl calcolatore. Architettura di un calcolatore (Hardware)
Il calcolatore Prima parlare della programmazione, e' bene fare una brevissima introduzione su come sono strutturati i calcolatori elettronici. I calcolatori elettronici sono stati progettati e costruiti
DettagliPROGRAMMAZIONE EIA/ISO Macchine Utensili CNC
PROGRAMMAZIONE EIA/ISO Macchine Utensili CNC A cura di Massimo Reboldi La programmazione EIA/ISO! Introduzione! Assi e Riferimenti! Linguaggio di programmazione! Grammatica;! Lessico;! Funzioni N, G, M,
DettagliWINDOWS TERMINAL SERVER PER L ACCESSO REMOTO AL SISTEMA DI PROTOCOLLO INFORMATICO
Servizi per l e-government nell università Federico II WINDOWS TERMINAL SERVER PER L ACCESSO REMOTO AL SISTEMA DI PROTOCOLLO INFORMATICO CONNESSIONE_TERMINAL_SERVER PAG. 1 DI 13 Indice 1. Premessa...3
DettagliModellazione Poligonale Avanzata
Informatica Grafica I Modellazione Poligonale Avanzata Il (FFD) inserisce un oggetto in una gabbia (a forma di parallelepipedo o di cilindro). Spostando i vertici della gabbia si deforma il solido in esso
Dettagli2) FILE BINARI: è una sequenza di byte avente una corrispondenza uno a uno con la sequenza ricevuta dal dispositivo esterno.
Tipo File Per memorizzare un dato su un supporto magnetico come un hard disk o un nastro, o più in generale su un'unità di memoria di massa viene utilizzata un tipo di dato chiamato file. Un file può essere
DettagliGuida Compilazione Questionario SCUOLA DELL INFANZIA PARITARIA
Guida Compilazione Questionario SCUOLA DELL INFANZIA PARITARIA Guida Compilazione Questionario Struttura delle schermate Barra degli strumenti Area di lavoro Scuola dell Infanzia Paritaria Esempio Struttura
DettagliUso del pannello operatore
Questa sezione fornisce informazioni sul pannello operatore della stampante, sulla modifica delle impostazioni e sui menu del pannello operatore. È possibile modificare la maggior parte delle impostazioni
DettagliGestione Commissioni Esami
Gestione Commissioni Esami Sistema informatico ESSE3 Versione 3.0 Autore Stato Revisore Gruppo Esse3 Approvato P. Casalaspro Data 30/01/2014 Distribuito a: Utenti Esse3 SOMMARIO 1 Introduzione... 1 1.1
DettagliV. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/2002 4.1
Modelli di Base Dati 4 Un DBMS: Access a.a. 2001/2002 4.1 DBMS 4.2 DBMS = Data Base Management System Software per la costruzione e la gestione di una base dati Esempi di DBMS: Oracle, MySQL, SQLServer,
DettagliAutomatizzare le attività con le macro di Visual Basic
Automatizzare le attività con le macro di Visual Basic Se non si ha esperienza con le macro, non c'è da preoccuparsi. Una macro è semplicemente un insieme registrato di sequenze di tasti e di istruzioni,
DettagliPanoramica di Document Portal
Per visualizzare o scaricare questa o altre pubblicazioni Lexmark Document Solutions, fare clic qui. Panoramica di Document Portal Lexmark Document Portal è una soluzione software che offre funzioni di
DettagliProgrammazione ad Oggetti
Programmazione ad Oggetti Java Eccezioni Eccezioni in breve Un eccezione è un oggetto che descrive una situazione anomala o di errore L eccezioni vengono lanciate da una parte di un programma e possono
DettagliGestione risorse (Windows)
Gestione risorse (Windows) Organizzazione dei file Il sistema di memorizzazione è organizzato ad albero secondo una struttura gerarchica DISCO (drive) FILES CARTELLE (directory) FILES SOTTOCARTELLE FILES
DettagliSISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.
SISTEMI OPERATIVI 06.a Il Nucleo Nucleo di un SO Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher 1 Architettura di base dei SO Due le strutture di riferimento: a
DettagliAUTOCAD: INTERFACCIA AUTOCAD: INTERFACCIA 2 AUTOCAD: INTERFACCIA. 2.1 premessa: ABBREVIAzIONI E ICONE 2.2 SCELTA DELL INTERFACCIA. ICONE Cmd Mnu.
2 AUTOCAD: INTERFACCIA AUTOCAD: INTERFACCIA 2.1 premessa: ABBREVIAzIONI E ICONE Significato delle abbreviazioni e delle icone usate in queste pagine. ICONE Indica il menu dell applicazione (AutoCAD 2012)
DettagliSistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.
Programmi applicativi Un programma applicativo (o applicativo) è un eseguibile che può essere utilizzato dall utente e che ha funzionalità di alto livello (word processor, spreadsheet, DBMS) Univ. Milano-Bicocca
Dettagli= < < < < < Matematica 1
NUMERI NATURALI N I numeri naturali sono: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,... L insieme dei numeri naturali è indicato con la lettera. Si ha cioè: N= 0,1,2,3,4,5,6,7,.... L insieme dei naturali privato
DettagliDisconnessione Utente
Home Page La home page di Smart Sales contiene due sezioni per indicare quali criteri di ricerca applicare alle offerte per identificare con facilità quelle che il cliente desidera acquistare. I valori
DettagliUn grafico utilizza i valori contenuti in un foglio di lavoro per creare una rappresentazione grafica delle relazioni esistenti tra loro;
EXCEL Modulo 3 I Grafici Grafici Un grafico utilizza i valori contenuti in un foglio di lavoro per creare una rappresentazione grafica delle relazioni esistenti tra loro; Quando si crea un grafico ogni
DettagliVALORIZZAZIONE MOVIMENTI DI SCARICO E VALORIZZAZIONE TRASFERIMENTO COSTI DI ANALITICA
VALORIZZAZIONE MOVIMENTI DI SCARICO E VALORIZZAZIONE TRASFERIMENTO COSTI DI ANALITICA Riportiamo di seguito i vari passaggi per poter gestire la rivalorizzazione, sui documenti di scarico, del costo di
DettagliFondamenti VBA. Che cos è VBA
Fondamenti VBA Che cos è VBA VBA, Visual Basic for Application è un linguaggio di programmazione, inserito nelle applicazioni Office di Microsoft (Ms Word, Ms Excel, Ms PowerPoint, Visio). VBA è una implementazione
DettagliIndividuazione di sottoproblemi
Individuazione di sottoproblemi Quando il problema è complesso conviene partire con una individuazione di sottoproblemi Scriviamo un algoritmo contenente azioni o condizioni complesse per l esecutore che
Dettagli