Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Il linguaggio C++
Rating: 4.6 out of 5(64 ratings)
333 students

Il linguaggio C++

Corso completo di programmazione ad oggetti (OOP) con esercizi
Created byPaolo Aliverti
Last updated 2/2025
Italian

What you'll learn

  • Imparare a scrivere programmi in C++
  • Programmare ad oggetti
  • Realizzare programmi eseguibili con CodeBlocks
  • Imparare le tecniche standard di programmazione in C/C++

Course content

5 sections73 lectures10h 40m total length
  • Introduzione2:49

    IL FILE README.TXT contiene link per scaricare CodeBlocks e un link al repository di GitHub con tutti i codici e le slide.

    Introduzione al corso di C++: Storia, Caratteristiche e Applicazioni

    Benvenuti a questo corso dedicato al linguaggio di programmazione C++. In questa prima lezione, scopriremo come nasce il C++, quali sono le sue particolarità, dove viene impiegato e, soprattutto, come funziona il processo che trasforma il nostro codice in un file eseguibile pronto per essere eseguito su un computer.

    Il C++ ha origine negli anni '80 grazie a Bjarne Stroustrup, che desiderava creare un linguaggio più potente e flessibile rispetto al linguaggio C, aggiungendo il supporto alla programmazione orientata agli oggetti (OOP). Questa caratteristica ha reso il C++ uno strumento fondamentale per lo sviluppo di software complessi e scalabili. Nonostante la sua età, il C++ è ancora oggi uno dei linguaggi più utilizzati al mondo, soprattutto in settori dove le prestazioni e l'efficienza sono essenziali. Lo troviamo in applicazioni come videogiochi, software di grafica 3D, simulatori, sistemi embedded, applicazioni finanziarie e persino nei sistemi operativi.

    Ma cosa rende il C++ così speciale? A differenza di molti linguaggi moderni, il C++ offre un controllo diretto sulla memoria e sulle risorse di sistema, permettendo di creare programmi estremamente ottimizzati. Questo approccio richiede più attenzione da parte del programmatore, ma garantisce un livello di efficienza difficilmente raggiungibile con linguaggi di alto livello come Python o JavaScript.

    Un aspetto essenziale del C++ è la necessità di compilare il codice prima di eseguirlo. Ma cosa significa "compilare"? Quando scriviamo il nostro codice sorgente in un file .cpp, questo codice non è direttamente comprensibile dal computer. Per trasformarlo in un file eseguibile (.exe su Windows, o senza estensione su Linux), entra in gioco il compilatore. Il compilatore legge il codice sorgente e lo traduce in un file binario, cioè una sequenza di istruzioni che il processore può eseguire direttamente. Questo processo avviene in più fasi: prima il codice viene analizzato per individuare eventuali errori di sintassi, poi viene "tradotto" in linguaggio macchina e, infine, viene collegato a librerie esterne necessarie al suo funzionamento.

    Il viaggio nel mondo del C++ è appena iniziato, e avrete la possibilità di apprendere le basi e le tecniche avanzate di uno dei linguaggi più potenti e versatili al mondo.

  • CodeBlocks: il nostro strumento di lavoro6:37

    Code::Blocks è un ambiente di sviluppo integrato (IDE) open-source pensato per facilitare la programmazione in linguaggi come C, C++ e Fortran. È una piattaforma versatile e leggera, progettata per soddisfare le esigenze sia di principianti che di sviluppatori più esperti, offrendo un'esperienza di utilizzo chiara e personalizzabile.

    La caratteristica principale che rende Code::Blocks unico è la sua modularità. È costruito attorno a un sistema di plugin che permette di espandere le sue funzionalità in modo semplice e intuitivo. Ad esempio, puoi aggiungere strumenti per il debugging avanzato, supporto per librerie di terze parti o strumenti di completamento automatico del codice, rendendo l'ambiente adattabile a diversi progetti e necessità.

    L'interfaccia di Code::Blocks è pensata per essere minimalista ma efficace. Gli sviluppatori hanno prestato particolare attenzione a garantire che ogni funzione sia facilmente accessibile, senza appesantire l'utente con opzioni superflue. Questo lo rende particolarmente adatto per chi è agli inizi della programmazione, offrendo un punto di partenza chiaro e privo di complessità inutili. Al tempo stesso, i programmatori più avanzati possono apprezzare il controllo dettagliato che l'IDE fornisce sulla configurazione dei progetti e delle build.

    Un altro punto di forza è la sua capacità di lavorare con diversi compilatori, tra cui GCC, MinGW e Clang, così come con Microsoft Visual C++. Questa flessibilità lo rende ideale per chi sviluppa su piattaforme diverse o necessita di compatibilità multipiattaforma. Code::Blocks è infatti disponibile per Windows, Linux e macOS, permettendo di lavorare senza interruzioni su diversi sistemi operativi.

    Per quanto riguarda il debugging, Code::Blocks offre un debugger integrato che consente di impostare breakpoint, visualizzare variabili e controllare l'esecuzione del codice in modo dettagliato. Questa funzione è particolarmente utile per individuare errori e ottimizzare il funzionamento del programma.

    Nonostante la sua semplicità, Code::Blocks supporta progetti complessi, permettendo di gestire file multipli e configurazioni di build personalizzate, come versioni di debug e release. Questa flessibilità lo rende adatto anche a progetti di sviluppo più strutturati.

    IL FILE README.TXT contiene link per scaricare CodeBlocks e un link al repository di GitHub con tutti i codici e le slide.

  • Hello World: il primo programma9:46

    In questa lezione creeremo il nostro primo programma: "hello world". Scriveremo un messaggio a console e capiremo la struttura fondamentale dei programmi in c++.

    Una lezione introduttiva su "Hello World" in C++ ha l'obiettivo di mostrare come creare il programma più semplice possibile, utile per comprendere la struttura di base del linguaggio.

    Il programma "Hello World" consiste in poche righe di codice, ma racchiude concetti fondamentali. La lezione inizia spiegando la necessità di includere la libreria <iostream>, che permette di utilizzare il comando std::cout, essenziale per stampare messaggi a schermo.

    Successivamente, viene introdotta la funzione main(), che rappresenta il punto di ingresso di ogni programma C++. La sintassi prevede l'apertura e la chiusura delle parentesi graffe {} per delimitare il corpo della funzione, dove si trova il codice eseguibile. Al suo interno, il comando std::cout << "Hello, World!"; invia la stringa "Hello, World!" all'output standard, generalmente la console. La riga return 0; conclude l'esecuzione del programma e segnala al sistema operativo che tutto è andato a buon fine.

    Durante la lezione, si chiarisce l'importanza della corretta sintassi, come i punti e virgola (;) per terminare le istruzioni e la necessità di rispettare l'uso delle maiuscole e minuscole, essendo il C++ un linguaggio "case-sensitive".

    Infine, viene mostrato come compilare ed eseguire il programma.


  • Primi passi...
  • Tipi di dati e variabili17:32

    Nella programmazione con C++, i tipi di dato fondamentali e le variabili rappresentano i concetti di base su cui si costruisce ogni programma. Comprendere questi concetti è essenziale per poter gestire e manipolare le informazioni all'interno di un software. I tipi di dato determinano la natura e la quantità di memoria necessaria per archiviare un valore. In C++, i tipi fondamentali includono i numeri interi, i numeri decimali, i caratteri e i valori logici.

    Tra i tipi interi troviamo int, short e long, che si distinguono per la quantità di memoria che occupano e, di conseguenza, per l'intervallo di valori che possono rappresentare. Un int è il tipo più comunemente usato per i numeri interi, mentre short e long servono a rappresentare numeri più piccoli o più grandi, rispettivamente. Per i numeri con la virgola decimale, il C++ fornisce i tipi float e double. La principale differenza tra i due è la precisione: float offre una precisione singola, mentre double garantisce una precisione doppia, utile quando sono richiesti calcoli più accurati. Il tipo char viene utilizzato per memorizzare singoli caratteri, come lettere, cifre o simboli, sfruttando la codifica ASCII. Infine, il tipo bool rappresenta un valore logico, cioè true (vero) o false (falso), ed è cruciale per le condizioni e i controlli di flusso.

    Le variabili permettono di dare un nome simbolico a una zona di memoria, consentendo di accedere e manipolare i dati in modo semplice. Dichiarare una variabile significa specificare il tipo di dato e il nome della variabile. Ad esempio, la dichiarazione int età; riserva uno spazio di memoria per un numero intero associato al nome "età". Le variabili possono essere inizializzate al momento della dichiarazione, come in int età = 25;, dove alla variabile "età" viene assegnato il valore 25. Durante la lezione, si metterà in evidenza l'importanza di scegliere nomi significativi per le variabili e di rispettare le regole di sintassi. Si vedranno inoltre le differenze tra variabili locali, globali e la possibilità di utilizzare costanti con la parola chiave const, per impedire la modifica di un valore. La lezione si concluderà con esercizi pratici per rafforzare la comprensione e l'utilizzo dei tipi di dato e delle variabili nel linguaggio C++.

  • Tipi di dati e variabili
  • Gli operatori6:44

    In questa lezione scopriremo gli operatori aritmetici fondamentali del C++: +, -, *, / e %. Questi operatori sono essenziali per eseguire calcoli e operazioni matematiche nei nostri programmi. Impareremo come utilizzare ciascuno di essi per sommare, sottrarre, moltiplicare e dividere numeri interi e decimali. Inoltre, vedremo l'operatore modulo (%), che restituisce il resto di una divisione tra due numeri interi, utile in numerose applicazioni pratiche come il calcolo delle cifre di un numero o la verifica di numeri pari e dispari.

    Vedremo anche gli operatori di autoincremento (++) e autodecremento (--) in C++. Questi operatori permettono di aumentare o diminuire il valore di una variabile in modo semplice e veloce, senza la necessità di scrivere espressioni più lunghe come x = x + 1. Scopriremo le due forme principali: prefisso (++x / --x) e postfisso (x++ / x--), analizzando le differenze nel loro comportamento e il loro effetto sull'ordine di esecuzione delle istruzioni.

    Durante la lezione, esploreremo esempi pratici per comprendere il comportamento di ciascun operatore e faremo attenzione ai casi particolari, come la divisione tra interi e il rischio di divisione per zero. Infine, metteremo in pratica le conoscenze acquisite con semplici esercizi per consolidare i concetti chiave.

  • Operatori
  • Stampare con cout17:22

    In questo video utilizzeremo 'cout'. Vedremo come funziona e come utilizzarlo per stampare messaggi e valori sul terminale. 'cout' è uno degli strumenti più essenziali per interagire con l'utente e visualizzare output durante l'esecuzione di un programma.

    Il termine 'cout' sta per "console output" ed è fornito dalla libreria standard di C++ chiamata iostream. Con 'cout', possiamo inviare dati di vario tipo, come stringhe, numeri e variabili, direttamente alla console.

    Vedremo anche come applicare i modificatori al flusso per ottenere effetti speciali in fase di stampa.

  • Cout
  • Utilizzare printf11:05

    In questa lezione esploreremo come utilizzare la funzione printf in C++ per formattare l'output in modo preciso e leggibile. printf è una funzione della libreria C che ci permette di stampare valori con una formattazione personalizzata, utile per controllare l'allineamento, la precisione e il tipo di dato visualizzato.

    Passaggi principali della lezione:

    1. Introduzione alla funzione printf:

      • Inizieremo con un semplice esempio, stampando un messaggio usando printf, per comprendere la sintassi di base.

    2. Uso di formati per tipi di dato diversi:

      • Utilizzeremo i formati di specifica come %d per i numeri interi, %c per i caratteri e %s per le stringhe. Vedremo come visualizzare variabili con valori specificati nel formato desiderato.

    3. Precisione e larghezza di campo:

      • Approfondiremo l'uso delle opzioni di formattazione per i numeri decimali, come %f, per specificare la precisione e la larghezza del campo. Esempi come %10.2f ci permetteranno di controllare la quantità di cifre decimali visualizzate.

    4. Allineamento e padding:

      • Impareremo a formattare numeri con padding, ad esempio con %010d per aggiungere zeri davanti ai numeri interi, e l'uso di + per visualizzare numeri positivi e negativi con segno.

    5. Formato data:

      • Un esempio pratico sarà la formattazione di una data in vari formati, come %02d/%02d/%04d, per garantire che il giorno, mese e anno abbiano sempre il giusto numero di cifre.

    6. Allineamento a sinistra e a destra:

      • Vedremo anche come allineare a sinistra i numeri con l'uso di -, come in %-10d, per garantire che il testo occupi uno spazio specificato senza essere troncato.

  • Le stringhe15:47

    In questa lezione esploreremo le operazioni fondamentali che possiamo eseguire sulle stringhe in C++ utilizzando la classe string della libreria standard. Le stringhe sono un tipo di dato fondamentale per la gestione di sequenze di caratteri, e questa lezione ti aiuterà a comprenderne meglio l'utilizzo e le potenzialità.

    Passaggi principali della lezione:

    1. Creazione e visualizzazione di stringhe:

      • Inizieremo con la creazione di stringhe, esplorando diversi modi per inizializzarle: con un valore predefinito, come in string s1 = "hello";, o usando costruttori specifici per generare stringhe ripetute, come string s3(10, '#');.

    2. Concatenazione di stringhe:

      • Vedremo come concatenare stringhe in C++ utilizzando l'operatore +, come nel caso di s5 = s1 + s2;, e come aggiungere caratteri alla fine di una stringa con l'operatore +=, come in s3 += "*";.

    3. Conversione tra tipi di dati:

      • Esploreremo come convertire variabili di tipo diverso, come gli interi, in stringhe, usando la funzione to_string(). Ad esempio, convertiremo un intero in una stringa per creare il messaggio msg.

    4. Confronto tra stringhe:

      • Impareremo a confrontare due stringhe utilizzando l'operatore di uguaglianza ==. Vedremo anche come confrontare due stringhe e verificare se sono uguali o diverse.

    5. Accesso ai singoli caratteri:

      • Scopriremo come accedere ai singoli caratteri di una stringa tramite l'indice o il metodo at(), e come ottenere la lunghezza di una stringa con i metodi size() e length().

    6. Manipolazione delle stringhe:

      • Approfondiremo diverse operazioni sulle stringhe, come estrarre sotto-stringhe con substr(), trovare la posizione di una sottostringa con find(), e sostituire, inserire o cancellare parti di una stringa utilizzando i metodi replace(), insert() ed erase().

    7. Interoperabilità con array di caratteri:

      • Esploreremo anche come convertire una stringa in un array di caratteri con c_str(), e come creare una stringa a partire da un array di caratteri esistente.

  • Leggere dal terminale con cin19:07

    In questa lezione esploreremo il comando cin in C++, uno degli strumenti fondamentali per acquisire dati dall'utente. cin ci permette di leggere input da tastiera e utilizzarlo all'interno dei nostri programmi, rendendo interattiva l'applicazione.

    Passaggi principali della lezione:

    1. Introduzione a cin:

      • Inizieremo con un esempio semplice per acquisire valori dall'utente. Utilizzeremo cin per leggere vari tipi di dati, come interi, numeri in virgola mobile e stringhe, e li visualizzeremo sullo schermo.

    2. Utilizzo di cin con variabili di tipo semplice:

      • Vedremo come leggere valori numerici interi (int) e numeri con decimali (float, double), e discuteremo la sintassi di base di cin.

    3. Acquisizione di stringhe:

      • Impareremo a leggere stringhe utilizzando cin, esplorando la differenza tra cin >> stringa e getline(cin, stringa) per la lettura di stringhe con spazi.

    4. Gestione di più variabili in un’unica riga:

      • Mostreremo come acquisire più valori contemporaneamente in un'unica riga di codice, utilizzando cin per separare i diversi input tramite spazi e salvare i valori in variabili differenti.

    5. Validazione dell'input:

      • Introduciamo la gestione di input non validi. Discuteremo come rilevare e gestire errori di input, come l'inserimento di dati non numerici quando ci aspettiamo un numero, e come ripristinare il flusso di cin dopo un errore.

    6. Manipolazione dell'input con i flussi:

      • Vedremo come utilizzare i flussi di input per controllare il comportamento di cin, ad esempio per ignorare caratteri o modificare la lettura di valori in base a necessità particolari (come cin.ignore()).

  • Cast: conversioni di tipo10:27

    In questa lezione esploreremo il concetto di type casting in C++, che ci permette di convertire esplicitamente variabili da un tipo di dato a un altro. Il type casting è un concetto fondamentale per lavorare con tipi di dato diversi e per gestire correttamente operazioni che coinvolgono variabili di tipo differente.

    Passaggi principali della lezione:

    1. Introduzione al Type Casting:

      • Inizieremo con una panoramica su cosa sia il type casting e come C++ gestisce la conversione tra i diversi tipi di dato (ad esempio, da int a double o da double a int).

    2. Operazioni di Casting Implicito:

      • Vedremo come il compilatore esegue automaticamente alcune conversioni tra tipi di dato compatibili, come nel caso di variabili int e double, e discuteremo le implicazioni di questi cast impliciti.

    3. Operazioni di Casting Esplicito:

      • Impareremo a forzare la conversione di un tipo in un altro tramite il casting esplicito. Utilizzeremo sia il cast C-style (float)n che il static_cast per ottenere una conversione sicura e controllata.

    4. Casting tra Tipi Interi di Differenti Dimensioni:

      • Esploreremo come effettuare il casting tra tipi interi di dimensioni differenti, come ad esempio da short a int e viceversa, analizzando i possibili problemi di perdita di dati quando il valore non rientra nel range del tipo di destinazione.

    5. Dividere Numeri Interi e Risultati con float:

      • Tratteremo il caso di divisioni tra numeri interi e il risultato in float, analizzando come il tipo di dato influisca sul risultato. Mostreremo come ottenere risultati corretti di divisioni fra interi usando il type casting per forzare la conversione a float.

    6. Casting di Caratteri:

      • Vedremo come i caratteri (char) possono essere trattati come numeri interi e come possiamo ottenere il valore numerico di un carattere utilizzando il casting esplicito da char a int, oltre a come assegnare valori numerici ai caratteri.

  • Uso di printf

Requirements

  • Nessuna esperienza di programmazione
  • Pc o laptop con Windows (consigliato)

Description

Il corso di C++ è pensato per coloro che desiderano acquisire competenze solide nella programmazione orientata agli oggetti e nello sviluppo di applicazioni efficienti e potenti. Il C++ è uno dei linguaggi di programmazione più diffusi e apprezzati per la sua versatilità, che lo rende ideale sia per la creazione di software di sistema che per lo sviluppo di applicazioni ad alte prestazioni, come videogiochi, applicazioni scientifiche, e software di controllo industriale. La sua sintassi, che si basa sul linguaggio C, è stata estesa con funzionalità moderne come la programmazione orientata agli oggetti, i template generici e la gestione avanzata della memoria, offrendo ai programmatori una notevole potenza e flessibilità.

Il corso si rivolge sia a principianti che a programmatori con esperienze pregresse in altri linguaggi, e si propone di fornire una solida base teorica e pratica per comprendere i concetti fondamentali di C++, come le variabili, le strutture di controllo, le funzioni, le classi e gli oggetti. Attraverso esempi pratici e progetti, i partecipanti avranno l'opportunità di applicare le conoscenze acquisite, imparando a risolvere problemi di programmazione e a ottimizzare il codice per prestazioni superiori.

Durante il corso, esploreremo le caratteristiche avanzate del C++ come i puntatori, la gestione dinamica della memoria, le eccezioni, le librerie standard (STL). Impareremo a progettare applicazioni modulari e scalabili, utilizzando le best practices del settore per scrivere codice robusto e manutenibile. La conoscenza approfondita delle funzionalità avanzate del C++ sarà fondamentale per coloro che desiderano lavorare su applicazioni ad alte prestazioni, come quelle utilizzate nell'intelligenza artificiale, nella simulazione e nei giochi 3D.

Alla fine del corso, gli studenti avranno acquisito una solida comprensione di C++ e saranno in grado di affrontare progetti complessi con competenza, aumentando significativamente le loro opportunità professionali nel campo della programmazione e dello sviluppo software.

Who this course is for:

  • studenti
  • sviluppatori di software scientifico, professionale e videogame
  • ingegneri e scienziati
  • sviluppatori sistemi embedded e per microcontrrollori