.........
 
PROGRAMMI

 

PROGRAMMI

 

Un programma è la codifica, in un particolare linguaggio comprensibile ad un calcolatore, di un algoritmo.

 

LINGUAGGI DI PROGRAMMAZIONE o linguaggi artificiali.

 

I programmi sono espressi in linguaggi artificiali detti linguaggi di programmazione.

I linguaggi sono suddivisi in generazioni in base al periodo in cui sono stati ideati.

I linguaggi si suddividono in linguaggi di livello basso, di livello alto, di livello molto alto, a seconda della maggiore o minore affinità con il linguaggio della macchina. I linguaggi alti sono più semplici da comprendere per noi. Quelli bassi invece sono comprensibili solo dalla macchina, o per comprenderli occorre essere esperti di linguaggi macchina.

Un linguaggio è costituito da un insieme di sequenze di simboli, dette stringhe o parole. I simboli relativi ad un linguaggio appartengono ad un alfabeto di simboli o lessico. Le frasi si ottengono componendo i simboli secondo le regole sintattiche (o regole di produzione).

La SINTASSI si occupa della forma delle frasi, cioè delle regole che vanno rispettate nella loro costruzione. La sintassi riguarda quindi le regole che servono per costruire tutti e soltanto i programmi formalmente corretti.

La SEMANTICA si occupa invece del significato delle frasi. Esiste la possibilità di individuare gli errori sintattici ma non quelli semantici.

ES. Una frase è sintatticamente corretta se è costituita da soggetto-verbo-complemento oggetto.

Abbiamo la frase: Il gatto mangia il topo.

Oppure: Il topo mangia il gatto.

Entrambe le frasi sono sintatticamente corrette, ma la seconda è semanticamente sbagliata.

La sintassi quindi permette di stabilire se un’istruzione è ben formata. Per descrivere le regole formali della sintassi si usano degli strumenti formali.

 

LINGUAGGI DI ALTO LIVELLO

Un programma scritto in un linguaggio di alto livello non può essere eseguito direttamente da un calcolatore, ma deve prima essere tradotto in un linguaggio di basso livello (linguaggio macchina) comprensibile per il calcolatore. I linguaggi di alto livello sono facili per noi da comprendere e si possono utilizzare per risolvere i nostri problemi, ma non possono essere eseguiti dall’elaboratore, se prima non vengono tradotti in un linguaggio di basso livello. I traduttori sono programmi che hanno il compito di tradurre i programmi da un linguaggio di alto livello nel linguaggio macchina.

 

LINGUAGGIO DI BASSO LIVELLO

il linguaggio macchina è quello che la macchina può comprendere direttamente, senza bisogno di essere tradotto.

Nel linguaggio macchina ogni istruzione è rappresentata da una sequenza di cifre binarie, totalmente illeggibile per l’uomo, ma perfettamente non ambiguo per la macchina.

La traduzione dei linguaggi ad alto livello ha permesso l’evoluzione dei linguaggi verso sistemi simbolici più espressivi e più facilmente manipolabili dai programmatori, in quanto il programmatore scrive un programma in un linguaggio ad alto livello e facendo questo può ignorare i dettagli della macchina che esegue il programma;  il compito di tradurre questo programma da un linguaggio di alto livello in uno di basso livello è affidato ad un altro programma chiamato compilatore.

Il COMPILATORE è capace di prendere le varie istruzioni di un programma, verificare che vi sia correttezza sintattica, e le traduce in linguaggio macchina. Il programma che il compilatore deve tradurre è detto programma sorgente, mentre il programma tradotto in formato binario è detto programma oggetto.

L’INTRPRETE  invece è un programma che prende le istruzioni singolarmente, le verifica sintatticamente, le interpreta, quindi le traduce in linguaggio macchina e le fa eseguire al calcolatore. In questo caso non viene prodotto nessun programma oggetto.

Infine vi può essere un approccio misto, in cui il linguaggio ad alto livello viene compilato in un linguaggio intermedio e per essere eseguito viene interpretato e mandato in esecuzione in linguaggio macchina.

linguaggi di tipo intermedio sono i cosiddetti linguaggi assemblativi o linguaggi assembly, che pur essendo orientati verso le esigenze del programmatore conservano tuttavia la struttura delle istruzioni in linguaggio macchina. La differenza sta nel fatto che le sequenze binarie del linguaggio macchina sono rappresentate da sigle mnemoniche come per esempio ADD che significa somma. Ad ogni istruzione scritta in assembly corrisponde una sola istruzione in linguaggio macchina.

 

Abbiamo detto che un algoritmo può essere descritto con un linguaggio e tale linguaggio può essere naturale o formale.

I linguaggi naturali sono tutti quei linguaggi che gli uomini usano quotidianamente per comunicare tra loro. I linguaggi naturali ubbidiscono a regole che spesso ammettono eccezioni e contengono sinonimi e omonimie.

I linguaggi formali o artificiali sono quei linguaggi creati dall’uomo per scopi ben precisi, secondo regole convenzionali che non ammettono eccezioni e non consentono sinonimi e omonimie, cioè ogni parola del linguaggio ha un significato univoco.

Un algoritmo può utilizzare un linguaggio naturale che esprime tutte le operazioni elementari mediante costrutti formali, si ha cioè un linguaggio naturale strutturato: vi sono parole riservate (parole chiavi) utilizzate con un significato univoco.

Gli schemi di composizione hanno lo scopo di comporre le istruzioni e danno delle frasi formali. Definiscono l’ordine in cui le istruzioni devono essere eseguite e questo ordine può essere: per sequenza, per iterazione, per selezione.

La sequenza permette di comporre ed eseguire le istruzioni una di seguito all’altra, quindi le istruzioni vengono eseguite nell’ordine in cui sono state poste.

La selezione binaria permette la scelta tra due istruzioni sulla base di un’espressione booleana, cioè se assumono il valore vero o falso. Le parole chiavi della selezione binaria sono IF (se), THEN (allora), ELSE (altrimenti).

L’iterazione infine permette di eseguire ripetutamente un’istruzione sempre sotto il controllo di un’espressione booleana (vero o falso). Le parole chiavi dell’iterazione sono WHILE (mentre), DO (esegui).

Il sistema binario è un sistema di rappresentazione dei numeri che utilizza la base due e in cui le cifre utilizzate sono lo zero e l’uno (0,1).

I DATI rappresentano oggetti o proprietà della realtà, per cui i dati sono un’astrazione di oggetti del mondo reale. Per astrazione si intende il processo mediante il quale si ignorano gli aspetti di un oggetto non rilevanti per lo scopo del momento, e ci si concentra completamente sugli aspetti rilevanti. Esistono dati semplici o elementari, i quali sono oggetti elementari non decomponibili;

vi sono poi dati strutturati che sono oggetti del mondo reale più complessi e decomponibili in dati elementari.