Nell’utilizzo di un prodotto informatico l’utente medio fa normalmente uso di programmi applicativi presenti sul mercato. Chi volesse però, per esigenze particolari, far uso di uno strumento personalizzato, deve ricorrere a un linguaggio di programmazione, come appunto quelli utilizzati dalle casi di progettazione software per confezionare i loro prodotti. I linguaggi di programmazione sono particolari strumenti software, in pratica dei programmi, usati per la scrittura di altri programmi di tipo più complesso, in modo da permettere un dialogo agevole fra l’uomo e la macchina.
Per ottenere ciò occorre rispettare le regole imposte dal linguaggio di programmazione adottato, in particolare la sua sintassi. Le istruzioni redatte in questo modo vengono poi tradotte in un linguaggio più adatto alle caratteristiche di funzionamento elettrico della macchina.
Esistono quindi diversi tipi di linguaggi, classificabili in base all’affinità che presentano con le modalità espressive dell’uomo:
- linguaggi ad alto livello;
- linguaggi a basso livello;
- linguaggi macchina.
Elementi di programmazione
Così come accade per la lingua parlata, nello sviluppo di un programma occorre far uso di una serie di elementi base, che combinati e connessi fra loro formano le strutture logiche adatte a sviluppare il concetto voluto e ad eseguire il lavoro prefissato. In una scala che va dal semplice al complesso, nei linguaggi di programmazione è possibile individuare i seguenti elementi:
- caratteri;
- parole;
- istruzioni;
- procedure;
- funzioni;
- strutture;
- programma.
Caratteri
Ogni linguaggio è basato su un particolare alfabeto, costituito da vari caratteri, ad esempio quello dell’algebra è costituito dalle lettere dell’alfabeto maiuscole e minuscole, dalle dieci cifre decimali e da alcuni segni speciali, come simboli delle operazioni, la linea di frazione, le parentesi, la virgola decimale ecc.
I linguaggi di programmazione adottano per semplicità gli stessi simboli usati nell’alfabeto della lingua inglese e nelle più diffuse convenzioni matematiche, a volta però attribuendovi i significati variamente diversificati.
Parole
I caratteri vengono raggruppati in parole, termine con cui si indicano gli elementi del programma; il loro significato evidentemente differisce da quello in uso nel linguaggio comune. Parole possono essere sequenze di cifre, lettere, o un insieme dei due tipi di caratteri. Una parola di linguaggio può essere riservata, se il suo nome e il suo significato sono previsti dal particolare linguaggio usato, oppure definita dall’utente. Il nome della parola rappresenta in forma comprensibile l’indirizzo di memoria della grandezza ad essa associata, mentre il valore rappresenta il contenuto della locazione di memoria indicata. Il valore può essere un dato numerico, una serie di lettere, una matrice o altre strutture più complesse.
Istruzioni
Per far eseguire un certo lavoro occorre fornire all’elaboratore una serie di comandi, detti istruzioni, da eseguire in sequenza. L’istruzione rappresenta quell’elemento del linguaggio di programmazione attraverso il quale si richiede al calcolatore, tramite opportune convenzioni di scrittura, l’esecuzione di una determinata operazione. Una sequenza completa di istruzioni viene chiamata programma. Attraverso il programma l’elaboratore viene informato sulla quantità e sul tipo di dati interessati all’elaborazione, quali di essi vanno considerati di ingresso, come si deve operare su tali dati e quali risultati posti in uscita.
Le istruzioni più semplici e tipiche appartengono alle seguenti categorie:
- ingresso, che permettono di introdurre dati nel programma;
- uscita, che stampano o visualizzano i risultati dell’elaborazione;
- assegnazione, che fanno assumere valori numerici o letterali alle variabili;
- confronto, che paragonano i valori o più grandezze;
- operazioni logiche e matematiche, che risolvono i relativi problemi;
- salto, che permettono di variare il percorso del programma.
Diagramma di flusso
Uno degli strumenti più utili per la stesura e l’interpretazione di un programma è il diagramma di flusso (flow-chart) che costituisce una descrizione grafica della sequenza di istruzioni. Queste vengono rappresentate mediante figure geometriche connesse da linee orientate che ne indicano l’ordine di esecuzione. Il diagramma a blocchi così ottenuto permette di stabilire quali sono le istruzioni da comunicare al calcolatore e di verificare se la sequenza delle istruzioni è completa e corretta. Una semplice istruzione viene indicata da un rettangolo, mentre un blocco caratterizzato da una funzione di controllo, in questo caso costituito da una selezione fra due possibilità come conseguenza di confronto di due variabili, è rappresentato da un rombo dotato di frecce che indicano le strade da percorrere per la prosecuzione del programma. Si distinguono il blocco iniziale e il blocco finale.
Procedure
Nella stesura di un programma può rendersi necessario dover richiamare più volte un certo gruppo di istruzioni da punti diversi del diagramma di flusso. Tale blocco viene chiamato procedura (con altre terminologie sottoprogramma o subroutine), mentre il corpo del programma da cui provengono le chiamate assume il nome di programma principale. Il concetto della chiamata ad un sottoprogramma è estensibile. Dalla prima procedura è possibile chiamarne un’altra e così via, con una tecnica detta di nidificazione. In questo modo è possibile scomporre un algoritmo complesso in tante parti ognuna delle quali più ridotta e più semplice. Il ricorso all’uso delle procedure permette di verificare più efficacemente il funzionamento di un programma, ed offre la possibilità di poter utilizzare librerie di sottoprogrammi già esistenti.
Funzioni
Il concetto di funzione, in un linguaggio di programmazione, ha un significato simile a quello in uso nell’algebra, si tratta cioè di un insieme di espressioni il cui risultato, sia esso numerico che letterale, può variare a seconda del valore assunto da una o più variabili. La funzione viene chiamata dal programma principale, da cui riceve le variabili riutilizzabile avente sempre la stessa struttura formale, ma il cui contenuto varia in seguito alle chiamate ricevute.
Strutture
L’insieme razionale e ordinato della varie istruzioni collegate fra loro forma delle strutture. Per quanto complesso sia un programma, esso è sempre riconducibile ad alcune situazioni logiche fondamentali di seguito illustrate:
- sequenza;
- selezione;
- ripetizione.
Sequenza
Questa struttura è rappresentata dalla semplice successione di più istruzioni scritte ed eseguite nell’ordine indicato dalle linee di collegamento del diagramma di flusso. I blocchi possono rappresentare non solo un insieme di semplici istruzioni, ma anche strutture più complesse descritte in altre parti del programma.
Selezione
La struttura di selezione permette di scegliere fra due o più percorsi di programma a seconda del valore assunto da una variabile di controllo. La selezione può assumere le seguenti forme:
semplice; [se condizione allora istruzione]
con salto; [se condizione allora salta a]
alternativa; [se condizione allora istruzione 1 altrimenti istruzione 2]
ramificata; [se condizione 1 allora istruzione 1 altrimenti se condizione 2 allora istruzione 2 altrimenti se condizione 3 istruzione 3]
multipla. [se x=a allora istruzione 1 altrimenti se x=b allora istruzione 2 altrimenti se x=c allora istruzione 3]
Ripetizione
Se una delle linee di uscita di una selezione coincide con un punto situato a monte dell’ingresso, la struttura viene indicata con il termine ripetizione. La ripetizione del percorso già seguito avviene fino a quando una particolare variabile di controllo non assume il valore previsto. In entrambi i casi il verificarsi della condizione voluta permette l’uscita dal ciclo. Tale schema prevede due diverse possibilità:
- controllo a monte, in cui l’azione da ripetere può non venire eseguita;
- controllo a valle, in cui l’azione da ripetere è eseguita almeno una volta.
Programma
Il programma rappresenta quindi, con l’insieme delle istruzioni, quelle azioni compiute su dati in ingresso per produrre risultati in uscita.
I dati possono essere oggetti di diversa natura e cioè numeri, lettere dell’alfabeto, caratteri, tabelle, immagini, suoni animazioni ecc. Nella sua forma più generale indipendentemente quindi dal linguaggio adottato, il programma può essere rappresentato tramite un diagramma di flusso che comprende tutti i passi necessari alla soluzione del problema. Compito del programma è la produzione di un risultato che, a seconda del tipo di dati trattati, può consistere ad esempio in una delle seguenti operazioni:
visualizzazione sul monitor del PC;
stampa sulla stampante del sistema;
registrazione dei dati su disco o altro supporto;
emissione di un messaggio sonoro;
azionamento di apparecchiature collegate ad apposite interfacce;
invio dei dati ad una destinazione remota.
Per ottenere ciò occorre rispettare le regole imposte dal linguaggio di programmazione adottato, in particolare la sua sintassi. Le istruzioni redatte in questo modo vengono poi tradotte in un linguaggio più adatto alle caratteristiche di funzionamento elettrico della macchina.
Esistono quindi diversi tipi di linguaggi, classificabili in base all’affinità che presentano con le modalità espressive dell’uomo:
- linguaggi ad alto livello;
- linguaggi a basso livello;
- linguaggi macchina.
Elementi di programmazione
Così come accade per la lingua parlata, nello sviluppo di un programma occorre far uso di una serie di elementi base, che combinati e connessi fra loro formano le strutture logiche adatte a sviluppare il concetto voluto e ad eseguire il lavoro prefissato. In una scala che va dal semplice al complesso, nei linguaggi di programmazione è possibile individuare i seguenti elementi:
- caratteri;
- parole;
- istruzioni;
- procedure;
- funzioni;
- strutture;
- programma.
Caratteri
Ogni linguaggio è basato su un particolare alfabeto, costituito da vari caratteri, ad esempio quello dell’algebra è costituito dalle lettere dell’alfabeto maiuscole e minuscole, dalle dieci cifre decimali e da alcuni segni speciali, come simboli delle operazioni, la linea di frazione, le parentesi, la virgola decimale ecc.
I linguaggi di programmazione adottano per semplicità gli stessi simboli usati nell’alfabeto della lingua inglese e nelle più diffuse convenzioni matematiche, a volta però attribuendovi i significati variamente diversificati.
Parole
I caratteri vengono raggruppati in parole, termine con cui si indicano gli elementi del programma; il loro significato evidentemente differisce da quello in uso nel linguaggio comune. Parole possono essere sequenze di cifre, lettere, o un insieme dei due tipi di caratteri. Una parola di linguaggio può essere riservata, se il suo nome e il suo significato sono previsti dal particolare linguaggio usato, oppure definita dall’utente. Il nome della parola rappresenta in forma comprensibile l’indirizzo di memoria della grandezza ad essa associata, mentre il valore rappresenta il contenuto della locazione di memoria indicata. Il valore può essere un dato numerico, una serie di lettere, una matrice o altre strutture più complesse.
Istruzioni
Per far eseguire un certo lavoro occorre fornire all’elaboratore una serie di comandi, detti istruzioni, da eseguire in sequenza. L’istruzione rappresenta quell’elemento del linguaggio di programmazione attraverso il quale si richiede al calcolatore, tramite opportune convenzioni di scrittura, l’esecuzione di una determinata operazione. Una sequenza completa di istruzioni viene chiamata programma. Attraverso il programma l’elaboratore viene informato sulla quantità e sul tipo di dati interessati all’elaborazione, quali di essi vanno considerati di ingresso, come si deve operare su tali dati e quali risultati posti in uscita.
Le istruzioni più semplici e tipiche appartengono alle seguenti categorie:
- ingresso, che permettono di introdurre dati nel programma;
- uscita, che stampano o visualizzano i risultati dell’elaborazione;
- assegnazione, che fanno assumere valori numerici o letterali alle variabili;
- confronto, che paragonano i valori o più grandezze;
- operazioni logiche e matematiche, che risolvono i relativi problemi;
- salto, che permettono di variare il percorso del programma.
Diagramma di flusso
Uno degli strumenti più utili per la stesura e l’interpretazione di un programma è il diagramma di flusso (flow-chart) che costituisce una descrizione grafica della sequenza di istruzioni. Queste vengono rappresentate mediante figure geometriche connesse da linee orientate che ne indicano l’ordine di esecuzione. Il diagramma a blocchi così ottenuto permette di stabilire quali sono le istruzioni da comunicare al calcolatore e di verificare se la sequenza delle istruzioni è completa e corretta. Una semplice istruzione viene indicata da un rettangolo, mentre un blocco caratterizzato da una funzione di controllo, in questo caso costituito da una selezione fra due possibilità come conseguenza di confronto di due variabili, è rappresentato da un rombo dotato di frecce che indicano le strade da percorrere per la prosecuzione del programma. Si distinguono il blocco iniziale e il blocco finale.
Procedure
Nella stesura di un programma può rendersi necessario dover richiamare più volte un certo gruppo di istruzioni da punti diversi del diagramma di flusso. Tale blocco viene chiamato procedura (con altre terminologie sottoprogramma o subroutine), mentre il corpo del programma da cui provengono le chiamate assume il nome di programma principale. Il concetto della chiamata ad un sottoprogramma è estensibile. Dalla prima procedura è possibile chiamarne un’altra e così via, con una tecnica detta di nidificazione. In questo modo è possibile scomporre un algoritmo complesso in tante parti ognuna delle quali più ridotta e più semplice. Il ricorso all’uso delle procedure permette di verificare più efficacemente il funzionamento di un programma, ed offre la possibilità di poter utilizzare librerie di sottoprogrammi già esistenti.
Funzioni
Il concetto di funzione, in un linguaggio di programmazione, ha un significato simile a quello in uso nell’algebra, si tratta cioè di un insieme di espressioni il cui risultato, sia esso numerico che letterale, può variare a seconda del valore assunto da una o più variabili. La funzione viene chiamata dal programma principale, da cui riceve le variabili riutilizzabile avente sempre la stessa struttura formale, ma il cui contenuto varia in seguito alle chiamate ricevute.
Strutture
L’insieme razionale e ordinato della varie istruzioni collegate fra loro forma delle strutture. Per quanto complesso sia un programma, esso è sempre riconducibile ad alcune situazioni logiche fondamentali di seguito illustrate:
- sequenza;
- selezione;
- ripetizione.
Sequenza
Questa struttura è rappresentata dalla semplice successione di più istruzioni scritte ed eseguite nell’ordine indicato dalle linee di collegamento del diagramma di flusso. I blocchi possono rappresentare non solo un insieme di semplici istruzioni, ma anche strutture più complesse descritte in altre parti del programma.
Selezione
La struttura di selezione permette di scegliere fra due o più percorsi di programma a seconda del valore assunto da una variabile di controllo. La selezione può assumere le seguenti forme:
semplice; [se condizione allora istruzione]
con salto; [se condizione allora salta a]
alternativa; [se condizione allora istruzione 1 altrimenti istruzione 2]
ramificata; [se condizione 1 allora istruzione 1 altrimenti se condizione 2 allora istruzione 2 altrimenti se condizione 3 istruzione 3]
multipla. [se x=a allora istruzione 1 altrimenti se x=b allora istruzione 2 altrimenti se x=c allora istruzione 3]
Ripetizione
Se una delle linee di uscita di una selezione coincide con un punto situato a monte dell’ingresso, la struttura viene indicata con il termine ripetizione. La ripetizione del percorso già seguito avviene fino a quando una particolare variabile di controllo non assume il valore previsto. In entrambi i casi il verificarsi della condizione voluta permette l’uscita dal ciclo. Tale schema prevede due diverse possibilità:
- controllo a monte, in cui l’azione da ripetere può non venire eseguita;
- controllo a valle, in cui l’azione da ripetere è eseguita almeno una volta.
Programma
Il programma rappresenta quindi, con l’insieme delle istruzioni, quelle azioni compiute su dati in ingresso per produrre risultati in uscita.
I dati possono essere oggetti di diversa natura e cioè numeri, lettere dell’alfabeto, caratteri, tabelle, immagini, suoni animazioni ecc. Nella sua forma più generale indipendentemente quindi dal linguaggio adottato, il programma può essere rappresentato tramite un diagramma di flusso che comprende tutti i passi necessari alla soluzione del problema. Compito del programma è la produzione di un risultato che, a seconda del tipo di dati trattati, può consistere ad esempio in una delle seguenti operazioni:
visualizzazione sul monitor del PC;
stampa sulla stampante del sistema;
registrazione dei dati su disco o altro supporto;
emissione di un messaggio sonoro;
azionamento di apparecchiature collegate ad apposite interfacce;
invio dei dati ad una destinazione remota.