CLIPS C Language Integrated Production System

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "CLIPS C Language Integrated Production System"

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 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

Dettagli

Università 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 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

Dettagli

Università 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. 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

Dettagli

Corso di Laurea in INFORMATICA

Corso 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

Dettagli

Università 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. 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

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. 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

Dettagli

INDICE. Vista Libretto Livello Digitale 2. Importazione di dati da strumento 3. Inserisci File Vari 5. Compensazione Quote 5.

INDICE. 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.

Dettagli

Linguaggio C: introduzione

Linguaggio 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

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. 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

Dettagli

Introduzione alle macchine a stati (non definitivo)

Introduzione 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

Dettagli

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

CONCETTI 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

Dettagli

PG5 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 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»

Dettagli

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

VBA è 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?

Dettagli

Definizione di metodi

Definizione 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

Dettagli

INTRODUZIONE ALLE BASI DATI RELAZIONALI

INTRODUZIONE 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

Dettagli

Procedura operativa per la gestione della funzione di formazione classi prime

Procedura 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

Dettagli

CAPITOLO V. DATABASE: Il modello relazionale

CAPITOLO 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

Dettagli

Intelligenza 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 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

Dettagli

ACCESS. 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. 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

Dettagli

VISUAL BASIC FOR APPLICATION

VISUAL 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

Dettagli

Ingegneria del Software

Ingegneria 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

(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

Dettagli

Oggetto: Utility per la variazione massiva del codice IVA.

Oggetto: 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

Dettagli

Ogni 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 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

Dettagli

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Il 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,

Dettagli

Note_Batch_Application 04/02/2011

Note_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

Dettagli

Funzioni condizionali

Funzioni 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

Dettagli

Architettura degli elaboratori Docente:

Architettura 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

Dettagli

Indice. Introduzione 2. 1.1.1 Collegamento iniziale 3. 1.1.2 Identificazione della sede operativa (sede di lavoro) 5

Indice. 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)

Dettagli

SQL Server 2008. Architettura Client-Server. SQL Server 2008. Introduzione all uso di SQL Server 2008. Dutto Riccardo. http://dbdmg.polito.

SQL 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

Dettagli

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli

Codice 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

Dettagli

Unità 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. 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

Dettagli

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

AXO - 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

Dettagli

Autodesk Map parte I digitalizzazione e importazione dati

Autodesk 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

Dettagli

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

3.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,

Dettagli

LabVIEW parte II. Ing. Gianfranco Miele November 3, 2010

LabVIEW 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

Dettagli

Classi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++

Classi. 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 -

Dettagli

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Il 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

Dettagli

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Esame 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:

Dettagli

Tecnica basata su Relazioni I/O Circuito di Clock

Tecnica 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»

Dettagli

Manuale di Aggiornamento BOLLETTINO. Rel B. DATALOG Soluzioni Integrate a 32 Bit

Manuale 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

Dettagli

DOCUMENTAZIONE WEB RAIN - ACCESSO CLIENTI

DOCUMENTAZIONE 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

Dettagli

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Variabili. 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

Dettagli

PSICOMETRIA. 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 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

Dettagli

Costruttore di numeri della WebDewey

Costruttore 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

Dettagli

Corso di Fondamenti di Informatica Classi di istruzioni 2

Corso 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

Dettagli

Disequazioni in una incognita. La rappresentazione delle soluzioni

Disequazioni 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

Dettagli

DESCRIZIONE 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. 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

Dettagli

Javascript e CSS nelle pagine WEB

Javascript 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

Dettagli

Hardware, 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 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

Dettagli

Importazione dati. e/fiscali Spesometro - Rel. 04.05.01. con gestionale e/satto. Gestionale e/satto

Importazione 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

Dettagli

testo Saveris Web Access Software Istruzioni per l'uso

testo 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.

Dettagli

IMPORTAZIONE PRESENZE DA RILEVATORI ELETTRONICI. tramite file tracciato

IMPORTAZIONE 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

Dettagli

4 GLI ARRAY E LE STRINGHE

4 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

Dettagli

Manuale 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 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

Dettagli

Le nuove utenze di accesso a SICO (da quelle di ufficio a quelle personali)

Le 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

Dettagli

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

UD4 - 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

Dettagli

Lab. di Sistemi Operativi - Esercitazione - Comandi Shell

Lab. 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

Dettagli

WINDOWS95. 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 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

Dettagli

Manuale d uso DropSheep 4 imaio Gestione Pixmania-PRO Ver 1.1

Manuale 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

Dettagli

Modulo 17: Invio del BF tramite

Modulo 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

Dettagli

EXCEL: FORMATTAZIONE E FORMULE

EXCEL: 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

Dettagli

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Corso 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

Dettagli

FUNZIONI DI BASE PANNELLO SMS

FUNZIONI 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

Dettagli

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

IL 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

Dettagli

PowerDIP 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 - 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

Dettagli

Gestione delle eccezioni in Java

Gestione 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

Dettagli

Via 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, 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

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Corso 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

Dettagli

Files in C++ Fondamenti di Informatica. R. Basili. a.a. 2006-2007

Files 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)

Dettagli

Esercizio 1: archivio CD e DVD

Esercizio 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

Dettagli

Programmazione Orientata agli Oggetti

Programmazione 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

Dettagli

Quick Print. Quick Print. Guida Utente. Copyright 2013 Hyperbolic Software. www.hyperbolicsoftware.com

Quick 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

Dettagli

AGGIORNAMENTO SOFTWARE

AGGIORNAMENTO 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

Dettagli

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1

Modulo 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

Dettagli

Modulo 2 Data Base - Modello Relazionale

Modulo 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

Dettagli

Compilazione on-line del Piano di Studio

Compilazione 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

Dettagli

FILE E INDICI Architettura DBMS

FILE 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

Dettagli

Il calcolatore. Architettura di un calcolatore (Hardware)

Il 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

Dettagli

PROGRAMMAZIONE EIA/ISO Macchine Utensili CNC

PROGRAMMAZIONE 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,

Dettagli

WINDOWS TERMINAL SERVER PER L ACCESSO REMOTO AL SISTEMA DI PROTOCOLLO INFORMATICO

WINDOWS 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

Dettagli

Modellazione Poligonale Avanzata

Modellazione 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

Dettagli

2) FILE BINARI: è una sequenza di byte avente una corrispondenza uno a uno con la sequenza ricevuta dal dispositivo esterno.

2) 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

Dettagli

Guida Compilazione Questionario SCUOLA DELL INFANZIA PARITARIA

Guida 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

Dettagli

Uso del pannello operatore

Uso 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

Dettagli

Gestione Commissioni Esami

Gestione 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

Dettagli

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/2002 4.1

V. 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,

Dettagli

Automatizzare le attività con le macro di Visual Basic

Automatizzare 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,

Dettagli

Panoramica di Document Portal

Panoramica 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

Dettagli

Programmazione ad Oggetti

Programmazione 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

Dettagli

Gestione risorse (Windows)

Gestione 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

Dettagli

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.

SISTEMI 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

Dettagli

AUTOCAD: INTERFACCIA AUTOCAD: INTERFACCIA 2 AUTOCAD: INTERFACCIA. 2.1 premessa: ABBREVIAzIONI E ICONE 2.2 SCELTA DELL INTERFACCIA. ICONE Cmd Mnu.

AUTOCAD: 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)

Dettagli

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Sistemi 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

= < < < < < 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

Dettagli

Disconnessione Utente

Disconnessione 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

Dettagli

Un grafico utilizza i valori contenuti in un foglio di lavoro per creare una rappresentazione grafica delle relazioni esistenti tra loro;

Un 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

Dettagli

VALORIZZAZIONE MOVIMENTI DI SCARICO E VALORIZZAZIONE TRASFERIMENTO COSTI DI ANALITICA

VALORIZZAZIONE 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

Dettagli

Fondamenti VBA. Che cos è VBA

Fondamenti 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

Dettagli

Individuazione di sottoproblemi

Individuazione 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