SERVIZIO CLIENTI 0541.628242 Lunedì - Venerdì / 8.30-17.30

Sconto 15%
Programmare in C

Programmare in C

Autori Facchinetti Tullio, Larizza Cristiana, Rubini Alessandro
Editore Apogeo Education - Maggioli Editore
Formato Cartaceo
Dimensione 17X24
Pagine 316
Pubblicazione Maggio 2015 (I Edizione)
ISBN / EAN 8891611208 / 9788891611208
Collana Apogeo Education

Concetti di base e tecniche avanzate

Prezzo Online:

28,00 €

23,80 €

Aggiornamenti e Contenuti Digitali

Contenuti Digitali riservati ai Docenti

Questo manuale nasce con l’intento di fornire una guida esauriente ma compatta alla programmazione in linguaggio C. 

Il testo si rivolge in primo luogo agli studenti di Ingegneria e di Informatica, ma può essere un prezioso strumento di consultazione anche per il professionista.

Gli autori, infatti, hanno adottato un approccio innovativo nella scelta degli argomenti, nella loro organizzazione e nella presentazione, puntando a evidenziare le funzionalità del linguaggio ritenute più utili nel suo uso corrente, in relazione alle applicazioni per le quali ancora oggi il C rappresenta, anche in ambito industriale, il linguaggio di programmazione di riferimento.

In questo modo il volume, oltre a presentare in modo chiaro e ordinato tutti i concetti di base della programmazione, riesce ad affrontare anche argomenti più avanzati: problemi comuni, ma che richiedono soluzioni non banali.

All'indirizzo web http://robot.unipv.it/toolleeo/programmare_in_c/ sono disponibili materiali di supporto dedicati al volume.


Gli Autori

Tullio Facchinetti ricercatore di Sistemi di elaborazione dell’informazione presso il Dipartimento di Ingegneria Industriale e dell’Informazione, Università di Pavia.
Cristiana Larizza professore associato di Sistemi di elaborazione dell’informazione presso il Dipartimento di Ingegneria Industriale e dell’Informazione, Università di Pavia.
Alessandro Rubini ingegnere elettronico, lavora come libero professionista.

1 Caratteristiche generali                                          

1 1 Breve storia del linguaggio                                    

2 Introduzione al linguaggio C                                      

2.1 Il primo programma                                          
2.2 Compilazione del programma                      
2.3 Errori e avvertimenti                                        
2.4 Interpretazione dei messaggi del compilatore                  
2.5 I commenti                                    
2.6 Nota stilistica                                                
2.7 Gli identificatori                                            
2.8 Le parole chiave                                    
2.9 Le variabili                                                
2.10 Dichiarazione di variabili a sola lettura                          
2.11 Le espressioni                                      
2.12 Visualizzazione a video                                    

3 Il preprocessore                                            

3.1 La direttiva #define
3.2 La direttiva #include
3 3 Le direttive #if e #ifdef                                
3.4 Eliminazione temporanea di codice usando #if                
3.5 Informazioni utili per la diagnostica                      
3.6 Esecuzione del solo preprocessore                        

4 Istruzioni e strutture di controllo                   

4.1 Lettura di dati                                   
4.2 Istruzioni composte                                
4.3 Il costrutto condizionale if                              
4.4 L’uso di else                                     
4.5 Condizioni complesse con l’uso di operatori logici                 
4.6 Il costrutto iterativo for                              
4.7 Il costrutto iterativo while                       
4.8 Il costrutto iterativo do-while                   
4.9 Il costrutto di selezione switch                                  
4.10 Controllo del flusso di esecuzione con break e continue               

5 I tipi di dati                                                    

5.1 La tipizzazione del linguaggio                                
5.2 Tipi di dato e memoria                                        
5.3 I tipi numerici                                            
5.4 I tipi interi                                              
5.5 Le costanti di tipo intero                            
5.6 I tipi a virgola mobile                                      
5.7 Le costanti in virgola mobile                                  
5.8 I puntatori                                                

5.8.1 Operazioni sui puntatori                                
5.8.2 Il puntatore nullo                                    

5.9 Gli array                                                

5.9.1 I vettori                                            
5.9.2 Inizializzazione dei vettori                              
5.9.3 Uso delle macro in combinazione con vettori e cicli      

5.10 L’operatore sizeof                                      
5.11 Le stringhe                                      
5.12 Interi di dimensione prefissata                                  
5.13 La conversione di tipo                                

5.13.1 Conversione automatica                                
5.13.2 Conversione per assegnamento                          
5.13.3 Conversione esplicita: il cast                          

6 Le funzioni                                                      

6.1 Dichiarazione di funzioni                                    
6.2 Uso di void                                              
6.3 Definizione di funzioni                                      
6.4 Chiamata di una funzione                                    
6.5 Passaggio dei parametri                                    
6.6 Passaggio per riferimento                                  
6.7 Passaggio di puntatori const                                
6.8 Calcolo di un istogramma                                  
6.9 Passaggio di parametri al programma principale                  

6.9.1 Stampa dei parametri della linea di comando      
6.9.2 Generazione di numeri pseudo-casuali                    
6.9.3 Uso di switch per l’analisi della riga di comando            

6.10 La ricorsione                                                

6.10.1 La sequenza di Fibonacci                              
6.10.2 Equivalenza con la versione iterativa                      

7 I tipi di dati derivati                                              

7.1 Gli array multi-dimensionali                              

7.1.1 Le matrici                                          
7.1.2 Inizializzazione delle matrici                    
7.1.3 Array con più di 2 dimensioni                          

7.2 Le strutture                                                

7.2.1 Inizializzazione dei campi di strutture                    
7.2.2 I puntatori a struttura                              
7.2.3 Strutture come argomenti di funzione                    
7.2.4 Confronto di strutture                                  

7 3 Assegnare nuovi nomi ai tipi di dato: typedef                      

8 I file                                                            

8.1 File binari e file di testo                                      
8.2 L’accesso a file

8.2.1 Apertura e chiusura di file                              
8.2.2 La posizione corrente all’interno del file          
8.2.3 I file di I/O standard                              

8.3 Lettura/scrittura di singoli caratteri                            
8.4 Accesso a file binari                                          
8.5 Accesso a file di testo                                        
8.6 Lettura per righe con fgets e sscanf                              
8.7 Lettura e scrittura mediante fscanf e fprintf                        
8.8 La bufferizzazione degli accessi al disco                        

8.8.1 Bufferizzazione dell’input con scanf                      
8.8.2 Bufferizzazione dell’input con fgets                      
8.8.3 La bufferizzazione dell’output testuale                    
8.8.4 Bufferizzazione dell’output e chiusura di file                
8.8.5 Il problema del buffer overflow                          

9 I puntatori                                                      

9.1 I puntatori a void                                            
9.2 Puntatori e vettori                                          

9.2.1 Puntatori e stringhe                    
9.2.2 Dettagli sull’inizializzazione                            
9.2.3 Esempio di funzione per la manipolazione delle stringhe      

9.3 Passaggio di matrici come parametri di funzione                  
9.4 I vettori di stringhe                                          
9.5 L’allocazione dinamica della memoria                            

9.5.1 Allocazione dinamica nella lettura da file                  
9.5.2 Allocazione dinamica di una matrice                      

10 Suddivisione in moduli di un programma                            

10.1 Il processo di generazione del programma eseguibile                
10.2 Modularizzazione e uso di librerie di codice                      
10.3 Esempio di programma composto da più file sorgente              
10.4 Linking per la creazione del programma eseguibile                  
10.5 Il comando ar                                                
10.6 Il comando make                                            

10.6.1 Le variabili di make                                    
10.6.2 Makefile e dipendenze                            
10.6.3 Un esempio completo                                  

11 Gli operatori                                                    

11.1 Gli operatori e le espressioni                                    

11.1.1 La precedenza degli operatori                      
11.1.2 L’associatività                                        
11.1.3 L’ordine di valutazione                                

11.2 Gli operatori aritmetici                                        

11.2.1 Moltiplicazione e divisione                              
11.2.2 Resto di divisione intera: operatore modulo                
11.2.3 Somma e sottrazione                                  
11.2.4 Negazione unaria                                    

11.3 Gli operatori di assegnamento                                  

11.3.1 Assegnamento semplice                                
11.3.2 Forme abbreviate di assegnamento                        
11.3.3 Incremento e decremento                          

11.4 Gli operatori di confronto                                    

11.4.1 Uguale e diverso                                    
11.4.2 Disuguaglianza                                      

11.5 Gli operatori logici                                          

11.5.1 AND logico                                          
11.5.2 OR logico                                          
11.5.3 Negazione logica                                    

11.6 Le operazioni sui bit                                        

11.6.1 AND binario                                        
11.6.2 OR binario                                      
11.6.3 XOR binario                                    
11.6.4 Complemento a 1                              
11.6.5 Scorrimento dei bit (shift)                              
11.6.6 La mascheratura                                      

11.7 Operazioni sui puntatori                                      

11.7.1 Uso di puntatore                                      
11.7.2 Estrazione di un indirizzo                              

11.8 Operazioni sulle strutture                                    

11.8.1 Elemento di unione o struttura                          
11.8.2 Elemento di struttura da puntatore                

11.9 Funzioni e vettori                                            

11.9.1 Elemento di vettore                                    
11.9.2 Chiamata a funzione                                

11.10 Operazioni sui tipi                                          

11.10.1 Operatore di cast                          
11.10.2 Dimensione di una variabile                            
11.10.3 Operatore typeof                                    

11.11 Operatori di controllo                                        

11.11.1 L’espressione condizionale                              
11.11.2 L’operatore virgola                                    
11.12 Il concetto di effetto collaterale                                
11.13 Side effect e ordine di valutazione                              

12 Le classi di memorizzazione                                      

12.1 Lo spazio dei nomi                                          
12.2 L’allocazione di memoria                                    
12.3 Le classi di memorizzazione di variabili                          
12.4 La visibilità di dati e funzioni                                  
12.5 Le variabili auto                                            
12.6 Le variabili register                                          
12.7 Le variabili static                                            
12.8 Le variabili extern                                          
12.9 Le classi di memorizzazione di funzioni                          
12.10 L’inizializzazione delle variabili                                

13 Ricerca e ordinamento                                          

13.1 L’ordinamento                                              
13.2 Algoritmi di ricerca                                          

13.2.1 La ricerca sequenziale                                  
13.2.2 La ricerca binaria                                    

13.3 Ricerca e ordinamento con le funzioni di libreria                  

A Lo stile di programmazione                                      

A.1 Indentazione                                                
A.2 Indentazione ed errori                                        
A.3 Strutturazione dei dati e algoritmi                              
A.4 Organizzazione del programma                          
A.5 La gestione degli errori                              
A.6 Uso dei commenti                                        
A.7 L’interazione con l’utente                                    

Sezioni di approfondimento

Il salto incondizionato: il costrutto goto                            
L’allineamento della memoria                                  
Le enumerazioni                                                  
Nuovi tipi del C99: booleani e numeri complessi                    
Uso dello stack per il passaggio dei parametri                            
Funzioni variadiche                                            
Puntatori a strutture come campi di strutture                      
I campi di bit                                                    
Le union                                                        
La endianness                                                  
Typedef vs  #define per definire nuovi tipi                            
Redirezione dell’input e dell’output                                
Uso avanzato di sscanf per il parsing di una stringa                  
I puntatori a funzione                                          
Protezione del contenuto dei file di intestazione                  
Utilizzo di strutture opache                                        
Confronto tra valori in virgola mobile                              
Utilizzo di AND per la chiamata a funzione tramite puntatore            
Uso di OR per impostare il valore di una variabile                      
La codifica dei colori in formato RGB                                
Le sezioni della memoria di un programma C                         


Scrivi la tua recensione

Solo gli utenti registrati possono scrivere recensioni. Accedi oppure Registrati

Prodotti consigliati

Back to top