Molti elementi della sintassi sono condivisi tra questi linguaggi "ad alto livello", seppur con alcune differenze. Di seguito sono elencati gli elementi principali della sintassi:
Un aspetto importante della documentazione di un programma consiste nel corredare il codice di commenti dettagliati ed esaurienti. I commenti sono delimitati in un programma C, C++ o Java dai due simboli /* e */). In C++ e Java e in alcune varianti del C è anche possibile inserire commenti che iniziano con i due simboli // e si estendono fino alla fine della linea.
Prima di tutto è opportuno ricordare che nella programmazione
si può definire una variabile come il nome simbolico di una zona di memoria
allocata per contenere un dato di un certo tipo. C, C++ e Java sono linguaggi
fortemente tipati. Ciò significa che ogni variabile o espressione ha un tipo
che può essere identificato leggendo il codice in cui compare ed è quindi noto
al momento della compilazione, prima cioè dell'esecuzione. Tipi e variabili
sono identificati da identificatori, che consistono in una qualsiasi sequenza
di lettere alfabetiche, simbolo "_" (underscore) e cifre il cui primo carattere
non sia una cifra. Altra condizione è che l'identificatore non coincida con
una parola chiave o riservata del linguaggio. Una variabile deve essere dichiarata
prima di essere usata. La dichiarazione di una variabile ha la forma:
(id_tipo)( id_variabile)
cioè un identificatore di un tipo predefinito o definito dal programmatore,
seguito dall'identificatore (il nome) della variabile. Esempi di tipi predefiniti
sono: char, carattere, double, numero in virgola mobile a
doppia precisione, float, numero in virgola mobile a precisione singola,
e int, numero intero. Per dichiarare una variabile intera di nome "esempio",
si scriverà:
int esempio;
L'istruzione più elementare è l'assegnamento, che consiste,
più precisamente, nell'assegnamento di un valore a una variabile. L'assegnamento
ha la forma:
(id_variabile) = (espressione)
Un' espressione è costruita da combinazioni: di costanti di un tipo predefinito,
da identificatori di variabili, invocazioni di funzioni (nel caso del C) o metodi
(nel caso di C++ e Java), operatori e parentesi tonde, che servono a modificare
la precedenza nell' applicazione degli operatori, in modo del tutto analogo
a come si costruisce un' espressione aritmetica. Possiamo quindi scrivere un
esempio di assegnamento:
vel = acc * tempo;
dove "*" è un operatore aritmetico di moltiplicazione. Un assegnamento restituisce
il valore assegnato alla sua variabile al membro sinistro, e in virtù di questo
fatto può a sua volta essere utilizzato all' interno di un' espressione. Sono
dunque possibili assegnamenti come i seguenti:
z = x = y = 0;
Vi sono poi "operatori di incremento e di decremento", "++" e "--", che possono
essere prefissi o suffissi a un identificatore di variabile intera. Supponendo
che n sia una variabile intera:
+ + n, incrementa di uno il valore di n e restituisce il valore cosi incrementato;
- - n, decrementa di uno il valore di n e restituisce il valore cosi decrementato;
n + +, incrementa di uno il valore di n, ma ne restituisce il valore precedente all'incremento;
n - -, decrementa di uno il valore di n, ma ne restituisce il valore precedente al decremento;
Tutti i linguaggi ad alto livello permettono di definire e
gestire entità analoghe simili alle "tabelle". Il
nome convenzionale che viene dato in italiano a queste entità nei linguaggi
di programmazione ad alto livello è vettore,
un termine che si richiama all' omonimo concetto matematico. I linguaggi C,
C++ e Java permettono, come la stragrande maggioranza dei linguaggi ad alto
livello, di costruire vettori i cui elementi sono tipi di base o tipi definiti
dal programmatore. Per esempio, un vettore di dieci interi si definisce con
la dichiarazione:
int x[10];
A differenza della convenzione generale in matematica, che fa partire gli indici
delle componenti di un vettore da 1, in questi linguaggi gli indici partono
da 0. Una data componente di un vettore si esprime facendo seguire al nome del
vettore il suo indice tra parentesi quadre. Le componenti del vettore x saranno
dunque:
x[0], x[1], x[2], . . . , x[9].
La tecnica dei sottoprogrammi,
è talmente importante nella pratica della programmazione da meritarsi un costrutto
sintattico apposito nei linguaggi ad alto livello. Nel gergo della programmazione
ad alto livello invece che di "sottoprogrammi" si preferisce parlare di procedure
e funzioni.
Una procedura è un sottoprogramma che prende in ingresso zero o più
argomenti o parametri, svolge una particolare elaborazione in base ad essi e
non restituisce esplicitamente alcun risultato al programma chiamante.
Una funzione, come suggerisce il nome, è un sottoprogramma che prende
zero o più argomenti e restituisce un valore che è funzione degli argomenti
al programma chiamante.
Alcuni linguaggi, come C, C++ e Java, non distinguono sintatticamente le funzioni
dalle procedure. Una funzione (un metodo in C++ e in Java) si dichiara con la
sintassi:
(tipo) (nome funzione) (argomenti)
{
(corpo)
},
dove (tipo) è il tipo del risultato della funzione o la parola chiave void
se la funzione è in realtà una procedura; (argomenti) è una lista di zero o
più dichiarazioni di argomenti. Il controllo del flusso di esecuzione viene
restituito al programma chiamante per mezzo dell' istruzione return
nel caso di una procedura; nel caso di una funzione il risultato viene restituito
al programma chiamante per mezzo dell'istruzione return (espressione).
Tutto quanto riportato in questa pagina è a puro scopo informativo personale. Se non ti trovi in accordo con quanto riportato nella pagina, vuoi fare delle precisazioni, vuoi fare delle aggiunte o hai delle proposte e dei consigli da dare, puoi farlo mandando un email. Ogni indicazione è fondamentale per la continua crescita del sito.