programma
programma sequenza ordinata di → istruzioni da impartire a un automa esecutore e, in particolare, all’elaboratore elettronico, affinché risolva un problema specifico; la sua realizzazione comporta diverse fasi:
• la scrittura da parte dell’uomo di un insieme di istruzioni in un apposito → linguaggio di programmazione: si ottiene così un file che prende il nome di programma sorgente;
• la traduzione delle istruzioni in → linguaggio macchina, ossia una sequenza di stringhe binarie di 0 e 1, effettuata da un altro programma detto compilatore; esso legge in input il programma sorgente e scrive in output, in codice macchina, il programma oggetto. Un linguaggio di programmazione di questo tipo è detto linguaggio compilato. Se nel programma sorgente qualche istruzione non è scritta seguendo le regole sintattiche o lessicali dello specifico linguaggio, il programma compilatore comunica l’errore e non crea il programma oggetto;
• la procedura che avvia l’esecuzione del programma stesso oppure la creazione del programma eseguibile (usualmente indicato con estensione «.exe») che si avvia autonomamente, una volta richiamato dal sistema operativo.
In alcuni linguaggi di programmazione, detti linguaggi interpretati, la fase di traduzione viene saltata, in quanto è previsto un programma interprete che ha le caratteristiche analoghe a quelle di un traduttore simultaneo, perché legge in sequenza le istruzioni e le esegue; il vantaggio dei linguaggi compilati consiste proprio nel poter correggere gli eventuali errori lessicali o sintattici rilevati e dichiarati dal compilatore prima dell’esecuzione, al contrario dei linguaggi dotati solo dell’interprete, che forniscono l’errore solo in fase di esecuzione. Per poter scrivere un programma, occorre avere già determinato con esattezza le seguenti caratteristiche, chiamate specifiche di programma: l’obiettivo del programma, le modalità di flusso dei dati in input, l’algoritmo o gli algoritmi da utilizzare per l’elaborazione, il flusso dei dati in output. Tutte queste richieste sono definite e circostanziate in un insieme di regole e istruzioni che precisano tutti gli obiettivi e i requisiti che il programma deve prevedere.
La struttura interna di un programma (sorgente) è molto semplice. All’inizio c’è la parte o sezione dichiarativa, che fornisce al calcolatore le seguenti informazioni: il nome del programma e le unità di input-output interessate al flusso dei dati; i nomi delle variabili che verranno utilizzate, nonché il loro tipo di dato. Segue la parte o sezione esecutiva, che contiene la sequenza di tutte le istruzioni vere e proprie.
Nello sviluppo di un programma può nascere l’esigenza di ripetere un calcolo o far effettuare delle azioni alla macchina, come la lettura o la scrittura di dati, in vari punti e in tempi differenti; per questo scopo non è necessario riscrivere più volte lo stesso codice sorgente, ma si crea un programma indipendente in subordine, che viene richiamato dal programma ogni volta che serve: è il sottoprogramma o subroutine; a sua volta il sottoprogramma può contenere il richiamo di altri sottoprogrammi; il programma di livello superiore prende il nome di programma principale. È molto importante, per una buona tecnica di programmazione, destrutturare il più possibile il programma principale nei vari sottoprogrammi; infatti in tal modo il compilatore, essendo impegnato su un numero più limitato di istruzioni, può ricercare e correggere gli errori di scrittura del codice con maggiori facilità ed efficienza.