Presentazione
Il volume è suddiviso in due parti essendo pensato per il terzo anno (parte I) e il quarto anno
(parte II) del corso di studi di Informatica.
Il testo è appositamente approntato per un
principiante che intende avvicinarsi alla disciplina della programmazione dei computer.
Via via che si procede nella lettura, il livello degli argomenti presentati cresce e i contenuti
diventano adatti ad un programmatore di livello intermedio.
Nella I parte si affrontano i primi
concetti della programmazione ad oggetti e gli algoritmi di base su semplici strutture dati in memoria.
Si arriva ad affrontare alcuni algoritmi di una certa complessità come l’allineamento di stringhe e
alcuni algoritmi su grafi.
Nella II parte si sviluppano i concetti più importanti
della programmazione ad oggetti, fino ad arrivare ad elementi di programmazione di ordine superiore.
Indice parte I
1. La programmazione dei computer 3
I paradigmi di programmazione 5
Il linguaggio C# 7
Compilatori ed Interpreti 9
Test del programma 9
2. La prima applicazione 11
3. La struttura condizionale semplice 21
4. La struttura condizionale multipla 34
5. La struttura iterativa 43
Un ciclo nel dialogo con l’utente 48
6. Il ciclo enumerativo 55
7. Metodi che ricevono e restituiscono oggetti 63
Variabili con valori di tipo semplice e variabili
con riferimento ad oggetti 68
8. Array di valori e di oggetti 74
Gestione semidinamica dell’array 76
9. Algoritmi di base su un array 82
10. Manipolazione di stringhe 104
La scomposizione del problema 111
11. Array di oggetti 131
12. Array Bidimensionali (Matrici di valori) 143
Array di Array 146
13. Allineamento di stringhe 147
14. Grafi 156
La ricerca del cammino minimo – algoritmo di Dijkstra 162
Individuazione del minimo albero di copertura -
algoritmo di Prim 172
Liste di adiacenza 185
15. Funzioni ricorsive 191
La “Tail Recursion” 196
Parametri opzionali e argomenti con nome 197
Array dinamici 201
Indice parte II
16. Classi e Tipi di dato astratti 1
17. Le Proprietà di un oggetto 8
18. Array dinamici 13
Uso di un Enumeratore 15
19. Ereditarietà e Polimorfismo 33
Overriding di metodi della classe base 39
Polimorfismo 40
Il Casting 41
La superclasse universale Object 45
20. Classi astratte 50
21. Implementazione di Interfacce 63
Uso di Interfacce per la prototipazione 66
Tipizzazione Dinamica 69
22. Confronto tra oggetti 72
Uguaglianza di oggetti 72
Relazione d’ordine 76
23. La serializzazione di oggetti 78
La Serializzazione in Formato XML 83
Serializzare oggetti di un gerarchia di classi 86
24. Archiviazione dati mediante file 88
File di testo 88
File di Log 91
File binari 93
25. Strutture dati in memoria RAM 97
Linked List 98
HashSet 99
Benchmark sui Tempi di Ricerca 100
Strutture dati dinamiche personalizzate 101
SortedSet 107
Dictionary 108
SortedDictionary 113
SortedList 113
26. Programmazione di ordine superiore 115
Il concetto di Delegato 119
Espressioni Lambda 122
Ricerca e Ordinamento in una Lista 127
27. Uso di LINQ 130
Le funzioni Single e First 134
Select e SelectMany 135
Raggruppamenti con GroupBy 138
Metodi di estensione 146
28. Archiviazione dati con SQLite 148
Query parametriche 155
Operazioni di aggiornamento 157
Esempio di applicazione con Windows Form 159
Il Data Adapter 166
Valori NULL 173
Creazione automatica del database 175
29. Uso di EntityFramework 6 con SQLite 179
Architettura software 182
Definizione dell’Entity Data Model 185
Definizione del contesto 187
Utilizzo di EntityFramework 188
Aggiornamento dei dati 194
Una applicazione completa con Windows Form 197
Approccio Code First 200
Appendice 1. Uso di due Windows Form 204
Acquisti
Pagine per informazioni e Acquisti su LULU:
Parte I
Parte II
Download
Il codice degli esempi sarà disponibile a breve!
Aggiornamento del capitolo 29. Uso di EntityFramework 6 con SQLite
Questo aggiornamento consente di utilizzare EF6 per SQLite con .NET 7
Errata Corrige
parte I - pagina 134, righe 17 e 18
Errata: elenco[i]
Corrige: elencoStudenti[i]
parte II - pagina 12, riga 13
Errata: si ha un maggiore controllo sui valori
Corrige: si rendono immutabili i valori
parte II - pagina 12, righe 15 e 16
Errata DA CANCELLARE: oppure essere modificati mediante appositi metodi pubblici della classe
parte II - pagina 12, righe 25 e 26
Errata: utilizzarle come se fossero dichiarate in modalità "di sola inizializzazione", ovvero {get; init;}
Corrige: effettuare le modifiche di valore solo tramite appositi metodi della loro classe
parte II - pagina 14, riga 9 dal basso
Errata: foreach(Persona p in lista)
Corrige: foreach(Persona p in listaDiPersona)
parte II - pagina 139, righe 5, 7 e 8
Errata: gruppi[0]
Corrige: gruppi.ToList()[0]
Commento: equivale a scrivere gruppi.First()
parte II - pagina 190, penultima riga
Errata: Include(x => x.Classe)
Corrige: Include("Classe")