Title: Algoritmi
1Algoritmi
- INFO/CSE 100, Spring 2005
- Fluency in Information Technology
http//www.cs.washington.edu/100
2Readings and References
- Reading
- Fluency with Information Technology
- Chapters 9, 10
3Panoramica
- ..e adesso studiamo come opera un computer
- Organizzato come livelli di astrazione
- Programmi applicativi
- Linguaggi di ordine superiore Javascript, SQL,
- Sistemi operativi
- bits, bytes, assembly
- transistor, elettroni, fotoni
4Livelli di astrazione
- At ogni livello di astrazione ci sono
- Elementi a quel livello
- Gli elementi costruttivi per quei blocchi
- Astrazione
- Isola un livello dai cambiamenti al livello
inferiore - Riduce i dettagli e migliora la produttivitÃ
- Aiuta a definire una singola architettura che
può essere implementata con una o più
organizzazioni
5Architettura Organizzazione
- Architettura (la definizione logica)
- Definisce gli elementi e le interfacce tra I
livelli - Instruction Set Architecture
- instruzioni, registri, indirizzamento
- Organizzazione (linterpretazione fisica)
- Componenti e connessioni
- Come le istruzioni sono implementate
nellhardware - Diverse organizzazioni possono implementare la
stessa architettura
6Computer Architecture
- Specifica come programmare una famiglia di
computer - Quali istruzioni sono disponibili?
- Come devono essere formattate le istruzioni?
- Quanti registri e qualè la loro funzione?
- Come è indirizzata la memoria?
- Qualche esempio
- IBM 360, 370,
- PowerPC 601, 603, G5,
- Intel x86 286, 386, 486, Pentium,
- MIPS R2000, R3000, R4000, R5000, ...
7Computer Organization
- Processore
- datapath (unità funzionali) manipolano I bit
- Il controllo controlla la manipolazione
- Memoria
- Memoria cache - piccola, alta velocitÃ
- Memoria primaria - grande, bassa velocitÃ
- Input / Output
- Interfacce al resto del mondo
8Una tipica organizzazione
Memoria primaria
processore
processor/memory bus
I/O bus
rete
Disco rigido
floppy disk
CDROM drive
Porte seriali
9Molte Possibili Implementazioni
The Tinkertoy Computer and Other Machinations, by
A.K. Dewdney
10Computers
- Eseguono istruzioni in maniera deterministica
- Deterministica vuol dire che quando si sceglie
la prossima istruzione si esegue sempre la stessa
procedura - Data listruzione e linput, si può sempre
stabilire esattamente quali sitruzioni saranno
eseguite e cosa faranno
I computer non hanno libera scelta e non sono
casuali
11Il ciclo Fetch/Execution
- Computer macchina che esegue istruzioni
- Il ciclo Fetch/Execute è il processo che esegue
le istruzioni
Instruction Fetch (IF) Instruction Decode
(ID) Data Fetch (DF) Instruction Execution
(EX) Result Return (RR)
12Anatomia di un Computer
Processor
ALU
Controllo
Ingresso
Mouse Tastiera Scanner Disco rigido USB Monitor St
ampante Casse
Memoria
Uscita
13Memoria ...
- Mnetre sono in esecuzione, I programmi e I loro
dati devono stare in memoria
Locazioni di memoria
Indirizzi di memoria
11
...
Contenuti della memoria
byte8 bits
0
1
0
0
0
1
0
0
14Control
- Il ciclo Fetch/Execute è cablato nel controllo
del computer, ovvero ne è il motore - A seonda dellinsieme delle istruzioni, questa
affermano - Metti nella locazione di memoria 20 Il contenuto
della locazione di memoria 10 il contenuto
della locazione di memoria 16 - Le istruzioni eseguite hanno forma ADDB 10, 16, 20
21
...
15ALU
- Arithmetic/Logic Unit esegue la vera
computazione
A seconda dellinsieme delle istruzioni, ogni
tipo di dati ha la propria operazione ADDB
add bytes ADDBU add bytes unsigned ADDH add
half words ADDHU add halves unsigned ADD add
words ADDU add words unsigned ADDS add short
decimal numbers ADDD add long decimal numbers
La maggior parte dei computer ha solo 100-150
istruzioni cablate
16Ingresso/Uscita
- Le unità di ingresso portano dai alla memoria del
computer dal mondo esterno Le unità di uscita le
restitutiscono al mondo esterno - La maggior aprte delle periferiche sono
stupide, meaning that the processor assists in
their operation
17The PCs PC
- The program counter (PC) tells where the next
instruction comes from - In some architectures, instructions are always 4
bytes long, so add 4 to the PC to find the next
instruction
Program Counter 112
121
...
ADD 210,216,220
AND 414,418,720
OR
18Il clock fa funzionare il motore
- Il modo con cui il computer fa girare il ciclo
Fetch/Execute è controllato dal suo clock - Attualmente I clock oscillano a 2-3 GHz
- Il computer cerca di eseguira almeno una
istruzione per ciclo, a seconda dellistruzione e
della memoria disponibile - Gli attuali processori cercano di eseguire più di
una istruzione per ciclo
La frequenza di clock non è un indicatore
affidabile della velocità di un computer
19Algoritmo
- Algorithm
- Un modo preciso e sistematico di ottenere un
ricultato
20Proprietà di un algoritmo
- Un algoritmo deve avere
- Un insieme di simboli dingresso
- Un insieme di simboili in uscita
- Un algoritmo deve essere
- Definitito
- I passi da intraprendere devono essere ben
definiti - Effettivo
- I passi devono essere meccanicamente eseguibili
- Finito
- Prima o poi deve terminare
21Communicating
- Le persone possono inventarsi I passi mancanti,
ma possono perdersi nei dettagli - I computer non possono inventarsi I passi
mancanti, ma gestiscono I dettagli senza errori - Cosa bisogna fare per comunicare con un computer?
- Siate organizzati e consistenti con ogni
dettaglio - Inventate astrazioni per specificare in maniera
consistente le idee essenziali - Analizzate il vostro algoritmo,
22Esempio verso la Libreria
A un altro studente A un robot
Oltrepassa la biblioteca e percorri il Viale
fino alla Libreria
Esci da questa stanza. Gira a destra. Vai
allascensore. Gira a destra. Chiama
lascensore ...
- Lo studente iopera a un alto livello di
astrazione con un ricco vocabolario di
abbreviazioni - Un algoritmo è un piano per raggiungere un
obiettivo - A program è un implementazione di un algoritmo
- I buoni algoritmi (a qualunquee livello di
astrazione) richiedono precisione
23Analisi di un algoritmo che cosè?
- Cosè un algoritmo?
- Una sequenza di passi che eseguono un compito
- Diversi algoritmi possono eseguire correttamente
lo stesso compito - Possono essere implementati?
- Termineranno nellarco di vita di una persona?
- Riichiederanno gigabyte di memoria?
24Analisi di un algoritmo perchè?
- Capite I fondamenti matematici dellanalisi di un
algoritmo - Imparate a comparare gli algoritmi in termini di
memoria e tempo di esecuzione - Imparate un certo numero di algoritmi standrad e
usateli per risolvere nuovi problemi
25Programmi vs Algoritmi
- Un programma è un algoritmo specializzato in una
particolare situazione - Un algoritmo
- longStringWithShortStringInIt ? placeholder
- ShortString ? e
- placeholder ? longStringWithShortStringInIt
- Un programma che lo implementa
- ?? ? // replace double ltnewlinesgt with ltgt
- ? ? e // delete all single lt newlinesgt
- ? ?? // restore all double ltnewlinesgt
26Programmazione come Comunicazione
- Quando scriviamo un programma, stiamo comunicando
con - Il computer
- Altre persone
- Il computer legge il nostro programma come un
insieme di istruzioni da eseguire - Deve solo capire dove, come e perchè
- Le altre persone leggono I porgrammi per capire
come e perchè - Programmi che non funzionano (bugs)
- Evoluzione - nuove caratteristiche
- Miglioramenti di prestazioni
27Un algoritmo per ordinare i CDs
Definisci variabile Artista usa Artista per
referire lautore del CD Per tutti gli slot a
partire da sinistra del rack chiama lo slot
corrente alpha per ogni rimanente slot nel
rack chiama lo slot successivo beta
Scambia? SE Artista del CD nello
slot beta precede nell alfabeto
Artista del CD nello slot alfa ,
scambia il CDs next beta next alpha done
28Un altro ordinamento
- Con le bottiglie di plastica!
29Conclusioni
- A partire dal caso specifico, possiamo astrarre
gli algoritmi che vogliamo - Possiamo imparare dagli algoritmi scritti da
altri - Per comprendere un algoritmo, facciamo
unastrazione - Studiamìndo come lavora un algoritmo, possiamo
comprenderlo e poi farlo eseguire dal computer