Programmare in Prolog

William F. Clocksin, Christopher S. Mellish

Programmare in Prolog

Printed Edition

43.50

Pages: 336

ISBN: 9788820424657

Edition: 6a edizione 1993

Publisher code: 720.49

Availability: Fuori catalogo

Il Prolog, il più potente linguaggio di programmazione finora sviluppato, rappresenta una prima e significativa realizzazione del sogno di poter dialogare con i calcolatori utilizzando un linguaggio fondato sulla logica umana. Nato in Europa agli inizi degli anni settanta, il Prolog è stato sempre più utilizzato per applicazioni relative al calcolo simbolico, alle basi di dati relazionali, alla comprensione del linguaggio naturale, al disegno architettonico, ai sistemi esperti ed altre aree dell'intelligenza Artificiale.

Un programma Prolog consiste nella descrizione di un problema e di una serie di affermazioni sui dati e sulle regole che descrivono come il calcolatore può «dedurre," (inferire) la soluzione: la deduzione è fatta a partire da fatti noti o dal nuovi fatti che il Prolog potrà dedurre da quelli conosciuti. Per queste sue caratteristiche il Prolog sta rapidamente diventando il linguaggio base per lo sviluppo di progetti di Intelligenza Artificiale; sempre più numerosi sono coloro che ritengono che questo linguaggio assumerà il ruolo fino ad oggi ricoperto dal Basic nell'alfabetizzazione informatica di massa.

Questo libro, il primo e più diffuso «manuale» introduttivo all'uso del Prolog, è divenuto lo standard minimo per la sintassi del linguaggio e ad esso fanno riferimento la maggior parte delle implementazioni. Questo volume ha il pregio di essere nato come strumento per corsi universitari per studenti privi di background informatico tradizionale: senza nulla togliere alla completezza, offre quindi il vantaggio di essere facilmente accessibile e utile anche al non esperto.

Prefazione alla prima edizione inglese
Prefazione alla seconda edizione inglese
Prefazione alla terza edizione inglese
Introduzione all'edizione italiana
Nota dei traduttori
Capitolo 1. Introduzione
1. I Fatti
1.2 Domande
1.3 Variabili
1.4Congiunzioni
Esercizio 1.1
1.5 Regole
1.6 Sommario ed esercizi
Esercizio 1.2
Esercizio 1.3
Esercizio 1.4
Capitolo 2. Uno sguardo da vicino
2.1 La sintassi
2.1.1 Le costanti
2.1.2 Le variabili
2.1.3 Le strutture
2.2 Caratteri
2.3 Gli operatori
2.4 Eguaglianza e matching
Esercizio 2.1
2.5 L'aritmetica
2.6 Soddisfacimento dei goal
2.6.1 Soddisfacimento di una congiunzione di goal
2.6.2 Scelta dei goal nel backtracking
2.6.3 Il matching
Capitolo 3. Utilizzo delle strutture di dati
3.1 Strutture e alberi
3.2 Le liste
3.3 Appartenenza ad una lista
3.4 Esempio: Trasformare una frase in un'altra
3.5 Un esempio: la comparazione dell'ordine alfabetico
3.6 Utilizzo della concatenazione di liste e un inventario di parti
3.7 Accumulatori
3.8 Strutture differenza
Capitolo 4. Il Backtracking e il cut
4.1 Generazione di soluzioni multiple
4.2 Il cut
4.3 Usi comuni del cut
4.3.1 Conferma della scelta di una regola
4.3.2 La Combinazione "cut-fail"
4.3.3 Un caso di "generazione e verifica" di soluzioni alternative
4.4 Problemi con il cut
Capitolo 5. Input e output
5.1 Lettura e scrittura di termini
5.1.1 Scrittura dei termini
5.1.2 Lettura di termini
5.2 Lettura e scrittura di caratteri
5.2.1 Scrittura di caratteri
5.2.2 Lettura di caratteri
5.3 Lettura di frasi
Esercizio 5.1
Esercizio 5.2
5.4 Lettura e scrittura di file
5.4.1 Scrittura di file
5.4.2 Lettura di file
5.4.3 L'operazione di consult
5.5 Dichiarazione di operatori
Capitolo 6. I predicati predefiniti
6.1 Introduzioni di nuove clausole
6.2 Successo e fallimento
6.3 Classificazione di termini
6.4 Trattare le clausole come termini
6.5 Costruire e reperire componenti di strutture
6.6 Alterazioni del meccanismo di backtracking
Esercizio 6.1
6.7 Costruzione di goal compositi
6.8 Eguaglianza
6.9 Input e output
6.10 Operazioni sui file
6.11 Valutare espressioni aritmetiche
6.12 Confrontare numeri
6.13 Vedere il Prolog in esecuzione
Capitolo 7. Altri programmi
7.1 Dizionari ad albero ordinati
Esercizio 7.1
7.2 Attraversare un labirinto
Esercizio 7.2
Esercizio 7.3
Esercizio 7.4
7.3 Le torri di Hanoi
7.4 Un inventario di parti
7.5 Elaborazione di liste
7.6 Rappresentazione e manipolazione di insiemi
7.7 Ordinamento
Esercizio 7.5
Esercizio 7.6
7.8 Operazioni sul database: random, gensym, findall
7.8.1 Random
7.8.2 Gensym
7.8.3 Findall
Esercizio 7.7
Esercizio 7.8
7.9 Ricerca nei grafi
7.10 Il crivello di Eratostene
Esercizio 7.9
7.11 Derivazione simbolica
7.12 Applicazioni di strutture in strutture e trasformazioni di alberi
7.13 L'uso di clause e retract
Capitolo 8. Debugging dei programmi
8.1 Stesura dei programmi
8.2 Errori comuni
8.3 Un modello di esecuzione
Esercizio 8.1
8.4 Il sistema di traccia (tracing) e i punti spia
8.4.1 Esaminare il goai
8.4.2 Esaminare i progenitori
8.4.3 Alterare il grado di traccia
8.4.4 Alterare il soddisfacimento di un goal
8.4.5 Altre opzioni
8.4.6 Riassunto
8.5 Correggere gli errori (bug)
Capitolo 9. Le regole grammaticali in Prolog
9.1 Il problema dell'analisi sintattica
9.2 Rappresentare in Prolog il problema dell'analisi
9.3 La notazione per le regole grammaticali
Esercizio 9.1
9.4 L'aggiunta di argomenti extra
9.5 Test aggiuntivi
9.6 Sommario
Esercizio 9.3
Esercizio 9.4
Capitolo 10. Relazioni tra Prolog e la logica
10.1 Una breve introduzione al calcolo dei predicati
10.2 La forma clausale
10.3 Una notazione per le clausole
10.4 L'algoritmo di risoluzione e la dimostrazione di teoremi
10.5 Clausole di Hom
10.6 Prolog
10.7 Il Prolog e la programmazione logica
Capitolo 11. Progetti in Prolog
11.1 Progetti elementari
11.2 Progetti avanzati
Appendice A
Soluzione di esercizi scelti
Appendice B
Programma per la conversione in forma clausale
Appendice C
Differenti versioni del Prolog
Appendice D
Il Prolog di Edimburgo
Appendice E
Micro-Prolog


Serie: Informatica

Level: Books for Professionals