Teoria e Applicazioni
delle
Macchine Calcolatrici
a.a. 2000/01
Giorgio Delzanno
Informazioni utili

Giorgio Delzanno
 DISI (Dip. di Informatica)
 Via Dodecaneso 35, Genova
 Tel. 010-3536638
 E-mail: [email protected]
 http://www.disi.unige.it/person/DelzannoG
Orario

Martedì 14-16
– Polo didattico Aula 2

Mercoledì e Giovedì 10-12:
– DISI Aula 710(?) – via Dodecaneso 35
– in futuro: laboratorio PC ...spero!

Potete usare il Laboratorio al Polo didattico
(fondi)
– Lu-Ma-Gio-Ve 14-17

La settimana prossima NON ci sarà lezione
Scopi del corso

Aspetti fondazionali
– Cos’è un elaboratore
– Cos’è un linguaggio di programmazione
– Cos’è un algoritmo

Aspetti pratici
– Utilizzo di un elaboratore
– Utilizzo di software applicativo
– Esercizi di programmazione
Contenuti 1

Architettura dei Sistemi Informatici
–
–
–

Elaboratori
Memoria
Periferiche
Sistemi Operativi
–
–
–

Processi
Gestione della memoria
Windows
Reti di Calcolatori
–
Internet, Posta Elettronica, Web
Contenuti 2

Formattazione Testi
– Word

Elementi di Programmazione:
– Visual Basic

Fogli Elettronici
– Excel

Gestione Dati
– Access SQL
Testi di riferimento

Istituzioni di informatica Ceri-Mandrioli
McGraw-Hill

Manuli Microsoft (Windows, word, ecc)
 Dispense on-line (sul web) e fotocopie
 Lucidi
Esame

Esercitazione pratica in laboratorio
 Orale o Scritto
Informatica?

Scienza della rappresentazione e
dell’elaborazione dell’informazione
ovvero
 Studio degli algoritmi che descrivono e
trasformano l’informazione
Algoritmo?

Sequenza di passi per risolvere un
determinato problema
 Calcolatore = Esecutore di algoritmi
 Gli algoritmi sono descritti tramite
programmi scritti in linguaggi ad alto livello
e poi tradotti in linguaggio macchina
Algoritmo

Concetti fondamentali:
– Correttezza = l’algoritmo risolve il problema in
modo completo (spesso occorre provare la
correttezza manualmente usando tecniche
matematiche)
– Efficienza = lo risolve nel modo più veloce
possibile (esistono criteri matematici di
valutazione)
Esempio: potenza







Problema: Calcolare a elevato alla n (a^n)
Utilizziamo le variabili N, Ris
Inizialmente Ris=1 e N=n
Algoritmo:
Fino a che N>0
Calcola Ris*a e memorizzalo in Ris
Decrementa N
Correttezza:
Al termine Ris=a^n
Linguaggi di Programmazione
Linguaggi per esprimere in maniera rigorosa un
algoritmo
 Linguaggio macchina (seq. Istruzioni)
 Linguaggi ad alto livello (vicini al ling. naturale)
– Esempi:




Pascal
C e C++
Java
Basic
Esempio in Pseudo Pascal
Program potenza;
Integer Ris,N,A;
Read(N);Read(A);
Ris=1;
While (N>0) do
Ris=Ris*A;
N=N-1;
Print(Ris);
Esempio

Il precedente programma va tradotto in linguaggio
macchina (comprensibile all’elaboratore), i.e.,
viene compilato in sequenze di istruzioni
 Quando le istruzioni vengono eseguite, il
programma prende dati in ingresso (valori iniziali
di N e A) attraverso la tastiera (input) e poi stampa
il risultato sul video (valore finale di Ris) (output)
 In generale un programma può essere visto infatti
come una funzione da input ad output...
Utilizzo di un elaboratore

Come utente:
– Uso software applicativo esistente per creare documenti
e interfacce grafiche, effettuare calcoli, navigare in rete

Come sviluppatore:
– Creo nuovi programmi sullo strato del software
esistente


Nuovi programmi applicativi
Nuovi programmi di sistema (cioè che fanno funzionae il
calcolatore)
Architettura dei Sistemi
Informatici

Sistemi Informatici: PC, Rete di Calc., ...
 Architettura: insieme delle componenti del
sistema, descrizione delle loro funzionalità
e della loro interazione
 Suddivisione principale:
– Hardware
– Software
Hardware

Unità di Elaborazione (Processore o CPU):
– Svolge le elaborazioni
– Coordina il trasferimento dei dati
– Cioè ‘esegue’ i programmi

Memoria Centrale
– Memorizza dati e programmi per l’elaborazione
– Volatile
– Accesso rapido
– Capacità limitata
Hardware

Memoria Secondaria (es. Harddisk,floppy)
– Grande capacità
– Persistente
– Accesso piu lento della RAM

Unità Periferiche
– Interfaccia verso l’esterno
– Terminali (tastiera, video)
– Stampanti
Hardware

Bus di Sistema
– Collega le altre componenti
 RAM
 Memorie Secondarie
 Periferiche
– Insieme di collegamenti di vario tipo
Esempi di S. I. :
Personal Computer

Contenitore con
– CPU, RAM
– Memoria Centrale
 Fisso
 Unità per Dischetti/CD

Monitor
 Disco Tastiera
Altri Sistemi Informatici

Workstation
– Calcolatore con elevate prestazioni

Mini-computer
– Servono reti di terminali con pochi utenti

Main-frame
– Servono reti di terminali con centinaia di utenti
Altri Sistemi Informatici

Reti di Calcolatori
– Reti Locali: collegano terminali vicini tra loro; i
terminali usufruiscono di servizi quali
stampanti di diverso tipo, memoria di massa,...
– Reti Geografiche: collegano dei calcolatori
(detti) host a medio-grandi distanze; ad esempio
possono collegare diverse reti locali tra loro
Software

Software di base:
– Dedicato alla gestione dell’elaboratore
– Esempio: sistema operativo

Software applicativo:
– Dedicato alla realizzazione di specifiche
applicative
– Esempio: programmi per scrittura, gestione
aziendale, navigazione su internet, ecc
Sistema Operativo

Rende la componente hardware facile da usare
 Fornisce funzionalità ad alto livello agli utenti
 Ad esempio:
– organizza la memoria di massa
– gestisce comandi immessi dall’utente quali ‘Esegui un
programmq’, ‘Mostra i dati su video’, ecc

Se il sistema è multi-utente deve gestire le risorse
disponibili cercando di soddisfare tutti gli utenti
 Esempi: MS DOS, OS 2, Windows, Unix
Software Applicativo: Esempi

Video Scrittura: per costruire e testi e
definire formati di stampa
 Agende elettroniche: indirizzario, calendari
 Posta Elettronica: per comunicazione
 Fogli elettronici: per elaborazioni contabili
 Database: sistemi per la gestione di dati
Esempi di Applicazioni

Calcolo Numerico: statistiche, ecc
 Gestione Aziendale: banche, assicurazioni,
 Telematica: bancomat, ecc
 Automazione industriale:, robotica, ecc
 Internet: commercio virtuale, ecc
Architettura dei calcolatori

Per capire come utilizzare software
appicativoe progettarne di nuovo occorre
capire come funziona la componente
Hardware.
 Vedremo
– Cenni di rappresentazione dei dati
– Circuiti per operazioni su dati
– Struttura di un calcolatore
Rappresentazione dei dati

Si utilizzano standard internazionali per
risolvere problemi di compatibilità tra
calcolatori di tipo e marca diversi
 Vedremo brevemente:
– Codifica dei numeri
– Operazioni tra numeri attraverso circuiti logici
– Codifica di caratteri e immagini
Codifica dei numeri

Gli elaboratori utilizzano la codifica binaria
(cioè con 0 e 1) dell’informazione
 Perché solo due simboli?
– differenti tensioni elettrici, polarità magnetiche, ...
– Riduce errori (ad es. causati da rumore nei segnali)

Unità elementare di informazione:
bit interpretato come 0 o come 1
 Unità derivata: byte = 8 bit
Codifica dei numeri

Esempio: 13 può essere espresso in
funzione delle potenze di 2 come:
13 = 1 x 8 + 1 x 4 + 0 x 2 + 1 x 1
 Cioè può essere rappresentato dalla
sequenza di bit
1
1
0
1
Codifica dei numeri

Quindi
– Numero = sequenza di bit (codifica in base 2)
– Con K bit si rappresenta al max 2^K-1

Esempi:
– 2 = sequenza 1 0
– 3 = sequenza 1 1
– 4 = sequenza 1 0 0
.......
Operazioni tra numeri

Ad esempio: somma
5=1x4+0x2+ 1 x1
2=0x4+1x2+ 0 x1
_____________________
7=1x4+1x2+1x 1
 Esprimibile come operazione tra bit
Operazioni logiche

Operazioni logiche: AND, OR, NOT, ...
–
–
–
–

0 = falso, 1=vero
X AND Y = 1 sse X=1 e Y=1
X OR Y = 1 sse X=1 oppure Y=1
NOT X = 1
sse X = 0
Circuiti logici: composizione degli operatori che
trasformano ingressi (input) in uscite (output)
 Cioè un circuito definisce una funzione
f: input  output
 Input, output = sequenze di bit
Circuiti logici
X
Y
Z
OR
X or Y or Z
OR
Riassumendo...

Numeri = codificati come sequenze di bit
 Operazioni = operazioni bit a bit
 Funzioni complesse = circuiti
 Hardware = implementazione fisica dei
circuiti logici
 Hardware = fornisce operazioni primitive
che vengono utilizzate per definire
applicazioni attraverso programmi
Codifica di numeri reali ecc

Reali: si utizzano codifiche quali
– Floating point
– Fixed point

Interi: si utilizzano codifiche quali
– Bit di segno
– Complemento a 1 e a 2
Codifica caratteri

Codifica ASCII: associando un simbolo
dell’alfabeto ad ogni numero possiamo
codificare tutte le lettere
– a-z A-Z 0-9
usando 7 bit (cioè in un byte)!!
 Esempio: 00000101 rappresenta la lettera
‘c’
Codifica di immagini

Immagini = sequenze di bit!
 L’immagine viene digitalizzata cioè rappresentata
con sequenze di pixel
 Ogni pixel ha associato un numero che descrive un
particolare colore (o tonalit di grigio)
 Inoltre si mantengono la dimensione, la
risoluzione (numero di punti per pollice), e il
numero di colori utilizzati
Com’è fatto un elaboratore?

Elaboratori basati sulla
Architettura di Von Neumann
che consiste di:
– Un’unità di Elaborazione (CPU)
– Memoria Centrale (RAM) per istruzioni e dati
memorizzati come sequenze di dati
– Periferiche
– Bus di Sistema
Programmi e dati

I programmi (seq. istruzioni) e i dati sono
memorizzati in memoria di massa (lenta)
 Per essere eseguito, un programma deve
essere caricato in memoria centrale (veloce)
 Occorre anche allocare spazio per i dati
utilizzati dal programma (es. Variabili
N,Ris) in memoria centrale
Come funziona l’elaboratore?





Un programma viene caricato in memoria centrale
Si alloca lo spazio per i dati necessari al
programma
La CPU estrae le istruzioni e dati dalla memoria
centrale, le decodifica e le esegue utilizzando
registri interni (accesso veloce)
L’esecuzione può comportare il trasferimento di
dati in input e output tra memoria centrale e
periferiche attraverso il bus di sistema
L’esecuzione viene scandita dal clock di sistema
Memoria Centrale

Organizzata come una tabella di celle
– Cella = parola di memoria (sequenza di byte)
– Es. Memoria da 16 bit (2 byte), 32 bit, 64 bit

Indirizzo di memoria = posizione relativa alla
prima cella
 La CPU mantiene due registri per gestirla:
– Registro di indirizzamento (RI) = serve per recuperare
le parole di memoria
– Registro dati (RD) = mantiene dati input e output
Funzionamento Memoria
MEM
RI
RD
REG.INDIRIZZI
K bit
REG. DATI.
16 bit
MEMORIA: 2^ K-1
parole da 16 bit
Tipi di Memoria

Memoria RAM (Random Access):
– Volatile, veloce, utilizzata per dalla CPU

Memoria ROM (Read only):
– Si può solo leggere, per operazioni critiche

Memoria EROM, EPROM:
– Cancellabili, cancellabili e programmabili

Memoria di Massa:
– Persistente, più lenta
Bus di sistema

Collegamento tra le varie componenti
sempre sotto il controllo della CPU
 Il bus viene assegnato alle componenti per
un certo intervallo di tempo in modo che
possano scambiare dati
– Bus dati
– Bus indirizzi
– Bus comandi
Central Processing Unit - CPU
Circuiti che coordinano il calcolatore
 Unità Aritmetico-Logica (ALU)
 Registri
–
–
–
–

Registro dati e indirizzi
Contatore di Programma
Registro istruzione corrente
Registro interruzioni
Orologio di sistema (clock)
Registri

Registro istruzione corrente (RIC): contiene
l’istruzione correntemente eseguita
 Contatore di Programma (PC): indirizzo della
prossima istruzione da eseguire
 Registro interruzioni (RINT): contiene
informazioni riguardo lo status delle periferiche
 Altri registri interni mantegono operandi e risultati
CPU
RIC
PC
ALU
RINT
RD
RI
A,B,....
CLOCK
Come funziona la ALU?
La CPU specifica l’operazione da eseguire
attraverso il registro RIC (es. una somma)
 Gli operandi vengono trasferiti dalla memoria ai
registri interni (es. A e B)
 L’esecuzione richiede un certo tempo di clock
dopo il quale il risultato viene memorizzato in un
registro interno (es A) e poi trasferito in memoria
 A questo punto si passa all’istruzione successiva
utilizzando il registro PC

Interfacce di ingresso/uscita

Circuiti che gestiscono le periferiche
– Registro dati (da e per la CPU) collegato al bus
dati
– Registro comandi per la periferica collegato al
bus comandi
– Informazioni sullo stato della periferiche
(ad es collegato al reg. RINT)
Periferiche: Terminali

Terminali consistono di
– Tastiera per acquisire dati in ingresso (input)
– Video per mostrare dati immessi ed elaborati; il
cursore seleziona una posizione nel video dove
vengono immessi i dati
– Mouse per controllare il cursore
– Caratteristiche: numero di colori, dimensioni,
risoluzione, capacità grafica
– Modi: teletype/a blocchi
Periferiche: Stampanti
Producono su carta i risultati dell’elaboraz.
 Vari tipi:

–
–
–
–

A margherita
Ad aghi
A getto d’inchiostro
Laser
Caratteristiche: velocità,risoluzione, set di
caratteri, capacità grafica (colori ecc)
Estensioni

Co-processori dedicati a compiti specifici
 Cache memory (memoria veloce)
 Multi-processori
Elaboratori

PC IBM-compatibile
– CPU 386, 486 a 32 bit
– Sistema Operativi:


MS DOS (Microsotf)
OS 2 (Sun)

McIntosh (Apple)
 Workstations Sun, HP, Apollo
 Sistema Operativo:
– Unix