Fondamenti di informatica
Microcontrollori: attività semplici e predefinite; tutti gli elementi di memoria sono integrati insieme alla CPU all'interno di un singolo chip: dimensioni ridotte.
Microprocessori: attività semplici/complesse, ma non predefinite; il chip contiene solamente la CPU, tutti gli altri elementi di memoria sono esterni al chip: dimensioni ↑ microcontrollori.
Architettura di un elaboratore
- CPU: processore (central processing unit).
- ROM/RAM: memoria centrale.
- I/O: unità di input/output.
Dati e operazioni codificati con:
- 2 valori di tensione: VH: 5 V, 1.3 V. Si preferisce utilizzare una bassa tensione x over ↓ dissipazione termica. VL: 0 V.
- 2 cifre binarie (0 e 1) ↓ sequenza di bit (binary digit).
Fondamenti di informatica
Microcontrollori: Attività semplici e predefinite; tutti gli elementi di memoria sono integrati insieme alla CPU all'interno di un singolo chip: dimensioni ridotte.
Microprocessori: Attività semplici/complesse, ma non predefinite; il chip contiene solamente la CPU, tutti gli altri elementi di memoria sono esterni al chip: dimensioni ↑ microcontrollori.
L↳PC.
Architettura di un elaboratore
CPU↔BUS→ROM, RAM, I/O (Dati, Controllo, Indirizzi).
- CPU: processore (central processing unit).
- ROM/RAM: memoria centrale.
- I/O: unità di input/output.
Dati e operazioni codificati con:
- 2 valori di tensione: VH: 5V, 1.8V. VL: 0V. ↳Si preferisce utilizzare una bassa tensione x ↗dissipazione termica.
- 2 cifre binarie (0 e 1) ↳sequenza di bit (binary digit).
CPU
- Opera in aritmetica binaria;
- Legge i dati nella memoria del computer;
- Elabora le istruzioni ed i calcoli del programma caricato in memoria;
- Organizza i flussi di dati da/verso i dispositivi di I/O.
Composta da:
- Clock: dà la base dei tempi necessari per mantenere il sincronismo tra le operazioni eseguite (Tmax = periodo di clock). Se clock ↑: errata trasmissione di informazioni (overclock), istruzione ↑ lunghezza.
- Registri: locazioni per memorizzare dati, istruzioni e indirizzi all'interno della CPU (accesso ↑ veloce).
- Registro di uso generale.
- Registro delle interruzioni (INT): gestire interruzioni di hardware e software.
- Registro dei flag: ogni flag indica la presenza/assenza di una proprietà nell'ultimo risultato generato dall'ALU.
Registri specializzati
- PC: Program Counter: indica l'indirizzo della cella di memoria che contiene la prossima operazione da eseguire;
- IR: Instruction Register: contiene l'istruzione da eseguire;
- RI: Registro Indirizzi: contiene l'indirizzo della cella di memoria da selezionare per il trasferimento di un dato con la CPU;
- RD: Registro Dati: contiene il dato oggetto di elaborazione ed il risultato al termine dell'esecuzione.
ALU: esegue operazioni aritmetiche e logiche e confronti sui dati della memoria centrale e dei registri.
Unità di controllo
Serve per far operare la CPU.
- Prelievo: si accede alla prossima istruzione e la si porta dalla memoria centrale, memorizzandola nel Registro Istruzioni.
- Decodifica: in base all'OPCODE.
- Esecuzione: si individuano i dati usati nell'istruzione e si trasferisce nei registri, poi si esegue l'operazione. Si incrementa il Program Counter di 1.
Il Multitasking è la possibilità che consente ad un s.o. di eseguire + compiti allo stesso tempo: salvando in memoria i contenuti di tutti i registri è possibile accantonare un processo per svolgerne un altro.
Memoria
Memoria di massa: consente di salvare una grossa mole di dati in modo permanente.
- 8 bit = 1 byte.
- 1 Kbyte = 210 = 1024 byte.
- 1 Mbyte = 220 byte.
- 1 Gbyte = 230 byte.
Memoria centrale: costituita da RAM ("random access memory") e ROM ("read only memory").
- RAM: è una memoria volatile da archivio temporaneamente i dati e le istruzioni su cui si sta lavorando;
- ROM: è una memoria non volatile da archivio permanentemente le istruzioni. (es. porzione di audio iniziale).
Indirizzamento
Attività con cui l'elaboratore seleziona una posizione della memoria; l'elaboratore pone l'indirizzo della cella desiderata nel RI; se il RI è lungo m-bit si possono indirizzare 2m celle di memoria.
- 32 bit 232 => 4 GB.
- 64 bit 264 32 bit.
Lettura: quando il contenuto della cella di memoria, indirizzato dal registro indirizzi, è copiato nel registro dati.
Scrittura: quando il contenuto nel registro dati è copiato nella cella di memoria indirizzato dal registro indirizzi.
La RAM non è abbastanza veloce da stare dietro ai processori, di conseguenza il processore perde tempo ad aspettare l'arrivo dei dati della RAM.
Tra processore e RAM viene inserita una memoria particolarmente veloce, dove tenere tutti i dati letti più spesso; in modo che i dati vengano letti dalla cache e non dalla RAM.
Tabella memorie: registri, codici, RAM, mem. di massa. Velocità, costo, capacità.
Bus
BUS: insieme di linee di comunicazione diversa (BUS dati, BUS indirizzi, BUS comandi) che connette 2 unità funzionali; detta volta trasmette e l'altra riceve.
- BUS dati: bidirezionale serve per trasmettere dati dalle memorie e viceversa;
- BUS indirizzi: unidirezionale serve per trasmettere il contenuto dei RI alle memorie;
- BUS comandi: bidirezionale serve per inviare comandi verso le memorie o verso le periferiche ed inoltre può essere usato per inviare comandi al processore in caso di DMA accesso diretto alla me.
Reti di calcolatori
- Reti locali: connettono elaboratori fisicamente vicini (LAN): Local Area Net.
- Reti geografiche: collegano elaboratori siti anche a grande distanza (WAN): Wide Area Network.
Internet
È la rete risultante dalla interconnessione mondiale di tutte le reti. ed il World-Wide Web è uno dei principali servizi. I servizi internet sono molteplici: lettura ipertesti in linea, posta elettronica, transazioni sicure...
Rappresentazione dell'informazione
Internamente ad un elaboratore, ogni informazione è rappresentata tramite sequenze di bit.
Per la codifica vengono utilizzate codifiche di lunghezza diversa, portando a spreco di memoria e difficile interpretazione. Solitamente si usa il minor n° di bit possibile.
Es. Giorni della settimana 7 23=8 3 bit necessari.
Codifica di caratteri e stringhe
- Caratteri: insieme finito di oggetti.
- Stringhe: sequenze di caratteri terminata in modo particolare.
Codifiche di uso comune:
- Codice ASCII: 7 bit 27 = 128 caratteri; 0, 31 caratteri di controllo; 32, 127 caratteri stampabili e segni di punteggiatura; numeri, caratteri, caratteri maiuscoli, minuscoli.
- Codice Unicode: ogni carattere ha una codifica unica; 16 bit rappresentazione di caratteri non europei.
- ISO 8859-1: 8 bit (128 caratteri ASCII + 128 caratteri accentati e lettere e caratteri di controllo).
Rappresentazione delle immagini
Le immagini non sono formate da sequenze di oggetti ben definiti, quindi vanno discretizzate, ovvero vengono trasformate in una quantità finita che possono essere codificate separatamente in un sequenze di bit.
- Campionamento: griglia di pixel + Quantizzazione: da quanti bit ogni pixel rappresentato.
- Toni di grigio (1 byte × pixel) → 256 gradazioni di grigio.
- RGB (3 byte × pixel) → 16 M di colori.
La rappresentazione di un'immagine dipende dal n° di pixel (dimensioni) e della codifica del pixel (profondità) e richiede molta memoria.
Si cerca di risparmiare:
- Con l'uso di una tabella dei colori, cioè il sottoinsieme dei colori rappresentabili da comporre in una foto → ogni pixel codifica un indice all'interno della tabella.
- Con tecniche di compressione.
- Algoritmi lossless (senza perdita d'info) operano un cambiamento sulle codifiche.
- Algoritmi lossy (con perdita d'info) eliminano combinazioni di vicini di colore in pt. vicini.
Rappresentazione dei video
Il movimento è già discretizzato (v 30 fps) ?: l'occhio percepisce il continuo.
Decodifico la diff. tra un fotogramma e l'altro (MPEG) → se decodificassi i singoli frame occorre molta memoria.
Rappresentazione dei suoni
- Campionamento: ad intervalli fissi di tempo;
- Quantizzazione: ogni campione viene rappresentato con n° finito di bit.
↑ Accuratezza ↑Campionamento ↑n° bit x campione ↑Occupazione di memoria.
Algoritmi lossy: suoni a basso volume sovrapposti ed alto volume possono essere eliminati (MP3).
Decodifica dei numeri
Naturali.
- Non posizionale (umana).
- Posizionale (base 2,4,8,10,16).
v = ∑ dₖ * Bⁿ⁻ᵏ base.
Es. 12 = 1 * 4¹ + 4 * 4⁰ = 16.
k=0.
- Bit cifra + a sx. = most significative bit.
- Bit cifra + a dx. = less significative bit.
Interi
- In modulo e segno.
- Complemento a 2.
Modulo e segno.
- 0 + 1 scl. per 1 bit.
- 1 - m-1 bit x valore assoluto.
- MSB: -2ⁿ = 2ⁿ - 1.
- Se + 0 -> m >= 0 altr' bit overflow X + (-X)=0.
Reali
lm˙ in virgola fissa non sono utilizzabili -> m in virgola floating.
2p sede in alcuni casi.
Base qualsiasi -> base decimale:
Base decimale -> base qualsiasi: metodo delle divisioni su e 20 (10).
- 20 : 2 = 10 R 0.
- 10 : 2 = 5 R 0.
- 5 : 2 = 2 R 1.
- 2 : 2 = 1 R 0.
- 1 : 2 = 0 R 1.
10 100 (2).
Moltiplicazioni / divisioni
Moltiplicazioni: spostando tutte le cifre a sx. di una posizione (d a dx.) si moltiplica per la base.
- 184 * 10 = 1840.
- 1011 * 2 = 10110.
Divisioni: spostando tutte le cifre a dx. di una posizione (d a sx.) si divide per la base.
- 1830 / 10 = 183.
- 1111 / 2 = 0111.
Somma / sottrazione
Base 2.
- 0 - 0 = 0.
- 0 + 0 = 0.
- 1 - 0 = 1.
- 1 + 0 = 1.
- 0 - 1 = 1.
- 0 + 1 = 1.
- 1 - 1 = 0.
- 1 + 1 = 10.
0010 0 100 -0010 01 1010000 1111 +0001 01010010 0100.
Base 8, 16 bisogna stare attenti alla base.
Virgola mobile
V = m * B esp.
- m = mantissa.
- B = base.
- esp = esponente.
Riesco a codificare il numero.
p1 m dopo la virgola variazione tra 1 e 9.
es. 12.34 --> 0.1234 * 102.
Base101.
Virgola mobile.
1.456 --> 0.1456 * 101.
Base101.
0.0423 --> 0.1423 * 10-1.
La normalizzazione (parte intera = 0) -> mantissa normalizzata.
1 4 0 1 0 . 10 10 10 10 --> 0,1401 . . . * B esp.
m dopo virgola è sempre 1.
Se ho un determinato n° di bit x la mantissa -> errore di troncamento ed esso supera quel n°.
- Float (IEEE - 32): 8 bit esp, 1 bit sgn., 23 bit mantissa -> 4 byte. 7 cifre = 23 log2.
- Double (IEEE - 64): 11 bit esp, 1 bit sgn., 52 bit mantissa -> 8 byte. 15 cifre = 48,52 log2.
Normalizzazione
10000000 + 0.0000003367 = 0.1000000000 00 0 3367 molte cifre decimali (non bastano i bit) della mantissa.
Errori
- Errore di troncamento = il n° di cifre disponibile è insufficiente (es. n° periodico).
- Errore di incolonnamento = se faccio operazioni con 2 numeri molto diversi tra loro dove manca una unità (de-normalizzare un m°).
- Errore di cancellazione = se sottraggo n° molto simili tra loro (differenza molto piccola).
Software
Il software è un programma che viene eseguito dal sistema e viene distinto tra software di base (sistema operativo) e software applicativo. - Windows, OS, Linux.
Diagramma a cipolla.
Firmware: software che fa partire la macchina (connetto con l'hardware).
Organizzazione a strati
- Programmi applicativi (software applicativo).
- Ambiente di programmazione → traduce istruzioni di alto livello in basso livello.
- Sistema operativo.
- Software di comunicazione.
- Hardware.
⇨ In ordinario non è presente (single task): realizza una macchina virtuale da il software dell'hardware.
Virtual Boxe.
Classificazione S.O.
- Mono-utente: un solo utente alla volta può utilizzare il sistema.
- Mono-task / Multi-task: il s.o. deve gestire la suddivisione del tempo della CPU tra i programmi.
Ambiente di programmazione
- Editor – esegue l'editing (Visual Studio); sintassi con colori differenti.
- Traduttore – programma sorgente in programma eseguibile (linguaggi machine).
- Debugger – fa vedere in tempo reale ciò che stiamo facendo (eventuali errori).
- Traduttori - Compilativi: traducono l'intero programma senza eseguirlo e producono in uscita un programma eseguibile.
- Traduttori - Interpretati: traducono ed eseguono immediatamente ogni singola istruzione.
Algoritmi e progetti
Algoritmo: sequenza finita di mosse da eseguire in un tempo finito una classe di problemi.
Programma: testo scritto in accordo con semantica-sintassi di un linguaggio di map. Lo può non essere un algoritmo (es. Excel).
Proprietà algoritmo
- Eseguibilità: ogni mossa deve essere eseguibile in un tempo finito.
- Non-ambiguità: ogni mossa deve essere univocamente interpretabile.
- Finitezza: il n° totale di mosse da eseguire deve essere finito.
Algoritmi equivalenti
A parità di dati in ingresso producono gli stessi dati in uscita (con piccole diff.).
Metodologie
- Top Down: problema complesso - decomposizione - problemi semplici (se parto da 0).
- Bottom-Up: componenti - sintesi - problema complesso (se parto da qualcosa).
Linguaggi
Il linguaggio è un sistema matematico che consente di rispondere a domande (notazione formale per descrivere gli algoritmi).
- Sintassi: insieme di regole formali.
- Semantica: insieme dei significati.
- Python -m unittest nome-file.py (modulo).
- Python -m pylint nome-file.py.
- - = - name -> eseguo come programma (unittest).
- Call by value/reference.
Call by value/reference
Value:
- a = [1, 2, 3]
- b = a
- b.append(4)
- a = [1, 2, 3]
- 2 celle di memoria differenti
- b = [1, 2, 3, 4]
Reference:
- a = [1, 2, 3, 4]
- b = a
- b.append(5)
- a = [1, 2, 3, 4, 5]
- Stesso spazio in memoria
- b = [1, 2, 3, 4, 5]
Programmazione x classi
Costruttore: permette di inizializzazione gl' attributi della classe -init-.
Self: 1° parametro (istanza dell' oggetto).
Variabili non modificabili (variabili d' istanza - _ _).
Setter: modifica l' oggetto / Getter: ho accesso all' oggetto.
-
Fondamenti cpp
-
Fondamenti di informatica
-
Appunti Fondamenti di informatica
-
Fondamenti di informatica