Skip to content

Elaborazione e interazione in programmazione logica e ad oggetti

Gratis La preview di questa tesi è scaricabile gratuitamente in formato PDF.
Per scaricare il file PDF è necessario essere iscritto a Tesionline. L'iscrizione non comporta alcun costo: effettua il Login o Registrati.

Mostra/Nascondi contenuto.
Parte Prima: Limiti della LP LP e OOP 16 lunghezza_lista([]). lunghezza_lista([HEAD|TAIL]) :- retract(contatore(X)), assert(contatore(s(X))), lunghezza_lista(TAIL). In questo caso l’uso dello stato è “interno” e lo stesso goal (ad esempio lunghezza_lista([a, b, c], N)) sottoposto alla teoria in momenti diversi darà sempre lo stesso risultato. A differenza del primo esempio, irrisolubile in LP classica, in questo caso la soluzione logica è molto più semplice e elegante: lunghezza_lista([], 0) lunghezza_lista([HEAD|TAIL], N) :- lunghezza_lista(TAIL, M), N=s(M). Oppure nella versione tail recursive: lunghezza_lista(LISTA, N) :- lunghezza_lista(LISTA, 0, N). lunghezza_lista([], N, N). lunghezza_lista([HEAD|TAIL]), ACC, N) :- ACC1=s(ACC), lunghezza_lista(TAIL, ACC1, N). Nella versione tail recursive, nell’ultima clausola, abbiamo usato delle variabili accumulatore per tenere lo stato della computazione, ma poiché non abbiamo voluto usare effetti collaterali abbiamo avuto bisogno di accumulatori (ACC e ACC1): uno per il vecchio stato e uno per il nuovo. In entrambi gli esempi abbiamo parlato di stato ma con diverso significato. Nel primo caso lo stato era esterno nel senso che serviva per collegare diverse computazioni (interrogazioni), ogni richiesta di incrementa è asincrona ed ha l’effetto di influenzare le computazione future (history dependent). Non esistono soluzioni a tale problema nella logica. Nel secondo esempio (in tutte e due le versioni) lo stato era interno nel senso che esso non è permanente tra computazioni successive, quindi goal passati non influenzano i futuri (history independent) e ogni goal darà sempre lo stesso risultato. Per ogni goal si sa già di quanto deve essere incrementato il contatore. Su questi concetti torneremo in seguito. La prima soluzione del secondo esempio è assolutamente da evitare poiché se si vuole risolvere un problema in stile imperativo tanto vale usare un linguaggio di tale genere. Come si sarà intuito si sono due modi diversi di usare lo stato: il primo serve per collegare le singole computazioni mentre il secondo per effettuare una singola computazione. In entrambi i casi l’introduzione di effetti collaterali ci fa uscire dal modello logico. Mentre il secondo uso si può evitare come abbiamo fatto nell’esempio ed anzi un suo uso in LP è inutile (se non dannoso), nel primo caso non possiamo farne a meno. Notare che i due usi sono su due piani diversi, tanto che sarebbe meglio usare termini diversi per evitare la confusione che nasce appunto dal parlare di cose diverse con lo stesso termine. usi dello stato: esterno → collega le singole computazioni → non presente in LP interno → collega i passi della computazione → non serve in LP Accenniamo anche al fatto che lo stato può essere usato anche come meccanismo di comunicazione asincrona tra più sistemi diversi. Difatti la risposta che riceve un utente è funzione dello stato che a sua volta è funzione degli ingressi passati che possono essere stati prodotti da utenti diversi. Con lo stato non c’è bisogno che due entità siano in collegate direttamente nello stesso momento per comunicare. Il mittente può lasciare il messaggio ed il ricevente prenderlo in un secondo momento. Il meccanismo è simile a quello ben conosciuto di comunicazione tramite tuple. 2.2.2. Mancanza di interazione Sul fatto che l’interazione sia un limite nessuno ha dubbi, difatti nessun programma che non sia solo un esercizio può fare a meno di istruzioni di I/O. L’introduzione di questi predicati fa però perdere la logica del sistema, ad esempio i programmi non sono più invertibili. Non a tutti è però chiaro se l’introduzione dei predicati di I/O è solo una necessità pratica oppure una caratteristica indispensabile non rappresentabile in logica. A questa domanda ha risposto Wegner [We97a], il quale ha mostrato che l’interazione è una diversa dimensione che si aggiunge alla elaborazione e che quindi non è riconducibile a questa. Un programma LP, come una TM, è una macchina che tra un input ed un output taglia fuori il mondo esterno ed è quindi completamente indipendente da esso. Un uso interattivo è invece più espressivo perché riceve più informazioni dall’ambiente esterno e soprattutto informazioni che in genere non sono disponibili tutte assieme nel momento in cui si riceve il primo input perché alcune saranno funzioni di output che fornirà successivamente la macchina. Un esempio classico che descrive bene questa idea è quello della automobile automatica che deve andare da un punto A ad un punto B. Se la pianta della città è conosciuta e non ci sono altre macchine il problema è risolvibile con una TM perché si conoscono tutte le informazioni a riguardo e queste sono immutabili. Se però non abbiamo la carta stradale oppure ci sono anche altre macchine che circolano l’approccio precedente non è più praticabile perché ci mancano informazioni e nel caso di presenza di altre macchine non solo mancano informazioni ma queste sono anche variabili. Il problema è però risolvibile con un approccio interattivo: non conosciamo lo stato globale ma solo una parte, quindi prendiamo decisioni compatibili con l’informazione correntemente disponibile, l’output corrispondente in genere influenzerà anche l’input successivo che ci fornirà altre informazioni non disponibili in precedenza, quindi si itera il procedimento. Il processo interattivo può anche essere illimitato e non portarci mai alla soluzione voluta ma, a differenza del comportamento non interattivo, è comunque percorribile. Si noti che in alcuni problemi non solo l’informazione è incompleta come nel caso della mancanza di una carta stradale, ma è anche non formalizzabile e quindi
Anteprima della tesi: Elaborazione e interazione in programmazione logica e ad oggetti, Pagina 14

Preview dalla tesi:

Elaborazione e interazione in programmazione logica e ad oggetti

CONSULTA INTEGRALMENTE QUESTA TESI

La consultazione è esclusivamente in formato digitale .PDF

Acquista

Informazioni tesi

  Autore: Tiziano Moretti
  Tipo: Tesi di Laurea
  Anno: 1998-99
  Università: Università degli Studi di Bologna
  Facoltà: Ingegneria
  Corso: Ingegneria Informatica
  Relatore: Antonio Natali
  Lingua: Italiano
  Num. pagine: 233

FAQ

Per consultare la tesi è necessario essere registrati e acquistare la consultazione integrale del file, al costo di 29,89€.
Il pagamento può essere effettuato tramite carta di credito/carta prepagata, PayPal, bonifico bancario, bollettino postale.
Confermato il pagamento si potrà consultare i file esclusivamente in formato .PDF accedendo alla propria Home Personale. Si potrà quindi procedere a salvare o stampare il file.
Maggiori informazioni
Ingiustamente snobbata durante le ricerche bibliografiche, una tesi di laurea si rivela decisamente utile:
  • perché affronta un singolo argomento in modo sintetico e specifico come altri testi non fanno;
  • perché è un lavoro originale che si basa su una ricerca bibliografica accurata;
  • perché, a differenza di altri materiali che puoi reperire online, una tesi di laurea è stata verificata da un docente universitario e dalla commissione in sede d'esame. La nostra redazione inoltre controlla prima della pubblicazione la completezza dei materiali e, dal 2009, anche l'originalità della tesi attraverso il software antiplagio Compilatio.net.
  • L'utilizzo della consultazione integrale della tesi da parte dell'Utente che ne acquista il diritto è da considerarsi esclusivamente privato.
  • Nel caso in cui l'Utente volesse pubblicare o citare una tesi presente nel database del sito www.tesionline.it deve ottenere autorizzazione scritta dall'Autore della tesi stessa, il quale è unico detentore dei diritti.
  • L'Utente è l'unico ed esclusivo responsabile del materiale di cui acquista il diritto alla consultazione. Si impegna a non divulgare a mezzo stampa, editoria in genere, televisione, radio, Internet e/o qualsiasi altro mezzo divulgativo esistente o che venisse inventato, il contenuto della tesi che consulta o stralci della medesima. Verrà perseguito legalmente nel caso di riproduzione totale e/o parziale su qualsiasi mezzo e/o su qualsiasi supporto, nel caso di divulgazione nonché nel caso di ricavo economico derivante dallo sfruttamento del diritto acquisito.
  • L'Utente è a conoscenza che l'importo da lui pagato per la consultazione integrale della tesi prescelta è ripartito, a partire dalla seconda consultazione assoluta nell'anno in corso, al 50% tra l'Autore/i della tesi e Tesionline Srl, la società titolare del sito www.tesionline.it.
L'obiettivo di Tesionline è quello di rendere accessibile a una platea il più possibile vasta il patrimonio di cultura e conoscenza contenuto nelle tesi.
Per raggiungerlo, è fondamentale superare la barriera rappresentata dalla lingua. Ecco perché cerchiamo persone disponibili ad effettuare la traduzione delle tesi pubblicate nel nostro sito.
Scopri come funziona

DUBBI? Contattaci

Contatta la redazione a
[email protected]

Ci trovi su Skype (redazione_tesi)
dalle 9:00 alle 13:00

Oppure vieni a trovarci su

Parole chiave

elaborazione
interazione
programmazione ad oggetti
programmazione logica

Non hai trovato quello che cercavi?


Abbiamo più di 45.000 Tesi di Laurea: cerca nel nostro database

Oppure consulta la sezione dedicata ad appunti universitari selezionati e pubblicati dalla nostra redazione

Ottimizza la tua ricerca:

  • individua con precisione le parole chiave specifiche della tua ricerca
  • elimina i termini non significativi (aggettivi, articoli, avverbi...)
  • se non hai risultati amplia la ricerca con termini via via più generici (ad esempio da "anziano oncologico" a "paziente oncologico")
  • utilizza la ricerca avanzata
  • utilizza gli operatori booleani (and, or, "")

Idee per la tesi?

Scopri le migliori tesi scelte da noi sugli argomenti recenti


Come si scrive una tesi di laurea?


A quale cattedra chiedere la tesi? Quale sarà il docente più disponibile? Quale l'argomento più interessante per me? ...e quale quello più interessante per il mondo del lavoro?

Scarica gratuitamente la nostra guida "Come si scrive una tesi di laurea" e iscriviti alla newsletter per ricevere consigli e materiale utile.


La tesi l'ho già scritta,
ora cosa ne faccio?


La tua tesi ti ha aiutato ad ottenere quel sudato titolo di studio, ma può darti molto di più: ti differenzia dai tuoi colleghi universitari, mostra i tuoi interessi ed è un lavoro di ricerca unico, che può essere utile anche ad altri.

Il nostro consiglio è di non sprecare tutto questo lavoro:

È ora di pubblicare la tesi