Rappresentazione dei dati reali

Transcript

Rappresentazione dei dati reali
Struttura fondamentale
dell’elaboratore ed
elementi di
programmazione
Per il corso: Laboratorio di
programmazione e calcolo
Il calcolatore
• I calcolatori elettronici sono stati costruiti per la
prima volta durante la Seconda Guerra Mondiale
– ENIAC (Electronic Numerical Integrator and
Automatic Calculator – 1943-1946 Università della
Pennsylvania)
• E’ una macchina costituita da due parti
fondamentali
– HARDWARE
– SOFTWARE
Hardware e Software
• Hardware: il materiale elettronico, elettrico,
elettromagnetico e meccanico di cui la macchina
è composta, indipendentemente dalle
applicazioni per le quali può essere impiegata
• Software: il complesso delle istruzioni che
rendono possibile utilizzare la macchina per
ottenere risultati desiderati
– complesso di istruzioni che l'hardware deve
comprendere ed eseguire
L’informazione digitale
• L'elaboratore è una macchina numerica o
digitale che si contrappone alle apparecchiature
analogiche.
– digitale  "digit" (cifra o numero)
• L'elaboratore gestisce l’informazione
trasmissibile in forma digitale (cioè lavora su
numeri).
– I numeri sono 0 e 1 (notazione numerica binaria)
– L'informazione a due valori è detta bit (binary digit).
L’informazione digitale: codifica
• L'associazione di bit ad una informazione è detta
codifica.
• Ogni tipo di informazione può essere gestita mediante
una codifica BINARIA
• Per gestire una informazione un po' più articolata di due
soli stati (0 o 1), si considerano i bit a gruppi di 8 (un
byte)
– byte  stringa composta da 8 bit consecutivi
– 1 bit può assumere due stati (0 o 1)  un byte può assumere
tutti gli stati da 00000000 a 11111111, con tutte le situazioni
intermedie
– 28= 256 diverse combinazioni con cui esprimere l'informazione
Architettura di un calcolatore
• Lo schema che illustra il funzionamento di
un calcolatore è dovuto a John Von
Neumann (1903-1957)
• Schema prossimo all'effettiva struttura dei
moderni calcolatori
Unità dell’hardware
• Le unità che costituiscono un calcolatore sono le
seguenti:
– Unità di ingresso (input) consentono l'immissione di dati nella
memoria
– Unità di memoria  in cui vengono registrate le informazioni
– Unità di controllo o unità di elaborazione centrale detta anche
processore (Central Processing Unit o CPU)  presiede a tutte
le operazioni del calcolatore, interpretando le istruzioni prelevate
dalla memoria e inviando alle specifiche unità i segnali per
l'esecuzione delle operazioni
– Unità aritmetico-logica (Arithmetic-Logic Unit o ALU) 
esegue operazioni aritmetiche o logiche
– Unità di uscita (ouput)  presenta i risultati dell'elaborazione
Unità di I/O
• Un computer elabora i dati e fornisce risultati
eseguendo determinate istruzioni.
• I dati e i programmi devono essere inseriti
dall'esterno.
• Le unità I/O consentono di inserire i dati
utilizzando codifiche "naturali“ e di ottenere
come risultato dati scritti con le medesime
codifiche
– Codificare/Decodificare i dati del linguaggio naturale
in binario e viceversa
– Trasmettere e ricevere dati dalla CPU in codice
binario
Unità di I/O
• Per ricevere e/o trasmettere bit (o byte) è
necessario una passaggio di segnali elettrici
binari.
– Il passaggio di dati avviene tramite collegamenti
– Le componenti di I/O sono collegate al calcolatore
tramite un cavo con due estremità: una attaccata
all'apparecchio e l'altra attaccata al calcolatore tramite
le porte o interfacce (seriale, parallela, USB, PS/2,
rete, firewire, video).
Unità di I/O
• Le unità di I/O sono:
–
–
–
–
–
–
–
–
–
–
tastiera
mouse
monitor
stampante
casse
scanner
videocamera
lettore cd/dvd
masterizzatore
modem
Unità di I/O: le porte
•
Le porte di I/O sono localizzate (generalmente) sul lato posteriore
del computer e sono utilizzate per collegare alla macchina i
dispositivi esterni
– Porta/e PS/2 per il collegamento del mouse e della tastiera
– Porta Seriale per il modem, o in generale per dispositivi che non
richiedono un flusso di dati molto veloce
– Porta Parallela per la stampante, o in generale per qualunque
dispositivo che richieda un flusso di dati più veloce rispetto alla capacità
della porta seriale.
– Porta USB (Universal Serial Bus) per connettere ogni dispositivo USB
• la tecnologia USB consente di creare "catene" di dispositivi collegati tutti su
un'unica porta
– Porta Video per connettere il monitor al computer
– Porta di Rete per collegare la macchina direttamente ad una rete di
computer, senza usare il modem
– Porta SCSI per dispositivi che richiedono un flusso di dati molto veloce
(scanner, masterizzatore esterno, ecc.)
Memoria
• Memoria di un computer è il supporto materiale che
contiene le unità informative (bit)
– memorie centrali o di massa
• I parametri caratteristici della memoria
– capacità (quantità di memoria disponibile) espressa in byte (8
bit), o nei suoi multipli, o in word (cioè sequenza di bit)
• il KiloByte (KB) pari a 1024 Byte (circa 1000 Byte)
• MegaByte (MB) pari a 1.048.576 Byte (circa un milione di Byte)
• GigaByte (GB) pari a 1.073.741.824 Byte (circa un miliardo di Byte)
– Tempo di accesso tempo necessario per eseguire una singola
operazione di lettura e di scrittura
• il parametro che rappresenta la velocità di memoria è il
nanosecondo (milardesimi di secondo)
Memoria
• CM (Central Memory) memoria nella quale sono
collocati i byte, sui quali vengono effettuate operazioni di
scrittura e lettura da parte della CPU.
• La memoria centrale è detta memoria RAM (Random
Access Memory - memoria ad accesso casuale) 
memoria volatile l'informazione ivi registrata viene
perduta all'atto dell'interruzione della alimentazione
elettrica
• Memoria di Massa  permette il salvataggio dei dati
– svolge il ruolo di archivio di informazioni (programmi e dati);
– se necessario, una parte delle informazioni viene spostata nella
memoria centrale per essere elaborata e quindi riportata nella
memoria di massa
Memoria: supporti
• I supporti per le memorie di massa si possono poi
dividere in 4 grandi categorie
– dipendono dal tipo di memoria e di apparecchiatura meccanica
che il supporto di registrazione richiede
• Dischi magnetici
– la memorizzazione dei dati avviene magnetizzando la superficie
tramite un'apposita testina di lettura/scrittura.
– Sullo stesso disco i dati possono essere scritti, cancellati e
riscritti per un numero indefinito di volte senza logorare il
supporto
– Si suddividono in
• removibili (floppy, zip)
• fissi (hard disk)
Memoria: supporti
• Dischi ottici
– la memorizzazione dei dati avviene "bruciando" con
un laser la superficie
– i dati scritti su un disco ottico non possono più essere
cancellati
– esistono dei dischi particolari (CD riscrivibili) che
consentono la cancellazione e la riscrittura per un
numero limitato di volte
– si suddividono in:
• WORM, Write Once Read Many, sui quali è possibile scrivere
una sola volta ma leggere molteplici volte (CD-ROM),
• riscrivibili
Memoria: supporti
• Dischi magneto-ottici
– dischi a supporto magnetico su cui la scrittura dei dati
può avvenire solo dopo un forte riscaldamento della
superficie con un fascio laser.
– insensibili ai campi magnetici
– nessuna cancellazione accidentale
– utilizzati nei sistemi in cui è richiesto il frequente
salvataggio di una grande quantità di dati in condizioni
di sicurezza (es. unità di backup)
Memoria: supporti
• Nastri magnetici
– usati per creare periodicamente copie
(backup) del contenuto degli hard disk
– lettura/scrittura molto lenta (alcune ore)
– unità sequenzialii dati vanno letti o scritti in
sequenza (non sono possibili operazioni di
selezione di una porzione predefinita)
CPU
• Central Processing Unit (CPU) o processore
• Unità di calcolo del calcolatore
–
–
–
–
–
esegue le istruzioni dei vari programmi
sovrintende al funzionamento del calcolatore
esegue tutti i calcoli
gestisce il trasferimento di dati attraverso la memoria e i dischi
attiva e/o disattiva le diverse componenti del calcolatore
• Il processore è caratterizzato da un proprio linguaggio
macchina attraverso il quale si esprimono i programmi
memorizzati.
• Il processore accede alla memoria, interpreta le istruzioni
in linguaggio macchina e provvede alla loro esecuzione
CPU
• La CPU è costuituita da:
– ALU (Arithmetic-Logic Unit, unità aritmeticologica) gestisce le operazioni matematiche e
gli operatori logici o booleani (AND, OR, NOT)
– CU (Central Unit, unità di controllo) coordina
le operazioni della ALU sulla base di
un'organizzazione programmata con le unità
di I/O, il Clock (orologio) e la CM (Central
Memory)
CPU
• Il ritmo di lavoro del processore è scandito da un segnale
elettrico (detto clock) generato internamente al computer
e costituito da rapidissimi impulsi che si ripetono
centinaia di milioni di volte per secondo
– la velocità del clock si misura in GigaHertz (GHz)
• La ALU riceve dalla CU delle istruzioni sottoforma di
operazioni da compiere e di sequenze di byte
• La CU regola il flusso dei byte che entrano ed escono
dalla ALU
• Ad ogni scatto del clock
– la CU fornisce un'istruzione alla ALU
– la ALU "trova" le sequenze di byte nella CM, in cui sono collocati
i byte sui quali vengono effettuate operazioni di scrittura e lettura
da parte della CPU
I Software
• I programmi permettono il funzionamento dell’hardware
• Un programma  serie di operazioni elementari che il
calcolatore esegue in sequenza e che trasforma un
insieme di dati di input in un insieme di dati di output
• I programmi scritti in linguaggio macchina (costituiti da
sequenze di numeri binari) sono i soli eseguibili
direttamente dall’hardware
• Si possono distinguere diversi tipi di software
– Sistema Operativo (Linux, Windows, Mac Os,…)
– Applicazioni (editor di testo, sistemi di gestione di data-base,
giochi…)
Che cosa è la programmazione
• Programmazione è l’attività di sviluppo di programmi per
un calcolatore
• Obiettivo: risoluzione di specifici problemi
• Diverse fasi:
– specifica dei requisiti: fase di formulazione del problema in modo
più o meno formale
– analisi del problema: comprensione del problema e sua
scomposizione in parti gestibili
– definizione di un algoritmo: progettazione di una soluzione al
problema
– scrittura del codice: implementazione dell’algoritmo in uno
specifico linguaggio di programmazione
– testing e debugging: verifica della soluzione e correzione degli
eventuali errori
– manutenzione
Che cosa è la programmazione
• Un algoritmo
– insieme ordinato di passi che descrive un processo
sequenziale atto a risolvere una classe di problemi
partendo da alcuni dati iniziali e restituendo dei dati in
uscita dopo una serie di elaborazioni
• Diversi tipi di progettazione di un algoritmo
– progettazione bottom-up
• formalizzazione di un algoritmo partendo dalle parti più
specifiche
– progettazione top-down
• descrizione in termini generali ed individuazione di
sottoproblemi più semplici e così via…
Diagrammi di flusso
• I diagrammi di flusso (flow-chart)
permettono la realizzazione grafica di un
algoritmo
– Definiti mediante un alfabeto e una sintassi
• Alfabeto (o insieme di simboli)
– Insieme di specifiche figure geometriche
(blocchi elementari)
– Insieme di simboli di connessione tra i blocchi
elementari
Diagrammi di flusso: alfabeto
• Blocchi elementari di un diagramma di flusso e
loro significato:
– ellisse (limitatore di processo): determina l’inizio e/o la
fine di un algoritmo
– rettangolo (blocco azione): descrive singole istruzioni
– rombo (blocco decisionale): consente la selezione di
strade alternative
– parallelogramma (blocco di comunicazione o I/O):
permette l’inserimento e/o l’uscita dei dati
– freccia/e (simbolo di interconnessione): regola
la sequenzialità delle istruzioni all’interno del
diagramma di flusso
Diagrammi di flusso: sintassi
• Un diagramma di flusso è un grafo contenente:
–
–
–
–
un blocco iniziale (ellisse)
un blocco finale (ellisse)
un numero finito di blocchi azione (rettangoli)
un numero finito di blocchi di controllo (rombi)
• Regole di composizione di un flow chart
– ciascun blocco azione deve avere una freccia entrante ed una
uscente
– ciascun blocco controllo deve avere una freccia entrante e due
uscenti
– ciascuna freccia entra in un blocco o si inserisce in un altra
freccia
– ciascun blocco deve essere raggiungibile dal blocco iniziale
– il blocco finale deve essere raggiungibile dal blocco iniziale
Diagrammi di flusso: schemi
• Fra i possibili modi di connettere blocchi
elementari e frecce che rispettino la
definizione di un grafo di flusso, si
possono individuare alcuni schemi di
composizione fondamentali
– sequenza
– selezione
– iterazione
Diagrammi di flusso: sequenza
• Uno schema di sequenza descrive la
composizione sequenziale di due azioni
elementari di un processo
Inizio
A1
A2
Fine
Diagrammi di flusso: selezione
• Uno schema di selezione permette di effettuare
una scelta di due diverse azioni elementari in
dipendenza dall’esito di un controllo
A1
Inizio
C1
Fine
A2
Diagrammi di flusso: iterazione
• Uno schema di iterazione permette di ripetere un
blocco azione un certo numero di volte in
dipendenza dell’esito di un controllo
modello 1
Inizio
V
C1
A1
F
Fine
modello 2
Inizio
A1
V
C1
V
Fine
F
Proprietà di un algoritmo
• Un algoritmo è composto da una sequenza di
schemi di flusso fondamentali (detti anche
schemi di flusso strutturati) e deve soddisfare I
seguenti requisiti:
– generalità
– finitezza (si deve raggiungere il flocco fine in un
numero finito di passi)
– non ambiguità (non devono essere presenti isctruzioni
che si contraddicono)
– ottimalità (deve risolvere il problema in studio con il
numero minimo di operazioni)
Esempi di flow-chart
• Somma di due numeri positivi
• Somma di due numeri nota la somma di un
numero e di una unità
• Moltiplicazione di due interi non negativi
utilizzando le operazioni somma 1 e sottrati 1
• MCD tra due numeri positivi
• Calcolo della norma infinito di un vettore
• Calcolo del fattoriale
• Calcolo della somma di un polinomio
• Algoritmo di Horner