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


Introduzione all'Architettura dei Calcolatori: Esercizi e Quiz, Appunti di Elementi di Informatica

Una serie di esercizi e quiz relativi all'architettura dei calcolatori, coprendo argomenti come il ciclo di fetch-decode-execute, la memoria, la cache e il sistema operativo. Gli esercizi sono progettati per aiutare gli studenti a comprendere i concetti chiave e a sviluppare le loro capacità di problem solving.

Tipologia: Appunti

2023/2024

Caricato il 26/03/2025

sofia-bergaglia
sofia-bergaglia 🇮🇹

2 documenti

1 / 105

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
MODULO I: L’introduzione all’informatica lezione 1
Dal francese, acronimo di Information e automatique Philippe Dreyfus,1962
Definizione di elaboratore «termine inglese per calcolatore, sinonimo di elaboratore elettronico. È un apparecchio
elettronico destinato alla elaborazione dei dati, privo di capacità decisionale o discrezionale, che compie determinate
operazioni secondo procedure prestabilite o programmi» [Treccani]
Schema concettuale del calcolatore «general purpose»
secondo il modello della Macchina di Von Neumann»
Elaborazione dei dati: dati -> elaborazione -> informazione
Dati: caratteri, simboli e oggetti usati per rappresentare la realtà.
L'elaborazione dei dati: attività di raccolta, manipolazione, memorizzazione e presentazione dei di dati per
produrre informazioni significative e rilevabili
Informazione: è la conoscenza ottenuta dall’elaborazione dei dati.
Ciclo di elaborazione dell’informazione
1. Input (Inizio)
-Inserimento nel computer dei dati grezzi raccolti e che verranno processati (nella fase di «processing»).
L’inserimento dei dati grezzi può avvenire attraverso tastiera, mouse, scanner, microfoni, lettori di codici a
barre, joystick, tavolette dati digitali, etc..
2. Processing (elaborazione)
-Vengono eseguite le operazioni di manipolazione dei dati grezzi utilizzando un determinato metodo di
elaborazione. L’elaborazione viene solitamente eseguita dalla CPU (Central Processing Unit, unità di
elaborazione centrale) dell’elaboratore
3. Storage (archiviazione)
-I dati manipolati vengono salvati in forma fisica o software.
-I dati grezzi forniti nella prima fase sono ora "elaborati" e forniscono le informazioni
-L'archiviazione può essere eseguita su un disco rigido esterno, un disco rigido integrato, pen drive, micro,
Schede SD, compact disc o anche in registri.
4. Output (Termine)
-Le informazioni vengono trasmesse, esposte e visualizzate all’utilizzatore. Tali informazioni possono essere
successivamente soggette ad ulteriori elaborazioni successive insieme ad altri dati
Tipologie di elaborazione
dell’informazioni
«Studio sistematico degli algoritmi che descrivono e trasformano l’informazione: la loro teoria,
analisi, progetto, efficienza, realizzazione e applicazione» [Association for Computing Machinery
(ACM)]
Scienza della rappresentazione e della elaborazione automatica della informazione.
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
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Anteprima parziale del testo

Scarica Introduzione all'Architettura dei Calcolatori: Esercizi e Quiz e più Appunti in PDF di Elementi di Informatica solo su Docsity!

MODULO I: L’introduzione all’informatica lezione 1 Dal francese, acronimo di Information e automatique Philippe Dreyfus, Definizione di elaboratore – «termine inglese per calcolatore, sinonimo di elaboratore elettronico. È un apparecchio elettronico destinato alla elaborazione dei dati, privo di capacità decisionale o discrezionale, che compie determinate operazioni secondo procedure prestabilite o programmi» [Treccani] Schema concettuale del calcolatore «general purpose» secondo il modello della Macchina di Von Neumann» Elaborazione dei dati: dati -> elaborazione -> informazione

  • Dati : caratteri, simboli e oggetti usati per rappresentare la realtà.
  • L'elaborazione dei dati: attività di raccolta, manipolazione, memorizzazione e presentazione dei di dati per produrre informazioni significative e rilevabili
  • Informazione : è la conoscenza ottenuta dall’elaborazione dei dati. Ciclo di elaborazione dell’informazione 1. Input (Inizio)
  • Inserimento nel computer dei dati grezzi raccolti e che verranno processati (nella fase di «processing»). L’inserimento dei dati grezzi può avvenire attraverso tastiera, mouse, scanner, microfoni, lettori di codici a barre, joystick, tavolette dati digitali, etc.. 2. Processing (elaborazione)
  • Vengono eseguite le operazioni di manipolazione dei dati grezzi utilizzando un determinato metodo di elaborazione. L’elaborazione viene solitamente eseguita dalla CPU (Central Processing Unit, unità di elaborazione centrale) dell’elaboratore 3. Storage (archiviazione)
  • I dati manipolati vengono salvati in forma fisica o software.
  • I dati grezzi forniti nella prima fase sono ora "elaborati" e forniscono le informazioni
  • L'archiviazione può essere eseguita su un disco rigido esterno, un disco rigido integrato, pen drive, micro, Schede SD, compact disc o anche in registri. 4. Output (Termine)
  • Le informazioni vengono trasmesse, esposte e visualizzate all’utilizzatore. Tali informazioni possono essere successivamente soggette ad ulteriori elaborazioni successive insieme ad altri dati Tipologie di elaborazione dell’informazioni - «Studio sistematico degli algoritmi che descrivono e trasformano l’informazione: la loro teoria, analisi, progetto, efficienza, realizzazione e applicazione » [Association for Computing Machinery (ACM)] - Scienza della rappresentazione e della elaborazione automatica della informazione.

Elaborazione manuale delle informazioni Elaborazione automatica delle informazioni Viene gestita una quantità limitata di dati. Vengono gestite enormi quantità di dati. La memorizzazione dei dati avviene su supporti cartacei. La memorizzazione dei dati avviene su supporti elettronici di memorizzazione presenti all’interno dell’elaboratore elettronico. La velocità e l’accuratezza delle operazioni sono ridotte. La velocità e l’accuratezza delle operazioni sono molto elevate. Il costo delle operazioni è molto elevato perché richiede l’intervento umano. Il costo delle operazioni è ridotto perché esse vengono svolte dall’elaboratore elettronico attraverso azioni (o task) ripetitivi. Le operazioni sono poco efficienti e comportano stanchezza nell’operatore umano direttamente coinvolto in tutte le fasi di elaborazione. Le operazioni sono molto efficienti e non comportano stanchezza nell’operatore umano. Il Sistema di elaborazione : insieme strutturato di tecnologie, metodologie e processi, che interagiscono fra loro per realizzare la funzione di elaborazione dei dati ed ottenere le informazioni desiderate. Ogni sistema di elaborazione è composto da:

  • Hardware : sono i componenti fisici dell’elaboratore (componenti elettronici ed ottici) che possono essere toccati fisicamente
  • Software : sequenza di informazioni e istruzioni necessari a svolgere l’elaborazione dei dati, sotto forma di applicazioni e programmi Il sistema operativo (S.O) è il software strettamente collegato all’hardware per consentirgli di completare le operazioni necessarie all’elaborazione. Gestire le risorse dell’elaboratore, come memorie processore (CPU) e periferiche. Il software operativo fornisce i servizi e funzionalità specifiche dell’utente finale. Le applicazioni istallate all’interni dei dispositivi si chiamano Applicazioni Locali, e si servono di Sistema Operativo per funzionare correttamente. Le principali applicazioni dell’informatica Fin dal suo esordio, l’informatica ha avuto diversi campi di applicazioni, che comprendono i settori della medicina, dell’ingegneria, della chimica e dell’astronomia, la scuola, le arti, etc.

elettrica per rappresentare i due valori binari (spenti=0, accesi=1).

  • ENIAC: ELECTRONIC NUMERICAL INTEGRATOR AND CALCULATOR: Derivato dal MARK I, realizzato nel 1943. Conteneva 18.000 valvole termoioniche e riempiva quasi un edificio. Era lungo 100 piedi e alto 10 piedi e pesava 30 tonnellate. Prototipo completamente elettronico, perciò non conteneva alcun componente elettromeccanico. Eseguiva le istruzioni molto più rapidamente. L'ENIAC potrebbe aggiungere due numeri di 10 cifre in circa 1/5.000 di secondo e potrebbe moltiplicare due numeri in 1/300 di secondo. Era 1.000 volte più veloce del Mark I.
  • COLOSSUS: costruito in Inghilterra nel 1943 sotto la direzione di Alan Turing. È stato uno dei primi computer ad essere costruito fuori dagli Stati Uniti, è stato utilizzato per crackare il famoso tedesco Codice enigma che i nazisti ritenevano infrangibile. Colossus ha avuto una minore notorietà rispetto al precedente prototipo ENIAC a causa della segretezza del progetto Enigma.
  • ZEUS 1: progetto sviluppato dell’ingegnere tedesco Konrad Zuse che stava lavorando ad un dispositivo informatico per l’esercito tedesco. Era simile nel design all'ENIAC ed era completamente elettronico. Comprendeva una logica programmabile. Il progetto Z1 non è stato completato prima della fine della Seconda guerra mondiale.
  • LA MACCHINA DI VON NEUMANN: macchina progettata da John Von Neumann (1903-1957). Ha proposto un design del computer radicalmente diverso basato su un modello chiamato computer con programma memorizzato internamente. Tutti i precedenti computer erano programmati esternamente con fili e connettori. L’unità di memoria memorizzava solo dati, non istruzioni. Von Neumann ha proposto che le istruzioni che controllano l'operazione del computer debbano essere codificate come valori binari e memorizzati internamente nella unità di memoria insieme ai dati.  1° GENERAZIONE (1950-1957) Prototipi:
  • UNIVAC I (il primo computer ad essere venduto);
  • IBM 701 (il primo computer costruito dall’IBM). I primi sistemi erano ingombranti, costosi, lenti e inaffidabili. Usavano valvole termoioniche, molto difficili da mantenere. Erano utilizzate solo da personale addestrato e solo in luoghi specializzati come grandi aziende, laboratori di ricerca governativi, universitari e militari.  2° GENERAZIONE (1957-1965) Grande cambiamenti nelle dimensioni e nella complessità dei computer: - l'ingombrante valvola termoionica venne sostituita da un singolo transistor di pochi millimetri; - l’unità di memoria era ora costituita da minuscoli nuclei magnetici aventi solo 1/50 di pollice di diametro. Queste tecnologie non solo hanno ridotto drasticamente le dimensioni dei computer, ma ne ha anche aumentato l'affidabilità e ridotto i costi. All'improvviso, l'acquisto e l'utilizzo di un computer è diventata una vera possibilità per alcuni piccoli e medie imprese, college e agenzie governative. Furono sviluppati e introdotti i primi di alto livello linguaggi di programmazione, come FORTRAN e COBOL.  3° GENERAZIONE: 1965 - 1975La terza generazione è caratterizzata dal circuito integrato. Invece che utilizzare componenti elettronici discreti, i circuiti integrati con transistor, resistori e condensatori sono stati incisi fotograficamente su uno strato di silicio, riducendo ulteriormente le dimensioni e il costo dei computer. Nacque il primo minicomputer dal nome PDP‐1 e prodotto dalla Digital Equipment Corp. Nacquero anche l’industria del software, soprattutto per la contabilità e l’analisi statistica. Entro la metà

degli anni '70, i computer erano ampiamente utilizzati nei settori industriali, governativi, militari e di formazione.  4° GENERAZIONE:1975 - 1985 La quarta generazione vide la comparsa del primo microcomputer. La tecnologia dei circuiti integrati era avanzata al punto che un sistema informatico completo potrebbe essere contenuto in un unico circuito da tenere in mano. Le macchine elettroniche da scrivania dei primi anni, ora sono diventati una macchina desktop, aventi le stesse dimensioni di una macchina da scrivere. L’Altair 8800, fu il primo micro-computer al mondo  5° GENERAZIONE 1985 - ?: smartphone, tablet, potenza di calcolo paragonabile a quella dei personal computer di pochi anni fa. Praticità di trasporto e leggerezza; connessione e internet permanente. Prima 1950–1957 • I primi computer commerciali

  • I primi linguaggi di programmazione simbolici
  • Uso di aritmetica binaria, tubi a vuoto per
  • Conservazione
  • Ingresso/uscita scheda perforata Seconda 1957–1965 • Transistor e memorie centrali
  • I primi dischi per l'archiviazione di massa
  • Riduzione delle dimensioni, maggiore affidabilità, minori costi
  • I primi linguaggi di programmazione di alto livello
  • I primi sistemi operativi Terza 1965–1975 • Circuiti integrati
  • Ulteriore riduzione delle dimensioni e dei costi, aumentati affidabilità
  • I primi minicomputer
  • Sistemi operativi in multiproprietà
  • Aspetto dell'industria del software
  • Prima serie di standard informatici per

- Applicazioni Le caratteristiche dipendono da: **- Prestazioni

  • Costi** La rappresentazione dell’informazioni Le informazioni sono gestite dai sistemi di elaborazione forniscono la conoscenza in base ai dati grezzi elaborati; vengono fornite o trasmesse attraverso i supporti fisici. Esistono delle regole che definiscono le relazioni tra informazioni e supporti fisici.
  • CODIFICA: operazione con cui una informazione viene scritta su un supporto fisico.
  • DECODIFICA: operazione con cui una informazione viene letta da un supporto fisico. La codifica decimale I dati e le istruzioni devono essere rappresentati in un formato adatto alla loro elaborazione e successiva elaborazione da parte di un sistema di elaborazione. I numeri vengono rappresentati da una successione di simboli, scelti da un insieme infinito (denominato ALFABETO). Successioni ben formate di simboli sono associate a dati attraverso i CODICI. Nota: alla successione 7,891,2 non corrisponde alcun significato perché non è una successione ben formata (c’è un errore nel simbolo separatore «virgola», che viene ripetuto due volte. Dato un alfabeto di n simboli, si ottengono nk^ successioni di lunghezza k (anche non ben formate). Esempio: Nel sistema decimale, con le cifre da 1 a 10, si ottengono 103 possibili successioni diverse di numeri tra 000 e 999. La codifica binaria Vengono considerati solo due valori 0 e 1, utile per l’elaborazione automatica da parte di un elaboratore elettronico. I valori 0 e 1 corrispondono allo stato dei dispositivi bistabili presenti nell’elaboratore elettronico, che sono in grado di assumere uno stato dei due possibili, a seconda del valore di tensione elettrica ai capi dei dispositivi stessi. Un alfabeto di questo tipo è detto BINARIO. Bit o cifre binarie (BInary digiT): sono gli elementi dei codici usati dai calcolatori elettronici. Costituiscono anche l’unità elementare di informazione. Nel caso della codifica binaria, con k bit si possono ottenere 2 k^ successioni diverse.
  • Esempio con 3 bit: 23 = 8 successioni di 3 bit ciascuna  000, 001, 010, 011, 100, 101, 111
  • Esempio con 8 bit: 28 = 256 successioni di 8 bit ciascuna -> 000, 001, 010, 011, 100, 101. 111 Note:
  • con 8 bit posso rappresentare 256 dati in formato binario;
  • BYTE: è una successione di 8 bit;
  • esistono i multipli e i sottomultipli del Byte
    • KiloByte (KB): 210 Byte = 2.024 Byte
    • MegaByte (MB): 220 KiloByte = 1.048.576 Byte
    • GigaByte (GB): 230 Byte = 1.073.741.824 Byte
    • TeraByte (TB): 240 Byte = 1.099.511.627.776 Byte Il massimo numero intero positivo rappresentabile con la codifica binaria è : 28 ‐1 = 255 La codifica dei numeri – sistema decimale Notazione decimale: è una rappresentazione di tipo posizionale, cioè il valore di ogni cifra dipende dalla posizione assunta nella successione di simboli che rappresenta il numero.
    • Alfabeto: {0, 1, 2, 3,4, 5, 6, 7, 8, 9}; La codifica dei numeri – sistema binario Il precedente meccanismo può essere adottato anche per la codifica dei numeri con il sistema binario, avente come simboli 0 e 1. Conversione BINARIA - DECIMALE Esempio: per convertire il numero binario 1001 in decimale, occorre: - riempire la riga della tabella con la successione binaria considerata; - associare la potenza decimale con il relativo esponente in base alla posizione; - moltiplicare i numeri ottenuti in base dieci e sommare i prodotti parziali. Conversione DECIMALE – BINARIA Si utilizza il metodo delle divisioni successive, poiché il resto e il quoziente delle divisioni non dipende dalla base adottata. - Si effettuano divisioni successive fino a quando non si ottiene il quoziente zero. - Il numero binario è dato dalla successione dei resti letti in ordine decrescente (dal resto dell’ultima divisione a quello della prima).
      • Esempio: convertire il numero 19 dalla base dieci alla base 2. Il numero 19 in base dieci diventa in base binaria:

La rappresentazione dei caratteri e delle immagini: CODIFICA BINARIA DI UN CARATTERE Per rappresentare i caratteri, un elaboratore elettronico utilizza la codifica ASCII ( American Standard Code for Information Interchange ). Vengono impiegati 8 bit per rappresentare ogni carattere  consente di rappresentare fino a 256 caratteri. Esistono altre tipologie di codifica dei caratteri. Es. UNICODE, che impiega da 16 a 32 bit  consente di rappresentare fino a 65.000 caratteri. TABELLA ASCII Esistono due principali metodi di rappresentazione delle immagini. Raster (“griglia”): L’informazione grafica è rappresentata come matrice di pixel. Vettoriale : L’informazione grafica è rappresentata da funzioni matematiche (dipendenti dalla geometrie di punti, pinti, linee e poligoni La digitalizzazione una grandezza fisica, un suono o una immagine possono essere caratterizzate da una funzione matematica continua nel tempo e con valori in un insieme continuo. Per poter creare una rappresentazione digitale di una informazione continua occorrono due operazioni:

  1. campionamento: vengono considerati solo alcuni valori discreti (campioni) dell’informazione continua -

    discretizzazione lungo l’asse del tempo. Da notare che l’operazione diversa del campionamento è l’interpolazione.

  2. Quantizzazione: ai campioni vengono associati determinati valori (spesso in codifica binaria) 

discretizzazione dell’ampiezza dell’informazione continua. Conversione analogico – digitale GLI ALGORITMI Lezione 2 Il problema. Il calcolatore e soluzione del problema. Algoritmo: definizione, i parametri e la sua rappresentazione. Il diagramma di flusso. Le strutture dati statiche e dinamiche Concetto di problema e sua risoluzione Ogni problema che richiede l’elaborazione di informazione è caratterizzato da:

  • un insieme di dati di partenza; input
  • un risultato ricercato. obiettivo La soluzione del problema è ottenuta mediante una procedura che genera un risultato sulla base dei dati forniti. Si distingue tra:
  • la conoscenza di come si risolve un problema;
  • l’effettiva capacità di risolverlo. Analisi del problema e identificazione di una sua soluzione (da parte del Soggetto 1). Descrizione della soluzione (da soggetto 1 istruttore) in termini comprensibili per il Soggetto 2 risolutore. Interpretazione della soluzione (da Soggetto 2) sulla base della descrizione fornitagli dal Soggetto 1. Attuazione della soluzione (soggetto 2). Calcolatore e soluzione del problema I calcolatori sono essenzialmente degli esecutori di soluzioni che gli esseri umani hanno identificato. Un calcolatore è caratterizzato da:
  • descrittore : che fornisce il linguaggio che è in grado di interpretare;
  • esecutore : azioni che è in grado di eseguire. Descrizione del problema: si scompone il problema in sotto‐problemi, fino ad arrivare a problemi elementari (o primitivi), a cui corrisponde una istruzione elementare, che descrive il problema elementare, in modo che l’esecutore sia in grado di interpretarlo correttamente.

ALGORITMO: soluzione effettiva per esecutori: È la descrizione della soluzione effettiva ad un problema che:

  • soddisfa i criteri di caratterizzazione sintattica, pragmatica e semantica (punti 1,2 e 3);
  • è espressa nella forma di un insieme di istruzioni che, operando sui dati iniziali, consentono di ottenere dei risultati, che costituiscono la soluzione del problema. Le istruzioni sono determinate tramite la scomposizione iterativa del problema in sotto‐problemi elementari. La soluzione di ciascun sotto‐problema è detto STEP dell’algoritmo. Ogni algoritmo ben fatto deve terminare dopo un numero finito di passi. Non deve entrare in un loop. LINGUAGGIO DI PROGRAMMAZIONE Quando si utilizza un calcolatore come esecutore, è necessario che l’algoritmo sia descritto in un linguaggio formale, chiamato Linguaggio di Programmazione e che deve essere interpretabile dal calcolatore stesso. Ciò vuol dire che l’algoritmo viene tradotto in un programma. PROCESSO DI SVILUPPO DI UN PROGRAMMA
  1. Analisi del problema e identificazione di una soluzione.
  2. Formalizzazione della soluzione e definizione dell’algoritmo risolutivo (se supportate da strumenti informatici, si Computer Aided Software Engineering, CASE).
  3. Programmazione : scrittura del programma in un linguaggio di programmazione «ad alto livello». ALGORITMI E PARAMETRI Gli algoritmi sono generalmente parametrici, cioè producono un risultato che dipende dai dati di partenza.
  • Esempio:
  • algoritmo: ricetta di una torta;
  • risultato: dimensione della torta;
  • dati di partenza: quantità di ingredienti. Grazie all’uso dei parametri, gli algoritmi possono risolvere una intera classe di problemi strutturalmente equivalenti in cui cambiano i dati di partenza.
  • Esempio: moltiplicazione di due numeri.
  • Se si effettua la moltiplicazione tra il numero 2 e il numero 3, si ottiene come risultato il numero
  • L’esecutore fornisce un risultato valido SOLO per la coppia di dati di partenza (in questo caso: 2 e 3).
  • Per implementare l’algoritmo di moltiplicazione di due numeri qualsiasi, occorre utilizzare le

variabili. VARIABILE VARIABILE : parametro il cui valore non è fissato a priori, ma può cambiare a seconda della situazione elaborativa in cui si trova l’esecutore. Ogni variabile è costituita da:

  • nome : nome univoco per essere identificata
  • valore : corrisponde al dato contenuto in un determinato istante;
  • tipo: insieme di valori possibili che essa può assumere. Esempi:
    • variabile di tipo intero: è costituita solo da numeri interi;
    • variabile stringa: è costituita solo da caratteri alfanumerici;
    • variabile logica: è costituita solo da valori logici (vero/falso) o booleani ESEMPIO DI ALGORITMI Problema: determinare il maggiore tra due numeri x e y. Procedura: scomporre il problema in sotto‐problemi elementari  calcolare la differenza tra due numeri e valutare il segno (positivo/negativo) di un numero. Sotto‐problema 1 elementare: un numero x è maggiore di numero y se la differenza (x‐y) è positiva. Problema: determinare il maggiore tra i numeri x e y DIAGRAMMA DI FLUSSO Gli algoritmi vengono rappresentati attraverso un linguaggio formale grafico chiamato DIAGRAMMA DI FLUSSO (Flow chart) o DIAGRAMMA A BLOCCHI. I blocchi sono connessi da frecce. L’orientamento delle frecce indica la successione di esecuzione delle azioni. Problema: determinare il maggiore tra due numeri x e y.

Ogni Macchina di Turing (MdT) è caratterizzata da:

  • uno stato iniziale;
  • cambiamenti di stato;
  • uno stato finale. Secondo il modello «a scatola nera», ogni Macchina di Turing (MdT) è un sistema che: riceve in ingresso una successione di simboli (inizialmente scritta sul nastro); produce in uscita una successione di simboli (anch’essa scritta sul nastro).
  • La Macchina di Turing (MdT) è una macchina che elabora dei simboli. MACCHINA DI VON NEUMANN La Macchina di Turing (MdT) aveva problemi di realizzazione pratica e spesso anche di descrizione dei programmi. La Macchina di Von Neumann (MdVN): è equivalente alla Macchina di Turing (MdT); ha la stessa capacità di risolvere i problemi; ha una struttura che facilita la realizzazione pratica; semplifica la descrizione dei programmi; consente di aumentare il numero di istruzioni elementari e adattandole al singolo problema. La Macchina di Von Neumann (MdVN) è composta da:
  1. Unità centrale di elaborazione: esegue i programmi ed è costituita da: o unità di controllo : seleziona, preleva e manda in esecuzione le istruzioni; o unità logico‐aritmetica : che esegue le istruzioni, attraverso le operazioni aritmetiche elementari, logiche e di confronto tra interi.
  2. Nastro per gestire l’input.
  3. Nastro per gestire l’output.
  4. Memoria indirizzabile a registri, che memorizza le istruzioni di un programma e i dati su cui opera. LE STRUTTURE DATI Secondo il modello della Macchina di Turing, la rappresentazione dei dati e la definizione degli algoritmi sono i due aspetti fondamentali ed interagenti dello stesso problema. Formalismo di Niklaus Wirth: «algoritmi + strutture dati = programmi». Al crescere della complessità degli algoritmi, l’impiego delle variabili può risultare molto difficoltoso ed inefficiente. Struttura dati: struttura che contiene la successione di variabili e dei relativi valori ottenuti dall’elaborazione e identificabili singolarmente. La struttura dati può essere:
  • statica : la loro composizione interna è fissata al momento della definizione e non può essere più modificata durante l’uso;
  • dinamica : la loro composizione interna può essere modificata durante l’uso. LE STRUTTURE DATI STATISTICHE: I VETTORI Vettore (array): formato da una successione di variabili dello stesso tipo. Il vettore è caratterizzato da: NOME INDICE DIMENSIONE Ogni elemento del vettore è identificato da: (i) nome del vettore e (ii) dalla propria posizione all’interno della successione (indicata dall’INDICE). DIMENSIONE: numero di elementi del vettore. NB: il vettore è una struttura dati unidimensionale  è sufficiente un solo indice per identificare un elemento. ALGORITMO CON STRUTTURA DATI STATICA Algoritmo che risolve il problema del calcolo della media dei 100 voti.
  • P1: crea un vettore di 100 elementi, assegna ad ognuno di essi un voto voto(i) elemento di indice i nella successione degli elementi del vettore voto voto(1)  28, voto(2)  24, voto(3)  30 …..
  • P2: inizializza la variabile somma parziale ris  0 e la variabile indice i  1
  • P3 Fino a che ci sono elementi del vettore da considerare (cioè fino a che i è minore o uguale alla dimensione del vettore, dimensione(voto)), esegui ris  ris+voto(i) e poi i  i+
  • P4: esegui ris  ris/dimensione (voto) e presenta all’utente il risultato NB: l’algoritmo è indipendente dal numero di elementi da considerare (dopo aver effettuato all’inizio l’inizializzazione della struttura dati stessa). LE STRUTTURE DATI STATICHE: LE MATRICI Matrice: tabella rettangolare di elementi. La matrice è caratterizzata da: NOME COPPIA DI INDICI DIMENSIONE Ogni elemento della matrice è identificato da: (i) nome e (ii) dalla propria posizione all’interno della successione (indicata dalla coppia ordinata di INDICI i,j). DIMENSIONE: numero di elementi della matrice. NB: la matrice è una struttura dati multidimensionale  occorre una coppia ordinata di indici (i,j) LE STRUTTURE DATI STATICHE: RECORD Record: insieme di variabili di tipo diverso. Campo: elemento del record. Ogni campo è individuato da un indice alfanumerico (non un indice numerico)
  • Es. rubrica telefonica:
  • Occorre strutturare il record in diversi campi: «nome», «cognome», «numerotelefonico», «indirizzo»
  • In questo caso, il nome del record: miarubricatelefonica
  • I campi sono identificati nel seguente modo: miarubricatelefonica.nome, miarubricatelefonica.cognome, miarubricatelefonica.numerotelefonico, miarubricatelefonica.indirizzo LE STRUTTURE DATI DINAMICHE La loro struttura è dinamica durante l’uso: è possibile aggiungere o sottrarre elementi. Per fare questo occorre collegare tra loro gli elementi attraverso i riferimenti (modificabili). Possono essere: LISTA ALBERO GRAFO Le liste : In una lista, la posizione di un elemento è definita implicitamente dal vincolo che impone a ogni elemento di specificare il riferimento all’elemento successivo.

Grafi; Gli elementi possono avere un numero arbitrario di referenti e riferiti (costituiscono una rete di riferimenti). Le relazioni tra gli elementi hanno un verso ben preciso. INFORMAZIONI MULTIMEDIALI: Informazioni multimediali. Codifica. I formati video e audio. Lezione 4 COMPRESSIONE DELLE INFORMAZIONI La compressione dele informazioni:

  1. è una tecnica di elaborazione dei dati;
  2. impiega specifici algoritmi;
  3. consente di ridurre la quantità di informazione digitale (bit) necessari a rappresentare digitalmente una informazione.

SISTEMA DI COMPRESSIONE: ARCHITTETRURA

Il codificatore: dall’immagine A (x,y) prepara la sua rappresentazione digitale (informazione digitale compressa). Il decodificatore: a partire dalla rappresentazione digitale compressa e ricevuta dal canale di trasmissione, ricostruisce il segnale originario:

  • in modo fedele: B(x,y) = A (x,y)
  • in modo approssimato: B(x,y) = A’ (x,y) TECNICHE DI COMPRESSIONE: CLASSIFICAZIONE Le tecnologie di compressione sono divise in due grandi famiglie:
  • senza perdita di informazione (lossless); – con una perdita controllata di informazione (lossy). COMPRESSIONE SENZA PERDITA DI INFORMAZIONI La compressione senza perdita di informazione (reversibile) consente di ricostruire l’informazione originaria non compressa in modo esatto e fedele.
  • Entropy Encoding o Variable Length Coding ( VLC ) o codifica entropica ( codifica Huffman ): alle informazioni da decodificare vengono associati valori di probabilità diverse. I valori più probabili hanno un codice di codifica più breve (per agevolare le operazioni di compressione), e gli altri un codice di codifica più lungo.
  • Run Length Encoding (RLE). Ai valori ripetuti viene sostituita la stringa «numero di ripetizioni, valore».
  • Codifica Predittiva (Predictive Coding): Si trasmettono solo differenze dei valori rispetto ad un valore di riferimento.
  • LZW. Creata dagli sviluppatori A. Lempel, J. Ziv e Terry A. Welch, è molto impiegata nei file di immagini digitali quali GIF e TIFF. COMPRESSIONE CON PERDITA DI INFORMAZIONI Nella compressione con perdita di informazione (irreversibile) una parte dell’informazione viene eliminata perché considerata non rilevante. L’informazione originale non compressa viene ricostruita con una approssimazione. È molto efficace, con rapporti di compressione elevati (fino a 100:1). È molto utilizzata nel campo dell’audio e del video digitale: si vuole ottenere un rapporto di compressione elevato con la minore perdita possibile in termini di qualità.
  • Subsampling : alcune informazioni non vengono considerate. Consente di ottenere un rapporto di compressione 2:1 senza perdite considerevoli o percepibili. - Quantizzazione Vettoriale (VQ): i pixel vengono considerati in vettori e vengono sostituiti da un unico codice, costituito dall’indice puntatore alla tabella di altri vettori che rappresentano tutti i pixel.
  • Lossy Predictive Coding : viene aggiunto uno specifico livello di quantizzazione che introduce la perdita di informazione.
  • Discrete Cosine Transform (DCT): la perdita di informazione dipende dallo stadio di quantizzazione e viene considerato il sistema visivo umano per poter minimizzare le perdite.
  • Sub‐band Coding (SBC): alla trasmissione vengono applicate operazioni specifiche, quali filtraggio e ripartizione in sotto-bande con determinate caratteristiche. La compressione viene migliorata perché può agire su quantità di informazioni minori rispetto a quella iniziale della sorgente.