Informatica di base_11 - Università di Catania

Transcript

Informatica di base_11 - Università di Catania
ELEMENTI DI BASE DELL’INFORMATICA.
Versione 11
1. PROGRAMMI E LINGUAGGI.
Un elaboratore deve essere in grado essenzialmente di ricevere, trasmettere,
manipolare e conservare dati ed informazioni. I dati possono essere di diverso tipo:
numerici, testuali (successioni di caratteri), grafici (disegni, immagini), sonori. Per
elaborare i dati, occorre fornire alla macchina una serie di istruzioni che realizzino il tipo
di elaborazione di cui si ha bisogno: queste formano un programma, che va trasmesso al
computer e conservato in memoria per essere successivamente eseguito al bisogno.
Al momento dell’esecuzione, occorre fornire anche dei dati da far elaborare al suddetto
programma. Bisogna in pratica:
• inserire nel computer, attraverso la tastiera o un disco, un insieme di informazioni
(dati in entrata o in input), che vengono conservate in memoria;
• questi dati in input vengono elaborati dal programma e si ottengono, come risultato,
altre informazioni (dati in uscita o in output).
• i dati in output vengono stampati su carta o visualizzati sul monitor.
Come esempio di elaborazione, si consideri l’algoritmo1 che calcola
ESEMPIO.
l’area del cerchio tramite la formula area = π • r2. Per eseguire il programma relativo
all’algoritmo in oggetto, occorre fornire ulteriormente, come dato in entrata, un valore
numerico per il raggio r. Devono essere effettuati pertanto i seguenti passi:
1. lettura (read) del valore numerico del raggio del cerchio;
2. calcolo del valore dell’area usando l’algoritmo suddetto. Questo valore, insieme ai
dati di input, viene registrato nella memoria del computer;
3. stampa (print) dei valori del raggio e dell’area corrispondente;
4. stop.
La realizzazione di ognuno di questi passi dell’algoritmo richiede una o più istruzioni: la
totalità di queste istruzioni costituisce il programma2 che calcola l’area del cerchio. Un
programma si può intendere, quindi, come il risultato della codifica di un algoritmo,
ovvero la codifica è la traduzione di un dato algoritmo, espresso a parole, in una sequenza
di istruzioni scritte in un certo linguaggio, istruzioni che formano il programma relativo
all’ algoritmo in oggetto.
Un computer deve quindi essere capace di leggere istruzioni di questo tipo, nonché i dati
su cui operare. Deve anche essere in grado di memorizzare un’istruzione dopo averla
ricevuta, in modo da poter sviluppare le azioni previste dal programma nel loro insieme.
1
Sugli algoritmi, vedi appendice A.
2
Sulle proprietà di un programma, vedi appendice B.
1
Deve poi essere in grado di sviluppare i conti ed eseguire le operazioni previste, ed infine
di trasmettere i risultati all’utente. Per operare in questo modo, l’elaboratore ha bisogno di
memoria e di capacità di calcolo, ma ha anche bisogno di comunicare con l’utente. In
particolare, la comunicazione avviene tramite le cosiddette periferiche, cioè le unità di
ingresso (input) ed uscita (output) dei dati.
Allo scopo di comunicare con un computer, poi, é necessario un linguaggio, inteso
proprio nel senso comune, cioè come strumento di comunicazione fatto di parole ben
definite, nonché di regole per una corretta combinazione di queste parole (sintassi). Questi
linguaggi sono chiamati linguaggi di programmazione. Ne esistono di diversi tipi, di
solito meno complessi rispetto ai linguaggi correnti usati comunemente per parlare.
Invece ogni calcolatore ha un suo linguaggio macchina, una specie di linguaggio
madre i cui termini la macchina è in grado di interpretare immediatamente. Esso è pur
sempre un linguaggio di programmazione, ma in effetti è una collezione di dettagliate
istruzioni che controllano i circuiti interni della macchina. I linguaggi macchina sono
molto pesanti per l’utente, perché sono complessi per loro natura e perché un programma
scritto in un certo linguaggio macchina può essere utilizzato solo su quel tipo di macchine,
in quanto ogni tipo di calcolatore ha il proprio insieme di istruzioni particolari.
Ovviamente gli schemi espressivi dei linguaggi macchina sono molto lontani da quelli
umani. Lo stesso si può dire per quei linguaggi molto primitivi, tipo l’ASSEMBLER,
studiati per aderire con facilità a questi schemi espressivi. Adoperare un linguaggio di
basso livello, cioè poco evoluto verso le esigenze del programmatore, comporta delle
conseguenze negative quali:
• lunghi tempi di codifica degli algoritmi;
• facilità di errore nella codifica a causa della difficoltà della medesima;
• ridotta trasportabilità del programma, legato a quella macchina, o a quel tipo di
macchine per cui è stato concepito.
Da qui l’esigenza di creare linguaggi di programmazione sempre più ad alto livello, i cui
termini siano abbastanza vicini al modo di pensare e di parlare del programmatore e non
alle esigenze della macchina. Il problema della comprensione, da parte delle macchine, di
programmi scritti in questi linguaggi di programmazione viene risolto con l’uso dei
compilatori, che sono programmi che traducono le istruzioni scritte nel linguaggio
originario in istruzioni scritte in linguaggio macchina. Questi traduttori sono quindi dei
veri e propri programmi che ricevono in input un programma scritto in un linguaggio ad
alto livello, come il Pascal, e che si chiama programma sorgente, e lo traducono in un
programma scritto nel linguaggio della macchina, che si chiama programma oggetto. È
ovvio che ogni linguaggio ad alto livello ha un proprio esclusivo compilatore.
2
2. HARDWARE E SOFTWARE.
I primi computer erano dei macchinari molto ingombranti, che riempivano interi saloni.
Avevano migliaia di valvole e pannelli con luci multicolori. Nacque così il termine
hardware, che in inglese denota ciò che sta nella bottega di un fabbro: si può tradurre
come ferraglia. La parola hardware è ormai entrata nell’uso comune e sta ad indicare tutte
le parti del computer che si possono toccare, vedere e che quindi hanno una certa
consistenza fisica. Tra questi “oggetti fisici” abbiamo, ad esempio, il monitor, la tastiera, i
dischetti, la stampante, il mouse, ecc. Le dimensioni dell’ hardware sono invece diminuite
sensibilmente: questo grazie all’uso di nuovi materiali che la moderna tecnologia ha
messo a disposizione dei costruttori. Lo schema teorico di un computer è comunque
rimasto lo stesso: di questo parleremo più avanti.
Invece l’insieme di tutti i programmi disponibili per essere usati da un computer, allo
scopo di elaborare i dati, ne costituisce il cosiddetto software, parola inglese nata in
contrapposizione ad hardware: tanto materiale e tangibile è il secondo, quanto
intangibile e facilmente variabile è il primo. Il software può essere suddiviso in due parti:
il software di sistema ed il software applicativo. Il primo comprende i programmi che
hanno il compito di far funzionare il sistema ed i suoi componenti, mentre il secondo
comprende programmi particolari per risolvere problemi legati a esigenze personali
dell’utente, come la creazione di grafici, o la gestione della contabilità di un azienda, ecc.
L’operatore che lavora al computer, di solito, ha a che fare con programmi di quest’ultimo
tipo, perché in genere il software di sistema è “nascosto”, in quanto esso opera senza che
l’utente debba intervenire in modo diretto. Una delle parti più importanti del software di
sistema è costituita dal sistema operativo, che è uno speciale programma che gestisce
il funzionamento generale del computer, coordinando in particolar modo le varie
componenti dell’elaboratore, per permettere all’utente di svolgere il proprio lavoro nel
modo più comodo e facile possibile.
D’altra parte, tra i programmi applicativi più diffusi vi sono quelli del pacchetto Office
di Microsoft: sono programmi di videoscrittura (Word), di gestione e contabilità (Excel),
di database, cioè raccolta e gestione di grandi quantità di dati (Access), ed altri. Sono
programmi che forniscono diversi e svariati servizi all’utente, facilitandone il lavoro in
modo considerevole. Ad esempio, in Word è possibile scrivere con caratteri di tipo diverso
(Arial, Times New Roman, Tahoma, Verdana, Courier new, Century gothic, Garamond,
Trebuchet, ecc.), con caratteri di dimensione diversa, con caratteri sottolineati in vario
modo, con caratteri in grassetto o corsivo. Inoltre il testo si può accentrare o allineare a
destra o a sinistra della pagina, oppure lo si può giustificare, cioè renderlo omogeneo
rispetto ai margini destro e sinistro. Il testo editato lo si può, poi, salvare con un nome a
piacere, stamparlo, inviarlo per fax o via internet, ecc.
3
3. SCHEMA DI UN COMPUTER.
Lo schema di un computer è abbastanza semplice: vi è un’unità centrale, che svolge
tutto il lavoro di elaborazione dei dati, e le periferiche, che servono a collegare l’unità
centrale con l’utente e che si dividono in unità di input ed unità di output.
UNITÀ CENTRALE
Unità di
INPUT
3.1.
Memoria
centrale
Unità aritmetico - logica
Unità di
OUTPUT
Unità di controllo
L’UNITÀ CENTRALE.
L’unità centrale è composta dalla memoria centrale, dall’unità aritmetico – logica e
dall’unità di controllo: queste ultime due formano il processore che, date le ridottissime
dimensioni assunte al giorno d’oggi, viene anche chiamato microprocessore.
La memoria centrale è composta da scomparti chiamati celle (in genere in un personal
computer ve ne sono miliardi) dove vengono immagazzinate le informazioni; l’unità di
controllo interpreta correttamente i comandi provenienti dalle unità periferiche e dalla
memoria, dove sono conservate eventuali istruzioni di programmi, e coordina l’esecuzione
dei programmi nonché il funzionamento delle unità periferiche sincronizzandole tra di
loro al fine di ottenere i risultati desiderati dall’utente; l’unità aritmetico – logica
esegue i calcoli e le altre operazioni logiche richieste dall’unità di controllo. Pertanto la
sequenza operativa corrispondente alla scrittura ed all’esecuzione di un programma è la
seguente:
• si scrivono attraverso la tastiera le istruzioni del programma usando un certo linguaggio;
• queste istruzioni vengono tradotte dal compilatore in un codice numerico proprio del
linguaggio macchina e memorizzate;
• si lancia quindi il programma in esecuzione: l’unità di controllo preleva la prima
istruzione e la traduce in segnali elettronici, che invia all’unità aritmetico logica;
• l’unità aritmetico logica elabora l’istruzione e trasmette quindi il risultato all’unità di
controllo, che lo memorizza. Essa allora processa la seconda istruzione, riprendendo così
il ciclo.
È stato dimostrato che qualsiasi cosa calcolabile meccanicamente può essere elaborata,
attraverso un numero finito di passaggi, per mezzo di un programma che comprende
4
istruzioni elementari come quelle esaminate sopra. Un tale programma, scritto in un
linguaggio di programmazione, costituisce la codifica dell’algoritmo relativo al
problema in oggetto, così come detto sopra.
3.1.1.ALCUNE COMPONENTI DELL'UNITÀ CENTRALE.
Una delle parti principali dell’unità centrale, nonché di tutto il computer, è la scheda
madre (in inglese motherboard): su questa si installano tutti gli altri componenti, tra cui la
scheda grafica, il processore, la memoria centrale, ecc. Vi sono anche degli alloggiamenti
per delle schede di espansione, chiamati slot. Il processore, detto anche CPU (Central
Processing Unit) è l’elemento caratterizzante il computer e si occupa di eseguire tutte le
operazioni richieste dal sistema operativo e dalle applicazioni. Si monta su di uno
speciale zoccolo presente sulla scheda madre detto socket. Tra i processori più noti dei
Personal Computer abbiamo quelli detti genericamente X86, dal nome dell’architettura
originaria sviluppata da Intel, la maggiore azienda costruttrice di processori. I primi di
essi, infatti, furono chiamati 8086, 80286, 80386 e 80486. Quelli di quinta generazione
sono stati chiamati Pentium, fino ai più recenti Pentium MMX e Pentium II, III, IV.
Intel produce ora il Core 2 (Duo o Quad) e lo Xeon, ma anche il Celeron o il recentissimo
Atom, utilizzati soprattutto nei portatili. Un’altra importante casa produttrice è l’AMD, i
cui processori prendono il nome di Athlon, Sempron, Turion, ecc. I processori, inoltre, si
differenziano tra di loro per la velocità, misurata in Megahertz, ossia il numero di cicli
operativi che il dispositivo può eseguire in un secondo. I Pentium MMX e i Pentium II, III
e successivi dispongono anche della tecnologia MMX che accelera particolari operazioni
richieste dalle moderne applicazioni multimediali (audio, video, grafica 3D, telefonia). La
moderna tecnologia, infine, ha permesso di costruire macchine meno ingombranti e più
potenti, grazie all’uso di microprocessori al silicio e di memorie centrali elettroniche e non
più magnetiche, com’era invece una volta.
3.1.2.LA MEMORIA.
Ogni informazione viene di solito scritta, letta e trasmessa tramite simboli scelti in un
insieme di caratteri, comprendente le lettere di un alfabeto, delle cifre, e dei simboli
speciali, tra i quali, ad esempio, vi sono quelli usati per la punteggiatura. Per un
elaboratore, che non ha la possibilità di leggere come fa un essere umano, il trattamento
dell’informazione si basa su un’unità espressiva detta BIT, la quale può assumere, di volta
in volta, uno solo dei valori dell’insieme {0,1}, detti digit binari (BIT é una contrazione
dell’inglese BInary digiT). Il computer, infatti, è sensibile solamente al passaggio o meno
di corrente, ON oppure OFF (in realtà si tratta del passaggio di corrente rispettivamente
ad alta e bassa tensione). Pertanto i digit binari 1 e 0 sono adoperati proprio per
rappresentare i due stati suddetti in modo più semplice. Da digit deriva la parola digitale,
che denota appunto questo sistema di gestione delle informazioni, usato sia per i computer
5
come per altri dispositivi elettronici di grande diffusione (telefoni, videocamere, lettori,
decoder, etc.). Si capisce allora perché, nell’architettura di un computer, un ruolo
fondamentale è rappresentato dalla logica binaria, la logica a due valori: vero, cioè 1, e
falso, cioè 0. I bit sono poi raggruppati assieme in unità comprendenti otto bit, dette
BYTE 3.
Tornando alla memoria, ad ognuna delle celle prima menzionate, viene assegnato un
nome, di solito espresso da un numero, per poterla individuare e raggiungere quando
serve l’informazione in essa contenuta. Questo numero si chiama indirizzo, e la singola
unità indirizzata si chiama anche locazione. La capacità della memoria é quindi il numero
di bit che essa contiene e normalmente si esprime in multipli del byte:
1 KB (Kilobyte, o K) = 210 byte = 1024 byte;
1 MB (Megabyte, o Mega) = 210 KB = 1048576 byte;
1 GB (Gigabyte, o Giga) = 210 MB = 1073741824 byte.
Esistono due tipi di memoria: la memoria centrale, detta anche memoria di lavoro o
principale, e la memoria di massa rappresentata dai supporti fisici esterni usati per
immagazzinare le informazioni: floppy disk, nastri magnetici, dischi fissi, e cosi via.
La memoria centrale è utilizzata durante lo svolgimento delle operazioni per
contenere sia programmi preregistrati dal costruttore, come quelli relativi al sistema
operativo, sia risultati o dati da utilizzare temporaneamente durante l’esecuzione delle
operazioni. La memoria centrale è anche detta RAM (Random Access Memory, memoria
ad accesso casuale: significa che al processore occorre sempre lo stesso tempo per
accedere ad una qualsiasi - casuale - parte della memoria) ed è possibile sia leggere che
scrivere su di essa. L’uso di materiale magnetico nella memoria principale è stato
ormai definitivamente abbandonato in favore delle memorie a semiconduttori, come il
silicio, dette anche memorie elettroniche, meno ingombranti e più veloci delle prime. La
memoria centrale ha come sue caratteristiche la velocità d’uso (il tempo di accesso è
dell’ordine di 60-70 nanosecondi, o miliardesimi di secondo) e la volatilità, perché le
informazioni in essa contenute si perdono con lo spegnimento della macchina.
Contrariamente a quanto potrebbe sembrare, la memoria RAM è tuttavia ancora lenta
rispetto alla velocità del processore. Per velocizzare l’esecuzione dei calcoli del
processore si utilizza una particolare memoria superveloce, il cui tempo di accesso è
dell’ordine di 15 nanosecondi, che è chiamata cache e che contiene i dati utilizzati più
frequentemente. I tipi di memoria cache sono due: una di primo livello, integrata
direttamente nel processore, ed una di secondo livello integrata nella scheda madre.
Nella scheda madre esiste poi un particolare chip di memoria detta ROM (Read Only
Memory): questa memoria si può solo leggere, mentre è impossibile modificarne il
contenuto, che deve essere già presente al momento dell’acquisto del computer. In questa
3
Sulla numerazione binaria, vedi appendice C.
6
memoria si trovano registrati i programmi che servono per l’avvio della macchina, come
il BIOS (Basic Input Output System). La memoria ROM non è volatile: ciò significa che il
suo contenuto non si perde con lo spegnimento del computer. Inoltre essa è leggermente
più lenta della memoria RAM, ma, diversamente da questa, non è espandibile con
successive aggiunte di altre unità.
La memoria di massa, che può essere letta e scritta, serve invece per registrare grandi
quantità di informazioni che devono essere trasferite solo raramente, e solamente in parte,
nella memoria di lavoro per essere elaborate. La memoria di lavoro ha quindi il compito di
immagazzinare dati e programmi che servono al momento, mentre la memoria di massa
serve come deposito definitivo per conservare dati e programmi che possono servire in
futuro. La memoria di massa è più lenta della memoria centrale, ma è stabile, perché le
informazioni in essa contenute non si perdono con lo spegnimento della macchina. Nel
caso della memoria di massa si adoperano supporti di diverso tipo: normalmente dischi
fissi, o hard disk, (che possono risiedere anche all’interno della macchina), floppy disk,
pen drive, cd, dvd ecc. che invece sono tascabili e vanno inseriti nel drive della macchina
al momento dell’uso. Nel caso dei dischi, essi hanno la superficie divisa in tracce, o
corone circolari, e settori di cerchio. Prima di essere usato, un disco deve essere
formattato: ciò significa che la macchina deve stabilire il formato delle informazioni sul
disco. Deve cioè definire e caratterizzare i singoli elementi di base del disco per poterli
localizzare e riconoscere al momento della conservazione o della ricerca dei dati.
3.1.3.L’UNITÀ ARITMETICO LOGICA E L’UNITÀ DI CONTROLLO.
L’insieme costituito dall’unità aritmetico logica e dall’unità di controllo costituisce la
cosiddetta CPU (Central Processing Unit) o processore. La CPU è il cuore
dell’elaboratore e ne costituisce la parte fondamentale e più importante, quella che lo
caratterizza e ne definisce le possibilità. In genere la CPU è velocissima e può elaborare
decine o anche centinaia di milioni di istruzioni al secondo. Queste istruzioni possono
essere comandi che vengono impartiti dall’unità di controllo alle altre unità, come i
comandi di lettura e scrittura impartiti alle unità periferiche, oppure comandi relativi a
calcoli matematici affidati all’unità aritmetico-logica. In molti computer il normale
processore è affiancato da un coprocessore matematico, che è un processore dedicato
solo a risolvere operazioni matematiche complesse con numeri decimali. Così si
alleggerisce il processore principale e si accelerano i tempi. La potenza di un’unità
aritmetico logica dipende da quali operazioni è capace di eseguire direttamente. Vi sono
operazioni di base sia aritmetiche che logiche, quali per esempio l’addizione o la
complementazione, e vi sono operazioni più complesse, come la moltiplicazione.
Quest’ultima, per esempio, può essere eseguita come una successione di addizioni, oppure
direttamente. Nel primo caso, è però necessario ricorrere alla memoria, per conservare
i risultati parziali, e ad un programma. Ciò può avere per effetto perdite di tempo per la
7
trasmissione e l’elaborazione dei dati, ma a volte la velocità di esecuzione di comandi più
semplici può comportare in totale un risparmio di tempo.
Per quanto riguarda l’unità di controllo, essa ha il compito di sovrintendere al
funzionamento dell’intero sistema. Essa coordina e controlla l’esecuzione dei
programmi ed il funzionamento delle unità periferiche sotto l’azione di un orologio
(clock), che invia impulsi periodici che definiscono il tempo per la CPU, e le permettono
quindi la sincronizzazione delle varie azioni da svolgere. Per questo motivo anche l’unità
di controllo ha bisogno di una propria memoria per poter gestire tutte le fasi
dell’elaborazione.
3.2.
LE PERIFERICHE.
Le periferiche sono le unità di ingresso ed uscita dei dati (unità di I/O, input ed output):
sono i componenti che vengono uniti mediante collegamenti elettrici all’unità centrale. Il
collegamento avviene mediante apposite “porte” o “interfacce”, oppure mediante
connessioni dirette realizzate con cavetti molto sottili di rame o di oro (il bus dati).
Unità di input sono: la tastiera, che ha sostituito il perforatore e il lettore di schede, il
mouse, lo scanner, i dischi, etc.
Unità di output sono: il monitor, la stampante, il plotter (per eseguire disegni), i dischi,
le casse acustiche, etc.
Il trasferimento delle informazioni tra le periferiche e l’unità centrale è asincrono, cioè
con velocità diversa da quella di elaborazione dell’unità centrale. Infatti le periferiche
sono sempre più lente della CPU, anche perché possono avere dei limiti di natura
meccanica anziché elettronica. Per superare questo inconveniente, l’unità centrale deve
adeguarsi alla velocità della periferica. In pratica, l’unità centrale trasmette i dati alla
periferica ad intervalli. Trasmessi i dati, riprende l’esecuzione di altri comandi e
programmi, in attesa di ricevere un segnale dalla periferica con cui quest’ultima la
informa di essere pronta a ricevere nuovi dati, avendo smaltito il lavoro precedente. Il
trasferimento può avvenire tramite porte di tipo parallelo o seriale. Nel primo caso
abbiamo più fili, e i dati vengono trasmessi un byte alla volta, un bit per filo. Nel secondo
caso abbiamo un solo filo, che trasmette un bit alla volta. La trasmissione in parallelo è
più veloce, ma deve avvenire a distanza di pochi metri: infatti sulle grandi distanze nasce
il problema di far arrivare in perfetta sincronia i bit trasmessi sui fili paralleli, mentre con
il collegamento seriale non vi è pericolo che arrivi prima un bit che è partito dopo, perché
sono tutti incolonnati su un unico filo. Unità periferiche che usano un collegamento
parallelo sono in genere le stampanti, mentre il mouse o la tastiera usano porte seriali. Con
l’aumento dei dispositivi di input e output, si sono costruite delle porte seriali
particolarmente veloci, chiamate usb (universal serial bus) e firewire, quest’ultima usata
soprattutto per la trasmissione delle immagini. Inoltre, esistono dei sistemi di trasmissione
8
che fanno a meno dei collegamenti tramite fili: sono i sistemi wireless, che sfruttano
connessioni via radio. Tra le connessioni wireless più conosciute vi è il bluetooth.
4. IL SISTEMA OPERATIVO.
Così come la CPU è il cuore dell’elaboratore, il sistema operativo è in qualche modo
il cervello della macchina, o, per meglio dire, rappresenta il contenuto di un cervello
umano visto come insieme di nozioni, esperienze, capacità varie di agire e reagire, e così
via. Esso, per esempio, permette che ad un dato comando segua l’azione desiderata,
mettendo in moto quelle parti della macchina atte alla realizzazione del fine (come fa il
cervello umano).
Mentre la CPU fa parte dell’ hardware della macchina, il sistema operativo fa parte del
software: è uno speciale programma che gestisce il funzionamento generale del computer
e coordina l’esecuzione delle applicazioni. Esso in pratica ha una funzione di supervisione
del sistema, e svolge anche il compito di tramite tra l’uomo e la macchina. Il sistema
operativo comprende diverse procedure abituali, necessarie a coordinare e portare a buon
fine il lavoro della macchina. Ad esempio il sistema operativo cura:
• la coordinazione dei driver, cioè dei programmi che gestiscono le singole parti del
sistema (driver della stampante, driver del mouse, driver del modem, ecc.);
• il funzionamento e la gestione delle risorse del sistema informatico, compreso il
processore, la memoria, ecc.;
• l’esecuzione dei programmi applicativi, attribuendo a questi le risorse necessarie per il
loro uso ed evitando anche eventuali conflitti tra diversi programmi;
• la priorità di un lavoro rispetto ad un altro (ad esempio nelle operazioni di stampa);
• l’acquisizione di dati dalla tastiera per passarli ad un programma esecutivo;
• la gestione della CPU, scegliendo il lavoro da sottoporle;
• la conservazione in memoria di un file scritto dall’utente;
• il trasferimento dei file dalla memoria di lavoro alla memoria di massa e viceversa;
• l’organizzazione dei sistemi di supporto della memoria di massa e la gestione dello
spazio disponibile, cioè la gestione del file system.
A questo proposito, occorre tenere presente che con il termine FILE (che in italiano può
essere tradotto come archivio, ma che comunque non viene mai utilizzato con questo
nome) si intende un qualunque documento creato dall’utente e conservato in memoria.
Esso può essere un testo (cioè scritto con caratteri alfabetici e numerici), oppure un
programma, oppure un documento contenente suoni, immagini, ecc. I vari file sono
individuati da un nome, scelto dal suo autore al momento della creazione, e da
un’estensione, che ne individua il tipo: se rappresenta cioè un’immagine, un testo, un
9
suono, e così via. Nome ed estensione sono separati da un punto. Ad esempio, se
l’estensione è .jpg significa che si tratta di un particolare tipo di file immagine, mentre se è
.exe si tratta di un file eseguibile dal computer (ad esempio, i programmi oggetto). Se
invece l’estensione è .txt vuol dire che è un file di tipo testo, mentre se è .doc vuol dire che
è un file elaborato tramite il programma di videoscrittura che si chiama WORD. E così via.
I file che l’utente, a suo giudizio, ritiene logicamente assimilabili si possono catalogare
tutti assieme inserendoli in un unico contenitore che si chiama cartella (in inglese
directory). Stesso discorso vale per le cartelle tra di loro assimilabili (sempre secondo
criteri scelti dall’utente), che possono confluire in unica cartella di livello superiore, e così
via. Questa organizzazione gerarchica ad albero culmina con la cosiddetta radice (o root),
cioè la cartella relativa a qualcuna delle unità di memoria, di cui ogni elaboratore è
dotato, e che costituisce il contenitore finale delle informazioni. Normalmente sono più di
una, e vengono indicate tramite delle lettere maiuscole. Ad esempio, al disco fisso viene di
solito assegnata la lettera C, mentre le unità per altri supporti (cd-rom, pen drive, ecc)
possono essere indicate con D, E, F, ecc .
Pertanto, per poter accedere ad un file, è necessario seguire il cosiddetto cammino (o
pathname) del file. Occorre, cioè, aprire a partire dalla radice tutte le cartelle, con le
eventuali sottocartelle contenute, fino ad arrivare alla cartella che contiene il file in
oggetto: a questo punto si può aprire il file per l’uso desiderato. Il pathname si scrive
partendo dalla radice ed elencando in ordine i nomi di tutte le cartelle che bisogna aprire
per arrivare al file, separando ogni nome dal successivo tramite il simbolo \ . Ad esempio,
se voglio archiviare il file immagine colosseo.jpg nell’unità disco fisso C, posso creare
all’interno di C la cartella geografia, ed all’interno di questa la cartella italia, al cui
interno posso inserire la cartella roma e dentro di questa, infine, posso conservare il file
colosseo.jpg. Il pathname del file suddetto sarà pertanto il seguente:
C:\geografia\italia\roma\colosseo.jpg. Se due cartelle sono separate dal simbolo \
significa che la prima, quella a sinistra del simbolo \ , contiene la seconda, cioè quella a
destra del simbolo \ . È proprio del sistema operativo gestire questo albero, che costituisce
il file system del computer, e che contiene tutte le informazioni in esso memorizzate.
Il primo sistema operativo destinato al mondo dei Personal Computer, o PC, è stato il
DOS (Disk Operating System), seguito dalle varie versioni di WINDOWS, (tra cui
Windows ’98, Windows 2000, XP, Vista) caratterizzate da un’interfaccia grafica più
amichevole. Altri sistemi operativi molto diffusi sono: il Macintosh, per computer
prodotti dalla Apple, e l’UNIX, specie in ambito scientifico.
In pratica il sistema operativo trasforma l’elaboratore, dando vita ai circuiti affinché
l’utente possa sfruttarne le capacità. Pertanto un sistema operativo molto potente dà la
possibilità di utilizzare al meglio le risorse della macchina. Le sue caratteristiche di
duttilità e adattabilità alle diverse esigenze dell’utente caratterizzano la macchina e ne
definiscono la personalità. Un computer, in definitiva, può fare ciò che gli permettono di
fare la sua CPU ed il suo sistema operativo: questi due soggetti sono legati tra di loro, in
10
quanto un sistema operativo funziona per determinate CPU, e viceversa. Pertanto,
programmi e documenti che girano su certe macchine non funzionano su altre con sistema
operativo diverso. Per questo, molto spesso un programma applicativo è prodotto in
diverse versioni, adatte ai diversi sistemi operativi che si trovano in commercio.
5. CENNI SU INTERNET ED IL WWW.
Una rete è costituita da due o più computer, collegati tra di loro in modo da poter
comunicare l’uno con l’altro. La più grande rete esistente al mondo è INTERNET, che
nacque alla fine degli anni ’60 da un progetto del Ministero della Difesa degli Stati Uniti.
Il World Wide Web (WWW) è il più recente e diffuso servizio apparso su Internet. Nato
negli anni ‘90 presso il CERN di Ginevra per lo scambio di informazioni tra enti di
ricerca, si è esteso in modo impressionante fino a diventare un fenomeno di carattere
mondiale. Esso è un enorme ipertesto, cioè un enorme insieme di documenti localizzati su
computer diversi, sparsi per tutto il mondo, collegati tra di loro e consultabili per mezzo di
programmi detti browser. Tra essi ricordiamo Internet Explorer della Microsoft,
senz’altro il più diffuso, e poi Netscape navigator, Mozilla Firefox, Opera, Safari della
Apple, etc. Mediante il browser, si accede alle pagine HTML (Hiper Text Markup
Language): bisogna specificare soltanto l’indirizzo della pagina che si vuole visualizzare,
come specificato in seguito.
L’insieme dei documenti web gestiti da una organizzazione, memorizzati su uno o più
computer, viene chiamato sito Web. Accedendo ad un sito con un browser, si inizia di
solito con un documento chiamato home page, che è la pagina HTML di presentazione del
sito. In essa sono evidenziati i collegamenti, o link, alle altre pagine del sito.
Tra i più diffusi siti web vi è Google, che è un motore di ricerca per individuare siti
relativi ad argomenti od oggetti d’interesse dell’utente, e Wikipedia, che è un’enciclopedia
multimediale, da cui per esempio sono tratte alcune delle informazioni alla fine di questo
paragrafo.
WWW è basato su di un particolare protocollo di trasferimento detto http (HyperText
Transfer Protocol), a sua volta basato sul protocollo TCP/IP della rete Internet. Un
protocollo definisce le azioni che possono essere effettuate da due calcolatori che
intendono comunicare, e le sequenze lecite di tali azioni.
Gli indirizzi delle pagine vengono specificati secondo un preciso sistema di
indirizzamento denominato URL (Uniform Resource Locator): esso è costituito da una
serie di elementi che comprendono il nome del server, cioè del computer su cui si trovano
allocate le informazioni del sito Web, ed il pathname del file relativo al documento in
oggetto. Ciascun calcolatore, collegato ad Internet, possiede un indirizzo fisico detto
indirizzo IP (Internet Protocol). Un indirizzo IP di 32 bit è del tipo: 111 . 111 . 111 . 111,
dunque sono possibili tutti i numeri da 000.000.000.000 a 255.255.255.255. Due
11
calcolatori, ovviamente, non possono avere lo stesso indirizzo. Gli indirizzi IP sono
difficili da ricordare per un essere umano. E’ stato quindi definito un meccanismo per
associare dei nomi più significativi ai calcolatori (indirizzi Internet simbolici), e per
tradurre tali nomi in indirizzi IP.
Esistono delle convenzioni ben precise per definire gli indirizzi dei siti. Internet è
logicamente organizzata in maniera gerarchica ed è divisa in domini (per esempio, ne
abbiamo uno per ogni nazione: fr individua la Francia, uk il Regno Unito, de la Germania,
jp il Giappone, es la Spagna, ecc.). I domini sono a loro volta suddivisi in sotto-domini,
uno per ogni centro, e ancora in sotto-sottodomini, e così via. L’indirizzo di un sito è dato
dalla sequenza dei domini cui appartiene, separati tra di loro dal simbolo “.”
Ad esempio, l’indirizzo http://www.dmi.unict.it/informatica/orario_lezioni/index.html
specifica che:
1) si tratta di una pagina ipertestuale che deve essere trasferita secondo il protocollo http;
2) il server che gestisce la pagina si trova presso il sito dmi.unict.it (Dipartimento di
Matematica e Informatica dell’Università di Catania);
3) il pathname del file è informatica/orario_lezioni/index.html, che corrisponde alla
pagina del Corso di Studi in Informatica contenente l’orario delle lezioni.
Osserviamo che dmi.unict.it è l’indirizzo del Dipartimento di Matematica e Informatica
dell’Università di Catania, dove it è il nome logico che indica il dominio Italia, unict
indica il sotto-dominio Università di Catania e dmi il sotto-sottodominio Dipartimento di
Matematica e Informatica.
L’accesso a Internet avviene tramite un collegamento che adopera le normali linee
telefoniche ed è fornito dai cosiddetti provider o ISP (Internet Service Provider): tra questi
abbiamo TIN, Libero, Tiscali, Fastweb, ecc. Per potersi connettere occorre un modem, che
collega il computer alla linea telefonica: esso esegue le conversioni tra le codifiche usate
all’interno degli elaboratori e le codifiche adottate dalle linee telefoniche per la
trasmissione delle informazioni. Il tipo di accesso più usato ultimamente, caratterizzato
dalla sua notevole velocità, è quello a banda larga: la tecnologia più diffusa in questo
campo è la cosiddetta ADSL (Asymmetrical Digital Subscriber Line), che sfrutta la
normale linea telefonica pur essendo una connessione di tipo digitale.
Negli ultimi anni Internet ha acquistato una notevole rilevanza sociale: tra i fenomeni
più importanti in questo senso vi sono i social network ed i blog.
I blog (o weblog) sono invece degli spazi individuali sul web dove è possibile
pubblicare riflessioni, opinioni, informazioni, di carattere strettamente personale. Una
specie di bacheca virtuale, nella quale inserire anche foto, testi, filmati, in modo da poter
poi ricevere commenti ed impressioni da parte dei visitatori del blog. Il termine deriva dal
log-book, o diario di bordo: infatti, similmente a questo, gli interventi del titolare del blog,
che vanno sotto il nome di post, vengono inseriti e registrati in ordine cronologico. Ad
12
ogni post (intervento) del titolare viene di solito associata una serie di tag, cioè parole
chiave che servono a far capire subito di che cosa si parla.
I social network sono delle comunità virtuali che permettono ai loro iscritti di
scambiarsi opinioni che, a volte, dato l’elevato numero degli utenti frequentatori, generano
anche tendenze e quindi influenzano le scelte di migliaia di persone. Tra i più importanti
social network sono Myspace (diverse decine di milioni di utenti, in calo negli ultimi
tempi) e Facebook (più di 80 milioni gli utenti, in gran voga attualmente: facebook è il
nome del catalogo che i college americani distribuiscono ai nuovi studenti per far
conoscere loro i volti ed i nomi delle persone che frequentano il campus).
Twitter, invece, è un servizio gratuito di social network e microblogging che fornisce
agli utenti una pagina personale aggiornabile tramite messaggi di testo con una lunghezza
massima di 140 caratteri. Gli aggiornamenti possono essere effettuati tramite il sito stesso,
via SMS, con programmi di messaggistica istantanea, e-mail, oppure tramite varie
applicazioni proprietarie di Twitter. Gli aggiornamenti sono mostrati istantaneamente
nella pagina di profilo dell’utente e comunicati agli utenti che si sono registrati per
riceverli. È anche possibile limitare la visibilità dei propri messaggi oppure renderli
visibili a chiunque.
Vi sono anche dei siti dedicati esclusivamente alla pubblicazione di immagini
fotografiche, oppure di filmati: tra questi, uno dei più famosi è YouTube. Esso è un sito
web che consente la condivisione di video. Di proprietà di Google, è il terzo sito più
visitato al mondo dopo Google e Facebook. La maggior parte dei contenuti su YouTube
viene caricata dai singoli utenti, anche se le società dei media tra cui CBS, BBC, e altre
organizzazioni, offrono parte del loro materiale tramite il sito, come parte del programma
di partnership di YouTube. YouTube consente l’incorporazione dei propri video all'interno
di altri siti web. YouTube fa uso della tecnologia di Adobe Flash per riprodurre i suoi
contenuti. Il suo scopo è quello di ospitare solamente video realizzati direttamente da chi li
carica, ma spesso contiene materiale di terze parti caricato senza autorizzazione, come
spettacoli televisivi e video musicali. Il rispetto del regolamento del sito, che vieta
l’upload di materiale protetto da diritto d’autore se non se ne è titolari, si basa su una
verifica ex post di quanto proposto dagli utenti.
13
Appendice A
GLI ALGORITMI
A1. IL CONCETTO DI ALGORITMO.
Gli algoritmi che si usano in Informatica, che sono gli unici che ci interessano, devono
avere delle caratteristiche ben precise. Per illustrarle, cominciamo dalla definizione: dicesi
algoritmo una successione ordinata di un numero finito di passi (cioè operazioni,
istruzioni, azioni) che portano alla risoluzione di un certo problema in un tempo finito.
Possiamo riassumere le proprietà che un algoritmo deve possedere mediante cinque
caratteristiche:
Definitezza: le azioni devono essere ben definite, non devono esserci ambiguità.
Eseguibilità: le azioni devono poter essere eseguite da una macchina e quindi devono
essere prive di riferimenti aleatori o voluttuari (come “un pò”, “a piacere”, ecc).
Determinismo: fatto un passo, il successivo è uno ed uno solo, ben determinato.
Finitezza: il numero di passi deve essere finito.
Terminazione: l’algoritmo, prima o poi, deve finire.
Quest’ultima condizione non è garantita dalla precedente: possono esistere algoritmi con
dei cicli costituiti da un numero finito di azioni che si ripetono all’infinito. A tal proposito,
si può considerare l’algoritmo della figura A2: basta togliere l’ultimo rombo perché
l’algoritmo non finisca mai.
A2. LA RAPPRESENTAZIONE DI UN ALGORITMO.
Normalmente un algoritmo si rappresenta tramite i diagrammi di flusso, che sono delle
costruzioni grafiche che associano lo sviluppo dell’algoritmo ad un percorso caratterizzato
da figure, collegate tra di loro mediante delle frecce di flusso. Le principali figure
utilizzate sono: l’ellisse (serve ad indicare l’inizio e la fine dell’algoritmo), il rombo (serve
ad indicare una condizione), il rettangolo (serve ad indicare un’operazione oppure
un’assegnazione di valori ad una variabile) ed il parallelogramma (serve ad indicare
un’azione di input o di output).
Nelle successive figure sono rappresentati, tramite dei diagrammi di flusso, due
algoritmi utili a risolvere due diversi problemi. Il primo - figura A1 - calcola il fattoriale
di un numero N intero positivo (il fattoriale di N è il numero 1 • 2 • 3 • 4 •..• (N-1) • N).
Il secondo - figura A2 - individua tutti i multipli di un numero, per esempio 3, che sono
compresi tra due estremi, per esempio 10 e 100.
14
N.B.: il simbolo := esprime l’assegnazione di un valore (quello del secondo membro
dell’espressione) alla variabile situata al primo membro.
INIZIO
LEGGI N
FATT:= 1
M:= 1
FATT:= FATT X M
M:= M + 1
NO
M>N
SI
SCRIVI FATT
FINE
FIGURA A1
15
INIZIO
N:= 10
N mod 3 = 0
SI
SCRIVI N
NO
N:= N + 1
N:= N + 3
N.B.: mod, o MODULO, è un’operazione aritmetica,
che si basa sulla divisione aritmetica.
Esattamente, A : B fornisce il risultato
della divisione di A per B, mentre
A mod B fornisce il resto della divisione. Esempi:
18 mod 4 = 2 (18 : 4 = 4, col resto di 2);
7 mod 3 = 1 (7 : 3 = 2, col resto di 1);
10 mod 2 = 0 (10 : 2 = 5, col resto di 0): se il modulo
è 0 significa che A è multiplo di B (10 è multiplo di 2).
N ≥ 100
NO
SI
FINE
FIGURA A2
A3. ALTRI ESEMPI DI ALGORITMI.
Vediamo di seguito alcuni esempi di algoritmi, che sono utilizzati frequentemente in
normali applicazioni della vita quotidiana.
A3.1. ALGORITMO DI RICERCA.
Serve per risolvere il problema relativo alla ricerca di un particolare elemento (detto
elemento chiave) in un insieme ordinato e finito di elementi. I passi dell’algoritmo sono i
seguenti:
1) Si considera un elemento a piacere, A, e lo si confronta con la chiave;
2) Se A è più grande della chiave, si continua la ricerca nel sottoinsieme formato da
tutti gli elementi minori di A. Altrimenti, nell’altro (gli elementi maggiori di A);
16
3) In questo nuovo insieme si prende un elemento a caso, B, e lo si confronta con la
chiave. Si ritorna quindi al passo 2).
Questo è, per esempio, il procedimento che si utilizza comunemente per cercare una
parola nel vocabolario, o un numero nell’elenco telefonico. In ogni caso, la premessa per
poter utilizzare questo algoritmo è che si abbia a disposizione un insieme di oggetti già
ordinato (il vocabolario o l’elenco telefonico). Di seguito, mostriamo due algoritmi che
servono proprio a questo scopo, cioè ad ordinare un insieme di oggetti, purché questi
elementi siano a due a due confrontabili tra di loro (cioè di due qualunque di essi si possa
dire chi è il più grande o il più piccolo, chi viene prima e chi viene dopo). Per facilitare
l’esposizione, supponiamo che l’insieme da ordinare sia un insieme di n numeri, che
chiameremo S = {a1, a2, a3, .., an}.
A3.2. ALGORITMO DI SCAMBIO.
Supponiamo di voler ordinare i suddetti numeri in ordina crescente (nel caso
contrario, basta fare gli opportuni aggiustamenti). I passi dell’algoritmo sono i seguenti:
1) Si percorre l’insieme alla ricerca del numero più piccolo: supponiamo che sia quello
di posto k, ak.
2) Si scambia a1 con ak.
3) Si considerano i restanti n-1 elementi e si cerca il minimo tra di questi, e sia ai.
4) Si scambia a2 con ai.
5) Si continua così con i restanti n-2 elementi e si va avanti fino agli ultimi due.
Confrontati questi ultimi, ed eventualmente scambiati, si ha tutto l’insieme S
ordinato.
Esempio. Sia S = {7, 5, 1, -3, 14, 10, 2}. Sviluppando l’algoritmo, l’insieme si
trasforma passo dopo passo nel seguente modo.
{7, 5, 1, -3, 14, 10, 2}
{-3, 5, 1, 7, 14, 10, 2}
{-3, 1, 5, 7, 14, 10, 2}
{-3, 1, 2, 7, 14, 10, 5}
{-3, 1, 2, 5, 14, 10, 7}
{-3, 1, 2, 5, 7, 10, 14} L’insieme ora è ordinato: gli ultimi due elementi, il 10 ed
il 14, non hanno bisogno di essere scambiati, perché sono già in ordine.
17
A3.3. ALGORITMO QUICKSORT.
La finalità rimane la stessa del caso precedente: ordinare un insieme di numeri in
ordine crescente (o decrescente). Cambia però il metodo. I passi dell’algoritmo, in effetti,
si possono sintetizzare in un’unica istruzione, che è la seguente:
i) Si sceglie nell’insieme S un elemento a piacere, detto pivot: sia per esempio
quello di posto k, ak. A questo punto, si suddivide l’insieme in tre sottoinsiemi: quello
contenente solo il pivot, un altro contenente tutti gli elementi di S minori del pivot ed il
terzo contenente gli elementi di S maggiori del pivot: gli elementi vanno copiati nello
stesso ordine in cui compaiono in S. Dopodiché si sceglie un nuovo pivot in ciascuno dei
due insiemi così generati e si ripete lo stesso discorso fatto prima. L’algoritmo va avanti
finché tutti i sottoinsiemi che vengono generati hanno un solo elemento: a questo punto, si
mettono assieme questi sottoinsiemi e si ottiene l’insieme di partenza ordinato.
Esempio. Sia S = {7, 5, 1, -3, 14, 10, 2}. Sviluppando l’algoritmo, l’insieme si
trasforma passo dopo passo nel seguente modo.
{7, 5, 1, -3, 14, 10, 2} Pivot = 5
{1, -3, 2}
{5}
{-3}
{1, 2}
{-3}
{1} {2}
{7, 14, 10}
{5}
{5}
{7}
Pivot: -3 e 10
{10} {14} Pivot = 1
{7}
{10}
{14}
A questo punto, l’algoritmo è finito, perché tutti gli insiemi sono composti da un
unico elemento: mettendo assieme questi singoli elementi, si ottiene l’insieme ordinato:
{-3, 1, 2, 5, 7, 10, 14}.
18
Appendice B
I PROGRAMMI
Come già detto, un programma altro non è che un algoritmo espresso in termini di
un linguaggio di programmazione. Esistono diversi linguaggi evoluti, più facili da usare
per il programmatore rispetto ai linguaggi macchina. Tra questi linguaggi evoluti, abbiamo
il Pascal, il Fortran, il C, Java ed altri ancora utili per potersi adattare a particolari
esigenze. Normalmente, un linguaggio di programmazione è fatto di parole, intese come
successioni di caratteri, di particolari simboli di punteggiatura e di regole grammaticali
che costituiscono la sintassi del linguaggio. Di seguito, portiamo un esempio di
programma.
B1. ESEMPIO DI PROGRAMMA.
Possiamo considerare l’algoritmo che serve a calcolare il fattoriale di un numero
intero positivo N (vedi paragrafo A2) e scriverlo se non proprio tramite un linguaggio di
programmazione, che sarebbe complicato spiegare in breve, tramite comunque una specie
di linguaggio di programmazione abbastanza simile al linguaggio Pascal. Ecco le
istruzioni:
INIZIO
LEGGI N
FATT:= 1
M:= 1
RIPETI
FATT:= FATT X M
M:= M + 1
FINCHÉ M > N
SCRIVI FATT
FINE
FATT, M e N sono variabili
B2. LE STRUTTURE DI UN PROGRAMMA.
Un qualunque programma, al di là di come è organizzato, può essere visto come un
aggregazione di tre strutture di base: la sequenza, la selezione e l’iterazione.
19
Sequenza. La sequenza, o programma lineare, prevede che l’esecuzione avvenga
partendo dalla prima istruzione, e poi proseguendo con la seconda, la terza e così via sino
alla fine, senza diramazioni, salti, scelte condizionate, etc. Il relativo diagramma di flusso
è il seguente:
Inizio
Prima azione
Seconda azione
Terza azione
……………………
Ultima azione
Fine
Selezione. È la struttura che realizza una scelta condizionata. Essa corrisponde al
rombo dei diagrammi di flusso e prevede due diramazioni, in corrispondenza della verità o
della falsità di una certa condizione. È, in ogni caso, una scelta deterministica.
Linguisticamente corrisponde a: Se…allora…altrimenti.
NO
Azione B
SI
Condizione
Azione A
Iterazione. L’iterazione, o ripetizione, è un ciclo, cioè una sequenza di azioni che
viene ripetuta:
1) fino al verificarsi di una certa condizione (condizione di terminazione);
2) mentre si verifica una certa condizione (condizione di continuazione).
20
Dal punto di vista dei diagrammi di flusso, corrisponde ad una freccia che torna
indietro per formare un ciclo. Per dare un esempio relativo ai due casi, consideriamo il
diagramma di flusso di un algoritmo che serve a scrivere tutti i numeri compresi tra 1 e N.
Inizio
Leggi N
M := 1
Scrivi M
M:= M+1
Algoritmo con condizione di terminazione
NO
SI
M≥N
Fine
Inizio
Leggi N
M := 0
NO
Fine
Algoritmo con condizione di continuazione
SI
M<N
M:= M+1
Scrivi M
21
Appendice C
LA NUMERAZIONE BINARIA. IL CODICE ASCII.
C1. I SISTEMI DI NUMERAZIONE.
Il nostro sistema corrente di numerazione è un sistema di tipo posizionale. A differenza
dei sistemi additivi (come quello latino) dove il valore del numero che si rappresenta è
dato dalla somma dei simboli che vengono scritti, nel sistema posizionale di base p il
valore del numero è dato dalla somma di tanti prodotti, ognuno ottenuto moltiplicando la
singola cifra che si scrive per la potenza di p il cui esponente è dato dalla posizione che la
cifra in oggetto occupa, partendo da destra ed iniziando da zero. Per esempio, prendendo
come spunto il sistema posizionale decimale usato comunemente, si ha che il valore del
numero che si scrive 548 non è dato dalla somma delle cifre, 5 + 4 + 8, bensì dalla
seguente somma:
8 x 100 + 4 x 101 + 5 x 102 = 8 + 40 + 500 = cinquecentoquarantotto. Analogamente,
1472 = 2 x 100 + 7 x 101 + 4 x 102 + 1 x 103 = millequattrocentosettantadue.
Il numero delle cifre diverse che si usano per scrivere i numeri costituisce la base p del
sistema di numerazione. Nel caso del sistema decimale, la base è dieci perché i numeri
vengono scritti usando le dieci cifre 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Nel caso si disponga di due sole cifre, 0 e 1, il sistema si chiama binario. Esempi di
numeri binari sono i seguenti (il valore della base si scrive in basso a destra):
11102 = 0 x 20 + 1 x 21 + 1 x 22 + 1 x 23 = quattordici;
1011012 = 1 x 20 + 0 x 21 + 1 x 22 + 1 x 23 + 0 x 24 + 1 x 25 = quarantacinque.
Nel caso si disponga di tre sole cifre, 0, 1, 2, il sistema si chiama ternario. Ad esempio,
2213 = 1 x 30 + 2 x 31 + 2 x 32 = venticinque.
Stesso discorso vale se la base è quattro, cinque, e così via: il sistema per calcolare il
valore decimale di un numero scritto in base p (cioè per passare dalla notazione in base p
alla notazione in base 10) è sempre quello descritto sopra.
Invece, per passare da un numero scritto in base 10 al suo corrispondente in base p,
occorre procedere con il metodo delle divisioni successive: occorre, cioè, dividere il
numero per la base p e considerare tutti i resti a partire dall’ultimo.
Il procedimento si arresta quando nella prima colonna (vedi esempi) compare lo 0.
Esempi:
1) convertire 12410 (cioè il numero decimale 124) in base 2.
2) convertire 8310 (cioè il numero decimale 83) in base 4.
22
Primo caso.
124
62
31
15
7
3
1
0
2
0
0
1
1
1
1
1
Secondo caso.
83
20
5
1
0
4
3
0
1
1
Pertanto, 8310 = 11034
Pertanto, 12410 = 11111002
È possibile anche effettuare le operazioni aritmetiche tradizionali in base p. Qui ci
limitiamo a degli esempi relativi alla somma ed al prodotto in base 2.
Somma. La tabellina della somma è molto semplice, essendo solamente due le possibili
cifre da sommare: 0 e 1. Dei quattro possibili casi (0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, 1 + 1 =
10), occorre essenzialmente commentare l’ultimo. Infatti, ovviamente 1 + 1 = 2. Siccome
210 = 102 , si suol dire che, quando si somma 1 + 1, si scrive 0 e si riporta 1.
Analogamente, 1 + 1 + 1 = 310 = 112, cioè si scrive 1 e si riporta 1. Ed ancora, 1 + 1 + 1 +
1 = 410 = 1002, cioè si scrive 0 e si riporta 102, cioè si riporta 2. E così via.
Esempio.
110112 +
101102+
100112 =
10001002
Prodotto. La tabellina del prodotto è ancora più semplice: 0 x 0 = 0, 0 x 1 = 0, 1 x 0 = 0,
1 x 1 = 1. La moltiplicazione si effettua con le stesse regole valide nel caso decimale.
Esempio.
101102 x
11012 =
10110
00000
10110
10110
1000111102
23
C2. IL CODICE ASCII.
Per tradurre i caratteri, che noi usiamo per rappresentare l’informazione, nei simboli 0
e 1, con cui è rappresentata l’informazione all’interno di un computer, è stato predisposto
il codice ASCII (American Standard Code for Information Interchange). In esso, ad
ognuno dei nostri caratteri corrisponde un byte diverso: pertanto, in questo codice è
possibile rappresentare 256 = 28 caratteri diversi, comprendenti le lettere minuscole e
maiuscole, vari simboli di punteggiatura, le dieci cifre numeriche, ed altri caratteri
particolari. Il codice ASCII è organizzato nel seguente modo: ad ogni carattere è associato
un numero di posizione, compreso tra 0 e 255. Questo numero viene rappresentato in base
2, così come spiegato nell’appendice C, e la sua rappresentazione in bit, qualora sia
inferiore ad otto cifre, viene completata con un opportuno numero di zeri iniziali. Per
esempio, alla lettera ‘F’ è associato il posto 70. Siccome 7010 = 10001102, alla lettera ‘F’
corrisponde il byte 01000110 (è stato necessario aggiungere uno zero iniziale).
Analogamente, alla cifra ‘3’ corrisponde il posto 51, il che significa che il ‘3’ viene
tradotto con il byte 00110011 (è stato necessario aggiungere due zeri iniziali).
Infine, al simbolo ‘+’ corrisponde il posto 43, il che significa che il ‘+’ viene tradotto con
il byte 00101011 (è stato necessario aggiungere due zeri iniziali).
24