La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

6. Codifica degli algoritmi in un linguaggio di alto livello

Presentazioni simili


Presentazione sul tema: "6. Codifica degli algoritmi in un linguaggio di alto livello"— Transcript della presentazione:

1 6. Codifica degli algoritmi in un linguaggio di alto livello
Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

2 Obiettivi della programmazione in linguaggi di alto livello
Indice Obiettivi della programmazione in linguaggi di alto livello Istruzioni principali Tipi di dato Trasformazione da codice sorgente a codice eseguibile Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

3 Obiettivi della programmazione in linguaggi di alto livello
Colmare il gap tra i due requisiti fondamentali di un linguaggio per la descrizione di algoritmi: Precisione ed assenza di ambiguità interpretativa per l’esecuzione di operazioni(requisito richiesto dalla macchina) Sintesi per la facilità di comprensione del programmatore(requisito richiesto dall’uomo) Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

4 Programmazione in linguaggi di alto livello
Vantaggi: Possibilità di riferirsi agli elementi del programma(celle di memoria, istruzioni, valori costanti) con identificatori (nomi simbolici) Es. a  cella di memoria Possibilità di esprimere le istruzioni e il controllo della sequenza della loro esecuzione in modo vicino al linguaggio naturale Es. (a+b)*(c+d)  LOAD A ADD B STORE TEMP LOAD C ADD D MULT TEMP Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

5 Astrazione di un elaboratore
Componenti: CPU Memoria centrale: divisa in celle elementari, contenenti un dato(valore numerico o carattere), di un numero di bit variabile Bus Astrazione delle interfacce con le periferiche: Input: unica unità di ingresso diviso in celle elementari, contenenti un dato (valore numerico o carattere), di un numero di bit variabile Output: unica unità di uscita Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

6 Elementi -e terminologia- essenziali
Stringa: successione finita di caratteri, supposti immagazzinati in celle consecutive Variabili: celle di memoria, il cui contenuto può cambiare durante l’esecuzione del programma Identificatori simbolici: successione di lettere e cifre(o il simbolo”_”), con al primo posto una lettera N.B. il Matlab è CASE SENSITIVE Identificatori predefiniti e riservati: associati a priori ad elementi del linguaggio e non utilizzabili per le variabili Parole chiave: altre parole del linguaggio predefinite e riservate Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

7 Le principali istruzioni in Matlab
Istruzioni di sequenza: Istruzioni di assegnamento Esempi: x = 23; w = 'a'; y = z; r3 = (alfa*43–xgg)*(delta–32*ijj); x = x+1; Istruzioni di ingresso e uscita x= input(‘Inserire un valore’) disp (A) disp(‘Fine del programma!’) Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

8 Istruzioni di ingresso e uscita in Matlab
Comando Descrizione disp (A) Visualizza il contenuto di A disp (‘testo’) Visualizza la stringa tra apici format Controlla il formato di visualizzazione x= input(‘testo’) Visualizza la stringa tra apici, attende l’immissione di un valore e lo memorizza in x x= input(‘testo’, ‘s’) Visualizza la stringa tra apici, attende l’immissione di un valore e lo memorizza come stringa in x k=menu(‘titolo’, ‘opzione1’, ‘opzione2’,…) Visualizza un menu dal titolo ‘titolo’, con le opzioni ‘opzione1’, ‘opzione2’,… Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

9 Istruzioni di ingresso e uscita in Matlab
Formato di uscita a video personalizzato tramite le funzioni: fprintf (‘stringa formato’, variabili) ‘stringa formato’: stringa che contiene i caratteri che si vogliono visualizzare e, nelle posizioni in cui si vuole venga inserito il valore, deve essere indicato uno dei codici in tabella str = sprintf (‘stringa formato', variabili) indirizza su una stringa di testo di nome str le variabili indicate, con il formato definito per visualizzare: disp(str) Controllo dei formati tramite codici di formato Codice di Formato Significato %s Stringa %c Carattere %d o  %i Intero con segno %u Intero senza segno, base 10 %f Numero a virgola fissa \n Carattere di ritorno a capo \t Carattere di tabulazione Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

10 Le principali istruzioni Le istruzioni composte
corrispondono ai costrutti visti nel capitolo 1 Comprendono selezione ed iterazione visti nel capitolo 5 producono effetti diversi a seconda del verificarsi o meno di condizioni sul valore delle variabili Condizione(espressione booleana): espressione su variabili booleane il cui valore può essere vero o falso Costruita tramite: Operatori di relazione (in Matlab: ==; ~=; <;>;<=;>=) Operatori logici (in Matlab: ~;|;&) Es. di condizioni : x == alfa > beta & x ~= ~ ((a + b)*3 > x | a < c) Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

11 Istruzioni composte: selezione ed iterazione
2. Istruzioni di Selezione if x == 0 z = 5 else y = z + w*y end 3. Istruzioni di Iterazione (ciclo o loop) while x >= 0 x = x – 1 Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

12 Tipi di dati astratti Tipo di dato : tipo di informazione, di natura eterogenea(interi, reali, caratteri, array, fatture, conti correnti, pagine web, …) Definizione generale di tipo di dato: Insieme di valori e di operazioni ad esso applicabili Tipo astratto: conta la visione esterna, non la rappresentazione interna, ovvero il punto di vista di chi usa il tipo, non di chi lo realizza Immaginiamo di dover trattare direttamente come stringhe di bit la divina commedia, una pagina web, … Inoltre potremo talvolta usare diverse rappresentazioni concrete per la stessa astrazione Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

13 Dichiarazioni di tipo Nei linguaggi fortemente tipizzati è necessario associare un tipo a tutte le variabili, al momento della dichiarazione; ciò comporta che: Per ogni variabile è possibile determinare l’insieme dei valori ammissibili e delle operazioni ad essa applicabili Per ogni variabile è calcolabile a priori la quantità di memoria necessaria: la memoria per l’esecuzione di tutto il programma può essere calcolata in fase di compilazione (eccezione: allocazione dinamica) E’ possibile rilevare errori nell’uso delle variabili durante la compilazione del programma: espressioni o assegnamenti coinvolgenti variabili eterogenee Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

14 Tipi di dato: classificazioni
In base alla complessità delle informazioni rappresentate: Tipi semplici (interi, caratteri, reali, …): rappresentano informazione logicamente indivisibile Tipi strutturati (array, …): rappresentano informazione logicamente scomponibile In base all’ utilizzabilità nel linguaggio: Tipi predefiniti nel linguaggio(built in): interi, caratteri, … Tipi definiti dall’utente per soddisfare le infinite e imprevedibili esigenze(user defined): fattura, data,… N:B. tale classificazione dipende dal linguaggio: in Matlab variabili come età, conto_corrente non sono predefiniti(devono essere costruiti dal programmatore); in altri linguaggi “special purpose” potrebbero esserlo (e.g. data nei fogli elettronici) Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

15 Matlab non prevede la dichiarazione delle variabili
Tipi di Dato in Matlab Matlab non prevede la dichiarazione delle variabili Per ogni variabile NON è possibile determinare l’insieme dei valori ammissibili e delle operazioni ad essa applicabili, se non in fase di esecuzione Per ogni variabile NON è calcolabile a priori la quantità di memoria necessaria: la memoria per l’esecuzione di tutto il programma NON può essere calcolata in fase di compilazione (eccezione: allocazione dinamica) NON è possibile rilevare errori nell’uso delle variabili durante la compilazione del programma: espressioni o assegnamenti coinvolgenti variabili eterogenee Modalità operativa: MATLAB calcola o salva i valori in memoria sempre come se le variabili fossero numeri reali in doppia precisione Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

16 Il comando format Il comando format regola solamente come i numeri sono visualizzati o stampati, non come MATLAB li calcola o li salva in memoria Comando Descrizione format short (default) 4 cifre decimali format long 16 cifre decimali format short e 4 cifre decimali + l’esponente format long e 15 cifre decimali+ l’esponente format bank 2 cifre decimali format + Positivo, negativo o 0 format rat approssimazione razionale format compact elimina le righe vuote format loose elimina l’effetto di compact Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

17 Da codice sorgente ad eseguibile
Le fasi: Editazione Preelaborazione TRaduzione Linking Caricamento Esecuzione Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

18 Editazione del codice in un file:
Es: in Matlab il file dovrà terminare con l’estensione .m Il programma che consente l’editazione è detto editor Il programma editato è memorizzato in un dispositivo di memoria secondaria e viene detto programma sorgente (source program) Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

19 Precompilazione del programma ed espansione delle macro:
Preelaborazione Precompilazione del programma ed espansione delle macro: Il programma che esegue la precompilazione è detto preprocessore e viene eseguito in maniera automatica prima che avvenga la compilazione Il preprocessore obbedisce a comandi detti direttive del preprocessore o macro che indicano che sul programma devono essere effettuate delle manipolazioni prima della compilazione: Inclusione di altri file in quello da compilare Sostituzione di simboli speciali con un testo del programma Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

20 Traduzione (compilazione o interpretazione)
Il traduttore (compilatore o interprete) trasforma le istruzioni del programma in istruzioni in linguaggio di macchina Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

21 Traduzione: Codice oggetto
Un programma può essere suddiviso in parti separate, dette moduli. Ciascun modulo può essere compilato separatamente La compilazione separata dei vari moduli genera moduli oggetto separati Nel codice oggetto di ciascun modulo di programma solo i nomi delle variabili definite nel modulo (indirizzi simbolici) sono trasformati in indirizzi rilocabili: espressi in forma logica, indipendente dall’allocazione del programma in memoria calcolati come se il programma fosse caricato a partire dall’indirizzo zero Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

22 Il linking è eseguito da un programma detto linker, che:
trasforma i vari moduli oggetto in un unico programma eseguibile collega il programma dell’utente a librerie di programmi di utilità disponibili nell’ambiente di programmazione di ciascun linguaggio: nelle librerie standard nelle librerie definite dal programmatore risolve riferimenti a variabili definite esternamente a ciascun modulo trasformando i relativi indirizzi simbolici in indirizzi rilocabili Il linker tramite i collegamenti precedenti produce il codice eseguibile o programma eseguibile Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

23 Indirizzi di un programma
Indirizzi di un programma eseguibile: in formato assoluto: calcolati a partire da una specifica cella di memoria; si verifica se: la memoria è partizionata staticamente e i programmi vengono allocati alla memoria in modo rigido tutta la memoria è assegnata ad un unico programma utente in formato rilocabile: calcolati come se il programma debba essere caricato in memoria a partire dalla cella zero Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

24 Caricamento in memoria
Il caricamento in memoria centrale necessario all’esecuzione è effettuato da un programma detto loader Il loader preleva dal disco il programma eseguibile e lo trasferisce nella memoria gestendo gli indirizzi: Se il programma ha già indirizzi assoluti il loader deve caricare il programma in una specifica zona di memoria Se il programma oggetto ha istruzioni in formato rilocabile il loader effettua la rilocazione Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

25 Il caricamento: rilocazione degli indirizzi
Tipi di rilocazione degli indirizzi: Statica: avviene nel momento del caricamento in memoria modificando istruzione per istruzione gli indirizzi che compaiono nel programma in indirizzi assoluti Non richiede ulteriori elaborazioni in esecuzione sugli indirizzi caricati come assoluti Dinamica: non comporta una modifica del codice, caricato in formato rilocabile gli indirizzi assoluti sono calcolati durante l’esecuzione utilizzando il registro base che contiene l’indirizzo assoluto della cella di memoria a partire dalla quale è caricato il programma Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

26 Esecuzione del programma
L’esecuzione del programma eseguibile (in linguaggio macchina) è effettuata nella CPU. Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

27 Esercizi Progettare tramite flow chart strutturato e codificare in Matlab un programma che acquisisca un valore intero. Il programma dovrà controllare che tale valore sia >300 e consentire in caso contrario di acquisire nuovamente un valore per il numero di volte necessario affinché lo diventi Progettare tramite flow-chart strutturato e codificare in Matlab un programma che consenta di calcolare la media dei voti di uno studente universitario, acquisendo il numero complessivo di esami e assicurandosi (con un processo analogo a quello descritto nell’esercizio 1) che i valori di voto immessi siano >=18. Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A

28 Esercizi Progettare tramite flow-chart strutturato un programma per la valutazione di un triangolo. Il programma, dopo aver acquisito 3 valori interi, dovrà verificare se questi possono essere i lati di un triangolo e, in caso affermativo, stabilire il tipo di triangolo Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A


Scaricare ppt "6. Codifica degli algoritmi in un linguaggio di alto livello"

Presentazioni simili


Annunci Google