FONDAMENTI DI INFORMATICA



Documenti analoghi
Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Strumenti per la programmazione

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

FONDAMENTI DI INFORMATICA

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Traduzione ed esecuzione di programmi. Dispensa 08

Linguaggi e Paradigmi di Programmazione

PROBLEMI E ALGORITMI

Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009. Prof. Raffaele Nicolussi

FONDAMENTI DI INFORMATICA

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Corso di INFORMATICA 2 (Matematica e Applicazioni)

FONDAMENTI DI INFORMATICA

Linguaggi di programmazione

Introduzione. Informatica B. Daniele Loiacono

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

Lezione 8. La macchina universale

Linguaggi di programmazione

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

Programmi. Algoritmi scritti in un linguaggio di programmazione

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Corso sul linguaggio Java

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

Corso di Informatica

La Macchina Virtuale

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE

Informatica Generale

Programmare in Java. Olga Scotti

Fondamenti di Informatica. Docenti: Prof. Luisa Gargano Prof. Adele Rescigno BENVENUTI!

Fondamenti di Informatica T-1

FONDAMENTI di INFORMATICA L. Mezzalira

Fondamenti di Informatica 1. obiettivo: introduzione a conoscenze di base dell informatica

Fasi di creazione di un programma

Introduzione alla programmazione in C

Metodologie di programmazione in Fortran 90

Fondamenti di Informatica. Allievi Automatici A.A Nozioni di Base

Fondamenti di Informatica T1

Dispensa di Informatica I.1

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Elementi di Programmazione: con Java dal Computer, al Web, al Cellulare

Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni

INFORMATICA 1 L. Mezzalira

INFORMATICA GENERALE. Prof Alberto Postiglione Dipartim. Scienze della Comunicazione Univ. Salerno. Università degli Studi di Salerno

Fondamenti di Informatica - 9Cfu Corso di Laurea in Ingegneria Informatica (ord. 270)

Sistemi di Elaborazione delle Informazioni. Corso di Laurea per "Tecnico Ortopedico" 03

Scienze della Comunicazione Università di Salerno. UD 3.2a: Introduzione alla Programmazione

Come ragiona il computer. Problemi e algoritmi

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Architettura del calcolatore

Codifica: dal diagramma a blocchi al linguaggio C++

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Java: Compilatore e Interprete

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

CPU. Maurizio Palesi

Programmi e Oggetti Software

Origini e caratteristiche dei calcolatori elettronici

Le command line di Java

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Informazione e dato. Gabriella Trucco

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica

Tale attività non è descritta in questa dispensa

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

SOFTWARE. È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software:

Funzioni in C. Violetta Lonati

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona

Corso di Informatica Applicata. Lezione 3. Università degli studi di Cassino

Fondamenti di Informatica Ingegneria Clinica Lezione 19/10/2009. Prof. Raffaele Nicolussi

Programmazione in Java Parte I: Fondamenti

Gli algoritmi: definizioni e proprietà

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

Architettura di un calcolatore

Corso di Informatica

Approccio stratificato

E una notazione per descrivere gli algoritmi.

Richiami di informatica e programmazione

LICEO DELLE SCIENZE APPLICATE

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Oggi. Programmazione e laboratorio: introduzione al corso. Docenti: laboratorio. Docenti: teoria. Il corso. Orario.

Descrizione di un algoritmo

Introduzione. Laboratorio di Calcolo Corso di Laurea in Fisica. Università degli Studi di Roma La Sapienza

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

LINGUAGGI DI PROGRAMMAZIONE

Corso di Fondamenti di Informatica L-A

Programma del Corso. Dati e DBMS SQL. Progettazione di una. Normalizzazione

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Corso di Informatica

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

Introduzione ai linguaggi di programmazione

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Transcript:

Fondamenti di Informatica FONDAMENTI DI INFORMATICA Fondamenti di Informatica -Obiettivi L obiettivo del corso e' lo studio delle metodologie di base della programmazione dei calcolatori e della loro applicazione nello sviluppo di moduli software in Java che utilizzino tipi di dati semplici ed array. Prof. Angela Bonifati bonifati@icar.cnr.it A.A. 2003-2004 Facoltà di Ingegneria UNICAL Il corso introduce alle tematiche relative alla programmazione ad oggetti. Crediti : 4 CFU. 1 2 Fondamenti di Informatica - Orario Periodo: 12 Gennaio 12 Marzo. Ogni settimana 3 ore di lezione e 2 di esercitazione. In totale 25 ore di lezione e 12 ore di esercitazioni. Ore aggiuntive di tutoraggio (opzionali) Fondamenti di Informatica - Programma Introduzione alla programmazione e all organizzazione dei calcolatori Risoluzione algoritmica dei problemi. Correttezza ed altre proprietà degli algoritmi. Algoritmi e programmi. Livelli di astrazione e linguaggi. Ricevimento Docente: Lunedi 15:30-17:30 DEIS, cubo 41c,1 piano. 3 4 Fondamenti di Informatica - Programma Programmazione su tipi semplici Fondamenti di Informatica - Programma Metodi e programmazione con array Introduzione alla programmazione orientata agli oggetti. Codifica di algoritmi in programmi Java. Struttura di un programma: costanti, variabili, tipi, classi, oggetti, costruttori. Istruzioni semplici e tipi predefiniti. Compatibilità di tipo nella assegnazione. Operazioni di ingresso/uscita. Istruzioni per il controllo del flusso di elaborazione. Sviluppo incrementale di programmi. Concetto di funzione e procedura. Metodi in Java. Esecuzione di metodi e passaggio dei parametri. Il costruttore di tipo array. Tipi array monodimensionali, Tipi array multidimensionali, manipolazione di array. Gestione di vettori e matrici. 5 6

Fondamenti di Informatica - Programma Tecniche di programmazione Proprietà delle classi e degli oggetti. Semplici algoritmi di ricerca. Tecniche di ordinamento di vettori. CENNI di Gerarchia di classi. Classi per la gestione di file. Classi per la gestione di vettori e stringhe. 7 Fondamenti di Informatica Materiale didattico Lucidi delle lezioni e programmi svolti nelle esercitazioni. Sito web : http://www.icar.cnr.it/angela/teaching/fond/indexfond.html con i lucidi in formato PDF. Materiale disponibile anche su icampus: (http://icampus.deis.unical.it). Sito E-learning: http://ecampus.mat.unical.it/ CD-ROM L ambiente JDK, esempi di programmazione, libreria di input e altro materiale. 8 Fondamenti di Informatica Testi Libri su Java L.Cabibbo, Fondamenti di Informatica: Oggetti e Java, McGraw-Hill, 2003 (consigliato). M. Bertacca, A. Guidi, Introduzione a Java, McGraw-Hill. K. Arnold, J. Gosling, Java Didattica e Programmazione, Addison- Wesley. J. Hubbard, Programmare in Java, McGraw-Hill Libri Italia. L. Lemay, R. Cadanhead, Java 2 Guida Completa, Apogeo. C.S. Horstmann, Concetti di Informatica e Fondamenti di Java 2, Apogeo. C.T. Wu, Introduzione alla Programmazione a Oggetti in JAVA, McGraw-Hill, 2000. 9 Fondamenti di Informatica Libri Consultazione e approfondimenti D. Sciuto, ed altri, Introduzione ai sistemi informatici, McGraw-Hill. S. Ceri, D. Mandrioli, L. Sbattella: Istituzioni di informatica, McGraw- Hill. S. Ceri, D. Mandrioli, L. Sbattella: Informatica: arte e mestiere, McGraw-Hill. 10 Fondamenti di Informatica Modalità di esame Propedeuticità : l esame può essere sostenuto da chi ha superato l esame di Introduzione all Informatica. L esame prevede lo svolgimento di Una prova scritta di programmazione Java in aula con possibilità del voto massimo. Una prova orale facoltativa sugli argomenti del programma con la possibilità di miglioramento del voto dello scritto. La prova orale è obbligatoria per chi riporta un voto allo scritto compreso nell'intervallo chiuso (15,17). Richiami di concetti di base: Calcolatore Calcolatore Elettronico - Computer: Strumento per la rappresentazione e l'elaborazione dell'informazione oppure Esecutore di algoritmi. Il Calcolatore è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti (risultati) l esecuzione di azioni viene richiesta all elaboratore attraverso frasi scritte in un qualche linguaggio (istruzioni). 11 12

Richiami di concetti di base: Algoritmo Concetto di Algoritmo Sequenza finita e non ambigua di passi che portano alla realizzazione di un compito in tempo finito. Proprietà fondamentali Eseguibilità: ogni azione deve essere eseguibile da parte dell esecutore dell algoritmo in un tempo finito; Non-ambiguità: ogni azione deve essere univocamente interpretabile dall'esecutore; Finitezza: il numero totale di azioni da eseguire, per ogni insieme di dati di ingresso, deve essere finito. Richiami di concetti di base: Algoritmo Quindi un algoritmo deve: Essere applicabile a qualsiasi insieme di dati di ingresso appartenenti al dominio di definizione dell algoritmo; Essere costituito da operazioni appartenenti ad un determinato insieme di operazioni fondamentali; Essere costituito da regole non ambigue, cioè interpretabili in modo univoco qualunque sia l esecutore (persona o macchina ) che le legge. Altre proprietà desiderabili: Correttezza, Efficienza, Leggibilità, modificabilità, 13 modularità, riusabilità. 14 Programmazione È l'attività con cui definiscono le operazioni che servono a predisporre l'elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema. Cosa è la Programmazione La programmazione è l attività di progettare e realizzare una programma, cioè definire le istruzioni che indicano ad un calcolatore i passi da eseguire per risolvere un problema. Programma Sequenza di istruzioni di un linguaggio di programmazione comprensibile al calcolatore che realizzano un compito o risolvono un problema. Usare un computer non necessariamente richiede una attività di programmazione. Tuttavia imparare a programmare un computer è una delle attività principali in informatica ed è utile a progettare e realizzare soluzioni a problemi in numerosi settori. 15 16 PROGRAMMA : È la descrizione di un algoritmo in un particolare linguaggio di programmazione. METODO DI RISOLUZIONE LINGUAGGIO Quali parole chiave? Quali dati? Quali operazioni elementari? Quali meccanismi di combinazione? Un linguaggio di programmazione è una notazione formale per descrivere algoritmi che è comprensibile ad un calcolatore. 17 18

SINTASSI e SEMANTICA Ogni linguaggio è caratterizzato da: sintassi: l insieme di regole formali per la scrittura di programmi in quel linguaggio, che dettano le modalità per costruire frasi corrette nel linguaggio stesso. semantica: l insieme dei significati da attribuire alle frasi (sintatticamente corrette) costruite nel linguaggio. Una frase può essere sintatticamente corretta e tuttavia non aver alcun significato! Lo stesso può accadere per una istruzione. Tipi di Linguaggi di Programmazione Linguaggi macchina e linguaggi assembler ogni azione è indicata in codice binario o con operazioni molto semplici e rudimentali : ADD X, Y oppure STORE A Linguaggi imperativi (PASCAL, FORTRAN, C, BASIC, ) le azioni da compiere sono indicate in una sequenza che partendo dai dati si completa calcolando i risultati : if a > 0 print ( valore positivo ) else print ( valore negativo ); Linguaggi dichiarativi (logici - PROLOG, funzionali - LISP) un programma è la definizione di una funzione o l elenco delle regole logiche che portano a verificare una condizione. 19 20 Linguaggi orientati agli oggetti (C++, Java, Smalltalk,.) Sono basati sul concetto di oggetto software che rappresenta un oggetto del mondo reale (un numero, un archivio, un testo, una matrice). I dati sono rappresentati come oggetti e le azioni da compiere come operazioni da effettuare sugli oggetti. Di solito sono realizzati come estensione dei linguaggi imperativi. Un programma modella un problema reale come una collezione di oggetti software che interagiscono. Per far eseguire un programma ad un calcolatore occorre tradurlo dal linguaggio usato nel linguaggio macchina. La traduzione avviene secondo due modalità principali: Compilazione Il compilatore controlla che tutte le istruzioni del programma siano corrette e alla fine di questo controllo se non ci sono errori genera il programma eseguibile che verrà eseguito dall esecutore. Interpretazione L interprete controlla una per volta ogni singola istruzione del programma e se questa è corretta la traduce e la esegue. Al primo errore termina l esecuzione del programma. 21 22 Compilazione ed esecuzione di programmi Java Java usa un approccio misto alla compilazione dei programmi il codice sorgente Java viene compilato in bytecode Java il programma nella forma di bytecode Java può essere eseguito da un interprete, la macchina virtuale Java (JVM) la JVM rende il calcolatore una macchina virtuale che sa eseguire programmi in bytecode Java codice sorgente Editing, compilazione ed esecuzione di programmi Java bytecode Java editing /* Applicazione che visualizza una frase sullo schermo. */ class ScrittoreSulloSchermo { public static void main(string[] args) { System.out.println("ciao a tutti"); System.out.println("questo testo introduce"); System.out.println("i fondamenti dell informatica"); } } compilazione... getstatic #6 <Field java.io.printstream out>... interpretazione calcolatore dotato di macchina virtuale Java ciao a tutti questo testo introduce i fondamenti dell informatica 23 24

Write once, run everywhere bytecode Java calcolatori dotati di macchina virtuale Java esecuzione PC Intel Windows ciao a tutti questo testo introduce i fondamenti dell informatica... getstatic #6 <Field java.io.printstream out>... Power Macintosh System 8 ciao a tutti questo testo introduce i fondamenti dell informatica Sun Ultra Solaris ciao a tutti questo testo introduce i fondamenti dell informatica 25 Java 2 Software Development Kit Java TM 2 Software Development Kit (Java 2 SDK) è un ambiente di sviluppo per la programmazione in Java http://java.sun.com/j2se/ Java 2 SDK comprende i seguenti strumenti di programmazione compilatore Java javac macchina virtuale Java java API (Application Programming Interface) di Java applet viewer appletviewer debugger jdb generatore di documentazione javadoc 26 Che cosa fare in pratica Le tre attività da svolgere nello sviluppo di programmi Java editing editor compilazione javac esecuzione java Vengono mostrate due modalità uso di alcuni strumenti semplici (primitivi) uso di un ambiente integrato di sviluppo In quanto segue, si assume che il software di sviluppo necessario sia installato e configurato correttamente nel 27 calcolatore in uso Che cosa fare in pratica editing Un editor che può essere utilizzato è Blocco note di Windows Il codice sorgente di ciascuna classe deve essere memorizzato in un diverso file di testo il file di testo per una classe deve avere come nome il nome della classe seguito dall estensione.java ad esempio, la classe ScrittoreSulloSchermo va memorizzata nel file ScrittoreSulloSchermo.java 28 Che cosa fare in pratica compilazione Il codice sorgente Java deve essere compilato in bytecode Java usando il comando javac ad esempio, compilazione della classe ScrittoreSulloSchermo javac ScrittoreSulloSchermo.java Che cosa fare in pratica esecuzione Per eseguire una applicazione si deve usare il comando java ad esempio, esecuzione della classe ScrittoreSulloSchermo java ScrittoreSulloSchermo l esecuzione di questo comando produce il bytecode di ScrittoreSulloSchermo nel file ScrittoreSulloSchermo.class 29 30

Fondamenti di Informatica PROBLEMI E ALGORITMI LINGUAGGIO MACCHINA Problemi e algoritmi Il problema dell attraversamento di un labirinto semplice in out Prof. Angela Bonifati bonifati@icar.cnr.it 31 una soluzione 1: avanza() 2: avanza() 3: avanza() robbie 32 Comprensione del problema I problemi sono descritti dalla loro specifica Problema attraversamento di un labirinto semplice Insieme di ingresso il robot robbie Pre-condizione il robot robbie si trova all ingresso di un labirinto semplice, nella direzione di ingresso Insieme di uscita vuoto in out Specifica di un problema La specifica di un problema insieme di ingresso o parametri i parametri del problema dati di ingresso e oggetti di ingresso pre-condizione condizione relativa all insieme di ingresso insieme di uscita o risultati dati di uscita e oggetti di uscita post-condizione condizione relativa all insieme di uscita Post-condizione il robot robbie si trova all uscita del labirinto semplice 33 34 Identificazione di un algoritmo per il problema Un algoritmo per un problema una sequenza di istruzioni che permette di far evolvere gli oggetti di interesse da uno stato iniziale che soddisfa la precondizione a uno stato finale che soddisfa la post-condizione sulla base di ulteriori dati di ingresso calcolando eventuali dati in uscita espressa in termini delle istruzioni di un esecutore automatico ESEMPIO: Equazione di secondo grado Problema: Calcolare le radici dell equazione ax 2 +bx+c = 0 Specifica del problema Dati di ingresso: tre numeri reali a, b, c. Pre-condizione: nessuna Dati di uscita: le radici x 1 e x 2, se esistono. Post-condizione: ax 12 +bx 1 +c = 0 e ax 22 +bx 2 +c = 0 35 36

ESEMPIO: Equazione di secondo grado Specifica dell algoritmo: ESEMPIO: Prodotto di N numeri Problema: Calcolare il prodotto di N numeri. delta b 2 4ac se (delta > 0) sqrtdelta radice quadrata (delta) x 1 (-b +sqrtdelta) /2a x 2 (-b sqrtdelta) / 2a altrimenti non esistono radici realidelta Specifica del problema: Dati di ingresso: N numeri {x 1, x 2,..., x n } Pre-condizione: nessuna Dati di uscita: un numero P Post-condizione: P = Πi=1,n x i 37 38 ESEMPIO: Prodotto di N numeri Specifica dell algoritmo: P 1 i 1 Finchè (1<= i <= N) P P * x i i i + 1 Fondamenti di Informatica Dal Linguaggio Macchina ai Linguaggi di Alto Livello 39 40 Fondamenti di Informatica - Linguaggio Macchina Le istruzioni elementari eseguite dalla CPU di un computer si chiamano istruzioni macchina. L insieme delle istruzioni macchina (instruction set ) costituiscono il linguaggio macchina. Un linguaggio macchina consente la programmazione della Macchina di von Neumann, è direttamente eseguibile da un calcolatore senza nessuna traduzione, naturalmente cambia da macchina a macchina (ad es., quello del Pentium è diverso da quello dello AMD). Fondamenti di Informatica - Linguaggio Macchina Le istruzioni sono codificate in formato binario e sono composte da CODICE OPERATIVO : indica l istruzione da eseguire OPERANDI : indicano gli operandi (indirizzi o valore) Per semplicità ipotizziamo di avere istruzioni con solo operando. Lunghezza delle istruzioni : I = m + n m: num bit del codice operativo, n: num bit dell operando. C odice-op m O perando n I 41 42

Fondamenti di Informatica - Linguaggio Macchina Set di istruzioni insieme delle operazioni del linguaggio macchina ( <= 2 m ). Istruzioni aritmetiche, logiche, di salto, di trasferimento dati. Ipotesi: istruzione a 16 bit : 4 bit per il codice operativo e 12 bit per l operando. C o d ice-o p 4 12 I=16 O p erand o 43 Fondamenti di Informatica - Linguaggio Macchina Esecuzione delle istruzioni Un programma è fatto di DATI + ISTRUZIONI. I dati hanno un formato e vengono scritti in memoria di massa per non perdere il loro valore. Ciclo di esecuzione: 1. Acquisizione dell istruzione dalla memoria centrale (fase di FETCH); 2. Interpretazione (analisi del codice operativo dell istruzione); 3. Esecuzione (in questa fase se c è un operando va caricato nella CPU). 44 Fondamenti di Informatica Linguaggio Assembler Linguaggi Assemblatori (ASSEMBLER) Linguaggi le cui istruzioni corrispondono univocamente a quelle del linguaggio macchina, ma sono espresse tramite nomi simbolici (parole chiave) invece che in binario. Ad esempio : READ X ; MULT X, Y; LOAD Z; Fondamenti di Informatica Linguaggio Assembler In un linguaggio Assembler Le istruzioni vengono specificate con nomi simbolici (parole chiave). I riferimenti alle celle di memoria (dati) sono fatti mediante nomi simbolici (identificatori). I modi di indirizzamento vengono indicati tramite simboli. Assemblatore Strumento automatico (programma) che traduce le istruzioni da formato simbolico al formato binario. 0100 1001 READ X. Il programma prima di essere eseguito deve essere tradotto in linguaggio macchina dall Assemblatore. READ X READ Y SUB X, Y 1010 1000 1010 0101 1110 0111 45 46 Prodotto di due numeri Linguaggio Macchina Esempio Programma assembler che calcola il prodotto di due numeri con il corrispondente programma in linguaggio macchina ASSEMBLER LINGUAGGIO MACCHINA READ 0 0100 1000 X READ Y 1 0100 1001 LOADA X 2 0000 1000 LOADB Y 3 0000 1001 MUL 4 1000 STOREA X 5 0010 1000 WRITE X 6 0101 1000 HALT 7 1101 0000 X INT 8 0000 0000 Y INT 9 0000 0000 VERSO LINGUAGGI DI ALTO LIVELLO Linguaggio Macchina Conoscenza precisa dei metodi di rappresentazione e manipolazione delle informazioni utilizzate. Linguaggio Macchina ed Assembler Necessità di conoscere dettagliatamente le caratteristiche della macchina (registri, dimensioni dati, set di istruzioni). Semplici algoritmi richiedono l'uso di molte istruzioni. Linguaggi di Alto Livello Il programmatore può astrarre dai dettagli legati all architettura e può esprimere i propri algoritmi in modo simbolico. I linguaggi di alto livello sono indipendenti dalla macchina fisica (astrazione). 47 48

VERSO LINGUAGGI DI ALTO LIVELLO COME ESEGUIRE UN PROGRAMMA SCRITTO IN UN LINGUAGGIO DI ALTO LIVELLO? Occorre tradurlo nel linguaggio macchina dello specifico processore che si sta usando. Due possibili modi: Compilazione (es. C, FORTRAN, Pascal, C++, COBOL,...) Interpretazione (es. Basic, Perl, JavaScript, ) COMPILATORI I compilatori traducono un intero programma dal linguaggio L 1 al linguaggio macchina L 0 della macchina prescelta: traduzione e esecuzione procedono separatamente, al termine della compilazione è disponibile la versione tradotta del programma, la versione tradotta è però specifica di quella macchina; per eseguire il programma basta avere disponibile la versione tradotta (non serve il programma originale!). L 1 L 0 49 50 INTERPRETI Gli interpreti invece traducono e immediatamente eseguono il programma istruzione per istruzione traduzione ed esecuzione procedono insieme, al termine non vi è alcuna versione tradotta del programma originale, se si vuole ri-eseguire il programma occorre anche ritradurlo. FASI DI SVILUPPO DI UN PROGRAMMA Qualunque sia il linguaggio di programmazione scelto occorre: 1. Scrivere il testo del programma e memorizzarlo su supporti di memoria permanenti (editing); 2. Se il linguaggio è compilato: Tradurre il linguaggio in linguaggio macchina (compilazione); Eseguire il programma tradotto. 3. Se il linguaggio è interpretato: Usare l interprete per eseguire il programma. 51 52 Prodotto di due numeri Linguaggio Java Programma Java che calcola il prodotto di due numeri: class prodotto { public static void main(string args[]){ int x=3; int y=5; int p; p = x * y; System.out.println("Prodotto = " + p); } } 53 Specifica di un algoritmo Primo approccio, scrittura diretta del programma: la soluzione coincide con la codifica Causa errori difficilmente individuabili Non garantisce che non esistano soluzioni chiaramente migliori, Non funziona con programmi grandi Rende difficile cambiare linguaggio di programmazione Perciò, è conveniente concentrarsi sulla specifica del problema e dell algoritmo (cosiddetto PSEUDOCODICE); la codifica dovrebbe essere solo un passo implementativo. 54