Sei sulla pagina 1di 39

Appunti del corso

Abilit Informatiche

Architettura degli elaboratori

Universit degli Studi di Salerno
Dipartimento di Farmacia

Anno 2014

prof. Matteo dAmore
dott. Antonio Grasso









Indice dei Contenuti
1.2 COS LINFORMATICA? .......................................................................................................................................................... 5
1.2.1 GLI ALGORITMI ........................................................................................................................................................................ 6
1.2.2 IL COMPUTER .......................................................................................................................................................................... 7
1.2.3 LA RAPPRESENTAZIONE DEI DATI............................................................................................................................................... 8
1.3 LIMPORTANZA DELLINFORMATICA E DELLICT ................................................................................................................ 9
2.2 I TIPI DI COMPUTER ...............................................................................................................................................................10
2.3 UN PO DI STORIA ...................................................................................................................................................................11
2.4 I COMPUTER SANNO LAVORARE SOLO CON I NUMERI! ................................................................................................14
2.5 UN RIPASSO DELLE UNIT DI MISURA ...............................................................................................................................15
2.5.1 I FENOMENI PERIODICI ...........................................................................................................................................................15
2.5.2 I PREFISSI ..............................................................................................................................................................................16
2.6 ARCHITETTURA DI VON NEUMANN....................................................................................................................................17
2.7 LA CPU.......................................................................................................................................................................................17
2.8 LA MEMORIA CENTRALE .......................................................................................................................................................19
2.8.1 LA RAM ...............................................................................................................................................................................19
2.9 LA SCHEDA MADRE E I BUS...................................................................................................................................................19
2.9.1 IL FIRMWARE, LE ROM E IL BIOS...........................................................................................................................................21
2.10 LE PERIFERICHE DI INPUT/OUTPUT ..................................................................................................................................21
2.10.1 LHARD DISK (DISCO RIGIDO)................................................................................................................................................21
2.10.2 LE MEMORIE FLASH .............................................................................................................................................................22
2.10.3 I DRIVE OTTICI E I DISCHI OTTICI ............................................................................................................................................22
2.10.4 LA CACHE............................................................................................................................................................................22
2.10.5 TASTIERA, MOUSE, TOUCHPAD, ........................................................................................................................................23
2.10.6 IL MONITOR ........................................................................................................................................................................23
2.10.7 LA STAMPANTE ...................................................................................................................................................................24
2.10.8 LO SCANNER .......................................................................................................................................................................24
2.11 LINVOLUCRO E LALIMENTAZIONE ..................................................................................................................................25
3.2 IL SISTEMA BINARIO...............................................................................................................................................................26
3.2.1 DA BINARIO A DECIMALE ........................................................................................................................................................27
3.2.2 DA DECIMALE A BINARIO ........................................................................................................................................................27
3.2.3 LE OPERAZIONI ELEMENTARI...................................................................................................................................................27
3.3 IL SISTEMA ESADECIMALE ....................................................................................................................................................28
3.3.1 DAL BINARIO ALLESADECIMALE E VICEVERSA ..........................................................................................................................28
3.4 I TIPI DI DATO E LE CODIFICHE .............................................................................................................................................28
3.4.1 I NUMERI ..............................................................................................................................................................................28
3.4.2 LE STRINGHE .........................................................................................................................................................................29
3.4.3 LE IMMAGINI.........................................................................................................................................................................30
3.4.4 I SUONI .................................................................................................................................................................................30
4.2 TIPI DI DATI E ISTRUZIONI.....................................................................................................................................................33
4.3 LA RAPPRESENTAZIONE DI UN ALGORITMO ....................................................................................................................34
4.3.1 IL DIAGRAMMA DI FLUSSO ......................................................................................................................................................35
5.2 I SISTEMI OPERATIVI ..............................................................................................................................................................37
5.2.1 IL FILESYSTEM........................................................................................................................................................................39
Capitolo 1
Linformatica

Linformatica non riguarda i
computer pi di quanto lastronomia
riguardi i telescopi.
Edsger Wybe Dijkstra

1.1 Dati e informazioni

Prima di spiegare cos linformatica, bisogna soffermarci a definire i termini dato
e informazione che troppo spesso vengono usati come sinonimi.

Un dato a un livello pi basso rispetto allinformazione. un singolo elemento
informativo che non permette di aumentare la nostra conoscenza: un nome, un
numero, unimmagine. In sintesi potremmo definire un dato come un simbolo senza
un significato.

Facciamo un esempio. Potremmo avere una serie di dati: 32C, 33C, 32C, 27C,
24C, 27C, 33C. Come vedete, avere a disposizione questa serie di numeri non
aumenta la nostra conoscenza. Un altro dato potrebbe essere 8 848 metri. Anche in
questo caso, questo numero non ci serve a nulla.

Linformazione invece a un livello di astrazione superiore rispetto ai dati. Essa
consiste in un insieme di dati collocato in un contesto che ci permette di aumentare la
nostra conoscenza, cio che ci permette di superare unincertezza, prendere una
decisione, effettuare delle operazioni.

Per fare degli esempi guardiamo ai dati precedenti e in particolare alla serie di
temperature. Se sappiamo che quelle temperature sono relative alla citt di Roma in
un particolare periodo dellanno a una particolare ora del giorno, questo fa di loro
uninformazione.

La nostra informazione pu essere ulteriormente elaborata con altre informazioni per
ottenerne di nuove.

Per esempio nella serie di temperature si nota un abbassamento che potremmo
associare a qualche giorno di brutto tempo.

Questo potrebbe essere confermato da altre informazioni relative alle precipitazioni.
Analogamente per quanto riguarda laltro dato, gli 8 848 metri, se so che questo
numero la misura dellaltezza del monte Everest, ora ho uninformazione.
Informazione che, come al solito, pu essere incrociata con altre per ottenere nuove
informazioni. Se avessi le altezze di tutte le montagne del mondo, scoprirei che il
monte Everest il pi alto di tutti.






Figura 1.1. Rappresentazione
schematica del DNA.
Il DNA il contenitore delle
informazioni genetiche necessarie
alla sintesi di RNA e proteine,
molecole indispensabili per lo
sviluppo e il corretto
funzionamento della maggior parte
degli organismi viventi. Queste
informazioni sono scritte tramite
un alfabeto di 4 simboli, che nella
realt corrispondono a quattro
diverse molecole, chiamate basi
azotate, come mostrato in figura.






Linformazione anche unistruzione per eseguire un certo compito. E questo non
soltanto per gli uomini. Il DNA uno splendido esempio di contenitore di informazioni.
Contiene infatti le istruzioni per la sintesi delle proteine che regolano lo sviluppo e il
funzionamento di quasi tutti gli esseri viventi. Queste informazioni sono scritte con
una alfabeto di 4 lettere, che nella realt corrispondono a 4 diverse basi azotate (vedi
la Fig. 1.1).

In generale uninformazione ha valore in quanto potenzialmente utile al fruitore
per i suoi molteplici scopi. Fin dallalba dellumanit gli uomini hanno sentito il
bisogno di trasmettere informazioni per migliorare la vita propria e dei propri figli
e questo li ha resi la specie dominante di questo pianeta: dal linguaggio, alle pitture,
fino alla scrittura. Grazie alla rivoluzione scientifica e alle nuove tecnologie lo scambio
di informazioni ha raggiunto livelli cos elevati che oggigiorno la nostra societ viene
definita come societ dellinformazione.

1.2 Cos linformatica?

Linformatica la scienza che studia la rappresentazione, lelaborazione delle
informazioni e le tecniche pratiche per realizzare queste elaborazioni in maniera
automatica. Nei prossimi paragrafi approfondiremo ognuno di questi aspetti.
Letimologia italiana della parola informatica proviene dal francese:
Philippe Dreyfus us per primo il termine informatique nel 1962 come compressione di
informationelectronique ou automatique. Da notare che in inglese la parola
informatics usata raramente e ha un significato pi ampio rispetto al nostro. La
giusta parola inglese per indicare linformatica computer science.
La nascita dellinformatica non ha una data ben precisa. Se si guarda ai metodi per
automatizzare la risoluzione dei problemi, possiamo trovare la sua origine nella
matematica e nella tecnologia grecoellenistica (algoritmo di Euclide, metodo
di Archimede per la trisezione di un angolo, macchina di Anticitera). Se invece ci
concentriamo solo sui macchinari che permettevano di fare calcoli allora possiamo
addirittura risalire allabaco, strumento inventato intorno al 2000 a.C. Linformatica
cos come la intendiamo oggi nasce intorno al 1930 grazie al lavoro di scienziati come
Kurt Gdel, Alan Turing, Alonzo Church, John von Neumann, Claude Shannon e grazie
alla nascita dei primissimi computer.

I fondamenti teorici dellinformatica discendono direttamente dalla matematica.
Programmi di videoscrittura, browser, videogiochi, ecc... sono semplici strumenti
di lavoro o svago. Quello che interessa, nellinformatica pura, non tanto saper
usare i vari programmi, quanto piuttosto capirne la struttura ed eventualmente
saperla migliorare con luso di procedimenti pi efficienti. Per assurdo, un informatico
puro potrebbe non saper accendere un computer! Vengono invece chiamati
programmatori coloro che creano i programmi (spesso sono dei laureati in ingegneria
informatica). Infine esistono gli utenti, cio i semplici utilizzatori di programmi.
Nei prossimi paragrafi parleremo dei tre aspetti fondamentali dellinformatica che
verranno poi discussi pi approfonditamente nei primi capitoli di queste dispense:
gli algoritmi, il computer e la rappresentazione dei dati.

1.2.1 Gli algoritmi

Per poter permettere a qualcuno, sia esso una macchina o una persona, di fare un
lavoro al posto nostro, dobbiamo impartirgli delle istruzioni ben precise in modo
che faccia esattamente ci che vogliamo.
Facciamo un primo esempio banale. Supponiamo di stare comodamente sdraiati sul
divano e, siccome non ci va di alzarci, vogliamo che unaltra persona faccia partire un
film in DVD al posto nostro. Se questa persona non sa usare il lettore DVD, dovremo
dirgli di fare determinate azioni in maniera chiara e non ambigua:

1. Prendi il DVD del film;
2. Accendi il lettore DVD spingendo il bottone in basso a sinistra;
3. Apri il cassettino del DVD spingendo il bottone in alto a destra;
4. Poggia il DVD nel cassettino con le scritte rivolte verso lalto;
5. chiudi il cassettino premendo il tasto in alto a destra;
6. Avvia la riproduzione del DVD premendo il tasto Play che si trova in basso a destra.

Questa sequenza di istruzioni un semplicissimo esempio di algoritmo, che
definito come una sequenza finita di operazioni, chiaramente comprensibili
allesecutore, per risolvere un problema.

Facciamo un altro esempio, stavolta di natura matematica. Ricordate la sequenza
di temperature di cui avevamo parlato nel paragrafo 1.1?
Supponiamo di voler calcolare la temperatura media.
La sequenza di istruzioni in questo caso molto semplice:

1. si prendono tutti i numeri;
2. si sommano;
3. si divide la somma per il numero degli elementi;
4. si riporta il risultato ottenuto.

Spesso un algoritmo ha degli input (immissione in inglese) e degli output (emissione/
in uscita in inglese). Linput linsieme degli elementi in ingresso, spesso dei dati,
mentre loutput linsieme degli elementi in uscita, spesso dei dati. Per esempio
un input possono essere gli ingredienti di una ricetta, lalgoritmo una ricetta
ben scritta e loutput il piatto pronto.







Figura 1.2. Rappresentazione schematica di un generico sistema di elaborazione. Un sistema di
elaborazione pu essere pensato come una scatola che produce un output a partire dagli input.


Linsieme delle azioni che a partire dagli input generano loutput prende il nome di
processo di elaborazione. Un qualsiasi oggetto, o insieme di pi oggetti, che esegua
un processo di elaborazione, cio che generi un output a partire dagli input, viene
chiamato sistema di elaborazione. Concettualmente un sistema di elaborazione pu
essere schematizzato come una scatola (black box) a cui si forniscono degli input e
che restituisce degli output. Esempi di sistemi di elaborazione sono la lavatrice (panni
sporchi in input, panni puliti in output), la radio (segnali radio in input, suono in
output), ecc.

1.2.2 Il computer

Un computer non nientaltro che una macchina che pu eseguire delle operazioni
elementari sui dati in input, seguendo degli algoritmi impostati dallesterno, e
restituisce il risultato dellelaborazione come dati in output. La peculiarit di un
computer quella di essere un sistema di elaborazione generico, cio che pu essere
istruito per eseguire qualsiasi tipi di algoritmo sui dati. Usando opportune periferiche
collegate al computer, si possono anche eseguire operazioni pratiche.

La lavatrice, per esempio, una specie di computer. Allinterno vi infatti un vero e
proprio minicomputer che comanda le varie parti della lavatrice e che programmato
per eseguire un solo algoritmo preimpostato in fabbrica. A partire dagli input iniziali,
cio le scelte di lavaggio come temperatura, tipo di capi da lavare, ecc, la lavatrice
segue il suo algoritmo e alla fine restituisce come output i panni puliti.

Ricordiamo che la differenza tra una lavatrice e un computer che il computer pu
essere istruito affinch esegua un qualsiasi tipo di algoritmo mentre la lavatrice
pensata per eseguire sempre e solo un singolo algoritmo.

Come si fa per a insegnare a un computer a eseguire certi algoritmi? Per farlo il
computer deve essere programmato, cio bisogna inserire nella sua memoria
lalgoritmo desiderato secondo un linguaggio comprensibile al computer. Linsieme di
queste istruzioni si chiama programma. Chiaramente un semplice utente del computer
non obbligato a scriversi da solo tutti i programmi! Anzi, tutti i programmi che user
saranno realizzati da altre persone (basti pensare a programmi come Microsoft Word e
Microsoft Excel).

Sistema di
elaborazione
INPUT OUTPUT



Figura 1.3. Fotografia di un
personal computer di tipo desktop.
Lunit centrale la parte
principale e consiste di un
involucro chiamato case allinterno
del quale si trovano tutti i
componenti principali del
computer. Oltre allunit centrale si
vedono tre periferiche: il monitor,
la tastiera e il mouse.





Attualmente caricare ed eseguire un programma in un computer unoperazione
molto semplice. Infatti i computer sono equipaggiati con un programma speciale,
chiamato sistema operativo, che viene eseguito poco dopo laccensione del computer.
Il sistema operativo accoglie lutente in maniera amichevole permettendogli di fare
tutta una serie di operazioni, tra cui eseguire un programma.
Esempi di sistemi operativi sono Microsoft Windows 7, Mac OS X, Android, Ubuntu,
ecc

Linsieme dei programmi e dei dati prende il nome di software. Questo termine
stato coniato per contrapposizione alla parola hardware che in inglese significa
ferraglia.

La parola hardware identifica infatti le parti fisiche del computer. Fu scelto
questo nome perch i vecchi computer erano enormi e avevano schede elettroniche,
valvole e tutta una serie di componenti ingombranti che sembravano veramente
ferraglia!

1.2.3 La rappresentazione dei dati

Quando abbiamo accennato agli algoritmi, abbiamo detto che le operazioni di cui
parlano devono essere comprensibili a chi deve eseguire lalgoritmo. Ovviamente lo
stesso discorso vale per i dati. Siccome il nostro interesse principale far eseguire
degli algoritmi al computer, dobbiamo essere in grado di esprimere sia i dati che le
operazioni degli algoritmi in un linguaggio comprensibile al computer. Un computer
in grado di eseguire solamente operazioni sui numeri. Copiare un numero, addizionare
due numeri, confrontare due numeri, ecc

Siccome un computer ha bisogno di rappresentare i dati solamente con un insieme
finito di numeri, si dice digitale.

Ricordiamo, per chi non lo sapesse, la differenza tra analogico e digitale.

Una grandezza fisica che viene rappresentata con continuit detta analogica.

Pensiamo per esempio al tempo, che viene rappresentato con langolo delle lancette
dellorologio. Oppure alla temperatura misurata da un termometro a mercurio. Sia
langolo della lancetta sia laltezza della colonnina di mercurio possono assumere
qualsiasi valore compreso tra un minimo e un massimo.

Si dice invece digitale una grandezza fisica che viene rappresentata usando un
numero finito di valori numerici.

Per esempio un orologio digitale non pu mostrare con continuit tutti gli istanti di
tempo possibili in una giornata, solitamente pu al massimo arrivare a mostrare i
secondi. Anche un termometro digitale non mostrer con continuit i valori della
temperatura, ma solamente dei valori distanziati, per esempio, di 0.1C.
Un altro esempio pi sui generis la quantificazione della conoscenza di un
argomento tramite un voto. Solitamente questa conoscenza viene espressa con un
numero intero compreso tra 0 e 10. quindi un esempio di rappresentazione digitale.
Rappresentare i dati, siano essi numeri, lettere, immagini, suoni, sotto forma di
numeri di fondamentale importanza affinch possano essere usati in un computer.
1.3 Limportanza dellinformatica e dellICT

Cerchiamo ora di comprendere limportanza dellinformatica nel mondo odierno.
Dalla fine della seconda guerra mondiale ai giorni nostri il nostro modo di vivere
cambiato radicalmente. Questi cambiamenti, tuttora in corso, prendono il nome di
terza rivoluzione industriale. Tra i pilastri pi importanti su cui si basa questa
rivoluzione ci sono tre discipline scientifiche:

linformatica,
lelettronica
le telecomunicazioni.

Le nuove capacit di immagazzinamento, elaborazione e comunicazione delle
informazioni sono il cardine, nel bene e nel male, di questa rivoluzione. Luso della
tecnologia nella gestione e nel trattamento delle informazioni ha infatti assunto
crescente importanza strategica per le aziende e per le nazioni. In particolare non c
stata solo una rivoluzione dei settori economici preesistenti alla luce delle nuove
tecnologie. Soprattutto negli ultimi 20 anni nato un vero e proprio nuovo settore
delleconomia scaturito dallunione di informatica, elettronica e telecomunicazioni,
chiamato Tecnologia dellInformazione e della Comunicazione (abbreviato in ICT,
Information and Communication Technologies) e i cui frutti sono sotto gli occhi
di tutti: interconnessione dei media (telefonia, televisione, radio, internet, ecc);
estrema facilit nellimmagazzinamento, scambio e reperibilit di informazioni. Oramai
lICT diventato un settore chiave delleconomia moderna, almeno pari a quello di
settori pi consolidati quali quello meccanico, chimico, farmaceutico, tessile,
manufatturiero e alimentare ma soprattutto il vero traino della rivoluzione che
stiamo vivendo. Linformatica e le telecomunicazioni sono i fondamenti tecnico
scientifici di cui gli studenti devono solo conoscere i concetti fondamentali. Studenti
orientati allattivit lavorativa in azienda, dovrebbero invece conoscere e sapersi
districare tra le attuali tecnologie ICT usate in azienda, essere educati alla corretta
gestione, presentazione e interpretazione dei dati, alla loro comunicazione ai clienti e
ad altre aziende, e infine alluso delle tecnologie ICT nella gestione del lavoro.

Capitolo 2
Il computer


2.1 Cose un computer?
Un computer una macchina programmabile che pu eseguire automaticamente
sequenze di operazioni logico-aritmetiche sui dati in ingresso (input) e di restituire
i risultati di tali operazioni in uscita (output). pertanto un sistema di elaborazione
di dati. La caratteristica principale che lo differenzia da altri sistemi di elaborazione
la programmabilit, cio pu essere istruito (programmato) per eseguire qualsiasi
tipo di algoritmo.

Il termine computer deriva dallinglese e significa calcolatore. In inglese il termine
indicava originariamente un essere umano incaricato di eseguire dei calcoli. Il primo
utilizzo nel senso moderno del termine attestato nel 1897 ma bisogner attendere la
met degli anni 50 perch questa accezione diventi di uso comune. Al giorno doggi,
ci si riferisce comunemente al computer come a un dispositivo elettronico, digitale,
programmabile e a scopo generico costruito secondo la cosiddetta architettura di von
Neumann.

Al pari della televisione, il computer rappresenta il mezzo tecnologico simbolo che pi
ha modificato le abitudini umane dal secondo dopoguerra a oggi: la sua invenzione ha
contribuito alla nascita e allo sviluppo dellinformatica moderna, uno dei pilastri su cui
si basa la cosiddetta terza rivoluzione industriale.

2.2 I tipi di computer

Esistono molti termini nel mondo dellinformatica per indicare i vari tipi di computer.
Una volta queste distinzioni erano basate sostanzialmente sulla potenza del computer.
Attualmente invece, data la potenza dei computer odierni, si tende a catalogare i
computer, non solo in base alla loro potenza, ma anche, e forse soprattutto, in base
alla loro destinazione duso.




Figura 2.1. Un moderno mainframe, un personal computer desktop e uno smartphone.

I mainframe o sistemi centrali sono computer utilizzati per applicazioni critiche
soprattutto da grandi aziende e istituzioni, tipicamente per elaborare con alte
prestazioni e alta affidabilit grandi moli di dati: transazioni finanziarie, censimenti,
statistiche di industrie e clienti, ecc.

I personal computer sono dei computer pensati soprattutto per essere acquistati e
usati da una singola persona. In questa categoria possiamo quindi far rientrare il
classico computer da tavolo (desktop computer), i computer portatili (laptop
computer), i tablet e anche gli smartphone.

Ricordiamo anche i supercomputer, dei computer costruiti per avere la massima
potenza di calcolo possibile. Sono pezzi unici e servono sostanzialmente per la
ricerca scientifica.
2.3 Un po di storia

Fin dallantichit luomo cerc di costruire macchine in grado di fare dei calcoli:
labaco, la macchina di Anticitera e gli astrolabi sono solo alcuni esempi. Le prime
macchine calcolatrici compaiono nella seconda met del 1600: la macchina calcolatrice
di Wilhelm Schickard (1623, mai realizzata), la pascalina di Blaise Pascal (1645) e la
macchina di Gottfried Leibniz (1672).

Il passaggio da macchina calcolatrice a vero e proprio computer (nel senso di
dispositivo programmabile) si deve a Charles Babbage. La sua macchina analitica,
progettata nel 1833 ma mai realizzata, il primo computer della storia. Si trattava di
una colossale macchina a ingranaggi, alimentata a vapore e dotata di unit di calcolo
decimale, unit di memoria e sistemi di input e di output. Contrariamente a quanto
si potrebbe pensare, la macchina analitica era interamente digitale.
Il primo computer funzionante invece lo Z1 realizzato da Konrad Zuse nel 1938.
(Vedi figura 2.2.) La nascente elettronica e la spinta delle ricerche per la seconda
guerra mondiale fecero fare dei grandi passi in avanti nello sviluppo dei computer
(ABC del 1939, Colossus del 1944, Harvard Mark I del 1944, Z4 del 1945, ENIAC del
1946). I computer necessitavano per di essere programmati manualmente spostando
interruttori e spinotti!



Figura 2.2. A sinistra una rara fotografia dello Z1, costruito da Konrad Zuse nel 1938 nel
soggiorno della casa dei suoi genitori. A destra una fotografia di Zuse negli anni 50.







Figura 2.3. Una fotografia dellENIAC (a sinistra) e una fotografia dellEDVAC (a destra)
con degli scienziati al lavoro. Si notino le dimensioni di questi computer.



Solo con il computer EDVAC, progettato nel 1945 sotto la supervisione di John Von
Neumann e realizzato nel 1949, si ha finalmente un computer dove il programma da
eseguire poteva essere inserito nella memoria cos come si faceva con i dati. (Vedi
figura 2.3.)
Negli anni 50 nacquero i primi computer commerciali, grandi come stanze e molto
costosi, comprati dai grandi istituti di ricerca. Durante gli ultimi anni 50 e gli anni 60,
grazie allinvenzione del transistor e allaffermarsi dei primi linguaggi di
programmazione di alto livello (FORTRAN, COBOL, BASIC, ), i computer divennero
pi piccoli (come armadi), relativamente facili da usare e si diffusero quindi in tutte le
grandi aziende e le maggiori universit. Il maggior produttore era lIBM che nel tempo
rimasto uno dei maggiori innovatori e leader del mercato.

Dalla fine degli anni 60 e nella prima met degli anni 70 ci fu un grande salto
tecnologico grazie allinvenzione dei circuiti integrati (detti microchip o semplicemente
chip), che permisero di avere potenze di calcolo maggiori in un minor volume, e grazie
alla comparsa del sistema operativo UNIX e del linguaggio C. (Vedi figura 2.4.)





Figura 2.4. A sinistra uno dei pi noti computer commerciali degli anni 60 e 70, lIBM
System/360 (modello 44). A destra un famosissimo computer commerciale degli anni 80,
il Digital VAX 11/780; quelle piccole macchine dotate di tastiera e monitor sono i terminali
che venivano usati per accedere al computer vero e proprio.


Una famoso produttore di computer che nasce in questi anni la Digital.
Fanno la loro comparsa anche i primi computer con dimensioni simili a quelle dei
personal computer odierni, come litaliano Olivetti Programma 101. Unaltra grande
rivoluzione tecnologica ci fu nei primi anni 70 quando i ricercatori dellIntel
inventarono la memoria RAM e i microprocessori.
La strada per lo sviluppo dei personal computer era ormai spianata. Da ricordare lo
Xerox Alto del 1972 che introdusse linterfaccia grafica e la scheda di rete, lApple II
del 1976 che fu il primo con monitor a colori, lo Xerox Star del 1981 che introdusse il
mouse, lhard disk di serie e uninterfaccia grafica basata sul concetto di desktop,
come nei moderni sistemi operativi. (Vedi figura 2.5.)





Figura 2.5. A sinistra lo Xerox Alto (1972). In alto a destra lo Xerox Star (1981). In basso
a destra lIBM 5150 (1981), meglio noto come PC (Personal Computer).


Negli anni 80 ci fu la vera alfabetizzazione informatica. Nel 1981 nacque il primo
Personal Computer (PC) IBM (vedi figura 2.5) da cui discendono la maggior parte dei
computer desktop moderni. La realizzazione del sistema operativo di questi computer
fu affidata alla Microsoft, che realizz lMS-DOS. In questi anni comparirono anche
molti computer giocattolo, basti ricordare il Commodore 64. I computer erano
oramai entrati nelle case di milioni di persone in tutto il mondo.
Negli anni successivi fino ai giorni nostri, la tecnologia, sia hardware che software, ha
fatto passi da gigante, soprattutto grazie alla spinta del mercato. In questo periodo ci
sono principalmente tre fatti da ricordare: la nascita di Internet, la nascita del WEB e
infine la nascita del software libero, in particolare dei sistemi operativi basati su Linux.
Attualmente i computer e la loro possibilit di interconnessione e quindi scambio di
informazioni hanno letteralmente invaso la nostra vita. Basti pensare che i moderni
telefoni cellulari, detti smartphone, sono in realt dei computer a tutti gli effetti.

Qui si conclude il nostro breve excursus sulla storia del computer. Abbiamo visto
che nel corso della storia limplementazione fisica del computer variata con il
progredire della tecnologia dando luogo a computer profondamente diversi dal punto
di vista del meccanismo di funzionamento (meccanici, elettromeccanici ed elettronici),
della modalit di rappresentazione delle informazioni (analogica e digitale) e di altre
loro caratteristiche (architettura interna, programmabilit, ecc.). Ricordiamo di nuovo
che al giorno doggi, ci si riferisce comunemente al computer come a un dispositivo
elettronico, digitale, programmabile e a scopo generico costruito secondo la cosiddetta
architettura di von Neumann.
2.4 I computer sanno lavorare solo con i numeri!

importante dire fin da subito che i computer possono lavorare solo con dei numeri.
Per esempio quando guardate un video con il vostro computer, ci che accade che
delle lunghissime sequenze di numeri vengono elaborate e inviate alla scheda video
la quale in grado di trasformarli in segnali adatti per il vostro monitor. Alcuni di
questi numeri sono le coordinate cartesiane dei punti dello schermo mentre altri
numeri rappresentano il colore di questi punti.

In particolare, per motivi costruttivi, molto pi facile creare dei computer che usano
dei numeri in forma binaria. Infatti molto pi semplice realizzare dispositivi che
abbiano solo due simboli anzich, per esempio, 10 simboli. Immaginate infatti di
avere un circuito elettrico. Il passaggio di corrente indicher un simbolo, il non
passaggio di corrente indicher un altro simbolo. Come vedete abbiamo due stati a
disposizione che potremmo chiamare per comodit 1 e 0. Se avessimo voluto avere
10 simboli come nel sistema decimale (che poi avremmo chiamato 0, 1, 2, 3, 4, 5, 6,
7, 8, 9), saremmo stati in difficolt perch avremmo dovuto avere 10 livelli di corrente
diversi! Questo in teoria possibile ma in pratica pu generare molte difficolt perch
la presenza di disturbi potrebbe confondere uno stato con un altro!
Vedremo un po di matematica del sistema binario nel prossimo capitolo. Per ora basti
sapere che ogni cifra in un sistema a due stati, viene chiamata bit, contrazione
dallinglese binary digit (cifra binaria). Linsieme di 8 cifre binarie,8 bit, prende il
nome di byte. Il simbolo per indicare il bit b mentre il simbolo per indicare il byte
B.

2.5 Un ripasso delle unit di misura

Nello studio dellinformatica, cos come di qualsiasi altra scienza, fondamentale
conoscere e saper gestire le varie unit di misura che si incontrano e i vari prefissi
moltiplicativi. In questo semplice corso di informatica incontreremo solo due
grandezze fisiche, il tempo e la frequenza. Quindi ci serviranno solo due unit di
misura.

2.5.1 I fenomeni periodici

Un fenomeno periodico un fenomeno che si ripete uguale a s stesso a intervalli
uguali di tempo. Lintervallo di tempo che impiega il sistema a compiere un ciclo si
chiama periodo. Facciamo un esempio: in un orologio analogico, la lancetta dei
secondi compie un moto circolare periodico. Il tempo che impiega a ritornare nella
posizione di partenza, cio il tempo per fare un giro completo, il periodo di rotazione
ed pari a 60 secondi (60 s in forma abbreviata). La frequenza indica invece quante
volte un fenomeno si ripete in un certo intervallo di tempo.
Facciamo degli esempi. Il battito cardiaco di una persona a riposo di circa 1 battito
al secondo. Invece di scrivere al secondo si usa il termine hertz, abbreviato Hz.
Facciamo un altro esempio. Lalbero motore di una autovettura accesa, senza spingere
lacceleratore, compie circa 1800 giri al minuto. Con un semplice calcolo (provateci da
soli!) si ottiene che i giri al secondo sono 300. Pertanto possiamo affermare che la
frequenza di rotazione dellalbero motore di 300 Hz.

Un ultimo esempio. La lancetta dei secondi, come avevamo visto, ha un periodo di
60 s. Quant la frequenza del suo moto? Cio quanti giri fa in un secondo. In un
secondo la lancetta fa solo 1/60 di giro! Quindi diremo che la frequenza 1/60 Hz
oppure, in forma decimale, 0.0166 Hz. Da questi esempi si intuisce che la frequenza
linverso del periodo, cio, in forma di equazione:

= 1/

Vedremo in questo capitolo che la frequenza una grandezza fisica importantissima
per comprendere il funzionamento di un computer. Infatti tutte le operazioni di un
computer sono temporizzate, cio ogni parte del computer esegue unoperazione ogni
volta che riceve un impulso elettrico particolare, chiamato clock. Questo segnale
periodico ed composto di svariati milioni o miliardi di impulsi al secondo!

Tabella 2.1. Tabella con i prefissi che indicano i multipli e i
sottomultipli delle unit di misura
tera T 10^12 (1000 miliardi)
giga G 10^9 (1 miliardo)
mega M 10^6 (1 milione)
kilo k 10^3 (mille)
milli m 10^3 (1 millesimo)
micro 10^6 (1 milionesimo)
nano n 10^9 (1 miliardesimo)
pico p 10^12 (1 millesimo di miliardesimo)


2.5.2 I prefissi

In tutte le scienze e non solo, quando i numeri che esprimono una grandezza sono
troppo grandi o troppo piccoli per essere usati in maniera comoda, si preferisce usare
un prefisso che indichi i multipli e i sottomultipli dellunit di misura, in modo da avere
una parte numerica pi comoda da scrivere. Facciamo un esempio. Tutti noi
conosciamo i metri e i kilometri. Un kilometro corrisponde a 1000 metri.
I kilometri vengo usati quando si parla di lunghe distanze: invece di dire che abbiamo
percorso 230000 m molto pi semplice dire che si sono percorsi 230 km. I metri si
indicano con m e i kilometri con km. La lettera k sta per kilo e significa mille volte pi
grande. Infatti come tutti sappiamo 1 km sono 1000 m. Oltre al kilo che abbiamo
appena visto, esiste tutta una serie standard di prefissi per le unit di misura. Alcuni
dei prefissi pi importanti sono riportati in Tab. 2.1.
Facciamo un piccolo esercizio dove compaiono i prefissi moltiplicativi. Supponiamo
che la nostra linea ADSL abbia una velocit di 2 Mb/s: significa che possiamo scaricare
(se non ci sono altri problemi) 2 milioni di bit al secondo. Considerando che una
canzone presa da internet in formato mp3 pu essere di circa 3 MB (3 megabyte),
vogliamo sapere il tempo necessario a scaricare questa canzone. Prima di tutto
trasformiamo la velocit della nostra ADSL da bit a byte. Basta dividere per 8, perch,
ricordiamolo, un byte sono 8 bit. Pertanto la velocit della nostra ADSL sar di

2 Mb/s / 8 = 0.25 MB/s

Ora, per conoscere il tempo necessario a scaricare la canzone dobbiamo dividere la
dimensione del file della canzone per la velocit di trasferimento:

= dimensione file / velocit di scaricamento

3 MB/0.25 MB/s = 12 s

Quindi per scaricare quella canzone da 3 MB avremo bisogno di almeno 12 s con la
nostra linea ADSL.











Figura 2.6. Schema dellarchitettura di von Neumann. I componenti fondamentali sono
CPU e memoria centrale, quelli opzionali sono i sistemi di input e output. Questi componenti
sono connessi tra loro tramite un sistema di comunicazione apposito chiamato BUS.


CPU
BUS
MEMORIA
SISTEMI
I/O
2.6 Architettura di Von Neumann

Passiamo ora a spiegare come fatto un computer e di quali parti si compone.
Praticamente tutti i moderni computer di uso comune sono progettati secondo uno
schema (architettura) detto architettura di Von Neumann inventata nel 1945 dal
matematico John von Neumann e dal suo gruppo.

Lo schema, mostrato in Fig 2.6, si basa su cinque componenti fondamentali:

La CPU, che si divide a sua volta in
Unit di controllo
Unit operativa, nella quale uno dei sottosistemi pi rilevanti lALU
(Arithmetic Logic Unit)
Registri della CPU
La memoria centrale, intesa come memoria di lavoro o memoria principale
contenente sia i dati che i programmi attualmente in uso
Unit di input, tramite la quale i dati e/o i programmi vengono inseriti nel
calcolatore per essere elaborati
Unit di output, necessaria affinch i dati elaborati possano essere restituiti
alloperatore
Bus, uno o pi canali di comunicazione che collegano i componenti fra loro

importante sottolineare che tale architettura, a differenza di altre, si distingue per la
caratteristica di immagazzinare allinterno dellunit di memoria, sia i dati che i
programmi in esecuzione. In poche parole si dice che le istruzioni dei programmi sono
a loro volta dei dati.

Unultima nota: quando si parla di memoria centrale si usa laggettivo centrale per
distinguere questa memoria (che di solito una RAM) da altri tipi di memoria, come
per esempio gli hard disk che invece sono dei componenti opzionali e pertanto
rientrano nella categoria dei dispositivi di I/O.
2.7 La CPU

La CPU (dallinglese Central Processing Unit, Unit centrale di elaborazione) uno
dei componenti fondamentali di un computer. Viene spesso chiamata anche
processore o microprocessore. il componente che esegue le istruzioni del
programma. Possiamo immaginarlo come il cervello del computer.
composta di varie parti al suo interno. C lunit di controllo, che legge e scrive i
dati dalla memoria (dove con dati si intende anche il programma da eseguire),
interpreta le istruzioni da eseguire e le esegue, facendosi aiutare da un altro
componente della CPU, lALU (in inglese Arithmetic Logic Unit) che si occupa di
eseguire tutte le operazioni logiche e matematiche. Infine ci sono i registri che non
sono nientaltro che una minuscola memoria per immagazzinare i dati temporanei o
gli indirizzi di memoria su cui si dovr operare. Ogni operazione eseguita dalla CPU si
divide in un certo numero di passi elementari. Viene fatto un passo ogni volta che la
CPU riceve un impulso dallesterno. Questo impulso dallesterno chiamato
segnale di clock o semplicemente clock e arriva a intervalli di tempo regolari. Pertanto
pi alta sar la frequenza del segnale di clock, cio pi alto sar il numero di impulsi
di clock che arrivano alla CPU, pi veloce sar lesecuzione di un programma.
Oggigiorno le migliori CPU possono funzionare a frequenze di clock di circa 3 GHz, cio
3 miliardi di impulsi al secondo! Il segnale di clock viene generato da un componente
apposito che si trova sulla scheda madre.



Facciamo un piccolo esempio di operazione elementare della CPU. Lunit di controllo
della CPU legge in uno dei registri lindirizzo dellistruzione da eseguire e la memorizza
in un altro registro.
Supponiamo che tale istruzione sia (scritta in forma pi chiara e non in binario!)
ADD 7A3, 8A7, B92
Lunit di controllo della CPU capisce che deve fare una somma tra due numeri che
sono memorizzati negli indirizzi 7A3 e 8A7 della RAM. Lultimo indirizzo, B92, sar
invece lindirizzo della RAM dove bisogna mettere il risultato. Lunit di controllo
prende allora i due numeri contenuti nelle celle di memoria RAM 7A3 e 8A7 e li
memorizza in due registri liberi della CPU, facciamo finta siano il registro 3 e 4. Poi
ordina alla ALU della CPU di eseguire la somma dei due numeri contenuti nei registri 3
e 4, e che il risultato sia memorizzato in un registro libero, per esempio il 5. Appena
lALU avr finito di fare ci che gli stato chiesto, lunit dei controllo della CPU
terminer il suo lavoro copiando il contenuto del registro 5, quello contenente il
risultato della somma, nellindirizzo di memoria RAM B92. Fatto questo, listruzione
stata completata e si potr passare allistruzione successiva.



La maniera in cui viene effettivamente costruita la CPU affinch possa eseguire le
varie istruzioni viene detta microarchitettura. Una certa microarchitettura
caratterizzata da un determinato insieme di istruzioni (instruction set) che la CPU pu
eseguire. Tra le caratteristiche di una microarchitettura c anche la dimensione
naturale di dati che viene normalmente usata per varie attivit. Questa dimensione
si chiama word (parola) e nelle CPU attuali solitamente di 32 bit o 64 bit.
Facciamo degli esempi per capire limportanza della word. Ogni istruzione che riceve la
CPU composta da una o pi word. La quantit di dati contenuta nei registri
corrisponde a una word. La quantit di dati trasferiti dalla memoria centrale alla CPU
di una word per ogni trasferimento. Il numero di bit usati per rappresentare i numeri,
interi o con la virgola, di una word o di un multiplo di essa. Ma la cosa pi
importante dire che gli indirizzi della memoria centrale sono numerati con un
numero di bit pari a una word. Se la word quindi di 32 bit, al massimo la CPU potr
vedere 2^32 caselle di memoria (ricordate che una casella di memoria corrisponde a
un byte). Pertanto un sistema a 32 bit potr montare al massimo 2^32 byte di
memoria, cio circa 4 GB. Questo uno dei principali motivi per cui negli ultimi anni si
sta passando a CPU a 64 bit. Una CPU a 64 bit pu infatti indirizzare fino a 264 caselle
di memoria, quindi per un massimo di ben 16 miliardi di GB!!!








2.8 La memoria centrale

La memoria centrale un altro componente fondamentale del computer. Secondo
larchitettura di Von Neumann, la memoria centrale gioca un doppio ruolo. Contiene
sia i dati che servono alla CPU, sia il programma che si sta eseguendo. In altri tipi di
architetture particolari esiste invece una memoria per contenere il programma e una
memoria per contenere i dati. In generale le memorie sono composte da tante
minuscole cellette, ognuna delle quali pu trovarsi in due stati, carico e scarico. Avete
gi capito che questi due stati verranno usati per rappresentare le cifre 0 e 1.
Attualmente la memoria centrale di ogni computer una memoria di tipo RAM.

2.8.1 La RAM

La tipica memoria centrale usata nei computer una RAM (dallinglese Random Access
Memory, memoria ad accesso casuale). Il termine random (casuale) dovuto al fatto
che accedere a unarea o a unaltra di questa memoria non comporta differenze di
velocit. La RAM pu essere sia letta che scritta. Quando si spegne il computer o in
generale si stacca la corrente, tutto il contenuto della RAM viene perso. Una memoria
che si comporta in questo modo viene detta volatile. Le RAM si dividono a sua volta in
statiche e dinamiche. Praticamente tutte le RAM usate nei computer comuni sono
dinamiche. Questo tipo di RAM meno costoso delle RAM statiche ma le cellette di cui
composta la RAM dinamica tendono a scaricarsi con il tempo. Pertanto, per evitare
che il computer perda le informazioni durante il suo funzionamento e quindi si blocchi,
la memoria RAM dinamica deve essere rinfrescata a intervalli di tempo regolari
(circa ogni 64 ms, cio con una frequenza di 15 Hz).
Per accedere ai dati contenuti nella RAM, la CPU assegna a ogni celletta un indirizzo,
proprio come i numeri civici delle strade che vengono usati per identificare le varie
case. In realt le cellette non sono numerate una per una ma sono numerate a gruppi
di 8: un indirizzo ogni 8 cellette, cio ogni 8 bit (1 byte).
La quantit di dati che pu contenere la RAM si misura in byte e nei computer moderni
questa quantit varia solitamente da 1 GB fino a 8 GB.
2.9 La scheda madre e i BUS

La CPU, la memoria e tutte le periferiche di input/output sono connesse tra loro
attraverso la scheda madre. Le connessioni fisica tra la scheda madre e gli altri
componenti avviene in vari modi: tramite degli zoccoli, detti socket (CPU), tramite
delle apposite fessure, dette slot, (memoria, schede varie), tramite dei cavi (hard
disk, drive ottico, ecc.) o tramite delle porte esterne (tastiera, mouse, chiavette USB,
ecc.).
La scheda madre contiene i BUS, cio i canali di comunicazione tra le varie parti del
computer e ne regola le comunicazioni. Ricordiamo che i BUS sono uno degli elementi
fondamentali dellarchitettura di von Neumann. La scheda madre contiene anche uno
o pi generatori di clock, la ROM contenente il BIOS e un orologio sempre in funzione,
alimentato da una batteria interna.
Fino alla fine degli anni 80 il BUS del computer era solamente uno e tutti i
componenti funzionavano alla stessa frequenza di clock. Con il tempo le CPU e le
memorie diventavano sempre pi veloci, cio potevano funzionare a frequenze di
clock sempre maggiori, al contrario degli altri componenti del computer. Per questo
motivo si cominci a suddividere il computer in diverse zone, che funzionavano a
frequenze di clock diverse: la zona della memoria e della scheda video che hanno
delle velocit di trasferimento di dati molto elevate e funzionano con una frequenza di
clock simile a quella del generatore del clock; la zona della CPU e dei suoi componenti
interni che funzionano a velocit molto pi elevate e con una frequenza di clock
aumentata di circa 10 volte; infine la zona che gestisce linput/output che funziona pi
lentamente delle altre due.

Il passaggio di dati nella scheda madre da un componente allaltro comandato dalla
CPU ma messo in pratica da un particolare circuito integrato, chiamato chipset, che
possiamo immaginare come un ufficio postale velocissimo; solitamente diviso in due
zone, MCH e ICH. Quando, per esempio, la CPU vuole mandare dei dati alla RAM, li
invia prima al chipset che poi li gira alla RAM facendoli passare per il BUS giusto. Il
parametro fondamentale che distingue un BUS da un altro la velocit di
trasferimento dati. Pi alta meglio . Questa grandezza si misura in byte al secondo,
abbreviato B/s. Le velocit in gioco possono essere molto diverse a seconda del
BUS. Una importante caratteristica di un BUS lessere o meno Plug&Play. Il
Plug&Play (dallinglese collega e usa) un termine usato per descrivere la capacit di
un BUS di facilitare il riconoscimento e il corretto indirizzamento di una periferica,
senza dover agire manualmente. In pratica significa che basta collegare la periferica al
computer e questa sar configurata automaticamente e pronta alluso senza
lintervento dellutente.
PCI Express, PCI, USB sono tutti BUS Plug&Play.

Tra le porte esterne del computer ricordiamo la porta USB usata per connettere una
moltitudine di periferiche e luscita video (VGA o DVI) che serve a collegare il monitor.
Esistono molte altre porte, alcune quasi non pi usate come la porta seriale o altre
meno usate come la porta firewire o e-sata. Tra gli slot interni avremo sicuramente il
socket per alloggiare la CPU, varie slot per alloggiare la RAM, vari connettori per
collegare i cavi dei dati degli hard-disk e dei drive ottici e poi una serie di slot PCIe per
connettere schede adibite a compiti specifici. Tra queste schede figura la scheda video
e la scheda audio ma esistono migliaia di tipi di schede diverse. Basti pensare alle
schede che servono al computer per poter controllare dei macchinari esterni. Per
esempio una scheda che controlli il macchinario che fa le radiografie in un ospedale, la
scheda che controlla il macchinario per il test delle centraline delle autovetture di un
meccanico, la scheda che controlla un qualsiasi macchinario industriale e cos via.

Per completezza va detto che le schede di espansione di un computer, come per
esempio la scheda audio e la scheda video, sono degli adattatori (adapter). La loro
funzione quella di tradurre i dati da una forma a unaltra. Per esempio un adattore
grafico non nientaltro che un modo per passare dai dati che rappresentano delle
immagini ai segnali elettrici necessari a un monitor per rappresentare quelle immagini.
In realt le schede video, audio e anche altre non sono solo dei traduttori di segnali
da una forma a unaltra.
Molti di queste schede sono dotate di un co-processore che viene sfruttato dalla CPU
per demandare dei calcoli specifici. Per esempio tutti sanno che le schede grafiche
sono dotate di una o pi GPU (Graphic Processing Unit), cio dei processori studiati
appositamente per fare calcoli di grafica.




2.9.1 Il firmware, le ROM e il BIOS

Con il termine firmware si indica un programma che inizializza e prepara un certo
dispositivo elettronico per le condizioni di normale funzionamento e lo gestisce
secondo gli input esterni. Questo programma fa parte del componente elettronico
stesso. Oggigiorno praticamente tutti i dispositivi elettronici sono dotati di un
firmware.
La lavatrice, la TV, un lettore MP3, una radiosveglia, sono tutti esempi di apparecchi
dotati di firmware.

I firmware sono contenuti allinterno di memorie non-volatili, cio che mantengono i
dati memorizzati anche in assenza di alimentazione, e solitamente sono avviati non
appena il dispositivo in cui si trovano viene alimentato. Le memorie che contengono il
firmware sono chiamate ROM, cio memorie di sola lettura (dallinglese Read Only
Memory). Oggigiorno per, sebbene si continui a usare il termine ROM, le memorie
usate per contenere il firmware di un dispositivo possono essere riscritte (per esempio
per aggiornare il firmware!). Queste ROM riscrivibili sono delle EEPROM o delle
memorie FLASH. Le memorie FLASH sono usate anche in molti altri ambiti e infatti ne
riparleremo in seguito.

Anche i computer hanno bisogno di un firmware. Il firmware dei computer domestici
chiamato BIOS, contenuto in una ROM sulla scheda madre e viene avviato
allaccensione. Si occupa di eseguire tutta una serie di test per verificare il corretto
funzionamento dellhardware, esegue i firmware di tutti i componenti del computer
che ne sono provvisti (schede video, ecc...), mostra sullo schermo le informazioni
sulla quantit di memoria centrale e su altre caratteristiche del computer, esegue
varie configurazioni sulla gestione dellhardware (che possono essere cambiate anche
dallutente) e infine avvia, se disponibile, il programma che si trova nella prima
sezione di ununit esterna, solitamente lhard-disk.
Questo piccolissimo programma che si trova nella parte iniziale del disco si chiama
bootloader ed colui che si occuper di avviare il sistema operativo.
2.10 Le periferiche di input/output

2.10.1 Lhard disk (disco rigido)

Lhard disk una periferica di input/output del computer. E pu contenere enormi
quantit di dati, da qui il nome di memoria di massa. Il nome deriva dal fatto
che allinterno ci sono uno o pi dischi (di vetro o alluminio) ricoperti di materiale
ferromagnetico in rapidissima rotazione. La superficie di questo disco idealmente
divisa in tante piccole cellette e delle testine estremamente piccole, possono
magnetizzare
queste cellette in due modi diversi, a cui si assegna, come avrete immaginato,
i valori convenzionali di 0 e 1 del sistema binario.
La capacit di memorizzare dati in un hard disk si misura in byte e gli hard disk
tipici montati attualmente nei computer vanno da diverse centinaia di GB a qualche
TB. La velocit di un hard dipende da quanto velocemente ruotano i dischi e da
quanto velocemente si possono spostare le testine. In confronto alla memoria RAM,
lhard disk molto lento.
2.10.2 Le memorie flash

Le memorie flash sono delle periferiche di input/output. Una memoria flash un
particolare tipo di memoria non-volatile composta da tanti piccoli transistor che
necessitano di semplici segnali elettrici sia per essere letti che scritti. Le chiavette (o
pennette) USB sono memorie flash, cos come alcune ROM usate per i firmware, e cos
anche le schede SD, microSD, eccusate in telefoni cellulari o macchine fotografiche
digitali. Le dimensioni tipiche massime delle memorie flash sono di circa 64 GB.
Ultimamente per si sta anche cercando di sostituire lhard disk con delle memorie
flash con capacit simili. Questi dispositivi sono chiamati Solid State Drive, cio unit
a stato solido, e hanno il vantaggio, rispetto allhard disk di non avere alcuna parte in
movimento, di essere pi veloci e di consumare molto meno. Il problema per il
costo, per ora troppo elevato.

2.10.3 I drive ottici e i dischi ottici

I dischi ottici sono delle memorie di massa per memorizzare dati, ne esistono di
diversi tipi:

Compact Disc (CD),
Digital Versatile Disc (DVD),
Blu-ray Disc (BD).

Il loro diametro standard di 12 cm. Vengono letti dai computer con degli appositi
lettori chiamati ovviamente Lettore CD, Lettore DVD, e cos via, generalmente
chiamati drive ottici. Un Lettore BD potr leggere sia DVD che CD, un Lettore DVD
potr leggere anche DVD, mentre un Lettore CD legge solo CD.

Questo tipo di memoria composta da un disco plastico rigido, un sottile disco
metallico riflettente e altri strati protettivi. Il disco viene diviso idealmente in tante
cellette, ognuna delle quali pu riflettere o meno la luce. La luce che viene usata
luce laser (rossa per il CD e DVD, blu per il blue ray). Il termine disco ottico viene
proprio dal fatto che viene usata della luce.

Usando dischi scrivibili (R) o riscrivibili (RW) e drive appositi, detti masterizzatori,
possibile scrivere dati oltre che leggerli. Quando si in fasi di scrittura il laser
aumenta la sua pontenza fino a bruciare (in inglese burn) alcune cellette cambiando
la loro riflettivit e quindi i dati. La dimensione dei dati che pu contenere un disco
ottico va dai 700 MB di un CD ai 4.7 GB di un DVD single layer ai 25 GB di un BD
single layer.

2.10.4 La cache

La cache (dal francese nascosto) una memoria simile alla RAM ma molto pi veloce
(e costosa). Non una periferica ma in pratica una memoria di supporto che si trova
in moltissimi componenti. C una cache nella CPU, c una cache negli hard disk e
cos via. In pratica una memoria che serve a velocizzare certe operazioni senza
andare a disturbare la memoria RAM. Per questo motivo anche chiamata memoria
tampone o, in inglese, buffer. Si faccia molta attenzione! La memoria cache, al
contrario della RAM, non fa da memoria centrale! solo una memoria di supporto!
La dimensione della cache solitamente di qualche decina di kB (nelle CPU) o al
massimo di qualche MB (negli hard disk). La sua migliore velocit dovuta al fatto
che direttamente collegata al componente che deve aiutare. I dati non devono
passare per un BUS per raggiungere la memoria cache come invece succede per la
memoria RAM.

2.10.5 Tastiera, mouse, touchpad,

Tastiera, mouse, touchpad sono delle periferiche di input. Servono allutente per
interagire con il computer, in particolare con il sistema operativo.

La tastiera serve per immettere del testo. Le tastiere si distinguono principalmente per
la disposizione e il tipo di caratteri che sono prestampati sui tasti. Ognuna di queste
configurazioni viene chiamata layout di tastiera. Per esempio esiste la tastiera con il
layout italiano, la tastiera con il layout americano, ecc. C anche la possibilit che i
caratteri sulla tastiera siano gli stessi ma siano in posizioni diverse:
quasi tutte le tastiere con caratteri latini sono tastiere QWERTY (guardate la prima
riga di lettere a sinistra nella vostra tastiera) anche se esistono altre disposizioni,
come la tastiera DVORAK.

Il mouse serve per muovere e far compiere delle azioni a un puntatore sullo schermo,
rappresentazione ideale di un nostro dito. Il mouse dotato di uno o pi tasti per
differenziare le azioni che pu compiere il puntatore. Dispositivi analoghi al mouse
sono il touchpad, la tavoletta grafica e, in un certo senso, il touchscreen.

2.10.6 Il monitor

Il monitor la periferica di output per eccellenza. Permette al computer di creare in
maniera estremamente veloce (al contrario della stampante, per esempio) delle
rappresentazioni grafiche bidimensionali, molto utili allutente per interagire facilmente
con il computer. Lo schermo del monitor si divide in tanti quadratini, chiamati pixel,
ognuno dei quali diviso a sua volta in tre subpixel. Da questi subpixel pu filtrare la
luce rispettivamente rossa, blu e verde. Laccensione dei pixel comandata dai
segnali che arrivano in ingresso al monitor e che sono inviati dalla scheda video.
La scheda video si occupa infatti di tradurre i dati in formato binario che descrivono le
immagini da mostrare (elaborati dalla CPU) in segnali comprensibili dal monitor. Per
questo motivo a volte le schede video vengono chiamate video adapter.

Chiaramente si capisce che, a parit di dimensioni delle schermo, tanto pi alto sar il
numero di pixel, tanto pi definita potr essere unimmagine. Con il termine
risoluzione dello schermo si indicano le dimensioni dello schermo espresse come
numero di pixel. Per esempio uno schermo con una risoluzione di 1280 800, un
monitor che ha 1280 pixel sul lato orizzontale e 800 pixel sul lato verticale. Il numero
totale dei pixel sar il prodotto di questi due numeri: 1280 800 = 1024000 pixel.

La dimensione del monitor viene espressa, come per i televisori, tramite la lunghezza
della diagonale dello schermo, solitamente espressa in pollici anzich in centimetri (1
pollice sono circa 2.54 cm). Si usa la diagonale perch non tutti i monitor hanno la
stessa forma. Il rapporto tra larghezza e altezza, chiamato fattore di forma, pu infatti
variare. Tipici rapporti sono 4:3 e 16:9.

Esistono tipicamente due tipi di monitor: CRT e LCD (display a cristalli liquidi).
Nei vecchi CRT un fascio di elettroni veniva sparato sui pixel scorrendoli uno a uno per
attivarli, componendo quindi limmagine. Oggigiorno quasi tutti i monitor sono invece
LCD, cio a cristalli liquidi, che possiamo immaginare come dei filtri di luce. Sul retro
ci sono delle lampade o dei LED sempre accesi che fanno da sorgenti di luce. Le
immagini vengono composte agendo sui cristalli liquidi che compongono i pixel,
permettendo alla luce di filtrare pi o meno intensamente. Ultimamente si stanno
affacciando sul mercato anche nuovi monitor basati su una nuova tecnologia,
chiamata OLED, dove sono i pixel stessi a emettere luce.

2.10.7 La stampante

La stampante una periferica di output che stampa su carta o altri supporti del testo
o delle immagini.
Esistono principalmente due tipi di stampanti: a getto dinchiostro e laser. Entrambe
possono stampare solo in bianco e nero oppure a colori. Un parametro importante che
distingue una stampante dallaltra la risoluzione di stampa, cio quanti punti al
massimo possono essere stampati in una certa unit di lunghezza. Questa quantit
viene espressa solitamente in DPI, dot per inch, e rappresenta appunto il numero di
punti che la stampante pu stampare al massimo in un pollice (1 pollice corrisponde a
2.54 cm). Una risoluzione di stampa amatoriale pu essere 300 dpi per il testo e 600
dpi per le immagini. Una risoluzione professionale pu arrivare anche a 2400 dpi o
pi.
Le stampanti possono essere connesse direttamente al PC, tramite per esempio porte
USB, ma possono anche essere messe in una rete di computer. I dati da inviare alla
stampante vengono tradotti dal driver della stampante, un software che sa tradurre i
dati del computer in dati adatti a essere capiti dalla stampante. Tra questi linguaggi
parlati dalle stampanti ne ricordiamo due molto famosi: il linguaggio PostScript e il
PCL.

2.10.8 Lo scanner

Lo scanner una periferica di input. La sua funzione quella di digitalizzare le
immagini, cio passare da una fotografia o un testo stampato su carta a un insieme di
dati digitali che rappresentano quella fotografia o quel testo in un computer. In pratica
svolge la funzione inversa della stampante.
Lo scopo molto simile a quello di una fotocamera digitale. La differenza che la
fotocamera digitalizza unimmagine dellambiente circostante mentre lo scanner pu
digitalizzare solo immagini stampate. Un parametro importante che distingue uno
scanner dallaltro la risoluzione di scansione, cio quanti punti pu usare al massimo
lo scanner per rappresentare una segmento di lunghezza data. Questa quantit viene
espressa solitamente in DPI, dot per inch, e rappresenta appunto il numero di punti
che lo scanner pu usare per rappresentare un segmento lungo un pollice (1 pollice
corrisponde a 2.54 cm). Una risoluzione per la scansione amatoriale circa 300 dpi
per il testo e 600 dpi per le immagini. Una risoluzione professionale pu arrivare
anche a 2400 dpi o pi.


2.11 Linvolucro e lalimentazione

Linvolucro che contiene i componenti principali di un computer non portatile si chiama
case (ma a volte si usano anche i termini cabinet e chassis) e solitamente ha la forma
di un parellelepipedo. Quando il parallelepipedo si sviluppa orizzontalmente allora si
parla di case di tipo desktop mentre se si sviluppa verticalmente allora si parla di case
di tipo tower.
Il case contiene la scheda madre e i componenti che sono direttamente connessi ad
essa (CPU, memoria centrale, schede varie), contiene anche una o pi memorie di
massa (hard disk, drive ottici, ecc) connesse con dei cavi alla scheda madre.

Allinterno si trova anche lalimentatore, un apparecchio che con degli appositi cavi,
fornisce lenergia elettrica a tutti i componenti del computer. Oltre a quella di
involucro, il case svolge anche una funzione di raffreddamento del computer. Tutti i
componenti elettronici, quando sono in funzione, sprecano dellenergia elettrica che
quindi si trasforma in calore (energia termica). Questo calore deve essere eliminato
perch, se la temperatura di qualche componente sale troppo, allora si possono avere
dei blocchi del computer se non addirittura una vera e propria rottura.
Il raffreddamento tipicamente realizzato tramite delle ventole. In alcuni casi dove il
calore sviluppato poco non si usano ventole ma sufficiente la quantit di calore
trasmessa verso lesterno dal metallo del case. In altri casi invece dove il calore
sviluppato molto alto, si usano un raffreddamento ad acqua.































Capitolo 3
La rappresentazione dei dati


3.1 Qual e il problema?
I computer possono usare solo sequenze di s-no, di alto-basso, di vero-falso.
Insomma qualcosa che sia identificabile solo come 1 e 0. Per questo motivo bisogna
trovare il modo di rappresentare tutti i dati, siano essi numeri, lettere, immagini,
suoni, sotto forma di numeri, in particolare facendo uso solo di due cifre! Prima di
affrontare il problema della codificazione dei dati in 1 e 0, studiamo un po di
matematica di base del sistema binario.
3.2 Il sistema binario

Uno stesso numero pu essere rappresentato in molti modi diversi. Comunemente si
usa il sistema decimale, che un sistema di numerazione posizionale basato su 10
simboli diversi (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), chiamati cifre. Posizionale significa che il
valore della cifra diverso a seconda della posizione che occupa. Facciamo un
esempio.
Il numero 152 nel sistema decimale va inteso come

152 = 1 10^2 + 5 10^1 + 2 10^0 = 100 + 50 + 2

Normalmente gli uomini usano il sistema decimale perch per loro naturale, avendo
10 dita per contare. Ma esistono tanti altri sistemi di numerazione posizionale, con
base diversa dalla base 10: invece di 10 simboli se ne possono usare 2, 3, 16, quanti
ne volete. Proviamo a contare usando solo quattro simboli: 0, 1, 2, 3.

base 10 0 1 2 3 4 5 6 7 8 9
base 4 0 1 2 3 10 11 12 13 20 21


Un sistema di numerazione importantissimo il sistema binario, cio in base 2.
In questo sistema si hanno solo due simboli a disposizione, 0 e 1. Qui di seguito
riportiamo i numeri da 0 a 5 espressi in binario. Provate a completare la tabella,
scrivendo i numeri fino a nove usando il sistema binario, in maniera analoga come
abbiamo fatto poco fa usando la base 4.

base 10 0 1 2 3 4 5
base 2 0 1 10 11 100 101






3.2.1 Da binario a decimale

Se abbiamo un numero espresso nel sistema binario e vogliamo convertirlo nel
sistema decimale, loperazione da fare molto semplice. Baster moltiplicare ogni
cifra per una potenza con un esponente che dipende dalla sua posizione. Prendiamo
per esempio il numero 101011

(101011)2 = 1 2^5 + 0 2^4 + 1 2^3 + 0 2^2 + 1 2^1 + 1 2^0 = 32 + 8 + 2 + 1 = (43)10

Cio il numero 101011 la scrittura in binario del numero 43 nel sistema decimale.

3.2.2 Da decimale a binario

Loperazione per passare dal sistema decimale al sistema binario invece pi
complessa.
Il procedimento da seguire quello di dividere sempre per due il numero di partenza
fino ad arrivare a zero e considerando i resti. Leggendo i resti ottenuti dallultimo al
primo, si ottiene il numero in rappresentazione binaria. Vediamo un esempio.
Vogliamo trovare la rappresentazione binaria del numero 92 del sistema decimale.

resto
92/2 0
46/2 0
23/2 1
11/2 1
5/2 1
2/2 0
1/2 1
0

Ora non ci resta che prendere i resti dallultimo al primo. Il numero 92 del sistema
decimale rappresentato dal numero 1011100 nel sistema binario.

3.2.3 Le operazioni elementari

La somma dei numeri binari molto semplice. Per fare le somme in colonna
sufficiente sapere, come ci si aspetta, che 0 + 0 = 0, che 1 + 0 = 1 e che 1 + 1 = 0
con riporto di 1.

Per quanto riguarda la moltiplicazione anchessa identica a quella che si fa nel
sistema decimale. Basta ricordare, come ovvio, che 0 0 = 0, che 0 1 = 0 e infine
che 1 1 = 1.







3.3 Il sistema esadecimale

Se i computer ragionano sempre in termini di sistema binario, perch parlare di altri
sistemi? Il motivo che per gli umani, scrivere i numeri in binario incredibilmente
lungo, faticoso e molto scomodo. Quando in un programma si vuole scrivere un
indirizzo di memoria, questo sar quasi sempre scritto nel sistema esadecimale (16
simboli). Penser poi un altro programma apposito a trasformare questi indirizzi nel
sistema binario. I 16 simboli del sistema esadecimale sono

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.


3.3.1 Dal binario allesadecimale e viceversa

Dato che 16 multiplo di 2, passare da base 2 a base 16 e viceversa estremamente
semplice. Per passare da base 2 a base 16 sufficiente raggruppare i bit a gruppi di 4
e sostituire ogni gruppo di 4 bit con la corrispondente cifra esadecimale. Per passare
da base 16 a base 2 sufficiente sostituire ogni cifra esadecimale con i 4 bit che la
rappresentano in forma binaria.

3.4 I tipi di dato e le codifiche

Il computer per lavorare sui dati, ha bisogna che questi siano espressi come sequenze
di 1 e di 0. Loperazione di trasformazione dei dati in sequenze di 1 e di 0, cio in
numeri, prende il nome di procedimento di codifica.

In realt il concetto di codificazione precedente alluso dei computer. Basti pensare
al famosissimo alfabeto Morse. Con soli due simboli, corto e lungo, possibile
rappresentare lettere e numeri grazie a opportune sequenze. Il segnale pu poi essere
un segnale elettrico o una luce o un suono. La prima cosa da chiederci quanti bit
servono per rappresentare una certa informazione.

Immaginiamo di voler identificare le dita di una mano. Abbiamo bisogno di 10 codici
diversi, per esempio naturale assegnare a ogni dito un numero, da 0 a 9. Se ora
vogliamo passare ai numeri binari si capisce che avremo bisogno di almeno 4 bit.
Infatti il massimo numero che posso ottenere con 4 bit 1111 che corrisponde al
numero 15. Se avessi usato solo 3 bit al massimo sarei potuto arrivare a 111 che
corrisponde al numero 7. Quindi un numero insufficiente per le 10 dita.

In generale il numero massimo di combinazioni ottenibili con bit 2^. Lalfabeto
latino ha 26 lettere, se volessi assegnare a ciascuna una combinazione di bit diversa,
cio un numero diverso, avrei bisogno di 5 bit, perch 2^5 = 32.

3.4.1 I numeri

La maniera in cui vengono rappresentati i numeri in un computer labbiamo gi vista.
Si tratta solamente di scriverli in rappresentazione binaria.

3.4.2 Le stringhe

Un altro tipo di dato sono i caratteri. Linsieme di pi caratteri forma le cosiddette
stringhe (di testo).
Come memorizzare una poesia in forma di 1 e 0? Loperazione molto semplice.
sufficiente usare una diversa sequenza di bit per ogni lettera o simbolo e il gioco
fatto. Una delle prime tabelle che vennero usate per trasformare i caratteri in
sequenze di 1 e di 0 la codifica ASCII . La codifica ASCII una tabella di
corrispondenza tra simboli e numeri, viene detta infatti codifica dei caratteri.
Comprende 128 simboli, pertanto sono necessari almeno 7 bit per poter avere 128
combinazioni diverse! Infatti 27 = 128.
In realt come detto pi volte, i computer usano sempre 8 bit per volta, cio 1 byte,
pertanto anche per la codifica ASCII usano 8 bit. Dato che il primo bit inutile sar
sempre messo uguale a 0.



Come esercizio provate a creare un file di testo con il blocco note di Windows o in
generale con un editor di testi. Scrivete nel file la parola ciao senza andare a capo e
salvate. Quanto sar la dimensione del file?
La tabella ASCII fu creata sostanzialmente per poter scrivere in inglese. Come potete
notare infatti mancano molti simboli, per esempio la codifica ASCII non sufficiente
per poter scrivere perfettamente in italiano perch mancano le lettere accentate.
Figuriamoci altre lingue come larabo, il cinese, il giapponese, ecc...
Per questo motivo, oggigiorno si usa una tabella molto pi grande, unaltra codifica
dei caratteri, chiamata UNICODE/UTF-8. Contiene tutti i simboli per tutte le scritture
del mondo e non solo. Contiene anche simboli per scrivere la matematica, alfabeti
fonetici, lingue morte, ecc... Il totale dei simboli che pu rappresentare ben 1 114
111. I primi 128 simboli UNICODE/UTF-8 sono identici a quelli dellASCII per motivi di
compatibilit con il passato.

3.4.3 Le immagini

Come possiamo rappresentare un bellissimo panorama con dei semplici 1 e 0?!
Anche in questo caso possibile. La prima cosa da fare dividere limmagine in tanti
quadratini, che prendono il nome di pixel. Una volta specificata la dimensione in pixel
dellimmagine sufficiente elencare in ordine il colore di ogni pixel.
Quindi ora il problema solo quello di rappresentare i colori con dei numeri. noto
che ogni colore pu essere ottenuto dalla mescolazione di tre colori cosiddetti primari:
rosso, verde e blu. La soluzione quindi di dare per ogni pixel la percentuale di rosso,
verde e blu necessaria!
Questo sistema chiamato RGB (da red, green e blu. In realt esistono anche altri
sistemi per rappresentare i colori.)
Chiaramente pi pixel user tanto meglio sar la rappresentazione numerica di
quellimmagine ma tanto pi sar grande il file. Stesso discorso con i colori. Tanti pi
bit user per definire i colori, tanto pi potr essere preciso ma tanto pi verr grande
il file. Solitamente i colori vengono codificati a 24 bit. Cio 8 bit per il rosso, 8 bit per
il verde e 8 bit per il blu. Siccome con 8 bit posso rappresentare al massimo 2^8 =
256 combinazioni, il numero totale di colori distinti con questo sistema sar
256 * 256 * 256 = 16 777 216, cio pi di 16 milioni di colori.




Figura 3.3. RGB esempio


3.4.4 I suoni

Il suono, come noto, una vibrazione. Lintensit della vibrazione viene percepita
come lintensit del suono (il suo volume) mentre la sua frequenza viene percepita
come una diversa altezza, cio in pratica frequenze maggiori danno luogo a note pi
alte.
Tramite un microfono le vibrazioni dellaria vengono convertite in un segnale elettrico.
Il passo successivo quello di misurare lintensit del suono a intervalli di tempo
prefissati (campionamento). Infine non resta che trasformare queste intensit in
numeri binari, usando un certo numero di bit. Chiaramente pi rapidamente misurer
lintensit e pi bit user per rappresentare lintensit tanto pi rispondente al vero
sar il suono digitalizzato ma anche tanto pi grande sar lo spazio occupato.


Figura 3.4. Esempio di suono preso da un microfono. Si noti lintensit in funzione del tempo.
I pallini rossi rappresentano i momenti scelti per essere memorizzati (campionamento).
A destra la frequenza di campionamento pi alta rispetto a sinistra e questo far s che il
suono digitalizzato sar pi simile al suono originale.





































Capitolo 4
Algoritmi, strutture dati

In questo capitolo studieremo in dettaglio cos un algoritmo e come rappresentarlo.

4.1 Algoritmi e programmi

Abbiamo gi discusso brevemente nellintroduzione (vedi par. 1.2.1) cosa un
algoritmo.

Un algoritmo definito come una sequenza finita di operazioni, chiaramente
comprensibili allesecutore, per risolvere un problema.

Il termine algoritmo deriva dalla trascrizione latina del nome del matematico persiano
Muhammad al-Khwarizmi (780 850), che considerato uno dei primi autori ad aver
fatto riferimento a questo concetto. In realt sequenze finite di passi per risolvere un
problema erano gi usate fin dallantica Grecia. Da ricordare sicuramente lalgoritmo
di Euclide per trovare il massimo comun divisore tra due numeri interi e il metodo di
Archimede per la trisezione di un angolo.
Spesso un algoritmo ha degli input (immissione in inglese) e degli output (emissione/
in uscita in inglese). Linput linsieme degli elementi in ingresso, spesso dei dati,
mentre loutput linsieme degli elementi in uscita, spesso dei dati. Facendo un
esempio molto stupido, un input possono essere gli ingredienti di una ricetta,
lalgoritmo una ricetta ben scritta e loutput il piatto pronto. Sebbene la storia,
soprattutto matematica, sia costellata di algoritmi, il loro vero uso cominci con linizio
del ventesimo secolo. I matematici, per poter risolvere alcune questioni fondamentali
della matematica, cominciarono a creare dei modelli per descrivere le potenzialit di
un algoritmo (per esempio la Macchina di Turing).
Nacquero cos le tecniche per comprendere se un algoritmo pi veloce di un altro
nella risoluzione di un problema (complessit computazionale) oppure se un algoritmo
pi affidabile di un altro rispetto ad alcuni dati di input problematici (stabilit degli
algoritmi).

In questo corso non abbiamo n il tempo n gli strumenti adeguati a introdurre
gli algoritmi secondo la matematica moderna. Per i nostri scopi ci accontenteremo
di dire che un algoritmo deve essere:

Finito: lalgoritmo deve essere composto da un numero finito di passi,
richiedere una quantit finita di dati in ingresso e lesecuzione deve avere
termine dopo un tempo finito. Per esempio, durante la cottura della pasta, per
controllare di aver messo la corretta quantit di sale, devo assaggiare la pasta e
eventualmente aggiungere del sale. Questa operazione pu essere eseguita pi
volte ma non allinfinito!
Deterministico: a ogni passo, il successivo deve essere uno e uno solo, ben
determinato. Inoltre a parit di input devo sempre ottenere lo stesso output.
Non ambiguo: i passi devono essere interpretabili in modo univoco
dallesecutore. Per esempio una ricetta di cucina deve essere cos chiara e
precisa che chiunque sia in grado di leggerla capisca, preparer sempre lo
stesso identico piatto con lo stesso sapore. Le operazioni che compongono un
algoritmo possono anche essere complesse (es. Nella preparazione della pasta
potrebbe esserci scritto prepara il rag), purch lesecutore sappia
esattamente cosa deve fare oppure abbia un algoritmo apposito per eseguire
quellistruzione complessa (es. La ricetta del rag).
Generale: bene che un algoritmo sia il pi generico possibile per tutta una
classe di problemi simili. In pratica deve sapere gestire correttamente tutti i
possibili valori di input per quel particolare problema. Per esempio nel caso
della ricetta per la pasta con il rag, lalgoritmo deve permettere di preparare la
giusta quantit di pasta a seconda delle persone, deve regolare i tempi di
cottura a seconda del tipo di pasta che si vuole usare, ecc

I fondamenti matematici degli algoritmi e la nascita dei primi computer furono
fondamentali per la nascita dellinformatica come la conosciamo oggi. Infatti, se per
ottenere un certo risultato (risolvere un certo problema) esiste un procedimento
infallibile, che pu essere descritto in modo non ambiguo fino ai dettagli, e conduce
sempre allobiettivo desiderato in un tempo finito, allora esistono le condizioni per
affidare questo compito a un computer, semplicemente descrivendo lalgoritmo in
questione in un programma scritto in un opportuno linguaggio comprensibile al
computer (in particolare alla CPU).

interessante, a questo proposito, ricordare la storia della baronessa Ada Lovelace,
una grande amica di Charles Babbage, linventore della macchina analitica che
abbiamo visto nel paragrafo 2.3. Ada, figlia del famoso poeta Lord Byron, sinteress
fin da giovane alle scienze matematiche e in particolare al lavoro di Babbage. Nel
1842 Charles Babbage fu invitato a dare un seminario allUniversit di Torino sulla sua
macchina analitica. Luigi Menabrea, un giovane ingegnere italiano, e futuro primo
ministro dellItalia, scrisse sulla conferenza di Babbage in francese. Babbage chiese ad
Ada Lovelace di tradurre in inglese alcuni interessanti articoli di Menabrea e di
aggiungere eventuali note. Ada per circa 9 mesi fece questo lavoro e in una nota
descrisse quello che oggi viene considerato il primo programma di computer della
storia: un algoritmo per calcolare i cosiddetti numeri di Bernoulli scritto usando le
istruzioni della macchina analitica di Babbage. Ada considerata quindi la prima
programmatrice di computer nella storia e il linguaggio di programmazione Ada
stato chiamato cos in suo onore.
4.2 Tipi di dati e istruzioni

I dati, a seconda delloggetto che rappresentano, sono classificati in diversi tipi:

numerici. Rappresentano dei dati su cui si possono effettuare dei calcoli
numerici.
stringhe (alfanumerici). Rappresentano dei simboli, come caratteri alfabetici,
numeri, ecctutto quello che riguarda la scrittura.

Sono possibili anche delle strutture dati molto pi complesse ma le vedremo pi
avanti. Durante un algoritmo, i dati possono essere immagazzinati in una costante o
in una variabile. Possiamo immaginare sia le costanti che le variabili come delle
caselle in cui mettere un dato. La differenza che una volta messo un dato nella
costante, questo non pu essere cambiato con un altro dato, cosa che invece
possibile con la variabile. Le variabili e le costanti sono identificate da un nome. Per
esempio, in un algoritmo che permette il calcolo dellarea del cerchio, potremmo
definire allinizio la costante pigreco e metterci dentro un valore sufficientemente
vicino a (come sapete un numero irrazionale e quindi servono infinite cifre per
rappresentarlo).Una variabile potrebbe essere il raggio del cerchio che chiameremo
raggio.

Mettere un dato in una variabile o in una costante si dice assegnare un valore alla
costante o variabile. sembra buona norma inizializzare le variabili. Per esempio nel
caso di variabili numeriche si potrebbe assegnare allinizio sempre il valore 0. Questo
permette di evitare molti problemi, tra i quali, per esempio, la lettura di una variabile
che ancora non stata creata o se stata creata non contiene alcun valore. Vediamo
ora le operazioni pi semplici che si possono usare in un algoritmo.

Istruzione di lettura, nel senso di leggere in input un valore, per esempio dalla
tastiera, per poi essere assegnato a una variabile. leggi(raggio) chiede di
inserire un valore da tastiera e, una volta inserito, questo valore verr messo
dentro la variabile raggio.
Istruzione di scrittura, nel senso di riportare in output, per esempio sullo
schermo o sulla stampante, un messaggio o il contenuto di una variabile.
scrivi(raggio) scrive sullo schermo il valore contenuto nella variabile raggio.
istruzione di assegnazione, come gi detto sopra consiste nellassegnare a una
variabile un certo valore. A = 10 oppure A = B oppure ancora A = B + C sono
tutte operazioni di assegnazione. Per comprenderle, leggete prima il valore a
destra delluguale e poi immaginate di metterlo dentro la variabile scritta a
sinistra delluguale.

A seconda del linguaggio di programmazione usato, si avranno a disposizione diversi
tipi di dato e diverse istruzioni utilizzabili. Quelli elencati sopra sono comunque i tipi di
dato e le istruzioni che si possono trovare in tutti i linguaggi.
4.3 La rappresentazione di un algoritmo

Per rappresentare un algoritmo si hanno due possibilit. O lo si rappresenta
graficamente usando degli appositi simboli per le sue varie parti (diagramma di
flusso), oppure lo si descrive usando un linguaggio, che pu essere la propria lingua
(italiano, inglese, ), un linguaggio di programmazione (C++, Python, Java, )
oppure un finto linguaggio di programmazione (pseudocodice).
In realt metodi di rappresentazione degli algoritmi sono utili solamente per algoritmi
relativamente semplici, per permettere agli studenti di imparare a pensare nella
maniera corretta. In realt gli algoritmi vanno provati per vedere se funzionano e
come funzionano. Gli informatici e i programmatori scrivono sempre gli algoritmi con
un linguaggio di programmazione a loro scelta per poi farli eseguire al computer. I
diagrammi di flusso e lo pseudocodice esistono invece solo sulla carta e per provare
un algoritmo lunico modo quello di eseguirlo a mano leggendolo.







4.3.1 Il diagramma di flusso

I diagrammi di flusso (in inglese flow chart) sono un caso particolare di diagrammi a
blocchi e servono per rappresentare graficamente il flusso di un algoritmo.
In figura 4.1 sono rappresentati i blocchi principali che si usano nei diagrammi di
flusso. C il blocco iniziale e il blocco finale. C il blocco di input/output
(lettura/scrittura), il blocco di elaborazione (assegnazione) e il blocco di controllo.


Figura 4.1. I blocchi pi importanti che compongono i diagrammi di flusso.


La lettura di un diagramma di flusso procede in maniera sequenziale:

1. si parte dal blocco iniziale;
2. si segue la freccia in uscita;
3. si giunge al blocco successivo e si effettua loperazione descritta nel blocco;
4. si procede iterando i passi 2 e 3 fino a giungere al blocco finale.

Non tutte le combinazioni di questi simboli corrispondono a un algoritmo. Un
diagramma di flusso rappresenta un algoritmo se:

1. inizia con il blocco iniziale e finisce con il blocco finale e se questi due blocchi
compaiono una e una sola volta.
2. viene usato un numero finito di blocchi.
3. Ogni blocco soddisfa le condizioni di validit.





Capitolo 5
Sistemi operativi e programmi

Software is like sex, its better
when its free.
Linus Torvalds


In questo capitolo parleremo dei concetti utili a un semplice utente per il normale uso
del computer. Parleremo quindi delle funzioni principali di un sistema operativo e dei
programmi per ufficio pi utili.

Ricordiamo subito che i programmi si dividono in programmi di base (sistemi
operativi, compilatori e editor di testo) e programmi applicativi che invece servono per
compiti specifici non fondamentali come scrivere, vedere foto, ecc

5.1 Il diritto dautore per il software

Prima di iniziare a parlare di programmi dobbiamo parlare di diritto dautore e di
licenze per il software.
Il diritto dautore la condizione in cui si trova lautore di unopera dellingegno (per
esempio un software) al quale i vari ordinamenti giuridici nazionali riconoscono la
facolt esclusiva di diffusione e sfruttamento, economico e morale. In Italia prende il
nome di diritto dautore, mentre negli stati anglosassoni, si chiama copyright
(dallinglese diritto di copia).

Normalmente, se non si hanno i diritti su unopera, in particolare un software, non si
ha il permesso di usarla, distribuirla e modificarla. Il detentore del copyright concede
per alcuni dei suoi diritti allutente, obbligandolo ad accettare una licenza. Tra i diritti
concessi c ovviamente il diritto a usare il software in questione. Praticamente ogni
software dotato di una licenza che deve essere accettata prima di poterlo usare,
solitamente durante la fase di installazione o al momento dellacquisto.

Nel mondo anglosassone la licenza viene chiamata EULA (End User License
Agreement) e ogni produttore decide quali diritti e doveri vengono concessi allutente.
Nel corso degli anni le restrizioni eccessive imposte dalle leggi in materia di diritto
dautore nella circolazione delle opere dingegno (software, medicinali, invenzioni,
ecc) hanno fatto nascere movimenti di pensiero per cambiare lo stato attuale e
permettere una circolazione pi libera delle idee e un progresso pi rapido delle
tecnologie.
Queste idee nacquero a met degli anni 1980 nel campo informatico grazie a Richard
Stallman. Dalle idee di Stallman nacque il concetto di copyleft, gioco di parole in
contrapposizione a copyright. Il copyleft un modello di gestione dei diritti dautore
dove il detentore dei diritti concede allutente, tramite una licenza, molti pi diritti di
quanto facciano le classiche EULA, per esempio il diritto a ridistribuirlo a chiunque o a
modificarlo a suo piacimento. Lidea del copyleft quella per di obbligare a
ridistribuire il software con la stessa licenza con cui lo si ottenuto, mantenendo
quindi in questo modo la libert acquisita. Questa idea rivoluzionaria stata per primo
applicata al software, grazie alla licenza GNU GPL e successivamente anche alle opere
artistiche con le licenze Creative Commons.

Nel mondo software si usano molti termini di cui si deve conoscere il significato:

Software open source. Qualsiasi software di cui sia possibile ottenere
legalmente il codice sorgente.
Software libero (free software). Qualsiasi software che sia distribuito con una
licenza che risponda ai principi del copyleft. Tutti i software liberi sono anche
open source, perch senza codice sorgente sarebbe impossibile modificarli.
Inoltre molti dei software liberi sono anche gratuiti, anche se non sempre.
Software proprietario. Con questo termine si indica un software che ha delle
restrizioni sul suo utilizzo, modifica, ridistribuzione, ecc solitamente esercitate
dal proprietario del copyright. In generale con questo termine si indica qualsiasi
software che non sia software libero. Molto spesso un software proprietario
anche a pagamento.
Freeware. Un software proprietario che sia gratuito.
Shareware. Un software proprietario a pagamento che si pu per utilizzare
gratuitamente per un periodo di prova.
Pubblico dominio. Un software il cui codice disponibile a chiunque e di cui
nessuno detiene il copyright.

da ricordare che il solo fatto che un software sia gratuito o addirittura sotto una
licenza che rispetta i principi del copyleft, non significa che questo software non possa
comportare un guadagno per lautore. Infatti, anche nel caso di software distribuiti
gratuitamente, lautore potrebbe fornire a pagamento le guide del software, o il
supporto o limplementazione di nuove funzionalit, ecc
5.2 I sistemi operativi

In informatica il sistema operativo, abbreviato in SO (in inglese OS, operating system)
un particolare software, installato su un computer, che ne garantisce loperativit di
base coordinando le risorse hardware nel processamento, memorizzazione e le
periferiche e senza il quale quindi non sarebbe possibile lutilizzo di altri software pi
specifici, come applicazioni o librerie software, e quindi in ultimo del computer stesso.
Esso funge quindi da base al quale si appoggiano gli altri software, che dunque
dovranno essere progettati in modo da essere riconosciuti e supportati da quel
particolare sistema operativo. Per sistema operativo intendiamo quindi linsieme dei
componenti software che hanno il duplice scopo di gestire le risorse hardware e
software del computer, e fare da interfaccia tra lutente e lhardware.

Il sistema operativo un insieme responsabile:

del controllo e della gestione delle componenti hardware che costituiscono il
computer (processi di input/output da e verso le periferiche collegate al
sistema)
dellesecuzione dei programmi che su di esso vengono eseguiti.
gestire larchiviazione e laccesso ai file. I programmi possono gestire
larchiviazione dei dati su memoria di massa (ottenendo strutture complesse,
come un database), servendosi delle procedure messe a disposizione del
sistema operativo. La componente del SO che si occupa di tutto ci viene
chiamata file system.
Infine, se prevista interazione con lutente, viene solitamente utilizzata allo
scopo uninterfaccia software (grafica o testuale) per accedere alle risorse
hardware (dischi, memoria, I/O in generale) del sistema. Daltra parte, un
sistema operativo pu essere utilizzato anche su una macchina che non preveda
interazione diretta con un essere umano (per un esempio, vedi smart card o
determinati sistemi embedded) spesso dunque pi leggero e semplificato.

Solitamente un sistema operativo installato su computer fornisce anche degli
applicativi di base per svolgere elaborazioni di diverso tipo. Sebbene molte delle
funzionalit sopraddette non siano spesso immediatamente visibili/percepibili
allutente, limportanza del sistema operativo di un calcolatore cruciale: oltre alla
necessit di gestione delle funzionalit di base sopraddette, al di l delle prestazioni
massime offerte dallhardware dellelaboratore stesso, il sistema operativo determina
di fatto efficienza e buona parte delle prestazioni effettive di funzionamento dellintero
sistema ad esempio in termini di latenze di processamento, stabilit, interruzioni o
crash di sistema.

Un generico sistema operativo moderno si compone di alcune parti standard, pi o
meno ben definite.

Il kernel: un gruppo di funzioni fondamentali, strettamente interconnesse fra
loro e con lhardware, che vengono eseguite con il privilegio massimo
disponibile sulla macchina ossia in modalit kernel; il kernel fornisce le
funzionalit di base per tutte le altre componenti del sistema operativo, che
assolvono le loro funzioni servendosi dei servizi che esso offre. A seconda del
tipo di sistema operativo il kernel pu inglobare altre parti (kernel classico,
monolitico o modulare) o fornire solo funzioni base delegando pi funzioni
possibile a oggetti/gestori esterni (microkernel).
Il gestore di file system: si occupa di esaudire le richieste di accesso alle
memorie di massa. Viene utilizzato ogni volta che si accede a un file sul disco, e
oltre a fornire i dati richiesti tiene traccia dei file aperti, dei permessi di accesso
ai file. Inoltre si occupa anche e soprattutto dellastrazione logica dei dati
memorizzati sul computer (directory, ecc).
Un sistema di memoria virtuale: che alloca la memoria richiesta dai
programmi e dal sistema operativo stesso, salva sulla memoria di massa le
zone di memoria temporaneamente non usate dai programmi e garantisce che
le pagine swappate vengano riportate in memoria se richieste.
Uno scheduler: che scandisce il tempo di esecuzione dei vari processi e
assicura che ciascuno di essi venga eseguito per il tempo richiesto.
Normalmente lo scheduler gestisce anche lo stato dei processi e pu
sospenderne lesecuzione nel caso questi siano in attesa senza fare nulla
(esempio classico la richiesta di dati da disco). Nei sistemi operativi realtime
lo scheduler si occupa anche di garantire una timeline, cio un tempo massimo
di completamento per ciascun task in esecuzione, ed notevolmente pi
complesso.
Uno spooler: che riceve dai programmi i dati da stampare e li stampa in
successione, permettendo ai programmi di proseguire senza dover attendere la
fine del processo di stampa.
Una interfaccia utente (Shell): che permette agli utenti di interagire con la
macchina.



Tra i sistemi operativi pi famosi figurano le varie versioni Windows (Xp, Vista,
7) della Microsoft, i sistemi basati sul kernel Linux (Android, Ubuntu, SUSE ecc), i
sistemi derivati da Unix (Mac OS X, BSD, Solaris) e molti altri.
5.2.1 Il filesystem

In informatica, un file system , informalmente, un meccanismo con il quale i file
sono immagazzinati e organizzati su un dispositivo di archiviazione, come un disco
rigido o un CD-ROM.

Un file system parte integrante di qualsiasi sistema operativo moderno. Lunico vero
compito dei sistemi operativi dei primi microcomputer era proprio la gestione dei file,
un fatto che si riflette nei loro nomi (per esempio DOS lacronimo di Disk Operating
System).

Con la parola file (archivio in inglese) si indica un insieme di dati che vanno a formare
una certa entit coerente di dati, per esempio tutti i dati che servono per
rappresentare unimmagine, vanno a formare il file di quella immagine. Il filesystem
pu lavorare sui file nascondendo allutente la vera forma fisica in cui i dati sono
effettivamente memorizzati su un certo supporto (per esempio in un disco rigido i
dati sono divisi in settori, che per lutente non vede. Lutente vede il file nella sua
interezza!).

Normalmente i file per essere identificati hanno un indirizzo e una lunghezza. Una
identificazione troppo difficile per per essere usata da un essere umano. Ecco cos
che il filesystem si occupa anche di poter dare dei nomi ai file e organizzarli in
cartelle. In poche parole il filesystem associa i nomi agli indirizzi dei file. Tale
associazione invisibile allutente che vede solamente i nomi.

I filesystem hanno anche altre funzionalit come la gestione dellaccesso ai file (alcuni
utenti del sistema operativo posso leggere, scrivere, eseguire certi file mentre altri
utenti no). Oppure ancora i filesystem possono avere dei sistemi per garantire
lintegrit dei dati (journaling).

Esistono moltissimi filesystem, quello che usa Windows per memorizzare i dati sui
dischi rigidi NTFS. Una volta veniva usato il FAT32, tuttora usato per qualche
chiavetta USB.
I filesystem basati su Linux possono usare diversi tipi di filesystem, per esempio
possono usare sia NTFS che FAT32 anche se quelli pi usati e naturali sono Ext2,
Ext3 ed Ext4. Il filesystem usato per memorizzare i dati sui CD-ROM lISO9660.