Lezione 1 – Introduzione
In questa prima lezione verranno descritti gli strumenti che si hanno a disposizione durante la scrittura del codice C++, si prenderà familiarità con i termini di uso comune come Funzioni, Procedure, Compilatore e Linker nonché la differenza esistente tra i primi due termini e tra gli ultimi due.
Cos'è il C++
Il C++ è un linguaggio di programmazione, quindi un linguaggio per calcolatori o computer, (abbreviato in seguito come "L. di P." o semplicemente "linguaggi") ad alto livello nato dall'evoluzione di un altro linguaggio di programmazione: il C. Si noti nella precedente frase l'uso dei termini "alto livello". Il mondo della programmazione è costellato di molti linguaggi ognuno con delle proprie caratteristiche e come si dice spesso: "vicinanza alla macchina". Proprio questa vicinanza permette di fare una suddivisione dei L. di P. in tre gruppi (linguaggi di esempio sono riportati a fianco):
- Basso Livello: Assembler.
- Medio Livello: C, Basic,…
- Alto Livello: C++, JAVA, Pascal, MS Visual Basic,…
In realtà esiste anche un altro livello composto da un solo linguaggio: il Linguaggio Macchina, composto da due soli simboli, lo zero (0) e l'uno (1). Ovviamente oggi nessuno è così folle da scrivere un intero programma come un lunga sequenza di 0 ed 1 ma si ricorre, appunto, ad un L. di P. di più alto livello, dei linguaggi molto più vicini al linguaggio umano anche se molto semplificati.
Passando da un livello ad un altro più alto vengono introdotti dei concetti che si astraggono dalla macchina e si avvicinano di più al modo di pensare dell'uomo. Proprio questa astrazione ci introduce nella tipologia dei Linguaggi ad Oggetti e nella Programmazione Orientata agli Oggetti (OOP - Object Oriented Programming). In seguito si studierà cos'è effettivamente un Oggetto, per ora è sufficiente sapere che un Oggetto è un modo di racchiudere ed organizzare pezzi di programma in modo da poterli utilizzare in futuro anche in altri progetti. Per ora pensiamo ad un Oggetto come ad una scatola chiusa nella quale inserisco delle informazioni e prendo altre informazioni correlate a quelle inserite.
Il C++ fa ampio utilizzo di questo concetto ed è stato tra i primi L. di P. ad utilizzare questa astrazione ed è per questo che fa parte dei linguaggi ad alto livello mentre il suo antenato, il C, fa parte del livello medio.
Differenze generali con gli altri linguaggi
Come per le diverse lingue parlate dall'uomo, anche per le macchine sono stati creati diversi linguaggi ognuno dei quali utilizza un proprio "vocabolario" ed una propria "grammatica". Un qualunque concetto può essere scritto in tutti i linguaggi ma ciò che cambia è la forma. Ad esempio, traduciamo nei diversi L. di P. sopra elencati la frase: Incrementare la variabile X di 2.
MACCHINA |
ASSEMBLER |
PASCAL |
C++ |
01011010 |
mov ax, X |
X := X + 2; |
X = X + 2; oppure X += 2; |
Inoltre più il livello a cui appartiene un linguaggio è alto, più è indipendente dal tipo di macchina in cui viene scirtto. Ad esempio, il linguaggio macchina è completamente dipendente dal tipo di processore in cui viene eseguito: Intel® o AMD®, Motorola®,… . L'Assembler potrebbe differire in un diverso insieme di istruzioni, il C++ come pure JAVA invece sono completamente indipendenti dalla macchina e dal Sistema Operativo usato (PC, Apple, Linux, Windows, MAC OS,…), ciò che cambia è il Compilatore ed il Linker.
Il Compilatore
Il procedimento di creazione di un programma scritto in C++ o altro è composto di 3 parti che utilizzano 3 strumenti diversi, tutte con un unico scopo: creare la famosa sequenza di 1 e 0 utili al microprocessore per portare a termine il proprio lavoro. Il primo strumento necessario per poter scrivere un programma è l'Editor di Testo nel quale il programmatore scrive le istruzioni come se fosse un testo qualunque. Quindi il primo procedimento è: la scrittura delle istruzioni.
Il secondo strumento è il Compilatore. Quest'ultimo è un particolare tipo di programma che prende in input il file di testo scritto nella prima fase, va alla ricerca di eventuali errori sintattici e se tutto il programma è corretto produce un particolare file binario chiamato File Oggetto (con estensione .obj). Se il programma non è corretto il compilatore segnala la riga o le righe sbagliate e si ferma. Oggigiorno un compilatore include gia un editor di testo con la particolarità di mettere in evidenza con colori diversi le differenti strutture grammaticali del linguaggio. Il processo che utilizza il compilatore è detto: Compilazione.
Il Linker
Il terzo ed ultimo strumento da utilizzare nel processo di creazione di un programma eseguibile è il Linker. Questo è un altro particolare programma che prende in input il file oggetto prodotto dal compilatore e crea il file binario comprensibile al computer e che può essere eseguito. Esempi di file binari prodotti dal linker sono i .exe, .dll, .ocx, .bin
Anche durante questa fase possono esserci degli errori ed il linker deve essere pronto a segnalarli ed a fermare il processo. Tipici errori del linker sono l'incapacità di trovare le librerie esterne da includere nel programma eseguibile. In questi casi per correggere gli errori bisogna indicare al linker i percorsi corretti nei quali si trovano le librerie.

Funzioni e Procedure
Sia il linguaggio C che il C++ sono linguaggi composti da un cero numero di funzioni. Prima di andare avanti è necessario chiarire quale differenza esiste tra una funzione ed una procedura. Entrambe sono dei pezzi di codice C/C++ ai quali si accede tramite un nome, il nome della funzione/procedura, ed alla quale possono essere passati dei valori detti parametri. La presenza di questi ultimi non è obbligatoria. Per una funzione potrebbe sembrare strano ma in effetti non lo è, si pensi ad esempio ad una funzione che restituisce un numero casuale. La differenza fondamentale tra una funzione ed una procedura e che la prima deve restituire un valore, mentre la seconda no. Esempi di funzioni sono: Massimo(x,y), Minimo(x,y,z),… Esempi di procedure sono: CancellaSchermo(), ScriviFile(fd,x),…

Come vedremo in seguito in C/C++ è possibile scrivere sia funzioni che procedure ma la distinzione è solo a livello concettuale infatti una funzione termina con una riga del tipo return X; mentre una procedura può non contenere l'istruzione return oppure contenere una riga del tipo return;

|
categorie: Tecnologia
|
Hello 








