Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
MEMORIE DI MASSA:
-hard disk (dischi magnetici)
-SSD (dischi a stato solido)
-CD,DVD,BLU-RAY (dischi ottici)
DISCHI MAGNETICI
hard disk
Un consiste di un insieme
di piatti con due superfici
magnetizzabili.
Ogni superficie ha una propria testina
di lettura/scrittura ,ed i dischi ruotano
attorno ad un perno centrale. Organizzazione fisica dei record:
-Le superfici sono organizzate in cerchi
concentrici (tracce) e in spicchi di pari
grandezza (settori) separati da parti vuote
(gap) .
-Tutte le tracce equidistanti dal centro (su
più piatti) forma un cilindro
-Ogni traccia traccia contiene contiene lo
stesso numero di bit (densità di
memorizzazione variabile dalla periferia
verso il centro)
PRESTAZIONI DEGLI HARD DISK
- Tempo di accesso
Seek Time
● : la testina deve arrivare alla traccia giusta. Dipende dalla meccanica ed
è misurato in millisecondi (10-100ms)
Latency Time
● : il disco deve ruotare fino a portare il record nella posizione giusta
dipende dalla velocità di rotazione, misurata in giri/min (RPM)
- Transfer Rate
Velocità di trasferimento del disco → dipende dalla densità e dalla velocità di rotazione
misurata in MB per secondo (MBps) ,valore tipico: 5-80 MBps 20
DISCHI OTTICI
I dischi ottici sono costituiti da un materiale riflettente. Le
informazioni sono contenute nel disco a spirale ,ed il
laser che esegue la lettura lo fa proprio seguendo
questa spirale con modalità di accesso sequenziale.
In base al fatto che il laser venga più o meno riflesso,si
riesce a riconoscere l’informazione(bit).
Nonostante l’accesso sequenziale le tecnologie ottiche
moderne permettono una rapida velocità di lettura. → quando si passa da 1 a 0 si “perde la
bruciatura”, mentre tra una sequenza di
0 viene mostrata
TIPI DI DISCHI OTTICI
Dischi di sola lettura:
● CD-ROM
● DVD-ROM
● BD(blu-ray disk)-ROM
Dischi scritti una sola volta:
● CD-R
● DVD-R
● DVD+R
● BD-R
Dischi scritti più volte (possono essere scritti più volte da dei masterizzatori appositi)
● CD-RW
● DVD-RW
● DVD+RW
● BD-RE 21
LE PERIFERICHE DEL CALCOLATORE
• Indirizzamento:
● I/O mappato in memoria→la periferica riconosce come propri degli indirizzi dai bus
indirizzi che non coincidono con le parole di memoria
● I/O isolato → gli indirizzi coincidono con le parole di memoria
• Sincronizzazione:
● A controllo di programma:
ciclo di polling→se la periferica è pronta ad agire con noi:
1.Legge il registro di stato della interfaccia di I/O della periferica
2.Ricavare il bit di sincronizzazione
3.Se il risultato è 0 torna al passo 1.
4.Viceversa procedere e acquisire il dato→leggi il registro dati della interfaccia di I/O della
periferica
● A interruzione
Quando la periferica è pronta ad essere sincronizzata con la CPU lo segnala attraverso un
segnale di interruzione al bus controlli che va ad interrompere ciò che sta facendo la CPU.
-la CPU deve saper ricominciare il lavoro che è stato interrotto
-identificazione di chi ha interrotto→la CPU interroga ogni periferica per capire che ha
effettuato l’interruzione,oppure la periferica stessa annuncia al bus dati che è stata lei a
interrompere
-priorità nell’interruzione
● Ad accesso diretto della memoria
Un dispositivo hardware chiamato DMA permette il trasferimento di una grande quantità di
dati.
LA TASTIERA
Quando si preme un tasto sulla tastiera viene inviato un segnale elettrico che rappresenta
dei bit. STRIN→area della memoria centrale che memorizza i dati emessi dalla tastiera.
SCHERMO
Costituito da una tabella di righe e colonne di pixel. 22
Per trasmettere un’immagine dei pixel vengono accesi o spenti secondo una determinata
codifica.
Ogni pixel è costituito da 3 “luci” RGB(red,green,blue),ed in base alla loro intensità
determinano un colore. Nella memoria deve essere memorizzato il livello di intensità di
ciascuna di queste lampadine.
Ogni lampadina è codificata da 8 bit→256 colori(per lampadina). 24
8 bit+8 bit+8 bit=24 bit (3 lampadine totali)→in totale è quindi possibile avere 2 colori=16M
Alcuni esempi di risoluzione(pixel) sono 1024x728 o 2024 x 1536(=3M→servono 12MB).
La frequenza invece è solitamente è di 60 Hz, quindi se per esempio bisogna trasferire
12MB con una frequenza di 60 Hz→60•12=720 MB/s
LINGUAGGIO DI PROGRAMMAZIONE C
Nella programmazione è importante astrarsi dalle problematiche,ovvero togliere l’attenzione
da esse e porla su altre cose.
● Il linguaggio macchina è un modo di astrazione dalle problematiche
● il linguaggio assembly invece utilizza simboli per sostituire(tradurre) le operazioni del
linguaggio macchina ed anch’esso è un modo di astrazione. Anche questo però ha
diverse problematiche ,per esempio le uniche strutture di controllo sono le parole di
memoria TOP-DOWN
Per risolvere il problema è utile utilizzare la procedura , ovvero scomporre in
sottoproblemi.
Un linguaggio di programmazione deve quindi essere:
● funzionale (facile da scrivere)
● mantenibile (facile da modificare)
● efficiente (CPU time e memoria richiesta)
● portabilità (esecuzione in piattaforme differenti)
CLASSIFICAZIONE DEI LINGUAGGI DI PROGRAMMAZIONE
1. gen: macchina
2. gen: assembly
3. gen: C, C++,Java…
4. gen: dipende dal database e non da un algoritmo (es. SQL)
5. gen: descrivo il problema e non la soluzione (es PROLOG)
PARADIGMI DI PROGRAMMAZIONE
● strutturata:si assume come regola che il programma è costituito da strutture di
controllo(es. C)
● procedurale:(es.COBOL)
● orientata agli oggetti:i programmi devono definire oggetti software,ovvero degli
agglomerati di dati o procedure(es.Java,Python)
● funzionale: programmi scritti come def.di una funzione matematica
● dichiarativa:il programma descrive il problema da risolvere
Tutti questi linguaggi necessitano di un traduttore(compilatore),che traduce al calcolatore in
linguaggio macchina
1. INTERPRETAZIONE SOFTWARE(traduzione istruzione x istruzione)
2. COMPILAZIONE(il programma è tradotto interamente) 23
LINGUAGGIO C
IDE: Integrated Development Environment
# →direttiva al calcolatore es. #include #define #ifndef
I programmi sono costituiti da identificatori simbolici: caratteri alfanumerici e caratteri
underscore(_)
IDENTIFICATORI:
● predefiniti (es.printf)→già predefiniti da altri,quindi non possono essere utilizzati
come variabili
● riservati→es main
● keyword→parole chiave,sia predefinite che riservate(es. if,for)
Un programma deve avere quindi questo aspetto:
#direttive
funzioni int main (void){
dichiarazione variabili,istuzioni…
}
ALCUNE CONVENZIONI DEL LINGUAGGIO DI PROGRAMMAZIONE C
1. _underscore→utilizzato per separare(come spazio) es.somma_pos,
oppure utilizzare la lettera maiuscola es.sommaPos
2. su una riga al più una istruzione→ ; punto e virgola utilizzato x la fine di
un’istruzione
3. parti logicamente distinte separate(per esempio da una riga vuota)
4. uso delle parentesi graffe che denotano un blocco di istruzioni:
→parentesi aperta:primo/ultimo carattere della riga
→parentesi chiusa:preceduta da (a capo/invio)
→ciò che sta in mezzo a due graffe è detto indentato (tab)
5. 3 stili di graffe:parentesi su una riga assestante,parentesi graffa aperta(primo
carattere di una riga),parentesi graffa aperta(ultimo carattere di una riga)
6. COMMENTI:non sono istruzioni e servono solo a noi (non modificano il programma
che li ignora), se su una sola riga può essere utilizzata questa convenzione:
//commento altrimenti /* commento */ 24
TIPO DI UNA VARIABILE
INTERI CARATTERI REALI
Predefiniti: , , num.
Essi sono definiti ad hoc dal programmatore,come una data del calendario,un cognome, un
dato di un piano cartesiano,dati anagrafici ecc…
KEYWORDS per le variabili:
interi→int (dato intero)→32 bit
➔
○ short/long
○ unsigned/signed
○ long long int(64 bit)
carattere→char (8 bit)
➔
○ signed/unsigned
○ “\n” →a capo
reali→float(32 bit) , double(64 bit)
➔
○ il punto equivale alla virgola e serve per separare il numero dal decimale es. 37.0
1
○ La e serve per separare la mantissa dalla base es 3,7e1=3,7•10
Quindi una variabile si esprime così:
TIPO(int/char/(float/double)) elenco di identificatori(separati dalla virgola) ;
es. int x,y ; →si comunicano al calcolatore gli interi x e y
Esistono anche variabili di sola lettura(costanti),read only e vengono espresse così:
const TIPO elenco di identificatori ;
es. const float piGreco=3,14 ; 25
OPERAZIONI
● ASSEGNAMENTO
ident(lvalue/VAR)=exp ;
v1=v2=exp → uguale a → v1=(v2=exp)
● OPERAZIONI ARITMETICHE
● /(divisione) con operandi interi→divisione tra interi es. ⅔*3=0
● / con operanti reali→divisione tra reali es. 2.0/3.0*3.0=2.0
NB il resto % può essere utilizzato solo con operandi interi
● CONVERSIONE DI TIPO
1.Con operatori aritmetici
2.Con operatori di assegnamento
3.Invocazione(casting)
1.OPERATORI ARITMETICI
Attraverso un’operazione aritmetica l’operando più
piccolo è promosso nel tipo dell’altro operando.
Char(8 bit) < short int(16) < long int(32) < float(32)
< double(64) 26
2.OPERATORI DI ASSEGNAMENTO
3.OPERAZIONE DI CASTING→ TIPO(exp)
es. int(x) con questa operazione x viene trasformato in un intero. L’operazione di casting
può essere utile per evitare overflow.
ASTRAZIONE PROCEDURALE
int main(void)→= int main() { funzione principale→in ogni programma ci deve essere
almeno una fz. “main”
id(elenco di argomenti)→(separati dalla virgola)
l’ultima istruzione deve essere “return 0”, perché per convenzione se tutto è andato a buon
fine la fz. main restituisce 0
}
void→riga ad hoc
non void→riga ad hoc,exp 27
printf
VISUALIZZAZIONE
printf(“stringa,exp1,exp2,...)
stringa→elenco di caratteri racchiusi da “...”→indica al calcolatore come visualizzare le
espressioni successive.
Gli specificatori “trasformano” que