Programmazione

Introduzione

Linguaggio C: guida introduttiva allo storico linguaggio procedurale compilato, pilastro dell'informatica moderna e della programmazione di sistema.

Durata

5 minuti

Software

Linguaggio C

Linguaggio

C (ANSI C / C11 / C17)

Linguaggio C | Introduzione
Che Cos'è

Il linguaggio C è un linguaggio di programmazione procedurale e imperativo di uso generale, sviluppato da Dennis Ritchie presso gli AT&T Bell Laboratories all'inizio degli anni '70.

Rappresenta una vera e propria pietra miliare nella storia dell'informatica. Nato per unire l'efficienza tipica del linguaggio assembly alla portabilità e leggibilità dei linguaggi di alto livello, il C è stato fondamentale per la scrittura del sistema operativo UNIX ed è tuttora la base di molti linguaggi moderni come C++, C#, Java e Python.

Ideatore

Sviluppato da Dennis Ritchie nei laboratori AT&T Bell Labs.

Paradigma

Procedurale / Imperativo basato sulla suddivisione in funzioni.

Esecuzione

Compilato (richiede un compilatore come GCC, Clang o MSVC).

Ambito d'Uso

Sistemi operativi, driver, kernel, sistemi embedded e software ad alte prestazioni.

Caratteristiche

Il linguaggio C si distingue per alcune peculiarità tecniche che lo rendono ancora oggi insostituibile:

Efficienza ed Esecuzione

Traduzione diretta in codice macchina per un'esecuzione estremamente veloce e con minimo consumo di memoria.

Gestione Memoria

Controllo di basso livello sull'hardware tramite l'uso dei puntatori e l'allocazione dinamica della memoria.

Portabilità e Struttura

Codice facilmente ricompilabile su architetture diverse e organizzazione in moduli trasparenti grazie alle funzioni.

Risorse

Accedi alla documentazione e alle risorse di supporto per iniziare a programmare in linguaggio C:

Guida C Reference

Manuale di riferimento completo con la libreria standard e le funzioni C.

Leggi la Guida
Compilatore Online

Scrivi ed esegui subito codice C direttamente dal browser senza installare nulla.

Provalo Online
Compilatore GCC

Sito ufficiale del compilatore standard open source della Free Software Foundation.

Sito GCC
Mappa & Glossario

Quadri di sintesi e definizioni chiave per comprendere la struttura, la gestione della memoria ed i concetti fondamentali del Linguaggio C:

Mappa Concettuale: Linguaggio C

Che cos'è il Linguaggio C? È un linguaggio di programmazione imperativo, procedurale e compilato di medio-basso livello. Combina l'efficienza ed il controllo diretto dell'hardware (tramite puntatori e gestione manuale della memoria) con la strutturazione del codice tipica dei linguaggi ad alto livello.
LINGUAGGIO C

 │
 ├── 1. STRUTTURA & SINTASSI (Anatomia di un programma)
 │    └── Definizione: La composizione di base di un file di codice sorgente .c.
 │        ├── Direttive al Preprocessore ──> Inclusione di librerie (#include) e macro (#define)
 │        ├── Funzione main() ──────────> Punto di ingresso obbligatorio per l'esecuzione del programma
 │        └── Librerie Standard ────────> Intestazioni essenziali come stdio.h, stdlib.h e math.h
 │
 ├── 2. TIPI DATI & STRUTTURE (Organizzazione dei dati)
 │    └── Definizione: Come il C definisce e raggruppa le informazioni in memoria.
 │        ├── Tipi Primitivi ──────────> int, char, float, double e modificatori (short, long, unsigned)
 │        ├── Array e Stringhe ────────> Sequenze contigue in memoria e array di char terminati da '\0'
 │        └── Strutture (struct) ──────> Tipi di dato personalizzati che raggruppano variabili eterogenee
 │
 ├── 3. GESTIONE DELLA MEMORIA (Controllo di basso livello)
 │    └── Definizione: Accesso diretto e allocazione dinamica della RAM.
 │        ├── Puntatori (*) ───────────> Variabili che memorizzano l'indirizzo di memoria di altre variabili
 │        ├── Operatore Indirizzo (&) ──> Restituisce l'indirizzo fisico di memoria di una risorsa
 │        └── Allocazione Dinamica ───> Gestione manuale dell'Heap tramite malloc(), calloc() e free()
 │
 └── 4. COMPILAZIONE & I/O (Flusso da sorgente a eseguibile)
      └── Definizione: Trasformazione del codice ed interazione con file ed utente.
          ├── Fasi di Compilazione ──> Preprocessing -> Compilazione -> Assemblaggio -> Linking
          ├── Input / Output (I/O) ──> Lettura e scrittura da console tramite printf() e scanf()
          └── Gestione File ─────────> Manipolazione di file su disco tramite puntatori FILE* (fopen, fclose)
      

Glossario dei Termini (IT / EN)

Termine Italiano Termine Inglese Definizione Sintetica
Puntatore Pointer Variabile speciale contenente l'indirizzo di memoria RAM in cui è memorizzato un altro dato.
Preprocessore Preprocessor Componente della toolchain che analizza il codice prima della compilazione, risolvendo le direttive che iniziano con #.
Allocazione Dinamica Dynamic Memory Allocation Richiesta di allocare o liberare memoria nello spazio Heap durante l'esecuzione del programma (es. malloc/free).
Passaggio per Riferimento Pass by Reference / Pointer Tecnica che consiste nel passare ad una funzione l'indirizzo di memoria di una variabile, consentendone la modifica diretta.
Struttura Dati Personalizzata Structure (struct) Tipo di dato definito dall'utente che raggruppa variabili di tipo diverso sotto un unico nome.
Carattere Termintore Nullo Null Terminator ('\0') Carattere speciale con valore ASCII zero usato in C per marcare la fine di una stringa di testo in memoria.
File di Intestazione Header File (.h) File contenente le dichiarazioni di funzioni, macro e costanti condivisibili tra più file sorgente (.c).



Linguaggio C, Programmazione Procedurale, Compilatore, Puntatori, Sistemi Embedded, UNIX,