6. Codifica degli algoritmi in un linguaggio di alto livello

Slides:



Advertisements
Presentazioni simili
Fondamenti di Informatica CDL in Ingegneria Meccanica - A.A CDL in Ingegneria Meccanica - A.A Tipi di dati Ing. Simona Colucci.
Advertisements

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Tipi di dati Ing. Simona Colucci.
5. Codifica degli algoritmi in un linguaggio di alto livello
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Elementi fondamentali dell’ Architettura di di un elaboratore elettronico.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI LINGUAGGIO MACCHINA.
© 2007 SEI-Società Editrice Internazionale, Apogeo
LA PROGRAMMAZIONE: Algoritmi e programmi
La rappresentazione degli algoritmi
Prova d’Esame: selezione di domande
11. Lettura e Scrittura di file in Matlab
Java: concetti e costrutti base
Introduzione al linguaggio C
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
EasyGraph Dynamic web-based dashboard
Dal problema al processo risolutivo
7. Strutture di controllo Ing. Simona Colucci
Script Marco D. Santambrogio –
IL CONCETTO DI ALGORITMO
Dal problema al processo risolutivo
7. Strutture di controllo
Unità di apprendimento 7
Excel 1 - Introduzione.
Codifica degli algoritmi in un linguaggio di alto livello
L’AMBIENTE CODE BLOCKS E L’IO
I FILES AD ACCESSO SEQUENZIALE
TIPI PRIMITIVI TIPI STRUTTURATI
JAVA usa una rappresentazione in VIRGOLA MOBILE
Programmazione strutturata
Forme per rappresentare l’algoritmo:
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Informatica per l’Ingegneria
realizzato dal prof.Conti Riccardo
Rappresentazione dei Numeri
Classe III A A.s – 2012 Programma di Informatica
Programmare.
Programmazione e Laboratorio di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo
Strutture di Controllo
Secondo Programma in C.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Ricorsione 16/01/2019 package.
Programmazione e Laboratorio di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo
Definizione di linguaggio di programmazione
I fogli elettronici Microsoft Excel.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Sistemi Digitali.
La struttura dei primi programma in C
Excel 3 - le funzioni.
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Fogli di Calcolo Elettronici
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Portale Acquisti Alperia
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Array e Stringhe Linguaggio C.
PowerShell di Windows PowerShell è un shell che mette a disposizione un prompt interattivo e un interprete a riga di comando , per le sue caratteristiche.
Programmazione e Laboratorio di Programmazione
La programmazione strutturata
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

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

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. 2016-2017

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. 2016-2017

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 1001001100 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. 2016-2017

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. 2016-2017

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. 2016-2017

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. 2016-2017

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. 2016-2017

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. 2016-2017

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 == 0 alfa > beta & x ~= 3 ~ ((a + b)*3 > x | a < c) Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A. 2016-2017

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. 2016-2017

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. 2016-2017

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. 2016-2017

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. 2016-2017

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. 2016-2017

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. 2016-2017

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

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. 2016-2017

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. 2016-2017

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. 2016-2017

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. 2016-2017

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. 2016-2017

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. 2016-2017

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. 2016-2017

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. 2016-2017

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

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. 2016-2017

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. 2016-2017