







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
Gli appunti vertono su: -codifica binaria -rappresentazione di numeri in bit -operazioni tra bit -cos'è un file e come si codifica -rappresentazione di testi e immagini -architettura del calcolatore -problemi e algoritmi -web (+pagerank, minimal spanning tree)
Tipologia: Appunti
1 / 13
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!








L'informatica è più conosciuta per il suo aspetto tecnologico, fa parte della nostra quotidianità, ma esiste un mondo culturale e scientifico dietro ad essa, che è il vero motore, che ne permette l’applicazione. Una domanda importante che dobbiamo porci è: “che cosa possono e non possono fare le macchine?” e “che cosa possiamo fare noi con le macchine?”. Ci sono attività in cui l’uomo è insostituibile. Esiste l’ideazione di un'applicazione, ovvero cercare di risolvere problemi, immaginando le soluzioni, ma anche universi, insieme di cose, di fatti, modi di comportarsi rispetto ai fatti. Il modulo verte su:
- Struttura di un elaboratore: importante per capire come un flusso di elettroni possa rappresentare e codificare un’attività complessa, che producono comportamenti intelligenti. Un algoritmo è la logica di qualsiasi applicazione, trasforma un comportamento meccanico, deterministico in qualcosa di significativo. L'algoritmo è un'invenzione, la soluzione di un problema e produrlo è un’attività creativa. Per fare questo c’è bisogno di metodi algoritmi, uno di questi è la ricorsione: le informazioni vengono elaborate in modo uniforme, a partire da un tutto e suddividendole in parti più piccole, ma omogenee. _- una delle applicazioni più conosciute è il web, che è un universo di servizi. Lo affrontiamo in due aspetti: la programmazione del web e gli algoritmi per la ricerca nel web
che lo informò nel 1701 che il metodo di contare con i numeri in base 2 comunicatogli in precedenza da Leibniz svelava il mistero delle figure di Fo-Hi, associate allo yin e yang della filosofia taoista secondo il Libro dei Mutamenti, o I-Ching
Le sequenze prese in considerazione da Leibniz non comprendono le sequenze di 8 bit che costituiscono il byte, tuttavia, un pioniere della logica matematica e ammiratore dell’opera di
corrispondono a gruppi di 8 cifre binarie, osservando che il loro numero è all’incirca pari a quello delle sillabe delle lingue europee e si dedicò alla realizzazione di un congegno meccanico per scrivere utilizzando questo codice. RAPPRESENTAZIONE DI NUMERI IN BIT Comunemente i numeri vengono scritti in notazione posizionale, il che vuol dire che il significato di ogni cifra dipende dalla sua posizione.
unita`, decine, centinaia, etc.
soltanto due “0” e “1” e, in modo analogo nella base 10, il loro valore è uguale a potenze crescenti della base numerazione 1 = 2^0, 2 = 2^1, 4 = 2^2, 8 = 2^
questo motivo, ha necessità di usare 16 simboli per rappresentare le cifre:
In una sequenza di bit si usa chiamare il bit più a destra come il meno significativo, il bit più a sinistra si chiama bit più significativo. OPERAZIONI TRA BIT (E BYTE) I calcolatori compiono le operazioni su bit a partire da alcune operazioni fondamentali dette
● NOT corrisponde alla negazione: NOT x è la negazione della variabile x; ● AND corrisponde alla congiunzione: x AND y è vera se sia x che y sono vere; ● OR corrisponde alla disgiunzione: x OR y è vera se almeno una fra x e y è vera; ● XOR corrisponde alla OR esclusivo: x XOR y è vera se soltanto una fra x e y è vera. Lo XOR si può anche vedere come un “indicatore di diversità”: x XOR y vale 1 se x e y hanno un valore diverso, 0 se hanno lo stesso valore. Un'operazione si dice:
elencate tutte le possibili combinazioni delle variabili coinvolte in un’espressione su ogni riga
Solitamente le codifiche dei file si scrivono in esadecimale perché in questo modo tutti i byte si possono scrivere con lo stesso numero di cifre (ovvero 2).
caratteri diversi. Per superare questo limite è stato proposto di estendere la codifica ASCII sfruttando il bit più significativo (l'ottavo) che nella codifica ASCII standard non viene utilizzato (ovvero è sempre posto a zero). Usa gruppi di byte per rappresentare i caratteri Unicode. In un file testo codificato con UTF-8:
più piccoli in cui può essere scomposto il testo. Il singolo carattere è codificato secondo lo standard ASCII, che associa ad ogni carattere un byte corrispondente, secondo una certa tabella. Cosa si può rappresentare con ASCII --> lettere minuscole e maiuscole, le cifre decimali da 0 a 9, i segni di punteggiatura, alcuni caratteri di uso comune, lo spazio che è, molto importante perché
viene utilizzato per separare le parole, e un carattere speciale “a capo”, che serve per separare le righe. Cosa non si può rappresentare con ASCII --> il colore del carattere, non si può decidere la resa grafica del carattere, cioè il font, né la dimensione del carattere e neppure l’aspetto del carattere per esempio dovranno essere utilizzati (grassetto, corsivo…). RAPPRESENTAZIONE DELLE IMMAGINI Anche per le immagini è necessario tradurre un'immagine in sequenza di byte (numeri da 0 a 255). L'immagine viene astratta come un rettangolo di dimensioni variabili che contiene colori, poi viene
Element). La risoluzione dell'immagine, che si misura con il numero di pixel utilizzati in larghezza e in altezza, determina il numero di pixel utilizzati per rappresentare l'immagine: maggiore è la risoluzione, maggiore è il numero di pixel utilizzati. Tipicamente l'immagine è codificata con la sequenza dei colori dei pixel a partire dall'angolo dell'immagine in alto a sinistra.
rappresentare il colore. ● La codifica più conosciuta e diffusa è quella RGB (Red Green Blue). Tale codifica deriva dal vecchio modo di generare il colore nelle televisioni a tubo catodico. Ogni pixel della televisione veniva colorato a seconda dell'intensità con cui veniva colpito da tre fasci di elettroni, ciascuno corrispondente a colori rosso, verde e blu. Il colore viene rappresentato dall'intensità di ciascuno dei tre colori, la quale è tipicamente rappresentata da un byte. Un colore RGB, quindi, si rappresenta con 3 byte. Il bianco è il colore ottenuto con l'intensità massima di tutte e 3 le componenti ● La codifica CMYK (Cyan, Magenta, Yellow, Key black), detta anche di quattricromia, è usata principalmente nelle stampanti a getto di inchiostro. Il colore è rappresentato da 4 numeri. ● La codifica HSV (Hue, Saturation, Value) dall'inglese “tonalità, saturazione, valore", è particolarmente orientato al modo in cui i colori vengono percepiti dall'essere umano, essendo basato sulla percezione che si ha di un colore in termini di tinta, sfumatura e tono. I possibili colori ottenibili con la codifica RGB sono pari a tutte le possibili configurazioni di 3 byte ovvero 2^3x8 = 2^24 ≃16 x 10^6. Siccome è molto difficile che in un’immagine ci possano essere
una funzione analoga alla tabella ASCII usata per la codifica del testo (in un'immagine con una palette di 256 colori, ogni pixel sarà codificato da 8 bit, allo stesso se una palette contiene soltanto due colori, come nel caso di un'immagine in bianco e nero, ogni pixel può essere rappresentato da un bit soltanto.) ARCHITETTURA DEL CALCOLATORE Codifica delle istruzioni --> le istruzioni sono operazioni sui dati e possono essere rappresentate da una sequenza di byte. La codifica è adottata da tutti i processori.
● Memoria principale : dispositivo hardware che contiene programmi da eseguire e dati utili alla loro esecuzione, sono memorizzati sotto forma di sequenza di byte. La memoria principale è volatile, cioè il suo contenuto viene perso dopo che il calcolatore viene spento. (in inglese main memory) ● Bus di comunicazione : canale attraverso cui avviene la comunicazione fra i dispositivi presenti ● Periferiche di input/output : dispositivi che permettono al calcolatore di comunicare con l’esterno (in inglese I/O devices) ● Controllore I/O : dispositivo che permette l’utilizzo delle varie periferiche (in inglese I/O controller) Il processore esegue continuamente istruzioni. Non appena viene acceso inizia ad eseguire la prima istruzione contenuta in una locazione di memoria nota e continua così fino allo spegnimento. Per l'esecuzione delle istruzioni utilizza i registri, piccole zone simili alla memoria, ma interne al processore, su cui il processore può scrivere e leggere i dati più velocemente rispetto a quanto farebbe sulla memoria, perché permettono l'accesso ai dati senza dover accedere al bus di comunicazione. I registri vengono identificati da un nome, che è diverso da processore a processore in base a caratteristiche interne. Seguendo la metafora della cucina, i registri rappresentano il piano di lavoro sul cui gli ingredienti (i dati) vengono messi appena prima di essere elaborati, allo stesso modo, il processore preleva dalla memoria i dati di cui ha bisogno e li mette nei registri. Esistono diversi tipi di registro:
l'indirizzo di memoria da cui prelevare la prossima istruzione da eseguire.
e la scrive in un altro registro chiamato Istruction Register (IR).
lunghezza (in byte). Una volta calcolata la lunghezza dell'istruzione, il processore incrementa il PC del numero corrispondente alla lunghezza dell'istruzione. In questo modo, durante la prossima fase di fetch il Program Counter conterrà correttamente l'indirizzo di memoria dell'istruzione successiva.
esegue l'istruzione. Si torna alla prima fase (di fetch) in cui verrà prelevata la prossima istruzione.
All'accensione, il valore del PC è pari a zero. Inizia quindi a prelevare la prima istruzione dall'indirizzo zero e così via fino al suo spegnimento. Modalità di codifica delle istruzioni: Le due famiglie di codifica principali sono:
complesse che possono fare più cose
Per eseguire uno stesso compito ci sarà bisogno di più istruzioni RISC rispetto al numero di istruzioni CISC necessarie, inoltre, l'esecuzione di una singola istruzione RISC è più veloce rispetto all'esecuzione di una CISC. La scelta di codifica delle istruzioni determina l'Instructure Set Architecture ( ISA ), che è il modo con cui sono codificate le istruzioni del processore, che è influenzata da motivi commerciali e dalle tipologie di applicazioni da eseguire. Il compilatore svolge un lavoro di traduzione dal linguaggio ad alto livello al linguaggio macchina costituito da byte. Gerarchia di memoria --> La grande quantità di dati normalmente presente in un elaboratore è memorizzata su supporti che possono presentare caratteristiche molto diverse tra loro, in termini di tempo di accesso, di capacità e di costo. Tali supporti sono organizzati come una struttura gerarchica in cui al livello più alto troviamo i dispositivi di memoria più lenti, con capacità maggiore e meno costosi; man mano che si scende in questa gerarchia, i supporti hanno capacità sempre più piccola, tempo di accesso sempre più basso e costo maggiore. i tempi di accesso aumentano all'aumentare della distanza dal processore. Oltre al tempo di accesso, capacità e costo, hanno un'importanza anche:
● l’ingresso deve essere finito e possedere una struttura identificabile ed interpretabile. Deve essere fissato quindi il modo con cui i dati in ingresso vengono rappresentati. ● Le istruzioni devono essere non ambigue ed effettivamente eseguibili, devono fare riferimento ad un insieme finito e prefissato di operazioni di base che sappiamo eseguire. Le operazioni di base con la descrizione del loro effetto formano il modello di calcolo. ● La codifica dell’algoritmo è la sua descrizione precisa che, se vogliamo venga eseguito da un computer, farà uso di uno dei tanti linguaggi di programmazione oggi disponibili. ● La terminazione è la richiesta che per ogni ingresso l’esecuzione dell’algoritmo termini in un numero finito di passi, cioè dopo aver eseguito un numero finito, ma in generale non uguale per tutti gli ingressi, di istruzioni elementari. Un algoritmo non è una qualunque procedura, bensì è una strategia per risolvere un problema ben definito Perciò diciamo che un problema computazionale è ben definito quando siano specificati:
Dato un problema algoritmico se esiste una soluzione, ossia un algoritmo che lo risolve, allora è facile convincersi che ne esistono infinite altre, tuttavia spesso esistono soluzioni sostanzialmente diverse dello stesso problema. Un esempio è dato dalla soluzione del problema di ordinare una lista di parole, che richiede un numero di operazioni di scambio e di confronto proporzionale al numero di permutazioni di ordine n e cioè n! un numero enorme anche per piccoli valori di n. Esistono metodi per ordinare una lista di parole ben più efficienti. Ad esempio:
partire dai più` corti e connettendo solo parti della rete che non sono ancora state connesse. Questo è chiamato algoritmo di Kruskal (J.B. Kruskal lo pubblicò nel 1956).