Programmazione e Laboratorio di Programmazione – Luca Tesei1 La Programmazione Cosè la programmazione? Concetti preliminari.

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

Traduzione ed Interpretazione
Informatica Generale Marzia Buscemi
Il Software.
Software di base: Linguaggi di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A1 Introduzione a Java.
Recupero debito quarto anno Primo incontro
Evoluzione dei linguaggi di programmazione
I linguaggi di programmazione
If a cascata, switch, operatori logici
2/11/2004Laboratorio di Programmazione - Luca Tesei1 Progettazione Fase di progettazione di unapplicazione Fase di implementazione.
Linguaggi Regolari e Linguaggi Liberi
12/11/2004Laboratorio di Programmazione - Luca Tesei1 Caratteri – Input da Console Il tipo char Input dallo standard input.
26/10/2004Laboratorio di Programmazione - Luca Tesei1 Variabili e Oggetti Lo spazio di memoria di Java Le API di Java.
3/12/2004Laboratorio di Programmazione - Luca Tesei1 Sequenze di lunghezza variabile ArrayList Operazioni Ricerche.
Definizione e tipi di implementazione
Linguaggi di programmazione
29/10/2004Laboratorio di Programmazione - Luca Tesei1 Metodi e variabili istanza Definizione e chiamata di metodi Uso delle variabili istanza Documentazione.
9/11/2004Laboratorio di Programmazione - Luca Tesei1 Tipi numerici di base - Costanti Interi e decimali Definizione di costanti.
22/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei1 Laboratorio – Primo Impatto Scrivere un semplice programma I primi concetti.
29/11/2004Laboratorio di Programmazione - Luca Tesei1 Ancora sulla progettazione/Pacchetti Concetti di coesione/accoppiamento/coerenza Uso dei package.
26/11/2004Laboratorio di Programmazione - Luca Tesei1 Input/Output Redirecting, scomposizione dellinput, uso di file.
2/11/2004Laboratorio di Programmazione - Luca Tesei1 Punto della situazione Da dove veniamo, dove andiamo.
Algoritmi e Programmazione
Massa Laura Mela Enrica
Generalità Linguaggio e Macchina Astratta
9/12/2004Laboratorio di Programmazione - Luca Tesei1 Ereditarietà
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
Reti Logiche e Architettura dei Calcolatori Luciano Gualà home page
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Struttura dei sistemi operativi (panoramica)
Modelli simulativi per le Scienze Cognitive
Il Linguaggio Macchina
Primi Elementi di Programmazione in C++
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
Programmazione in Java
Introduzione al linguaggio assembly del microprocessore a parte
VIRTUALIZZAZIONE Docente: Marco Sechi Modulo 1.
Architettura del calcolatore
Lo sviluppo del software e i linguaggi di programmazione
Macchine astratte, linguaggi, interpretazione, compilazione
Implementazione di un linguaggio ad alto livello (con riferimento a Java)
11/11/2004Laboratorio di Programmazione - Luca Tesei1 Operazioni numeriche - Input Espressioni, funzioni matematiche, classi involucro, Acquisizione di.
Linguaggi per COMUNICARE
Programma di Informatica Classi Prime
Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
la traduzione dei programmi
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
LINGUAGGI DI PROGRAMMAZIONE Per comunicare comandi e dati ad un computer occorre un particolare linguaggio detto LINGUAGGIO MACCHINA, che è un insieme.
Programmazione Attività di progettazione ed implementazione di programmi I programmi permettono di realizzare funzioni complesse su un hardware in grado.
L’esecuzione dei programmi
Concetti Fondamentali sulla Programmazione
1 Macchine astratte, linguaggi, interpretazione, compilazione.
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
Classi ed Oggetti in Java (Cenni). Richiami Cenni sull’ Implementazione, Macchine Astratte, Compilatore, Interprete Ruolo delle Classi in Java Oggetti.
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Il software Claudia Raibulet
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Programmazione orientata agli Oggetti Introduzione a Java.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Transcript della presentazione:

Programmazione e Laboratorio di Programmazione – Luca Tesei1 La Programmazione Cosè la programmazione? Concetti preliminari

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei2 Sommario La programmazione, questa sconosciuta Programmiamo Macchine Astratte Linguaggi di basso e alto livello e loro implementazione Esempi: C, Java

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei3 Programmare vs Usare un computer Esite una grossa differenza, ma in genere sconosciuta ai più Ah! Tu sei un informatico! Senti, come faccio a scansire e modificare unimmagine e a metterla sul mio sito? Sta parlando di come usare il computer, di come utilizzare –Un certo numero di programmi già scritti da qualcuno e installati sul pc –Dei servizi offerti da certi provider internet

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei4 Programmare vs Usare un computer Una delle competenze base di un informatico è quella, invece, di conoscere almeno un modo per programmare, cioè per scrivere programmi che fanno qualcosa, quello che vuole lui/lei/il suo datore di lavoro/una comunità La programmazione è unattività interessante, entusiasmante, creativa: moltissime persone nel mondo lo fanno per puro divertimento (oltre che per guadagnarsi da vivere)

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei5 Programmi ognidove Esistono in circolazione moltissimi programmi, che fanno le cose più svariate (word- processor, browser internet, computer graphics, riproduzione suoni/immagini,....) Il codice di diversi di loro è disponibile per essere letto e/o modificato: si tratta del codice open-source, scaturito per lo più dal tempo libero di programmatori di tutto il mondo: essi ricavano soddisfazione e gratificazione dallo scrivere un buon programma e dal fatto che poi questo venga anche usato da altri

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei6 Programmi ognidove Nonostante labbondanza esiste sempre lesigenza di scrivere programmi nuovi o di migliorarne di già esistenti In ogni caso esistono dei limiti a quello che un computer può calcolare: ci sono dei problemi per cui non esiste nessun algoritmo risolutivo Un algoritmo è il cuore di un programma: è il procedimento di calcolo che il programma deve seguire

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei7 Programmare Per poter programmare una certa macchina abbiamo bisogno di: –Un algoritmo che calcola ciò che il programma deve calcolare –Un linguaggio per specifacare lalgoritmo. La macchina su cui vogliamo far girare il programma deve saper capire questo linguaggio In genere il programma che si scrive è una serie di istruzioni

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei8 Macchine astratte Esiste un insieme di concetti che sono validi per una qualunque macchina e un qualunque linguaggio di programmazione Questo insieme di concetti si chiama Macchina Astratta È molto utile per fissare dei punti di riferimento generali nella programmazione e per definire anche precisamente come è implementato un certo linguaggio

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei9 Macchina Astratta un insieme di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi GESTIONE MEMORIA OP n INTERPRETE CONTROLLO SEQUENZA CONTROLLO DATI MEMORIA OPERAZIONI OP 1 OP 2 PROGRAMMI DATI

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei10 Es: Una macchina fisica Operazioni Primitive –Operazioni aritmetico-logiche –Operazioni di manipolazione di stringhe di bit –Lettura/Scrittura di celle di memoria e registri –Input/output Controllo di Sequenza (salti, condizionali, chiamate e ritorni dai sottoprogrammi) –Registro contatore istruzioni (PC) –Strutture dati che contengono i punti di ritorno dei sottoprogrammi

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei11 Es: Una macchina fisica Controllo dati –Acquisizione operandi –Memorizzazione risultato –Architettura a registri: Registri indice Indirizzamento indiretto –Architettura a Pila: Gestione della Pila

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei12 Es: Una macchina fisica Gestione della memoria –Architettura a registri: Nessuna poiché la memorizzazione è statica –Architettura a Pila: Allocazione e recupero dei dati sulla Pila

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei13 Linterprete La struttura dellinterprete è sempre la stessa per una qualunque macchina astratta Quello che cambia sono le altre componenti

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei14 Start Acquisisci la prossima istruzione Decodifica Acquisisci operandi Seleziona Esegui OP 1 Esegui OP 2Esegui OP nEsegui Alt StopMemorizza il Risultato Controllo Sequenzza Controllo Dati Operazioni Controllo Dati Interprete

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei15 Il linguaggio di una macchina astratta M macchina astratta L M linguaggio macchina di M: è il linguaggio in cui si esprimono tutti i programmi interpretati dallinterprete di M I programmi sono particolari dati primitivi su cui opera linterprete

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei16 Macchine astratte Ai componenti di M corrispondono i componenti di L M –Tipi di dato primitivi –Meccanismi per il controllo della sequenza –Meccanismi per il controllo del trasferimento dei dati –Meccanismi per la gestione della memoria

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei17 Realizzazione di Macchine Astratte Una macchina astratta è una collezione di strutture dati ed algoritmi Può essere realizzata combinando 3 tecniche 1.Realizzazione in hardware 2.Emulazione o simulazione via firmware 3.Simulazione software

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei18 Dai linguaggi alle macchine astratte M L M L M L è la macchina astratta che ha L come linguaggio macchina Se L è un linguaggio ad alto livello, M L può essere molto complessa Implementare L vuol dire realizzare M L Come?

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei19 Implementazione di M L Generalmente mediante simulazione (software od eventualmente firmware) su una macchina (astratta) ospite M 0 Se linterprete di M L è simulato, limplementazione si chiama interpretativa Esiste unalternativa basata su tecniche di traduzione (soluzione compilativa)

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei20 Programmare in un linguaggio Conoscere un linguaggio di programmazione corrisponde a conoscere tutti i suoi costrutti e come questi vengono eseguiti dalla relativa macchina astratta Avendo queste conoscenze si possono scrivere programmi nel linguaggio scelto e si può anche non conoscere per niente il tipo di implementazione della macchina astratta del linguaggio

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei21 Programmare in un linguaggio In buona parte di questo corso ci occuperemo di capire bene la macchina astratta Java, cioè studieremo le strutture dati, i costrutti del linguaggio Java e che effetti hanno quando vengono eseguiti Vedremo anche alcuni dettagli dellimplementazione del linguaggio

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei22 Linguaggi ad alto e basso livello I linguaggi di programmazione si possono classificare, in base alla distanza tra la loro macchina astratta e alla macchina ospite si cui poi verranno fatti girare: –Piccola distanza (poche differenze): linguaggi di basso livello. Es: codice macchina di un pc, assembly. –Grande distanza (la struttura della macchina astratta del linguaggio è molto diversa da quella della macchina ospita): linguaggi di alto livello.

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei23 Linguaggi di basso livello Una tipica macchina ospite, almeno per applicazioni di ufficio/domestiche, è un pc Un pc è può essere visto come una macchina astratta che risulta dalla composizione di diversi livelli: –Lhardware –Il firmware (sequenze di operazioni elementari che implementano istruzioni di linguaggio macchina) –Il sistema operativo (che aggiunge funzionalità di gestione delle risorse)

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei24 Linguaggi di basso livello Un esempio tipico di linguaggio di basso è il linguaggio macchina di un pc. Istruzioni molto semplici che operano su dati molto semplici –Sposta un valore intero dalla memoria ad un registro –Incrementa il valore di un registro –Salta ad una certa istruzione se il valore di un registro è maggiore di zero –...

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei25 Linguaggi di basso livello Ogni istruzione elementare è identificata da un codice numerico I dati che servono allistruzione per operare sono numeri Il programma viene caricato in memoria ad un certo indirizzo e ognuna delle istruzioni è individuabile dal punto di memoria in cui si trova tramite un indirizzo Il processore esegue le istruzioni in sequenza (eseguendo dei salti in base a determinate istruzioni)

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei26 Linguaggi di basso livello Risulta molto difficoltoso, ripetitivo e fonte di errori il programmare in linguaggio macchina Un linguaggio leggermente migliore è il linguaggio assembly: –Ogni istruzione è identificata da un codice mnemonico (mov, add, goto,...) –Le istruzioni e i dati possono essere etichettati con codici mnemonici per riferirli in maniera semplice –Un programma, detto assemblatore, si occupa di tradurre in codice macchina numerico

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei27 Linguaggi di basso livello Un esempio di programma assembly MOVF id3, R2 MULF \#60.0, R2 MOVF R2, id1 ADDF R2, R1 MOVF R1, id1 id1, id3 sono etichette che si riferiscono a dati (variabili intere); R1, R2 sono registri; MOVF, MULF, ADDF sono codici mnemonici di istruzioni macchina

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei28 Linguaggi di alto livello È facile immaginare la difficoltà di scrivere grandi applicazioni scrivendo programmi assembly Il numero di istruzioni da scrivere e la loro organizzazione richiederebbe moltissimo tempo e la probabilità di commettere errori sarebbe altissima, oltre al fatto che individuare gli errori sarebbe molto difficile Per questo ben presto sono emersi i linguaggi di alto livello

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei29 Linguaggi di alto livello Astraggono diverse componenti della macchina ospite fisica I programmi sono più leggibili e intelligibili dagli esseri umani La scrittura di programmi diventa anchessa una espansione del linguaggio tramite la definizione di nuove astrazioni, tipi di dato, operazioni Il debugging è più semplice e gli errori sono limitati dalla strutturazione imposta

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei30 Linguaggi di alto livello Richiedono una implementazione per poter essere poi eseguiti in una macchina fisica ospite Esistono diversi modi per implementarli: –Compilazione o traduzione –Interpretazione –Varie combinazioni delle due

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei31 Compilazione Un compilatore è un programma che si occupa di tradurre un altro programma scritto in un linguaggio L in un programma equivalente scritto in L0, linguaggio di una macchina fisica ospite

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei32 Compilazione Compilatore Programma scritto in L int main() { double x; int z = 10; while (z >0) Programma equivalente in L0 MOV l1, R1 MOVF l3, R2....

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei33 Compilazione Molti linguaggi sono compilati: C, C++, Pascal, FORTRAN, COBOL, Java (parzialmente) Scrivere un compilatore è un compito difficile, ma una volta fatto esso permette di far eseguire tutti i programmi del linguaggio L per cui è stato scritto da macchine che funzionano con il linguaggio L0

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei34 Interpretazione Il linguaggio L è implementato su una macchina che funziona su L0 tramite una simulazione software Un programma in L0 (generalmente chiamato interprete) si occupa di prelevare nel giusto ordine le istruzioni di un programma dato in L, di simulare la loro esecuzione e di restituirne i risultati. Esempi di linguaggi interpretati: PROLOG, LISP, Java bytecode

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei35 Interpretazione Programma scritto in L int main() { double x; int z = 10; while (z >0) Interprete simulazione

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei36 Esempio: linguaggio C Ad alto livello Compilato Il codice compilato può essere eseguito sulla macchina ospite con il supporto di alcune librerie che implementano diverse funzionalità (supporto a tempo di esecuzione)

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei37 Esempio: Java Limplementazione del linguaggio Java è mista I programmi in Java vengono compilati, ma il risultato della compilazione è eseguibile su una macchina astratta (la Java Virtual Machine - JVM) che di solito non è una macchina fisica Il linguaggio della JVM si chiama Java bytecode ed ha le caratteristiche di un linguaggio di basso livello con diverse funzionalità specifiche per gestire le particolarità del linguaggio Java (oggetti, classi, eccezioni etc.) La JVM viene simulata tramite interpretazione su diverse macchine fisiche

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei38 Esempio: Java Programma scritto in Java Public class Hello { public static void main (String[] ar Compilatore Programma scritto in Java bytecode iload_1, #3 istore_3, 1 iadd_1, Interprete JVM per la macchina M0 simula M0

18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei39 Esempio: Java La JVM è disponibile per molte architetture (macchine fisiche) In questo modo uno stesso programma Java compilato può essere eseguito su diverse architetture Portabilità Indipendenza dallarchitettura