Informatica generale modulo I
Capitolo 1: Informatica
Informatica - scienza dell'informazione (Inform – automatica)
- Scienza del trattamento razionale, particolarmente con macchine automatiche, delle informazioni considerate come supporto delle conoscenze umane e delle comunicazioni in tutti i settori.
- Da non confondere con "scienza dei calcolatori", ma "scienza del trattamento dell'informazione".
Definizione informatica: Scienza della rappresentazione e dell'elaborazione dell'informazione.
L'informatica tratta
- L'informazione e la sua codifica
- Le tecniche per raccoglierla, memorizzarla, distribuirla, trasformarla...
- Il calcolatore, il suo funzionamento, le possibilità che offre per la trasformazione dell'informazione, le tecniche di utilizzo...
- La comunicazione tra elaboratori, tra persone (mediata dal calcolatore)
Struttura del calcolatore
Hardware: Struttura fisica del calcolatore formata da parti meccaniche, elettriche, elettroniche (Video HD, tastiera, modem, CPU, ecc.).
Software: Componente del calcolatore costituita dai programmi di base e dai programmi applicativi per la gestione e l'uso del Sistema.
- Software di sistema: sistema operativo → si occupa di trasferire le info del computer sullo schermo (è utile solo se c'è anche il software applicativo).
- Software applicativo: parte da quelle applicazioni che mettiamo sul pc (es: office). → La parte contro cui si può solo imprecare.
Firmware: Software cablato direttamente in chip hardware non facilmente modificabile (es: flash Bios e successive soluzioni). Permette al componente hardware di far funzionare le componenti base del sistema (es: mette in comunicazione CPU e RAM). → La parte contro cui non si può fare proprio nulla.
Elaborazione informazioni
Elaborare un’informazione significa: Operare secondo precise modalità su di un insieme di informazioni, al fine di risolvere un determinato problema. → Parliamo sempre di informazioni e non di dati (Informazione = dato1+dato2+…)
Algoritmo
Per algoritmo intendiamo: Un testo contenente una successione ben definita di prescrizioni o istruzioni che esprime l'insieme delle azioni da compiere per poter risolvere uno specifico problema.
Programma
Programma: codifica di un dato algoritmo in un opportuno linguaggio di programmazione (ossia linguaggio elaborabile da un computer)
- Grammatica: uso di un particolare vocabolario.
- Sintassi: correttezza formale delle “frasi” scritte nel programma, rispetto al linguaggio di programmazione scelto.
- Semantica: correttezza sostanziale del programma in termini di “significato”. → Un programma può essere corretto sintatticamente ma scorretto semanticamente (non risolve correttamente il problema per cui è stato ideato).
Processo
Processo: Qualsiasi programma o parte di esso opportunamente tradotto in L.M. (linguaggio macchina) e caricato in memoria principale diventa un processo.
- Se il pc ha una RAM piccola (es: 1 GB) non posso aprire troppi processi.
- Processi di sistema
- Processi utente / applicativi
Tipi di informazione
- Testo (caratteri)
- Numeri
- Suoni
- Immagini
Le informazioni sono concetti astratti che esistono indipendentemente dalla loro rappresentazione, per essere comunicate devono essere elaborate. Tutto ciò che ci circonda è informazione.
Informazione digitale
Codifica → Rappresentazione → Informazione digitale → Decodifica
Capitolo 2 – La rappresentazione dell'informazione
Negli elaboratori viene usata una rappresentazione binaria che usa due soli simboli “0” e “1”. Le ragioni sono principalmente di tipo tecnologico.
BIT → entità minima di informazione, può assumere solo due valori (0 o 1) con un bit si possono rappresentare due informazioni.
Per poter rappresentare più informazioni si usano aggregazioni (sequenze) di bit. Con un'aggregazione di N bit si possono decodificare 2N informazioni diverse.
BYTE → aggregazione di 8 bit. Si possono codificare 28 = 256 informazioni.
Codifica dell'informazione
Idea di base: Usare
- presenza/assenza di carica elettrica
- passaggio/non passaggio di corrente/luce
BInary digiT (cifra binaria): il BIT
Usiamo cioè una rappresentazione binaria (a due valori) dell'informazione.
- Con 1 bit rappresentiamo solo 2 diverse informazioni: si/no - on/off - 0/1 - vero/falso
- Mettendo insieme più bit possiamo rappresentare più informazioni: 2 bit = 4 informazioni
00 - 01 - 10 - 11
ESEMPIO: un esame può avere quattro possibili esiti
- ottimo 00
- discreto 01
- sufficiente 10
- insufficiente 11
Con 2 bit si codificano 4 informazioni (22)
Con 3 bit si codificano 8 informazioni (23)
...
Con N bit si codificano 2N informazioni
Se dobbiamo rappresentare più di 4 informazioni occorre aggiungere il 3° bit, tante parole quanti sono i concetti
000, 001, 010, 011, 100, 101, 110, 111
Se dobbiamo rappresentare 21 concetti diversi mi servono:
2N ≥ 21 dove N=5
25 = 32
Alcune sequenze (da 22 a 32) non vengono utilizzate
Per rappresentare 57 informazioni diverse dobbiamo usare gruppi di almeno 6 bit. Infatti:
26 = 64 > 57
Cioè un gruppo di 6 bit può assumere 64 configurazioni diverse: 000000 / 000001 / 000010 ... / 111110 / 111111
In generale, con N bit, ognuno dei quali può assumere 2 valori, possiamo rappresentare 2N informazioni diverse.
Viceversa: Per rappresentare M informazioni dobbiamo usare N bit, in modo che: 2N ≥ M
Nota: Per rappresentare il doppio delle informazioni è sufficiente aggiungere 1 bit
Multipli del byte
Di solito si usano i multipli del byte:
- Kilo KB 210 (~ mille byte, 1024)
- Mega MB 220 (~ un milione, 1KBx1024)
- Giga GB 230 (~ un miliardo, 1MBx1024)
- Tera TB 240 (~ mille miliardi, 1GBx1024)
Codifica dei caratteri
È necessario individuare un codice numerico per rappresentare i caratteri.
Il codice ASCII (American Standard Code for Interchange Code) usa i primi 7 bit di ogni byte:
- 27 = 128 caratteri diversi
- Sufficienti per l'alfabeto anglosassone.
Per la codifica di 127 caratteri standard sono sufficienti 7 bit (ASCII standard) – Talvolta occorre utilizzare:
- 8 bit (ASCII esteso) 256 caratteri
- 16 bit (UNICODE) 65535 caratteri (codifica tutti gli alfabeti)
- MS Windows usa un codice proprietario a 16 bit per carattere, simile ad UNICODE ma non totalmente standard chiamato multilanguage
- 8 bit (EBCDIC) usato per i display lcd
In sintesi...
- Alfabeto anglosassone → per codificare ogni simbolo sono sufficienti 7 bit (ASCII standard)
- 8 bit (ASCII esteso)
- 16 bit (UNICODE)
- MS Windows usa un codice proprietario a 16 bit per carattere, simile ad UNICODE
ASCII = American Standard Code for Information Interchange
I caratteri sono combinazioni diverse di bit.
Come fa il PC a decodificare testo: inizia a prendere i primi 8 bit e li va a cercare nella combinazione ASCII, poi procede con i seguenti 8 bit.
Esempio: INFORMATICA 01000001 01001001 01001110 01000110 01001111 01010010 0100110 01000001 01010100 01001001 01000011
I N F O R M A T I C A
Codifica delle parole
Per la lettura di un file ASCII (ad esempio un normalissimo file pippo.txt) il sistema memorizza lunghe sequenze di codici ASCII.
La decodifica consiste nella suddivisione in blocchi di 8 bit e la ricerca del simbolo grafico corrispondente.
Codifica dei numeri
- Il codice ASCII consente di codificare le cifre decimali da “0” a “9” fornendo in questo modo un metodo per la rappresentazione dei numeri.
- Il numero 324 può essere rappresentato dalla sequenza di byte: 00110011 00110010 00110100
3 2 4
ATTENZIONE si tratta di rappresentazione di simboli e non del valore numerico 324 da utilizzare nelle operazioni matematiche → Da qui deriva esigenza di codice binario.
Codifica dei numeri
Decimale
Sistema posizionale in cui ogni cifra di un numero assume un valore che dipende dalla sua posizione.
Il sistema decimale (base 10):
245 = 2 x 102 + 4 x 101 + 5 x 100
851 = 8 x 102 + 5 x 101 + 1 x 100
Si deve fare la somma dei prodotti di ciascuna cifra moltiplicata per la base elevata all'esponente che rappresenta la posizione della cifra stessa (partendo da 0).
Binario
Utilizza una notazione posizionale basata su 2 cifre (0 e 1) e sulle potenze di 2:
Esempio: 10110 = 1 x 24 + 0 x 23 + 1 x 22 + 1 x 21 + 0 x 20 = 22
Esempio: 1010101 = 1 x 26 + 0 x 25 + 1 x 24 + 0 x 23 + 1 x 22 + 0 x 21 + 1 x 20 = 85
Ottale
Utilizza una notazione posizionale basata su 8 cifre (0,1, ..., 7 ) e sulle potenze di 8:
Esempio: 1101 = 1 x 83 + 1 x 82 + 0 x 81 + 1 x 80 = 577
Per evitare problemi si scrive la base come pedice del numero (Esempio: 11018, 10012, 100110)
Esagesimale
Utilizza una notazione posizionale basata su 16 cifre (0,1,2,...,9,A,B,C,D,E,F) e sulle potenze di 16:
Esempio: 1011 = 1 x 163 + 0 x 162 + 1 x 161 + 1 x 160 = 4113
Esempio: C3B5 = 12 x 163 + 3 x 162 + 11 x 161 + 5 x 160 = 50101
Permette di raggruppare lunghe sequenze di bit e scriverle in modo più breve.
Conversione dei numeri
Da decimale (base 10) a binario (base 2)
Per convertire un numero in base 2 si devono dividere tutti i numeri per 2 fino ad arrivare a 0.
Esempio: 157
- 157 / 2 resto 1
- 78 / 2 resto 0
- 39 / 2 resto 1
- 19 / 2 resto 1
- 9 / 2 resto 1
- 4 / 2 resto 0
- 2 / 2 resto 0
- 1 / 2 resto 1
10011101
Un metodo pratico: Dobbiamo ricordare le potenze di 2, trovare la potenza minore che si avvicina al numer, sottrarre il suo valore al mio numero.
Esempio: 157 = 128 + 16 + 8 + 4 + 1 = 10111101
Conversione da binario (base 2) a decimale (base 10)
Esempio: 10011101 = 128 + 16 + 8 + 4 + 1 = 157
Oppure... Da destra verso sinistra si moltiplica ogni cifra per le potenze progressive del 2.
Esempio: 1010110 = 1 x 26 + 0 x 25 + 1 x 24 + 0 x 23 + 1 x 22 + 1 x 21 + 0 x 20 = 86
NOTA: Numeri binari se finiscono con 0 sono PARI. Se finiscono con 1 sono DISPARI
A > B che implica che qualsiasi siano i valore di A e B, A > B.
Conversione da binario (base 2) a esagesimale (base 16)
Esempio: 10011101
- 8 4 2 1 | 8 4 2 1
- 1 0 0 1 | 1 1 0 1
9 D = 157
Addizione binaria
10111001 + (185)
10000100 = (132)
===========
100111101 (317)
Overflow
Errore che avviene quando si esce dal numero di cifre possibili.
Dato N cifre binarie, è possibile rappresentare i numeri da 0 a 2N-1
Esempio: 8 bit = da 0 a 255 → non è possibile rappresentare il numero 256.
Solitamente si usano 32 bit (4 byte) per rappresentare i numeri nei PC.
Interi con segno
111 (neg) = 001 = -1
- 1010 (neg) = 0110 = -6
- 0000 +0
- 1000 -0
- 0001 +1
- 1001 -1
- 0010 +2
- 1010 -2
- 0011 +3
- 1011 -3
- 0100 +4
- 1100 -4
- 0101 +5
- 1101 -5
- 0110 +6
- 1110 -6
- 0111 +7
- 1111 -7
E MI MANGIO SEMPRE UN BIT PER IL SEGNO.
Complemento a 2
Ci permette di rappresentare i numeri da -8 a +7.
- 0000 +0
- 0001 +1
- 1001 -7
- 0010 +2
- 1010 -6
- 0011 +3
- 1011 -5
- 0100 +4
- 1100 -4
- 0101 +5
- 1101 -3
- 0110 +6
- 1110 -2
- 0111 +7
- 1111 -1
Si fissa un'ampiezza di n bits detta precisione.
Il bit più significativo (a sinistra) determina il segno: 0 corrisponde a +, 1 a -
- I bits restanti sono la codifica binaria se il numero è positivo
- Se il numero è negativo:
- Per calcolarne il valore assoluto si trasforma la sequenza
- Si parte da destra verso sinistra e la si lascia invariata fino al primo 1,
- dopodiché si complementano i bit rimasti (scambio di 0 con 1 e viceversa): la codifica binaria risultante è il valore assoluto.
Esempio: convertire -30 in complemento a 2:
-30 = 16 + 4 + 2
00011110 (+30)
11100010 (-30)
Serve per rappresentare i numeri CON SEGNO e per compiere corrette operazioni aritmetiche (es: sottrazione binaria).
Numero di bit = N, 2N-1 è il numero di numeri positivi e negativi rappresentabili.
4 bit → 8 positivi e 8 negativi.
Primo bit: 0 → numero positivo. 1 → numero negativo.
Sottrazione binaria
Si opera con il sistema del complemento a due
10111001 - (185)
00010100 = (20)
11101100
===================
110100101 (165)
Cifre rappresentabili
- Nsistema decimale = 99...99 = 108 – 1
- Nsistema binario = 11...11 = 28 - 1
Esempio: 11111111 (8 bit) = 28 - 1 = 255.
Per rappresentare il n. 256 serve un bit in più: 100000000 = 1*28 = 256.
Overflow
Deciso il numero di cifre a disposizione si fissa anche il numero massimo rappresentabile, numeri più grandi causano problemi di overflow.
Esempio: 4 cifre
In base 10: 9999 + 1 = 10000
In base 2: 1111 + 1 = 10000 (= 1610)
In base 16: FFFF + 1 = 10000 (= 6553610)
In base 8: 7777 + 1 = 10000 (= 409610)
Numeri a virgola mobile (floating point)
-2Numero 12,52 = 1252/100 = 1252 * 10-2
Un numero decimale è rappresentato come un intero moltiplicato per una opportuna potenza di 10, cioè con una coppia: <1252; -2>
- Mantissa
- Esponente
Rappresentazioni a 16 bit
- 2 bit per i segni
- 9 bit per il valore assoluto della mantissa
- 5 bit per il valore assoluto dell'esponente
Rappresentazioni a 32 bit
- 2 bit per i segni
- 20 bit per il valore assoluto della mantissa
- 10 bit per il valore assoluto dell'esponente
Con lo stesso metodo possiamo rappresentare numeri molto grandi.
Con 8 bit:
- 5 bit di mantissa: 11111 = 31
- 3 bit di esponente: 111 = 77
11111111 = 31 * 107 = 310 milioni
Mentre, con la notazione classica, con 8 bit rappresentiamo al massimo il 255.
Purtroppo però non si può utilizzare sempre perché si perde in precisione
Esempio: 5 cifre (decimali) → 4 per la mantissa, 1 per l’esponente.
546,768 <5467; -1> che diventa un numero compreso tra 546,7 e 546,8.
Rappresentazione delle immagini
Immagini in bianco e nero
Dividere l’immagine in una griglia a righe orizzontali e verticali.
Ogni quadratino della griglia è un pixel.
- Codificare ogni pixel con: 0 se il pixel è bianco, 1 se il pixel è nero
Il formato dell’immagine (BMP, Jpeg, Tiff, ecc.) determina anche la partenza: convenzionalmente si parte dal 1° quadratino basso a sinistra.
Risoluzione 7 x 4:
- 0000000
- 0111100
- 0110000
- 0100000
Risoluzione in bit in B/W:
- 0000000
- 0111100
- 0110000
- 0100000
Immagine ricostruita:
- 0111100
- 0110000
- 0100000
Aumentiamo la risoluzione a 14 x 8
Quindi: le immagini sono rappresentate con un certo livello di approssimazione, o meglio, di risoluzione, ossia il numero di pixel usati per riprodurre l’immagine:
- 640 x 480 pixel; 800 x 600 pixel
- 1024 x 768 pixel; 1280 x 1024 pixel
- 1400 x 1280 pixel
È importante anche il dot pitch, il grado di definizione del pixel: 0,25 - 0,28 in quanto maggior risoluzione e minor dot-pitch garantiscono immagini migliori.
- Esistono immagini in B/W (1 solo bit per il colore)
- Oppure immagini a livelli di grigio o colori
Con 8 bit si codificano 256 livelli di grigio. (ottenuti regolando la luminosità del pixel)
Con 8 bit si rappresentano 256 colori, con 16 bit 64.000 colori, con 24 bit 16 milioni di colori diversi per pixel e con 32 bit sempre 16 milioni di colori in true color
Attenzione: fare sempre attenzione nel calcolo a bit e byte 256 colori = 1 byte per pixel
- 1 pixel a 2 colori 1 bit
- 1 pixel a 256 colori 1 byte (1 * 8 bit)
- 1 pixel a 65535 colori 2 byte (2 * 8 bit)
- 1 pixel a 16 Mil. di colori 3 byte (3 * 8 bit)
La codifica delle immagini... in sintesi
Pixel: unità minima dell’immagine.
Risoluzione: numero di pixel utilizzati (Risoluzioni tipiche: 800 x 600; 1024 x 768; 1280 x 1024)
Bit e Byte: definiscono lo spazio necessario a memorizzare un’immagine.
- Assegnando un bit ad ogni pixel è possibile codificare solo immagini in bianco e nero.
- Per codificare le immagini con diversi livelli di grigio oppure a colori si usa la stessa tecnica: per ogni pixel viene assegnata una sequenza di bit.
- Per memorizzare un pixel non è più sufficiente un solo bit. Ad esempio, se utilizziamo 4 bit possiamo rappresentare 24=16 livelli di grigio o 16 colori diversi, mentre con 8 bit ne possiamo distinguere 28=256, ecc.
2N ≥ M; M = numero di colori; SO = r x p
Dove SO è lo spazio occupato (in bit), r è la risoluzione (in pixel) e p è la profondità del colore (in bit per pixel).
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.