




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 presi al computer di informatica di base
Tipologia: Appunti
1 / 8
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!





Shannon: DEFINIZIONE DI INFORMAZIONE>> è impossibile dare una sola definizione che vada bene per le numerose applicazioni dell’informazione, in generale possiamo dire che è imparare o scoprire un fatto riguardo qualcuno o qualcosa. Non è qualcosa di tangibile e la cosa più vicina è la sua rappresentazione che non dipende dalla tecnologia ma si può scegliere un qualsiasi strumento che abbia determinate caratteristiche, tuttavia con la tecnologia si è preferito utilizzare i suoi strumenti per facilitare la rappresentazione ed elaborazione dell’informazione. L’idea dell’informazione nasce con la scrittura oltre che con i disegni nelle caverne; l’informazione può essere divisa in 3 categorie: -SEMANTICA: è il significato della successione delle lettere -PRAGMATICA: è il significato semantico contestualizzato -SINTATTICO: la successione delle lettere che formano delle parole, dunque è la scelta della successione dei simboli a prescindere dal loro significato CODIFICA BINARIA: è un codice che ha bisogno di due simboli, per convenzione si parla di 0 e di 1 ma può essere fatto anche con colori o forme, per la sua rappresentazione è usato il bit, ovvero, la sua unità minima. La scelta di tale codifica aiutata dallo stato dello sviluppo tecnologico dell’epoca (elettricità), questo sistema è così robusto perché non c’è bisogna di interpretazioni perché rappresenta solo i due stati. Rappresentazione numero binario, ogni cifra corrisponde ad un certo valore; i bit assegnati alla rappresentazione del numero sono divisi in tre parti: SEGNO(0+1-), MANTISSA(precisione singola e doppia), ESPONENTE. DA BINARIO A DECIMALE E VICEVERSA/ LA SOMMA DI NUMERI BINARI. Dividi il numero per 2 e scrivi il resto poi ottieni il numero partendo dall’ultimo resto; potenzia il 2 per il numero di numero presenti e poi moltiplica per esse e infine addiziona. Nella somma 1+1 fa 0 con riporto di 1. La rappresentazione è finita e quindi si possono incontrare dei problemi che scatenano degli errori di overflow(problemi all’interno del sistema informatico), di cancellazione numerica(si vanno a perdere informazioni circa le cifre meno significative) o di troncamento e moltiplicazione. Per la codifica binaria non si usano solo numeri, ma anche simboli della scrittura comune o parole chiave, una convenzione molto conosciuta è la codifica ASCII; altre codifiche più recenti sono le UTF. UN OGGETTO FISICO SI PUO’ CONSIDERARE AVENTE CAPACITA’ DI 1 BIT QUANDO QUESTO PUO’ ASSUMERE, IN MANIERA STABILE, DUE STATI DISTINGUIBILI CHE POSSONO ESSERE ASSOCIATI RISPETTIVAMENTE A 0 E 1. La digitalizzazione>>è il processo di codifica e di conversione di una grandezza fisica (o della sua misurazione) in un informazione discreta (sequenza di bit). Esempio: una foto scattata con il telefono è una digitalizzazione dell’informazione luminosa passante per la lente della camera. Se supponiamo di scattare una foto con un telefono che fa solo foto in scala di grigi, il sensore dietro il sistema di lenti riceve dei colori degli oggetti visibili e le “sfumature” che può assumere la luce in questo senso sono infinite all’interno dell’intervallo bianco-nero. Dunque il sistema del nostro telefono, in quanto digitale, può avere solo un numero finito di colori( in un intervallo continuo i numeri di valori che si possono prendere sono infiniti mentre negli intervalli finiti possono prendere solo i numeri interi e quindi non sono illimitati). Il sistema del nostro telefono assegnerà quindi in base a un certo numero di soglie e al loro valore uno dei colori, in numero finito, a ogni parte della nostra foto. Il processo di trasformazione di una quantità da una scala continua di valori a una discreta si dice discretizzazione e quello che avviene per soglie/intervalli si dice quantizzazione che è quindi un metodo di digitalizzazione.
Un ulteriore parametro da considerare per la digitalizzazione di grandezze (e quindi informazioni) misurate rispetto allo scorrere del tempo ( suoni e sequenze video) è la frequenza di campionamento. La frequenza di campionamento porta a una discretizzazione, questa volta, rispetto alla grandezza tempo. Gli intervalli temporali sono continui. Si misura in Hz (1Hz=1 ciclo per sec-una camera in grado di catturare video a 120fps ha una frequenza di campionamento di 120Hz). Il processo di digitalizzazione, nel caso della conversione della misura di una grandezza a valori “continui” a valori ”discreti”, comporta sempre una perdita di informazione( aumentato la frequenza di campionamento avremo maggiori informazioni dell’informazione iniziale). LA COMPRESSIONE DEI DATI: tecniche sviluppate al fine di prendere l’informazione e cercare di trovare un modo per far occupare meno cifre, i continui sviluppi tecnologici riescono a digitalizzare quantità di informazione sempre maggiore (si pensi a un video registrato in 4k). Per soddisfare questa necessità si lavora in due direzione: -aumento della capacità dei supporti d’archiviazione dei dati ;più spazio, più cifre permettiamo di riservare alla codifica di qualche informazione più aumenta la precisione -implementazione di tecniche di compressione più o meno sofisticate I metodi di compressione si dividono in due grandi categorie: -COMPRESSIONE LOSSLESS: l’informazione viene interamente conservata, si cerca di riscrivere l’informazione in modo che occupi meno spazio, il punto fondamentale è che queste compressioni sono riversibile perché se vogliamo ricostruire l’informazione originale possiamo farlo senza problemi. -COMPRESSIONE LOSSY: l’informazione principale viene conservata ma viene scartata una sua parte, idealmente la meno rilevante; questo tipo di compressione è molto efficiente in termini di risparmio perché ci permettiamo di scartare dei dati Bisogna considerare nella codifica dei simboli il problema di univocità(non avere più simboli codificati con lo stesso codice) e non sovrapposizione dei prefissi (non avere mai la codifica di un simbolo come prefisso della codifica di un altro), UNA SOLUZIONE NOTA A QUESTO PROBLEMA E’ LA CODIFICA DI HUFFMAN, un metodo che garantisce sempre l’assegnazione di codici per riscrivere una sequenza di caratteri non è mai prefisso di un altro codice, questo avviene seguendo delle istruzioni sempre funzionali grazie alle quali non c’è ambiguità nella lettura della sequenza. Bisogna anche tenere a mente che dove si guadagna spazio (ridotta quantità di dati) si perde tempo (tempo necessario per la decompressione); non è quindi sempre desiderabile comprimere dati. COMPRESSIONE IMMAGINI JPEG >> un’immagine non compressa (in genere in formato bitmap) presenta l’informazione “completa” del colore per ogni pixel assegnando un certo numero di bit per ogni canale di colore (RGBa). Il numero di colori rappresentabili dipende quindi dal numero di bit assegnati per ogni canale. I passi per la compressione in formato JPEG: -SUDDIVISIONE DELL’IMMAGINE IN BLOCCHI 8X8PX: è una misura ricavata da quella che viene chiamata “neuristica”, non c’è una dimostrazione alla base del fatto che il metodo funzioni se non che utilizzandolo si ricavano buoni risultati. -CAMBIO IN DOMINIO DELLE FREQUENZA CON DISCRETE COSINE TRANSFORM (DCT): è uno strumento matematica che si applica a tantissimi usi ma applicato all’immagine trasforma l’informazione da essere rappresentata come valore del colore in base alla posizione nella bitmap, ad essere rappresentata in base al valore del colore in base alla sua frequenza all’interno dell’immagine. Il contenuto informatico dell’immagine risultante rimane la stessa, quindi è un riarrangiamento dell’informazione tali per cui è
Differiscono dalle condizionali, perché il corrispondente di THEN invece di portare un ramo di esecuzione nuovo, riporta alla rivalutazione della condizione e quindi di nuovo l’espressione logica. Le strutture più comuni di istruzioni iterative sono: FOR-DO= FOR(variabile d’iterazione; espressione logica sulla variabile d’iterazione; incremento della variabile d’iterazione), DO (branch da eseguire nel caso l’espressione logica sia vera) WHILE-DO/REPEAT-UNTIL: WHILE(espressione logica), DO (branch da eseguire nel caso l’espressione sia vera); REPEAT (branch da eseguire nel caso l’espressione logica sia vera), UNTIL(espressione) prima fai l’operazione e poi prima di rifarlo valuta se l’espressione logica sia vera. LINGUAGGI DI PROGRAMMAZIONE: -COMPILATI>> il compilatore “traduce” il codice scritto nel linguaggio di programmazione in linguaggio macchina. L’algoritmo/programma compilato può essere poi eseguito dalla macchina(c-c++-cobol-fortran) PROS= non occorre ricompilare il codice per eseguire più volte lo stesso algoritmo/programma, basta avere la sua versione compilata CONS= il codice “tradotto” è tradotto per una specifica architettura (l’HW della macchina sul quale deve essere eseguito) e necessita di essere ricompilato per altri tipi di HW. -INTERPRETATI>> un interprete “traduce” il codice scritto nel linguaggio di programmazione in linguaggio macchina durante l’esecuzione di questo. (python-ruby-javascript-matlab) PROS= l’algoritmo/programma funziona su qualsiasi macchina in grado di interpretarlo senza limiti di architetture specifiche. CONS= l’algoritmo/programma è in genere più lento della versione compilata. Questo può essere un problema quando si vogliono alte prestazioni. LINGUAGGI DI SIMULAZIONE Linguaggio di Descrizione Hardware (HDL )>> il codice è tradotto in un linguaggio macchina che simula una serie di componenti elettroniche e il loro assemblamento. Il circuito elettronico simulato, dopo essere stato verificato, viene poi stampato con appositi macchinari in un “circuito integrato” PROS= i sistemi embedded sono in genere più veloci e sicuramente più economici CONS= ogni sistema embedded può eseguire solo la/le funzione/i per il quale è stato progettato, non è possibile “riprogrammarlo”. INTRODUZIONE AGLI ALGORITMI Alcuni sviluppi informatici importanti del 2020>> Al-discovered molecules, Hyper-personalized medicine, Tiny-Al, Differential privacy. LIMITI DEGLI ALGORITMI: CALCOLABILITA’: ci chiediamo se, dato un problema, è possibile creare un algoritmo che sia sempre in grado di dare “risposta” (es: si rende conto che non si può dividere per 0). ESEMPIO= immaginiamo di giocare a un gioco da tavolo, i pezzi di questo gioco sono tessere del domino che hanno delle sequenze di lettere invece di numeri su i due lati e, visto che è la prima volta che giochiamo, per semplicità usiamo solo tessere che hanno sequenze A e B; ad ogni round si usano 4 tessere pescate a caso. Lo scopo è trovare un ordine, potendo riutilizzare le tessere, per il quale la sequenza dei caratteri superiori sia uguale a quella inferiore. Possiamo vedere come alcuni
set di tessere non abbiamo soluzione; decidiamo di ragionare in maniera algoritmica per vincere a questo gioco. Quindi:
firmware, ovvero un software che adempie a funzioni simili a quelli di un OS con meno flessibilità, si usa per dispositivi informatici con architetture particolari ed è integrato in una memoria dedicata). Cosa deve fare? -CONTROLLO DELL’ESECUZIONE DEI PROGRAMMI (caricamento in memoria, interfacciamento con le periferiche o con la rete) -CONTROLLO DISPOSITIVI I/O -ARCHIVIAZIONE DATI E PROGRAMMI (gestire i dispositivi di memoria di archiviazione) -CONTROLLO DELL’ACCESSO -CONTABILLIZZAZIONE (monitoraggio delle risorse HW) -GESTIONE MALFUNZIONAMENTI(risolvere problemi legati all’esecuzione dei programmi, notificare quando possibile malfunzionamenti dell’HW) Come i sistemi operativi svolgono tali funzioni? -GESTIONE DELLA CPU(decide quali istruzioni di quali programmi la CPU deve eseguire), l’obiettivo è gestire più task allo stesso momento per garantire l’interattività(o almeno dare l’impressione). In realtà i SI sono per lo più sistemi time-sharing, ad ogni programma viene assegnato un certo tempo per progredire con la sua esecuzione tramite la CPU; quale programma va in esecuzione e per quanto tempo viene deciso tramite un algoritmo di scheduling e il costo di questa interattività si paga in performance, infatti, il continuo cambio di task comporta delle operazioni di Swap e Context Switch. -GESTIONE DELLA MEMORIA ( gestione della Cache/RAM, della memoria di massa tramite un File System) -UI(User Interface) e profili utente /interfaccia grafica, gestione delle credenziali d’accesso e protezione dati personali) -GESTIONE DELLA RETE(fornisce l’interfaccia con i dispositivi di connessione alla rete ai programmi che la richiedono) HCI>> SI OCCUPA DELL’INTERAZIONE TRA L’INDIVIDUO E LA MACCHINA -FEEDFORWARD: DALL’UTENTE ALLA MACCHINA -FEEDBACK: DALLA MACCHINA ALL’UTENTE CICLO DI INTERAZIONE: l’utente formula delle interazioni, ovvero vuole fare qualcosa con il computer, dopo di che c’è lo Specify Action ovvero andiamo ad informare il computer quello che vogliamo fare attraverso delle azioni di comando( es: scrivo testo e-mail). Successivamente in genere c’è la risposta percettiva del computer(output), sarà l’utente tramite una sua interpretazione che farà una valutazione dello stato e il ciclo continuerà in base alle nuove azioni che l’utente vorrà fare (inviare l’e-mail). Alcuni principi di design: semplificare la struttura della richiesta, riutilizzare la conoscenza dell’utente (shortcut, riutilizzo di icone simili per funzioni simili in altri programmi o tramite le metafore ovvero usare parole comuni file-cartella), il mapping quindi la posizione sullo strumento di una sua caratteristica (fornelli e pomelli), sfruttare il potere dei costrints limitazioni dello strumento che in realtà ci suggeriscono molto( quando il programma non è in grado di svolgere una operazione si indirizza l’utente nella direzione giusta, si tolgono cicli di interazione che non servono a niente).
DESIGN FOR ERRORS>> gestire gli errori, l’utente prima o poi farà qualcosa di “sbagliato”; dunque verranno inviati messaggi di warning, funzione Undo/Redo, Funzione Cancel/Abort. Vengono aggiunti cicli di interazione che però aiutano l’utente a non commettere un errore. Il mapping non è sempre possibile perché per task complessi non è sempre possibile rifarsi a paradigmi pre-esistenti. Si ha quindi la necessità di creare un nuovo paradigma con un design creato con caratteristiche necessarie per farlo diventare uno “standard” (standardizzazzione). TECNOLOGIA DI TENDENZA ARTIFICIAL INTELLIGENCE>> seconda la definizione di Pool-Msckworth-Goebel, si tratta di un qualsiasi dispositivo artificiale in grado di elaborare informazioni riguardanti uno specifico task ed eseguire azioni sulla base di tale elaborazione per massimizzare le possibilità di riuscita del task assegnatoli. -CONTROLLORI: sono dispositivi che “controllano” i valori di una o più variabili ( in genere associate a segnali provenienti da sensori) ed eseguono azioni che mirano a portare tali valori a livelli prestabiliti (termostato, condizionatore, controllore pressione). -REASONERS: sono Software in grado di valutare la validità di formule logiche tenendo conto di una certa conoscenza; molto spesso usati in database avanzati per identificare inconsistenze logiche(errori). -MACHINE LEARNING: sono algoritmi in grado di imparare a eseguire uno o più task tramite un processo di apprendimento. Il Pattern recognition è un compito nel quale si utilizza il machine learning; è un task di riconoscimento di determinati pattern/situazioni presenti nei dati ricevuti in input( fotocamera riconosce un qrcode da un oggetto). Le reti neurali sono un particolare modello di algoritmo di macchina learning ispirato vagamente al modello del cervello, come tutti gli algoritmi sono esposte a una fase di “training” dove hanno la capacità di configurare parte dei propri parametri per convergere a un risultato ottimale. AMBIENTE VIRTUALE>> un ambiente interamente o parzialmente simulato da un computer in grado di far percepire la sua presenza all’utente come fisica (fenomenica-reale). Un ambiente virtuale può essere virtuale può essere più o meno immersivo. L’immersività è un fattore percettivo che indica quanto, dal punto di vista sensoriale, l’esperienza virtuale viene percepita come parte della realtà. -REALTÀ VIRTUALE: simula ambienti virtuali altamente immersivi, la scena virtuale si sostituisce interamente alla realtà e prevede l’utilizzo di un HMD adatto ad applicazioni dove l’utente non necessita l’interazione con la realtà. -REALTA’ AUMENTATA: simula parzialmente ambienti virtuali, in particolare aumenta la realtà arricchendo una scena reale con informazioni aggiuntive. Utilizza sia HMD ma anche altri dispositivi come smartphone, è adatto ad applicazioni dove l’utente ha bisogna di ottenere informazioni aggiuntive su quello che vede nella realtà. -REALTA’ MISTA: simile alla realtà aumentata, simula parzialmente ambienti virtuali, in generale si usa per mescolare una scena reale con elementi virtuali che vanno oltre la semplice aggiunta di informazioni. Necessita di un HMD, è adatto per applicazioni in cui l’utente interagisce attivamente sia con elementi della realtà che con elementi virtuali e che scalano tra VR e AR.