


































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
appunti delle slide e delle lezioni
Tipologia: Dispense
1 / 42
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!



































Quando si parla di informatica bisogna sfatare un mito: l'informatica non è l'uso del computer e l’informatico non è colui che usa il computer. Il computer è uno strumento importante che fa comodo, che usano tutti, ma per l'informatico rimane uno strumento: l'informatica esiste a prescindere. Si inizia a parlare di informatica a partire dal 1957 in Germania, ad opera dell’informatico tedesco Karl Steinbuch che utilizza il termine Informatik; in realtà il termine informatica in italiano deriva dal francese informatique, coniato dal fisico francese Philippe Dreyfus nel 1962, il quale fonda la società di informatica applicata. La parola informatica vuole sottolineare due aspetti fondamentali: l’informazione e l’automatismo (qualcosa che viene svolto da una macchina). Nasce in quegli anni anche l’espressione computer science (aspetto più teorico dell’informatica) usata in contrapposizione con informatics (aspetto più vasto che abbraccia anche linguaggi di programmazione, ecc). L’informatica inizialmente nasce come una branca della matematica. Una definizione più rigorosa di informatica è “scienza che studia come risolvere i problemi tramite tecniche per l’analisi, la rappresentazione, l’elaborazione, l’organizzazione e la trasmissione dell’informazione”. Innanzitutto quindi l’informatica è una scienza, e da questa definizione emergono due concetti fondamentali: quello di informazione e quello di problema. Si può dire quindi che l’informatica ha come scopo risolvere problemi usando l’informazione e facendolo in modo automatico, cioè facendolo fare ad una macchina. Analisi: supponiamo di avere a disposizione delle misure fatte con uno strumento e di farle più volte, solo che ogni tanto questo strumento ci dà numeri a caso. Per poter usare questi dati bisogna eliminare quelli sbagliati, quindi faccio un’analisi per eliminarli. Dato e informazione sono concetti legati, ma non uguali: per dato si intende un numero non legato ad un contesto, per informazione invece si parla di qualcosa che legato al contesto assume un significato. Rappresentazione: serve a rendere trattabili i dati dalla macchina. Elaborazione: è il punto cruciale. Organizzazione: ad esempio un meccanismo di memorizzazione, oppure i file, creati per memorizzare l'informazione per utilizzarla in un secondo momento. Trasmissione dell'informazione: può voler dire qualsiasi cosa, tipo internet oppure caricare un file sul Cloud. Problemi e soluzioni Cosa si intende per problema? Quesito che richiede la determinazione o la costruzione di uno o più enti che soddisfano a date condizioni fissate in precedenza Esempio di problema Dividere due numeri: per farlo usiamo un criterio per controllare che il risultato sia corretto, se faccio la moltiplicazione del risultato per il divisore devo ottenere il dividendo. Cos' è la soluzione? Elenco delle istruzioni che, applicate dall’esecutore ai dati iniziali, consentono di pervenire ai dati finali (risultati). Importante notare che non si pone tanto l'accento sul risultato, ma sull’elenco delle istruzioni che portano ad avere il risultato; ciò che ci interessa dal punto di vista informatico è il procedimento risolutivo, ovvero i passaggi che vengono trovati dal risolutore, ovvero l'informatico.
Esecutore: potrebbe essere una macchina, ma anche una persona, ad esempio una divisione si può fare con la calcolatrice, ma anche a mente. L'esecutore deve poter comprendere il linguaggio, ogni esecutore ha un certo insieme di istruzioni, non tutti gli esecutori sono uguali. Lo stesso problema può essere trattato da esecutori diversi: ogni esecutore può eseguire delle istruzioni elementari e il risolutore, cioè la persona che stabilisce il procedimento risolutivo (elenco delle istruzioni), deve condividere lo stesso linguaggio dell'esecutore. Algoritmi Una volta che so come risolvere un problema e riesco ad esprimerlo in un linguaggio che è compreso dal mio esecutore ottengo un algoritmo, ovvero una sequenza di azioni elementari che conduce a un risultato in un tempo finito. Per far si che un procedimento risolutivo sia un algoritmo deve essere: ● finito, numero di azioni finito ● deve sempre terminare ● non ambiguo, cioè deve essere sempre interpretabile dall' esecutore ● generale, si deve poter applicare a una classe di problemi. Abbiamo a che fare quotidianamente con algoritmi senza saperlo, es feed di Instagram, brani Spotify, ecc. Esempio: il pagerank di Google è l'ordine dei siti di Google, il quale non è casuale. Funziona con il concetto di reputazione di un sito web, più un sito ha dei link, più è ritenuto un'autorità sull'argomento. Tiene anche conto della reputazione dei siti che danno un voto. Riassumendo L'informatica: ● ha poco a che fare con l'assemblare o riparare un computer e saper usare programmi come Office. ● Prescinde dall'uso del computer e ha come scopo risolvere problemi in modo automatico elaborando informazioni. L'informatico: ● Risolve problemi ● Esprime le soluzioni in un linguaggio che le renda eseguibili dalla macchina. Il computer: ● Non comprende le azioni da eseguire, le esegue e basta I programmi (app): ● Sono elenchi di istruzioni eseguite in base a quello che noi facciamo ● Si scrivono usando un linguaggio di programmazione Un programma con cui abbiamo a che fare è il sistema operativo, ovvero dei programmi che hanno tanti compiti, come avviare la macchina, accedere ai file, eseguire le app, ecc. STORIA DELL’INFORMATICA Perché si inizia a parlare di informatica? Per l’esigenza di contare, i giorni, le flotte delle navi, la posizione delle stelle, ecc. Le ere principali Era pre meccanica (500 AC-1641) Le prime esigenze di calcolo riguardano l’astronomia e lo scorrere del tempo. L’abaco funzionava con due righe di sferette, nella parte bassa ogni colonna ne ha 5 e ognuna vale 1, nella parte alta sono 2 e ognuna vale 5.
John Von Neumann Fisico, ingegnere, matematico, informatico ungherese naturalizzato americano. Ha sviluppato la Teoria dei Giochi, si è occupato di matematica e intelligenza artificiale. Ha usato simulazioni per scopi bellici, ad esempio per il progetto Manhattan che ha portato alla costruzione della bomba atomica, la quale aveva bisogno di un innesco. Egli capisce che il suo punto debole era proprio l'innesco e mette a punto un innesco efficace attraverso simulazioni matematiche. Crea l’Architettura di Von Neumann, modello su cui si basano i dispositivi di oggi, che comprende componenti fondamentali, ovvero CPU, memoria, dispositivi di input output e un bus, ovvero collegamento tra questi componenti. Non si ha più il nastro di carta come prima, ma le istruzioni sono dentro la memoria insieme ai dati, il vantaggio è che si risparmia tempo. Anni 50 Negli anni 50 i computer erano legati ad un uso soprattutto accademico o militare, occupavano spesso intere stanze, ma cresce l'interesse di avere macchine automatiche per il calcolo, portando allo sviluppo rapido di queste tecnologie. In questi anni nasce l’azienda International Business Machines (IBM) che progettava computer per università o organi militari. Anche in Italia l’azienda piemontese Olivetti ha prodotto la serie Elea (ELaboratore Elettronico Aritmetico), presentata nel 1959 alla Fiera Campionaria di Milano. La particolarità di Olivetti è che curava anche il design, in questo caso da parte dell’architetto Ettore Sottsass. è uno dei primi computer interamente a transistor, ovvero quella componente che ha soppiantato le valvole. Anni 60 Negli anni 60 Olivetti progetta la Programma 101, nota anche come Perottina (dall’Ing. Giorgio Perotto), con un design futuristico curato dall’architetto Mario Bellini. è il primo Desktop Computer, ovvero il primo computer che può essere appoggiato sul tavolo. Viene presentata a New York nel 1964 e calcolava le posizioni dei pianeti nelle loro orbita, per questo venne acquistata dalla NASA per le missioni Apollo. Ha una tastiera simile alla calcolatrice, ha un rotolo di carta per stampare i risultati, ha una memoria interna e una memoria esterna, formata da cartoline magnetiche. Nel 1967 Douglas Engelbart inventa e brevetta il primo mouse, prima chiamato indicatore di posizione X- Y per display; era molto grande e il movimento era catturato da ruote poste ad angolo retto. Inventa un sistema di comunicazione per le videoconferenze, permette di lavorare in modo collaborativo allo stesso documento di testo, copia incolla, ecc. Internet come lo conosciamo oggi si sviluppa in diverse decadi, dagli anni 60 agli anni 90. Nel 1958 il governo Usa crea Arpa (Advanced Research Projects Agency) per scopi militari, perchè volevano sviluppare un sistema di telecomunicazione. Nel 1969 nasce Arpanet in collaborazione con università e viene trasmesso il primo messaggio su “Internet”. Il messaggio viaggiava dall’università della California allo Stanford Research Institute e doveva essere “login”, ma il ricevente lesse solamente “lo”. Anni 70 Minicomputer Nel 1971 Ray Tomlinson invia la prima mail grazie ad Arpanet il cui testo è sconosciuto. Negli anni 70 si assiste ad un importante miniaturizzazione, si inizia a parlare di mini computer e micro computer.
I mini computer erano grandi circa come un armadio ad un’anta e vennero prodotti dalla DEC (Digital Equipment Corporation). Avevano una console, insieme di levette che permetteva la programmazione, ma estremamente scomodo; ben presto vengono aggiunte delle espansioni a questi dispositivi, ad esempio venivano utilizzate le schede perforate, cartoline dove la presenza o l’assenza di un buco indicava bit 0 o bit 1, quindi in base alla posizione dei buchi si forniscono numeri alla macchina. Quando si parlava di programmi complessi potevano essere necessarie centinaia di cartoline e potevano essere condivise. Per le schede perforate venivano create attraverso il perforatore, il quale aveva una tastiera; una volta perforate, serve un lettore di schede perforate dove venivano inserite le schede e tramite un pettine rileva la posizione dei fori e trasmette l’istruzione corrispondente affinchè sia elaborata. Un altro dispositivo esterno era il terminale, dotato di tastiera per fornire gli input e di un foglio di carta per gli output. I videoterminali introdurranno poi al posto dei fogli di carta i video e il monitor. I PDP supportavano anche dispositivi di memoria esterna portatili, dischi da 5 MB. Successivamente arrivano anche i floppy disk da 8 pollici che contenevano 0.5 MB, sottili e flessibili. Sempre negli anni 70 nasce il linguaggio C, inventato da Dennis Ritchie, famoso anche perchè con Ken Thompson inventa il sistema operativo Unix, da cui poi si dirameranno anche Linux e Android. Microprocessori e microcomputer Nei primi anni 70 il fisico Federico Faggin progetta il primo microprocessore Intel, una fondamentale base per avere il computer come lo conosciamo oggi. All’inizio era molto limitato, infatti è con il suo successore, l’Intel 8080, che si ha una svolta significativa. Nel 1975 nasce Altair 8800, considerato il primo microcomputer di successo commerciale in quanto cresce sempre più l’interesse per queste tecnologie; non aveva uno schermo, ma dei led di cui andava interpretato il significato. La nascita di Microsoft Nel 1975 nasce Microsoft, fondato in New Mexico da Bill Gates e Paul Allen; il nome Microsoft nasce dall’unione tra MICROcomputer e SOFTware. All’inizio non producono subito Windows, ma fu un interprete per Basic, ovvero scrivono un interprete per un linguaggio di programmazione che permetteva di avere un meccanismo più comodo e pratico per realizzare programmi sull’Altair. I microcomputer A metà degli anni 70 a Palo Alto nasce l’Homebrew Computer Club, un gruppo di appassionati di computer. Nel 1976 Steve Wozniak presenta un computer progettato da lui e basato su un microprocessore a basso costo; il 1 aprile Steve Jobs, Wozniak e Ronald Wayne fondano Apple Computer e il computer di Wozniak viene commercializzato con il nome di Apple I. Esso era costituito da una scheda elettronica, a cui era collegato un alimentatore, una tastiera e un monitor. Nel 1977 viene presentato l’Apple II, dotato di un foglio di calcolo (simile a excel) e un programma di scrittura (simile a word), consentiva di programmare usando il linguaggio Basic e di utilizzare videogiochi, ci si poteva collegare un floppy. Anni 80 Personal computer Negli anni 80 si inizia a parlare di personal computer con la IBM che nel 1981 lancia l’IBM 5150, diretto competitor di Apple II. In realtà era meno avanzato, c’era solo testo e grafica, le scritte erano verdi su fondo nero, usava DOS (sistema operativo prodotto da Microsoft) e integra Lotus 1-2-3 (sorta di excel migliore della Apple), ha un floppy e costava meno. Altre aziende iniziano a realizzare Personal Computer IBM compatibili, come l’M24 di Olivetti che usa DOS e Lotus 1-2-3 e permette di installare Windows.
Nel 1995 Pixar produce Toy Story, primo lungometraggio animato realizzato interamente in computer grafica. Nel 1996 Apple acquista NeXt e Steve Jobs torna a lavorare alla Apple. Nel 1998 Apple lancia il modello iMac G3, molto diverso dai computer precedenti; è il primo che inizia con la i, disponibile in vari colori e usava Mac OS 9 come sistema operativo. Primo computer pensato anche per applicazioni multimediali, dotato di un lettore CD integrato, di casse audio integrate, di un modem e di una presa di rete. Ebbe un successo fenomenale. Qualche anno dopo viene lanciato l’iBook, la versione portatile dell’iMac con schermo piatto. La nascita di Google Nel 1996 Larry Page e Sergey Brin, all’università di Stanford, creano BackRub: precursore di Google. Nel 1998 nasce Google come società con sede in un garage a Menlo Park affittato dall’amica Susan Wojcicki; la parola “Google” è un errore ortografico di “googol”, cioè il termine matematico per 1 elevato alla 100, scelto perchè volevano riflettere il fatto che con la diffusione del web crescevano anche i siti web e il loro compito era quello di ordinare queste pagine. Google acquisirà YouTube nel 2006, e Wojcicki ne diverrà il CEO dal 2014 al 2023. Nel 2000 Google inizia a vendere spazio pubblicitario associato a parole chiave (Google Advertisements). Anni 2000 Nel 2001 esce Windows XP, uno dei sistemi Microsoft di maggior successo. Nel 2003 nasce MySpace, precursore dei successivi social network, dove gli utenti possono condividere musica e video, unirsi a gruppi e personalizzare il profilo con HTML. Nel 2004 nasce Facebook per opera di Mark Zuckerberg e dei suoi compagni ad Harvard. Nel 2007 viene lanciato iPhone e i dispositivi touchscreen diventano presto la normalità. Nel 2008 nasce Android, il sistema operativo mobile di Google. Negli anni 2000 quindi i collegamenti a Internet sono sempre più diffusi e nascono blog, forum, wiki e social media. I dispositivi diventano sempre più potenti e ridotti e il touchscreen capacitivo ha un impatto sui dispositivi elettronici in generale (ha la capacità di sentire la differenza di campo magnetico esercitata dal dito). Si sviluppano nuovi metodi di interazione (Realtà Aumentata, Virtuale (uso visiera), ecc.) ed emerge il cloud-computing (calcoli molto pesanti). RAPPRESENTAZIONE DELL’INFORMAZIONE Il concetto di elaborazione dell’informazione è fondamentale in Informatica; tutto può essere informazione: testi, immagini, suoni, video, ecc. Un computer però non può gestire le informazioni come farebbe una persona, ma lo fa attraverso le codifiche (di testi, immagini, suoni e video). Teoria degli insiemi Un insieme è una collezione di oggetti per cui esista un criterio che permette di decidere univocamente se un qualsiasi oggetto ne faccia parte. Gli oggetti che compongono un insieme sono detti elementi dell'insieme. Per convenzione gli insiemi vengono indicati con lettere maiuscole e corsive. Esempio I = {a, b, c}, C = {rosso, giallo, blu}, M = {Ligure, Tirreno, Ionio, Adriatico}, A = {a, b, … , z} e l’insieme degli elementi: a, b, … , z e può contenere 21 o 26 elementi a seconda del contesto (alfabeto italiano o inglese). I puntini si utilizzano quando è chiaro il contenuto di un insieme. Se un criterio è soggettivo non è adatto ad un insieme. La cardinalità di un insieme è il numero dei suoi elementi. Un insieme si dice finito se ha un numero finito di elementi, un insieme vuoto è l’insieme che non contiene alcun elemento. Se I è un insieme vuoto, scriveremo: I = ∅
Appartenenza ● b ∈ I : Si legge “b appartiene a I” ● h ∉ I : Si legge “h non appartiene a I” Esempio Sia I = {a, b, c} ● a è un elemento di I allora a ∈ I ● c è un elemento di I allora c ∈ I ● z non è un elemento di I allora z ∉ I Sottoinsieme S è sottoinsieme di I se tutti gli elementi di S appartengono anche a I. Si scrive: S ⊆ I Esempio Sia I = {a, b, c} ● Se S = {a, b} allora S ⊆ I ● Se S = {a, b, c} allora S ⊆ I ● Se S = {a} allora S ⊆ I ● Se S = ∅ allora S ⊆ I L’insieme vuoto ∅ è sottoinsieme di qualsiasi insieme (anche di se stesso) Non confondere elementi (es. a) con insiemi (es. {a}) ● È corretto dire che a ∈ {a, b, c} ● È sbagliato dire che {a} ∈ {a, b, c} ● È corretto dire che {a} ⊆ {a, b, c} Alfabeto e linguaggio Un insieme non vuoto e finito di simboli è un alfabeto. Esempi ● A1 = {a, b, c, d, e, f, g, h, i, l, m, n, o, p, q, r, s, t, u, v, z} ● A2 = {a, b, c} ● A3 = {a, b, A, E} ● A4 = {♠, ♣, ♡, ♦, ⋆} ● A5 = {a, b, 6, 7, ⋆} ● B = {0, 1} (alfabeto binario) Stringhe Dato un alfabeto A , l’insieme delle sequenze finite generabili con i simboli di A si denota con A ∗. Tali sequenze sono chiamate stringhe. ● La stringa vuota si indica tipicamente con ε ∈ A ∗ ● Non poniamo limite alla lunghezza delle stringhe Data una stringa S ∈ A ∗ , la lunghezza della stringa è il numero di simboli che appaiono nella stringa e si indica con |S|.
Codifica binaria Alfabeto binario Un alfabeto composto da due simboli si chiama alfabeto binario e si indica con B = {0, 1}. I simboli dell’alfabeto binario vengono detti bit (binary digit). Codifica binaria Dato un alfabeto finito A, ogni stringa di A∗ può essere codificata in una stringa (tipicamente più lunga) di simboli presi da un alfabeto binario B = {0, 1}. Codifica Binaria a Lunghezza Costante Dato un alfabeto finito A, una codifica binaria si dice a lunghezza costante se tutti i simboli in A sono codificati con stringhe di B ∗ aventi tutte la stessa lunghezza. Esempi Sia A = {a, b, c, d} ● a → 00, b → 01, c → 10, d → 11 è a lunghezza costante ● a → 0, b → 1, c → 00, d → 11 non è a lunghezza costante Sia A = {a, b, c, d, e} ● a → 0, b → 1, c → 00, d → 11, e → 000 non è a lunghezza costante ● a → 000, b → 001, c → 010, d → 110, e → 111 è a lunghezza costante Codifica Binaria Invertibile Una codifica binaria si dice invertibile se, data una stringa di A∗ codificata in B∗ , è possibile risalire in maniera univoca alla stringa non codificata di A∗ (se inverto una stringa con una codifica binaria e la rappresento con dei bit voglio poter tornare alla stringa originale). Esempi Sia A = {a, b, c, d} ● a → 00, b → 01, c → 10, d → 11 invertibile (1011 = cd) ● a → 00, b → 01, c → 10, d → 00 non invertibile (1000 = ca/cd) ● a → 0, b → 1, c → 00, d → 11 non invertibile (0011 = aabb/cd/aad/cbb)
Osservazione: una codifica binaria a lunghezza costante è invertibile se a ogni simbolo di A è associata una stringa binaria diversa. Codifica ridondante Una codifica ridondante è una codifica che utilizza più simboli del necessario, se esiste almeno un’altra codifica che utilizza meno simboli. Esempi Sia A = {a, b} ● a → 0, b → 1 non ridondante (e invertibile) ● a → 000, b → 111 ridondante (e invertibile) ● a → 00, b → 01 ridondante (e invertibile) ● a → 0000, b → 0001 ridondante (e invertibile) ● a → 11111, b → 00000 ridondante (e invertibile) ESERCIZIO Dato un alfabeto A di n simboli, ottenere una codifica binaria, a lunghezza costante e invertibile dei simboli di A. Le codifiche per i simboli possono essere scelte in vari modi ● Ogni codifica può avere diverse proprietà ● In base ad n, la lunghezza delle stringhe potrebbe non essere adeguata Esempio: A = {a, b, c}, a → 0, b → 1, c → 00. Esiste una regola per conoscere a priori che lunghezza minima debbano avere le stringhe binarie per codificare i simboli di A? Partiamo da una considerazione:
Testo Un testo è una sequenza di caratteri. Per codificare un testo ci sono due modi: ● per caratteri: ogni singolo carattere si codifica con una stringa di bit e la sequenza deve essere invertibile per poter risalire ad un’unica parola; ● per parole: attribuire una rappresentazione alla singola parola, poco usata perché manca di flessibilità. ASCII ASCII (American Standard Code for Information Interchange) è un celebre sistema di codifica dei caratteri introdotta negli anni 60 per definire uno standard per l’input/output da/verso terminali. è una codifica binaria a lunghezza costante e ogni carattere è associato ad una stringa binaria unica (quindi è invertibile). ASCII codifica 128 caratteri (anche caratteri non stampabili, di controllo) usando 8 bit per ciascuno; basterebbero 7 bit, quindi è ridondante, oltre ad essere a lunghezza costante e invertibile. Questo è voluto perché l’ottavo bit è di verifica, un parity bit, utilizzato per rilevare un errore. Esso assume il valore 0 o 1 in modo che la stringa nel suo complesso contenga sempre un numero pari di 1. Esempio 1 0 0 0 1 1 1 0 parity bit = 0 perché ho già 4 bit a 1 1 0 0 0 1 1 0 1 parity bit = 1 perché ho solo 3 bit a 1 ASCII comprende due tipi di caratteri: i caratteri stampabili e i caratteri di controllo (a capo, spazio, ecc). Unicode Anche a 8 bit ASCII è limitato, per questo nasce lo standard Unicode con il proposito di essere una codifica adatta a tutte le lingue. Ci sono vari formati di codifica chiamati UTF (Unicode Transformation Format), di cui i tre più famosi sono: ● UTF-8 lunghezza variabile da 1 a 4 byte (da 8 a 32 bit), ● UTF-16 lunghezza variabile da 2 o 4 byte (16 o 32 bit) ● UTF-32 lunghezza fissa di 4 byte (32 bit). Sono codifiche binarie, invertibili e a lunghezza variabile.
Suono Un suono è un fenomeno fisico continuo rappresentabile con un segnale analogico. Un fenomeno fisico continuo è qualcosa che non ha dei vuoti, tra 2 numeri reali ce n’è sempre un altro. Anche la rappresentazione del segnale sarà continua e si chiama analogica dal termine analogia, l’onda è analogicamente continua. Il suono è un’onda meccanica generato da una vibrazione (grazie all’aria) e ha bisogno di un trasduttore, un dispositivo in grado di prendere una certa forma di energia e trasformarla in un’altra (nel caso del suono si trasforma l’energia meccanica, ovvero le vibrazioni, in energia elettrica, che viaggia nei nervi e viene interpretata dal cervello). Storicamente per rappresentare un suono venivano utilizzati supporti analogici come vinili o nastri magnetici. Il vinile è fatto da tante scanalature di cerchi concentrici, dove si fa un’incisione seguendo l’andamento dell’onda sonora, la stima segue questo profilo e questo movimento meccanico viene ritradotto in un segnale elettrico portato ad un amplificatore che lo aumenta in ampiezza e lo spara negli altoparlanti. Il nastro magnetico è avvolto su delle bobine, quando viene inserito nel mangianastri ci sono delle punte che lo fanno girare, svuotano la bobina dove c’è il nastro, il quale passa davanti ad una testina. Il nastro è composto da un materiale magnetizzabile, mentre la testina è una sorta di elettrocalamita (si può gestire con una corrente elettrica) comandata dal segnale elettrico del suono, quindi cambia in funzione del suono e magnetizza il nastro a seconda del suono. Il microfono (trasduttore) rileva la pressione dell’aria e genera una tensione elettrica. Per trattare un suono col computer è necessario digitalizzarlo, per fare ciò ho bisogno di due processi: il primo è legato al tempo ed è chiamato campionamento, il secondo è legato al valore ed è chiamato quantizzazione. Entrambi sono fonte di errore. Campionamento Il campionamento è la misurazione del suono in specifici istanti di tempo detti istanti di campionamento. Ogni misura è chiamata campione. Tempo di campionamento Il tempo di campionamento tc è l’intervallo di tempo tra due istanti di campionamenti successivi e si misura in secondi (o sottomultipli). Frequenza di campionamento La frequenza di campionamento fc è il reciproco del tempo di campionamento e si misura in Hertz (e i suoi multipli).
Si distinguono due categorie di immagini: ● immagini raster (codifica lossless, senza perdita di informazioni, e codifica lossy, con perdita di informazioni per risparmiare spazio) ● immagini vettoriali. Le immagini hanno diversi formati (PDF, JPEG, ecc). Immagini raster Un’ immagine raster è fatta da una griglia di elementi detti pixel (picture element). Il nome raster fa riferimento ai vecchi schermi a tubo catodico; anche per le immagini c’è bisogno di trasformarle in una stringa di bit, per questo utilizziamo il campionamento e la quantizzazione, rivisitati per un oggetto bidimensionale. Campionamento Il campionamento consiste nel suddividere l'immagine in griglia di elementi chiamati pixel. La risoluzione è il numero di pixel che la compone e si misura con N° pixel orizzontali x N° pixel verticali. Quantizzazione La quantizzazione è l'approssimazione del colore del pixel con uno scelto da un insieme di colori fissato a priori (si restringe la sfumatura di un pixel a un insieme a noi possibile). Quanti colori servono per un’immagine? ● L’occhio umano percepisce circa 10 mln di sfumature ● Non tutte le codifiche permettono la stessa rappresentazione dei colori ● Immagini a colori richiedono piu informazioni che bianco e nero o scala di grigi ● Esistono vari modi per stabilire la codifica del colore ma serve un modello
Quantità di Memoria La quantità di memoria occupata da un’immagine si calcola così: m = r 𝓁 q dove indichiamo con:
È così se si utilizza compressione lossless, ma se applichiamo le codifiche lossy andremo ad occupare meno spazio. Quando si codificano i video si deve tenere conto anche dell’audio. Codifica MPEG MPEG è un gruppo di standard che consentano la compressione efficiente di audio e video. MPEG (Motion Picture Expert Group) nasce nel 1988, uno dei principali fondatori è Leonardo Chiariglione (ricercatore c/o Telecom Italia). Consente di descrivere sia audio che video e ha gettato le basi per altri formati come il MP3. Ogni fotogramma viene compresso con una codifica lossy ● Variazioni di colore repentine e dettagli fini sono scartati (simile a JPEG) ● Codifica le differenze invece che le informazioni complete ● Sfrutta la ridondanza temporale (similitudine tra fotogrammi) ● Sfrutta la ridondanza spaziale (similitudine all’interno del fotogramma) Vari standard in MPEG ● MPEG-1, comunemente usato per l’audio (una sua sottocategoria è MP3) ● MPEG-2, comunemente usato nei DVD e nei canali della televisione digitale terrestre (fino a ottobre 2021) ● MPEG-4, pensato per il Web, usato anche attualmente nella televisione digitale terrestre MPEG identifica tre tipi di fotogrammi
Codifiche ridondanti Una codifica ridondante è una codifica che utilizza più simboli del necessario. Spesso, i linguaggi impongono delle regole grammaticali per cui i messaggi risultano ridondanti. Un messaggio è ridondante se richiede più simboli del necessario. Esempi ● Sia A = {a, b, c, d}. La codifica binaria: a → 000 b → 010 c → 011 d → 111 è a lunghezza costante, invertibile e ridondante. Sarebbero bastate stringhe di lunghezza 2 ● Codifica ASCII: sarebbero bastati 7 bit, ma si aggiunge il parity bit, in modo tale da rendere pari il numero di 1 nella stringa. Ad esempio: 10000111 è corretta (ha 4 simboli 1), 11000111 è errata (ha 5 simboli 1) ● Le codifiche lossless per le immagini sono ridondanti: sono sufficienti meno informazioni del totale affinché l’immagine sia fruibile dall’osservatore, anche in alta qualità. Si può sfruttare la ridondanza o si deve eliminare? ● Usare una codifica diversa che eviti la ridondanza Tipicamente, si ottengono messaggi più brevi (meno memoria occupata) Esempio: passare da codifica lossless a lossy nelle immagini ● Sfruttare la ridondanza per altri scopi