Fondamenti di Informatica

Transcript

Fondamenti di Informatica
Informatica
Varie Definizioni
1. “Scienza degli Elaboratori Elettronici”
Elettronici”
‰
Fondamenti di Informatica

(Lettere J-Z)
Introduzione
Computer Science
2.
“Scienza dell’
dell’Informazione”
Informazione”
‰
“Scienza della Rappresentazione e della
Elaborazione dell’
dell’Informazione”
Informazione”
Prof. Francesco Lo Presti
L’informatica studia le caratteristiche
dell’
dell’informazione e i modi di usarla,
immagazzinarla, trasportarla e manipolarla in
modo automatico
Introduzione
L’Informatica comprende:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
‰
Calcolatore
Metodi per la rappresentazione dell’
dell’informazione
Metodi per la rappresentazione delle soluzioni
Linguaggi di programmazione
Linguaggi di integrazione
Architettura dei calcolatori
Sistemi operativi
Reti di Calcolatori
Basi di Dati
Tecnologie Web
Algoritmi
…
Un calcolatore elettronico è una macchina
programmabile per la rappresentazione, la
memorizzazione, l’l’elaborazione e la trasmissione
delle informazioni
‰ Deve essere in grado di:
‰




‰
Due Anime


2
Tecnologica:
Tecnologica: I calcolatori elettronici ed i sistemi che li
utilizzano
Metodologica:
Metodologica: I metodi per la soluzione di problemi e la
gestione delle informazioni
Introduzione
Decomposizione


3
Eseguire istruzioni sui dati
Controllare il flusso di esecuzione
Memorizzare le istruzioni e i dati su cui operare
Interagire con gli utenti e gli altri sistemi
Hardware:
Hardware: Struttura fisica del calcolatore
Software:
Software: Insieme di programmi che consentono
all’
all’hardware di svolgere compiti utili
Introduzione
4
Programma e Programmazione
‰
Algoritmo
Programma


Sequenza di istruzioni che il computer esegue e di
decisioni che il computer prende per svolgere una certa
attività
attività
Istruzioni
9 estrarre un numero da una posizione della memoria
9 sommare due numeri
9 inviare la lettera A alla stampante
9 se un dato è negativo, proseguire il programma da una certa
istruzione anziché
anziché dalla successiva (decisione
(decisione))

‰
Si dice algoritmo la descrizione di un metodo di
soluzione di un problema che

Ogni programma svolge una diversa funzione, anche
complessa
‰
Programmazione

sia eseguibile
sia priva di ambiguità
ambiguità arrivi ad una conclusione in un
tempo finito
Un computer può risolvere soltanto quei problemi
per i quali sia noto un algoritmo
L’attività
attività di progettare e realizzare un programma
Introduzione
5
Cosa e’ un calcolatore?
‰
Quale tipo di problemi è possibile risolvere con un
computer?

9 impaginare testi o giocare a scacchi
‰
‰
Introduzione
6
Calcolatore Elettronico
“A device that computes, especially a
programmable electronic machine that performs
highhigh-speed mathematical or logical operations or
that assembles, stores, correlates, or otherwise
processes information”
information”
-- The American Heritage Dictionary of the
English Language, 4th Edition, 2000
‰
Macchina per l’l’esecuzione automatica di algoritmi

General Purpose:
Purpose: puo’
puo’ svolgere qualsiasi elaborazione di
cui sia noto un algoritmo risolutivo
Programma e’ un algoritmo espresso in un
linguaggio di programmazione
‰ Linguaggio macchina binario:
binario: l’l’insieme delle
istruzioni direttamente eseguibile dal calcolatore
‰ Istruzione Macchina
‰


operazione logico/aritmetica su dati o di trasferimento
dati
codificata in binario
9 Esempio 10000110010100000 istruisce il calcolatore di
effettuare una somma
‰
Introduzione
7
Programma eseguibile:
eseguibile: un algoritmo espresso in
Introduzione
linguaggio macchina
8
Modello di Von Neumann
Calcolatore Elettronico
Processore
Accetta in ingresso informazioni codificate in
forma digitale
2. Le elabora attraverso un programma memorizzato
3. Produce informazioni in uscita
1.
Dati
Programma
memorizzato in
esecuzione
Unità di
controllo
Computer
Bus
Introduzione
Dispositivi
di I/O
Interfaccia
di I/O
Interfaccia
di I/O
Memoria
Unità di
elaborazione
dati
Risultati
Dispositivi
di I/O
dati
indirizzi
controllo
9
Introduzione
Processore - Central Processing Unit (CPU)
Processore - Central Processing Unit (CPU)
Provvede all’
all’esecuzione delle istruzioni macchina
‰ Ciclo di Esecuzione
‰
Processore e’
e’ composto da due sottosistemi:
1. Unità
Unità di Controllo (Control) – Parte di Controllo
‰
1.
2.
3.
‰
10
Prelievo Istruzione dalla Memoria
Decodifica Istruzione
Esecuzione Istruzione

2.
Ogni Processore e’ caratterizzato da un proprio
linguaggio macchina
Controlla il sequenziamento e l’l’esecuzione delle istruzioni
generando i segnali di controllo
Unita’
Unita’ di Elaborazione (Datapath
(Datapath)) – Parte
Operativa

Esegue le istruzioni
ALU

Banco di Registri (Register
(Register File)

9 Esegue operazioni logico aritmetiche sui dati
9 Memoria interna CPU
9 Program Counter (PC)
– Indirizzo Prossima Istruzione
9 Instruction Register (IR)
– Codice Istruzione da eseguire
Introduzione
11
Introduzione
12
Processore - Central Processor Unit (CPU)
Il Bus
‰
La struttura di interconnessione più
più comune

Bus Controllo
Bus Interno CPU
ALU
PC
IR
Bus Dati
Unità di Elaborazione Registri
Bus Indirizzi


percorsi di comunicazione tra due o più
più dispositivi
mezzo di trasmissione condiviso
Usualmente di tipo broadcast
9 I dati sono visibili da tutte le unità
unità connesse
Processore
Unità di
controllo
Unità di Controllo
Bus
Introduzione




Volatile
RAM – Random Access Memory


Cella elementare di memoria può memorizzare solo
due valori:
valori: 0 o 1, cifra binaria (binary digit -> bit)
Tipicamente cella=1
cella=1 byte (8 bit)
nell’
nell’intervallo [0,1,…
[0,1,…,M,M-1]


Veloce (~10(~10-100ns) Costosa
Dimensioni contenute (fino a qualche Gigabyte)
E’ organizzata come una gerarchia di memorie
byte M-1
byte M-2
M dimensione della memoria
La memoria e’ vista come un vettore di byte
Memoria
‰ La CPU (ma non solo) accede alle informazioni in
scrittura/lettura tramite indirizzo della cella

Indirizzi a m bit: spazio di indirizzamento 2m
9 Non necessariamente M= 2m
‰ Operazioni:
Operazioni: Lettura/Scrittura
Memoria Secondaria:
Secondaria: Dischi,
Dischi, CD, etc..

14
‰ Ogni locazione e’ associata ad un indirizzo
9 Cache di primo e secondo livello…
livello…
‰
Introduzione
composte da un numero fisso di bit
Contiene istruzioni/dati dei programmi in esecuzione
9 Memoria ad accesso casuale
– Tempo di accesso costante
9 SRAM, DRAM, etc.

dati
indirizzi
controllo
‰ Composta di celle,
celle, o locazioni,
locazioni, a loro volta
9 …in formato binario

Interfaccia di
I/O
La Memoria Centrale
Memoria Primaria:
Primaria: Memoria Centrale

Interfaccia di
I/O
13
La Memoria
‰
Dispositivi di
I/O
Memoria
Unità di
elaborazione dati
Segnali di Controllo
Dispositivi di
I/O

Memoria di lungo periodo - non volatile
Tempo di accesso maggiori (~ms e piu’
piu’), economica
Introduzione
15

Per ragioni di efficienza le operazioni di
lettura/scrittura vengono effettuate per gruppi di
byte detti parola (word)
1 parola=
parola= 1,2,4,8 byte
byte 1
byte 0
8 bit
Introduzione
16
Software
‰
Il Sistema Operativo
Programmi che vengono eseguiti dal sistema

‰
Software di base
9 Sistema Operativo

Software Applicativo
9 Word Processor
Insieme (complesso) di programmi
‰ Organizzazo a strati
‰

Strato software che opera sopra l’l’hardware e
gestisce l’l’elaboratore

Hardware
‰
Software di Base
Funzioni



Ciascuno con funzionalità
funzionalità di livello più
più alto rispetto a
quelli sottostanti

‰
Ö Concetto di Macchina Virtuale



Introduzione
18
Alcune Domande Fondamentali
Risolvono problemi specifici degli utenti:

Il SO realizza una “macchina virtuale”
virtuale”
17
Programmi Applicativi

Processore: Sistema Multiutente
Memoria Centrale: Memoria Virtuale
Memoria Secondaria: File System
Gli utenti vedono l’l’elaboratore solo tramite il
Sistema Operativo

‰
Gestione delle risorse disponibili
9 Processore, Memoria, Dischi, etc,
etc,
Software Applicativo
Introduzione
Windows, Linux,
Linux, MacOs X, Symbian,
Symbian, etc.
Quali istruzioni esegue un eleboratore?
eleboratore?
‰ Quali problemi puo’
puo’ risolvere un eleboratore?
eleboratore?
‰ Esistono problemi che un elaboratore non puo’
puo’
risolvere?
‰ Che ruolo ha il linguaggio di programmazione?
‰
Word processor
Fogli elettronici
Database
Giochi
Etc.
9 Scritti in linguaggi di programmazione di alto livello
‰
Ambiente di Programmazione

L’insieme dei programmi che consentono la scrittura, la
verifica e l’l’esecuzione di nuovi programmi
9 Fase di sviluppo
Introduzione
19
Introduzione
20
Problemi da Risolvere
Risoluzione di Problemi
I problemi che siamo interessati a risolvere sono di natura
molto varia:
1. Trovare il maggiore fra due numeri
2. Dato un elenco di nomi e numeri di telefono, trovare il
numero di una data persona
3. Problema del lupo, della capra e del cavolo
4. Dati a e b, risolvere l’
l’equazione ax+b=0
5. Stabilire se una parola precede alfabeticamente un’
un’altra
6. Ordinare una lista di elementi
7. Creare, alterare suoni
8. Analizzare e riconoscere immagini
9. Salvare e recuperare delle informazioni
10. Trasmettere informazioni
…
‰
La descrizione di un problema non fornisce (in
generale) un metodo per risolverlo
‰
Non tutti i problemi sono risolvibili attraverso l’l’uso
del calcolatore: Esistono classi di problemi per le
quali la soluzione automatica non è proponibile. As
esempio:
‰
Introduzione


‰
‰
‰
Introduzione
22
Esempio di Problema
Un algoritmo è una sequenza finita di mosse/azioni
che risolve in un tempo finito una classe di
problemi
‰
‰
1.
2.
L'esecuzione delle azioni nell'ordine specificato
dall'algoritmo consente di ottenere, a partire dai
dati di ingresso, i risultati che risolvono il
problema
3.
4.
Esecutore è una macchina astratta capace di
eseguire le azioni specificate dall’
dall’algoritmo

Noi considereremo sui problemi che ammettono un
metodo risolutivo Ö Funzioni Calcolabili
21
Algoritmo
‰
Se il problema ammette infinite soluzioni
Per problemi per i quali non è stato trovato un metodo
risolutivo
5.
Problema: Come si cucina un uovo al burro?
Soluzione
Far sciogliere in un tegamino 20g. di burro
Quando il burro assume un colore dorato rompere
il guscio dell’
dell’uovo
Far scivolare delicatamente nel tegamino albume e
tuorlo
Rosolare
Quando l’l’albume è ben rappreso spegnere il fuoco
Il calcolatore è un caso particolare di esecutore
Introduzione
23
Introduzione
24
Esempio di Problema
‰
‰
1.
2.
3.
4.
Algoritmi e Programmi
Problema: Risolvere l’l’equazione ax+b=0
Soluzione
leggi i valori di a e b
calcola –b
dividi quello che hai ottenuto per a e chiama x il
risultato
stampa x
‰ Passi per la risoluzione di un problema:



individuazione di un procedimento risolutivo
scomposizione del procedimento in un insieme ordinato di azioni
Ö Algoritmo
rappresentazione dei dati e dell’
dell’algoritmo attraverso un
formalismo comprensibile dal calcolatore (linguaggio di
programmazione) Ö Programma
Metodo di
Risoluzione
Linguaggio di
Programmazione
Inizio
Dichiarazione: a, b, w, z
contengono numeri interi
Prodotto di
due numeri
naturali
Leggi a e b
w ← a;
z ← 0;
Sì
z←z +b
w←w–1
w>0?
No
Scrivi
Fine
Introduzione
25
Dati e istruzioni
‰
Tipi di dati




‰
Numeri naturali o interi o reali
Caratteri alfanumerici
Dati logici o booleani
Array o vettore di n elementi
Istruzioni



Operazioni di Input/Output
Operazioni AritmeticoAritmetico-logiche
Strutture di Controllo
Problema
Algoritmo
main()
main(){ {/*
/*prodotto
prodottoCC*/
*/
unsigned
unsignedint
inta,a,b;b;
int
w,
z;
int w, z;
scanf("%d
scanf("%d%d",&a,&b);
%d",&a,&b);
zz==0;0;
ww==a;a;
while
while(w
(w> >0)
0){ {
zz==zz++b;b;
ww==ww––1;1;
}}
printf("%d",
printf("%d",z);
z);
}}
Programma
Introduzione
26
Algoritmi e Variabili
‰
Gli algoritmi sono parametrici:

(1, -2, 0.34)
(A, B, ..)
(Vero, Falso)
Falso)
({1,2,3})


(es. leggi, scrivi)
(es. max = A + B)
(es. SE, RIPETI )
Introduzione
27
producono un risultato che dipende da un insieme di dati
di partenza;
descrivono la soluzione non di un singolo problema, ma di
una intera classe di problemi strutturalmente equivalenti.
Esempi:
9 l’algoritmo per la moltiplicazione di due numeri specifica
come effettuare il prodotto di tutte le possibili coppie di
numeri;
9 l’algoritmo per la ricerca di un libro nello schedario della
biblioteca vale per tutti i possibili libri;
9…
Introduzione
28
Algoritmi e Variabili
‰
Le istruzioni dell’
dell’algoritmo
fanno riferimento a variabili




‰
‰
Contenitore per dati
Astrazione delle cella di
memoria

Memoria
‰
x
8


y
4

a
3

29
assegna a una variabile il risultato ottenuto dalla
valutazione di un’
un’espressione
circ ← 2 × r × pi
9 il risultato dell’
dell’espressione 2 × r × pi viene calcolato
utilizzando i valori contenuti nelle variabili r e pi e il
risultato viene poi assegnato alla variabile circ;
circ;

Introduzione
30
Introduzione
32
Rappresentazione degli algoritmi
in istruzioni di assegnamento combinate con
espressioni

introdurre nel contenitore identificato dal nome della
variabile il valore specificato a destra dell’
dell’assegnamento;
Esempi:
r ← 35 (assegna 35 alla variabile il cui nome è r),
pi ← 3,14
…
6
totale
Uso delle Variabili

l’esecutore usa il valore contenuto nelle variabili per
calcolare il risultato dell’
dell’espressione,
per esempio var1 + var2 × var3 oppure var1 / var2 – var3,
…
in istruzioni di assegnamento/assegnazione

Introduzione
‰
All’
All’interno di espressioni,
espressioni,

Somma x ad y
Se a>o allora
…
Come in matematica una variabile è
un sinonimo per indicare un dato
Variabile:
Variabile: Nome associato ad
una locazione di memoria

‰
Uso delle Variabili
la stessa variabile può comparire in entrambi i lati
dell’
dell’istruzione di assegnamento
9k ← k + 1
9 il valore contenuto in k viene utilizzato per trovare il valore
dell’
dell’espressione k + 1 che viene memorizzato come nuovo
valore di k.
Introduzione
31
‰
Linguaggio naturale
‰
Diagramma a blocchi
‰
Pseudo codice
‰
Linguaggio di programmazione
Rappresentazione degli algoritmi
‰ Linguaggio Naturale




Diagrammi di flusso
‰ Diagramma di flusso
Inizio
Sollevare il ricevitore
Attendere il segnale di
linea libera
Comporre il numero
…
START
START
END
END
I/O
I/O
PROCESS
PROCESS
Inizio
Fine
Operazioni di
ingresso/uscita
Elaborazione
Leggi
xey
d ←x – y
Sì
d>0?
No
Sì
Scrivi
“max è x”
Scrivi
“max è y”
Predicato
Predicato
No
SUB-PROCESS
Selezione a
due vie
Fine
Introduzione
Sottoprogramma
33
Esempio
Introduzione
34
Somma dei primi N numeri naturali
Esempio:
dati in ingresso due numeri
x e y, si calcoli e stampi il
maggiore.
Inizio
Inizio
Inizio
Leggi n
Leggi
xey
ris ← 0
i←0
d ←x – y
Sì
d>0?
Scrivi
“max è x”
Leggi n
No
No
ris ← ris + i
i ← i +1
Scrivi
“max è y”
i>n?
ris ← n
No
Sì
Scrivi
ris
Fine
n ← n –1
ris ← ris + n
n<1?
Sì
Scrivi
ris
Fine
Fine
Introduzione
35
Introduzione
36
Somma dei primi N numeri naturali
Inizio
1
Leggi n
2
ris ← 0
i ←0
3
4
No
ris ← ris + i
i ← i +1
i>n?
Sì
5
Scrivi
ris
6
Fine
T posiz. n
??
t01 c
4
t02 d
4
t03 e
4
t04 f
4
t05 e
4
t06 f
4
t07 e
4
t08 f
4
t09 e
4
t10 f
4
t11 e
4
t12 f
4
t13 e
4
t14 g
4
t15 h
i
??
??
0
0
1
1
2
2
3
3
4
4
5
5
5
Somma dei primi N numeri naturali
??
??
0
0
0
0
1
1
3
3
6
6
10
10
10
‰ Esiste infatti una soluzione analitica:
note
ris
n × (n + 1) / 2
‰ L’algoritmo è molto più
più semplice (il numero
di istruzioni da eseguire è costante e non
dipende dal valore di n).
Variabili non ancora definite
Letto il valore 4 e inserito in n
i < n ⇒ posiz. 4
i < n ⇒ posiz. 4
i < n ⇒ posiz. 4
T posiz.
t01
c
t02
d
t03
e
t04
f
i = n ⇒ posiz. 4
i > n ⇒ posiz. 5
N
ris
??
4
4
4
??
??
10
10
note
Variabili non ancora definite
Letto il valore 4 e inserito in n
Calcolato il risultato 10=4×5/2
Stampato risultato (10)
3
Scrivi ris
4
Fine
Stampato risultato (10)
37
Introduzione
38
Programmi e Programmazione
Inizio
‰
Programma:
Programma: È la descrizione di un algoritmo in un
particolare linguaggio di programmazione.
‰
Quali “parole chiave”
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.
Dichiarazione
: a, b, w, z
contengono numeri interi
Leggia e b
‰
‰
w ← a;
z ← 0;
z ←z + b
w ←w – 1
Leggi n
ris ← n × (n + 1) / 2
Prodotto di due numeri naturali
Sì
1
2
i < n ⇒ posiz. 4
Introduzione
Dati
a, b interi positivi
w, z interi
Risoluzione
leggi a e b
z ← 0
w ← a
finché w > 0 ripeti
z ← z + b
w ← w – 1
fine ciclo
scrivi z
fine
Inizio
w > 0?
‰
‰
No
Scrivi z
Fine
Introduzione
39
Introduzione
40
Linguaggi di Programmazione
Linguaggi di Programmazione
Ogni linguaggio è caratterizzato da:
1. sintassi:
sintassi: l’l’insieme di regole formali per la
scrittura di programmi in quel linguaggio, che
dettano le modalità
modalità per costruire frasi corrette
nel linguaggio stesso.
2. semantica:
semantica: l’l’insieme dei significati da attribuire
alle frasi (sintatticamente corrette) costruite nel
linguaggio.
‰ Esistono diversi tipi di Linguaggi di Programmazione
‰
‰ Linguaggi macchina e linguaggi assembler

‰ 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”
positivo”)
else print (“valore negativo”
negativo”);

‰ Linguaggi dichiarativi (logici - PROLOG, funzionali - LISP)

Una frase può essere sintatticamente corretta e
tuttavia non aver alcun significato!
‰ Lo stesso può accadere per una istruzione.
‰
Introduzione



Introduzione
42
Linguaggi di Programmazione e Astrazione
‰ Esistono linguaggi a vari livelli di astrazione
Linguaggi orientati agli oggetti (C++, Java,
Smalltalk,
Smalltalk, ….)

un programma è la definizione di una funzione o l’l’elenco delle
regole logiche che portano a verificare una condizione.
41
Linguaggi di Programmazione
‰
ogni azione è indicata in codice binario o con operazioni molto
semplici e “rudimentali”
rudimentali” : ADD X, Y oppure STORE A
‰ Linguaggio Macchina
0100 0000 0000 1000
0100 0000 0000 1001
0000 0000 0000 1000
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.
Introduzione
‰ Linguaggio Assembler
LOAD X
ADD Y
STORE Z
Sequenze di istruzioni macchina in
binario direttamente eseguibili dal
processore
Istruzioni hanno corrispondenza 1 a 1
con quelle macchina, ma vengono
espresse con nomi simbolici
‰ Linguaggio di Alto Livello
main ( ) {
int a=0;
cout << a+5;
return 0;
}
43
Indipendente dalla macchina.
Astrazione dati
Introduzione
44
Da un linguaggio di programmazione ad alto
livello al linguaggio macchina
‰
Il processo di traduzione completo
swap(int v[], int
k)
Un linguaggio di programmazione ad alto livello

{
Offre astrazioni notevoli
int temp;
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
9 Variabili, tipizzazione dei dati
9 Procedure, funzioni
9 Programmazione ad oggetti
9 Gestione di eccezioni


‰
}
Programma in linguaggio
ad alto livello
Aumenta la produttività
produttività del programmatore
Permette al programma di essere indipendente dal
computer sul quale viene sviluppato

‰
10001100011000100000000000000000
10001100111100100000000000000100
10101100111100100000000000000000

10101100011000100000000000000100
45
Introduzione
00000011111000000000000000001000
46
Il Compilatore
‰
Il programma che effettua la traduzione prende il nome
di compilatore
Il programma risultante puo’
puo’ essere eseguito
direttamente sul calcolatore
Compilatore
C++/Assembler
Il programma risultante PLM
equivalente a PL1 ma scritto
nel linguaggio LM
ProgrammaLM
Computer
Dati
L’interprete legge il codice del programma da eseguire e
ne simula l’esecuzione,
esecuzione, generando i relativi risultati
L’interprete e’, in sostanza,
sostanza, un simulatore di un
calcolatore virtuale il cui linguaggio macchina e’ il
linguaggio interpretato
Introduzione
Il Compilatore sostituisce a ogni istruzione del
programma PL1, scritto nel linguaggio L1, una
sequenza di istruzioni scritte nel linguaggio
macchina LM
ProgrammaC++

L’interpretazione e’ un processo di esecuzione
indiretta di un programma ad opera di un
programma detto interprete

assemblatore
00000000100011100001100000100001
La compilazione e’ un processo di traduzione che,
che, a
partire da un programma scritto in linguaggio
simbolico,
simbolico, ne genera una versione equivalente in
assembler/linguaggio
assembler/linguaggio macchina

muli $2, $5, 4
add $2, $4, $2
lw $15, 0($2)
lw $16, 4($2)
sw $16, 0($2)
sw $15, 4($2)
jr $31
00000000101000010000000000011000
Compilazione ed Interpretazione

Programma in
linguaggio assembler
(MIPS)
traduce da un linguaggio di programmazione ad alto livello
al linguaggio assembler
Talvolta traduce direttamente da linguaggio di
programmazione ad alto livello a linguaggio macchina
Introduzione
‰
compilatore
Programma in linguaggio
macchina binario (MIPS)
Programma compilatore

swap:
ProgrammaLM
Risultati
Computer
47
Introduzione
48
L’interprete
‰
Interpretazione o compilazione?
Per eseguire PL1, scritto in L1, l’interprete,
interprete, scritto
in LM, analizza – passo passo - ogni istruzione da
eseguire di PL1 e ne realizza l’effetto,
effetto, eseguendo
una sequenza di istruzioni del linguaggio di LM ad
essa equivalenti
Ogni linguaggio puo’
puo’ essere sia interpretato che
compilato

‰
Interprete C++
Il C, C++ sono normalmente compilati
L’interpretazione e’ piu’
piu’ lenta dell’
dell’esecuzione
diretta


Programma C++
Dati
‰
Migliore diagnostica
Maggiore portabilita’
portabilita’
9 L’interprete,
interprete, se scritto in un linguaggio diffuso,
diffuso, puo’
puo’ essere
reso piu’
piu’ facilmente disponibile su un nuovo calcolatore
Risultati
‰
Talvolta,
Talvolta, compilazione ed interpretazione sono
combinate


Computer
Per combinare i vantaggi
Si compila in un linguaggio intermedio che poi e’
e’
interpretato
9 Approccio utilizzato per l’esecuzione dei programmi in Java
Introduzione
49
Algoritmi: Esercizi
‰
50
Algoritmi: Esercizi
L’esecutore deve leggere una sequenza di numeri
naturali (cioè
(cioè interi positivi maggiori di zero) e
calcolare (per poi stamparlo) il minimo

Introduzione
‰
la sequenza di valori si intende finita quando l’l’utente
inserisce un valore negativo
L’esecutore deve leggere una sequenza di numeri
naturali (cioè
(cioè interi positivi maggiori di zero) e
calcolare (per poi stamparli) il massimo, minimo e la
media

la sequenza di valori si intende finita quando l’l’utente
inserisce un valore negativo
Esempio
‰ Data la sequenza 3, 67, 2, 41,7,41,7,-1, l’l’esecutore
stampa “il minimo è 2
‰
Introduzione
51
Introduzione
52