Guida pratica alla programmazione.
Indice
Cenni di programmazione..........................................................................................................................8
..........................................................................................................................................................8
Il programma ........................................................................................................................................8
Breve storia della programmazione ......................................................................................................8
I linguaggi a basso livello.................................................................................................................8
I linguaggi a medio/alto livello.........................................................................................................8
Il C....................................................................................................................................................9
L'evoluzione ad oggetti del C - il C++.............................................................................................9
La programmazione oggi................................................................................................................10
Cosa serve per programmare in C............................................................................................................11
........................................................................................................................................................11
Struttura di un programma in C e cenni su linguaggi compilati e interpretati.........................................12
........................................................................................................................................................12
Linguaggi compilati e interpretati ......................................................................................................12
Note.....................................................................................................................................................13
Il primo programma.................................................................................................................................14
........................................................................................................................................................14
Uso delle variabili....................................................................................................................................16
........................................................................................................................................................16
Tipi di variabili ...................................................................................................................................16
Operazioni elementari sulle variabili..................................................................................................17
Stampa dei valori delle variabili..........................................................................................................18
Variabili locali e globali......................................................................................................................19
Variabili static e auto...........................................................................................................................20
Costanti: l'istruzione #define e la keyword const................................................................................20
Variabili register e volatile..................................................................................................................21
Funzioni e procedure................................................................................................................................22
........................................................................................................................................................22
Definizione intuitiva di funzione.........................................................................................................22
Esempi d'uso di funzioni e standard di utilizzo...................................................................................22
Procedure.............................................................................................................................................24
Funzioni statiche..................................................................................................................................25
Funzioni Globali\Locali .....................................................................................................................26
Input da tastiera........................................................................................................................................27
........................................................................................................................................................27
Controllare il flusso di un programma.....................................................................................................29
........................................................................................................................................................29
Cicli if-else..........................................................................................................................................29
Operatori di confronto.........................................................................................................................30
Operatori logici....................................................................................................................................31
Strutture switch-case...........................................................................................................................33
Cicli iterativi - Istruzione for...............................................................................................................35
Cicli iterativi - Istruzione while...........................................................................................................37
Cicli iterativi - Istruzione do-while.....................................................................................................38
Istruzione goto.....................................................................................................................................38
Istruzione break e continue..................................................................................................................39
Gli array...................................................................................................................................................40
........................................................................................................................................................40
Array monodimensionali.....................................................................................................................40
Matrici e array pluridimensionali........................................................................................................42
I puntatori.................................................................................................................................................43
........................................................................................................................................................43
Strutture dinamiche.............................................................................................................................43
Liste monolanciate..............................................................................................................................43
Liste circolari.......................................................................................................................................44
Alberi e Grafi.......................................................................................................................................44
Puntatori in C.......................................................................................................................................45
Passaggio di puntatori alle funzioni....................................................................................................46
Puntatori e array..................................................................................................................................47
Passaggio di array a funzioni...............................................................................................................48
Allocazione dinamica della memoria..................................................................................................48
Puntatori a funzioni.............................................................................................................................49
Funzioni di callback........................................................................................................................50
Stringhe....................................................................................................................................................51
........................................................................................................................................................51
Dichiarazione di una stringa................................................................................................................51
Operare sulle stringhe - La libreria string.h........................................................................................53
strcmp.............................................................................................................................................53
strncmp...........................................................................................................................................54
strcpy..............................................................................................................................................54
strncpy............................................................................................................................................55
strcat................................................................................................................................................55
strncat..............................................................................................................................................56
strstr................................................................................................................................................56
Altre funzioni sulle stringhe................................................................................................................57
sprintf..............................................................................................................................................57
snprintf............................................................................................................................................57
sscanf..............................................................................................................................................57
gets..................................................................................................................................................58
atoi..................................................................................................................................................59
Argomenti passati al main...................................................................................................................59
Uso delle stringhe e sicurezza del programma....................................................................................60
Algoritmi di ordinamento.........................................................................................................................63
........................................................................................................................................................63
Naive sort............................................................................................................................................63
Bubble sort..........................................................................................................................................64
Insert sort.............................................................................................................................................66
Quick sort............................................................................................................................................66
Tipi di dato derivati, enumerazioni e strutture.........................................................................................69
........................................................................................................................................................69
Definire propri tipi - L'operatore typedef............................................................................................69
Enumerazioni.......................................................................................................................................70
Dati strutturati......................................................................................................................................70
Direttive per il preprocessore...................................................................................................................74
........................................................................................................................................................74
La direttiva #include ...............................................................................................................................74
La direttiva #define .................................................................................................................................74
Controllo del flusso .................................................................................................................................75
Macro con parametri ...............................................................................................................................77
Macro predefinite ....................................................................................................................................77
Operatori # e ## .......................................................................................................................................77
Direttive #error e #warning .....................................................................................................................78
Funzione ricorsive....................................................................................................................................79
........................................................................................................................................................79
Esempio informale di ricorsione.........................................................................................................79
Esempio pratico di ricorsione..............................................................................................................79
Ricorsione tail e non-tail.....................................................................................................................80
Liste..........................................................................................................................................................82
........................................................................................................................................................82
Liste come tipi di dato astratto............................................................................................................82
Rappresentazione statica.....................................................................................................................83
Rappresentazione dinamica.................................................................................................................85
Gestione dei file ad alto livello................................................................................................................88
........................................................................................................................................................88
Apertura dei file in C...........................................................................................................................88
Scrittura su file testuali - fprintf e fputs..............................................................................................89
Lettura di file testuali - fscanf e fgets..................................................................................................91
Scrittura di dati in formato binario - fwrite.........................................................................................94
Lettura di dati in formato binario - fread.............................................................................................95
Posizionamento all'intero di un file - fseek e ftell...............................................................................96
Prendere parametri da riga di comando...................................................................................................98
........................................................................................................................................................98
Libreria math.h.........................................................................................................................................99
........................................................................................................................................................99
Funzioni trigonometriche....................................................................................................................99
Funzioni iperboliche............................................................................................................................99
Funzioni esponenziali e logaritmiche..................................................................................................99
Potenze e radici...................................................................................................................................99
Arrotondamento e valore assoluto.......................................................................................................99
Costanti................................................................................................................................................99
Generazione di numeri pseudocasuali...............................................................................................100
Libreria time.h........................................................................................................................................101
......................................................................................................................................................101
time_t ................................................................................................................................................101
struct tm ............................................................................................................................................101
Esempio ............................................................................................................................................102
Gestione dei file - primitive a basso livello...........................................................................................104
......................................................................................................................................................104
File pointer e file descriptor..............................................................................................................104
open...................................................................................................................................................104
Modalità di apertura......................................................................................................................105
Permessi........................................................................................................................................105
close...................................................................................................................................................106
read e write........................................................................................................................................106
Esempio pratico............................................................................................................................107
lseek...................................................................................................................................................107
Redirezione........................................................................................................................................108
Gestione del filesystem a basso livello..............................................................................................109
Gestione delle directory.....................................................................................................................109
Socket e connessioni di rete in C...........................................................................................................112
......................................................................................................................................................112
Protocolli TCP e UDP.......................................................................................................................112
Indirizzi IP e endianness....................................................................................................................112
Porte...................................................................................................................................................113
Inizializzazione dell'indirizzo............................................................................................................114
Creazione del socket e connessione...................................................................................................115
Lettura e scrittura di informazioni sul socket....................................................................................116
Lato server.........................................................................................................................................116
Esempio pratico.................................................................................................................................117
Multiprogrammazione - programmazione multiprocesso e multithread................................................122
......................................................................................................................................................122
Introduzione ai sistemi multiprogrammati........................................................................................122
Algoritmi di scheduling.....................................................................................................................122
Programmazione multiprocesso........................................................................................................123
Comunicazione tra processi. Concetto di pipe..................................................................................126
Interruzione di un processo. Concetto di segnale..............................................................................129
Programmazione multithread............................................................................................................130
Programmazione della porta parallela in C............................................................................................133
......................................................................................................................................................133
Disclaimer.........................................................................................................................................133
Struttura della porta...........................................................................................................................135
Individuazione dell'indirizzo della porta parallela............................................................................135
Primitive di sistema per la programmazione del dispositivo............................................................135
ioperm...........................................................................................................................................135
inb o outb......................................................................................................................................136
Esempio pratico............................................................................................................................136
Interfacciamento tra C e MySQL...........................................................................................................138
......................................................................................................................................................138
Applicazione pratica..........................................................................................................................138
CGI in C.................................................................................................................................................143
......................................................................................................................................................143
Pagine statiche e pagine dinamiche...................................................................................................143
Richieste GET e POST......................................................................................................................145
GET..............................................................................................................................................145
POST............................................................................................................................................148
Link esterni........................................................................................................................................149
Catturare pacchetti con le librerie PCAP...............................................................................................150
......................................................................................................................................................150
Compilare e linkare programmi con le librerie PCAP......................................................................150
Trovare un'interfaccia di rete.............................................................................................................150
Sniffing..............................................................................................................................................152
Packet injection.................................................................................................................................155
Introduzione ai sistemi fuzzy e alle reti neurali.....................................................................................156
......................................................................................................................................................156
Prerequisiti matematici .....................................................................................................................156
Sistemi fuzzy ....................................................................................................................................156
Introduzione alle reti neurali ............................................................................................................156
Struttura di una rete neurale .............................................................................................................157
Tecniche di apprendimento ...............................................................................................................160
Sviluppo di una rete neurale .............................................................................................................160
Riferimenti bibliografici ...................................................................................................................168
Raw socket.............................................................................................................................................169
......................................................................................................................................................169