Guidac - Appunti personali sul linguaggio di programmazione C PDF

Title Guidac - Appunti personali sul linguaggio di programmazione C
Author Antonio Dellifiori
Course Programmazione 
Institution Università degli Studi di Bari Aldo Moro
Pages 227
File Size 2.1 MB
File Type PDF
Total Downloads 81
Total Views 140

Summary

Appunti personali sul linguaggio di programmazione C...


Description

IL LINGUAGGIO

C > Guida pratica alla programmazione 3a edizione

Autore: Fabio “BlackLight” Manganiello < [email protected] > rilasciato sotto licenza Creative Commons, 2005-2008, 2010, 2016

1

Indice Cenni di programmazione.............................................................................................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++..............................................................10 La programmazione oggi...................................................................................11 Cosa serve per programmare in C...............................................................................13 Struttura di un programma in C e cenni su linguaggi compilati e interpretati............15 Linguaggi compilati e interpretati .........................................................................15 Il primo programma....................................................................................................17 Uso delle variabili.......................................................................................................20 Tipi di variabili ......................................................................................................20 Operazioni elementari sulle variabili......................................................................21 Stampa dei valori delle variabili.............................................................................23 Variabili locali e globali..........................................................................................24 Variabili static e auto..............................................................................................25 Costanti: l'istruzione #define e la keyword const...................................................26 Variabili register e volatile......................................................................................27 Funzioni e procedure...................................................................................................28 Definizione intuitiva di funzione............................................................................28 Esempi d'uso di funzioni e standard di utilizzo......................................................29 Procedure................................................................................................................33 Funzioni statiche.....................................................................................................34 Funzioni globali/locali ...........................................................................................35 Definizione di macro..............................................................................................36 Input da tastiera...........................................................................................................38 Controllare il flusso di un programma........................................................................41 Costrutti if-else.......................................................................................................41 Operatori di confronto............................................................................................42 Operatori logici.......................................................................................................43 Costrutti switch-case..............................................................................................46 Cicli iterativi - Istruzione for..................................................................................48 Cicli iterativi - Istruzione while..............................................................................51 Cicli iterativi - Istruzione do-while........................................................................52 Istruzione goto........................................................................................................53 Istruzioni break e continue.....................................................................................53 Gli array......................................................................................................................55 Array monodimensionali........................................................................................55 Matrici e array pluridimensionali...........................................................................57 I puntatori....................................................................................................................59 2

Puntatori in C..........................................................................................................59 Passaggio di puntatori alle funzioni.......................................................................60 Puntatori e array.....................................................................................................62 Passaggio di array a funzioni..................................................................................63 Allocazione dinamica della memoria.....................................................................63 Deallocazione della memoria, memory leak e garbage collection.........................66 Funzioni che ritornano array..................................................................................70 Puntatori a funzione................................................................................................71 Funzioni come parametri di altre funzioni.........................................................72 Stringhe.......................................................................................................................74 Dichiarazione di una stringa...................................................................................74 Operare sulle stringhe - La libreria string.h............................................................78 strcmp................................................................................................................78 strncmp..............................................................................................................79 strcpy..................................................................................................................79 strncpy................................................................................................................80 strcat...................................................................................................................80 strncat.................................................................................................................81 strstr...................................................................................................................81 Altre funzioni sulle stringhe...................................................................................82 sprintf.................................................................................................................82 snprintf...............................................................................................................83

3

4

Enumerazioni........................................................................................................106 Dati strutturati.......................................................................................................107 Direttive per il preprocessore....................................................................................110 La direttiva #include ............................................................................................110 La direttiva #define ..............................................................................................111 Controllo del flusso ..............................................................................................111 Macro predefinite ................................................................................................113 Operatori # e ## ...................................................................................................114 Direttive #error e #warning .................................................................................114 Liste...........................................................................................................................116 Liste come tipi di dato astratto.............................................................................116 Rappresentazione statica.......................................................................................117 Rappresentazione dinamica..................................................................................119 Gestione dei file ad alto livello.................................................................................122 Apertura dei file in C............................................................................................123 Scrittura su file testuali - fprintf e fputs................................................................124 Lettura di file testuali - fscanf e fgets...................................................................126 Scrittura di dati in formato binario - fwrite..........................................................129 Lettura di dati in formato binario - fread..............................................................130 Posizionamento all'intero di un file - fseek e ftell................................................131 Cenni di programmazione a oggetti in C..................................................................133 Libreria math.h..........................................................................................................137 Funzioni trigonometriche.....................................................................................137 Funzioni iperboliche.............................................................................................137 Funzioni esponenziali e logaritmiche...................................................................137 Potenze e radici.....................................................................................................137 Arrotondamento e valore assoluto........................................................................137 Costanti.................................................................................................................138 Generazione di numeri pseudocasuali..................................................................138 Libreria time.h...........................................................................................................139 time_t ...................................................................................................................139 struct tm ...............................................................................................................139 Esempio ...............................................................................................................140 Gestione dei file - primitive a basso livello..............................................................142 File pointer e file descriptor.................................................................................142 open......................................................................................................................143 Modalità di apertura.........................................................................................143 Permessi...........................................................................................................144 close......................................................................................................................144 read e write...........................................................................................................145 Esempio pratico...............................................................................................145 lseek......................................................................................................................146 Redirezione...........................................................................................................147 Gestione del filesystem a basso livello.................................................................148 5

Gestione delle directory........................................................................................148 Socket e connessioni di rete in C..............................................................................151 Protocolli TCP e UDP..........................................................................................151 Indirizzi IP e endianness.......................................................................................152 Porte......................................................................................................................153 Inizializzazione dell'indirizzo...............................................................................154 Creazione del socket e connessione.....................................................................155 Lettura e scrittura di informazioni sul socket.......................................................156 Lato server............................................................................................................156 Esempio pratico...............................................................................................157 Multiprogrammazione - programmazione multiprocesso e multithread...................162 Introduzione ai sistemi multiprogrammati...........................................................162 Algoritmi di scheduling........................................................................................162 Programmazione multiprocesso...........................................................................164 Comunicazione tra processi. Concetto di pipe.....................................................167 Interruzione di un processo. Concetto di segnale.................................................170 Programmazione multithread...............................................................................172 Programmazione della porta parallela in C...............................................................175 Disclaimer.............................................................................................................175 Struttura della porta..............................................................................................177 Individuazione dell'indirizzo della porta parallela...............................................177 Primitive di sistema per la programmazione del dispositivo................................178 ioperm..............................................................................................................178 inb o outb.........................................................................................................179 Esempio pratico...............................................................................................179 Uso di funzioni da file binari esterni - dlopen, dlsym...............................................181 Interfacciamento tra C e MySQL..............................................................................183 Applicazione pratica.............................................................................................183 CGI in C....................................................................................................................189 Pagine statiche e pagine dinamiche......................................................................189 Richieste GET e POST.........................................................................................191 GET..................................................................................................................191 POST................................................................................................................195 Link esterni...........................................................................................................197 Catturare pacchetti con le librerie PCAP..................................................................198 Compilare e linkare programmi con le librerie PCAP.........................................198 Trovare un'interfaccia di rete................................................................................198 Sniffing.................................................................................................................200 Packet injection....................................................................................................203 Introduzione alle reti neurali.....................................................................................205 Sistemi fuzzy .......................................................................................................205 Introduzione alle reti neurali ...............................................................................205 Struttura di una rete neurale ................................................................................206 Tecniche di apprendimento ..................................................................................209 6

Sviluppo di una rete neurale ................................................................................210 Raw socket................................................................................................................214 Monitorare modifiche ai file tramite inotify.............................................................218 Programmazione di interfacce grafiche in C - cenni di gtk......................................221

7

Cenni di programmazione Il programma Si definisce "programma" qualsiasi sequenza di istruzioni scritte in linguaggio macchina (l'unico linguaggio comprensibile ad un calcolatore, le famose sequenze di 0 e 1) atta ad essere elaborata da un calcolatore o comunque da una struttura informatica. Ogni volta che usiamo un calcolatore facciamo uso di programmi. Word e Outlook sono programmi, così come Vim o Emacs. Windows o Linux stessi non sono altro che programmi ("software di base"). Anche i virus sono dei programmi eseguibili. Si pone qui il problema di come scrivere un programma. Per questa esigenza si fa ricorso ai linguaggi di programmazione.

Breve storia della programmazione I linguaggi a basso livello In principio, quando i computer erano enormi mobili grandi quanto palazzine, era il programmatore stesso a gestire il calcolatore attraverso istruzioni binarie, nei primordi dell'informatica accendendo o spegnendo fisicamente valvole o attaccando e staccando cavi. Programmare attraverso sequenze binarie è però qualcosa di completamente innaturale per l'uomo. Passiamo alla metà degli anni 50: i programmatori creano un sistema più "comodo" per creare i loro progetti, l'Assembly. L'Assembly (o GLI Assembly, dato che la sintassi di questo linguaggio cambia in funzione di molte variabili, quali il sistema operativo in uso, l'architettura della macchina che si va a programmare e l'assemblatore in uso) non è altro che una rappresentazione simbolica del linguaggio macchina, dove ad ogni istruzione binaria corrisponde un'istruzione mnemonica, relativamente più semplice da ricordare. Così la sequenza 1100 1101 0010 0001, o CD 21 (linguaggio macchina) diventa int 21h (sintassi Assembly Intel).

I linguaggi a medio/alto livello L'Assembly tuttavia è ancora qualcosa di molto primitivo. E' pur sempre un linguaggio orientato alla macchina, non al problema, e, col passare degli anni i progetti si fanno via via più grandi, e l'Assembly da solo non può gestirli. Ecco quindi che compaiono sulla scena i primi linguaggi ad "alto livello", ossia lingu...


Similar Free PDFs