ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... ·...

64
Appunti del corso di Informatica Classe III A. Anno scolastico 2011–2012 Prof. Francesco Biccari [email protected] 20 aprile 2012

Transcript of ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... ·...

Page 1: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

Appunti del corso di InformaticaClasse III A. Anno scolastico 2011–2012

Prof. Francesco [email protected]

20 aprile 2012

Page 2: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

Indice

1 L’informatica 41.1 Dati e informazioni . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2 Cos’è l’informatica? . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2.1 Gli algoritmi . . . . . . . . . . . . . . . . . . . . . . . . . 61.2.2 Il computer . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2.3 La rappresentazione dei dati . . . . . . . . . . . . . . . . . 8

1.3 L’importanza dell’informatica e dell’ICT . . . . . . . . . . . . . . 91.4 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2 Il computer 112.1 Cos’è un computer? . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2 I tipi di computer . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.3 Un po’ di storia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.4 I computer sanno lavorare solo con i numeri! . . . . . . . . . . . . 152.5 Un ripasso delle unità di misura . . . . . . . . . . . . . . . . . . . 16

2.5.1 I fenomeni periodici . . . . . . . . . . . . . . . . . . . . . 162.5.2 I prefissi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.6 Architettura di Von Neumann . . . . . . . . . . . . . . . . . . . . . 182.7 La CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.8 La memoria centrale . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.8.1 La RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.9 La scheda madre e i BUS . . . . . . . . . . . . . . . . . . . . . . . 22

2.9.1 Il firmware, le ROM e il BIOS . . . . . . . . . . . . . . . . 252.10 Le periferiche di input/output . . . . . . . . . . . . . . . . . . . . . 26

2.10.1 L’hard disk (disco rigido) . . . . . . . . . . . . . . . . . . . 262.10.2 Le memorie flash . . . . . . . . . . . . . . . . . . . . . . . 262.10.3 I drive ottici e i dischi ottici . . . . . . . . . . . . . . . . . 282.10.4 La cache . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.10.5 Tastiera, mouse, touchpad, … . . . . . . . . . . . . . . . . 292.10.6 Il monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.10.7 La stampante . . . . . . . . . . . . . . . . . . . . . . . . . 312.10.8 Lo scanner . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.11 L’involucro e l’alimentazione . . . . . . . . . . . . . . . . . . . . . 322.12 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

1

Page 3: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

INDICE 2

3 La rappresentazione dei dati 343.1 Qual è il problema? . . . . . . . . . . . . . . . . . . . . . . . . . . 343.2 Il sistema binario . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.2.1 Da binario a decimale . . . . . . . . . . . . . . . . . . . . 353.2.2 Da decimale a binario . . . . . . . . . . . . . . . . . . . . 353.2.3 Le operazioni elementari . . . . . . . . . . . . . . . . . . . 353.2.4 I numeri negativi e i numeri frazionari . . . . . . . . . . . . 36

3.3 Il sistema esadecimale . . . . . . . . . . . . . . . . . . . . . . . . 363.3.1 Dal binario all’esadecimale e viceversa . . . . . . . . . . . 36

3.4 I tipi di dato e le codifiche . . . . . . . . . . . . . . . . . . . . . . 363.4.1 I numeri . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.4.2 Le stringhe . . . . . . . . . . . . . . . . . . . . . . . . . . 373.4.3 Le immagini . . . . . . . . . . . . . . . . . . . . . . . . . 383.4.4 I suoni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.5 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4 Algoritmi, strutture dati e programmi 424.1 Algoritmi e programmi . . . . . . . . . . . . . . . . . . . . . . . . 424.2 Tipi di dati e istruzioni . . . . . . . . . . . . . . . . . . . . . . . . 444.3 La rappresentazione di un algoritmo . . . . . . . . . . . . . . . . . 45

4.3.1 Il diagramma di flusso . . . . . . . . . . . . . . . . . . . . 454.3.2 Lo pseudocodice . . . . . . . . . . . . . . . . . . . . . . . 47

4.4 Qualche esempio semplice di algoritmo . . . . . . . . . . . . . . . 474.5 Condizioni, cicli e l’istruzione GOTO . . . . . . . . . . . . . . . . 494.6 La programmazione strutturata e procedurale . . . . . . . . . . . . 50

4.6.1 La struttura di sequenza . . . . . . . . . . . . . . . . . . . 514.6.2 La struttura di selezione . . . . . . . . . . . . . . . . . . . 514.6.3 La struttura iterativa . . . . . . . . . . . . . . . . . . . . . 514.6.4 Altre strutture derivate . . . . . . . . . . . . . . . . . . . . 53

4.7 Esempi semplici . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.7.1 Stampare la tabellina del 2 fino a un numero dato . . . . . . 53

4.8 La programmazione procedurale: sottoprogrammi e funzioni . . . . 544.9 Alcuni esempi di algoritmi “veri” . . . . . . . . . . . . . . . . . . 544.10 Strutture dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.11 La creazione dei programmi . . . . . . . . . . . . . . . . . . . . . 544.12 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5 Sistemi operativi e programmi 595.1 Il diritto d’autore per il software . . . . . . . . . . . . . . . . . . . 595.2 I sistemi operativi . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

5.2.1 Il filesystem . . . . . . . . . . . . . . . . . . . . . . . . . . 625.3 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

6 Microsoft Word 64

7 Microsoft Excel 65

Page 4: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

INDICE 3

8 Le reti di computer 668.1 Le reti di computer . . . . . . . . . . . . . . . . . . . . . . . . . . 66

8.1.1 Cos’è una rete di computer . . . . . . . . . . . . . . . . . . 668.1.2 Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668.1.3 Modem, router, switch e schede di rete . . . . . . . . . . . . 66

9 I database 67

A Codifica ASCII 68A.1 Caratteri non stampabili . . . . . . . . . . . . . . . . . . . . . . . . 69A.2 Caratteri stampabili . . . . . . . . . . . . . . . . . . . . . . . . . . 70

B Curiosità 71

Page 5: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

Capitolo 1

L’informatica

L’informatica non riguarda icomputer più di quanto l’astronomiariguardi i telescopi.

Edsger Wybe Dijkstra

1.1 Dati e informazioniPrima di spiegare cos’è l’informatica, bisogna soffermarci a definire i termini datoe informazione che troppo spesso vengono usati come sinonimi.

Un dato è a un livello più basso rispetto all’informazione. È un singolo elemen-to informativo che non permette di aumentare la nostra conoscenza: un nome, unnumero, un’immagine. In sintesi potremmo definire un dato come un simbolo senzaun significato. Facciamo un esempio. Potremmo avere una serie di dati: “32°C,33°C, 32°C, 27°C, 24°C, 27°C, 33°C”. Come vedete, avere a disposizione questaserie 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.

L’informazione è invece a un livello di astrazione superiore rispetto ai dati. Essaconsiste in un insieme di dati collocato in un contesto che ci permette di aumentarela nostra conoscenza, cioè che ci permette di superare un’incertezza, prendere unadecisione, effettuare delle operazioni. Per fare degli esempi guardiamo ai dati prece-denti e in particolare alla serie di temperature. Se sappiamo che quelle temperaturesono relative alla città di Roma in un particolare periodo dell’anno a una partico-lare ora del giorno, questo fa di loro un’informazione. La nostra informazione puòessere ulteriormente elaborata con altre informazioni per ottenerne di nuove. Peresempio nella serie di temperature si nota un abbassamento che potremmo associarea qualche giorno di brutto tempo. Questo potrebbe essere confermato da altre infor-mazioni relative alle precipitazioni. Analogamente per quanto riguarda l’altro dato,gli “8 848 metri”, se so che questo numero è la misura dell’altezza del monte Evere-st, ora ho un’informazione. Informazione che, come al solito, può essere incrociatacon altre per ottenere nuove informazioni. Se avessi le altezze di tutte le montagnedel mondo, scoprirei che il monte Everest è il più alto di tutti.

4

Page 6: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 1. L’INFORMATICA 5

Figura 1.1. Rappresentazione schematicadel DNA. Il DNA è il contenitore delle in-formazioni genetiche necessarie alla sintesidi RNA e proteine, molecole indispensabiliper lo sviluppo e il corretto funzionamentodella maggior parte degli organismi viven-ti. Queste informazioni sono scritte trami-te un alfabeto di 4 simboli, che nella real-tà corrispondono a quattro diverse moleco-le, chiamate basi azotate, come mostrato infigura.

L’informazione è anche un’istruzione per eseguire un certo compito. E questonon soltanto per gli uomini. Il DNA è uno splendido esempio di contenitore di in-formazioni. Contiene infatti le “istruzioni” per la sintesi delle proteine che regolanolo sviluppo e il funzionamento di quasi tutti gli esseri viventi. Queste informazionisono “scritte” con una alfabeto di 4 lettere, che nella realtà corrispondono a 4 diversebasi azotate (vedi la Fig. 1.1).

In generale un’informazione ha valore in quanto potenzialmente utile al fruitoreper i suoi molteplici scopi. Fin dall’alba dell’umanità gli uomini hanno sentito ilbisogno di trasmettere informazioni per migliorare la vita propria e dei propri figlie questo li ha resi la specie dominante di questo pianeta: dal linguaggio, alle pit-ture, fino alla scrittura. Grazie alla rivoluzione scientifica e alle nuove tecnologielo scambio di informazioni ha raggiunto livelli così elevati che oggigiorno la nostrasocietà viene definita come società dell’informazione.

1.2 Cos’è l’informatica?L’informatica è la scienza che studia la rappresentazione, l’elaborazione delle infor-mazioni e le tecniche pratiche per realizzare queste elaborazioni in maniera automa-tica. Nei prossimi paragrafi approfondiremo ognuno di questi aspetti.

L’etimologia italiana della parola informatica proviene dal francese: PhilippeDreyfus usò per primo il termine informatique nel 1962 come compressione di in-formation electronique ou automatique. Da notare che in inglese la parola infor-matics è usata raramente e ha un significato più ampio rispetto al nostro. La giustaparola inglese per indicare l’informatica è computer science.

Page 7: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 1. L’INFORMATICA 6

La nascita dell’informatica non ha una data ben precisa. Se si guarda ai me-todi per automatizzare la risoluzione dei problemi, possiamo trovare la sua originenella matematica e nella tecnologia greco–ellenistica (algoritmo di Euclide, metododi Archimede per la trisezione di un angolo, macchina di Anticitera). Se invece ciconcentriamo solo sui macchinari che permettevano di fare calcoli allora possiamoaddirittura risalire all’abaco, strumento inventato intorno al 2000 a.C. L’informaticacosì come la intendiamo oggi nasce intorno al 1930 grazie al lavoro di scienziati co-me Kurt Gödel, Alan Turing, Alonzo Church, John von Neumann, Claude Shannone grazie alla nascita dei primissimi computer.

I fondamenti teorici dell’informatica discendono direttamente dalla matematica.Programmi di videoscrittura, browser, videogiochi, ecc... sono semplici strumen-ti di lavoro o svago. Quello che interessa, nell’informatica pura, non è tanto saperusare i vari programmi, quanto piuttosto capirne la struttura ed eventualmente saper-la migliorare con l’uso di procedimenti più efficienti. Per assurdo, un informaticopuro potrebbe non saper accendere un computer! Vengono invece chiamati pro-grammatori coloro che creano i programmi (spesso sono dei laureati in ingegneriainformatica). Infine esistono gli utenti, cioè i semplici utilizzatori di programmi.

Nei prossimi tre paragrafi parleremo dei tre aspetti fondamentali dell’informa-tica che verranno poi discussi più approfonditamente nei primi capitoli di questedispense: gli algoritmi, il computer e la rappresentazione dei dati.

1.2.1 Gli algoritmiPer poter permettere a qualcuno, sia esso una macchina o una persona, di fare unlavoro “al posto nostro”, dobbiamo impartirgli delle istruzioni ben precise in modoche faccia esattamente ciò che vogliamo. Facciamo un primo esempio banale. Sup-poniamo di stare comodamente sdraiati sul divano e, siccome non ci va di alzarci,vogliamo che un’altra persona faccia partire un film in DVD al posto nostro. Se que-sta persona non sa usare il lettore DVD, dovremo dirgli di fare determinate azioniin maniera chiara e non ambigua: 1. Prendi il DVD del film “Ritorno al futuro”; 2.Accendi il lettore DVD spingendo il bottone in basso a sinistra; 3. Apri il cassettinodel DVD spingendo il bottone in alto a destra; 4. Poggia il DVD nel cassettino conle scritte rivolte verso l’alto; 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 adestra.

Questa sequenza di istruzioni è un semplicissimo esempio di algoritmo, che èdefinito come una sequenza finita di operazioni, chiaramente comprensibili all’ese-cutore, per risolvere un problema.

Facciamo un altro esempio, stavolta di natura matematica. Ricordate la sequen-za di temperature di cui avevamo parlato nel paragrafo 1.1? Supponiamo di volercalcolare la temperatura media. La “sequenza di istruzioni” è in questo caso moltosemplice: 1. si prendono tutti i numeri; 2. si sommano; 3. si divide la somma per ilnumero degli elementi; 4. si riporta il risultato ottenuto.

Spesso un algoritmo ha degli input (immissione in inglese) e degli output (emis-sione/in uscita in inglese). L’input è l’insieme degli elementi in ingresso, spesso dei

Page 8: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 1. L’INFORMATICA 7

Figura 1.2. Rappresentazione schematica di un generico sistema di elaborazione. Un si-stema di elaborazione può essere pensato come una scatola che produce un output a partiredagli input.

dati, mentre l’output è l’insieme degli elementi in uscita, spesso dei dati. Per esem-pio un input possono essere gli ingredienti di una ricetta, l’algoritmo è una ricettaben scritta e l’output è il piatto pronto.

L’insieme delle azioni che a partire dagli input generano l’output prende il no-me di processo di elaborazione. Un qualsiasi oggetto, o insieme di più oggetti, cheesegua un processo di elaborazione, cioè che generi un output a partire dagli input,viene chiamato sistema di elaborazione. Concettualmente un sistema di elaborazio-ne può essere schematizzato come una scatola (black box) a cui si forniscono degliinput e che restituisce degli output. Esempi di sistemi di elaborazione sono la lava-trice (panni sporchi in input, panni puliti in output), la radio (segnali radio in input,suono in output), ecc….

Il capitolo 4 sarà dedicato agli algoritmi, alla loro analisi e alla loro rappresen-tazione.

1.2.2 Il computerUn computer non è nient’altro che una macchina che può eseguire delle operazionielementari sui dati in input, seguendo degli algoritmi impostati dall’esterno, e resti-tuisce il risultato dell’elaborazione come dati in output. La peculiarità di un compu-ter è quella di essere un sistema di elaborazione generico, cioè che può essere istrui-to per eseguire qualsiasi tipi di algoritmo sui dati. Usando opportune periferichecollegate al computer, si possono anche eseguire operazioni “pratiche”.

La lavatrice, per esempio, è una specie di “computer”. All’interno vi è infattiun vero e proprio minicomputer che comanda le varie parti della lavatrice e cheè programmato per eseguire un solo algoritmo preimpostato in fabbrica. A partiredagli 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 pannipuliti. Ricordiamo che la differenza tra una lavatrice e un computer è che il computerpuò 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 ilcomputer deve essere “programmato”, cioè bisogna inserire nella sua memoria l’al-goritmo desiderato secondo un linguaggio comprensibile al computer. L’insieme diqueste istruzioni si chiama programma. Chiaramente un semplice utente del compu-ter non è obbligato a scriversi da solo tutti i programmi! Anzi, tutti i programmi cheuserà saranno realizzati da altre persone (basti pensare a programmi comeMicrosoftWord e Microsoft Excel).

Page 9: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 1. L’INFORMATICA 8

Figura 1.3. Fotografia di un personal computer di tipo desktop. L’unità centrale è la parteprincipale e consiste di un involucro chiamato case all’interno del quale si trovano tutti icomponenti principali del computer. Oltre all’unità centrale si vedono tre periferiche: ilmonitor, la tastiera e il mouse.

Attualmente caricare ed eseguire un programma in un computer è un’operazionemolto semplice. Infatti i computer sono equipaggiati con un programma speciale,chiamato sistema operativo, che viene eseguito poco dopo l’accensione del compu-ter. Il sistema operativo “accoglie” l’utente in maniera amichevole permettendogli difare tutta una serie di operazioni, tra cui eseguire un programma. Esempi di sistemioperativi sono Microsoft Windows 7, Mac OS X, Android, Ubuntu, ecc…

L’insieme dei programmi e dei dati prende il nome di software. Questo termine èstato coniato per contrapposizione alla parola hardware che in inglese significa fer-raglia. La parola hardware identifica infatti le parti fisiche del computer. Fu sceltoquesto nome perché i vecchi computer erano enormi e avevano schede elettroni-che, valvole e tutta una serie di componenti ingombranti che sembravano veramenteferraglia!

Nel capitolo 2 vedremo di quali parti si compone un computer e come funziona.

1.2.3 La rappresentazione dei datiQuando abbiamo accennato agli algoritmi, abbiamo detto che le operazioni di cuiparlano devono essere comprensibili a chi deve eseguire l’algoritmo. Ovviamente lostesso discorso vale per i dati. Siccome il nostro interesse principale è far eseguiredegli algoritmi al computer, dobbiamo essere in grado di esprimere sia i dati che leoperazioni degli algoritmi in un linguaggio comprensibile al computer.

Un computer è in grado di eseguire solamente operazioni sui numeri. Copiare unnumero, addizionare due numeri, confrontare due numeri, ecc…Siccome un com-

Page 10: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 1. L’INFORMATICA 9

puter 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. Unagrandezza fisica che viene rappresentata con continuità è detta analogica. Pensiamoper esempio al tempo, che viene rappresentato con l’angolo delle lancette dell’oro-logio. Oppure alla temperatura misurata da un termometro a mercurio. Sia l’angolodella lancetta sia l’altezza della colonnina di mercurio possono assumere qualsiasivalore compreso tra un minimo e un massimo. Si dice invece digitale una gran-dezza fisica che viene rappresentata usando un numero finito di valori numerici.Per esempio un orologio digitale non può mostrare con continuità tutti gli istanti ditempo possibili in una giornata, solitamente può al massimo arrivare a mostrare isecondi. Anche un termometro digitale non mostrerà con continuità i valori dellatemperatura, ma solamente dei valori distanziati, per esempio, di 0.1°C. Un altroesempio più sui generis è la quantificazione della conoscenza di un argomento tra-mite un voto. Solitamente questa conoscenza viene espressa con un numero interocompreso tra 0 e 10. È quindi un esempio di rappresentazione digitale.

Rappresentare i dati, siano essi numeri, lettere, immagini, suoni, sotto forma dinumeri è di fondamentale importanza affinché possano essere “usati” in un compu-ter. Come fare per trasformare dei dati in numeri sarà l’argomento del capitolo 3.

1.3 L’importanza dell’informatica e dell’ICTCerchiamo ora di comprendere l’importanza dell’informatica nel mondo odierno.Dalla fine della seconda guerra mondiale ai giorni nostri il nostro modo di vivere ècambiato radicalmente. Questi cambiamenti, tutt’ora in corso, prendono il nome diterza rivoluzione industriale. Tra i pilastri più importanti su cui si basa questa rivo-luzione ci sono tre discipline scientifiche: l’informatica, l’elettronica e le telecomu-nicazioni. Le nuove capacità di immagazzinamento, elaborazione e comunicazionedelle informazioni sono il cardine, nel bene e nel male, di questa rivoluzione. L’usodella tecnologia nella gestione e nel trattamento delle informazioni ha infatti assun-to crescente importanza strategica per le aziende e per le nazioni (studio dei propriclienti, previsione di strategie di mercato, studio di una politica economica).

In particolare non c’è stata solo una rivoluzione dei settori economici preesisten-ti alla luce delle nuove tecnologie. Soprattutto negli ultimi 20 anni è nato un vero eproprio nuovo settore dell’economia scaturito dall’unione di informatica, elettronicae telecomunicazioni, chiamato Tecnologia dell’Informazione e della Comunicazione(abbreviato in ICT, Information and Communication Technologies) e i cui frutti so-no sotto gli occhi di tutti: interconnessione dei media1 (telefonia, televisione, radio,internet, ecc…); estrema facilità nell’immagazzinamento, scambio e reperibilità diinformazioni. Oramai l’ICT è diventato un settore chiave dell’economia moderna,almeno pari a quello di settori più consolidati quali quello meccanico, chimico, far-

1Si noti che la parola media va pronunciata così come è scritta perché è una parola latina. Non vapronunciata “midia”, come purtroppo spesso si sente.

Page 11: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 1. L’INFORMATICA 10

maceutico, tessile, manufatturiero e alimentare ma soprattutto è il vero traino dellarivoluzione che stiamo vivendo.

Questo corso non dovrebbe chiamarsi “Informatica” bensì “Tecnologie dell’in-formazione e della comunicazione”. L’informatica e le telecomunicazioni sono ifondamenti tecnico–scientifici di cui gli studenti devono solo conoscere i concettifondamentali. Studenti orientati all’attività lavorativa in azienda, dovrebbero in-vece conoscere e sapersi districare tra le attuali tecnologie ICT usate in azienda,cioè dovrebbero essere educati alla corretta gestione, presentazione e interpretazio-ne dei dati, alla loro comunicazione ai clienti e ad altre aziende, e infine all’uso delletecnologie ICT nella gestione del lavoro.

Nel capitolo 5 faremo una panoramica dei programmi più comuni, concentran-doci in particolare sui programmi per ufficio. In particolare nei capitoli 6 e 7 intro-durremo all’uso delword processorMicrosoftWord e del foglio di calcoloMicrosoftExcel.

Nel capitolo 8 parleremo delle reti di computer e infine nel capitolo 9mostreremoi principi dell’immagazzinamento e recupero efficiente dei dati tramite i database ei software più famosi per gestirli.

1.4 Esercizi• Cos’è l’informatica?

• I termini dato e informazione sono sinonimi? Perché?

• Cos’è un algoritmo?

• Cos’è un programma?

• Un informatico è sempre anche un programmatore?

• Cos’è l’hardware?

• Cos’è il software?

• Perché è così importante la rappresentazione dei dati?

• Cos’è un algoritmo?

• Cos’è un sistema di elaborazione?

• Cos’è un computer?

• Il computer è un sistema di elaborazione? Perché?

• Cosa significa automatico?

• Cosa significa digitale?

• Cosa significa analogico?

Page 12: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

Capitolo 2

Il computer

L’hardware è ciò che puoi prenderea calci quando qualcosa nonfunziona, il software invece è quellocontro cui puoi solo imprecare.

Anonimo

2.1 Cos’è un computer?Un computer è una macchina programmabile che può eseguire automaticamentesequenze di operazioni logico-aritmetiche sui dati in ingresso (input) e di restituirei risultati di tali operazioni in uscita (output). È pertanto un sistema di elaborazionedi dati. La caratteristica principale che lo differenzia da altri sistemi di elaborazioneè la programmabilità, cioè può essere istruito (programmato) per eseguire qualsiasitipo di algoritmo.

Il termine computer deriva dall’inglese e significa calcolatore. In inglese il ter-mine 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 d’oggi, ci si riferisce comunemente al computer come a un disposi-tivo elettronico, digitale, programmabile e a scopo generico costruito secondo lacosiddetta architettura di von Neumann.

Al pari della televisione, il computer rappresenta il mezzo tecnologico simboloche più ha modificato le abitudini umane dal secondo dopoguerra a oggi: la suainvenzione ha contribuito alla nascita e allo sviluppo dell’informatica moderna, unodei pilastri su cui si basa la cosiddetta terza rivoluzione industriale.

2.2 I tipi di computerEsistono molti termini nel mondo dell’informatica per indicare i vari tipi di com-puter. Una volta queste distinzioni erano basate sostanzialmente sulla potenza del

11

Page 13: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 12

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

computer. Attualmente invece, data la potenza dei computer odierni, si tende a cata-logare i computer, non solo in base alla loro potenza, ma anche, e forse soprattutto,in base alla loro destinazione d’uso.

I mainframe o sistemi centrali sono computer utilizzati per applicazioni critichesoprattutto da grandi aziende e istituzioni, tipicamente per elaborare con alte pre-stazioni 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 eusati da una singola persona. In questa categoria possiamo quindi far rientrare il clas-sico 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 massimapotenza di calcolo possibile. Sono pezzi unici e servono sostanzialmente per laricerca scientifica.

2.3 Un po’ di storiaFin dall’antichità l’uomo cercò di costruire macchine in grado di fare dei calcoli:l’abaco, la macchina di Anticitera e gli astrolabi sono solo alcuni esempi. Le primemacchine calcolatrici compaiono nella seconda metà del 1600: la macchina calco-latrice 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 didispositivo programmabile) si deve a Charles Babbage. La sua macchina analitica,progettata nel 1833 ma mai realizzata, è il primo computer della storia. Si trattava diuna colossale macchina a ingranaggi, alimentata a vapore e dotata di unità di calcolodecimale, unità di memoria e sistemi di input e di output. Contrariamente a quantosi potrebbe pensare, la macchina analitica era interamente digitale.

Il primo computer funzionante è invece lo Z1 realizzato da Konrad Zuse nel1938. (Vedi figura 2.2.) La nascente elettronica e la spinta delle ricerche per la se-conda guerra mondiale fecero fare dei grandi passi in avanti nello sviluppo dei com-puter (ABC del 1939, Colossus del 1944, Harvard Mark I del 1944, Z4 del 1945,ENIAC del 1946). I computer necessitavano però di essere programmati manual-mente spostando interruttori e spinotti! Solo con il computer EDVAC, progettato

Page 14: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 13

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

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

nel 1945 sotto la supervisione di John Von Neumann e realizzato nel 1949, si hafinalmente un computer dove il programma da eseguire poteva essere inserito nellamemoria così come si faceva con i dati. (Vedi figura 2.3.)

Negli anni ’50 nacquero i primi computer commerciali, grandi come stanze emolto costosi, comprati dai grandi istituti di ricerca. Durante gli ultimi anni ‘50 egli anni ’60, grazie all’invenzione del transistor e all’affermarsi dei primi linguaggidi programmazione di alto livello (FORTRAN, COBOL, BASIC,…), i computer di-vennero più piccoli (come armadi), relativamente facili da usare e si diffusero quindiin tutte le grandi aziende e le maggiori università. Il maggior produttore era l’IBMche 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 saltotecnologico grazie all’invenzione dei circuiti integrati (detti microchip o semplice-mente chip), che permisero di avere potenze di calcolo maggiori in unminor volume,e grazie alla comparsa del sistema operativo UNIX e del linguaggio C. (Vedi figu-

Page 15: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 14

Figura 2.4. A sinistra uno dei più noti computer commerciali degli anni ’60 e ’70, l’IBMSystem/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 terminaliche venivano usati per accedere al computer vero e proprio.

ra 2.4.) 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 deipersonal computer odierni, come l’italiano Olivetti Programma 101.

Un’altra grande rivoluzione tecnologica ci fu nei primi anni ’70 quando i ricer-catori dell’Intel inventarono la memoria RAM e i microprocessori. La strada per losviluppo dei personal computer era ormai spianata. Da ricordare lo Xerox Alto del1972 che introdusse l’interfaccia grafica e la scheda di rete, l’Apple II del 1976 chefu il primo con monitor a colori, lo Xerox Star del 1981 che introdusse il mouse,l’hard disk di serie e un’interfaccia grafica basata sul concetto di desktop, come neimoderni sistemi operativi. (Vedi figura 2.5.)

Negli anni ’80 ci fu la vera alfabetizzazione informatica. Nel 1981 nacque ilprimo Personal Computer (PC) IBM (vedi figura 2.5) da cui discendono la mag-gior parte dei computer desktop moderni. La realizzazione del sistema operativo diquesti computer fu affidata alla Microsoft, che realizzò l’MS-DOS. In questi annicomparirono 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 soft-ware, ha fatto passi da gigante, soprattutto grazie alla spinta del mercato. In que-sto periodo ci sono principalmente tre fatti da ricordare: la nascita di Internet, lanascita del WEB e infine la nascita del software libero, in particolare dei sistemioperativi basati su Linux. Attualmente i computer e la loro possibilità di intercon-nessione e quindi scambio di informazioni hanno letteralmente “invaso” la nostravita. 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 vi-sto che nel corso della storia l’implementazione fisica del computer è variata con ilprogredire della tecnologia dando luogo a computer profondamente diversi dal puntodi vista del meccanismo di funzionamento (meccanici, elettromeccanici ed elettro-nici), della modalità di rappresentazione delle informazioni (analogica e digitale) e

Page 16: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 15

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

di altre loro caratteristiche (architettura interna, programmabilità, ecc.). Ricordia-mo di nuovo che al giorno d’oggi, ci si riferisce comunemente al computer comea un dispositivo elettronico, digitale, programmabile e a scopo generico costruitosecondo 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 è chedelle lunghissime sequenze di numeri vengono elaborate e inviate alla scheda videola quale è in grado di trasformarli in segnali adatti per il vostro monitor. Alcunidi questi numeri sono le coordinate cartesiane dei punti dello schermo mentre altrinumeri rappresentano il colore di questi punti.

In particolare, per motivi costruttivi, è molto più facile creare dei computer cheusano dei numeri in forma binaria. Infatti è molto più semplice realizzare dispositiviche abbiano solo due “simboli” anziché, per esempio, 10 simboli. Immaginate infattidi avere un circuito elettrico. Il passaggio di corrente indicherà un simbolo, il nonpassaggio di corrente indicherà un altro simbolo. Come vedete abbiamo due stati adisposizione che potremmo chiamare per comodità 1 e 0. Se avessimo voluto avere10 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 livellidi corrente diversi! Questo è in teoria possibile ma in pratica può generare moltedifficoltà perché la presenza di disturbi potrebbe confondere uno stato con un altro!

Page 17: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 16

Vedremo un po’ di matematica del sistema binario nel prossimo capitolo. Perora basti sapere che ogni cifra in un sistema a due stati, viene chiamata bit, contra-zione dall’inglese binary digit (cifra binaria). L’insieme di 8 cifre binarie, cioè 8bit, prende il nome di byte. Il simbolo per indicare il bit è b mentre il simbolo perindicare il byte è B.

2.5 Un ripasso delle unità di misuraNello studio dell’informatica, così come di qualsiasi altra scienza, è fondamentaleconoscere e saper gestire le varie unità di misura che si incontrano e i vari prefis-si moltiplicativi. In questo semplice corso di informatica incontreremo solo duegrandezze fisiche, il tempo e la frequenza. Quindi ci serviranno solo due unità dimisura.

2.5.1 I fenomeni periodiciUn fenomeno periodico è un fenomeno che si ripete uguale a sé stesso a intervalliuguali di tempo. L’intervallo di tempo che impiega il sistema a compiere un ciclosi chiama periodo. Facciamo un esempio: in un orologio analogico, la lancettadei secondi compie un moto circolare periodico. Il tempo che impiega a ritornarenella posizione di partenza, cioè il tempo per fare un giro completo, è il periodo dirotazione ed è pari a 60 secondi (60 s in forma abbreviata).

La frequenza indica invece quante volte un fenomeno si ripete in un certo inter-vallo 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 her-tz, abbreviato Hz. Facciamo un altro esempio. L’albero motore di una autovetturaaccesa, senza spingere l’acceleratore, compie circa 1800 giri al minuto. Con un sem-plice calcolo (provateci da soli!) si ottiene che i giri al secondo sono 300. Pertantopossiamo affermare che la frequenza di rotazione dell’albero motore è di 300Hz.Un ultimo esempio. La lancetta dei secondi, come avevamo visto, ha un periodo di60 s. Quant’è la frequenza del suo moto? Cioè quanti giri fa in un secondo. In unsecondo la lancetta fa solo 1/60 di giro! Quindi diremo che la frequenza è 1/60Hzoppure, in forma decimale, 0.0166…Hz.

Da questi esempi si intuisce che la frequenza è l’inverso del periodo, cioè, informa di equazione:

𝑓 = 1𝑇 (2.1)

Vedremo in questo capitolo che la frequenza è una grandezza fisica importantis-sima per comprendere il funzionamento di un computer. Infatti tutte le operazionidi un computer sono temporizzate, cioè ogni parte del computer esegue un’opera-zione ogni volta che riceve un impulso elettrico particolare, chiamato clock. Que-sto segnale è periodico ed è composto di svariati milioni o miliardi di impulsi alsecondo!

Page 18: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 17

Tabella 2.1. Tabella con i prefissi che indicano i multipli e i sottomultipli delle unità dimisura.

prefisso simbolo valoretera T 1012 (1000 miliardi)giga G 109 (1 miliardo)mega M 106 (1 milione)kilo k 103 (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 prefissiIn tutte le scienze e non solo, quando i numeri che esprimono una grandezza sonotroppo grandi o troppo piccoli per essere usati in maniera comoda, si preferisce usareun prefisso che indichi i multipli e i sottomultipli dell’unità di misura, in modo daavere una parte numerica più comoda da scrivere. Facciamo un esempio. Tutti noiconosciamo i metri e i kilometri. Un kilometro corrisponde a 1000metri. I kilometrivengo usati quando si parla di lunghe distanze: invece di dire che abbiamo percorso230000m è molto più semplice dire che si sono percorsi 230 km. I metri si indicanoconm e i kilometri con km. La lettera k sta per kilo e significa mille volte più grande.Infatti come tutti sappiamo 1 km sono 1000m.

Oltre al kilo che abbiamo appena visto, esiste tutta una serie standard di prefissiper le unità di misura. Alcuni dei prefissi più importanti sono riportati in Tab. 2.1.

Facciamo un piccolo esercizio dove compaiono i prefissi moltiplicativi. Suppo-niamo che la nostra linea ADSL abbia una velocità di 2Mb/s: significa che possiamoscaricare (se non ci sono altri problemi) 2 milioni di bit al secondo. Considerandoche una canzone presa da internet in formato mp3 può essere di circa 3 MB (3 me-gabyte), vogliamo sapere il tempo necessario a scaricare questa canzone. Prima ditutto trasformiamo la velocità della nostra ADSL da bit a byte. Basta dividere per8, perché, ricordiamolo, un byte sono 8 bit. Pertanto la velocità della nostra ADSLsarà di

2 Mb/s8 = 0.25 MB/s

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

𝑡 = dimensione filevelocità di scaricamento = 3 MB

0.25 MB/s = 12 s

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

Page 19: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 18

Figura 2.6. Schema dell’architettura di von Neumann. I componenti fondamentali sonoCPU ememoria centrale, quelli opzionali sono i sistemi di input e output. Questi componentisono connessi tra loro tramite un sistema di comunicazione apposito chiamato BUS.

2.6 Architettura di Von NeumannPassiamo ora a spiegare come è fatto un computer e di quali parti si compone. Prati-camente tutti i moderni computer di uso comune sono progettati secondo uno schema(architettura) detto architettura di Von Neumann inventata nel 1945 dal matematicoJohn 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 è l’ALU

(Arithmetic Logic Unit)– Registri della CPU

• La memoria centrale, intesa come memoria di lavoro o memoria principalecontenente sia i dati che i programmi attualmente in uso

• Unità di input, tramite la quale i dati e/o i programmi vengono inseriti nelcalcolatore per essere elaborati

• Unità di output, necessaria affinché i dati elaborati possano essere restituitiall’operatore

• Bus, uno o più canali di comunicazione che collegano i componenti fra loro

È importante sottolineare che tale architettura, a differenza di altre, si distingueper la caratteristica di immagazzinare all’interno dell’unità di memoria, sia i dati chei programmi in esecuzione. In poche parole si dice che le istruzioni dei programmisono a loro volta dei dati.

Un’ultima nota: quando si parla di memoria centrale si usa l’aggettivo centraleper 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 pertantorientrano nella categoria dei dispositivi di I/O.

Page 20: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 19

Figura 2.7. Le tre immagini rappresentano tutte il microprocessore Intel Core i5. La primamostra la parte superiore, la seconda mostra le componenti interne al microprocessore chesi trovano sotto il coperchio di protezione e l’ultima foto mostra il retro, dove si notanoprincipalmente tutti i contatti del microprocessore.

2.7 La CPULa CPU (dall’ingleseCentral Processing Unit, Unità centrale di elaborazione) è unodei componenti fondamentali di un computer. Viene spesso chiamata anche proces-sore 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’è l’unità di controllo, che legge escrive i dati dalla memoria (dove con dati si intende anche il programma da esegui-re), interpreta le istruzioni da eseguire e le esegue, facendosi “aiutare” da un altrocomponente della CPU, l’ALU (in inglese Arithmetic Logic Unit) che si occupa dieseguire tutte le operazioni logiche e matematiche. Infine ci sono i registri che nonsono nient’altro che una minuscola memoria per immagazzinare i dati temporanei ogli indirizzi di memoria su cui si dovrà operare.

Ogni operazione eseguita dalla CPU si divide in un certo numero di passi ele-mentari. Viene fatto un passo ogni volta che la CPU riceve un “impulso dall’ester-no”. Questo “impulso dall’esterno” è chiamato segnale di clock o semplicemente

Page 21: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 20

clock e arriva a intervalli di tempo regolari. Pertanto più alta sarà la frequenza delsegnale di clock, cioè più alto sarà il numero di impulsi di clock che arrivano allaCPU, più veloce sarà l’esecuzione di un programma. Oggigiorno le migliori CPUpossono funzionare a frequenze di clock di circa 3GHz, cioè 3 miliardi di impulsial secondo!

Il segnale di clock viene generato da un componente apposito che si trova sullascheda madre.

—————————————————

Facciamo un piccolo esempio di operazione elementare della CPU. L’unità dicontrollo della CPU legge in uno dei registri l’indirizzo dell’istruzione da eseguiree la memorizza in un altro registro. Supponiamo che tale istruzione sia (scritta informa più chiara e non in binario!)

ADD 7A3, 8A7, B92

L’unità di controllo della CPU capisce che deve fare una somma tra due numeriche sono memorizzati negli indirizzi 7A3 e 8A7 della RAM. L’ultimo indirizzo,B92, sarà invece l’indirizzo della RAM dove bisogna mettere il risultato.

L’unità di controllo prende allora i due numeri contenuti nelle celle di memoriaRAM 7A3 e 8A7 e li memorizza in due registri liberi della CPU, facciamo fintasiano il registro 3 e 4. Poi ordina alla ALU della CPU di eseguire la somma dei duenumeri contenuti nei registri 3 e 4, e che il risultato sia memorizzato in un registrolibero, per esempio il 5.

Appena l’ALU avrà finito di fare ciò che gli è stato chiesto, l’unità dei controllodella CPU terminerà il suo lavoro copiando il contenuto del registro 5, quello con-tenente il risultato della somma, nell’indirizzo di memoria RAM B92. Fatto questo,l’istruzione è stata completata e si potrà passare all’istruzione successiva.

—————————————————

La maniera in cui viene effettivamente costruita la CPU affinché possa esegui-re le varie istruzioni viene detta microarchitettura. Una certa microarchitettura ècaratterizzata da un determinato insieme di istruzioni (instruction set) che la CPUpuò eseguire. Tra le caratteristiche di una microarchitettura c’è anche la dimensionenaturale di dati che viene normalmente usata per varie attività. Questa dimensionesi chiama word (parola) e nelle CPU attuali è solitamente di 32 bit o 64 bit.

Facciamo degli esempi per capire l’importanza della word. Ogni istruzione chericeve la CPU è composta da una o piùword. La quantità di dati contenuta nei registricorrisponde a una word. La quantità di dati trasferiti dalla memoria centrale allaCPU è di una word per ogni trasferimento. Il numero di bit usati per rappresentarei numeri, interi o con la virgola, è di una word o di un multiplo di essa. Ma la cosapiù importante è dire che gli indirizzi della memoria centrale sono numerati con unnumero di bit pari a una word. Se la word è quindi di 32 bit, al massimo la CPU potrà“vedere” 232 caselle di memoria (ricordate che una casella di memoria corrisponde aun byte). Pertanto un sistema a 32 bit potrà montare al massimo 232 byte di memoria,

Page 22: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 21

Figura 2.8. Sulla sinistra banco di memoria RAM (con e senza dissipatore per il calore).Sulla destra banchi di RAM montati sulla scheda madre.

cioè circa 4 GB. Questo è uno dei principali motivi per cui negli ultimi anni si stapassando a CPU a 64 bit. Una CPU a 64 bit può infatti indirizzare fino a 264 caselledi memoria, quindi per un massimo di ben 16 miliardi di GB!!!

2.8 La memoria centraleLa memoria centrale è un altro componente fondamentale del computer. Secondol’architettura di VonNeumann, la memoria centrale gioca un doppio ruolo. Contienesia i dati che servono alla CPU, sia il programma che si sta eseguendo. In altri tipidi architetture particolari esiste invece una memoria per contenere il programma euna memoria per contenere i dati.

In generale le memorie sono composte da tante minuscole cellette, ognuna dellequali può trovarsi in due stati, carico e scarico. Avete già capito che questi due stativerranno usati per rappresentare le cifre 0 e 1.

Attualmente la memoria centrale di ogni computer è una memoria di tipo RAM.

2.8.1 La RAMLa tipica memoria centrale usata nei computer è una RAM (dall’inglese RandomAccess Memory, memoria ad accesso casuale). Il termine random (casuale) è do-vuto al fatto che accedere a un’area o a un’altra di questa memoria non comportadifferenze di velocità. La RAM può essere sia letta che scritta. Quando si spegneil computer o in generale si stacca la corrente, tutto il contenuto della RAM vieneperso. Una memoria che si comporta in questo modo viene detta volatile.

Le RAM si dividono a sua volta in statiche e dinamiche. Praticamente tutte leRAM usate nei computer comuni sono dinamiche. Questo tipo di RAM è meno co-stoso delle RAM statiche ma le cellette di cui è composta la RAM dinamica tendonoa scaricarsi con il tempo. Pertanto, per evitare che il computer perda le informazionidurante il suo funzionamento e quindi si blocchi, la memoria RAM dinamica deve

Page 23: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 22

essere “rinfrescata” a intervalli di tempo regolari (circa ogni 64ms, cioè con unafrequenza di 15Hz).

Per accedere ai dati contenuti nella RAM, la CPU assegna a ogni celletta unindirizzo, proprio come i numeri civici delle strade che vengono usati per identificarele varie case. In realtà le cellette non sono numerate una per una ma sono numeratea 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 computermoderni questa quantità varia solitamente da 1GB fino a 8GB.

2.9 La scheda madre e i BUSLa CPU, la memoria e tutte le periferiche di input/output sono connesse tra loroattraverso la scheda madre. Le connessioni fisica tra la scheda madre e gli altricomponenti avviene in vari modi: tramite degli zoccoli, detti socket (CPU), tramitedelle 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.)(Vedi figura 2.9.)

La scheda madre contiene i BUS, cioè i canali di comunicazione tra le varie partidel computer e ne regola le comunicazioni. Ricordiamo che i BUS sono uno deglielementi fondamentali dell’architettura di von Neumann. La scheda madre contieneanche uno o più generatori di clock, la ROMcontenente il BIOS e un orologio semprein funzione, alimentato da una batteria interna.

Figura 2.9. Fotografia di una scheda madre senza alcun componente attaccato. Si notino levarie slot presenti.

Page 24: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 23

Figura 2.10. Organizzazione di un computer tipica degli anni ’70 e ’80. Veniva usato unsingolo sistema di comunicazione (diviso in tre BUS, uno per i dati, uno per gli indirizzi euno per il controllo) e tutti i componenti funzionavano alla stessa frequenza di clock.

Fino alla fine degli anni ’80 il BUS del computer era solamente uno e tutti icomponenti funzionavano alla stessa frequenza di clock (Vedi figura 2.10).

Con il tempo le CPU e le memorie diventavano sempre più veloci, cioè potevanofunzionare a frequenze di clock sempre maggiori, al contrario degli altri componentidel computer. Per questo motivo si cominciò a suddividere il computer in diverse“zone”, che funzionavano a frequenze di clock diverse. In figura 2.11 è rappresentatouno schema a blocchi di un computer attuale. Si notano tre zone: la zona dellamemoria e della scheda video che hanno delle velocità di trasferimento di dati moltoelevate e funzionano con una frequenza di clock simile a quella del generatore delclock; 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; infinela zona che gestisce l’input/output che funziona più lentamente delle altre due. Ilcolore grigio rappresenta i vari BUS, il colore verde la CPU e la memoria e il coloreblu le periferiche di input e di output. Si può vedere che nei computer odierni siusano molti BUS diversi.

Il passaggio di dati nella scheda madre da un componente all’altro è comandatodalla CPU ma è messo in pratica da un particolare circuito integrato, chiamato chip-set, che possiamo immaginare come un ufficio postale velocissimo. Come si vededalla figura è solitamente diviso in due zone, MCH e ICH. Quando, per esempio, laCPU vuole mandare dei dati alla RAM, li invia prima al chipset che poi li gira allaRAM facendoli passare per il BUS giusto.

Il parametro fondamentale che distingue un BUS da un altro è la velocità di tra-sferimento 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 delBUS. Nella tabella 2.2 una semplice lista dei BUS più usati.

Una importante caratteristica di unBUS è l’essere omeno Plug&Play. Il Plug&Play(dall’inglese collega e usa) è un termine usato per descrivere la capacità di un BUS difacilitare il riconoscimento e il corretto indirizzamento di una periferica, senza dover

Page 25: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 24

Figura 2.11. Organizzazione tipica di un computer moderno. Il colore grigio rappresentai vari BUS, il colore verde la CPU e la memoria e il colore blu le periferiche di input e dioutput. Si può vedere che nei computer odierni si usano molti BUS diversi. La CPU lavoraa una frequenza di clock, la memoria e le schede PCI-express a una frequenza minore, infinetutti gli altri componenti a una frequenza ancora più bassa.

Tabella 2.2. Elenco dei bus più usati

Tipo di BUS BUSGenerico Front Side Bus, Back Side Bus, PCI,

PCIe, Intel QPI, HyperTransportImmagazzinamento dati DMA, PATA, USB MSC, FireWire,

SATA, eSATA, SCSIPeriferiche RS-232, USB, FireWire, External

PCIe

Page 26: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 25

agire manualmente. In pratica significa che basta collegare la periferica al compu-ter e questa sarà configurata automaticamente e pronta all’uso senza l’interventodell’utente. PCI Express, PCI, USB sono tutti BUS Plug&Play.

Tra le porte esterne del computer ricordiamo la porta USB usata per connettereuna moltitudine di periferiche e l’uscita video (VGA o DVI) che serve a collegare ilmonitor. Esistono molte altre porte, alcune quasi non più usate come la porta serialeo altre meno usate come la porta firewire o e-sata.

Tra gli slot interni avremo sicuramente il socket per alloggiare la CPU, varieslot 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 acompiti specifici. Tra queste schede figura la scheda video e la scheda audio maesistono migliaia di tipi di schede diverse. Basti pensare alle schede che servono alcomputer per poter controllare dei macchinari esterni. Per esempio una scheda checontrolli il macchinario che fa le radiografie in un ospedale, la scheda che controlla ilmacchinario per il test delle centraline delle autovetture di un meccanico, la schedache controlla un qualsiasi macchinario industriale e così via.

Per completezza va detto che le schede di espansione di un computer, come peresempio la scheda audio e la scheda video, sono degli adattatori (adapter). La lorofunzione è quella di tradurre i dati da una forma a un’altra. Per esempio un “adattoregrafico” non è nient’altro che un modo per passare dai dati che rappresentano delleimmagini ai segnali elettrici necessari a un monitor per rappresentare quelle imma-gini. In realtà le schede video, audio e anche altre non sono solo dei traduttori di se-gnali da una forma a un’altra. Molti di queste schede sono dotate di un co-processoreche viene sfruttato dalla CPU per demandare dei calcoli specifici. Per esempio tut-ti sanno che le schede grafiche sono dotate di una o più GPU (Graphic ProcessingUnit), cioè dei processori studiati appositamente per fare calcoli di grafica.

2.9.1 Il firmware, le ROM e il BIOSCon il termine firmware si indica un programma che inizializza e prepara un cer-to dispositivo elettronico per le condizioni di normale funzionamento e lo gestiscesecondo gli input esterni. Questo programma fa parte del componente elettronicostesso. Oggigiorno praticamente tutti i dispositivi elettronici sono dotati di un firm-ware. La lavatrice, la TV, un lettore MP3, una radiosveglia, sono tutti esempi diapparecchi dotati di firmware.

I firmware sono contenuti all’interno di memorie non-volatili, cioè che man-tengono i dati memorizzati anche in assenza di alimentazione, e solitamente sonoavviati non appena il dispositivo in cui si trovano viene alimentato. Le memorie checontengono il firmware sono chiamate ROM, cioè memorie di sola lettura (dall’in-glese Read Only Memory). Oggigiorno però, sebbene si continui a usare il termineROM, le memorie usate per contenere il firmware di un dispositivo possono essereriscritte (per esempio per aggiornare il firmware!). Queste ROM riscrivibili sonodelle EEPROM o delle memorie FLASH. Le memorie FLASH sono usate anche inmolti altri ambiti e infatti ne riparleremo in seguito.

Page 27: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 26

Anche i computer hanno bisogno di un firmware. Il firmware dei computer do-mestici è chiamato BIOS, è contenuto in una ROM sulla scheda madre e viene av-viato all’accensione. Si occupa di eseguire tutta una serie di test per verificare ilcorretto funzionamento dell’hardware, esegue i firmware di tutti i componenti delcomputer che ne sono provvisti (schede video, ecc...), mostra sullo schermo le in-formazioni sulla quantità di memoria centrale e su altre caratteristiche del computer,esegue varie configurazioni sulla gestione dell’hardware (che possono essere cam-biate anche dall’utente) e infine avvia, se disponibile, il programma che si trova nellaprima sezione di un’unità esterna, solitamente l’hard-disk. Questo piccolissimo pro-gramma che si trova nella parte iniziale del disco si chiama bootloader ed è coluiche si occuperà di avviare il sistema operativo.

2.10 Le periferiche di input/output2.10.1 L’hard disk (disco rigido)L’hard disk è una periferica di input/output del computer. E può contenere enor-mi quantità di dati, da qui il nome di memoria di massa. Il nome deriva dal fattoche all’interno ci sono uno o più dischi (di vetro o alluminio) ricoperti di materialeferromagnetico in rapidissima rotazione. La superficie di questo disco è idealmentedivisa in tante piccole cellette e delle testine estremamente piccole, possono magne-tizzare 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 disktipici montati attualmente nei computer vanno da diverse centinaia di GB a qualcheTB. La velocità di un hard dipende da quanto velocemente ruotano i dischi e daquanto velocemente si possono spostare le testine. In confronto alla memoria RAM,l’hard disk è molto lento.

2.10.2 Le memorie flashLe memorie flash sono delle periferiche di input/output. Una memoria flash è unparticolare tipo di memoria non-volatile composta da tanti piccoli transistor chenecessitano di semplici segnali elettrici sia per essere letti che scritti.

Le chiavette (o pennette) USB sono memorie flash, così come alcune ROM usateper i firmware, e così anche le schede SD, microSD, ecc…usate in telefoni cellulari omacchine fotografiche digitali. Le dimensioni tipiche massime delle memorie flashsono di circa 64 GB. Ultimamente però si sta anche cercando di sostituire l’harddisk con delle memorie flash con capacità simili. Questi dispositivi sono chiamatiSolid State Drive, cioè unità a stato solido, e hanno il vantaggio, rispetto all’harddisk di non avere alcuna parte in movimento, di essere più veloci e di consumaremolto meno. Il problema è però il costo, per ora troppo elevato.

Page 28: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 27

Figura 2.12. L’hard disk. In alto a sinistra un hard disk visto dall’esterno. In alto a destra unhard disk aperto. In basso a sinistra uno schematizzazione dei componenti interni. Infine inbasso a destra è mostrata la differenza tra la vecchia connessione IDE e la nuova connessioneSATA; il connettore con 4 fili colorati è il cavo dell’alimentazione.

Figura 2.13. Tre memorie flash. A sinistra una scheda SD, al centro il componente che infuturo sostituirà gli attuali hard disk, il Solid State Drive (SSD), e a destra una penna USB.

Page 29: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 28

Figura 2.14. A sinistra un drive ottico. Si nota il cassettino aperto con dentro un discoottico. A destra uno schema del principio di lettura dei dischi ottici. Nella parte bassa le fotoin bianco e nero sono fotografie vere fatte al microscopio elettronico della superficie di CD,DVD e BD rispettivamente.

2.10.3 I drive ottici e i dischi otticiI dischi ottici sono delle memorie di massa per memorizzare dati, ne esistono di di-versi 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 appositilettori chiamati ovviamente Lettore CD, Lettore DVD, e così via, generalmente chia-mati drive ottici. Un Lettore BD potrà leggere sia DVD che CD, un Lettore DVDpotrà leggere anche DVD, mentre un Lettore CD legge solo CD.

Questo tipo di memoria è composta da un disco plastico rigido, un sottile discometallico riflettente e altri strati protettivi. Il disco viene diviso idealmente in tantecellette, 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 vieneproprio dal fatto che viene usata della luce.

Usando dischi scrivibili (R) o riscrivibili (RW) e drive appositi, detti masteriz-zatori, è possibile scrivere dati oltre che leggerli. Quando si è in fasi di scritturail laser aumenta la sua pontenza fino a “bruciare” (in inglese burn) alcune cellettecambiando la loro riflettività e quindi i dati.

La dimensione dei dati che può contenere un disco ottico va dai 700MB di unCD ai 4.7GB di un DVD single layer ai 25GB di un BD single layer.

2.10.4 La cacheLa cache (dal francese nascosto) è una memoria simile alla RAM ma molto piùveloce (e costosa). Non è una periferica ma è in pratica una memoria di supportoche si trova in moltissimi componenti. C’è una cache nella CPU, c’è una cachenegli hard disk e così via. In pratica è una memoria che serve a velocizzare certeoperazioni senza andare a disturbare la memoria RAM. Per questo motivo è anchechiamata memoria tampone o, in inglese, buffer.

Si faccia molta attenzione! La memoria cache, al contrario della RAM, non fada memoria centrale! È solo una memoria di supporto!

Page 30: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 29

La dimensione della cache è solitamente di qualche decina di kB (nelle CPU) oal massimo di qualche MB (negli hard disk). La sua migliore velocità è dovuta alfatto che è direttamente collegata al componente che deve aiutare. I dati non devonopassare per un BUS per raggiungere la memoria cache come invece succede per lamemoria RAM.

2.10.5 Tastiera, mouse, touchpad, …Tastiera, mouse, touchpad sono delle periferiche di input. Servono all’utente perinteragire con il computer, in particolare con il sistema operativo.

La tastiera serve per immettere del testo. Le tastiere si distinguono principalmen-te per la disposizione e il tipo di caratteri che sono prestampati sui tasti. Ognuna diqueste configurazioni viene chiamata layout di tastiera. Per esempio esiste la ta-stiera con il layout italiano, la tastiera con il layout americano, ecc…. C’è anche lapossibilità 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 pri-ma 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 sulloschermo, rappresentazione ideale di un nostro dito. Il mouse è dotato di uno o piùtasti per differenziare le azioni che può compiere il puntatore. Dispositivi analoghial mouse sono il touchpad, la tavoletta grafica e, in un certo senso, il touchscreen.

Figura 2.15. A sinistra in alto una tastiera per computer fissi. A sinistra in basso il layoutdi tastiera italiano. In destra in alto un mouse e a destra in basso un touchpad integrato inun computer portatile.

Page 31: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 30

Figura 2.16. A sinistra un monitor con schrmo CRT, oramai non più usati. Al centro e adestra esempi di monitor con schermo a cristalli liquidi (detti TFT a cristalli liquidi).

2.10.6 Il monitorIl monitor è la periferica di output per eccellenza. Permette al computer di creare inmaniera estremamente veloce (al contrario della stampante, per esempio) delle rap-presentazioni grafiche bidimensionali, molto utili all’utente per interagire facilmentecon il computer.

Lo schermo del monitor si divide in tanti quadratini, chiamati pixel, ognunodei quali diviso a sua volta in tre subpixel. Da questi subpixel può filtrare la lucerispettivamente rossa, blu e verde. L’accensione dei pixel è comandata dai segnaliche 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 de-scrivono le immagini da mostrare (elaborati dalla CPU) in segnali comprensibili dalmonitor. Per questo motivo a volte le schede video vengono chiamate video adapter.

Chiaramente si capisce che, a parità di dimensioni delle schermo, tanto più altosarà il numero di pixel, tanto più definita potrà essere un’immagine. Con il terminerisoluzione dello schermo si indicano le dimensioni dello schermo espresse comenumero 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. Ilnumero totale dei pixel sarà il prodotto di questi due numeri: 1280×800 = 1024000pixel.

La dimensione del monitor viene espressa, come per i televisori, tramite la lun-ghezza della diagonale dello schermo, solitamente espressa in pollici anziché in cen-timetri (1 pollice sono circa 2.54 cm). Si usa la diagonale perché non tutti i monitorhanno 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 unoper attivarli, componendo quindi l’immagine. Oggigiorno quasi tutti i monitor sonoinvece 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 diluce. Le immagini vengono composte agendo sui cristalli liquidi che compongonoi pixel, permettendo alla luce di filtrare più o meno intensamente. Ultimamente si

Page 32: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 31

Figura 2.17. A sinistra una stampante a getto d’inchiostro; in basso si possono vedere lecartucce contenenti il colore che si trovano dentro la stampante. A destra uno scanner conun’immagine poggiata sul piano di scansione.

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 stampanteLa stampante è una periferica di output che stampa su carta o altri supporti del testoo delle immagini.

Esistono principalmente due tipi di stampanti: a getto d’inchiostro e laser. En-trambe possono stampare solo in bianco e nero oppure a colori.

Un parametro importante che distingue una stampante dall’altra è la risoluzionedi 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 rap-presenta appunto il numero di punti che la stampante può stampare al massimo in unpollice (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 professionalepuò arrivare anche a 2400 dpi o più.

Le stampanti possono essere connesse direttamente al PC, tramite per esempioporte USB, ma possono anche essere messe in una rete di computer.

I dati da inviare alla stampante vengono tradotti dal driver della stampante, unsoftware che sa tradurre i dati del computer in dati adatti a essere capiti dalla stam-pante. Tra questi linguaggi “parlati” dalle stampanti ne ricordiamo due molto famo-si: il linguaggio PostScript e il PCL.

2.10.8 Lo scannerLo scanner è una periferica di input. La sua funzione è quella di digitalizzare leimmagini, cioè passare da una fotografia o un testo stampato su carta a un insieme

Page 33: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 32

Figura 2.18. A sinistra un case desktop, cioè orizzontale. Al centro un case tower, cioèverticale. A destra un case tower aperto all’interno del quale si nota la scheda madre coni vari componenti, l’alimentatore nella parte superiore e l’hard disk e il lettore DVD nellaparte frontale nascosti dalla struttura di supporto.

di dati digitali che rappresentano quella fotografia o quel testo in un computer. Inpratica svolge la funzione inversa della stampante.

Lo scopo è molto simile a quello di una fotocamera digitale. La differenza è chela fotocamera digitalizza un’immagine dell’ambiente circostante mentre lo scannerpuò digitalizzare solo immagini stampate.

Un parametro importante che distingue uno scanner dall’altro è la risoluzionedi scansione, cioè quanti punti può usare al massimo lo scanner per rappresentareuna 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 perrappresentare un segmento lungo un pollice (1 pollice corrisponde a 2.54 cm). Unarisoluzione per la scansione amatoriale è circa 300 dpi per il testo e 600 dpi per leimmagini. Una risoluzione professionale può arrivare anche a 2400 dpi o più.

2.11 L’involucro e l’alimentazioneL’involucro che contiene i componenti principali di un computer non portatile sichiama case (ma a volte si usano anche i termini cabinet e chassis) e solitamente ha laforma di un parellelepipedo. Quando il parallelepipedo si sviluppa orizzontalmenteallora si parla di case di tipo desktop mentre se si sviluppa verticalmente allora siparla di case di tipo tower.

Il case contiene la scheda madre e i componenti che sono direttamente connessiad essa (CPU, memoria centrale, schede varie), contiene anche una o più memoriedi massa (hard disk, drive ottici, ecc…) connesse con dei cavi alla scheda madre.All’interno si trova anche l’alimentatore, un apparecchio che con degli appositi cavi,fornisce l’energia elettrica a tutti i componenti del computer.

Oltre a quella di involucro, il case svolge anche una funzione di raffreddamentodel computer. Tutti i componenti elettronici, quando sono in funzione, sprecanodell’energia elettrica che quindi si trasforma in calore (energia termica). Questocalore deve essere eliminato perché, se la temperatura di qualche componente sale

Page 34: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 2. IL COMPUTER 33

troppo, allora si possono avere dei blocchi del computer se non addirittura una verae propria rottura. Il raffreddamento è tipicamente realizzato tramite delle ventole. Inalcuni casi dove il calore sviluppato è poco non si usano ventole ma è sufficiente laquantità di calore trasmessa verso l’esterno dal metallo del case. In altri casi invecedove il calore sviluppato è molto alto, si usano un raffreddamento ad acqua.

2.12 Esercizi• Secondo l’architettura di Von Neumann, cioè secondo il normale schema di

funzionamento dei computer, a cosa serve la memoria?

• Fai degli esempi di memorie di massa e prova a spiegare come immagazzinanoi dati.

• A cosa serve la CPU? E di quali parti è composta?

• Un computer può funzionare senza hard-disk?

• Cos’è un BUS?

• Cos’è il clock di sistema?

• Che differenza c’è tra memoria volatile e memoria permanente? Fai degliesempi.

• Chi è più veloce nel leggere e scrivere i dati? RAM o hard-disk?

• Cos’è un disco ottico? Fai degli esempi specificando la capacità di memoriz-zazione.

Page 35: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

Capitolo 3

La rappresentazione dei dati

Ci sono solamente 10 tipi di personenel mondo: chi comprende ilsistema binario e chi no.

Anonimo

3.1 Qual è il problema?I computer possono usare solo sequenze di sì-no, di alto-basso, di vero-falso. In-somma qualcosa che sia identificabile solo come 1 e 0. Per questo motivo bisognatrovare 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 unpo’ di matematica di base del sistema binario.

3.2 Il sistema binarioUno stesso numero può essere rappresentato in molti modi diversi. Comunementesi usa il sistema decimale, che è un sistema di numerazione posizionale basato su10 simboli diversi (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), chiamati cifre. Posizionale significache il valore della cifra è diverso a seconda della posizione che occupa. Facciamoun esempio. Il numero 152 nel sistema decimale va inteso come

152 = 1 ⋅ 102 + 5 ⋅ 101 + 2 ⋅ 100 = 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 posizio-nale, 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 …

34

Page 36: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 3. LA RAPPRESENTAZIONE DEI DATI 35

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 seguitoriportiamo 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 comeabbiamo fatto poco fa usando la base 4.

base 10 0 1 2 3 4 5 6 7 8 9 …base 2 0 1 10 11 100 101 …

3.2.1 Da binario a decimaleSe abbiamo un numero espresso nel sistema binario e vogliamo convertirlo nel si-stema decimale, l’operazione da fare è molto semplice. Basterà moltiplicare ognicifra per una potenza con un esponente che dipende dalla sua posizione. Prendiamoper esempio il numero 101011

(101011)2 = 1 ⋅ 25 + 0 ⋅ 24 + 1 ⋅ 23 + 0 ⋅ 22 + 1 ⋅ 21 + 1 ⋅ 20 = 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 binarioL’operazione per passare dal sistema decimale al sistema binario è invece più com-plessa. Il procedimento da seguire è quello di dividere sempre per due il numerodi partenza fino ad arrivare a zero e considerando i resti. Leggendo i resti ottenutidall’ultimo al primo, si ottiene il numero in rappresentazione binaria.

Vediamo un esempio. Vogliamo trovare la rappresentazione binaria del numero92 del sistema decimale.

resto92 2 046 2 023 2 111 2 15 2 12 2 01 2 10

Ora non ci resta che prendere i resti dall’ultimo al primo. Il numero 92 delsistema decimale è rappresentato dal numero 1011100 nel sistema binario.

3.2.3 Le operazioni elementariLa 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 = 0con riporto di 1.

Page 37: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 3. LA RAPPRESENTAZIONE DEI DATI 36

Per quanto riguarda la moltiplicazione è anch’essa identica a quella che si fa nelsistema decimale. Basta ricordare, come è ovvio, che 0 ⋅ 0 = 0, che 0 ⋅ 1 = 0 e infineche 1 ⋅ 1 = 1.

3.2.4 I numeri negativi e i numeri frazionari

3.3 Il sistema esadecimaleSe i computer ragionano sempre in termini di sistema binario, perché parlare di altrisistemi? Il motivo è che per gli umani, scrivere i numeri in binario è incredibilmentelungo, faticoso e molto scomodo.

Quando in un programma si vuole scrivere un indirizzo di memoria, questo sa-rà quasi sempre scritto nel sistema esadecimale (16 simboli). Penserà poi un altroprogramma 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 all’esadecimale e viceversaDato che 16 è multiplo di 2, passare da base 2 a base 16 e viceversa è estremamentesemplice.

Per passare da base 2 a base 16 è sufficiente raggruppare i bit a gruppi di 4 esostituire ogni gruppo di 4 bit con la corrispondente cifra esadecimale.

Per passare da base 16 a base 2 è sufficiente sostituire ogni cifra esadecimale coni 4 bit che la rappresentano in forma binaria.

3.4 I tipi di dato e le codificheIl computer per lavorare sui dati, ha bisogna che questi siano espressi come sequenzedi 1 e di 0. L’operazione di trasformazione dei dati in sequenze di 1 e di 0, cioè innumeri, prende il nome di procedimento di codifica.

In realtà il concetto di “codificazione” è precedente all’uso dei computer. Bastipensare al famosissimo alfabeto Morse. Con soli due simboli, corto e lungo, è pos-sibile rappresentare lettere e numeri grazie a opportune sequenze. Il segnale può poiessere un segnale elettrico o una luce o un suono.

La prima cosa da chiederci è quanti bit servono per rappresentare una certa infor-mazione. Immaginiamo di voler identificare le dita di una mano. Abbiamo bisognodi 10 codici diversi, per esempio è naturale assegnare a ogni dito un numero, da 0 a9. Se ora vogliamo passare ai numeri binari si capisce che avremo bisogno di almeno4 bit. Infatti il massimo numero che posso ottenere con 4 bit è 1111 che corrispondeal numero 15. Se avessi usato solo 3 bit al massimo sarei potuto arrivare a 111 checorrisponde al numero 7. Quindi un numero insufficiente per le 10 dita.

Page 38: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 3. LA RAPPRESENTAZIONE DEI DATI 37

Tabella 3.1. I numeri da 0 a 15 rappresentati in 3 sistemi di numerazione diversi.

decimale esadecimale binario0 0 00001 1 00012 2 00103 3 00114 4 01005 5 01016 6 01107 7 01118 8 10009 9 1001

10 A 101011 B 101112 C 110013 D 110114 E 111015 F 1111

In generale il numero massimo di combinazioni ottenibili con 𝑛 bit è 2𝑛. L’al-fabeto latino ha 26 lettere, se volessi assegnare a ciascuna una combinazione di bitdiversa, cioè un numero diverso, avrei bisogno di 5 bit, perché 25 = 32.

3.4.1 I numeriLa maniera in cui vengono rappresentati i numeri in un computer l’abbiamo giàvista. Si tratta solamente di scriverli in rappresentazione binaria.

3.4.2 Le stringheUn altro tipo di dato sono i caratteri. L’insieme di più caratteri forma le cosiddettestringhe (di testo).

Come memorizzare una poesia in forma di 1 e 0? L’operazione è molto sem-plice. È sufficiente usare una diversa sequenza di bit per ogni lettera o simbolo e ilgioco è fatto. Una delle prime tabelle che vennero usate per trasformare i caratteriin sequenze di 1 e di 0 è la codifica ASCII (vedi App. A).

La codifica ASCII è una tabella di corrispondenza tra simboli e numeri, vienedetta infatti codifica dei caratteri. Comprende 128 simboli, pertanto sono necessarialmeno 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, pertantoanche per la codifica ASCII usano 8 bit. Dato che il primo bit è inutile sarà sempremesso uguale a 0.

Page 39: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 3. LA RAPPRESENTAZIONE DEI DATI 38

Come esercizio provate a creare un file di testo con il blocco note di Windowso in generale con un editor di testi. Scrivete nel file la parola ciao senza andare acapo e salvate. Quanto sarà la dimensione del file?

La tabella ASCII fu creata sostanzialmente per poter scrivere in inglese. Co-me potete notare infatti mancano molti simboli, per esempio la codifica ASCII nonè sufficiente per poter scrivere perfettamente in italiano perché mancano le lettereaccentate. Figuriamoci altre lingue come l’arabo, il cinese, il giapponese, ecc...

Per questo motivo, oggigiorno si usa una tabella molto più grande, un’altra codi-fica dei caratteri, chiamata UNICODE/UTF-8. Contiene tutti i simboli per tutte lescritture del mondo e non solo. Contiene anche simboli per scrivere la matematica,alfabeti fonetici, lingue morte, ecc... Il totale dei simboli che può rappresentare è ben1 114 111. I primi 128 simboli UNICODE/UTF-8 sono identici a quelli dell’ASCIIper motivi di compatibilità con il passato.

3.4.3 Le immaginiCome possiamo rappresentare un bellissimo panorama con dei semplici 1 e 0?! An-che in questo caso è possibile. La prima cosa da fare è dividere l’immagine in tantiquadratini, che prendono il nome di pixel. Una volta specificata la dimensione inpixel dell’immagine è 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 cosiddettiprimari: rosso, verde e blu. La soluzione è quindi di dare per ogni pixel la per-centuale 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 diquell’immagine ma tanto più sarà grande il file. Stesso discorso con i colori. Tantipiù 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 massimo28 = 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.

3.4.4 I suoniIl suono, come è noto, è una vibrazione. L’intensità della vibrazione viene percepitacome l’intensità del suono (il suo “volume”) mentre la sua frequenza viene percepitacome una diversa altezza, cioè in pratica frequenze maggiori danno luogo a “note”più alte.

Tramite un microfono le vibrazioni dell’aria vengono convertite in un segnaleelettrico. Il passo successivo è quello di misurare l’intensità del suono a intervalli ditempo prefissati (campionamento). Infine non resta che trasformare queste intensitàin numeri binari, usando un certo numero di bit. Chiaramente più rapidamente mi-surerò l’intensità e più bit userò per rappresentare l’intensità tanto più rispondenteal vero sarà il suono digitalizzato ma anche tanto più grande sarà lo spazio occupato.

Page 40: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 3. LA RAPPRESENTAZIONE DEI DATI 39

Figura 3.1. Esempio di digitalizzazione di un’immagine. L’immagine viene divisa in qua-dratini, detti pixel, e a ogni quadratino viene attribuito un colore medio espresso da 3 numeri,che rappresentano le percentuali di rosso, verde e blu necessaria per ottenere quel colore.

Figura 3.2. RGB.

Page 41: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 3. LA RAPPRESENTAZIONE DEI DATI 40

Figura 3.3. RGB esempio

Figura 3.4. Esempio di suono preso da un microfono. Si noti l’intensità in funzione del tem-po. 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 ilsuono digitalizzato sarà più simile al suono originale.

3.5 Esercizi• Perché è così importante rappresentare i dati sotto forma di numeri e in parti-

colare sotto forma di numeri nel sistema binario?

• Scrivi i numeri da 1 a 20 usando un sistema in base 2.

• Scrivi i numeri da 1 a 20 usando un sistema in base 3.

• Scrivi i numeri da 1 a 20 usando un sistema in base 16.

• Il numero 10110110 del sistema binario a che numero in base 10 corrisponde?

• Esprimi il tuo anno di nascita, il tuo mese di nascita (sotto forma numerica,cioè 4 per aprile), e il tuo giorno di nascita con il sistema binario.

• Prova a dimostrare il procedimento di passaggio da decimale a binario. (Moltodifficile)

• Somma i numeri binari 1011010 e 10101010. Trasforma poi questi numeri,sia quelli di partenza che il risultato, nel sistema decimale. Torna tutto?

• Quanti numeri possono essere rappresentati con 3 bit?

• Cos’è una codifica dei caratteri. Fai un esempio.

Page 42: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 3. LA RAPPRESENTAZIONE DEI DATI 41

• Quando il computer fa dei calcoli, come rappresenta per esempio il numero17? Con la codifica ASCII o semplicemente trasformando 17 in base 2?

• Spiega come avviene la digitalizzazione di un’immagine. Qual è lo strumentoche digitalizza le immagini?

• Cos’è un pixel?

• Spiega come avviene la digitalizzazione di un suono.

• Crea tu una codifica per i giorni della settimana.

Page 43: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

Capitolo 4

Algoritmi, strutture dati eprogrammi

An algorithm must be seento be believed.

Donald Knuth

In questo capitolo studieremo in dettaglio cos’è un algoritmo e come rappresen-tarlo. Introdurremo le più importanti strutture di dati e mostreremo alcuni program-mi molto semplici.

4.1 Algoritmi e programmiAbbiamo già discusso brevemente nell’introduzione (vedi par. 1.2.1) cosa è un algo-ritmo. Un algoritmo è definito come una sequenza finita di operazioni, chiaramentecomprensibili all’esecutore, per risolvere un problema.

Il termine algoritmo deriva dalla trascrizione latina del nome del matematicopersiano Muhammad al-Khwarizmi (780 – 850), che è considerato uno dei primiautori ad aver fatto riferimento a questo concetto. In realtà sequenze finite di pas-si per risolvere un problema erano già usate fin dall’antica Grecia. Da ricordaresicuramente l’algoritmo di Euclide per trovare il massimo comun divisore tra duenumeri interi e il metodo di Archimede per la trisezione di un angolo.

Spesso un algoritmo ha degli input (immissione in inglese) e degli output (emis-sione/in uscita in inglese). L’input è l’insieme degli elementi in ingresso, spesso deidati, mentre l’output è l’insieme degli elementi in uscita, spesso dei dati. Facendoun esempio molto stupido, un input possono essere gli ingredienti di una ricetta,l’algoritmo è una ricetta ben scritta e l’output è il piatto pronto.

Sebbene la storia, soprattutto matematica, sia costellata di algoritmi, il loro verouso cominciò con l’inizio del ventesimo secolo. I matematici, per poter risolverealcune questioni fondamentali della matematica, cominciarono a creare dei modelliper 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

42

Page 44: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 4. ALGORITMI, STRUTTURE DATI E PROGRAMMI 43

nella risoluzione di un problema (complessità computazionale) oppure se un algorit-mo è 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 introdurregli algoritmi secondo la matematica moderna. Per i nostri scopi ci accontenteremodi dire che un algoritmo deve essere:

• Finito: l’algoritmo deve essere composto da un numero finito di passi, richie-dere una quantità finita di dati in ingresso e l’esecuzione deve avere terminedopo un tempo finito. Per esempio, durante la cottura della pasta, per con-trollare di aver messo la corretta quantità di sale, devo assaggiare la pasta eeventualmente aggiungere del sale. Questa operazione può essere eseguita piùvolte ma non all’infinito!

• Deterministico: a ogni passo, il successivo deve essere uno e uno solo, bendeterminato. Inoltre a parità di input devo sempre ottenere lo stesso output.

• Non ambiguo: i passi devono essere interpretabili in modo univoco dall’ese-cutore. Per esempio una ricetta di cucina deve essere così chiara e precisa chechiunque sia in grado di leggerla capisca, preparerà sempre lo stesso identi-co piatto con lo stesso sapore. Le operazioni che compongono un algoritmopossono anche essere complesse (es. Nella preparazione della pasta potrebbeesserci scritto “prepara il ragù”), purché l’esecutore sappia esattamente co-sa deve fare oppure abbia un algoritmo apposito per eseguire quell’istruzionecomplessa (es. “La ricetta del ragù”).

• Generale: è bene che un algoritmo sia il più generico possibile per tutta unaclasse di problemi simili. In pratica deve sapere gestire correttamente tutti ipossibili valori di input per quel particolare problema. Per esempio nel casodella ricetta per la pasta con il ragù, l’algoritmo deve permettere di prepararela giusta quantità di pasta a seconda delle persone, deve regolare i tempi dicottura a seconda del tipo di pasta che si vuole usare, ecc…

I fondamenti matematici degli algoritmi e la nascita dei primi computer furonofondamentali per la nascita dell’informatica come la conosciamo oggi. Infatti, seper ottenere un certo risultato (risolvere un certo problema) esiste un procedimentoinfallibile, che può essere descritto in modo non ambiguo fino ai dettagli, e condu-ce sempre all’obiettivo desiderato in un tempo finito, allora esistono le condizioniper affidare questo compito a un computer, semplicemente descrivendo l’algoritmoin questione in un programma scritto in un opportuno linguaggio comprensibile alcomputer (in particolare alla CPU).

È interessante, a questo proposito, ricordare la storia della baronessa Ada Love-lace, una grande amica di Charles Babbage, l’inventore dellamacchina analitica cheabbiamo visto nel paragrafo 2.3. Ada, figlia del famoso poeta Lord Byron, s’interes-sò fin da giovane alle scienze matematiche e in particolare al lavoro di Babbage. Nel1842 Charles Babbage fu invitato a dare un seminario all’Università di Torino sul-la sua macchina analitica. Luigi Menabrea, un giovane ingegnere italiano, e futuro

Page 45: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 4. ALGORITMI, STRUTTURE DATI E PROGRAMMI 44

primo ministro dell’Italia, scrisse sulla conferenza di Babbage in francese. Babbagechiese ad Ada Lovelace di tradurre in inglese alcuni interessanti articoli di Menabreae di aggiungere eventuali note. Ada per circa 9 mesi fece questo lavoro e in una notadescrisse quello che oggi viene considerato il primo programma di computer dellastoria: un algoritmo per calcolare i cosiddetti numeri di Bernoulli scritto usando leistruzioni della macchina analitica di Babbage. Ada è considerata quindi la primaprogrammatrice di computer nella storia e il linguaggio di programmazione Ada èstato chiamato così in suo onore.

4.2 Tipi di dati e istruzioniI dati, a seconda dell’oggetto che rappresentano, sono classificati in diversi tipi:

• numerici. Rappresentano dei dati su cui si possono effettuare dei calcoli nu-merici.

• stringhe (alfanumerici). Rappresentano dei simboli, come caratteri alfabetici,numeri, ecc…tutto quello che riguarda la scrittura.

Sono possibili anche delle strutture datimolto più complesse ma le vedremo piùavanti.

Durante un algoritmo, i dati possono essere immagazzinati in una costante o inuna variabile. Possiamo immaginare sia le costanti che le variabili come delle casel-le 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 lavariabile. Le variabili e le costanti sono identificate da un nome. Per esempio, in unalgoritmo che permette il calcolo dell’area del cerchio, potremmo definire all’iniziola costante pigreco e “metterci dentro“ un valore sufficientemente vicino a 𝜋 (comesapete 𝜋 è 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 valorealla costante o variabile. È sembra buona norma inizializzare le variabili. Per esem-pio nel caso di variabili numeriche si potrebbe assegnare all’inizio sempre il valore0. Questo permette di evitare molti problemi, tra i quali, per esempio, la lettura diuna variabile che ancora non è stata creata o se è stata creata non contiene alcunvalore.

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 dallatastiera, per poi essere assegnato a una variabile. leggi(raggio) chiede diinserire un valore da tastiera e, una volta inserito, questo valore verrà “messodentro” la variabile raggio.

• Istruzione di scrittura, nel senso di riportare in output, per esempio sulloschermo o sulla stampante, un messaggio o il contenuto di una variabile.scrivi(raggio) scrive sullo schermo il valore contenuto nella variabile rag-gio.

Page 46: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 4. ALGORITMI, STRUTTURE DATI E PROGRAMMI 45

• Istruzione di assegnazione, come già detto sopra consiste nell’assegnare a unavariabile un certo valore. A = 10 oppure A = B oppure ancora A = B + C sonotutte operazioni di assegnazione. Per comprenderle, leggete prima il valore adestra dell’uguale e poi immaginate di metterlo dentro la variabile scritta asinistra dell’uguale.

A seconda del linguaggio di programmazione usato, si avranno a disposizio-ne diversi tipi di dato e diverse istruzioni utilizzabili. Quelli elencati sopra sonocomunque i tipi di dato e le istruzioni che si possono trovare in tutti i linguaggi.

4.3 La rappresentazione di un algoritmoPer rappresentare un algoritmo si hanno due possibilità. O lo si rappresenta grafi-camente 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 (italia-no, inglese, …), un linguaggio di programmazione (C++, Python, Java, …) oppureun finto linguaggio di programmazione (pseudocodice).

Parleremo della rappresentazione tramite i diagrammi di flusso e tramite lo pseu-docodice. In realtà questi due metodi di rappresentazione degli algoritmi sono utilisolamente per algoritmi relativamente semplici, per permettere agli studenti di im-parare a pensare nella maniera corretta. In realtà, come riportato nella citazione ainizio capitolo, gli algoritmi vanno provati per vedere se funzionano e come fun-zionano. Gli informatici e i programmatori scrivono sempre gli algoritmi con unlinguaggio di programmazione a loro scelta per poi farli eseguire al computer. I dia-grammi di flusso e lo pseudocodice esistono invece solo sulla carta e per provare unalgoritmo l’unico modo è quello di “eseguirlo a mano” leggendolo.

4.3.1 Il diagramma di flussoI diagrammi di flusso (in inglese flow chart) sono un caso particolare di diagrammia blocchi e servono per rappresentare graficamente il flusso di un algoritmo.

In figura 4.1 sono rappresentati i blocchi principali che si usano nei diagrammidi 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.

La lettura di un diagramma di flusso procede in maniera sequenziale: 1. si partedal blocco iniziale; 2. si segue la freccia in uscita; 3. si giunge al blocco successivoe si effettua l’operazione descritta nel blocco; 4. si procede iterando i passi 2 e 3 finoa giungere al blocco finale.

Non tutte le combinazioni di questi simboli corrispondono a un algoritmo. Undiagramma di flusso rappresenta un algoritmo se: 1. inizia con il blocco iniziale efinisce 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 divalidità.

Le condizioni di validità dicono che le frecce entranti e uscenti devono esseresempre come quelle in figura 4.1. Non ci possono essere più o meno frecce o frecce

Page 47: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 4. ALGORITMI, STRUTTURE DATI E PROGRAMMI 46

(a) Blocco iniziale. (b) Blocco finale.

(c) Blocco dielaborazione.

(d) Blocco diinput/output.

(e) Blocco di controllo.

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

START Area quadrato

END Area quadrato

IN Lato

Area = Lato * Lato

OUT Area

Figura 4.2. Diagramma di flusso che rappresenta un algoritmo estremamente semplice peril calcolo dell’area di un quadrato, dando in input la lunghezza del lato. Come si vedenel blocco iniziale e finale, il nome che abbiamo dato a questo banale algoritmo è “Areaquadrato”.

Page 48: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 4. ALGORITMI, STRUTTURE DATI E PROGRAMMI 47

con dei versi cambiati. Inoltre, con le opportune condizioni, deve essere possibileraggiungere ogni punto del diagramma e raggiungere sempre il blocco finale.

Nella figura 4.2 è riportato un semplice diagramma di flusso che rappresenta unalgoritmo per il calcolo dell’area di un quadrato, dando in input la lunghezza dellato.

In questi appunti, useremo i diagrammi di flusso e lo pseudocodice generatidal programma gratuito AlgoBuild (http://algobuild.com/, freeware, scritto inJava).

4.3.2 Lo pseudocodiceLo pseudocodice, detto a volte anche pseudocodifica, è un altro modo di rappresen-tare un algoritmo. Anziché essere grafico, come i diagrammi di flusso, è testuale.In maniera molto semplice, lo si può pensare come a una descrizione a parole di ciòche fa l’algoritmo.

In realtà, come per i diagrammi di flusso, lo pseudocodice ha delle regole e delleistruzioni ben precise. Ecco un esempio di pseudocodice del solito algoritmo “Areaquadrato”.

1 BEGIN "Area quadrato"2 IN Lato3 Area = Lato * Lato4 OUT Area5 END "Area quadrato"

In questi appunti, useremo i diagrammi di flusso e lo pseudocodice generatidal programma gratuito AlgoBuild (http://algobuild.com/, freeware, scritto inJava).

4.4 Qualche esempio semplice di algoritmoNell’introduzione avevamo fatto un esempio di vita quotidiana per descrivere unalgoritmo. Si supponeva che un ragazzo volesse vedere un film in DVD ma cheoramai si fosse messo sul divano e non si volesse alzare. Appena un componentedella sua famiglia si avvicina lo chiama per fargli mettere il DVD. Da un punto divista formale le istruzioni che il ragazzo dà al componente della famiglia sono unesempio di algoritmo.

In figura 4.3 vediamo alcuni possibili algoritmi che il ragazzo potrebbe fornire almalcapitato (per forzare un po’ la situazione potremmo pensare che il ragazzo possafornire l’algoritmo solamente scrivendolo sulla carta).

Il primo algoritmo è il più semplice e si compone solamente di una sequenza diblocchi di elaborazione (i rettangoli). Il secondo prevede la possibilità che il mal-capitato chieda quale DVD il ragazzo voglia vedere. Questo viene espresso grazieal blocco di input (il parallelogramma) in cui, come potete notare, il nome del filmviene memorizzato nella variabile X. Infine l’ultimo esempio è un po’ più generico

Page 49: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 4. ALGORITMI, STRUTTURE DATI E PROGRAMMI 48

START Visione DVD

END Visione DVD

Accendi la TV

Prendi il DVD di Ritorno al futuro

Prendi il disco all'interno

Accendi il Lettore DVD

Apri il cassetto del Lettore DVD

Inserisci il DVD

Chiudi il cassetto del Lettore DVD

Spingi Play

START Visione DVD

END Visione DVD

Accendi la TV

OUT "Quale film?"

IN X

Prendi il DVD X

Prendi il disco all'interno

Accendi il Lettore DVD

Apri il cassetto del Lettore DVD

Inserisci il DVD

Chiudi il cassetto del Lettore DVD

Spingi Play

START Visione DVD

END Visione DVD

Accendi la TV

OUT "Quale film?"

IN X

Prendi il DVD X

if Dischi presenti = 1F T

Prendi il disco 1 Prendi il disco all'interno

Accendi il Lettore DVD

Apri il cassetto del Lettore DVD

Inserisci il DVD

Chiudi il cassetto del Lettore DVD

Spingi Play

Figura 4.3. Tre esempi di algoritmi per comandare a una persona di farci vedere un film inDVD. A sinistra un algoritmo molto semplice dove si usa solamente il blocco istruzione. Lacentro un algoritmo leggermente più generico, dove viene prevista la possibilità di scegliereil film. A destra un algoritmo che prevede la possibilità di trovare nella custodia del DVDuno o più dischi.

e prevede, oltre alla scelta del film, anche come comportarsi se nella custodia ven-gono trovati uno o più dischi. Questo è rappresentato grazie al blocco di controllo(il rombo; F sta per FALSE, falso in inglese, e T sta per TRUE, vero in inglese).

Questi algoritmi non esauriscono di certo tutte le possibilità che potrebbe incon-trare l’esecutore, cioè la persona che deve mettere il DVD. Per esempio il ragazzopotrebbe chiedere di vedere un film che però non è presente in casa (perché mai ac-quistato o perché prestato ad amici). Oppure una volta aperta la custodia potrebbenon esserci alcun disco all’interno (perché perso oppure rimasto dentro al lettoreDVD). E così molte altre possibilità. Se l’esecutore si trovasse di fronte a uno diquesti casi non saprebbe cosa fare e se ne andrebbe. Passando a un contesto più rea-le, la stessa cosa accade per i computer. Quando la CPU esegue un programma, se aun certo punto si presenta una situazione non prevista (per esempio il programma habisogno di aprire un file ma questo file non esiste e il programmatore non ha pensatoa questa possibilità) allora il programma si blocca.

Page 50: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 4. ALGORITMI, STRUTTURE DATI E PROGRAMMI 49

START Lotteria

END Lotteria

OUT "Inserisci un numero"

IN X

if X = "83"F T

OUT "Non hai indovinato!" OUT "Hai indovinato!"

1 BEGIN "Lotteria"2 OUT "Inserisci un numero"3 IN X4 IF X = "83" GOTO 75 OUT "Non hai indovinato!"6 GOTO 87 OUT "Hai indovinato!"8 END "Lotteria"

Figura 4.4. Algoritmo “Lotteria” per determinare se il numero inserito è uguale al numerodato.

4.5 Condizioni, cicli e l’istruzione GOTONel corso degli anni la maniera di scrivere i programmi si è evoluta di pari passocon i nuovi comandi messi a disposizione dai vari linguaggi di programmazione. Iprogrammi realizzati fino agli anni 1970 erano una lunga sequenza di istruzioni. Ilparadigma di programmazione di questi primi programmi, cioè la maniera in cuivenivano scritti, prende il nome di programmazione imperativa.

Con l’aumentare della complessità della logica dei programmi, i codici diventa-vano sempre più complessi e non facili da manutenere, soprattutto a causa dell’istru-zione GOTO, che permetteva di passare da una parte all’altra del programma. InfattiGOTO significa in inglese vai a.

Per capire di cosa stiamo parlando, proviamo a scrivere in pseudocodice alcu-ni algoritmi interessanti. In particolare vogliamo far vedere come sono difficili daleggere certi algoritmi scrivendoli con l’istruzione GOTO.

Partiamo da un semplice algoritmo che abbia una condizione. Per esempio scri-viamo un algoritmo che richieda un numero in input e che stampi la scritta “Haiindovinato!” se il numero inserito è uguale a 83 oppure “Non hai indovinato!” se ilnumero inserito è diverso da 83. In figura 4.4 viene mostrato il diagramma di flussodi questo algoritmo e la sua scrittura in pseudocodice.

Si noti la difficoltà di leggere questo algoritmo usando l’istruzione GOTO. Que-sto appena visto è il più semplice esempio di condizione scritta usando l’istruzioneGOTO.

Ora vediamo invece come rappresentare un ciclo, cioè la ripetizione di una certasequenza di operazioni fino al raggiungimento di una condizione prefissata. Faccia-mo un esempio. Supponiamo di voler scrivere un algoritmo che stampi tutti i numerida 1 fino a 100. Una maniera stupida di scrivere questo algoritmo potrebbe esserequella di mettere 100 istruzioni di output del tipo “Scrivi 1”, “Scrivi 2”, “Scrivi 3”

Page 51: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 4. ALGORITMI, STRUTTURE DATI E PROGRAMMI 50

e così via. Chiaramente questo è un modo pessimo perché non generalizzabile.Una maniera intelligente è invece quella rappresentata dal diagramma di flusso

nella figura 4.5. Anche in questo caso si noti la difficoltà di leggere questo algoritmousando l’istruzione GOTO.

1 BEGIN "Contatore"2 N = 13 IF N = 100 GOTO 74 OUT N5 N = N + 16 GOTO 37 END "Contatore"

Figura 4.5. Diagramma di flusso e pseudocodice dell’algoritmo “Contatore” per stamparei numeri naturali da 1 a 99.

4.6 La programmazione strutturata e proceduraleCome abbiamo visto, con l’aumentare della complessità della logica dei programmi,i codici diventavano sempre più complessi e non facili da manutenere, soprattutto acausa dell’istruzione GOTO, che permetteva di passare da una parte all’altra del pro-gramma. Nel 1966 i matematici Corrado Böhm e Giuseppe Jacopini enunciano edimostrano un famoso teorema, in cui si afferma che ogni algoritmo è sempre espri-mibile usando tre sole strutture di controllo: la sequenza, la selezione e l’iterativa(detta anche ciclo). In questo modo dimostrarono che è sempre possibile eliminarel’istruzione GOTO dai programmi. Queste particolari strutture dovevano venire mes-se a disposizione dal linguaggio di programmazione usato, oppure dovevano esserecreate dal programmatore stesso.

Da quel momento nacque quindi la programmazione strutturata, cioè un para-digma di programmazione secondo il quale i programmi andavano scritti in manierachiara e organizzata, usando delle strutture di controllo come, appunto, la sequenza,la selezione, l’iterativa o altre derivate da esse. In realtà l’istruzione GOTO rimasein molti linguaggi di programmazione anche se fu fortemente sconsigliati il suo uso.

Page 52: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 4. ALGORITMI, STRUTTURE DATI E PROGRAMMI 51

Attualmente tutti i programmi sono scritti con uno stile ancora più moderno, madi cui non ci occuperemo, chiamato programmazione orientata agli oggetti. Que-sto non significa che imparare la programmazione strutturata è inutile! Tutte lestrutture di controllo della programmazione strutturata sono presenti anche nellaprogrammazione orientata agli oggetti.

Vedremo ora le strutture di controllo basilari secondo il teorema di Böhm-Jacopinie la loro rappresentazione: la struttura di sequenza, struttura di selezione, strutturaiterativa e alcune strutture derivate.

Per approfondire si veda il link http://it.wikipedia.org/wiki/Struttura_di_controllo.

4.6.1 La struttura di sequenzaLa struttura di sequenza permette semplicemente l’esecuzione di più istruzioni unadopo l’altra. Queste istruzioni possono essere di qualsiasi tipo. Nella figura 4.6è rappresentata la struttura di sequenza tramite un diagramma di flusso e in pseu-docodice. Con l’espressione “istruzione generica” intendiamo un’istruzione o unastruttura.

Istruzione generica

Istruzione generica ...ISTRUZIONE GENERICA 1ISTRUZIONE GENERICA 2...

Figura 4.6. La struttura di sequenza. A sinistra la sua rappresentazione in un diagramma diflusso e a destra la sua rappresentazione in pseudocodice.

4.6.2 La struttura di selezioneLa struttura di selezione serve per eseguire diverse istruzioni a seconda che unacerta condizione sia vera oppure no. Nella figura 4.7 è rappresentata la strutturadi selezione tramite un diagramma di flusso e in pseudocodice. Con l’espressione“istruzione generica” intendiamo un’istruzione o una struttura.

4.6.3 La struttura iterativaLa struttura iterativa permette la ripetizione di un’istruzione (ciclo) finché è verifica-ta una certa condizione. Quando la condizione non è più verificata la struttura termi-na e si passa alla struttura successiva. La verifica della condizione può essere fatta

Page 53: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 4. ALGORITMI, STRUTTURE DATI E PROGRAMMI 52

Istruzione generica

Condizione

Istruzione generica

TRUEFALSE

...IF condizione

THEN istruzione generica 1ELSE istruzione generica 2

ENDIF...

Figura 4.7. La struttura di selezione. A sinistra la sua rappresentazione in un diagramma diflusso e a destra la sua rappresentazione in pseudocodice.

Condizione

Istruzione generica

TRUE

FALSE

Condizione

Istruzione generica

TRUE

FALSE

...WHILE condizioneDO istruzione generica...

...REPEAT istruzione genericaUNTIL condizione...

Figura 4.8. La struttura iterativa. A sinistra la struttura iterativa con controllo in testa. Adestra la struttura iterativa con controllo in coda.

Page 54: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 4. ALGORITMI, STRUTTURE DATI E PROGRAMMI 53

prima dell’istruzione (controllo in testa) oppure può essere fatta dopo l’istruzione(controllo in coda): nel secondo caso l’istruzione viene eseguita almeno una volta.Nella figura 4.8 sono rappresentate la struttura iterative tramite diagramma di flussoe pseudocodice. Con l’espressione “istruzione generica” intendiamo un’istruzioneo una struttura.

4.6.4 Altre strutture derivateDa fare...

4.7 Esempi semplici4.7.1 Stampare la tabellina del 2 fino a un numero datoProvate da soli a scrivere lo pseudocodice per questo algoritmo ma prima di tuttocercate di eseguire l’algoritmo passo passo, a mente o a voce alta. Solo in questo

START Tabellina 2

END Tabellina 2

OUT "Fino a che numero devo stampare la tabellina?"

IN Nmax

n = 2

while n <= NmaxF

T

OUT n

n = n + 2

Figura 4.9. Diagramma di flusso di un algoritmo che stampa la tabellina del due fino a unnumero massimo dato.

Page 55: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 4. ALGORITMI, STRUTTURE DATI E PROGRAMMI 54

modo potrete capire come funzionano gli algoritmi (An algorithm must be seen tobe believed).

4.8 La programmazione procedurale: sottoprogram-mi e funzioni

Nello stesso periodo si afferma anche la programmazione procedurale, cioè uno stiledi programmazione in cui era possibile creare dei blocchi di codice, detti procedure,che potevano essere richiamati dal programma principale, quante volte si voleva.

Immaginate un programma che deve eseguire spesso una certa operazione, peresempio risolvere un’equazione di secondo grado. È scomodo e problematico ripe-tere ogni volta il codice per la risoluzione! È invece molto più semplice scrivere ilcodice una volta sola e poterlo richiamare quando serve.

4.9 Alcuni esempi di algoritmi “veri”Esistono un’infinità di algoritmi specifici che vengono usati dalle macchine che cicircondano. Qui di seguito una lista di algoritmo o classi di algoritmi molto famosi.Fare delle tesine a gruppi da inserire nelle dispense.

Ecco alcuni link di approfondimento:

• Algoritmi di ordinamento

• Algoritmi di ricerca

• Come fa Google Maps a trovare il percorso migliore? L’algoritmo di Dijkstra

• Algoritmi di compressione Breve corso sulla compressione dei file

4.10 Strutture datiTipi di dato: numero intero, intero lungo, stringa.

Strutture dati: array, matrice, record, lista, grafi, alberi

4.11 La creazione dei programmiUn computer può eseguire delle istruzioni solo se queste sono sotto forma di linguag-gio macchina, che è sostanzialmente la “lingua” parlata dalla CPU. I programmi percomputer quindi non sono altro che lunghissime sequenze di istruzioni scritte inlinguaggio macchina.

Un programmatore, cioè la persona che scrive un programma, non deve diretta-mente scrivere dei file contenenti le istruzioni in linguaggio macchina. Ciò sarebbeestremamente difficile per vari motivi: prima di tutto perché le istruzioni vanno

Page 56: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 4. ALGORITMI, STRUTTURE DATI E PROGRAMMI 55

scritte in binario; poi perché si hanno a disposizione solo istruzioni molto semplici,rendendo anche semplici programmi veramente lunghi da scrivere; infine perché tut-ta la gestione della memoria è manuale, cioè è il programmatore che deve decideregli indirizzi della memoria centrale dove memorizzare le informazioni e così via.

Normalmente un programmatore scrive i programmi usando un linguaggio diprogrammazione ad alto livello, cioè un linguaggio che usa parole chiave e comandipresi dal linguaggio umano (solitamente l’inglese). Il primo linguaggio di program-mazione ad alto livello è stato il FORTRAN, tutt’ora usato in ambito scientifico nel-le sue versioni più moderne. La maggior parte dei programmi odierni è però scrittausando il C, il C++, il C# o il Visual Basic.

Il programmatore salva ciò che scrive in uno o più file di testo. Il programmacosì scritto non può essere eseguito dal computer perché non è scritto in linguag-gio macchina! Questo insieme di file viene infatti chiamato codice sorgente delprogramma.

Per trasformare il sorgente, scritto con un linguaggio ad alto livello, in un pro-gramma vero e proprio, cioè contenente istruzioni in linguaggio macchina, bisognaeffettuare la cosiddetta compilazione. Per ogni linguaggio di programmazione esi-ste un programma speciale, chiamato compilatore, che traduce quel particolare lin-guaggio in istruzioni del linguaggio macchina. Possiamo immaginare il compilatorecome un traduttore che traduce un libro scritto in una lingua (per esempio C++) inun libro in un altra lingua (linguaggio macchina). Alla fine quello che si ottiene è unprogramma eseguibile (in Windows i file eseguibili hanno comunemente l’estensio-ne .exe). Una volta ottenuto il programma, questo può essere eseguito quante voltesi vuole. I codici sorgenti non sono più necessari, a meno che si vogliano apportaredelle modifiche. In quel caso bisogna ovviamente ricreare di nuovo il programma apartire dai nuovi sorgenti.1

Esistono anche altri linguaggi come il Java, il PHP, il Python, ecc…in cui il sor-gente non viene tradotto per creare un file in linguaggio macchina ma viene tradottoriga per riga, tutte le volte che viene eseguito. Questi linguaggi si dicono inter-pretati. In questo caso la traduzione è affidata a un programma speciale chiamatointerprete. Per continuare con l’analogia delle traduzione da una lingua all’altra,pensate all’interprete simultaneo. Il vantaggio di questo approccio è quello di nonavere file eseguibili che per loro natura sono adatti solo a un tipo di CPU e di siste-

1In realtà la compilazione non produce direttamente il file eseguibile, ma un file intermedio chia-mato programma oggetto. Quando il programmatore scrive un programma, spesso usa funzioni giàscritte da altre persone e presenti in particolari software, chiamati librerie. Il codice oggetto da soloquindi non può funzionare senza queste librerie. Il processo per trasformare un programma ogget-to in un vero e proprio eseguibile è il linking, dall’inglese collegamento. In pratica un particolaresoftware chiamato linker si occupa di “mettere insieme” nello stesso file, il codice oggetto creato dalcompilatore e le librerie necessarie. Oggigiorno in realtà le librerie non vengono interamente copiateall’interno del programma eseguibile. I sistemi operativi moderni permettono il dynamic linking, col-legamento dinamico, cioè l’eseguibile non comprende al suo interne le librerie ma solo dei rimandiad esse. Le librerie vengono caricate in memoria solo al momento dell’esecuzione del programma.Questo è molto vantaggioso perché se 100 programmi usano la stessa libreria (per esempio la libre-ria con le funzioni matematiche), usando il dynamic linking avrò bisogno di avere una solo copia diquesta libreria all’interno del mio computer. Se invece usassi il linking normale, sprecherei moltospazio perché ogni eseguibile conterrebbe al suo interno la stessa libreria.

Page 57: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 4. ALGORITMI, STRUTTURE DATI E PROGRAMMI 56

Figura 4.10. Rappresentazione schematica dei passaggi che servono per trasformare uncodice sorgente in linguaggiomacchina tramite compilazione. Come si vede questo processocrea un file binario eseguibile che è il programma vero e proprio.

Figura 4.11. Rappresentazione schematica di come avviene l’esecuzione di codice scrittoin un linguaggio interpretato. Come si nota, non viene creato un nuovo file come nel casodei linguaggi compilati. Il codice viene invece ritradotto riga per riga tutte le volte e inviatodirettamente alla CPU per essere eseguito.

Page 58: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 4. ALGORITMI, STRUTTURE DATI E PROGRAMMI 57

ma operativo. Un programma scritto con un linguaggio interpretato è più facile dafar funzionare su computer diversi perché è sufficiente che ci sia un interprete perquel tipo di computer. Lo svantaggio di questi linguaggi è però la lentezza, dovu-ta al fatto che le istruzioni ad alto livello devono essere tradotte tutte le volte. Seperò le prestazioni non sono fondamentali, e quello che conta è la portabilità delcodice, allora questi linguaggi sono perfetti. Sono infatti molto usati, per esempio,per creare applicazioni web o per applicazioni che devono girare su macchine concaratteristiche tecniche molto differenti, come cellulari o tablet.

Il processo di sviluppo del software è oramai standardizzato a livello industriale.Uno dei metodi tipici che vengono usati è il modello a cascata. In pratica ogni fasedi sviluppo genera un prodotto materiale o immateriale per la fase successiva. Eccole fasi:

• Fattibilità. Si decide se è conveniente intraprendere lo sviluppo di un certoprodotto.

• Analisi. Si decidono le caratteristiche del software, in pratica cosa dovràessere in grado di fare.

• Progettazione. Si progetta il software decidendo il linguaggio di program-mazione, la sua struttura, la divisione dei compiti tra i vari programmatori,ecc…

• Sviluppo. La scrittura vera e propria del programma secondo il progetto pre-stabilito.

• Test. I singoli programmatori verificano il corretto funzionamento della partedi software a loro affidata. Dopodiché seguono i test per controllare il correttofunzionamento dell’intero programma dopo che le varie parti sono state messeinsieme.

• Manutenzione. A questo punto il software è pronto per essere consegna-to al committente e ciò che rimane da fare è la manutenzione del software,che consiste nel correggere gli errori che pian piano gli utenti scopriranno enell’implementazione di nuove funzionalità.

4.12 Esercizi• Cos’è un algoritmo?

• Che caratteristiche ha un algoritmo? Per ognuna di essere fai un esempio dialgoritmo che non abbia quella caratteristica.

• Perché un computer deve essere programmato?

• Cos’è un programma?

• Quali sono i tipi di dato più semplici?

Page 59: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 4. ALGORITMI, STRUTTURE DATI E PROGRAMMI 58

• Quali sono le istruzioni più semplici?

• Quali sono i modi per rappresentare gli algoritmi?

• Quali sono i blocchi principali dei diagrammi di flusso?

• Che differenza c’è tra variabile e costante?

• Cos’è il GOTO? Fai degli esempi.

• Cosa dice il teorema di Böhm–Jacopini?

• Cos’è la programmazione strutturata? E quali sono le principale strutture?

• Cos’è la programmazione procedurale?

• Scrivi un algoritmo per stampare la tabellina del 4

• Scrivi un algoritmo per stampare una generica tabellina

• Scrivi un programma in pseudocodice e il relativo diagramma a blocchi chelegge da tastiera una sequenza di 10 numeri interi e, al termine, stampa a videoil numero dei numeri letti che sono maggiori di zero, di quelli che sono minoridi zero e di quelli nulli.

• Scrivi un programma in pseudocodice e il relativo diagramma a blocchi chepermette di capire se un numero intero dato dall’utente è primo oppure no(ricorda che un numero primo è un numero intero divisibile solo per se stessoe per uno).

• Cos’è un linguaggio di programmazione ad alto livello?

• Che differenza c’è tra un linguaggio di programmazione interpretato e unocompilato?

• Qual è il modello di sviluppo software tipico? Di quali fasi si compone?

• Per quale motivi gli errori nei programmi sono chiamati bug?

• Scrivere dei programmi con un linguaggio di programmazione a vostro pia-cimento (consigliato C++ o Python) che risolvano i problemi esposti sopra(stampa di una tabellina, identificazione di un numero primo, ecc…). Studia-te le basi del linguaggio scelto su qualche sito internet. Se non volete installaredel software potete provare dei semplici compilatori/interpreti online che so-no sufficienti per programmi semplici come i nostri (es. Inteprete online perPython 3 dell’Università di Waterloo, Inteprete online per Python 3 del liceoHoly Cross, Codepad: compilatore/inteprete online per diversi linguaggi)

Page 60: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

Capitolo 5

Sistemi operativi e programmi

Software is like sex, it’s betterwhen it’s free.

Linus Torvalds

In questo capitolo parleremo dei concetti utili a un semplice utente per il normaleuso del computer. Parleremo quindi delle funzioni principali di un sistema operativoe dei programmi per ufficio più utili.

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

5.1 Il diritto d’autore per il softwarePrima di iniziare a parlare di programmi dobbiamo parlare di diritto d’autore e dilicenze per il software.

Il diritto d’autore è la condizione in cui si trova l’autore di un’opera dell’ingegno(per esempio un software) al quale i vari ordinamenti giuridici nazionali riconosconola facoltà esclusiva di diffusione e sfruttamento, economico e morale. In Italia pren-de il nome di diritto d’autore, mentre negli stati anglosassoni, si chiama copyright(dall’inglese diritto di copia).

Normalmente, se non si hanno i diritti su un’opera, in particolare un software,non si ha il permesso di usarla, distribuirla e modificarla. Il detentore del copy-right concede però alcuni dei suoi diritti all’utente, obbligandolo ad accettare unalicenza. Tra i diritti concessi c’è ovviamente il diritto a usare il software in que-stione. Praticamente ogni software è dotato di una licenza che deve essere accettataprima di poterlo usare, solitamente durante la fase di installazione o al momentodell’acquisto.

Nel mondo anglosassone la licenza viene chiamata EULA (End User LicenseAgreement) e ogni produttore decide quali diritti e doveri vengono concessi all’u-tente.

Nel corso degli anni le restrizioni eccessive imposte dalle leggi in materia didiritto d’autore nella circolazione delle opere d’ingegno (software, medicinali, in-

59

Page 61: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 5. SISTEMI OPERATIVI E PROGRAMMI 60

venzioni, ecc…) hanno fatto nascere movimenti di pensiero per cambiare lo statoattuale e permettere una circolazione più libera delle idee e un progresso più rapidodelle tecnologie. Queste idee nacquero a metà degli anni 1980 nel campo informati-co 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 gestio-ne dei diritti d’autore dove il detentore dei diritti concede all’utente, tramite unalicenza, molti più diritti di quanto facciano le classiche EULA, per esempio il dirittoa ridistribuirlo a chiunque o a modificarlo a suo piacimento. L’idea del copyleft èquella però di obbligare a ridistribuire il software con la stessa licenza con cui losi è ottenuto, mantenendo quindi in questo modo la libertà acquisita. Questa idearivoluzionaria è stata per primo applicata al software, grazie alla licenza GNU GPLe 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 legal-mente il codice sorgente.

• Software libero (free software). Qualsiasi software che sia distribuito con unalicenza che risponda ai principi del copyleft. Tutti i software liberi sono ancheopen 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 dellerestrizioni sul suo utilizzo, modifica, ridistribuzione, ecc…solitamente eser-citate dal proprietario del copyright. In generale con questo termine si indi-ca qualsiasi software che non sia software libero. Molto spesso un softwareproprietario è anche a pagamento.

• Freeware. Un software proprietario che sia gratuito.

• Shareware. Un software proprietario a pagamento che si può però utilizzaregratuitamente per un periodo di prova.

• Pubblico dominio. Un software il cui codice è disponibile a chiunque e di cuinessuno detiene il copyright.

È da ricordare che il solo fatto che un software sia gratuito o addirittura sottouna licenza che rispetta i principi del copyleft, non significa che questo software nonpossa comportare un guadagno per l’autore. Infatti, anche nel caso di software di-stribuiti gratuitamente, l’autore potrebbe fornire a pagamento le guide del software,o il supporto o l’implementazione di nuove funzionalità, ecc…

5.2 I sistemi operativiIn informatica il sistema operativo, abbreviato in SO (in inglese OS, operating sy-stem) è un particolare software, installato su un computer, che ne garantisce l’opera-tività di base coordinando le risorse hardware di processamento, memorizzazione e

Page 62: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 5. SISTEMI OPERATIVI E PROGRAMMI 61

le periferiche e senza il quale quindi non sarebbe possibile l’utilizzo di altri softwarepiù specifici, come applicazioni o librerie software, e quindi in ultimo del computerstesso. Esso funge quindi da “base” al quale si appoggiano gli altri software, chedunque dovranno essere progettati in modo da essere riconosciuti e supportati daquel particolare sistema operativo. Per sistema operativo intendiamo quindi l’insie-me dei componenti software che hanno il duplice scopo di gestire le risorse hardwaree software del computer, e fare da interfaccia tra l’utente e l’hardware.

Il sistema operativo è un insieme è responsabile:

• del controllo e della gestione delle componenti hardware che costituisconoil computer (processi di input/output da e verso le periferiche collegate alsistema)

• dell’esecuzione dei programmi che su di esso vengono eseguiti.

• gestire l’archiviazione e l’accesso ai file. I programmi possono gestire l’ar-chiviazione dei dati su memoria di massa (ottenendo strutture complesse, co-me un database), servendosi delle procedure messe a disposizione del sistemaoperativo. La componente del SO che si occupa di tutto ciò viene chiamatafile system.

• Infine, se è prevista interazione con l’utente, viene solitamente utilizzata al-lo scopo un’interfaccia software (grafica o testuale) per accedere alle risorsehardware (dischi, memoria, I/O in generale) del sistema. D’altra parte, un si-stema operativo può essere utilizzato anche su una macchina che non prevedainterazione diretta con un essere umano (per un esempio, vedi smart card odeterminati sistemi embedded) spesso dunque più leggero e semplificato.

Solitamente un sistema operativo installato su computer fornisce anche degliapplicativi di base per svolgere elaborazioni di diverso tipo. Sebbene molte dellefunzionalità sopraddette non siano spesso immediatamente visibili/percepibili dal-l’utente, l’importanza del sistema operativo di un calcolatore è cruciale: oltre allanecessità di gestione delle funzionalità di base sopraddette, al di là delle prestazionimassime offerte dall’hardware dell’elaboratore stesso, il sistema operativo deter-mina di fatto efficienza e buona parte delle prestazioni effettive di funzionamen-to dell’intero 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 fraloro e con l’hardware, che vengono eseguite con il privilegio massimo dispo-nibile sullamacchina ossia inmodalità kernel; il kernel fornisce le funzionalitàdi base per tutte le altre componenti del sistema operativo, che assolvono leloro funzioni servendosi dei servizi che esso offre. A seconda del tipo di si-stema operativo il kernel può inglobare altre parti (kernel classico, monoliticoo modulare) o fornire solo funzioni base delegando più funzioni possibile aoggetti/gestori esterni (microkernel).

Page 63: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 5. SISTEMI OPERATIVI E PROGRAMMI 62

• Il gestore di file system: si occupa di esaudire le richieste di accesso alle me-morie di massa. Viene utilizzato ogni volta che si accede a un file sul disco, eoltre a fornire i dati richiesti tiene traccia dei file aperti, dei permessi di acces-so ai file. Inoltre si occupa anche e soprattutto dell’astrazione logica dei datimemorizzati sul computer (directory, ecc).

• Un sistema di memoria virtuale: che alloca la memoria richiesta dai program-mi e dal sistema operativo stesso, salva sulla memoria di massa le zone di me-moria temporaneamente non usate dai programmi e garantisce che le pagineswappate vengano riportate in memoria se richieste.

• Uno scheduler: che scandisce il tempo di esecuzione dei vari processi e assi-cura che ciascuno di essi venga eseguito per il tempo richiesto. Normalmentelo scheduler gestisce anche lo stato dei processi e può sospenderne l’esecu-zione nel caso questi siano in attesa senza fare nulla (esempio classico è larichiesta di dati da disco). Nei sistemi operativi realtime lo scheduler si occu-pa anche di garantire una timeline, cioè un tempo massimo di completamentoper ciascun task in esecuzione, ed è notevolmente più complesso.

• Uno spooler: che riceve dai programmi i dati da stampare e li stampa in suc-cessione, permettendo ai programmi di proseguire senza dover attendere lafine del processo di stampa.

• Una interfaccia utente (Shell): che permette agli utenti di interagire con lamacchina.

Tra i sistemi operativi più famosi figurano le varie versioni Windows (Xp, Vi-sta, 7) della Microsoft, i sistemi basati sul kernel Linux (Android, Ubuntu, SUSE,Gentoo, ecc…), i sistemi derivati da Unix (Mac OS X, BSD, Solaris) e molti altri.

5.2.1 Il filesystemIn informatica, un file system è, informalmente, un meccanismo con il quale i filesono immagazzinati e organizzati su un dispositivo di archiviazione, come un discorigido o un CD-ROM.

Un file system è parte integrante di qualsiasi sistema operativomoderno. L’unicovero compito dei sistemi operativi dei primi microcomputer era proprio la gestionedei file, un fatto che si riflette nei loro nomi (per esempio DOS è l’acronimo di DiskOperating System).

Con la parola file (archivio in inglese) si indica un insieme di dati che vannoa formare una certa entità coerente di dati, per esempio tutti i dati che servono perrappresentare un’immagine, vanno a formare il file di quella immagine. Il filesystempuò lavorare sui file nascondendo all’utente la vera forma fisica in cui i dati sonoeffettivamente memorizzati su un certo supporto (per esempio in un disco rigido idati sono divisi in settori, che però l’utente non vede. L’utente vede il file nella suainterezza!).

Page 64: ClasseIIIA.Annoscolastico2011–2012biccari.altervista.org/c/informatica/appunti_superiori/Appunti_di... · che più ha modificato le abitudini umane dal secondo dopoguerra a oggi:

CAPITOLO 5. SISTEMI OPERATIVI E PROGRAMMI 63

Normalmente i file per essere identificati hanno un indirizzo e una lunghezza.Una identificazione troppo difficile però per essere usata da un essere umano. Eccocosì 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. Taleassociazione è invisibile all’utente che vede solamente i nomi.

I filesystem hanno anche altre funzionalità come la gestione dell’accesso ai file(alcuni utenti del sistema operativo posso leggere, scrivere, eseguire certi file mentrealtri utenti no). Oppure ancora i filesystem possono avere dei sistemi per garantirel’integrità dei dati (journaling).

Esistono moltissimi filesystem, quello che usa Windows per memorizzare i datisui dischi rigidi è NTFS. Una volta veniva usato il FAT32, tutt’ora usato per qualchechiavetta 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 èl’ISO9660.

5.3 Esercizi• Cos’è il diritto d’autore? E il copyright?

• Cos’è una licenza?

• Cos’è il copyleft?

• Cosa significa open source?

• Cosa significa software libero?

• Cosa significa software proprietario?

• Fai degli esempi di software di base. Perché si chiamano così?

• Cos’è un software applicativo? Fai degli esempi.

• Cos’è un sistema operativo? Quali sono i suoi compiti principali?

• Cos’è un filesystem?