Capitolo 1: Introduzione
Non sono gli strumenti, ma i contenuti a definire la qualità dell'informazione. Le tecnologie di successo sociale producono strumenti il cui impiego è facilitato dalla presenza di un'interfaccia utente che consente di usare tali strumenti senza doverne conoscere i dettagli di funzionamento. Il calcolatore digitale ha una peculiarità che lo rende uno strumento unico nella storia della tecnologia: è un dispositivo programmabile. Uno stesso calcolatore consente di eseguire programmi diversi senza alcuna modifica alla sua struttura fisica. La possibilità di poter modificare il comportamento di un calcolatore intervenendo solo sul suo livello software e lasciando inalterato il suo livello hardware, ha favorito lo sviluppo di programmi sempre più ricchi di funzionalità e allo stesso tempo sempre più facili da usare.
L'elaborazione dell'informazione e i suoi strumenti
L'informazione può essere anche solo di tipo indicale. Vantaggi dell'elaborazione dell'informazione rispetto al trattamento diretto delle cose: l'elaborazione dell'informazione può essere condotta a tavolino, cioè realizzata sulla base di regole generali e indipendenti dalla natura delle cose a cui l'informazione è riferita. Nel corso della storia l'uomo ha creato strumenti che lo supportassero nell'elaborazione dell'informazione:
- Strumenti formali: consentono di trattare entità di informazione dotate di una certa struttura, ricavandone conclusioni per via elaborativa.
- Strumenti materiali: materializzano le entità di informazione facilitandone l'elaborazione.
Gli attuali sistemi di elaborazione automatica dell'informazione appartengono alla seconda categoria. Inizialmente gli strumenti di calcolo erano semplici strumenti di memorizzazione meccanica; solo nel XVII secolo vennero ideate le prime calcolatrici meccaniche che consentivano di eseguire operazioni aritmetiche in modo meccanico. Nel XIX secolo si cercò di realizzare un dispositivo in grado di memorizzare sia un insieme di dati che un insieme di operazioni in modo autonomo.
La rappresentazione dei dati: calcolatori analogici e digitali
La rappresentazione delle istruzioni: la macchina di Von Neumann. Architettura hardware di base. Un calcolatore di questo tipo è costituito da tre sottosistemi: interfaccia, memorizzazione, elaborazione. Il programma non è parte dell'hardware ma è integralmente software. La CPU opera in modo sequenziale. Proposta negli anni '40, è un calcolatore general purpose: i dati e le istruzioni che operano possono essere codificati in formato digitale.
Il significato di informazione
Un sistema fisico per essere impiegato come supporto per l'informazione deve consentire di identificare le differenze: il supporto deve poter assumere almeno una seconda configurazione. La quantità di informazione che si ottiene selezionando un elemento da un insieme che ne contiene due, ha il ruolo di unità elementare di informazione ed è chiamata bit. Un calcolatore è un dispositivo che elabora informazioni, cioè istruzioni di cui i programmi sono costituiti e dati che vengono elaborati. Codice: relazione che associa a ogni successione ben formata di simboli di alfabeto il dato corrispondente. Codifica digitale: ogni dato viene codificato impiegando entità distinte e organizzate in modo opportuno. Codifica analogica: ogni dato viene codificato, per analogia, attraverso un certo valore di tensione elettrica.
Capitolo 2: Algoritmi
Molte azioni che ogni uomo compie possono essere interpretate come finalizzate alla soluzione (conscia o inconsapevole) di problemi. In un problema la cui soluzione implica elaborazione di informazione, i dati disponibili vengono elaborati al fine di arrivare al risultato. Ogni soluzione è quindi una procedura che genera un risultato sulla base dei dati indicati. La conoscenza di come si risolve un problema e l'effettiva capacità di risolverlo si riferiscono a competenze distinte e non necessariamente conseguenti l'uno all'altra. Il procedimento di soluzione del problema può essere risolto in fasi distinte e successive.
- Analisi del problema e identificazione di una soluzione
- Descrizione della soluzione in termini comprensibili
- Interpretazione della soluzione
- Attuazione della soluzione
I calcolatori sono impiegati tipicamente come esecutori di soluzioni che esseri umani hanno identificato e descritto, in quanto caratterizzati da notevole velocità di esecuzione ed elevata ripetibilità. Quindi un calcolatore è caratterizzato dal linguaggio che è in grado di interpretare le soluzioni e dalle istruzioni che è in grado di eseguire.
Problemi e algoritmi
Se un problema è particolarmente semplice, un esecutore potrebbe essere in grado di eseguirne la soluzione sulla base di una descrizione. Si definisce effettiva per un esecutore la soluzione di un problema quando:
- L'esecutore è in grado di interpretare la descrizione di tale soluzione associando ad essa le azioni che deve compiere
- L'esecutore è in grado di compiere tali azioni
In generale un insieme di problemi è una procedura effettiva quando:
- Tutti i problemi dell'insieme sono elementari
- È fissato l'ordine di soluzione dei problemi
- È esplicitamente specificato il modo in cui il problema utilizza i risultati dei problemi che lo precedono
I concetti di problema elementare e azione elementare sono interscambiabili e evidenziano rispettivamente l'aspetto descrittivo e esecutivo delle procedure effettive. Un algoritmo è la descrizione della soluzione di un problema, espressa come un insieme di regole che operando su dati iniziali consentono di ottenere la soluzione del problema. Tali regole vengono determinate tramite la scomposizione del problema di partenza in sottoproblemi, la cui soluzione è detta passo o step dell'algoritmo. Un algoritmo deve terminare dopo un numero finito di passi. Il processo di sviluppo di un programma è costituito da:
- Analisi del problema e identificazione di una soluzione
- Formalizzazione della soluzione e definizione dell'algoritmo
- Programmazione, cioè scrittura del programma in un linguaggio di programmazione
- Traduzione del programma nel linguaggio che il calcolatore è in grado di riconoscere (linguaggio macchina)
La codifica dei dati
Gli algoritmi sono costituiti da azioni che operano su dati. Per trasformare un algoritmo in un programma è necessario rappresentare azioni e dati in un formato adatto alla memorizzazione di un esecutore automatico. Per formalizzare dati si utilizzano successioni di simboli, scelti da un insieme finito detto alfabeto. Ad ogni alfabeto è associato un insieme di regole di composizione che definiscono le successioni che consentono di identificare i dati. La relazione che associa a ogni successione di simboli alfabetici un dato corrispondente è detta codice. Un codice mette in relazione le successioni di simboli con il significato a loro attribuito. Nel caso di successioni costituite da uno stesso numero di simboli, il numero di simboli presenti nell'alfabeto e la lunghezza delle successioni determinano il numero delle possibili successioni diverse.
La codifica binaria dei dati
L'alfabeto più semplice per la codifica dei dati è costituito da 2 soli simboli: "0" e "1". Per la memorizzazione di tali dati i calcolatori utilizzano dispositivi bistabili in grado di assumere uno stato scelto tra 2 differenti. Il sistema binario si può considerare alla base dell'elaborazione automatica delle informazioni. Ogni elemento che assume valore binario viene indicato col termine bit (binary digit). I bit sono quindi gli elementi dei codici utilizzati dai calcolatori. A una successione di 8 bit si dà il nome di byte (28 = 256 dati diversi).
La codifica binaria di numeri naturali
L'usuale rappresentazione dei numeri è basata sulla notazione posizionale delle cifre: il valore di ogni cifra dipende dalla sua posizione nella successione di simboli che rappresenta il numero. Nei linguaggi di programmazione per i numeri naturali si utilizzano successioni di 32 bit che consentono di rappresentare numeri compresi tra 0 e 232. Raddoppiando la lunghezza di tali successioni il massimo numero rappresentabile aumenta esponenzialmente.
La codifica binaria di numeri interi
Il modo più semplice per codificare i numeri interi consiste nell'indicare il segno seguito dal valore assoluto. Il processo che è definito codifica con modulo e segno: dati N bit si utilizza il primo bit per indicare il segno (0 positivo, 1 negativo), e gli altri N - 1 bit per la rappresentazione del valore assoluto del numero. Con una rappresentazione in complemento a 2, N bit sono sufficienti per codificare i numeri che vanno da -2n-1 a 2n-1 -1.
La codifica binaria di numeri razionali
Nelle applicazioni con numeri razionali o reali, il problema che si pone è che per una rappresentazione esatta è richiesto un numero di cifre illimitato. Poiché nella rappresentazione di un esecutore automatico sono utilizzabili solo successioni di bit di lunghezza finita è necessario approssimare con numeri razionali. Cifre più significative: sono quelle associate ai pesi maggiori. Nella rappresentazione di numeri con valore assoluto molto più grande o molto piccolo, si considerano solo le cifre più significative, adottando una rappresentazione che viene generalmente indicata come notazione scientifica, per cui un numero in base 10 viene rappresentato come ± m x 102, cioè modificandone il segno, il coefficiente m (mantissa) e l'esponente e. Lo stesso principio viene adottato per la rappresentazione binaria dei numeri razionali.
La codifica dei dati non numerici
La necessità di trattare anche dati non numerici come singoli caratteri alfanumerici consente di trasformare i dati in numerici. Ascii: codifica digitale per caratteri alfanumerici. Usa 7 bit, quindi rappresenta 128 caratteri, oppure 8 bit (256 caratteri). I primi 32 sono caratteri speciali non stampabili. Unicode: codice a 16 bit che permette la codifica anche dei caratteri orientali.
I programmi
Un algoritmo non è ancora utilizzabile effettivamente da un esecutore automatico poiché il linguaggio in cui è espresso non è interpretabile in modo non ambiguo. Un programma è un algoritmo tradotto in linguaggio macchina e risolvibile da un calcolatore. Linguaggi di programmazione ad alto livello consentono al programmatore di descrivere i problemi a un livello di astrazione di poco inferiore a quello degli algoritmi, secondo una logica più vicina al problema da risolvere. Questi linguaggi permettono di descrivere sia l'algoritmo, sia le componenti più operative di una componente informatica.
Capitolo 3: Architettura di un sistema informatico: Hardware
Le funzioni svolte da un calcolatore sono classificabili in quattro tipologie:
-
Elaborazione dei dati: i calcolatori sono impiegati per elaborare dati provenienti dall'ambiente esterno e per fornire all'ambiente esterno i risultati ottenuti. Le caratteristiche dell'elaborazione variano in modo sensibile in base al tipo di applicazione richiesta e al tipo di dati da trattare. Al giorno d'oggi l'architettura di elaborazione è in grado di coniugare:
- Flessibilità nel calcolo
- Modularità dell'architettura
- Scalabilità dei componenti
- Standardizzazione dei componenti
- Abbattimento dei costi
- Semplicità di installazione
- Disponibilità di applicazioni
- Memorizzazione dei dati: la memorizzazione dei dati è utile per memorizzare i risultati intermedi ottenuti che possono essere successivamente estratti e modificati.
- Trasferimento di dati: un calcolatore deve essere in grado di comunicare con l'ambiente esterno, sia per acquisire dati da elaborare, sia per trasferire i dati memorizzati. Questi compiti vengono svolti da periferiche, dispositivi ausiliari direttamente connessi al calcolatore. Le operazioni di trasferimento dati sono chiamate operazioni di ingresso-uscita (input-output i/o). Il trasferimento di dati su lunghe distanze è comunemente chiamato trasmissione di dati (es: collegamento in rete di calcolatori posti a distanze variabili).
- Controllo: le operazioni di elaborazione, memorizzazione e trasferimento dati, devono essere sottoposti ad un controllo. Tale funzione è deputata all'utente del calcolatore, che la realizza impartendo comandi al calcolatore stesso. Internamente ad ogni calcolatore è presente un'unità di controllo che coordina le risorse del calcolatore al fine di svolgere le operazioni corrispondenti all'esecuzione dei comandi indicati dall'utente. Il ruolo della componente hardware di un calcolatore è di fornire le funzionalità di base che consentono al software di realizzare la sua specializzazione.
L'architettura di riferimento
L'architettura ricalca i principi di funzionamento della cosiddetta macchina di Von Neumann. Il calcolatore interagisce con l'ambiente esterno attraverso dispositivi ausiliari (periferiche) connessi con il calcolatore stesso mediante le unità interne di ingresso-uscita che gestiscono il trasferimento dei dati con le varie periferiche. Il componente principale del calcolatore è l'unità di elaborazione centrale (Central Processing Unit CPU) a cui sono affidate sia le operazioni di controllo che di elaborazione. Le CPU vengono realizzate con le tecnologie microelettroniche (microprocessori). Per la memorizzazione è presente un'unità chiamata memoria che ospita sia i dati necessari per le elaborazioni svolte dalla CPU sia i dati trasferiti attraverso le unità di ingresso/uscita. La memoria è caratterizzata da un identificatore univoco, chiamato indirizzo.
Il collegamento fra le unità dalla memoria può essere organizzato tramite:
- Bus: è una linea in cui sono connesse tutte le unità del calcolatore e che consente il trasferimento di dati tra tali unità.
- Bus dati: trasferiscono i dati tra memoria e CPU o tra CPU e interfacce di ingresso/uscita.
- Bus indirizzi: identifica la posizione di memoria in cui la CPU va a leggere o a scrivere.
- Bus di controllo: in cui transitano i segnali di controllo che identificano le unità interessate nel trasferimento dati, definiscono la direzione dello scambio e coordinano il sistema.
Il collegamento a bus può comportare:
- Semplicità
- Estendibilità
- Standardizzabilità
- Lentezza
- Limitata capacità
- Sovraccarico della CPU
All'interno del calcolatore è presente una superficie di materiale plastico detta scheda madre su cui è presente il bus e sono montati la CPU, la memoria centrale e alcune interfacce di ingresso/uscita.
L'esecutore
Il linguaggio per cui la CPU si comporta da esecutore è detto linguaggio macchina o assembly. Il codice operativo identifica il tipo di istruzione mentre gli operandi indicano gli indirizzi dove recuperare i dati su cui operare e dove copiare i risultati. Ogni CPU è caratterizzata funzionalmente dal suo linguaggio macchina, cioè dall'insieme delle istruzioni che è in grado di eseguire e dalle modalità di rappresentazioni degli operandi. Nell'esecuzione di un programma la CPU può essere intesa come un dispositivo che opera in modo ciclico:
- Lettura (fetch): acquisizione della memoria di un'istruzione del programma
- Decodifica (decode): identificazione del tipo di istruzione fra quelle che compongono l'insieme delle istruzioni
- Esecuzione (execute): effettuazione delle operazioni corrispondenti all'istruzione
Clock: frequenza che determina la velocità di elaborazione della CPU. Nella struttura di una CPU sono riconoscibili tre sottosistemi principali: unità aritmetico-logica (ALU) esegue operazioni aritmetiche e logiche sugli operandi che le vengono forniti. Registri: celle di memorie interne alla CPU usate per immagazzinare le informazioni necessarie per l'esecuzione delle istruzioni.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Informatica
-
Riassunto Informatica
-
Informatica generale
-
Riassunto esame Informatica, Prof. Joime Gian Piero, libro consigliato Informatica - Una panoramica generale, Brook…