Non perderti novità e offerte esclusive! Iscriviti alla newsletter per aggiornamenti su promozioni, novità editoriali e corsi di formazione
Maggioli Summer Training: -30% su tutti i corsi registrati! Aggiornarsi in estate costa meno, scopri le offerte

Programmare in C

Concetti di base e tecniche avanzate
di Tullio Facchinetti, Cristiana Larizza
ISBN 8891675743
Data pubblicazione Aprile 2025
scopri di più
Cartaceo
Special Price 30,40 €
SCONTO 5%
5%
Anzichè 32,00 €
Disponibile
  • Spedizione in 48h
  • Paga alla consegna senza costi aggiuntivi
  • Spedizione gratuita
Sei un docente?

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.
Questa seconda edizione aggiorna vari aspetti del testo originale, riorganizza alcuni contenuti e utilizza diversi nuovi esempi.

Tullio Facchinetti
Professore 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.

CONTENUTI AGGIUNTIVI
Disponibili online: listato dei programmi presentati nel testo, esercitazioni con domande a scelta multipla

Pagine 386
Data pubblicazione Aprile 2025
ISBN 8891675743
ean 9788891675743
Tipologia prodotto Cartaceo
Sottotitolo Concetti di base e tecniche avanzate
Collana Apogeo Education
Editore Apogeo Education - Maggioli Editore
Dimensione 17x24
Tullio Facchinetti, Cristiana Larizza

Prefazione 
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 Commenti
2.6 Formattazione del codice sorgente
2.7 Parole chiave
2.8 Identificatori
2.9 Variabili
2.10 Espressioni
2.11 Visualizzazione a video
2.12 Lettura di dati
2.12.1 Uso di fgets per la lettura di dati da tastiera
2.12.2 Conversioni numeriche tramite atoi e atof
3 Preprocessore
3.1 Direttiva #define
3.2 Direttiva #define con parametri
3.3 Direttiva #include
3.4 Direttive #if e #ifdef
3.5 Eliminazione temporanea di codice usando #if
3.6 Macro predefinite utili per la diagnostica
3.7 Esecuzione del solo preprocessore
4 Strutture di controllo
4.1 Istruzioni composte
4.2 Costrutto condizionale if
4.3 Uso di else
4.4 Condizioni complesse con l’uso di operatori logici
4.5 Costrutto iterativo for
4.6 Costrutto iterativo while
4.7 Costrutto iterativo do-while
4.8 Costrutto di selezione switch
4.9 Controllo del flusso di esecuzione con break e continue
5 Tipi di dati
5.1 Tipizzazione e dichiarazione
5.2 Tipi di dato e memoria
5.2.1 Dichiarazione di variabili a sola lettura
5.3 Tipi numerici
5.3.1 Tipi interi
5.3.2 Costanti di tipo intero
5.3.3 Tipi in virgola mobile
5.3.4 Costanti in virgola mobile
5.4 Puntatori
5.4.1 Operazioni sui puntatori
5.4.2 Puntatore nullo
5.5 Array
5.5.1 Vettori
5.5.2 Allocazione in memoria dei vettori e indicizzazione
5.5.3 Inizializzazione dei vettori
5.5.4 Uso delle macro in combinazione con vettori e cicli
5.6 Operatore sizeof
5.7 Stringhe
5.7.1 Stringhe costanti
5.7.2 Variabili stringa
5.7.3 Stampa di stringhe
5.7.4 Funzioni di manipolazione delle stringhe
5.8 Interi di dimensione prefissata
5.9 Conversione di tipo
5.9.1 Conversione automatica
5.9.2 Conversione per assegnamento
5.9.3 Conversione esplicita: il cast
6 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 valore
6.7 Passaggio per riferimento
6.8 Passaggio di puntatori const
6.9 Calcolo di un istogramma
6.10 Passaggio di parametri al programma principale
6.10.1 Stampa dei parametri della linea di comando
6.10.2 Controllo del numero di parametri
6.10.3 Generazione di numeri pseudo-casuali
6.10.4 Analisi avanzata della riga di comando
6.11 Ricorsione
6.11.1 Successione di Fibonacci
6.11.2 Equivalenza con la versione iterativa
7 Tipi di dati derivati
7.1 Array multi-dimensionali
7.1.1 Matrici
7.1.2 Inizializzazione delle matrici
7.1.3 Array con più di 2 dimensioni
7.2 Strutture dati
7.2.1 Dichiarazione di strutture
7.2.2 Accesso ai campi di una struttura
7.2.3 Inizializzazione dei campi di strutture
7.2.4 Puntatori a struttura
7.2.5 Strutture come argomenti di funzione
7.2.6 Confronto di strutture
7.2.7 Strutture come campi di strutture
7.3 Assegnamento di nuovi nomi ai tipi di dato: typedef
8 Utilizzo dei file
8.1 Vari tipi di file
8.1.1 File di testo e file binari
8.1.2 Rappresentazione dei dati
8.2 Accesso a file
8.2.1 Apertura e chiusura di file
8.2.2 Posizione corrente all’interno del file
8.3 File di I/O standard
8.4 Lettura/scrittura di singoli caratteri
8.5 Accesso a file binari
8.6 Accesso a file di testo
8.7 Lettura per righe con fgets e sscanf
8.7.1 Formato grafico PGM
8.7.2 Lettura di file PGM
8.8 Lettura e scrittura mediante fscanf e fprintf
8.9 Casistiche per la lettura/scrittura di file
8.9.1 Elaborazione sequenziale
8.9.2 Elaborazione in blocco
8.9.3 Allocazione della memoria a dimensione fissa
8.10 Bufferizzazione degli accessi al disco
8.10.1 Bufferizzazione dell’input con scanf
8.10.2 Bufferizzazione dell’input con fgets
8.10.3 Bufferizzazione dell’output testuale
8.10.4 Bufferizzazione dell’output e chiusura di file
8.10.5 Problema del buffer overflow
9 Puntatori
9.1 Puntatori a void
9.2 Conversione tra puntatori
9.3 Puntatori e vettori
9.3.1 Operazioni su puntatori e vettori
9.3.2 Puntatori e stringhe
9.3.3 Inizializzazione delle stringhe
9.4 Passaggio di matrici come parametri di funzione
9.5 Vettori di stringhe
9.6 Allocazione dinamica della memoria
9.7 Allocazione dinamica e lettura da file
9.7.1 Lettura di file in blocco
9.7.2 Allocazione incrementale della memoria
9.7.3 Allocazione dinamica nell’elaborazione di file PGM
9.7.4 Allocazione dinamica di una matrice
9.8 Puntatori a funzione
10 Modularizzazione dei programmi
10.1 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.3.1 File principale
10.3.2 Modulo debug.h e la macro TRACE
10.3.3 Strutture dati e relative funzioni (file pers.*)
10.3.4 Elaborazione di stringhe generiche (file strchg.*)
10.3.5 Esempio di esecuzione del programma
10.4 Linking per la creazione del programma eseguibile
10.5 Comando ar
10.6 Comando make
10.6.1 Variabili di make
10.6.2 Makefile e dipendenze
10.6.3 Esempio completo di Makefile
11 Classi di memorizzazione
11.1 Spazio dei nomi
11.2 Allocazione di memoria
11.2.1 Allocazione statica
11.2.2 Allocazione automatica
11.2.3 Allocazione dinamica
11.2.4 Esempi di allocazione
11.3 Classi di memorizzazione di variabili
11.4 Visibilità di dati e funzioni
11.4.1 Effetto della visibilità: esempio
11.4.2 Visibilità e limitazioni nell’uso delle variabili
11.5 Qualificatori e classi di memorizzazione
11.5.1 Variabili auto
11.5.2 Variabili register
11.5.3 Variabili static
11.5.4 Variabili extern
11.6 Classi di memorizzazione di funzioni
11.7 Classe di memorizzazione e inizializzazione di variabili
12 Gli operatori
12.1 Operatori ed espressioni
12.1.1 Precedenza degli operatori
12.1.2 Associatività
12.1.3 Ordine di valutazione
12.2 Operatori aritmetici
12.2.1 Moltiplicazione e divisione
12.2.2 Resto di divisione intera: operatore modulo
12.2.3 Somma e sottrazione
12.2.4 Negazione unaria
12.3 Operatori di assegnamento
12.3.1 Assegnamento semplice
12.3.2 Forme abbreviate di assegnamento
12.3.3 Incremento e decremento
12.4 Operatori di confronto
12.4.1 Uguaglianza e diversità
12.4.2 Disuguaglianza
12.5 Operatori logici
12.5.1 AND logico
12.5.2 OR logico
12.5.3 Negazione logica
12.6 Operazioni sui bit
12.6.1 AND binario
12.6.2 OR binario
12.6.3 XOR binario
12.6.4 Complemento a 1
12.6.5 Scorrimento dei bit (shift)
12.6.6 Operazione di mascheratura
12.7 Operazioni sui puntatori
12.7.1 Accesso tramite puntatore
12.7.2 Estrazione di un indirizzo
12.8 Operazioni sulle strutture
12.8.1 Elemento di unione o struttura
12.8.2 Elemento di struttura da puntatore
12.9 Funzioni e vettori
12.9.1 Elemento di vettore
12.9.2 Chiamata a funzione
12.10 Operazioni sui tipi
12.10.1 Operatore di cast
12.10.2 Dimensione in byte di un oggetto
12.11 Operatori di controllo
12.11.1 Espressione condizionale
12.11.2 Operatore virgola
12.12 Concetto di effetto collaterale
12.13 Side effect e ordine di valutazione
13 Ricerca e ordinamento
13.1 Ordinamento
13.1.1 Algoritmi di ordinamento
13.1.2 Selection sort
13.2 Algoritmi di ricerca
13.2.1 Ricerca sequenziale
13.2.2 Ricerca sequenziale con valore sentinella
13.2.3 Ricerca binaria
13.2.4 Ricerca binaria in forma iterativa
13.2.5 Ricerca binaria in forma ricorsiva
13.2.6 Confronto tra ricerca sequenziale e ricerca binaria
13.3 Funzioni di libreria per ricerca e ordinamento
13.3.1 Funzione di confronto
13.3.2 Esempio di applicazione
A Stile di programmazione
A.1 Indentazione
A.2 Indentazione, stesura del codice ed errori
A.3 Strutturazione di dati e algoritmi
A.4 Organizzazione del programma
A.5 Gestione degli errori
A.6 Uso dei commenti
A.7 Interazione con l’utente

Scrivi la tua recensione
Stai recensendo:Programmare in C

Consegna in 48h
in tutta Italia

Leggi le condizioni di spedizione

Resi facili
entro 10 gg

Leggi la politica sui resi

Pagamenti sicuri
e verificati

Leggi i metodi d'acquisto