Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


informatica di base (SC), Appunti di Fondamenti di informatica

appunti completi informatica di base a.s. 2024/2025

Tipologia: Appunti

2023/2024

Caricato il 01/12/2025

4trnmyzk9b
4trnmyzk9b 🇮🇹

5 documenti

1 / 42

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Informatica di base
PROGRAMMA
1. Lʼinformazione e lʼinformatica"
2. Elaborazione dei dati"
3. Crittografia e sicurezza informatica"
4. Architettura degli elaboratori"
5. AI: Intelligenza artificiale"
6. Utilizzo di sistemi informatici"
L’INFORMAZIONE E L’INFORMATICA
1. Lʼinformatica: la storia in breve"
2. Rappresentazione delle informazioni"
#a. Sistema binario e sistemi alternativi"
#b. Codifiche per valori numerici"
#c. Rappresentazione dei dati"
3. Misure ed unità di misura"
ELABORAZIONE DATI
1. Introduzione al concetto di algoritmo"
2. Processo di digitalizzazione"
3. Compressione dei dati"
CRITTOGRAFIA E SICUREZZA INFORMATICA
1. Nascita della crittografia"
2. Crittografia moderna"
#a. Chiave simmetrica"
#b. Chiave asimmetrica"
3. Consapevolezza dei rischi informatici"
4. Gestione sicura delle credenziali"
ARCHITETTURA DEGLI ELABORATORI
1. Hardware & Software"
2. Sistema operativo"
3. Componenti principali"
AI: INTELLIGENZE ARTIFICIALI
1. Una dicile definizione"
2. Lʼaltra faccia della medaglia"
3. Opportunità e rischi"
4. Open source"
UTILIZZO DI SISTEMI INFORMATICI
1. Esercitazione laboratoriale"
#a. Utilizzo base del pc"
#b. Termini base"
25/02/2025"
Storia dell’informatica
Nella maggior parte delle lingue ci sono due parole per parlare dell’informatica: computer science
e information technology; mentre in italiano abbiamo soltanto la parola informatica."
La computer science è lo studio dei fondamenti teoretici dell'informazione e della sua
elaborazione, e delle applicazioni e delle implementazioni che ne derivano. Questa disciplina
include svariati argomenti, fra i quali gli algoritmi, i linguaggi di programmazione e le architetture
degli elaboratori."
-studio teorico di tutto il mondo informatico, la base"
L'Information Technology è un campo nel quale si utilizzano computer, software e altre
tecnologie con lo scopo di elaborare e trasmettere informazioni. Ne fanno parte, ad esempio, Io
sviluppo hardware/software, amministrazione di architetture di rete e la cybersecurity."
-il mettere in pratica (trasmissione dei dati, realizzazione, costruzione delle infrastrutture)"
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a

Anteprima parziale del testo

Scarica informatica di base (SC) e più Appunti in PDF di Fondamenti di informatica solo su Docsity!

Informatica di base

PROGRAMMA

  1. Lʼinformazione e lʼinformatica
  2. Elaborazione dei dati
  3. Crittografia e sicurezza informatica
  4. Architettura degli elaboratori
  5. AI: Intelligenza artificiale
  6. Utilizzo di sistemi informatici L’INFORMAZIONE E L’INFORMATICA
  7. Lʼinformatica: la storia in breve
  8. Rappresentazione delle informazioni a. Sistema binario e sistemi alternativi b. Codifiche per valori numerici c. Rappresentazione dei dati
  9. Misure ed unità di misura ELABORAZIONE DATI
  10. Introduzione al concetto di algoritmo
  11. Processo di digitalizzazione
  12. Compressione dei dati CRITTOGRAFIA E SICUREZZA INFORMATICA
  13. Nascita della crittografia
  14. Crittografia moderna a. Chiave simmetrica b. Chiave asimmetrica
  15. Consapevolezza dei rischi informatici
  16. Gestione sicura delle credenziali ARCHITETTURA DEGLI ELABORATORI
  17. Hardware & Software
  18. Sistema operativo
  19. Componenti principali AI: INTELLIGENZE ARTIFICIALI
  20. Una difficile definizione
  21. Lʼaltra faccia della medaglia
  22. Opportunità e rischi
  23. Open source UTILIZZO DI SISTEMI INFORMATICI
  24. Esercitazione laboratoriale a. Utilizzo base del pc b. Termini base 25/02/

Storia dell’informatica

Nella maggior parte delle lingue ci sono due parole per parlare dell’informatica: computer science e information technology; mentre in italiano abbiamo soltanto la parola informatica.

  • La computer science è lo studio dei fondamenti teoretici dell'informazione e della sua elaborazione, e delle applicazioni e delle implementazioni che ne derivano. Questa disciplina include svariati argomenti, fra i quali gli algoritmi, i linguaggi di programmazione e le architetture degli elaboratori.

- studio teorico di tutto il mondo informatico, la base

  • L' Information Technology è un campo nel quale si utilizzano computer, software e altre tecnologie con lo scopo di elaborare e trasmettere informazioni. Ne fanno parte, ad esempio, Io sviluppo hardware/software, amministrazione di architetture di rete e la cybersecurity.

- il mettere in pratica (trasmissione dei dati, realizzazione, costruzione delle infrastrutture)

L’informatica nasce nel XX secolo a.C. con l’ abaco , come primo strumento di calcolo meccanico manuale, in Mesopotamia/Cina per il commercio. C’era bisogno di una macchina che supportasse questa necessità. É uno strumento che ci permette di tenere un po di memoria e ci facilita i conti.

  • Nasce il concetto di macchina come ausilio / supporto all’uomo per eseguire certe azioni Nel II secolo a.C. nasce la “Macchina di Anticitera” (isola della Grecia): strumento/macchina che serviva a fare revisioni astronomiche, seguire movimenti di stelle/pianeti. Specie di calcolatore/ computer che permetteva di seguire determinate rotte. Nel 1641 Blaise Pascal inventa il calcolatore di Pascal chiamato anche “Pascalina” che serve per svolgere addizioni, cominciamo ad avere il concetto di genericità.
  • Come funzionava la Pascalina: ruote dentate, ingranaggi e meccanica Nello stesso periodo Leibniz inizia a studiare il sistema binario per eseguire calcoli, perché per lui aveva delle proprietà interessanti, non con uno scopo specifico probabilmente.
  • (^) Sistema binario : sistema in cui si usano solo due cifre per rappresentare i numeri (0 e 1) Leibniz nello stesso periodo studia anche una macchina in grado di moltiplicare e dividere Negli anni 20 dell’ottocento Charles Babbage che vuole anche lui fare calcoli, vuole una macchina più forte rispetto a quella di Pascal, per fare più cose, in quegli anni (rivoluzione industriale) la meccanica è sorpassata, quindi viene creata una macchina analitica (complicata) che fallisce perché non sempre funziona, la tecnologia dell’epoca non era ancora pronto per lo sviluppo di questa macchina. Importante perché per la prima volta si introduce il concetto di programmabilità e di suddivisione dei compiti della macchina: una parte della macchina serve per gli input e una per gli output (risultati). Nel 1848 Ada Lovelace scrive il primo programma (per la macchina di Babbage). Diventa il primo programmatore della storia (prima teorica dell’informatica).
  • riprende i concetti di Babbage e introduce il concetto di programma e di conseguenza crea anche il primo concetto di algoritmo
  • pone le basi
  • capisce che questo tipo di macchine non processano solo numeri ma anche simboli Nel 1890 Herman Hollerith , ingegnere americano, capisce che non si può fare un censimento degli Stati Uniti che duri 10 anni, crea così una macchina tabulatrice dove riesce ad accorciare i tempi (da circa 10 anni a circa 3 anni), l’incremento di prestazioni è così, notevole.
  • Torna concetto di macchina come supporto dell’uomo per velocizzare/migliorare le prestazioni
  • Fonda i IBM. multinazionale enorme Nel 1928 David Hilbert , matematico, apre 23 questioni al Congresso Internazionale dei Matematici, problemi seri e pesanti, tra le questioni che apre ce ne son 3 particolarmente importanti:
  1. Completezza dell'aritmetica: è vero che in un sistema aritmetico posso dimostrare tutto? ogni cosa ha una risposta? vuole sapere se matematicamente, all’interno dell’aritmetica, ogni cosa ha una riposta.
  2. Coerenza: quello che dimostro è vero? se posso dimostrare ogni cosa ma poi non so se è vera cosa mi serve averla dimostrata?
  3. Problema della decisione: problema informatico che si può declinare in molti modi, tra cui possiamo sempre dire quando due entità sono uguali, oppure esistono dei calcoli/ dimostrazioni che non hanno mai fine? esistono delle dimostrazioni per le quali a priori posso dire che non hanno soluzione? QUESTI PROBLEMI SONO IMPORTANTI PER DUE MOTIVI: Stimolano Gödel e Turing (padri fondatori dell’informatica) e iniziano a lavorarci.
  • Gödel risponde a due principi quello completezza e coerenza: la completezza di fatto non esiste e la coerenza esiste ma a patto di fare sistemi con al loro interno qualcosa di non dimostrabile. Possiamo avere la completezza pere cose banali o la coerenza per cose banali oppure dobbiamo rinunciare a qualcosa —> se vogliamo la completezza in cose complicate non possiamo, se vogliamo la coerenza in cose complicate non possiamo. C’è il bisogno di capire

Negli anni 60 abbiamo Noam Chomsky , uno dei padri dell’informatica, perché con i suoi studi di linguistica riesce a formalizzare i linguaggi di programmazione, a dire cosa di può fare con un linguaggio e cosa no, chi può riconoscerlo e chi no. Apre la strada al mondo moderno dell’informatica intesa come programmazione dei sistemi. Michael Rabin si occupa di complessità computazionale (quante risorse di calcolo mi servono per risolvere determinati problemi) e crittografia. Nel 1965 Gordon Moore , scienziato e cofondatore di INTEL, fa una previsione e dice che “Il numero di transistor all'interno di un microchip raddoppia circa ogni anno” , poi si scopre che aveva in parte ragione perchè raddoppia ogni anno e mezzo.

  • indica numero di transistor per determinati tipi di processori
  • non varrà per sempre e si inizia a cercare nuova legge Nel 1969 si inizia a parlare di reti (ARPANET), una rete militare (Guerra Fredda) progettata per essere resiliente ad attacchi nucleari: si cerca di creare rete dove se si toglie un filo della rete il resto rimane integro, si mettono insieme cerchi di ricerca e università creando struttura di dove non dovrebbe andare giù tutta la rete in caso di attacco.
  • nasce come solo progetto militare ma si capisce che se si stende ai civili potrebbe portare tanti vantaggi —> viene aperta a tutto il mondo e diventa l’”internet” Nel 1971 nasce Creeper (primo virus informatico) —> di conseguenza il primo antivirus: Reaper
  • esperimento benigno per capire se si era pronti ai potenziali lati negativi Nel 1974 nascono Microsoft ed Apple.
  • Bill Gates e Paul Allen fondano Microsoft, azienda specializzata nello sviluppo di software. Decide il mercato dei computer esploderà, che programmare sistemi operativi sarà il futuro, quindi compra un piccolo sistema operativo, fa qualche modifica e lo vende. Lo vende bene, era già ricco di famiglia e fa fortuna.
  • Steve Jobs e Steve Wozniak : fiutano il mercato in maniera diversa: secondo loro il potenziale non stava nel software, partono dall'ecosistema chiuso con hardware e software insieme. Nel 1983 abbiamo TCP/IP, modello protocollare che viene reso aperto e trasforma l’idea di rete militare nella spina dorsale dell’Internet moderno.
  • si comincia a collaborare per trovare un insieme di regole per la comunicazione (internet) che siano comuni e condivise a tutti
  • progetti militare chiuso si trasforma in un regalo aperto a tutti Nel 1989 Tim Berners-Lee crea il WWW (World Wide Web) con l’obiettivo di condividere automaticamente e velocemente le informazioni tra scienziati, università ed altre istituzioni e crea nel 1991 il primo sito internet. Alla fine degli anni 90 bisognava riuscire a raggiungere le pagine web, tutti vogliono stare nel web, nascono i primi pionieri e browser, motori di ricerca e applicazioni che usano il web Google, Amazon, Ebay, PayPal, Yahoo!. Negli anni 2000 i social media, della comunicazione online e più avanti le intelligenze artificiali, del machine learning, del cloud computing e Io sviluppo di tecnologie mobile (larga adozione dei social media). Adesso: sviluppo dellʼIoT (Internet of Things), Blockchain, quantum computing ed estremi passi avanti nelIʼintelligenza artificiale. COS'È L'INFORMAZIONE? Definizioni:
  • Notizia, dato o elemento che consente di avere conoscenza più o meno esatta di fatti, situazioni, modi di essere. In senso più generale, anche la trasmissione dati e l'insieme delle strutture che la consentono. (Vocabolario Treccani)
  • L'informazione è l'insieme di dati, correlati tra loro, con cui un'idea (o un fatto) prende forma ed è comunicata. (Wikipedia) Un'informazione è una correlazione di dati che viene comunicata.

The word "information" has been given different meanings by various writers in the general field of information theory. It is likely that at least a number of these will prove sufficiently useful in certain applications to deserve further study and permanent recognition. It is hardly to be expected that a single concept of information would satisfactorily account for the numerous possible applications of this general field. (Shannon) (fino a min 5) Bisogna condividere l'informazione in modo univoco; l'info deve essere:

• immagine

- insieme di colori

- scala di grigi

• suoni

- insieme di note

Per condividere un'informazione in modo univoco in informatica si usa: il sistema binario.

Sistema binario

Il sistema binario è un sistema di numerazione che utilizza solo due simboli per rappresentare i numeri (solitamente 0 e 1; ma possono essere anche altri numeri). Il sistema binario è la base del sistema di numerazione utilizzato in informatica ed elettronica, dove ogni informazione digitale viene codificata in sequenze di 0 e 1, chiamati bit. Per noi il codice binario è difficile da decifrare, ma per il computer è molto più semplice. Per riconoscere qualcosa di diverso dal sistema binario hanno bisogno di molta energia e addestramento. NASCITA DEL SISTEMA BINARIO: Un vero e proprio sistema binario è stato sviluppato per la prima volta nel XIX secolo dal matematico e filosofo inglese George Boole , che si basò sui precedenti lavori di Leibniz. Boole sviluppò la logica booleana, un sistema di algebra simbolica che utilizza solo due valori, vero e falso (1 e 0), per rappresentare le variabili. Questo sistema di rappresentazione binaria forma la base dei sistemi digitali utilizzati ancora oggi. Il sistema binario è stato poi ulteriormente sviluppato da Claude Shannon , un matematico americano, negli anni '40 e '50 del XX secolo. Shannon ha dimostrato che qualsiasi tipo di informazione può essere rappresentata utilizzando un sistema binario, aprendo la strada alla creazione di dispositivi di elaborazione dati digitali. (19min) TRASFORMAZIONE DEL CODICE BINARIO A DECIMALE:

  1. Scrivi il numero binario.
  2. Partendo dalla destra, assegna a ciascuna cifra una potenza di 2, partendo da elevato alla O e aumentando di 1 l'esponente ad ogni cifra successiva.
  3. Moltiplica ciascuna cifra per il valore della potenza. VANTAGGI SVANTAGGI Utilizza solo due simboli quindi risulta molto semplice e facile da capire e utilizzare. Richiede un maggior numero di cifre per rappresentare lo stesso numero rispetto alla codifica decimale , il che può rendere la rappresentazione dei numeri più complessa e difficile da comprendere per gli esseri umani. Facilmente implementabile in circuiti hardware , quindi è ideale per l'elaborazione e la memorizzazione di informazioni in dispositivi elettronici. Lo stesso vale per rappresentare caratteri e simboli non numerici. Aumentano quindi le dimensioni dei file e la quantità di spazio di archiviazione necessaria. Facilmente comprimibile e criptabile (utile per la trasmissione e memorizzazione sicura dei dati) Può essere più suscettibile a errori di trasmissione (maggiore sensibilità a interferenze/disturbi)

Come vengono rappresentati i numeri all’interno del sistema binario? Per digitalizzare ci sono molti problemi, non è semplice come sembra.

Rappresentazione dei numeri binari

Rappresentazioni più famose:

• Segno e modulo: è la base, più semplice e naturale per noi

• Complemento a 1: evoluzione del segno e modulo che però non lo sostituisce

• Complemento a 2: evoluzione del complemento 1, la più adottata

• Codifica a offset / Eccesso-k

Segno e modulo

• Il segno è il simbolo che ci dice il segno (+ o -)

• Il modulo è il valore assoluto

Noi rappresentiamo i numeri in base 10: abbiamo 10 cifre da 0 a 9 più due simboli per positivo e negativo. Quando stiamo andando a rappresentare i numeri interi, andiamo ad utilizzare 12 simboli —> effettivamente il binario ha 2 simboli quindi bisogna trovare il modo di rappresentare il

  • e il - con 0 e 1. La codifica segno e modulo è come il sistema in base 10, solo che, invece che utilizzare il segno + e il segno - utilizziamo il simbolo 0 e 1.

• Il simbolo 0 significa +

• Il simbolo 1 significa -

Segno si inserisce il più a sinistra possibile: abbiamo, da sinistra verso destra, il segno e poi tutte le cifre del modulo del numero Esempio:

- (01001) —> se anteponiamo come bit del segno 0, il valore rappresentato è 9

- (11001) —> se anteponiamo come bit del segno 1, il valore rappresentato è -

Quando stiamo esprimendo dei numeri è necessario definire il numero di bit che stiamo utilizzando per quel tipo di rappresentazione. Questo perché la memoria del computer è finita —> il computer deve saper cil numero di cifre che andremo ad utilizzare (bisogna specificarlo).

  • Se il computer è implementato per fare calcoli su 8 bit, non riuscirà a fare calcoli su 9 bit. Con questo tipo di codifica si può arrivare da -2+N-1^ a +2+N-
  • N è il numero di bit che stabilisco
  • Se noi in base 10 decidiamo di rappresentare un numero con 3 simboli, dobbiamo calcolare quanti simboli stiamo usando: 1 per il segno e gli altri per le cifre. Le cifre più piccole sono 0e 0 mentre le più grandi 9 e 9 —> il limiti saranno da -99 a +
  • In questa codifica qual è il valore del numero binario 0000? Prendiamo la cifra più a sinistra (cifra + significativa) che dovrebbe avere il valore massimo, estrapoliamo il segno (la cifra significativa) che è + poi guardiamo il modulo e trasformandolo da base 2 a base 10 rimane
  1. Il risultato è +
  • In questa codifica qual è il valore del numero binario 1000? Il risultato è -. Nella codifica segno e modulo abbiamo due valori per lo 0 (+0 e -0).
  • Se creiamo un numero con soli zeri sarà sicuramente positivo
  • Possiamo sommare e aggiungere + 1 fin quando arriviamo al valore massimo della codifica, in questo caso +
  • In questo caso se sommiamo 1 a +127 arriviamo a -
  • In questo tipo di codifica -1 +1 fa -
  • Quando arriviamo a -127 e aggiungiamo +1 otteniamo +
  • (^) E’ una struttura ciclica , ad un certo punto ricominciamo da capo. Con tre simboli in binario posso rappresentare:
  • 000
  • 001
  • 010
  • 011
  • 100
  • 101
  • 111
  • 110 La parte del resto non la posso gestire e la “butto via” I primi 4 numeri sono positivi e gli altri 4 negativi. VANTAGGI SVANTAGGI Notazione molto naturale: il primo bit rappresenta il segno e il resto rappresenta il modulo. Doppia rappresentazione dello 0 (spreco, complicazione). Addizione e sottrazione si comportano diversamente in base al segno. La comparazione per essere eseguita necessita prima del controllo del segno, poi del controllo sul modulo

Complemento a 2

Anche in questa codifica, il bit più significativo rappresenta il segno, con valore 0 che rappresenta i numeri interi positivi e 1 quelli negativi. I restanti n-1 bit rappresentano il modulo:

• Per i numeri positivi, il modulo corrisponde al valore binario indicato.

• Per i numeri negativi, si complementano/invertono tutti i bit, poi si somma 1.

Ne consegue che i numeri positivi saranno rappresentati in maniera identica al complemento a 1, e lo zero otterrà un'unica rappresentazione. Come sempre, è necessario definire il numero di bit con i quali verrà rappresentato il numero. Nello specifico, con questa codifica avremo i seguenti limiti: -2(N-1) < x < +2(N-1) Con N numero di bit, x il valore da rappresentare. VANTAGGI SVANTAGGI VANTAGGI SVANTAGGI Esiste finalmente un'unica notazione per lo zero, c h e è molto comoda quando il computer vuole verificare la presenza di un risultato pari a 0. La notazione non è molto semplice da capire perché è molto diversa dal modo convenzionale di rappresentare i numeri con segno.

Non c’è più il doppio zero, mentre i calcoli si fanno come li faremmo noi.

Offset o Eccesso-K

Questa codifica prevede di aggiungere un valore costante (chiamato valore di bias) al valore assoluto del numero da rappresentare, prima di convertirlo in binario. In questo modo, il bit del segno non è necessario, poiché il valore di bias assicura che tutti i numeri rappresentati saranno positivi. Ad esempio, consideriamo la codifica in eccesso 3 del numero 7. Il valore di bias è 3, quindi dobbiamo aggiungere 3 a 7, ottenendo 10. Convertiamo quindi 10 in binario, ottenendo 1010, che rappresenta il numero 7 nella codifica in eccesso 3. Come sempre, è necessario definire il numero di bit con i quali verrà rappresentato il numero. Nello specifico, con questa codifica avremo i seguenti limiti: 0 - bias/eccesso <= x < +2" - bias/eccesso - Con N numero di bit, x il valore da rappresentare. Per convertire un numero decimale utilizzando questa notazione si procede come segue:

  1. Aggiungere l'offset al valore del numero intero da rappresentare.
  2. Convertire il risultato in binario. È molto comodo per il computer eseguire l'aritmetica. L'operazione di addizione dà subito il risultato corretto. VANTAGGI SVANTAGGI VANTAGGI SVANTAGGI Esiste un'unica notazione per lo zero, che è molto comoda quando il computer vuole verificare la presenza di un risultato pari a 0. La notazione non è molto semplice da capire perchè è molto diversa dal modo convenzionale di rappresentare i numeri. Mantenere l'ordine abituale dei numeri (i negativi sono i minori rispetto ai positivi). Richiede di trasformare i numeri secondo una tabella. Non ci si cura del segno. Il bit più significativo, che indica il segno, ha valore contrario rispetto alle notazioni.

- NaN (not a number)

- Infinito positivo

- Infinito negativo

- Zero

Un grosso problema della notazione in virgola mobile è che non sempre riesce a sommare una quantità enorme con una minuscola.

- Un oceano + 1 goccia rimane un’oceano

Passi di trasformazione da numero decimale a numero in virgola mobile:

  1. Impostazione del segno
  2. Trasformazione in virgola fissa
  3. Passaggio alla forma normale
  4. Rappresentazione esponente in codifica eccesso
  5. Rappresentazione mantissa

Overflow

Indica il momento in cui un calcolo produce un qualcosa /un numero troppo grande per restare all’interno della rappresentazione che stiamo usando. In informatica, il termine "overflow" indica una situazione in cui un calcolo produce un risultato che supera la capacità di rappresentazione del sistema utilizzato per il calcolo stesso. In altre parole, si verifica un overflow quando il risultato di un'operazione matematica supera il valore massimo che può essere rappresentato nel sistema utilizzato. Ad esempio, su un sistema che utilizza 8 bit per rappresentare gli interi con la codifica modulo e segno, i valori rappresentabili sono compresi fra -127 e +127. Se proviamo ad aggiungere 1 a +127, questo non potrà essere 128: la situazione verrà gestita, ad esempio generando un errore.

Underflow

Quando il risultato di un operazione è troppo piccolo per essere rappresentato, quando la precisione non è sufficiente. Il termine underflow indica una situazione in cui il risultato di un’operazione matematica è troppo piccolo per essere rappresentato nel sistema utilizzato. Ad esempio, consideriamo una variabile che rappresenta numeri con la virgola con una precisione limitata. Se proviamo a eseguire un calcolo che produce un valore inferiore alla capacità di rappresentazione della variabile, si verifica un underflow. In genere, il sistema gestisce l'underflow approssimando il risultato oppure restituendo un valore speciale come Infinito negativo.

Dimensioni ed unità di misura

In informatica, l'unità di misura fondamentale è il bit, che rappresenta la più piccola quantità di dati che può essere elaborata da un computer. Il bit può assumere solo due valori, 0 o 1. Essendo il bit la più piccola misura possibile, è scomoda da utilizzare per indicare grandi quantità da dati. Esistono quindi i multipli del bit che vengono utilizzati per quantificare più comodamente le misure. Di seguito sono elencate le unità di misura più comuni utilizzate in informatica per i bit e i suoi multipli:

- Bit (b) : come accennato, il bit rappresenta un singolo valore binario di 0 o 1. L’unità di misura

più piccola.

- Byte (B) : il byte è composto da 8 bit ed è l'unità di misura utilizzata come base per i multipli più

grandi, dato che il bit risulta essere troppo piccolo.

- Kilobyte (KB) : il kilobyte è composto da 1024 byte, ovvero 2 elevato alla 10 byte. Viene spesso

utilizzato per indicare la dimensione dei file di testo e delle immagini di piccole dimensioni.

- Megabyte (MB) : il megabyte è composto da 1024 kilobyte, ovvero 2 elevato alla 20. Viene

spesso utilizzato per indicare la dimensione dei file audio e delle immagini più dettagliate.

- Gigabyte (GB) : il gigabyte è composto da 1024 megabyte, ovvero 2 elevato alla 30. Viene

utilizzato per indicare la quantità di memoria disponibile nelle memorie RAM, nelle chiavette USB e per i video di lunga durata ) ad esempio i film).

- Terabyte (TB) : il terabyte è composto da 1024 gigabyte, ovvero 2 elevato alla 40. Viene

utilizzato per indicare grandi quantità di memoria, ad esempio la dimensione del disco all'interno dei PC. Nella parte destra della tabella possiamo apprezzare come talvolta un kibibyte (con simbolo KB) venga riferito come kilobyte (indicato sempre con simbolo KB). La chiave di interpretazione giusta è sempre il contesto. Problema: ogni salto che faccio perdo precisione, perchè non è 1000 ma 1024, quindi il Terabyte sarà impreciso dic rica il 10%.

- es se devo salvare 1 terabyte di dati in una memoria da 1 terabyte non è possibile perché i

terabyte venduti non sono effettivi sono circa 930 invece che 1024. A complicare le cose arriva una collisione fra diverse notazioni che utilizzano a volte nomi differenti, a volte nomi identici. L'unità di misura base rimane sempre il byte, ma poi escono due differenti multipli:

- kilobyte (kB) —> 1024

- kibibyte (KB) —> 1000

Da qui il nuovo punto di partenza per tutti i successivi multipli ESERCIZI Quanto vale il numero 10?

- Mancano dei dati per rispondere, la domanda è incompleta.

Quale rappresentazione usiamo noi esseri umani per i numeri interi?

- Segno e modulo (modulo va bene solo per i naturali)

La codifica binaria è più compatta della codifica decimale

- Falso —> per la rappresentazione della 0 e dell’1 le codifiche sono uguali, per rappresentare il n

16 in base 10 mi servono 2 cifre mentre in binario 5 cifre.

Segnali e digitalizzazione

Il mondo che ci circonda è analogico , può essere descritto in termini di grandezze fisiche come la temperatura, la pressione, la velocità, la posizione, l'immagine e il suono. Per rappresentare queste grandezze, è possibile utilizzare due tipi di segnali: analogici e digitali. Normalmente, le grandezze a cui siamo abituati sono continue (fra qualsiasi due misurazioni nel mezzo ci sono altre misurazioni).

Digitalizzazione

• Nella tecnica, conversione di grandezze analogiche in informazioni digitali, effettuata mediante

un dispositivo, detto digitalizzatore o convertitore analogico-digitale.

• La digitalizzazione è il^ processo di conversione che, applicato alla misurazione di un fenomeno

fisico, ne determina il passaggio dal campo dei valori continui a quello dei valori discreti. La digitalizzazione è il processo di conversione di informazioni o dati analogici in formato digitale, in cui le informazioni vengono rappresentate sotto forma di numeri binari (0 e 1). Questa rappresentazione binaria consente alle informazioni di essere manipolate, elaborate e trasmesse in modo più efficiente rispetto ai segnali analogici. In sintesi, la differenza tra analogico e digitale sta nella modalità di rappresentazione del segnale.

- In un sistema di registrazione analogico, il suono viene catturato su una superficie fisica,

come un disco in vinile, sotto forma di onde sonore continue. Nel momento in cui il suono viene riprodotto, la forma d'onda originale viene ricostruita dalla superficie fisica e riprodotta in modo continuo.

- In un sistema di registrazione digitale, il suono viene invece campionato e convertito in un

formato digitale.In questo processo, il suono viene catturato a intervalli regolari e la forma d’onda viene approssimata a una serie di numeri. Questi numeri vengono quindi salvati come file digitale e possono essere riprodotti da un sistema informatico. Processo di digitalizzazione: 2 fasi di semplificazione:

  1. Quantizzazione
  2. Campionamento QUANTIZZAZIONE È l’approssimazione sui possibili valori assumibili.

- prendo un valore potenzialmente continuo e approssimo tutto ciò che sta in mezzo agli

intervalli. La quantizzazione è il processo di approssimazione di un segnale analogico continuo a un segnale digitale discreto. La quantizzazione consiste nell'assegnare un valore numerico discreto al valore continuo di un segnale analogico in un determinato istante di tempo. Questo avviene tramite la suddivisione del range di valori possibili del segnale analogico in intervalli discreti di ampiezza uguale, chiamati "livelli di quantizzazione”. Ovviamente la quantizzazione porta un’errore. È importante tenere presente che la quantizzazione introduce un errore di quantizzazione , ovvero la differenza tra il valore del segnale analogico originale e il valore digitale approssimato. L'errore di quantizzazione può causare una perdita di informazioni e una degradazione della qualità del segnale digitale. CAMPIONAMENTO La dicretizzazione dell’infinto. Il campionamento è il processo di cattura del segnale analogico a intervalli regolari di tempo , noto come frequenza di campionamento. La frequenza di campionamento determina la qualità della rappresentazione digitale del segnale analogico. La frequenza di campionamento, espressa in Hertz (Hz), rappresenta il numero di campioni acquisiti per ogni secondo di tempo. La frequenza di campionamento deve essere scelta in modo tale da poter riprodurre il segnale originale con una buona precisione, ma senza eccessivo spreco di memoria.

- Ad esempio, un CD audio ha una frequenza di campionamento di 44,1 kHz, il che significa

che il suono viene campionato 44.100 volte al secondo. Questo consente una riproduzione di alta qualità del suono, simile a quello che si avrebbe ascoltando l'audio analogico originale.

- Un altro esempio di trasformazione da analogico a digitale può essere la digitalizzazione

delle immagini. In questo caso, il processo di digitalizzazione coinvolge la conversione di

un'immagine analogica in un formato digitale, dove l'immagine viene rappresentata come una serie di pixel, ognuno dei quali ha un valore numerico associato. L’immagine è rappresentata come una serie di campioni di colore per ogni punto dell'immagine, che vengono poi registrati come valori numerici. Questi valori numerici rappresentano la quantità di luce riflessa o assorbita da ogni pixel. Campionare l’immagine: trasformare tutto in quadratini (non posso rappresentare le sfumature) Il numero di pixel che viene acquisito durante la scansione dell'immagine dipende dalla risoluzione dell'immagine, ovvero dalla quantità di dettagli che si vuole catturare. Maggiore è la risoluzione dell'immagine, maggiore sarà il numero di pixel acquisiti e maggiore sarà la precisione della rappresentazione digitale dell'immagine. Sarà anche maggiore però la dimensione del file che la conterrà.

Analogico vs digitale

Compressione

Metodo più semplice per capire cosa sta dietro ai vari formati. La compressione dei dati, in informatica e nelle telecomunicazioni, è la tecnica di elaborazione dati che, attuata a mezzo di opportuni algoritmi, permette la riduzione della quantità di bit necessari alla rappresentazione in forma digitale di un’informazione. Significa applicare un algoritmo affinché qualcosa di grande diventi piccolo. Si può trarre beneficio dalla compressione, quindi, nella trasmissione e nellʼarchiviazione dei dati. Un aspetto cruciale della compressione è ridurre le dimensioni dei file digitali senza perdere alcuna informazione importante. L'obiettivo è quindi ridurre lo spazio di archiviazione mantenendo (quanto più possibile) la qualità del contenuto originale. Esistono due categorie di algoritmi: lossless e lossy. Lossy: eseguiamo la compressione ma non possiamo tronare indietro in maniera perfetta, non posso ottenere la forma originale —> c’è una perdita di informazioni. Il mondo digitale ci permette di fare trasformazioni lossless: senza alcun tipo di perdita. —> in base all’ambito possiamo decidere se avere una perdita o no

  1. Comunicazioni : gli algoritmi di compressione risultano fondamentali per la trasmissione di informazioni attraverso reti di comunicazione, in quanto consente di ridurre la quantità di informazioni da trasmettere. Di conseguenza vengono ridotti e ottimizzati i tempi di trasmissione e il consumo di banda. ANALOGICO DIGITALE Segnale continuo Segnale discreto Rappresentazione precisa Rappresentazione approssimativa Difficile da procesare Algoritmi standard di elaborazione Non comprimibile Comprimibile Debole a rumore e distorsione Robusto Dipende dalla qualità del supporto Archiviazione indipendente Deteriorabile e non correggibile Non deteriorabile e correggibile

- Maggiore efficienza (non sempre) : la compressione lossy può raggiungere una compressione

maggiore rispetto alla compressione lossless, poiché elimina alcune informazioni ridondanti o meno importanti. Ne risulta quindi una dimensione dei dati inferiore.

- Adatto per alcuni tipi di dati : la compressione lossy può essere particolarmente adatta per

alcuni tipi di dati, come immagini e video ad alta risoluzione, dove alcune informazioni ridondanti possono essere rimosse senza impattare significativamente la qualità. SVANTAGGI

- Perdita di informazioni : a differenza della compressione lossless, la compressione lossy

comporta la perdita di alcune informazioni. Questo può causare una riduzione della qualità dei dati compressi, che potrebbe essere evidente in particolare in presenza di ripetuti processi di compressione e decompressione.

- Limitazioni : la compressione lossy potrebbe non essere adatta per alcuni tipi di dati in cui la

fedeltà risulta critica e prioritaria.

- Non reversibile : una volta che i dati sono stati compressi con un algoritmo di compressione

lossy, non è possibile decomprimerli in modo da ottenere una replica identica dell'originale. I dati originali risultano quindi in qualche modo compromessi. Esempi di algoritmi di compressione ● Run-length encoding (lossless) ● Dictionary/Substitution encoding (lossless) ● Deflate/Inflate (lossless) ● Discrete cosine transform / DCT (lossy)

Run-length encoding (RLE)

Il metodo di compressione Run-length encoding (RLE) è una tecnica di compressione lossless che cerca di ridurre la quantità di dati da memorizzare rappresentando le ripetizioni di simboli in una sequenza di dati. Questo metodo di compressione è particolarmente utile per le sequenze di dati in cui un singolo simbolo si ripete molte volte consecutivamente, ad esempio in immagini in bianco e nero o in dati audio in cui un suono viene ripetuto per un certo periodo di tempo.

- tecnica più intuitiva

- Cerca di rappresentare tutte le ripetizioni dei pattern anziché il pattern stesso

- Non replico l’informazione ma ci dice quante volte questa è ripetuta

RLE analizza la sequenza di dati e sostituisce le ripetizioni di simboli con una coppia di numeri: il simbolo e il numero di volte in cui il simbolo appare consecutivamente nella sequenza. Per esempio, la sequenza A A A B B C C C C C potrebbe essere compressa in 3A 2B 5C. L'algoritmo RLE è semplice e veloce da implementare, e non richiede molte risorse di elaborazione. Tuttavia, la compressione RLE può essere inefficace su dati non ripetitivi, o su dati che presentano solo poche ripetizioni, e in alcuni casi può anche aumentare la dimensione dei dati se non vi sono sequenze ripetute.

- va applicato quando ho grandi ripetizioni di simboli molto grandi

- Potrebbe essere molto poco efficace —> se ho la sequenza A B C la compressione RLE mi

dice 1A 1B 1C —> diventa più grande della sequenza iniziale, non mi fa guadagnare nulla. Il contesto è quindi fondamentale.

Dictionary coder

L'algoritmo di compressione Dictionary coder utilizza un dizionario di sequenze di dati già incontrate (o comunque in uso) all'interno del file da comprimere. Inizialmente il dizionario contiene solo una serie di simboli singoli (ad esempio i singoli caratteri di un testo), ma poi vengono aggiunte sequenze di dati più lunghe man mano che l'algoritmo analizza il file da comprimere.

- anziché dire quante volte si presenta un determinato simbolo andiamo vedere le parole

(composizioni di simboli) L'algoritmo Dictionary coder rimpiazza poi le sequenze di dati ripetute nel file originale con delle etichette che fanno riferimento alle sequenze salvate nel dizionario.

Le sequenze nel file da comprimere vengono sostituire con l'etichetta corrispondente. In questo modo, l'algoritmo può comprimere il file sostituendo le sequenze ripetute con etichette più corte, risparmiando così spazio di archiviazione.

- comprime molto di più di RLE, è molto più intelligente

Questo algoritmo è in grado di ottenere buoni tassi di compressione, soprattutto su file contenenti ripetizioni di sequenze di dati, come ad esempio documenti di testo. Tuttavia, richiede sia una grande quantità di memoria per gestire il dizionario delle sequenze, sia un tempo significativo per la creazione del dizionario stesso. Se il file da comprimere non contiene molte sequenze ripetute può avere una scarsa efficienza di compressione.

- ogni simbolo è definito da un’altro simbolo quindi la fase di decompressione è molto più

complessa che in RLE DICTIONARY CODER - LZ Supponiamo di avere la seguente sequenza di caratteri da comprimere: AABABBBABAABABBBABBABB

- Partiamo da un dizionario vuoto.

- Man mano che si legge il file, si controlla nel dizionario se vi sia una corrispondenza fra ciò che

viene letto e gli elementi nel dizionario.

- Leggendo il file si continua ad aggiungere al dizionario la più piccola frase che non sia già stata

vista. La sequenza verrà suddivisa come segue: A/AB/ABB/B/ABA/ABAB/BB/ABBA/BB

- devo continuamente tronare indietro per vedere il simbolo iniziale —> la decompressione è

molto lenta

- È una codifica molto potente

Il destinatario, il quale deve eseguire il decoding, usa lo stesso algoritmo per costruire il dizionario che ha usato il mittente, che ha eseguito lʼencoding. Ciò garantisce che il destinatario e il mittente costruiscano il medesimo dizionario.

Discrete Cosine Transform (DCT)

La DCT sfrutta una funzione matematica che permette di distribuire l'energia del segnale in vari spettri di frequenza. In pratica, questo significa che, applicando la DCT a un'immagine, si possono ottenere una serie di coefficienti che rappresentano le caratteristiche spettrali dell’immagine, concentrandone la maggior parte nei coefficienti di bassa frequenza. I coefficienti di alta frequenza, che contengono meno energia, possono essere eliminati o rappresentati con meno precisione, senza compromettere significativamente la qualità dell’immagine.

- sfrutta molta matematica