• Non ci sono risultati.

Elementi di programmazione

N/A
N/A
Protected

Academic year: 2021

Condividi "Elementi di programmazione"

Copied!
20
0
0

Testo completo

(1)

L E Z I O N I P E R I C O R S I D I I N F O R M A T I C A D E L L I C E O S C I E N T I F I C O O P Z I O N E S C I E N Z E

A P P L I C A T E

P R O F . D O M E N I C O L O R U S S O

Elementi di programmazione

(2)

Macchina astratta

Scelta del linguaggio di programmazione e natura dell’esecutore

Identificazione fra linguaggio di programmazione ed esecutore.

Formulazione degli algoritmi con punto di vista del linguaggio di programmazione.

Descrizione dell'esecutore automatico fatta dal punto di vista del linguaggio di programmazione evidenziando quindi le funzionalità (cosa l'esecutore è in grado di fare ).

Punto di vista LOGICO/ASTRATTO: si considera l'esecutore prescindendo dalle sue componenti fisico/strutturali (come e' fatto e come funziona).

(3)

Macchina astratta

Fasi di esecuzione

Compito

Algoritmo

PROGRAMMA SORGENTE scritto nel linguaggio di programmazione

Traduzione nel programma ESEGUIBILE scritto nel linguaggio macchina

Esecuzione dell’algoritmo

INTERPRETE : traduzione istruzione per istruzione ( linguaggi interpretati)

COMPILATORE: traduzione integrale in un programma EQUIVALENTE che sia eseguibile da parte dell' esecutore.

FILE SORGENTE: file scritto nel linguaggio di programmazione

FILE ESEGUIBILE: file tradotto nel linguaggio direttamente eseguibile dall'esecutore.

Linguaggio macchina: e' quello direttamente comprensibile dalla macchina.

(4)

Macchina astratta

(5)

Macchina astratta

Elementi costitutivi dell’esecutore Descrizione astratta e FUNZIONALE dell'esecutore.

INTERPRETE/ATTUATORE: è la parte attiva dell'esecutore in grado di compiere le operazioni descritte nell'algoritmo anche agendo sulle altre parti dell'esecutore

MEMORIA: insieme di celle (virtuali) in cui contenere la rappresentazione di un valore. Alle celle sono associati un NOME, che generalmente indica il significato del valore e un TIPO che indica le modalita'di rappresentazione e trattamento. Generalmente ogni cella e'univocamente individuata.

STANDARD INPUT: entità utile a ricevere informazioni dall'esterno. In modo astratto è una sequenza di valori generata ESTERNAMENTE all'esecutore.

STANDARD OUTPUT: entità per il trasferimento verso l'esterno dei valori generati dall'esecutore. Per il momento sia una sequenza di valori generati dall'esecutore e trasferiti all'esterno di esso.

BUS DATI: trasferimento dei dati

(6)

Macchina astratta

Elementi costitutivi dell’esecutore

Queste cinque componenti sono poi logicamente collegate tra loro in modo che i valori delle informazioni possano essere trasferiti tra di esse. In particolare i valori possono essere trasferiti dalla memoria all’interprete, dall’interprete alla memoria, dallo standard input alla memoria e dall’interprete allo standard output.

Questa struttura è raffigurata nella figura sottostante.

(7)

Macchina astratta

Interprete-attuatore

Entità in grado di compiere le azioni descritte nel programma/algoritmo attraverso il linguaggio di programmazione. Le azioni vengono eseguite secondo la sequenza dinamica di esecuzione dell'algoritmo, determinata in base al calcolo di valori di verità su condizioni.

Azioni elementari compiute dall'esecutore:

1. Lettura ed acquisizione del contenuto di un valore rappresentato in una cella di memoria.

2. Scrittura di un valore in una cella di memoria secondo le opportune modalità di rappresentazione associate alla cella (tipo associato).

3. Estrazione delle rappresentazioni dei valore dallo standard di input e trascrizione in una cella di memoria.

4. Aggiunta di un nuovo valore, comunque generato, allo standard di output.

5. Generazione di nuovi valori utilizzando gli opportuni operatori.

(8)

Macchina astratta

Memoria

La memoria è un insieme di celle (virtuali) in grado di contenere le rappresentazioni dei valori delle informazioni. Il linguaggio di programmazione consente la creazione e distruzione (virtuale) delle celle di memoria.

Ad ogni cella di memoria viene associato un tipo per la opportuna rappresentazione dei valori contenuti.

Ogni linguaggio di programmazione:

è dotato di tipi primitivi

Consente di definire nuovi tipi.

Il tipo determina la modalita' di rappresentazione dei valori delle informazioni contenute nelle celle.

GENERALMENTE ogni cella è univocamente individuabile tramite il relativo identificatore.

(9)

Macchina astratta

Memoria

Un identificatore è una sequenza di lettere e di cifre iniziata da una lettera; può inoltre contenere il carattere speciale (underscore). Sono pertanto esempi di identificatori i seguenti:

dato

Dato

X1

X2

esami sostenuti

Non sono invece esempi di identificatori i seguenti:

3dato

x$

esami sostenuti

(10)

Macchina astratta

Memoria

Si noti in particolare che gli identificatori non possono iniziare con una cifra e che non devono contenere spazi;

inoltre:

Le lettere maiuscole sono considerate diverse da quelle minuscole (gli identificatori dato e Dato sono pertanto due identificatori distinti).

Sebbene l’associazione di una cella ad un identificatore non sia ne necessaria ne univoca (lo stesso identificatore può essere associato a più celle), assumeremo per ora che tutte le celle siano associate ad un uno ed un solo identificatore.

(11)

Macchina astratta

Variabili

Una cella di memoria, che, come abbiamo detto, è sempre associata a un tipo e a un identificatore, viene indicata con il termine variabile e ha le seguenti proprietà fondamentali:

1. Una volta creata contiene sempre la rappresentazione di un valore tra quelli che possono essere rappresentati in base al tipo ad associato.

2. Una variabile si dice definita se il valore in essa rappresentato è stato scritto dall’interprete/attuatore secondo le modalità esplicitamente previste dall’algoritmo;

si dice indefinita altrimenti. Si noti che in base a tale definizione una variabile appena creata è indefinita.

(12)

Macchina astratta

Variabili

3. Una variabile definita contiene un’informazione solo se associamo concettualmente un attributo al nome della variabile. In tal caso infatti il tipo della variabile determina la rappresentazione del valore mentre il nome associa un attributo. Ribadiamo che, in mancanza del tipo e del nome, il solo contenuto della cella/variabile non determina alcuna informazione.

(13)

Macchina astratta

Variabili

4. Una variabile indefinita non contiene un’informazione perchè la rappresentazione in essa contenuta è indeterminata. Di conseguenza non è mai lecito leggere una variabile indefinita (cioè trasferire il valore in essa rappresentato all’interprete, in memoria o, infine, allo standard output) perchè il risultato di tutte le operazioni che usassero tale valore sarebbe indeterminato.

(14)

Macchina astratta

Variabili

L’operazione di lettura di una variabile viene indicata tecnicamente con il termine uso della variabile.

Quanto detto si traduce pertanto nella seguente regola del tutto generale e di importanza fondamentale nella programmazione:

Regola 4.1 In un algoritmo, una variabile non può mai essere usata prima di essere stata definita

(15)

Macchina astratta

STANDARD DI INPUT

Sequenza di (rappresentazione di) valori generati esternamente all'esecutore.

L'interprete trasferisce uno per volta i valori all'interno delle celle di memoria secondo la opportuna rappresentazione determinata dal tipo possibile per la cella di destinazione

L'operazione di trasferimento dallo standard input deve tenere conto del

tipo previsto per la particolare cella di memoria e quindi dell’insieme dei valori possibili per quel tipo.

Necessità di sincronizzazione con l'algoritmo (quando l’algoritmo lo richiede)

(16)

Macchina astratta

Standard output

Dispositivo per il trasferimento verso l’esterno delle rappresentazioni dei valori

Le rappresentazioni tengono conto del tipo richiesto

Il trasferimento avviene QUANDO l'algoritmo lo stabilisce

(17)

Macchina astratta

Espressioni

Notazioni che mediante il linguaggio di programmazione permettono di descrivere il meccanismo per generare un valore. Si suddividono in:

Espressioni costanti semplici: le espressioni costanti semplici, indicate anche comunemente col termine costanti, sono notazioni che specificano direttamente un valore. Le costanti possono essere numeri interi o reali, nel qual caso si usano sequenze di cifre composte con alcuni caratteri speciali secondo le usuali convenzioni, valori logici, caratteri singoli o stringhe di caratteri.

(18)

Macchina astratta

Espressioni

Espressioni costanti composte: le espressioni costanti composte, indicate anche comunemente col termine espressioni costanti, sono espressioni costituite da più parti.

L’elemento che consente di formare espressioni costanti è sempre un operatore, cioè un simbolo che rappresenta una legge che trasforma un numero finito di valori detti argomenti in un valore detto risultato. La nozione di operatore coincide pertanto con la nozione matematica di operazione nel suo significato più generale. Ad esempio, se il simbolo + rappresenta l’operatore di somma tra numeri, l’espressione:

1254 + 36

rappresenta il valore 1290, che è il risultato che si ottiene sommando i numeri interi 1254 e 36 .

(19)

Macchina astratta

Espressioni

Espressioni non costanti semplici: Le espressioni non costanti semplici sono espressioni formate unicamente dall’identificatore di una variabile e rappresentano il valore contenuto nella variabile al momento in cui sono considerate

(20)

Macchina astratta

Espressioni

Espressioni non costanti composte: le espressioni non costanti composte, analogamente alle espressioni costanti composte, sono espressioni costituite da parti.. La differenza consiste nel fatto che nel caso di espressioni non costanti composte, le variabili (che sono espressioni non costanti semplici) possono essere usati come operandi degli operatori presenti nell’espressione.

Riferimenti

Documenti correlati

La Casa delle compere e dei banchi di San Giorgio, istituita nel 1407 e sop- pressa da Napoleone nel 1805, era un consorzio di pubblici creditori il cui ambito operativo si

Approfondire il ruolo dell’interprete nel corso della storia permette di mette- re in luce nozioni fondamentali insite nel ruolo dell’interprete, e ora ancorate nei

La soluzione a questo problema consiste nel- l’arricchire la chiusura, facendo in modo di ri- cordarsi in essa non solo gli argomenti ed il cor- po della funzione che essa

•Gli oggetti di tipo Esempio1 espongono un metodo getValue() che ritorna il valore attuale di value. •Gli oggetti di tipo Esempio1 espongono un metodo setValue(int newValue)

Senza gli apici semplici, che impedirebbero alla bash di interpretare i metacaratteri, l'interpretazione viene PRIMA effettuata dalla bash con i nomi dei file

[r]

34 Furthermore Jackson expresses the concern that a woman’s motives for seeking a termination might be increasingly scrutinised for their moral legitimacy in an age were prenatal

Anche per quanto riguarda le maggiori entrate per le band emergenti la risposta è stata omogenea. Sia in Italia, in Europa, negli Stati Uniti/Canada e in Australia,