Algoritmi e programmazione in pratica
di Cabodi Giampiero
Aggiornamenti e Contenuti Digitali
L’esperienza di laboratorio, in cui, data una specifica, lo studente arriva a scrivere un programma completo, gioca un ruolo fondamentale nel percorso di apprendimento: la conoscenza astratta dei concetti, infatti, non è sufficiente, ma non lo è neanche un approccio da “praticone” che procede per intuizione, esperienza o caso. Il volume si prefigge, per l’appunto, di creare un ponte tra teoria e pratica.
Il lettore viene posto di fronte a una serie di problemi di complessità crescente; da quelli semplici, con strutture dati e algoritmi banali per cui bastano i costrutti elementari del linguaggio, a quelli più difficili, la cui complessità riguarda la progettazione della soluzione, l’algoritmo, la struttura dati e la realizzazione mediante caratteristiche più avanzate del linguaggio,quali i puntatori, l’allocazione dinamica o la modularità. Per ciascun problema, a partire dalle specifiche, si sviluppa passo passo la logica di risoluzione, fino ad arrivare alla scrittura del codice C.
Gianpiero Cabodi
è professore associato di Sistemi di elaborazione delle informazioni presso il Dipartimento di Automatica e Informatica del Politecnico di Torino.
Paolo Enrico Camurati
è professore ordinario di Sistemi di elaborazione delle informazioni presso il Dipartimento di Automatica e Informatica del Politecnico di Torino.
Paolo Pasini, Denis Patti e Danilo Vendraminetto
sono dottori di ricerca in Ingegneria Informatica e dei Sistemi presso il Politecnico di Torino.
Da specifiche a codice C
Pagine | 280 |
Data pubblicazione | Settembre 2018 |
Data ristampa | |
Autori | Cabodi Giampiero |
ISBN | 8891629890 |
ean | 9788891629890 |
Tipologia prodotto | Cartaceo |
Collana | Apogeo Education |
Editore | Apogeo Education - Maggioli Editore |
Dimensione | 17x24 |
1. Problem-solving elementare
1.1 Problemi numerici
1.1.1 Espressioni semplificate in forma prefissa
1.1.2 Integrazione numerica mediante metodo dei rettangoli
1.1.3 Moltiplicazione in colonna
1.1.4 Operazioni su insiemi
1.1.5 Media su elementi di una matrice
1.2 Problemi di manipolazione stringhe e elaborazione testi
1.2.1 Stringhe composte
1.2.2 Compressione di un testo
1.2.3 Compressione di un testo con dizionario
1.3 Problemi di verifica e selezione
1.3.1 Manipolazione di stringhe
1.3.2 Occorrenze di parole
1.3.3 Ricerca di sottomatrici
1.3.4 Cammino nel labirinto
2. Puntatori e allocazione dinamica
2.1 Strutture, puntatori e vettori
2.1.1 Analisi di puntatori
2.2 Allocazione dinamica di matrici
2.2.1 Matrici: allocazione e gestione (1)
2.2.2 Matrici: allocazione e gestione (2)
2.3 Liste e strutture puntate
2.3.1 Liste di stringhe
2.3.2 Split di stringhe
2.3.3 Lista di punti del piano
2.3.4 Completamento di liste
3. Dal codice monolitico al codice modulare
3.1 Programma su un unico file
3.1.1 Catalogo di prodotti
3.1.2 Catalogo di prodotti esteso
3.1.3 Atleti
3.1.4 Atleti con liste
3.1.5 Atleti: piano di allenamenti
3.2 Programmazione modulare multi-file
3.2.1 Atleti: piano di allenamenti (multi-file)
3.2.2 Ricettario (multi-file)
3.2.3 Ricettario esteso (multi-file)
3.3 Programmazione con ADT di I classe
3.3.1 Atleti: piano di allenamenti - ADT
4. Uso di ADT nel problem-solving
4.1 Uso di ADT standard
4.1.1 FIFO con buffer circolare
4.1.2 Sportello singolo
4.1.3 Sportelli multipli
4.1.4 Catalogo di prodotti
4.1.5 Estrazione di informazioni ad hoc da BST
4.1.6 Gestione di tabelle di simboli statiche
4.1.7 Gestione di tabelle di simboli dinamiche
4.1.8 Servizi multimediali
4.2 Problemi complessi con uso di ADT
4.2.1 Torneo
4.2.2 Impianto di risalita
4.3 Problemi complessi con uso di ADT Grafo
4.3.1 Grafo regolare e cammino semplice a peso massimo
4.3.2 Diametro di un grafo e cammino semplice a peso massimo
4.3.3 Rete di elaboratori
4.3.4 Cammini massimi e connessione forte
4.3.5 All-pairs Shortest Paths, aciclicità e riconnessione
4.3.6 Dungeon Crawler
4.3.7 Solitario
5. Problemi risolti con la ricorsione
5.1 Problemi di calcolo
5.1.1 Numeri di Bell
5.1.2 Sequenza H di Hofstadter
5.1.3 Somme ricorsive
5.1.4 Conversione di base
5.1.5 Selezione
5.1.6 Fuori ordine
5.1.7 Sotto alberi
5.1.8 Tree mirroring
5.1.9 Codice Gray
5.2 Problemi basati direttamente sui modelli del Calcolo Combinatorio
5.2.1 Menù di ristorante
5.2.2 Composizione di stringhe
5.2.3 Decomposizione di stringhe
5.2.4 Addizioni ignote
5.2.5 Spellcasting
5.2.6 Cover set
5.2.7 Vassoio di pasticcini
5.2.8 Generazione di stringhe
5.2.9 Carrello della spesa
5.2.10 Moli
5.3 Problemi completi
5.3.1 Forniture di medicinali
5.3.2 Questioni di inventario
5.3.3 Via Emilia
5.3.4 Corpo libero (1)
5.3.5 Corpo libero (2)
5.3.6 Tower defense
5.3.7 Koala
5.3.8 Società sportiva
5.3.9 Società sportiva (greedy)
5.3.10 Il turista
5.3.11 Social Network
5.3.12 Agenzia per il lavoro
5.3.13 Questioni di equilibrio