



























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 del corso di informatica di base anno 2021. Voto 30L
Tipologia: Appunti
1 / 35
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!




























2 maggio 2022 Teoria dell’informazione. LA CODIFICA DELL’INFORMAZIONE: Cos’è l’informazione: 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.
Esponente base è lo 0 (=1). Calcolando il valore di ogni singola cifra, si somma. Conversione in base 10 : valore del numero in base alla sua posizione: 110 = 14 + 12 + 01 = 6 1011 = 18 + 04 + 12 + 11 = 11 LA CODIFICA ESADECIMALE: Politica molto comune per le immagini (colori). Il valore di un numero non riguarda solo il valore della cifra, ma anche la sua posizione. DA DECIMALE A BINARIO: E’ necessario pensare al concetto di divisione. Quante volte abbiamo contato fino a 2 (numero della base) per quante volte. Il resto non può mai essere superiore al numero per cui divido. Si divide per la base 2, segnando il resto = quello che rimane perchè non ha raggiunto la base. Poi li segno al contrario per individuare il numero binario. 5 = 1 2 = 0 1 = 1 0 510 = 101 2 [11+02+14] 34 = 0 17 = 1 8 = 0 4 = 0 2 = 0 1 = 1 0 3410 = 100010 2 [01+12+04+08+016+132] LA SOMMA DI NUMERI BINARI: Si possono fare tutte le operazioni, come nella base 10. Utilizziamo le operazioni in colonna, allineando da destra (cifra meno significativa). 1 + 1 in base due = 0 riporto 1
1 terabyte (TB) > 1099511627776 bytes (2^50 bytes) 1 petabyte (PB) > .... (2^50 bytes) E’ necessario che le convenzioni scelte siano adatte alle informazioni trasmesse. LA DIGITALIZZAZIONE: Altri tipi di informazione sono archiviabili nei sistemi digitali. I contenuti multimediali sono un altro comune tipo di informazione che necessita della sua codifica:
Un caso molto comune di approccio Lossy è il metodo di compressione immagini JPEG. Si può scegliere quale grado di preservazione ottenere = metodo scalabile. L'efficienza rispetto allo spazio è altissima. Premessa sulla rappresentazione delle immagini in formato digitale: Un’ immagine non compressa (in genere in formato bitmap ) presenta l’informazione ‘completa’ del colore per ogni pixel/punto assegnando un certo numero di bit per ogni canale di colore ( RGBa , composizione red green blue alpha). Il numero di colori rappresentabili dipende quindi dal numero di bit assegnati per ogni canale. (+ bit, + simile) I passi per la compressione in formato JPEG e i suoi effetti che subiscono l’immagine):
Una serie di ingredienti ( input ). Una serie di operazioni da effettuare con gli ingredienti (step/ passi dell’algoritmo , operazioni). Una pietanza come risultato della procedura ( output ). Tenendo a mente il parallelismo algoritmo/ricetta... Ogni passo intermedio produce un risultato parziale, modifica lo stato del sistema. Ad ogni passo, l’operazione da fare, ha come assunzione alla base che tutti i passi precedenti siano stati effettuati. L’operazione funziona sul prodotto dell’operazione precedente, quindi i passi devono essere eseguiti in ordine. Il calcolatore non ha la coscienza/conoscenza dello stato dell’intero processo, quindi è necessario assicurarsi che il risultato parziale sia scritto in una zona di memoria, in modo che nel passo successivo comprende di cosa si tratta e può procedere. Un esempio di algoritmo (pseudocodice): Determinare il maggiore tra due numeri x e y:
I blocchi dei diagrammi di flusso: in base allo stato del sistema viene scelto una ramo di esecuzione (branch) piuttosto che un altro = branching. [Si scompongono i branching a 3 vie in 2 da 2 rami.] (macchina ad ingranaggi è un unico passo = calcolatore, non algoritmo) Nel blocco d’azione vi è tutto quello che modifica lo stato del sistema nei passi intermedi (es. z). Il sotto-programma può essere preso e inserito in un altro diagramma (es. operazioni ripetute). Vediamo l’algoritmo visto in precedenza come sequenza di passi rappresentato ora in forma di diagramma di flusso: La possibilità di avere una zona di memoria dove inserire i risultati intermedi, rende una serie di problemi calcolabili. Un altro esempio: Prodotto tra due numeri x e y per somme ripetute
Per specificare che l’esecuzione di un blocco di istruzioni deve essere ripetuta N volte o finché una condizione sussiste, i linguaggi di programmazione di alto livello mettono a disposizione costrutti che istruiscono la macchina: ISTRUZIONI ITERATIVE (CICLI) : funzione controllare la ripetizione di un blocco di istruzioni
luci <- TRUE il THEN è implicito ELSE luci <- FALSE L’idea è che prenda la decisione combinando due condizioni = quando entrambe le condizioni si verificano. L’espressione logica è più complessa, composta da due proposizioni e l’operatore AND (vero se entrambe sono vere). Esempi messi in pratica : Compilatore : apparato che si occupa di interpretare i passi degli algoritmi, traduce ciò che noi scriviamo in un linguaggio comprensibile alla macchina, Si tratta di una traduzione che non cambia il significato semantico di ciò che scriviamo ma cambia solamente la sintassi. Commenti : righe arancioni che la macchina ignora ma che sono utili al programmatore per annotarsi le cose. Linguaggio C++:
Immaginiamo di giocare a un nuovo gioco da tavolo con i nostri amici. I pezzi di questo gioco sono tessere del domino un po’ particolari. Le tessere hanno delle sequenze di lettere invece di numeri sui due lati e, visto che è la prima volta che giochiamo, per semplicità usiamo solo tessere che hanno sequenze A e B. A ogni round si usano 4 tessere pescate a caso (numero di esempio, minimo 2). Possibili tessere del nostro domino: Il gioco ci chiede se possiamo, con le tessere date, costruire una serie (anche usando la stessa tessera più volte) in maniera tale da avere la stessa sequenza sopra e sotto. Possiamo vedere come alcuni set di tessere non abbiano soluzione. Immaginiamo che le tessere di un round siano le seguenti: (sequenza superiore più lunga di quella sotto) Poiché siamo fiduciosi dei poteri straordinari degli algoritmi decidiamo di ragionare in maniera algoritmica per vincere a questo gioco. Idea di algoritmo (pseudocodice):
Ci sono però altri set di tessere possibili che non hanno il problema del set senza soluzione visto nell’esempio, ma per i quali non vi è una condizione verificabile a priori. Cioè non vi è una proprietà identificabile ‘banalmente’ dalle proprietà delle singole tessere per la quale è possibile dire che non esiste soluzione. A questo punto potrebbe sembrare logico esigere l’esibizione di un esempio di set di tessere per le quali non c’è né soluzione, né la possibilità di verificarlo. Ma questo è esattamente il problema della decidibilità , cioè per affermare qualcosa sull’esistenza o meno di una soluzione per un set di tessere bisogna avere un modo per verificarlo. Quindi, non si può avere un esempio di tessere per il quale abbiamo sia verificato che non ammette soluzione e che al tempo stessa sia un set la cui assenza di soluzione sia NON verificabile. Esistono però delle dimostrazioni in grado di provare almeno l’esistenza di tali set di tessere. La computabilità: Tesi di Church-Turing: «Un problema è decidibile se esiste un algoritmo per una MdT (Macchina di Turing) che lo risolve». Macchina di Turing: Un modello astratto di calcolatore in grado di eseguire algoritmi ed elaborati dati su un ‘nastro’ di memoria potenzialmente infinito. Modello ipotetico, astratto. Facilità le dimostrazioni della decidibilità o meno di un problema (il problema persiste). Una MdT è comparabile a un qualsiasi moderno calcolatore (computer) con ‘in più’ la possibilità di processare una quantità infinita di dati (memoria infinita). Le stesse dimostrazioni possono essere fattibili anche con il computer. Se abbiamo un problema e riusciamo a scrivere un algoritmo, in qualche linguaggio di programmazione, che è in grado di dare risposta, allora il problema è decidibile. IMPLICAZIONI RILEVANTI: Non tutti i problemi sono decidibili. Dei problemi non decidibili :