| Indice
Prefazione
Capitolo 0 Partire da zero
Perche' il C?
Standard ANSI C
Dal C al C++
Dal C e C++ a Java
Capitolo 1 Panoramica sul C
Programmazione e preparazione
Output dei programmi
Variabili, espressioni e assegnamenti
Utilizzo di #define e #include
Utilizzo di printf() e scanf()
Flusso del controllo
Funzioni
Array, stringhe e puntatori
File
Considerazioni sui sistemi operativi
Riepilogo
Esercizi
Capitolo 2 elementi lessicali, operatori e sistema C
Caratteri ed elementi lessicali
Regole sintattiche
Commenti
Parole chiave
Identificatori
Costanti
Costanti stringa
Operatori e simboli di interpunzione
Priorita' e associativita' degli operatori
Operatori di incremento e decremento
Operatori di assegnamento
Un esempio: il calcolo delle potenze di 2
Il sistema C
Riepilogo
Esercizi
Capitolo 3 Tipi di dati fondamentali
Dichiarazioni, espressioni e assegnamento
Tipi di dati fondamentali
Caratteri e tipo di dati char
Tipi di dati int
Tipi interi short, long e unsigned
Tipi reali
Utilizzo di typedef
Operatori sizeof
Utilizzo di getchar() e putchar()
Funzioni matematiche
Conversioni e cast
Costanti esadecimali e ottali
Riepilogo
Esercizi
Capitolo 4 Flusso del controllo
Operatori relazionali, di uguaglianza e logici
Espressioni e operatori relazionali
Espressioni e operatori di uguaglianza
Espressioni e operatori logici
Istruzioni composte
Istruzioni espressione e istruzione vuota
Istruzione if e if-else
Istruzione while
Istruzione for
Un esempio: variabili booleane
Operatore virgola
Istruzione do
Un esempio: i numeri di Fibonacci
Istruzione goto
Istruzioni break e continue
Istruzione switch
Operatore condizionale
Riepilogo
Esercizi
Capitolo 5 Funzioni
Definizione di funzione
Istruzione return
Prototipi di funzione
Un esempio: costruzione di una tabella di potenze
Dichiarazioni di funzione dal punto di vista del compilatore
Uno stile alternativo per l'ordine di definizione di funzioni
Chiamata di funzione e chiamata per valore
Costruzione di programmi di grandi dimensioni
Utilizzo di asserzioni
Regole di visibilita'
Classi di memorizzazione
Variabili statiche esterne
Inizializzazione di default
Ricorsione
Un esempio: le torri di Hanoi
Riepilogo
Esercizi
Capitolo 6 Array, puntatori e stringhe
Array monodimensionali
Puntatori
Chiamata per indirizzo
Relazione tra array e puntatori
Aritmetica dei puntatori e dimensione degli elementi
Array come parametri di funzioni
Un esempio: bubblesort
Allocazione dinamica della memoria con calloc() e malloc()
Un esempio: merge e mergesort
Stringhe
Funzioni della libreria standard per la gestione di stringhe
Array multidimensionali
Array di puntatori
Parametri di main()
Array frastagliati
Funzioni come parametri
Un esempio: utilizzo del metodo di bisezione per determinare le radici di una funzione
Array di puntatori a funzioni
Qualificatori di tipo const e volatile
Riepilogo
Esercizi
Capitolo 7 Operatori orientati ai bit e tipi enumerativi
Operatori ed espressioni orientate ai bit
Maschere
Strumenti software: stampa bit a bit di un int
Compattamento e scompattamento
Tipi enumerativi
Un esempio: il gioco della morra cinese
Riepilogo
Esercizi
Capitolo 8 Il preprocessore
Utilizzo di #include
Utilizzo di #define
Macro con parametri
Definizioni di tipo e macro in stddef.h
Un esempio: ordinamento con qsort()
Un esempio: macro con parametri
Macro in stdio.h e ctype.h
Compilazione condizionale
Macro predefinite
Operatori # e ##
Macro assert()
Utilizzo di #error e #pragma
Numeri di riga
Funzioni corrispondenti
Un esempio: quicksort
Riepilogo
Esercizi
Capitolo 9 Strutture e unioni
Strutture
Accesso ai membri di una struttura
Priorita' e associativa degli operatori: una panoramica finale
Utilizzo di strutture con funzioni
Inizializzazione di strutture
Un esempio: il gioco del poker
Unioni
Campi di bit
Un esempio: accesso ai bit e ai byte
Tipo di dati astratto stack (ADT)
Riepilogo
Esercizi
Capitolo 10 Strutture e trattamento di liste
Strutture autoreferenzianti
Liste lineari concatenate
Operazioni sulle liste
Alcune funzioni per l'elaborazione di liste
Stack
Un esempio: notazione polacca e valutazione di uno stack
Code
Alberi binari
Liste concatenate generali
Riepilogo
Esercizi
Capitolo 11 Input/output e sistema operativo
Funzione di output printf()
Funzioni di input scanf()
Funzioni fprintf(), fscanf(), sprintf() e sscanf()
Funzioni fopen() e fclose()
Un esempio: doppia spaziatura in un file
Utilizzo di file temporanei e funzioni personalizzate
Accesso diretto ai file
Input/output con descrittori di file
Permessi di accesso ai file
Esecuzione di comandi dall'interno di un programma C
Utilizzo di "pipe" da un programma C
Variabili di ambiente
Il compilatore C
Utilizzo del profiler
Librerie
Cronometrare il codice C
Utilizzo di make
Utilizzo di touch
Altri strumenti utili
Riepilogo
Esercizi
Capitolo 12 Applicazioni avanzate
Creazione di un processo concorrente mediante fork()
Sovrapposizione di un processo: la famiglia exec...()
Comunicazione tra processi mediante pipe()
Segnali
Un esempio: i cinque filosofi
Allocazione dinamica di matrici
Restituzione dello stato
Riepilogo
Esercizi
Capitolo 13 Dal C al C++
Output
Input
Funzioni
Classi e tipi di dati astratti
Overloading
Costruttori e distruttori
Programmazione orientata agli oggetti ed ereditarieta'
Polimorfismo
Template
Eccezioni
Vantaggi della programmazione orientata agli oggetti
Riepilogo
Esercizi
Capitolo 14 Dal C a Java
Output
Variabili e tipi
Classi e tipi di dati astratti
Overloading
Costruttori e distruttori di classi
Programmazione orientata agli oggetti ed ereditarieta'
Polimorfismo e ridefinizione di metodi
Applet
Eccezioni in Java
Vantaggi di Java e della OOP
Riepilogo
Esercizi
Appendice A La libreria standard
A.1 Diagnostica < assert.h >
A.2 Gestione di caratteri: < ctype.h >
A.3 Errori: < errno.h >
A.4 Limiti in virgola mobile: < float.h >
A.5 Limiti interi: < limits.h >
A.6 Localizzazione: < locale.h >
A.7 Matematica: < math.h >
A.8 Salti non locali: < setjmp.h >
A.9 Gestione dei segnali: < signal.h >
A.10 Parametri variabili: < stdarg.h >
A.11 Definizioni comuni: < stddef.h >
A.12 Input/output: < stdio.h >
A.13 Utility generali: < stdlib.h >
A.14 Gestione della memoria e delle stringhe: < string.h >
A.15 Data e ora: < time.h >
A.16 Altre funzioni
Appendice B Sintassi del linguaggio C
B.1 Programma
B.2 Definizioni di funzioni
B.3 Dichiarazioni
B.4 Istruzioni
B.5 Espressioni
B.6 Costanti
B.7 Stringhe letterali
B.8 Preprocessore
Appendice C Confronto tra ANSI C e C tradizionale
C.1 Tipi
C.2 Costanti
C.3 Dichiarazioni
C.4 Inizializzazioni
C.5 Espressioni
C.6 Funzioni
C.7 Conversioni
C.8 Puntatori ad array
C.9 Strutture e unioni
C.10 Preprocessore
C.11 File d'intestazione
C.12 Varie
Appendice D Codifiche ASCII
Appendice E Priorita' e associativita' degli operatori
Riferimenti bibliografici
Indice analitico |