Interpreti e compilatori

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

Nel sistema operativo MS-DOS il comando cd.. (change directory), serve a cambiare cartella. Il comando rd (remove directory), serve a rimuovere una cartella.
Esercizio Usate il ciclo repeat until (controllo post condizionale) per simulare il prodotto N x M con M somme di N. Esempio: 5 x 3 equivale a fare 5 +5.
Sistema operativo MS-DOS
Informatica 22/03/2012.
Il Software.
Evoluzione dei linguaggi di programmazione
PROGRAMMARE IN PASCAL (le basi)
I File di testo in Pascal
PHP.
I linguaggi di programmazione
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
Fondamenti di Informatica
Caratteri e stringhe di caratteri
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Informatica di base A.A. 2003/2004 Algoritmi e programmi
File.
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Cosè un programma? LALA PROGRAMMAZIONE PROGRAMMAZIONELALA PROGRAMMAZIONE PROGRAMMAZIONE UN ELENCO DI ISTRUZIONI, APPARTENENTI A UN BEN DEFINITO LINGUAGGIO,
Introduzione agli stream e alle classi
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Introduzione alla programmazione lll
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
OPERAZIONI CON STRINGHE Le operazioni più interessanti da fare, per ora, con le stringhe sono: determinare la lunghezza della stringa, cioè quanti caratteri.
Gli algoritmi.
Lezione 2 Programmare in ASP
Corso di PHP.
DBMS ( Database Management System)
Elementi di Informatica
Algoritmi e Programmazione strutturata
PROGRAMMAZIONE: linguaggi
CODIFICA Da flow-chart a C++.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
Lezione 6 Strutture di controllo Il condizionale
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
Programmare in Visual Basic
Lo sviluppo del software e i linguaggi di programmazione
CONCETTI DI BASE 1.0 FONDAMENTI 1.1 HARDWARE 1.2 SOFTWARE 1.3 RETI
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
BIOINFO3 - Lezione 211 INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando lespressione. Quando il programma incontra.
BIOINFO3 - Lezione 331 SUBROUTINE IN PERL Una subroutine (funzione, metodo, procedura o sottoprogramma), e` una prozione di codice all`interno di un programma.
ECDL Patente europea del computer
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
Lezione 3 Struttura lessicale del linguaggio
Dal problema all’ algoritmo
la traduzione dei programmi
Introduzione a Javascript
R 255 G 211 B 8 R 255 G 175 B 0 R 127 G 16 B 162 R 163 G 166 B 173 R 104 G 113 B 122 R 234 G 234 B 234 R 175 G 0 B 51 R 0 G 0 B 0 R 255 G 255 B 255 Supporting.
Lez. 9 (13/14)Elementi di Programmazione1 Lezione 9 Valutazione di espressioni File di testo sequenziali.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Concetti Fondamentali sulla Programmazione
1 Macchine astratte, linguaggi, interpretazione, compilazione.
Il software Claudia Raibulet
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
Ciclo for nei linguaggi di programmazione. Nei linguaggi di programmazione, il ciclo for è una struttura di controllo iterativa che determina l'esecuzione.
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
Unità di apprendimento 6 Dal problema al programma.
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Eccezioni in Java. Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel linguaggio allo scopo.
Transcript della presentazione:

Interpreti e compilatori Programmi Interpreti e compilatori

La programmazione La macchina non può leggere una nostra istruzione scritta con il nostro linguaggio È necessario realizzare un linguaggio di programmazione che possa tradurre ciò che scriviamo nei termini del linguaggio macchina

Due scuole di pensiero Interprete Compilatore

Interprete La prima scuola preferisce scrivere un programma che riconosca le istruzioni nel linguaggio scelto e le esegua. Questo programma chiamato interprete legge un’istruzione dopo l’altra, la traduce e la esegue. Il programma da noi scritto non subisce nessuna trasformazione definitiva e l’interprete dovrà essere utilizzato ogni volta che si intende lanciare il programma.

Compilatore La seconda scuola preferisce preparare un programma che legga il nostro programma (contenuto in un file che verrà detto sorgente) e lo traduca una volta per tutte generando un file eseguibile in linguaggio macchina. Questo file sarà immediatamente comprensibile per l’elaboratore e sarà eseguibile a essere lanciato ogni volta che si riutilizzerà il programma.

Pregi e difetti dell’interprete Pregi: può essere più comodo nella fase di preparazione del software, in quanto si programma e si esegue nel medesimo ambiente. Nel caso di un errore potremmo andare direttamente nel punto sospetto ed effettuare nel punto sospetto ed effettuare la correzione. Difetti: in termini di efficienza del programma in quanto la necessità di tradurlo ogni volta ne rallenta inevitabilmente l’esecuzione.

Pregi e difetti del compilatore Pregi: il programma compilato essendo stato tradotto definitivamente sarà più veloce di un suo equivalente interpretato Difetti: tiene separati l’ambiente di programmazione da quello d’esecuzione . In caso di errore sarà necessario richiamare l’editor con cui abbiamo scritto il programma, aprire il file sorgente, correggerlo, ricompilarlo e eseguirlo.

I concetti chiave del programma Variabile: può essere considerato lo scaffale in cui fingiamo di riporre le nostre informazioni. Se oggetto della nostra operazione è una parola (telefono) dovremo preoccuparci di definire e utilizzare una variabile adatta a contenerla.

Pascal Var parola : string [30]; numero : integer; Ovvero abbiamo una variabile parola che è del tipo string (caratteri alfanumerici) lunga al massimo 30 caratteri. Abbiamo definito anche una variabile numero del tipo integer (solo numeri interi)

Caratteristiche della variabile Nella variabile numero non potremmo mai memorizzare la parola telefono e un eventuale carattere alfanumerico (1e 0) poiché questa caratteristica è invece determinata dalla variabile parola in quanto la presenza di string permette di contenere appunto dei caratteri alfanumerici ma non solo numeri

Se il programma è un algoritmo Come s’è detto varie volte un programma è la traduzione nei termini d’un linguaggio di programmazione del percorso disegnato da un algoritmo. Ora un algoritmo può essere costituito da una serie di istruzioni sequenziali (apri lo schedario, prendi la scheda), ma può anche chiedere di operare delle scelte (prendi la scheda che contiene la parola Ripellino).

Apri lo schedario, prendi una scheda Il primo tipo di operazioni può essere rappresentato da un linguaggio di programmazione come una serie di istruzioni da eseguire una dopo l’altra

Prendi la scheda che contiene la parola Ripellino Il secondo tipo richiede la selezione dell’istruzione da eseguire a seconda del verificarsi di certe condizioni. Questa condizione si può rappresentare tramite un diagramma di flusso.

Diagramma di flusso Es NO SI Leggo parola Parola= Ripellino

Lettura del Diagramma Leggo la variabile parola, il contenuto della variabile parola è uguale alla sequenza di caratteri Ripellino? Se la risposta è si allora esegui le istruzioni a cui porta il lato destro del grafo, se la risposta è no allora gira a sinistra.

In termini di linguaggio di programmazione If parola =‘Ripellino’ then writeln (‘Trovato’) If parola <> ‘Ripellino’ then writeln (‘Non trovato’) If parola = ‘Ripellino’ then writeln (‘Trovato’) else writeln (‘Non trovato’) Gli apici ‘’ prima e dopo il nome di Ripellino indicano al computer l’inizio e la fine di una sequenza di caratteri alfanumerici. Writeln è l’istruzione di stampa del Pascal. L’ultima riga va letta: se trovi ciò che cerchi allora fai questo altrimenti fai quest’altro.

Il cuore del linguaggio di programmazione La capacità di modificare il flusso sequenziale delle istruzioni che compongono un programma al verificarsi di condizioni precise. Ma se non trova ciò che è stato richiesto?

Il loop Una delle caratteristiche principali del computer oltre alla capacità di gestire grandi quantità di dati è quella di poter ripetere una stessa operazione un numero indefinito di volte fino al verificarsi di una determinata condizione. Per questo motivo nel diagramma di flusso di un programma viene racchiusa una serie di istruzioni in un ciclo (loop) che viene eseguito fino a che non venga verificata una certa condizione.

Esempio di loop While (parola <> ‘Ripellino’) or not (eof(archivio)) do begin readln (archivio, parola); End; If parola=‘Ripellino’ then writeln (‘Trovato’) else writeln (‘Non Trovato’);

While do? While…do è l’istruzione che apre il loop, begin e end marcano l’inizio e la fine delle istruzioni del ciclo, in questo caso una solamente, - parola <> ‘Ripellino’ - è la prima condizione di interruzione del loop, or è un operatore logico, not è un operatore di negazione, eof() è una funzione che restituisce true quando incontra la fine del file

Not eof? Not (eof(archivio))costituisce la seconda condizione di fine loop Readln è l’istruzione di lettura Parola è la variabile da leggere, Archivio è il file che contiene i nomi da scorrere.

L’end of file? Il programma seguiterebbe a scorrere il file archivio fino a trovare il nome cercato o fino a che non incontra l’end of file. Il loop si interrompe se la variabile parola è sicuramente uguale a ‘Ripellino’. Altrimenti se non trova la parola ricercata continua il ciclo.

Esempi di linguaggi di programmazione Interprete: BASIC Compilatore: C (linguaggio utilizzato per realizzare sistemi operativi)

Altra piccola distinzione Linguaggi procedurali Linguaggi dichiarativi

Linguaggi procedurale Nel caso di un programma, scritto con questo linguaggio, esso conterrà una serie di ordini dati sequenzialmente alla macchina che li dovrà eseguire

Linguaggi dichiarativi Un linguaggio dichiarativo svolge la funzione di descrivere, ovvero di dichiarare quali sono i dati del problema. Il computer analizzerà i dati e ne dedurrà la risposta da dare. I linguaggi dichiarativi sono più comodi per il programmatore e per l’utente, ma più faticosi per il computer che deve derivare le procedure da seguire dall’analisi del problema che gli viene sottoposto.

Esempi Linguaggi procedurali: Cobol, Pascal, Fortran, BASIC, C Linguaggi dichiarativi: PROLOG

Linguaggi orientati agli oggetti Nascono da due considerazioni: A) i programmatori si sono accorti che certe porzioni del programma possono essere utilizzate più volte, quindi è vantaggioso concepire in modo modulare o dei format i programmi B) nel costruire programmi modulari è spesso utile partire dagli oggetti dei quali il programma si occupa definendone le proprietà e comportamenti e stabilendo fra essi legami e gerarchie.

Facciamo un esempio Supponiamo di scrivere un programma per gestire la vendita delle automobili in un autosalone: Caratteristiche generiche di ogni auto (marca modello cilindrata prezzo ecc) verranno attribuite a un oggetto del nostro programma -- oggetto automobile -- che potremmo utilizzare ogni volta che parliamo di automobile, e che potremmo arricchire con nuove e specifiche caratteristiche a seconda per esempio se si tratti di auto usate o nuove. Possiamo aggiungere categorie oppure attribuire determinati comportamenti.

E nel S.O? La programmazione ad oggetti funziona particolarmente bene per realizzare programmi da utilizzare all’interno di un sistema operativo : icone finestre menù pulsanti

I linguaggi orientati agli oggetti C++ (evoluzione di C) Smalltalk Java