ELECTRONIC
DIGITAL COMPUTER:
elabora
e memorizza informazioni utilizzando segnali digitali (a due stati,
acceso spento, chiuso aperto) che rappresentano cifre binarie;
formato da:
memoria →
immagazzina informazioni
CPU
(processore in grado di elaborare)
tutti i comandi sono
codificabili come sequenze di 0 e 1 (sia istruzioni che dati)
es.
Codifica istruzioni:
|
Direzione
|
|
|
N. passi
|
|
|
N
|
00
|
|
1
|
0
|
|
S
|
10
|
|
2
|
1
|
|
E
|
01
|
|
|
|
|
W
|
11
|
|
|
|
|
Comando
|
Posizione
|
|
---
|
000000
|
|
101
|
010000
|
|
011
|
010010
|
|
100
|
011010
|
|
011
|
011100
|
linguaggio macchina
(LM):
es.
001011101011010, ADD
(linguaggio assembler = ragiono con “soprannomi”)
linguaggio di alto
livello (HLL) = assegno un nome a una sequenza di istruzioni
es.
voto = (scritto +
pratica) / 2
equivale a (in
linguaggio macchina):
COPY scritto > A
ADD A, pratica > A
SHIFTRIGHT A, 1
COPY A > voto
per passare da alto
livello a linguaggio macchina ci sono 2 possibilità:
interprete
= esegue istruzione per istruzione i comandi corrispondenti (basic =
linguaggio interpretato); non produce un nuovo file
compilatore
= programma che da un listato in HLL genera un eseguibile in
linguaggio macchina (nuovo file)
es. C è
un linguaggio compilato:
Java è un
misto:
listato →
compilazione → bytecode (programma in linguaggio
macchina ma generico) → interpretazione (in base alla specifica
macchina)
non dipende dalla
singola macchina (comodo per la rete = basta scaricare il bytecode)
come scegliere un
linguaggio:
se un linguaggio
mi permette di rappresentare l’iterazione indefinita
(while) e la scelta (if then else) ha lo stesso
potere espressivo degli altri linguaggi
ogni ambito ha il
suo linguaggio più conveniente
TIPI DI LINGUAGGI DI PROGRAMMAZIONE:
|
dichiarativi = enfasi sulla logica,
ossia enfatizzano il cosa fare piuttosto che il come farlo
|
ML, Prolog, Lisp
|
|
procedurali = enfasi su quali sono le
istruzioni da eseguire
|
Pascal, C
|
|
orientati agli oggetti = enfasi sui dati
(esempio dell’usciere, paragonato ad una appendice del
programma, le funzioni vengono trasferite agli oggetti)
|
Java, C++, Visual Basic
|
|
legati al web
|
XML, PHP, Perl, Python
|
PROGRAMMA
un
programma, scritto in un certo linguaggio di programmazione,
specifica una computazione (ciò che deve essere eseguito) che
a partire da un eventuale insieme di dati in ingresso modifica la
memoria; se la computazione termina allora può fornire in
risposta un risultato
=
costrutto sintattico che può modificare la memoria
STRUTTURA COMPUTER
CPU
memoria
disco
bus
memoria
= sequenza finita di locazioni (o celle) ognuna delle quali è
un dispositivo che può assumere diversi stati discreti (=
chiaramente distinti; es. interruttore = dispositivo 2 stati
discreti)
le celle sono
costituite da locazioni elementari ognuna delle quali ha 2 stati
possibili (0 o 1)
se associamo agli
n possibili stati di una cella un insieme di n elementi diciamo che
lo stato che corrisponde a un certo elemento rappresenta
quell’elemento
es.
se abbiamo la
rappresentazione del colore dei capelli degli alunni di una classe, i
concetti di rosso, biondo, nero, castano non sono in memoria, ma è
in memoria un valore che li rappresenta (es. biondo potrebbe essere
rappresentato da 01)
es.
1000000110000000000000000000000
se è un intero
allora è 1086324736
se è un float
allora è 6.0
una cella di memoria
come dispositivo fisico può essere oggetto di due operazioni
(non può essere soggetto di un’operazione):
lettura =
restituisce lo stato della cella
scrittura =
cancella vecchio contenuto (stato) + scrive nuovo stato (non sono
operazioni sequenziali)
una locazione di
memoria ha sempre un valore (gli stati sono fissi, interruttore a
metà)
|