| Indice
Premessa
Prefazione
Introduzione
Parte I Linguaggio C#
1 Introduzione ai programmi C#
"Salve mondo!"
Calcolo dell'area e le perimetro di un rettangolo
"Area e perimetro del rettangolo": seconda versione
2 Costrutti di base
Costrutto "if() else"
Costrutto "if()"
Sequenza: "blocco"
"Iterazione" o "ciclo iterativo"
Costrutto "while ()"
Costrutto "for()"
Condizione di controllo dei cicli iterativi
Costrutti e punto e virgola (;) di fine istruzione
Sintesi dei punti precedenti
3 Tipi, variabili ed espressioni
Concetto di "tipo"
Tipi di dati numerici: "int" e "double"
Il tipo "double"
Il tipo "int"
Costanti letterali numeriche
Tipi di operatori e conversioni numeriche
Conversioni tra tipi numerici
"Compatibilita'" tra i tipi "int" e "double"
Tipo "string"
Costanti letterali stringa
Funzioni delle stringhe nella programmazione
Stringhe come supporto generale alla programmazione
Stringhe per la rappresentazione ed elaborazione di informazioni di carattere alfanumerico
Tipo "bool"
Costanti letterali booleane
Funzione del tipo "bool" nella programmazione
Variabili
Dichiarazione di una variabile
Assegnazione di un valore ad una variabile
Valore iniziale di una variabile
Inizializzazione di una variabile
Costanti simboliche
Uso delle costanti simboliche
Espressioni
Tipo di un'espressione
Operatori
Precedenza, associativa e "arita'" degli operatori
Uso delle espressioni
Espressioni booleane o codizionali
Espressioni booleane semplici e composte
Valutazione delle espressioni booleane composte
Assegnazione di espressioni booleane
Espressioni di tipo "string"
Conversioni da tipi numerici a tipo "string"
4 Array
Collezione di dati
"Array"
Array unidimensionali: "vettori"
Accesso agli elementi di un vettore
Dichiarazione e creazione di un vettore
Esempi d'uso di vettori
Creare un vettore durante la dichiarazione
Inizializzare gli elementi di un vettore
Array bidimensionali: "matrici"
Accesso agli elementi di una matrice
Dichiarazione e creazione di una matrice
Inizializzare gli elementi di una matrice
Esempi d'uso di matrici
Operazioni permesse sugli array
Operazione di assegnazione tra array
Confronto tra variabili array
5 Approfondimento sui costrutti
Variabili dichiarate all'interno dei costrutti
variabile locale a un blocco
Conflitto di nomi
Contatore locale al ciclo "for()"
Ottimizzazione dei cicli: uso degli operatori di incremento/decremento
Operatore di incremento
Operatore di decremento
Ciclo iterativo "do while()"
Uso del ciclo "do while()"
Costrutto "do while()" e punto e virgola (;) di fine istruzione
Ciclo iterativo "foreach()"
Uso del ciclo "foreach()"
Schema di selezione multipla. costrutto "switch()"
Costrutto "switch()"
Uso del costrutto "switch()"
Associare un'istruzione a piu' "costanti case"
6 Introduzione ai metodi
Premessa
Convenzioni usate nel presentare gli esempi
"Salve, mondo!", "Arrivederci mondo!"
Definizione di un metodo
"Prototipo" di un metodo"
Corpo di un metodo
Ordine di definizione dei metodi
Invocazione di un metodo
Alterazione del flusso di esecuzione provocato dall'invocazione di un metodo
Uso dei metodi
Variabili "campi di classe"
Valori iniziali dei campi di classe
Campi di classe e variabili locali a confronto
Sovrapposizione dei contesti di validita'
Terminazione anticipata del metodo
Istruzione "return"
Uso dell'istruzione "return"
Terminazione multiple
7 Metodi: parametri e valori di ritorno
Premessa
Problema della comunicazione tra metodi
Parametri e argomenti di ingresso
Compatibilita' tra argomenti e parametri
Parametri di ingresso e variabili locali
Modifica del valore di parametri di ingresso
Espressione di ritorno di un metodo
Ignorare il valore di ritorno di un metodo
Passaggio per riferimento degli argomenti: parametri "out" e "ref"
Parametri e argomenti "out"
Requisiti nell'uso di parametri e argomenti "out"
Metodi che definiscono parametri "out" e valore di ritorno
Parametri e argomenti "ref"
Uso di argomenti e parametri "ref"
Confronto tra parametri "ref" e parametri "out"
Array come argomenti di un metodo
Dichiarazione di un parametro array
Uso di parametri array
Argomenti e parametri array
8 Approfondimento sui tipi di dati
Metodi e costanti dei tipi predefiniti
"Metodi statici" e "metodi di istanza"
Metodo statico "Parse()"
Metodo di istanza "ToString()"
Costanti simboliche definite dai tipi "int" e "double"
Il tipo di array
Stato iniziale e inizializzazione di una variabile array
Lunghezza di un array: proprieta' "Length"
Uso della proprieta' "Length"
Array multidimensionali: lunghezza delle singole dimensioni
Tipo "string"
Stringhe come collezioni di caratteri
Lunghezza di una stringa: proprieta' "Length"
Confrontare due stringhe: metodo "Compare()"
Inizializzazione di una stringa
Il tipo "char"
Costanti letterali "char"
Valore iniziale di una variabile carattere
Compatibilita' tra il tipo "char" e gli altri tipi di dati
Operazioni con i caratteri
Costanti stringa "verbatim"
Tipi "valore" e tipi "riferimento"
"Tipi valore"
Tipi riferimento
Conclusione sui due modelli di memorizzazione
Conversioni esplicite: operatore di "cast"
Priorita' nell'applicazione dell'operatore di cast
Conversioni non ammissibili
Uso delle conversioni esplicite
Il tipo "object"
Relazione tra il tipo "object" e i tipi valore: operazioni di "boxing" e "unboxing"
Implementazione del tipo "object"e dell'operazione di boxing
Relazione tra il tipo "object" e i tipi di riferimento
Uso del tipo "object" nella programmazione
9 Enumeratori
Introduzione
Tipi e variabili "enumeratori"
Definizione di un tipo enumeratore
Dichiarazione e uso di variabili enumeratore
Uso dei tipi enumeratore
Gestione di un elenco anagrafico
Parte II Applicazioni Windows
10 Interfaccia utente: concetti di base
"Interfaccia utente"
Caratteristiche di un'interfaccia utente
Modelli di interfaccia utente
Interfaccia utente delle "applicazioni console"
Modello di comunicazione delle "applicazioni console"
11 Introduzione alle applicazioni Windows
Struttura di un'interfaccia grafica
Introduzione ai "controlli"
"Form": il controllo principale
Controlli di base di un'interfaccia: "Button", "TextBox", "Label"
Analisi del funzionamento del programma
Struttura del codice di una "applicazione Windows"
Struttura del codice di una "applicazione Windows"
Aggiungere i controlli all'interfaccia
"Eventi" e "gestori di eventi"
Gestire gli eventi di un programma
Attaccare un "gestore di evento" a un evento
12 Elementi base di un'interfaccia grafica
La classe "Control"
"Derivazione" e "gerarchia di classi"
Gerarchia dei controlli di un'interfaccia grafica
Proprieta' di base della classe "Control"
Posizione e dimensioni dei controlli
Concetto di "fuoco" e di "controllo selezionato"
Eventi di base della classe "Control"
Classe "MouseEventsArgs"
Classi "KeyEventArgs" e "KeyPressEventArgs"
Commento sugli eventi "MouseXXX " e "KeyXXX"
Altri eventi della classe "Control"
Visualizzare messaggi: classe "MessageBox"
"Message dialog" informative
Elaborare la risposta dell'utente
Conclusioni
Controlli "Form", "Label", "TextBox", "Button"
Classe "Form"
Classe "Label"
Classe "TextBox"
Classe "Button"
"Consistenza" dell'interfaccia
Verifica dell'esistenza dei dati
Verifica della natura e del valore dei dati
13 Migliorare la comunicazione con l'utente
Gestire collezioni di dati
Classe "ListBox"
Popolare un "ListBox"
Popolare un "ListBox" attraverso i metodi "Add()"e "AddRange()"
Popolare un "ListBox" attraverso la proprieta' "DataSource"
Accesso agli elementi di un "ListBox"
Uso della proprieta' "Text"
Uso del controllo "ListBox"
Classe "ComboBox"
Uso del controllo "ComboBox"
RadioButton" e "CheckBox"
Classe "RadioButton"
Uso del controllo "RadioButton"
Controllo "CheckBox"
Uso del controllo "CheckBox"
Raggruppare i controlli
Classe "GroupBox"
Classe "Panel"
Gestire le immagini
Classe "PictureBox"
Uso del controllo "PictureBox"
14 Esempio di un'interfaccia completa
Definizione del problema
Premessa
Testo del problema
Progettazione dell'interfaccia
Progettazione del "layout"
Scelta dei controlli
Layout dell'interfaccia
Contenuto iniziale dei controlli
Rendere l'interfaccia consistente
Garantire l'esistenza dei dati personali
Condizionare l'accesso a "txtCorso" al valore "Laurea" di "cboTitolo"
Modificare l'etichetta associata al controllo "txtCorso"
Stato iniziale dei controlli
Impostare "manualmente" lo stato iniziale dei controlli
Scrivere un metodo che aggiorni lo stato dei controlli
Parte III Collezioni
15 Introduzione alle collezioni di dati
Concetti generali
Collezioni dinamiche e statiche
Natura delle operazioni consentite e modalita' di accesso agli elementi
Collezioni tipizzate e collezioni generiche
Natura degli elementi
Ordinamento interno
Costo computazionale delle operazioni
Organizzazione interna: implementazione della collezione
Attributi e stato di una collezione
16 Array
Array unidimensionali: vettori
Operazioni permesse sui vettori
Attributi e stato del vettore
Classe "Array"
Proprieta' della classe "Array"
Costruttori della classe "Array"
Metodi della classe "Array"
17 Liste
Lista
Lista array
Operazioni permesse sulle liste array
Accesso con indice agli elementi
Inserimento di un elemento in coda
Inserimento di un elemento in una posizione qualsiasi
Rimozione di un elemento in coda
Rimozione di un elemento qualsiasi
Ricerca di un elemento
Attributi e stato di una lista array
Conclusioni sulla lista array
Lista ordinata
Operazioni permesse sulle liste ordinate
Impiego delle liste ordinate
Lista ordinata implementata mediante una lista array
Ricerca di un elemento
Inserimento di un elemento
Rimozione di un elemento
Attributi e stato di una lista ordinata implementata mediante una lista array
Conclusioni sulla lista ordinata implementata mediante array
Classe "ArrayList"
Proprieta' della classe "ArrayList"
Costruttori della classe "ArrayList"
Metodi della classe "ArrayList£
Uso della classe "ArrayList"
Inserimento, ordinamento e ricerca con rimozione in un elenco di nominativi
Gestione di una lista numerica
Aggiungere elementi di un array a un "ArrayList"
Ricerca sequenziale di un elemento
18 Tabella hash e dizionario
Tabella hash
Funzione di trasformazione e struttura di una tabella hash
Normalizzazione dell'indice prodotto dalla funzione hash
Inserimento e ricerca: "collisioni" tra chiavi
Gestire le collisioni
Rimozione di un elemento da una tabella hash
Modifica di una chiave
Fattore di riempimento
Attributi e stato di una tabella hash
Conclusioni sulla tabella hash
Dizionario
Classe "Hashtable"
Proprieta' della classe "Hashtable"
Costruttori della classe "Hashtable"
Metodi della classe "HastTable"
Uso della classe "Hashtable"
Realizzazione di un glossario con una "Hashtable"
Modifica di un valore associato a una chiave
Classe "SortedList"
Proprieta' della classe "SortedList"
Costruttori della classe "SortedList"
Metodi della classe "SortedList"
Uso della classe "SortedList"
Modifica, rimozione, accesso, visualizzazione
Parte IV Appendici
A Appendice
Metodi "WriteLine ()" e "Write()"
Caratteri speciali: "sequenze di escape"
Stringhe formato e specificatori di formato
Sotto insieme ASCII del codice Unicode
B Appendice
Elenco degli operatori
Elenco delle parole chiave
C Appendice
Metodi del tipo "string"
Metodi di inserimento/modifica/cancellazione
Metodi di modifica del "case" dei caratteri
Metodi di formattazione
Metodi di ricerca
Metodi di confronto
Metodi vari
Indice analitico |