Appunti Algoritmi e Calcolatori - Dipartimento di Matematica e

Laboratorio di Calcolo Numerico
Prof. Lorenzo Pareschi
http://utenti.unife.it/lorenzo.pareschi/
Università di Ferrara - Dipartimento di Matematica
Programma del corso
„
„
„
„
„
„
„
„
„
Algoritmi e calcolatori
Software computazionale. Matlab.
Numeri macchina. Analisi dell'errore
Elementi di algebra lineare. Il metodo di
eliminazione di Gauss e applicazioni.
Grafica al calcolatore.
Approssimazione di dati e funzioni.
Minimi quadrati.
Equazioni non lineari e metodi iterativi.
Integrazione numerica
Metodi probabilistici.
2
Contatti e Orario
„
Web Page Corso
http://utenti.unife.it/lorenzo.pareschi/laboratorio
„
„
„
„
Prof. Lorenzo Pareschi
([email protected])
Dott. Giacomo Dimarco
([email protected])
Lunedi, Mercoledi
10.30-12.30
Giovedi (Laboratorio)14.00-16.00
Testi Consigliati:
G.Naldi, L.Pareschi, G.Russo, Introduzione al
Calcolo Scientifico, McGraw-Hill, 2004
G.Naldi, L.Pareschi, Matlab: Concetti e Progetti,
Apogeo, 2003
3
Algoritmi e Calcolatori
Premessa
„
„
„
„
„
„
Cosa è un computer ?
Un insieme di microchip, circuiti integrati e
altri componenti elettronici e meccanici.
Un primo passo verso un’intelligenza
artificiale.
Uno schermo con tastiera che fornisce dati e
informazioni di cui abbiamo bisogno.
Un elettrodomestico con cui navigare in
Internet e giocare con i videogiochi.
Il computer è un insieme di circuiti
elettronici e dispositivi meccanici che non
è in grado di funzionare autonomamente.
)
Ha però la capacità di “ricordare” sequenze di
istruzioni e di “obbedire” ad esse.
5
Programmi e Algoritmi
„
Una sequenza di istruzioni è chiamata
programma.
‹
„
I programmi consentono di tradurre nel
linguaggio del calcolatore un opportuno
algoritmo.
Un algoritmo consente di automatizzare la
soluzione di un problema.
‹
‹
‹
La costruzione di algoritmi rappresenta quindi un
aspetto fondamentale delle nostre capacità di
fornire istruzioni ai calcolatori.
ESEMPI: Istruzioni per il montaggio di un mobile,
indicazioni per raggiungere un luogo,
determinazione del massimo comune divisore tra
due interi positivi….
NOTA: Il linguaggio deve essere comprensibile
6
dall’esecutore.
Linguaggi
„
Primi calcolatori (anni ‘40) potevano essere
programmati, istruiti ad eseguire una certa
azione, utilizzando un codice costituito solo da 0
e 1, dette cifre binarie o bit (da binary digit).
)
„
„
Esempio: 0100010111010…
Tale codice macchina binario, differisce da
calcolatore a calcolatore poiché vi è stretta
corrispondenza tra i valori 1 e 0 ed il concetto di
circuito acceso e spento in memoria.
Successivamente sono stati introdotti linguaggi
di tipo assembler (assemblatori) basati su
semplici forme mnemoniche per programmare i
diversi circuiti del computer.
)
Esempio: LDA 2 X
7
Linguaggi di alto livello
„
I linguaggi di programmazione si sono poi
evoluti in direzione dell’utente con la
nascita di linguaggi detti ad alto livello
basati sulla lingua inglese.
‹
„
„
Esempi: Fortran, Cobol, C/C++, Basic,
Pascal, Ada, …
Si sono definiti degli standard in modo
che un programma potesse essere
eseguito su diversi tipi di calcolatore
senza cambiamenti significativi.
Tali linguaggi necessitano quindi di
traduttori in grado di convertire il
linguaggio di alto livello in linguaggio
macchina.
8
Compilatori e Interpreti
„
„
„
„
„
„
La traduzione viene effettuata da opportuni
programmi in linguaggio macchina.
Compilatori
‹ La traduzione viene eseguita una volta sola
ed è permanente.
Interpreti
‹ La traduzione è necessaria ogni volta che
intendiamo usare un programma.
Entrambi controllano la sintassi e consentono di
correggere eventuali errori di programmazione.
La traduzione comporterà in generale un
rallentamento nell’esecuzione del programma
Ciò che cambierà da computer a computer sarà
il compilatore o l’interprete e non quindi il
9
programma.
Architettura
„
„
Possiamo identificare alcuni elementi funzionali
presenti in ogni elaboratore anche se con
caratteristiche diverse ed in numero diverso
(Modello di Von Neumann).
Unità di elaborazione centrale o microprocessore (CPU: Central Processing Unit):
)
„
svolge tutte le elaborazioni e coordina il
trasferimento dei dati all'interno del sistema. Al
suo interno si identificano l’unità di controllo
(UC) e l’unità logico aritmetica (ALU). Esistono
calcolatori con più CPU (calcolatori paralleli).
Memoria principale o a breve termine (RAM:
Random Access Memory):
)
memorizza i dati ed i programmi. Ha capacità
limitata ed è volatile (perde il suo contenuto in
assenza di alimentazione) ma l'accesso alle
informazioni è molto rapido.
10
„
„
Memoria principale e Unità di elaborazione
costituiscono la parte fondamentale di un
calcolatore.
Memoria secondaria o a lungo termine
(memoria di massa):
)
)
„
Unità di ingresso e uscita (periferiche I/O):
)
)
„
utilizzata per memorizzare grandi quantità di dati
e programmi. L'informazione è persistente ma
l'accesso è meno rapido.
Esempi: floppy disks, hard disks, masterizzatori
di CD e DVD, penne USB, multimedia card (CF,
SD,...)
utilizzate per far comunicare il calcolatore con
l'esterno.
Esempi: tastiera, mouse, video, stampanti,
scanner, modem, web cam, ...
Bus di sistema:
)
collega tutti gli elementi funzionali e consente lo
scambio dei dati.
11
Struttura di un calcolatore
Memoria
primaria
Dispositivi
Unità di
Dispositivi
in ingresso
elaborazione
in uscita
Memoria
secondaria
)
Nella regione tratteggiata si hanno solo componenti
elettronici. Le periferiche I/O e la memoria secondaria
contengono anche componenti meccanici. Sono quindi
soggette ad una forte riduzione di velocità.
12
Memoria e suo funzionamento
„
Possiamo immaginare un certo numero
di scatole di vetro etichettate in modo
univoco contenenti ciascuna una pallina
con un numero o una parola.
‹
‹
Per sapere cosa contiene una scatola è
sufficiente guardare all’interno eventualmente
dopo averla identificata grazie all’etichetta.
Per cambiare valore in una scatola dobbiamo
rimuovere la pallina vecchia ed inserirne una
nuova. La vecchia pallina viene quindi
13
distrutta.
„
La memoria in un calcolatore
funziona in modo simile.
‹ All’etichetta
corrisponde un indirizzo
di memoria che identifica una
particolare locazione di memoria
non il valore del contenuto.
‹ Le scatole rappresentano delle
variabili in quanto il loro contenuto
può variare.
‹ Alcune scatole sono sigillate per cui
non è possibile cambiarne il
contenuto. Sono dette costanti.
‹ I numeri o le parole delle palline
sono rappresentate in memoria sotto
forma di bit.
14
Misurare la memoria
„
Un insieme di 8 bit è detto byte
)
„
„
Capacità della memoria è il numero di byte che può
contenere. Si utilizzano generalmente il Kilobyte
(Kb) uguale a 1024 byte, il Megabyte (Mb) uguale a
1024 Kb ed il Gigabyte uguale a 1024 Mb.
L’informazione è trasmessa e elaborata in multipli
interi di byte. Una Word è il numero di bit che l’unità
centrale può elaborare nell'unità di tempo.
)
„
„
Esempio: 01001101
Esempi: Intel 286 16 bit, 386 e 486 32 bit, Pentium,
Centrino 32 bit, Xeon 64 bit, AMD Athlon, Sempron
32 bit, Athlon/Opteron 64 bit.
Un file identifica un insieme di locazioni di memoria
in cui sono memorizzati dati omogenei e programmi.
Importante è il tempo di accesso della memoria, che
indica il tempo necessario a leggere/scrivere un dato
in memoria (in nanosecondi per la memoria primaria
e millisecondi per la memoria secondaria).
15
Generazioni di Computer
„
„
„
Valvole - 1946-1957
Transistor - 1958-1964
Small scale integration – dal 1965
‹
„
Medium scale integration – fino al 1971
‹
„
3,000 - 100,000 dispositivi su un chip
Very large scale integration - 1978 ad oggi
‹
„
100-3,000 dispositivi su un chip
Large scale integration - 1971-1977
‹
„
Fino 100 dispositivi su un chip
100,000 - 100,000,000 dispositivi su un chip
Ultra large scale integration (futuro prossimo)
‹
Over 100,000,000 dispositivi su un chip
16
Microelettronica
„
„
„
„
„
„
„
„
Transitor sostituiscono le valvole
Più piccoli, più economici, minore dissipazione di
calore, meno fragili
Realizzati dal silicio (sabbia)
Inventati nel 1947 alla Bell Labs da William
Shockley et al.
Literally - “small electronics”
Una CPU è composta da transitor, porte, celle di
memoria e connessioni
Queste possono essere realizzate su un
semiconduttore, ad esempio un “wafer” di silicio
Oggi la tecnolgia ha raggiunto i 90 nanometri
nelle CPU Pentium IV (oltre 42 milioni di
transitors)
17
386
Pentium Pro
Pentium III
Pentium IV
275.000 transitors (1985)
5.5 milioni di transitors (1995)
9.5 milioni di transistors, tecnologia 0.25 micron (1999)
42 milioni di transistors, tecnologia 0.18 micron (2000)
Pentium III
18
Legge di Moore
„
„
„
Gordon Moore – cofondatore di Intel
Il numero di transitor su un chip raddoppierà ogni anno
Dal 1970 lo sviluppo ha rallentato un pò
‹
„
„
„
„
„
Il numero di transistor raddoppia ogni 18 mesi
Il costo di un chip è rimasto quasi inalterato
Una maggiore densità di transitor significa circuiti
elettrici più brevi e maggiore efficienza
Dimensioni più piccole aumentano la flessibilità
Richieste di raffreddamento e di bassa consumo
Meno connessioni aumentano l’affidabilità
19
Crescita del numero di transitor
20
Introduzione alle reti
„
Una rete consiste di un gruppo di computer
connessi tra loro oppure ad un server centrale in
modo da poter condividere risorse quali
documenti e stampanti.
)
)
)
)
Utilizzo di programmi e documenti su altri computer
Utilizzo di stampanti e fax collegati ad altri computer
Accesso a Internet
21
Utilizzare la posta elettronica
Tipi di reti
„
Reti locali (LAN: Local Area Network)
‹
Connettono elaboratori fisicamente vicini
(nello stesso ufficio o stabilimento). Si
condividono alcuni servizi (stampanti,
dischi…).
)
„
Trasmissione veloce
Reti geografiche (WAN: World Area
Network)
‹
Collegano elaboratori medio grandi che
sono a grande distanza tra loro. Servono
per attivare e controllare l'esecuzione di
programmi remoti (applicazioni distribuite).
)
Trasmissione più lenta
22
Internet
„
„
Internet è un insieme di reti informatiche collegate
tra loro in tutto il mondo. Tramite una connessione a
Internet è quindi possibile comunicare con altri
computer ovunque si trovino nel mondo.
Internet consente di accedere a informazioni di vario
genere, quali messaggi di posta elettronica,
newsgroup e il World Wide Web.
)
Posta elettronica. Necessari programmi di posta
elettronica. Inviare e ricevere documenti e messaggi
(Outlook, Eudora, Pine, …).
)
Newsgroup. Necessari lettori di news.
Leggere messaggi relativi ad argomenti di vario
genere.
)
World Wide Web. Necessari Browser Web. Leggere
documenti, ascoltare musica, riprodurre video,
effettuare acquisti, partecipare a sondaggi,
pubblicizzare prodotti, eseguire ricerche, condividere
interessi e scaricare file (Explorer, Netscape, ...). 23
WWW
„
Il World Wide Web rappresenta la parte grafica e
multimediale di Internet. Per visualizzare le
informazioni sul Web, è necessario un apposito
software denominato browser Web. Tale
software consente di accedere in modo semplice
e rapido a documenti denominati pagine Web. Un
sito Web è in genere costituito da più pagine. La
pagina iniziale di un sito Web è denominata
home page.
‹
Ogni pagina Web è identificata da un
indirizzo, Internet univoco, denominato
anche URL (Uniform Resource
Locator).
‹
L'indirizzo Internet della Home Page del
Corso, ad esempio, è il seguente:
• http://utenti.unife.it/lorenzo.pareschi/laboratorio/
)
http (Hyper Text Transfer Protocol).
24
Elaborazione dell’informazione
„
„
La soluzione di un problema passa attraverso
al costruzione di un opportuno algoritmo.
Esempi:
)
)
„
Acquisizione di dati dall’esterno
)
)
„
Distanza, velocità, strada, clima,...
Costo, collocazione, dimensioni, mercati,...
Dati preesistenti all’interno
)
)
„
Guidare un auto a grande velocità richiede decisioni
in frazioni di secondo.
Acquistare una nuova casa richiede generalmente
lunghi tempi di riflessione.
Stanchezza, gomme, carburante,…
Gusti, necessità, disponibilità, ...
Elaborazione e risultato
)
)
Frenare, accelerare, suonare il clacson, …
Scelta principale, scelte alternative, ...
25
Automatizzazione
Acquisizione
dati
„
Elaborazione
L’elaborazione è finalizzata ad un risultato che
cerchiamo di perseguire
)
)
„
„
Produzione
risultato
Evitare incidenti e giungere a destinazione
Avere una casa che ci soddisfi
Problema principale: individuare un procedimento
risolutivo del problema o algoritmo risolutivo, cioè
un insieme di regole che se eseguite ordinatamente
permettono di calcolare il risultato a partire dai dati
acquisiti e da quelli già noti. Non è detto che esista.
Automatizzare l’elaborazione
)
)
Problema difficile: difficoltà di acquisizione dati,
poco tempo per elaborare, scelte dipendenti, ...
Problema affrontabile: dati facilmente disponibili,
26
tempo a disposizione, scelte indipendenti, ...
Diagramma riassuntivo
Acquisizione
dati
Dati
preesistenti
Memoria
primaria
Unità di
Elaborazione
Produzione
risultato
„
elaborazione
Dispositivi di
ingresso e
uscita
NOTA: Nei dispositivi di ingresso e uscita è stata
inclusa anche la memoria secondaria.
27
Caratteristiche di un algoritmo
„
Non ambiguità
)
„
Generalità
)
„
Possibilità di essere applicato ad una
classe di problemi più ampi.
Finitezza
)
Problema
„
Le istruzioni devono essere univocamente
interpretabili.
Deve potere essere eseguito con un
numero finito di passi.
Algoritmo
Programma
Questa fase avviene prima del processo di
elaborazione che utilizzerà il programma così
sviluppato per comunicare con l’unità centrale.
28