Inquadramento storico e concettuale.
Origine del C++.



Il linguaggio C++ è stato sviluppato nei primi anni Ottanta da Bjarne Stroustrup presso i Bell Labs. Nasce come estensione del linguaggio C, con l’obiettivo di integrare:
- Programmazione procedurale
- Programmazione orientata agli oggetti
- Efficienza a basso livello
Standard principali:
- C++98
- C++11 (rivoluzione moderna)
- C++14
- C++17
- C++20
- C++23
Natura del linguaggio.
Il C++ è:
- Compilato
- Multi-paradigma
- Tipizzato staticamente
- Orientato agli oggetti
- Compatibile con il C (quasi completamente)
Supporta tre paradigmi principali:
- Procedurale
- Object-Oriented Programming (OOP)
- Programmazione generica (template)
Struttura base di un programma.
#include <iostream>
int main() {
std::cout << “Hello, world!” << std::endl;
return 0;
}
Concetti da evidenziare:
- main() punto di ingresso
- Namespace (std)
- Libreria standard
- Compilazione (es. g++ programma.cpp -o programma)
Programmazione Orientata agli Oggetti (punto centrale).
Concetti fondamentali.
- Classe
- Oggetto
- Incapsulamento
- Ereditarietà
- Polimorfismo
- Overloading
- Costruttore / Distruttore
Esempio:
class Studente {
private:
std::string nome;
int eta;
public:
Studente(std::string n, int e) : nome(n), eta(e) {}
void saluta() {
std::cout << “Ciao, sono ” << nome << std::endl;
}
};
Questo mostra:
- controllo degli accessi (private, public)
- costruttore
- metodo membro
Gestione della memoria.
Aspetto fondamentale per B016.
- Stack vs Heap
- new / delete
- Puntatori
- Smart pointers (C++11)
Esempio:
int* p = new int(10);
delete p;
Con C++ moderno:
#include <memory>
std::unique_ptr<int> p = std::make_unique<int>(10);
Questo consente gestione automatica delle risorse (RAII).
Programmazione generica (Template).
Elemento distintivo del C++ rispetto al C.
template <typename T>
T somma(T a, T b) {
return a + b;
}
Permette:
- codice riutilizzabile
- astrazione
- efficienza senza perdita di prestazioni
STL – Standard Template Library.
Comprende:
- container (vector, list, map)
- algoritmi (sort, find)
- iteratori
Esempio:
#include <vector>
#include <algorithm>
std::vector<int> v = {3,1,2};
std::sort(v.begin(), v.end());
Ambiti di applicazione.


Il C++ è utilizzato in:
- Game development (es. Unreal Engine)
- Sistemi embedded
- Robotica
- Software finanziario ad alte prestazioni
- Sistemi operativi e driver
Confronto sintetico con C.
| C | C++ |
| Procedurale | Multi-paradigma |
| Nessuna OOP | Supporto completo OOP |
| Librerie limitate | STL molto ampia |
| Gestione memoria manuale | Smart pointers |
Collegamento alla classe B016.
In un Istituto Tecnico indirizzo Informatica, introdurrei il C++ nel secondo biennio o quinto anno, dopo aver consolidato algoritmi e C, per sviluppare competenze di modellazione a oggetti e progettazione software.
Metodologia laboratoriale
- Progettazione UML → implementazione
- Debug con IDE
- Progetti incrementali (gestionale studenti, rubrica, mini-gioco)
- Refactoring
Inclusione BES/DSA
- Diagrammi visivi classe-oggetto
- Esempi concreti e contestualizzati
- Attività guidate
- Pair programming
Competenze sviluppate
- Problem solving strutturato
- Pensiero astratto
- Gestione risorse
- Sicurezza (memory safety, dangling pointer)
Collegamenti interdisciplinari.
- Sistemi operativi
- Architettura degli elaboratori
- Ingegneria del software
- Cybersecurity (overflow, gestione memoria)
Il C++ rappresenta un linguaggio strategico nella formazione tecnica perché consente di integrare efficienza, modellazione astratta e controllo della memoria, preparando gli studenti sia alla programmazione di sistema sia allo sviluppo software avanzato.
