A mia madre Gerardina, a mio padre Raffaele Perché, per prima, si pensa a chi non c’è più A mia moglie Antonietta Il mio presente A mio figlio Raffaele, a mia figlia Ilary Il futuro Ai miei studenti Perché è per loro che ho scritto Intro Dopo numerosi anni di insegnamento ho deciso di scrivere quelle che io chiamo dispense per facilitare lo studio di una materia così articolata e complessa come l’Informatica; un testo che fosse tagliato per il corso di studi cui vi avvicinate, che riportasse il necessario, eliminasse il superfluo e che, soprattutto, parlasse la lingua del docente. La mia esperienza di studente informatico, ormai molto lontana, mi porta a ritenere che disporre di una dispensa scritta dallo stesso docente che tiene il corso è la miglior cosa per lo studente, che non è costretto a gestire appunti e libro, linguaggio del docente e linguaggio del libro, difficoltà per individuare cosa fare, cosa non fare, cosa approfondire; a questo si unisce il vantaggio di non dover prendere quasi mai appunti durante le lezioni in classe, evitando di distrarsi dalla comprensione degli argomenti, sempre piuttosto complessi: seguire e capire, scrivere poco o niente. Apro una parentesi per dirvi che ancora oggi sono uno studente informatico, perché questa disciplina evolve con una velocità enorme e bisogna sempre aggiornarsi per evitare di diventare, come i computer, “obsoleti”. Allo sviluppo di tutto il lavoro ho applicato il principio che mi porta a trattare in maniera esaustiva un argomento nell’ambito dello stesso capitolo, anche quando la trattazione degli argomenti fa riferimento ad anni di corso diversi. In questo modo questa dispensa potrà, almeno spero, essere utile anche in seguito, per esempio per semplici esami universitari o pubblici concorsi, etc. Alcuni capitoli sono, pertanto, trasversali rispetto al corso che vi accingete a seguire e gli argomenti presenti in essi saranno trattati nel corso di più anni. E cominciamo con la prima lezione; vi invito: • ad arrivare in orario a scuola, • a seguire le lezioni con attenzione, • a studiare, • a rispettare le persone e le cose, • a fare sempre il vostro dovere, perché non fare il proprio dovere, prima o poi, si ritorce contro di noi come un boomerang; fare il nostro dovere aiuta gli altri ed il dovere degli altri aiuta noi. Seguire le mie indicazioni è semplice, basta fare proprio il concetto espresso da quattro semplici parole: Gi altri siamo noi L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Capitolo 1. Informazione ed informatica 1.1. Informazione e … L’informazione può essere definita come l’acquisizione di una nuova conoscenza. Io mi chiamo Mauro, sono nato il 25/12/1978 e sono cresciuto molto, infatti la mia altezza è 196 centimetri; il mio codice fiscale è BNCMRA78F25D998V e non so cantare ma, comunque, ascoltate: “volare oh oh, cantare oh oh oh”, forse è meglio che smetta; se venite a casa vi faccio vedere il film della mia prima comunione (capirai che divertimento!) e …. cosa volete sapere? Se ho figli? Ovviamente la risposta sarà un ‘si’ oppure un ‘no’; questa, per finire, è una mia foto. Cari ragazzi, avete acquisito un bel po’ di nuove conoscenze! Vi serviranno? Certo, ma solo per capire il concetto di informazione e di dato. Le informazioni che avete acquisito sono, come evidente, di tipo diverso: Alfabetiche, data, numeriche, alfanumeriche, audio, film, sì/no, foto. L’informazione viene rappresentata mediante i dati. Il mio nome è l’informazione, il dato che la rappresenta in un caso specifico può essere ‘Mauro’. Abbiamo già capito che i dati possono essere di diversi tipi; all’inizio erano essenzialmente numerici e booleani o logici (SI/NO oppure 0/1) poi i computer hanno cominciato a trattare anche lettere dell’alfabeto dando così origine ai tipi alfabetici e alfanumerici: il computer diventa elaboratore elettronico in quanto capace non solo di calcolare ma anche di elaborare informazione non numerica. Da qualche decennio l’elaboratore elettronico riesce a gestire anche grafici, foto, audio e persino filmati divenendo così un sistema di elaborazione in grado di trattare dati multimediali. I tradizionali tipi di dati vengono così affiancati da altri molto più efficaci per la rappresentazione dell’informazione. L’elaboratore diventa un complesso sistema di elaborazione perché deve disporre, innanzitutto, di una maggiore e più veloce capacità di elaborazione e di altri e più sofisticati dispositivi in grado di trattare i nuovi tipi di dati. Cosa ne facciamo dell’informazione? Una domanda alla quale è possibile rispondere con esempi che evidenzino la grande importanza che l’informazione assume oggi nella nostra vita: • la nostra ricchezza o povertà (quella economica) dipende dal conto in banca ovvero dall’informazione che ne rappresenta il saldo contabile; Capitolo 1: Informazione ed informatica 7 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro • una buona o cattiva informazione può condizionare le nostre scelte quotidiane in termini di semplici acquisti o esprimere un giudizio politico; • si pensi ad Internet ed al ruolo sempre più importante che essa assume nella quotidianità; • la stessa lezione che ogni giorno ci consente di crescere insieme professionalmente e umanamente si basa sullo scambio continuo di informazioni; • e, per finire, si pensi agli elenchi telefonici, alla nostra rubrica personale, ai numeri memorizzati sul nostro telefonino, agli SMS, alle comunicazioni telefoniche, etc. . Il trattamento dei dati e dell’informazione può essere riassunto nei seguenti punti essenziali: 1. Acquisizione: è la fase di raccolta delle informazioni; 2. Archiviazione: è la fase in cui l’informazione viene memorizzata per poter eventualmente essere riutilizzata in seguito; 3. Elaborazione: è la fase più importante e quella che più ci interessa; l’elaborazione dell’informazione produce nuova informazione, che può, a sua volta, essere elaborata; 4. Trasmissione: l’informazione va trasmessa tra soggetti e/o macchine. L’informazione viene acquisita in tanti modi: attraverso la comunicazione vocale, dalla lettura, attraverso i mezzi di comunicazione di massa, etc. . L’archiviazione dell’informazione è importante perché ci consente di non perderla e poterla riutilizzare in tempi successivi; quando l’uomo non conosceva la scrittura, l’informazione veniva tramandata da padre in figlio attraverso la ‘memoria’; successivamente l’informazione fu riportata su supporti cartacei; oggi si utilizzano sempre più spesso i sistemi di elaborazione volgarmente detti computer. Per l’elaborazione dell’informazione vi propongo un banalissimo esempio: la mamma va al mercato e compra 1 KG di peperoni a € 0.70/KG, ½ KG di patate a € 1.20/KG, 2 KG di pomodori a € 1.50 e ½ KG di zucchine a € 3.00/KG; elaborando queste informazioni posso concludere che ……… questa sera mangerò una bella ‘ciambottella’ e che faceva bene a non comprare le zucchine perché un po’ care (in realtà a me la ‘ciambottella’ piace senza le zucchine). E’, questa, già una forma di elaborazione ma, chiaramente, l’esempio, quello vero, è un altro. Con una semplice elaborazione, costituita da pochi calcoli, riesco a sapere che la mamma ha speso € 5.80; se sapessi anche (acquisizione) che la mamma aveva in tasca € 50,00, posso elaborare l’informazione ottenuta al passo precedente e concludere che alla mamma restano € 44.20; posso comunicare l’informazione a papà che si complimenta con la mamma per aver saputo preparare una cena per 8 persone con soli € 5.80 (a dire il vero non è che sia sazio!); il papà è scrupoloso e pignolo ed annota tutte le spese su Capitolo 1: Informazione ed informatica 8 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro un taccuino (archiviazione) ed a fine mese ne calcola il totale (di nuovo elaborazione). L’informazione in passato veniva trasmessa vocalmente o a gesti, oggi si utilizzano mezzi molto più potenti tra i quali telefono, fax, TV, Radio e, soprattutto, Internet. Si intuisce come il trattamento1 dell’informazione sia radicalmente cambiata nel corso dei tempi; oggi il trattamento dell’informazione avviene quasi sempre in maniera automatica ovvero con sistemi elettronici; nasce così una nuova scienza: l’Informatica; la parola informatica nasce dalla contrazione dei termini Informazione ed automatica e, quindi, è la scienza che studia il trattamento automatico dell’informazione ovvero le tecniche e gli strumenti automatici per acquisire, archiviare, elaborare e trasmettere l’informazione; un’altra scienza, che moltissimi vantaggi porta alla gestione dell’informazione ed in particolare alla sua trasmissione, è la telecomunicazione; per questo oggi spesso si parla anche di ICT, Information and Communication Tecnology. Lo strumento utilizzato per l’elaborazione automatica dei dati era inizialmente chiamato computer ma, come già detto in precedenza, il termine più adatto è, oggi, sistema di elaborazione perché è costituito da un insieme di parti interconnesse ed interagenti e non calcola ma elabora. Questo strumento si distingue da tutti gli altri che conosciamo quali TV, radio, elettrodomestici, calcolatrici, etc., perché esso è costituito da due componenti: Hardware e Software. L’hardware è la struttura fisica del sistema mentre il software è costituito dai programmi che l’hardware è in grado di eseguire. Ma cosa è un programma? Un programma è un insieme di istruzioni opportunamente correlate tra loro che, eseguite da una macchina, consente il trattamento dell’informazione; avrò modo in seguito di ritornare sull’argomento e approfondirne il concetto. Il programma viene memorizzato all’interno del sistema in una memoria per cui per poter eseguire elaborazioni diverse non è necessario cambiare macchina o intervenire sul suo hardware ma semplicemente realizzare un nuovo programma che effettui l’elaborazione voluta. Per questo motivo gli elaboratori elettronici sono detti general purpose ovvero per scopi generali; con una radio ascoltiamo, con la TV vediamo, con la lavatrice laviamo, etc., ma un computer è utilizzabile per tantissimi scopi diversi: lo stesso sistema di elaborazione può essere, infatti, utilizzato da qualsiasi professionista, dallo studente, per motivi ludici, dall’azienda, da un qualsiasi ente, etc.; quello che cambia non è l’hardware ma solo il software utilizzato, perché le problematiche ovvero il tipo di elaborazione richiesto da persone così diverse sarà, ovviamente, completamente diverso. 1 Trattamento dell’informazione: acquisizione, archiviazione, elaborazione e/o trasmissione dell’informazione. Capitolo 1: Informazione ed informatica 9 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 1.2. Rappresentazione dell’informazione 1.2.1. Generalità Un sistema di elaborazione si basa su una logica estremamente semplice: la logica binaria. La logica binaria fa uso, per la rappresentazione dell’informazione, solo di due simboli: 0 e 1, ai quali ci riferiremo con il termine bit, contrazione di binary digit (cifra binaria); spesso ci riferiremo ad essa come logica booleana costituita dai concetti vero e falso (TRUE/FALSE). In effetti ho detto qualcosa di molto importante che ancora, probabilmente, vi sfugge; in altri termini ho detto che tutto quello che viene trattato dall’elaboratore è binario. Allora vi chiederete come è possibile che un nome o un cognome, il prezzo di un articolo o migliaia di informazioni relative, per esempio, alla nostra scuola, possano essere rappresentate correttamente con un alfabeto costituito solo da 0 e 1. Ancora più difficile è immaginare come una foto, un film e, in genere, una informazione multimediale possa essere correttamente gestita utilizzando solo 0 ed 1, ovviamente miliardi di 0 ed 1 ma sempre e solo due simboli. E allora procedo con ordine e comincio dando alcune definizioni: • Alfabeto: insieme di simboli; • Parola: successione di simboli di un alfabeto; • Frase: insieme di parole; • Grammatica o Sintassi: regole per scrivere correttamente le frasi. Per esempio, l’alfabeto italiano è costituito dalle lettere da “A” a “Z” e “Cane” è una parola scritta su tale alfabeto; la grammatica ci consente di stabilire che la frase “il cane mangia la carne” è corretta, mentre non lo è “il cane e bello”. L’alfabeto utilizzato dal computer è {0, 1}, così una parola scritta su tale alfabeto non è altro se non una successione di 0 e 1. Un raggruppamento di 8 bit è detto BYTE. Ma perché la logica dei computer è binaria ovvero perché i progettisti hanno ritenuto opportuno realizzare i sistemi di elaborazione con una logica così semplice? La risposta non risiede nel fatto che era impossibile realizzare elaboratori con una logica diversa e più complessa come quella decimale (cifre 0-9) alla quale siamo abituati ma per motivi ben più importanti. La rappresentazione di un bit richiede la progettazione di elementi bistabili ovvero aventi due stati stabili di cui uno rappresenta lo 0 e l’altro l’1; per esempio un elemento bistabile è l’interruttore (spento/acceso) oppure una lampadina o un componente elettronico come un condensatore (carico/scarico). Gli elementi bistabili offrono i seguenti vantaggi: • Facilità costruttiva; Capitolo 1: Informazione ed informatica 10 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro • Facilità di integrazione: i moderni circuiti integrati contengono centinaia di milioni di componenti bistabili; • Velocità: un elemento bistabile può solo cambiare stato e lo fa in maniera estremamente veloce; • Affidabilità: un elemento bistabile può lavorare per anni senza incidenza di guasti; • Costo: il costo è molto basso. Nei paragrafi successivi vedremo come sia possibile rappresentare una gran quantità di informazioni utilizzando l’alfabeto binario. 1.2.2. Rappresentazioni numeriche In questo paragrafo vedremo come è possibile rappresentare i numeri con diversi sistemi di numerazione. Il sistema di numerazione al quale siamo abituati fin da bambini è a base 10 o decimale ovvero è un sistema che rappresenta tutti i numeri utilizzando 10 simboli detti cifre. Questo sistema di numerazione è di tipo posizionale ovvero ciascuna cifra ha un valore intrinseco ed un altro che dipende dalla posizione occupata nell’ambito del numero; il peso è dato da una potenza la cui base è 10 ed il cui esponente dipende dalla posizione della cifra nell’ambito del numero. Ad esempio: 1918,5 = 1*103+9*102+1*101+8*100+5*10-1 in effetti i pesi sono quelli che già dalle scuole elementari chiamavamo unità, decine, centinaia, etc. per la parte intera e decimi, centesimi, millesimi, etc. per la parte frazionaria. L’attuale sistema di numerazione posizionale ha origini arabe. A questo punto vi faccio una domanda che vi potrà stupire: perché si utilizzano 10 cifre per scrivere i numeri? Gli studiosi, che hanno cercato di rispondere a questa domanda, si sono dati questa unica risposta: forse perché abbiamo 10 dita. In effetti nel passato vi sono stati anche altri sistemi di numerazione, tra questi vi ricordo quello romano, che non era posizionale anche se vi era un accenno di posizionalità: VI=6 mentre IV=4. Allora è possibile numerare anche con un numero minore o maggiore di 10 simboli o cifre ovvero utilizzare sistemi di numerazione a base diversa dal 10; in pratica, però, ci limiteremo a considerare la base 2 o binaria, la base 8 o ottale e la base 16 o esadecimale per i motivi che esporrò in seguito. Se è chiaro che in base 2 si utilizzano le cifre o i simboli {0, 1}, che in base 8 si usano le cifre o i simboli {0, 1, 2, 3, 4, 5, 6, 7} non è chiaro come si risolve il problema delle cifre per la base 16 o esadecimale; in questo caso, oltre alle dieci Capitolo 1: Informazione ed informatica 11 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro cifre, si utilizzano anche le prime 6 lettere dell’alfabeto, per cui in base 16 le cifre o i simboli utilizzati sono {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}, dove le lettere da A ad F corrispondono ai valori decimali da 10 a 15. Nella seguente tabella riporto la corrispondenza, tra le basi citate, per le sedici cifre esadecimali: Esadecimale Binario Ottale Decimale 0 0 0 0 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 10 8 9 1001 11 9 A 1010 12 10 B 1011 13 11 C 1100 14 12 D 1101 15 13 E 1110 16 14 F 1111 17 15 Considerato che un numero può essere rappresentato con basi diverse, sarà necessario, d’ora in poi e dove possano sorgere dubbi, specificare la base del sistema di numerazione, che seguirà, come pedice, il numero stesso; così 12310 è in base 10, 1238 in base 8, 12316 in base 16 e 1011012 in base 2; sarebbe ovviamente un errore 123212. Per i numeri che non sono seguiti dal pedice rappresentante la base del sistema di numerazione, si intenderà, ovviamente, la base 10. Ma se è possibile utilizzare sistemi diversi, sarà necessario individuare formule che consentano di passare dalla rappresentazione di un numero dato in una base a quella equivalente di un’altra base perché è evidente che lo stesso numero vedrà variata la sua rappresentazione nel passare da una base all’altra ma non il suo valore. Più che di formule si parla di procedure di calcolo dette algoritmi di cui parlerò approfonditamente nei capitoli successivi ma ritengo opportuno dare almeno la Capitolo 1: Informazione ed informatica 12 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro definizione di algoritmo: Un algoritmo è un insieme ben coordinato di istruzioni che a partire da dati iniziali fornisce dati finali o risultati. Per convertire un numero dato in base 10 ad una qualsiasi altra base “b” si utilizzano 2 algoritmi: uno per convertire la parte intera ed un altro per la parte frazionaria. L’algoritmo per convertire la parte intera è costituito dai seguenti passi: i. Si divide il numero dato per la base b di arrivo; ii. Si continua a dividere il quoziente per la base b di arrivo finchè il quoziente diventa zero; iii. La rappresentazione in base b del numero in base 10 è data dal numero formato dai resti presi dall’ultimo al primo. Esempio: Convertire 15810 in base 2, 8 e 16. 158 : 2 0 79 : 2 1 39 : 2 1 19 : 2 1 9:2 1 4:2 0 2:2 0 1:2 1 0 Per cui 15810 = 100111102. 158 : 8 6 19 : 8 3 2:8 2 0 Per cui 15810 = 2368 158 : 16 14 9 : 16 9 0 Per cui 15810 = 9E16. Capitolo 1: Informazione ed informatica 13 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro La conversione della parte frazionaria fa uso del seguente algoritmo: i. Si moltiplica la parte frazionaria per la base b di arrivo; ii. Si isola la parte intera; iii. Si continua a moltiplicare la parte frazionaria finchè non si verifica una delle seguenti condizioni: 1. la parte frazionaria diventa zero: la conversione è perfetta; 2. il valore della parte frazionaria è uguale ad una precedente; allora il numero è, ovviamente, periodico; 3. ci si ferma dopo un numero prefissato di passi: in questo caso, riconvertendo il numero ottenuto di nuovo nella base di partenza, si ottiene un valore leggermente inferiore. iv. La rappresentazione in base b del numero in base 10 è data dal numero frazionario formato dalle parti intere isolate prese in ordine naturale. Esempio: Convertire 0.9510 in base 2, 8 e 16. .95 * 2 = 1 .9 * 2 = 1 .8 * 2 = 1 .6 * 2 = 1 .2 * 2 = 0 .4 * 2 = 0 .8 STOP Per cui 0.9510 = 0.111100; in questo caso, un numero non periodico in base 10 diventa periodico in base 2. .95 * 8 = 7 .6 * 8 = 4 .8 * 8 = 6 .4 * 8 = 3 .2 * 8 = 1 .6 STOP Per cui 0.9510 = 0.746318. Capitolo 1: Informazione ed informatica 14 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro .95 * 16 = 15 .2 * 16 = 3 .2 STOP Per cui 0.9510 = 0.F316. Le conversioni da una base b qualsiasi alla base 10 è molto più semplice ed è sufficiente applicare la seguente formula polinomiale: ∑ci*bi con –m <= i <= n dove: b: base del sistema di numerazione; ci: cifre costituenti il numero dato in base b e i la sua posizione; n+1: numero di cifre costituenti la parte intera del numero dato in base b; m: numero di cifre decimali. Come al solito un esempio chiarirà la formula: convertire 236.748 in base 10. c2 c1 c0 c-1 c-2 2 3 6 7 4 per cui, applicando la formula polinomiale, si ottiene: 2 1 0 236.748 = c2 * b + c1 * b + c0 * b + c-1 * b 0 *8 +7*8 -1 +4*8 -2 -1 + c-2 * b -2 2 1 =2*8 +3*8 +6 = 128 + 24 + 6 + 0.875 + 0.0625 = 158.937510. Analogamente per A3C.2F16 si ottiene: A3C.2F16 = A * 162 + 3 * 161 + C * 160 + 2 * 16-1 + F * 16-2 = 10 * 256 + 3 * 16 + 12 * 1 + 2 * 16-1 + 15 * 16-2 = 2620,1835937510. La conversione di numeri binari costituiti da pochi bit è estremamente semplice perché è sufficiente sommare le potenze del 2 corrispondenti ai bit 1; per esempio, per 101100 si ottiene 44=22+23+25. Ho limitato la trattazione delle basi alle basi 10, 2, 8 e 16 e la scelta non è casuale. La base 10 è quella che abbiamo utilizzato fin dalle scuole elementari ed è l’unica conosciuta dalla quasi totalità delle persone. La base 2, ovviamente, assume importanza per gli informatici perché il computer, come detto, è binario. Il sistema binario, però, ha un inconveniente: sono necessarie molte cifre anche per Capitolo 1: Informazione ed informatica 15 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro rappresentare numeri piccoli; per esempio 125410=100111001102. Le basi 8 e 16 sono particolari perché potenze di 2 (8=23 e 16=24). Le conversioni da base 2 a base 8 e 16 e viceversa possono essere realizzate in maniera immediata ovvero un numero in base 8 o 16 può essere letto direttamente in base 2; con le basi 8 e 16, pertanto, è come se scrivessi in binario ed utilizzo un numero assai ridotto di cifre ed esattamente 1/3 per l’ottale e 1/4 per l’esadecimale; si capirà come un byte può essere rappresentato con esattamente 2 sole cifre binarie. La conversione da base 2 a base 8 (16) avviene in maniera estremamente semplice raggruppando le cifre binarie in gruppi di 3 (4) bit a partire dal punto decimale e procedendo verso sinistra per la parte intera e verso destra per la parte decimale aggiungendo, eventualmente, zeri non significativi; ciascun gruppo di 3 (4) cifre è convertito nella corrispondente cifra ottale (esadecimale). Esempio: convertire 1000110.101012 in base 8 e 16. 001 000 110.101 0102 = 106.528 0100 0110.1010 10002 = 46.A816 Anche la conversione da base 8 (16) a base 2 è piuttosto semplice in quanto è sufficiente trasformare ciascuna cifra ottale (esadecimale) in un gruppo di 3 (4) bit così 38 = 0112 (316 = 00112). Esempio: convertire 106.528 e 46.A816 in base 2 106.528 = 001 000 110.101 0102 46.A816 = 0100 0110.1010 10002 In effetti la conversione avviene mentalmente, ovvero si legge in binario sia l’ottale che l’esadecimale e viceversa. Provate con i seguenti numeri: 1000011001.11100012 111111000010101.10000111012 11110101011.1010012 561.0138 324.078 564.1238 A1E.C316 4BD7.8316 3F8.C516 1.2.2.1. Le quattro operazioni binarie In questo paragrafo vedremo come siano semplici le 4 operazioni fondamentali in binario. L’operazione di addizione è estremamente semplice, basta solo capire che 1+1=0 con il riporto di 1 e che, per esempio, 1+1+1=1 con il riporto di 1 e 1+1+1+1=0 con il riporto di 10 e così via. L’operazione di sottrazione, come tutte le operazioni inverse, è un po’ più complicata ma basta solo capire che 0-1 non si può e che 0, dopo aver ricevuto un prestito dalla cifra immediatamente a sinistra, diventa 10 e così via. Capitolo 1: Informazione ed informatica 16 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro L’operazione di moltiplicazione vi farà scompisciare dal ridere (scherzo!) perché la terribile tavola pitagorica, che tanti problemi ci ha procurato quando, da bambini, dovevamo imparare le tabelline, diventa estremamente semplice anzi troppo semplice perché si riduce alla tabellina dello 0 e dell’1 che non credo debba riportare! Così moltiplicare per 1 significa riscrivere il moltiplicando e moltiplicare per 0 significa spostarsi a sinistra di una ulteriore posizione. Anche l’operazione di divisione piuttosto complicata, soprattutto quella a più cifre, diventa incredibilmente semplice perché il divisore o non divide il dividendo oppure lo divide 1 sola volta; ovvio, è la logica binaria! Ritengo comunque opportuno riportare un esempio per ciascuna operazione, il resto verrà fatto in classe e vedrete come le quattro operazioni in binario siano estremamente semplici. 1011011 + 111 = 1100010 1011000 111 = 1010001 10100 * 1001 = 10100 + 10100=== 10110100 11110111 : 101= 101 110001 0101 101 0000111 101 010 Capitolo 1: Informazione ed informatica 17 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 1.2.2.2. Fixed e Floating point Nei paragrafi precedenti siamo riusciti a rappresentare in binario numeri dati in base 10, ma resta ancora da capire come si possano rappresentare i numeri negativi e con parte frazionaria perché i simboli “ . ”, “ + ” e “ – ” non possono essere utilizzati in binario; sento una vocina che dice “perché?”, datevi la risposta. In effetti la rappresentazione precedente è detta binaria assoluta perché rappresenta solo i numeri positivi. La rappresentazione fixed point (virgola fissa) consente di rappresentare i numeri interi positivi e negativi ed è caratterizzata da: • Lunghezza fissa: tutti i valori sono rappresentati con lo stesso numero di cifre binarie; • Si cambia segno, ovvero si passa dal positivo al negativo, complementando (complementare: scambiare 1 con 0 e viceversa) ed incrementando (incrementare: aggiungere 1): in questo modo il bit più significativo (quello a sinistra) diventa bit del segno (0 per i numeri positivi e 1 per i negativi); questa tecnica è nota con il nome di complemento a 2. La tecnica del complemento a 1 cambia segno solo complementando; • Con n bit i numeri in base 10 rappresentabili vanno da -2n-1 a +2n-1-1; per esempio, con 16 bit si rappresentano i numeri compresi tra -216-1 a +216-1-1 ovvero tra -32768 e +32767. Esempio: rappresentare in fixed point 8 bit il numero -6210. 6210 = 1111102 = 001111102 ho aggiunto 2 zeri non significativi a sinistra per normalizzare la lunghezza Cambio segno: 00111110 complementato 11000001 e incrementato 11000010; per cui -6210 = 110000102 fixed point 8 bit Si noti che 11000102 è pari a 9810 se si utilizza la binaria assoluta; per poter correttamente interpretare una sequenza di bit, pertanto, è assolutamente necessario sapere il tipo di rappresentazione che si utilizza. Esempio: convertire 101010102 fixed point 8 bit in base 10; posso subito dire che il numero è negativo e lo trasformo in positivo complementando ed incrementando ottenendo prima 01010101 e poi 01010110 che, trasformato con la formula polinomiale in base 10, diventa 8610, per cui il numero in fixed point 8 bit 101010102 = -8610 . Se il numero dato in base 2 è positivo, ovvero il bit del segno è 0, allora è sufficiente applicare la formula polinomiale vista in precedenza. Capitolo 1: Informazione ed informatica 18 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Per concludere il paragrafo è necessario introdurre i concetti di overflow e extent o carry. Si consideri la seguente addizione di 2 numeri fixed point 8 bit: 01010100+ 01000100= 10011000 si noti che i due addendi sono positivi (bit del segno 0) mentre il risultato è negativo (bit del segno 1); in questo caso si verifica un errore di overflow segnalato dal sistema con un messaggio di errore che interrompe l’esecuzione dell’operazione. Ma perché questo errore? I due addendi trasformati in base 10 corrispondono a 8410 e 6810 la cui somma è 15210; con 8 bit i numeri in base 10 rappresentabili vanno da -27 e +27-1 ovvero tra -128 e +127 ed allora ecco l’overflow: il risultato supera le capacità di rappresentazione della macchina; in altri termini la somma dei due numeri fixed point 8 bit non è rappresentabile in fixed point 8 bit. Si consideri la seguente somma: 11010100+ 11000100= 1 10011000 come si può notare il risultato presenta una cifra in più detta extent che non altera il risultato corretto dell’operazione costituito dagli altri 8 bit. I due addendi, in questo caso, sono negativi così come il risultato costituito dagli 8 bit più a destra. Verifichiamo quanto detto trasformando tutto in decimale: Primo addendo: 110101002 = -4410 Secondo addendo: 110001002 = -6010 Risultato: 100110002 = -10410 corretto! Per poter rappresentare tutti i numeri, manca solo la parte frazionaria e, quindi, la necessità di eliminare il punto decimale, separatore della parte intera da quella frazionaria. Per fare questo, si utilizza la rappresentazione floating point (virgola mobile) che fa uso della notazione scientifica. La notazione scientifica rappresenta i numeri mediante la mantissa e l’esponente; la mantissa è costituita dalle cifre del numero mentre l’esponente è appunto l’esponente di una potenza la cui base è la base del sistema di numerazione. Per esempio, il numero 152.18 può essere rappresentato in notazione scientifica come 1.5218 x 102 oppure 15218 x 10-2 oppure 0.15218x103; appare evidente da questo esempio che un qualsiasi numero può essere rappresentato in notazione scientifica in infiniti modi; tra questi se ne sceglie uno detto notazione scientifica normalizzata che, in genere, ha la parte intera zero2 e la prima cifra 2 In genere le calcolatrici scientifiche normalizzano con parte intera costituita da una sola cifra diversa da zero ad eccezione del caso in cui il valore sia zero. Capitolo 1: Informazione ed informatica 19 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro decimale diversa da zero (se il valore del numero da rappresentare è diverso da zero). Così la rappresentazione di 152.18 in notazione scientifica normalizzata sarà unica: 0.15218 x 103. Se fissiamo le seguenti regole: • La lunghezza della mantissa è fissa; • La lunghezza dell’esponente è fissa; • La parte intera, essendo sempre 0, viene eliminata; • La base è quella del sistema di numerazione in uso e, quindi, può essere sottintesa. otteniamo che per rappresentare un qualsiasi numero non abbiamo bisogno della virgola, del separatore tra mantissa ed esponente e della base. Per esempio se la mantissa è lunga 6 e l’esponente 2 il numero 152.18 viene rappresentato in floating point come 15218003; si noti l’aggiunta di uno zero a destra nella mantissa, immediatamente prima dell’esponente, per poter normalizzare la lunghezza a 6; in questo caso l’aggiunta viene fatta a destra perché, a differenza della fixed point, questi zeri sono non significativi perché decimali finali (ricordatevi che si sottintende 0.) . Con le stesse ipotesi: Floating point Valore 19800004 1980 -89745802 -89.7458 548000-05 0.00000548 25400012 254000000000 Nel terzo esempio compare un valore negativo ed il segno in binario, come visto, è un problema ed un altro problema è costituito dal segno della mantissa. Entrambi questi problemi sono stati risolti, in binario utilizzando una notazione scientifica normalizzata così composta: SM Mantissa Esponente Dove SM è il segno della mantissa ovvero del numero: 0 se positivo, 1 se negativo e Esponente è la rappresentazione fixed point dell’esponente, che risolve il problema del segno. Esempio: si rappresenti in floating point 32 bit, mantissa 24 bit ed esponente 8 bit, il numero -152.1810 . Capitolo 1: Informazione ed informatica 20 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Il primo passo è quello di convertire 152.18 in base 2 con gli algoritmi descritti in precedenza ovvero divisioni successive per la parte intera e moltiplicazioni per la parte decimale; tralasciando i calcoli: 152.1810 = 10011000.00101112 quindi si normalizza: 152.1810 = 10011000.00101112 = 0.10011000001011100000000 x 28 o, meglio: 152.1810 = 10011000.00101112 = 0.10011000001011100000000 x 101000 ed infine: 1 10011000001011100000000 00001000 Ingegnoso, non c’è che dire, la virgola è sparita! L’esponente consente di tenerne memoria facendo fluttuare a destra (se positivo) o a sinistra (se negativo) la virgola virtualmente presente all’inizio di ciascuna mantissa. Pensate per qualche minuto a quanto possa essere poi difficile sommare, sottrarre, moltiplicare e dividere numeri così rappresentati e, se ancora non vi è chiaro il “castello” costruito con i mattoncini 0 e 1, pensate a qualcosa di ancora più complicato: le funzioni logaritmiche ed esponenziali, la trigonometria e ………….. “basta professò! Per carità ci basta il prof. Ciardulli!” Esperti informatici e matematici hanno realizzato migliaia di algoritmi estremamente complessi che consentono ai moderni sistemi di elaborazione di acquisire dati variegati, ridurli in “polpette”, memorizzarli, elaborarli e trasmetterli. Per le ipotesi fatte, una qualsiasi mantissa binaria sarà del tipo 0.1 ….., ed è facile capire che una tale mantissa avrà un valore decimale compreso tra ½ ed 1 (1 escluso) per cui il concetto di overflow per la notazione scientifica si applica all’esponente che, di fatti, rappresenta l’ordine di grandezza del numero; ho detto, quindi, che l’errore di overflow si verifica solo quando si superano le capacità di rappresentazione dell’esponente. In maniera analoga si introduce il concetto di underflow, situazione di errore che si verifica con numeri molto piccoli, ovvero quando l’esponente ha un valore al di sotto del più piccolo esponente rappresentabile. In generale i sistemi informatici utilizzano rappresentazioni binarie assolute a 8 bit, fixed point a 16, 32 e 64 bit e floating point a 32 e 64 bit. Perché tante rappresentazioni? Non sarebbe sufficiente la floating point 64 bit? Pur non entrando in dettagli, è evidente che operare su due numeri floating point richiede un tempo sicuramente maggiore che per numeri fixed point e non è sicuramente necessario dettagliare per capire che l’occupazione dello spazio in memoria è chiaramente differente. Il trattamento di numeri floating point richiede tempi fino a decine di volte superiori a quelli necessari per un fixed point. Allora se devo rappresentare l’età di una persona o il numero di studenti di una classe è sufficiente un assoluto 8 bit, Capitolo 1: Informazione ed informatica 21 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro mentre per il numero di studenti di un Istituto o degli abitanti di una città ho bisogno di un fixed point (quale tra 16 e 32 bit?) e, infine, per il prezzo di un articolo mi serve un floating point, altrimenti addio centesimi! E’ stato abbastanza semplice capire come i numero in base 10 possano essere convertiti in altre basi e, soprattutto, rappresentati in binario; ma tutto questo non è sufficiente perché i dati, come visto ad inizio capitolo, assumono forme completamente diverse dai numeri, almeno nella loro forma esteriore perché, e questo ormai l’abbiamo capito, all’interno del nostro computer tutto diventa binario, anche se e nonostante la conoscenza delle conversioni numeriche questo può sembrare ancora difficile da comprendere. 1.2.3. Rappresentazione alfanumeriche Nei paragrafi precedenti abbiamo visto come sia possibile rappresentare dati numerici utilizzando la base 2. Ad inizio capitolo, però, abbiamo visto che i dati spesso assumono forme tutt’altro che numeriche. Il passo successivo, pertanto, sarà quello di rappresentare dati alfanumerici mediante l’alfabeto binario e questo risulterà ancora più semplice che per i dati numerici. Ad inizio capitolo ho definito l’alfabeto e le parole scritte su un alfabeto, ebbene approfondendo il discorso posso dire che esiste un alfabeto esterno ed uno interno. L’alfabeto esterno è costituito dai simboli da noi utilizzati ed è costituito dalle lettere maiuscole e minuscole dell’alfabeto, dalle 10 cifre, dai segni di punteggiatura, da simboli speciali, etc. . L’alfabeto interno è quello utilizzato dalla macchina e, come già detto, è binario ovvero costituito solo dai due simboli 0 ed 1. E’ pertanto impossibile codificare i simboli dell’alfabeto esterno mediante quelli dell’alfabeto interno, semplicemente perché questi ultimi sono in numero inferiore. La soluzione adottata è estremamente semplice e fa uso di un’operazione di codifica che associa a ciascun simbolo dell’alfabeto esterno una parola scritta sull’alfabeto interno. Un codice, pertanto, non è altro se non una tabella che fa corrispondere una combinazione di bit, in genere 8, ad un simbolo dell’alfabeto esterno. I codici più utilizzati sono il codice ASCII (American Standard Code for Information Interchange) e l’EBCDIC (Extended Binary Coded Decimal Interchange Code) riportati nelle seguenti tabelle: Capitolo 1: Informazione ed informatica 22 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Codice ASCII 7 bit Dec Hex Simbolo Dec Hex Simbolo Dec Hex Simbolo Dec Hex Simbolo 0 00 NUL 32 20 space 64 40 @ 96 60 ` 1 01 SOH 33 21 ! 65 41 A 97 61 a 2 02 STX 34 22 " 66 42 B 98 62 b 3 03 ETX 35 23 # 67 43 C 99 63 c 4 04 EOT 36 24 & 68 44 D 100 64 d 5 05 ENQ 37 25 % 69 45 E 101 65 e 6 06 ACK 38 26 $ 70 46 F 102 66 f 7 07 BEL 39 27 ‘ 71 47 G 103 67 g 8 08 BS 40 28 ( 72 48 H 104 68 h 9 09 HT 41 29 ) 73 49 I 105 69 i 10 0A LF 42 2A * 74 4A J 106 6A j 11 0B VT 43 2B + 75 4B K 107 6B k 12 0C FF 44 2C , 76 4C L 108 6C l 13 0D CR 45 2D - 77 4D M 109 6D m 14 0E SO 46 2E . 78 4E N 110 6E n 15 0F SI 47 2F / 79 4F O 111 6F o 16 10 DLE 48 30 0 80 50 P 112 70 p 17 11 DC1 49 31 1 81 51 Q 113 71 q 18 12 DC2 50 32 2 82 52 R 114 72 r 19 13 DC3 51 33 3 83 53 S 115 73 s 20 14 DC4 52 34 4 84 54 T 116 74 t 21 15 NAK 53 35 5 85 55 U 117 75 u 22 16 SYN 54 36 6 86 56 V 118 76 v 23 17 ETB 55 37 7 87 57 W 119 77 w 24 18 CAN 56 38 8 88 58 X 140 78 x 25 19 EM 57 39 9 89 59 Y 121 79 y 26 1A SUB 58 3A : 90 5A Z 122 7A z 27 1B ESC 59 3B ; 91 5B [ 123 7B { 28 1C FS 60 3C < 92 5C \ 124 7C | 29 1D GS 61 3D = 93 5D ] 125 7D } 30 1E RS 62 3E > 94 5E ^ 126 7E ~ 31 1F US 63 3F ? 95 5F _ 127 7F DE Il codice ASCII, inizialmente a 7 bit, è stato successivamente ampliato a 8 bit per poter codificare un maggior numero di caratteri, tra questi alcuni nazionali ovvero una serie di valori del codice corrispondono, a seconda della nazione, a simboli diversi. Capitolo 1: Informazione ed informatica 23 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Estensione del codice ASCII DEC 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 Simbolo Ç ü é â ä à å ç ê ë è ï î ì Ä Å É æ Æ ô ö ò û ù ÿ Ö Ü ø £ Ø × ƒ DEC 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 Simbolo á í ó ú ñ Ñ ª º ¿ ® ¬ ½ ¼ ¡ « » _ _ _ ¦ ¦ Á Â À © ¦ ¦ + + ¢ ¥ + DEC 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 Simbolo + + + ã Ã + + ¦ + ¤ ð Ð Ê Ë È i Í Î Ï + + _ _ ¦ Ì _ DEC 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 Simbolo Ó ß Ô Ò õ Õ µ þ Þ Ú Û Ù ý Ý ¯ ´ ± _ ¾ ¶ § ÷ ¸ ° ¨ · ¹ ³ ² _ SPAZIO In questa tabella estesa sono ripetuti più volte alcuni segni (+ - _ ), già contenuti nella tabella standard; si tratta di combinazioni non assegnate a simboli standard ed in genere utilizzati per caratteri grafici oggi poco utilizzati. Il codice ASCII è quello attualmente utilizzato dai personal computer. I caratteri corrispondenti ai primi 31 valori del codice ASCII sono cosiddetti non stampabili ed utilizzati per il controllo delle periferiche; per esempio, per Capitolo 1: Informazione ed informatica 24 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro cambiare il carattere di stampa (SI: Shift In, SO: Shift Out) o avanzare di un rigo (LF: Line Feed) o di una pagina (FF: Form Feed). Si noti come il codice 32 corrisponde allo spazio così come i codici da 48 a 57 rappresentano le cifre; le lettere maiuscole dell’alfabeto hanno codici da 65 a 90 e le minuscole da 97 a 122. Non tutti i caratteri del codice ASCII sono presenti sulla tastiera del nostro PC, per questo per i caratteri assenti si può utilizzare il tasto <ALT> di sinistra in combinazione con il tastierino numerico: si digita il codice ASCII sul tastierino numerico tenendo abbassato il tasto <ALT> e, al suo rilascio, viene visualizzato il corrispondente carattere. Capitolo 1: Informazione ed informatica 25 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Codice EBCDIC Dec Hex Simbolo Dec Hex Simbolo Dec Hex Simbolo Dec Hex Simbolo 0 00 NUL 32 20 64 40 1 01 SOH 33 21 65 2 02 STX 34 22 3 03 ETX 35 4 04 5 05 6 06 7 07 8 space 96 60 - 41 97 61 / 66 42 98 62 23 67 43 99 63 36 24 68 44 100 64 37 25 LF 69 45 101 65 38 26 ETB 70 46 102 66 39 27 ESC 71 47 103 67 08 40 28 72 48 104 68 9 09 41 29 73 49 105 69 10 0A 42 2A 74 4A [ 106 6A | 11 0B VT 43 2B 75 4B . 107 6B , 12 0C FF 44 2C 76 4C < 108 6C % 13 0D CR 45 2D ENQ 77 4D ( 109 6D _ 14 0E SO 46 2E ACK 78 4E + 110 6E > 15 0F SI 47 2F BEL 79 4F |! 111 6F ? 16 10 DLE 48 30 80 50 & 112 70 17 11 49 31 81 51 113 71 18 12 50 32 82 52 114 72 19 13 51 33 83 53 115 73 20 14 52 34 84 54 116 74 21 15 53 35 85 55 117 75 22 16 54 36 86 56 118 76 23 17 55 37 87 57 119 77 24 18 CAN 56 38 88 58 120 78 25 19 EM 57 39 89 59 121 79 ‘ 26 1A 58 3A 90 5A !] 122 7A : 27 1B 59 3B 91 5B $ 123 7B # 28 1C IFS 60 3C 92 5C * 124 7C @ 29 1D IGS 61 3D 93 5D ) 125 7D ‘ 30 1E IRS 62 3E 94 5E ; 126 7E = 31 1F IUS 63 3F 95 5F ^ 127 7F " HT DEL BS SYN EOT NAK SUB Capitolo 1: Informazione ed informatica 26 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Dec Hex Simbolo Dec Hex Simbolo Dec Hex Code Dec Hex Simbolo 128 80 160 A0 192 C0 { 224 E0 129 81 a 161 A1 130 82 b 162 131 83 c 132 84 133 ~ 193 C1 A 225 E1 A2 s 194 C2 B 226 E2 S 163 A3 t 195 C3 C 227 E3 T d 164 A4 u 196 C4 D 228 E4 U 85 e 165 A5 v 197 C5 E 229 E5 V 134 86 f 166 A6 w 198 C6 F 230 E6 W 135 87 g 167 A7 x 199 C7 G 231 E7 X 136 88 h 168 A8 y 200 C8 H 232 E8 Y 137 89 i 169 A9 z 201 C9 I 233 E9 Z 138 8A 170 AA 202 CA 234 EA 139 8B 171 AB 203 CB 235 EB 140 8C 172 AC 204 CC 236 EC 141 8D 173 AD 205 CD 237 ED 142 8E 174 AE 206 CE 238 EE 143 8F 175 AF 207 CF 239 EF 144 90 176 B0 208 D0 } 240 F0 0 145 91 j 177 B1 209 D1 J 241 F1 1 146 92 k 178 B2 210 D2 K 242 F2 2 147 93 l 179 B3 211 D3 L 243 F3 3 148 94 m 180 B4 212 D4 M 244 F4 4 149 95 n 181 B5 213 D5 N 245 F5 5 150 96 o 182 B6 214 D6 O 246 F6 6 151 97 p 183 B7 215 D7 P 247 F7 7 152 98 q 184 B8 216 D8 Q 248 F8 8 153 99 r 185 B9 217 D9 R 249 F9 9 154 9A 186 BA 218 DA 250 FA 155 9B 187 BB 219 DB 251 FB 156 9C 188 BC 220 DC 252 FC 157 9D 189 BD 221 DD 253 FD 158 9E 190 BE 222 DE 254 FE 159 9F 191 BF 223 DF 255 FF Capitolo 1: Informazione ed informatica \ 27 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 1.2.3.1. La codifica UNICODE I codici visti in precedenza ed altre codifiche, che non ho ritenuto opportuno riportare, hanno numerosi limiti perché non sono indipendenti: • dalla piattaforma hardware e/o software, con riferimento soprattutto ai sistemi operativi di cui parleremo in seguito; • dall’applicazione, ovvero i programmi applicativi e di base con particolare riferimento ai data base, di cui parleremo in seguito; • dalla lingua, lingue nazionali diverse hanno set di caratteri diversi. Il problema principale risiede nella lunghezza a 8 bit del codice, che consente di rappresentare solo 256 caratteri, insufficienti per le esigenze di tante nazionalità, ma, anche se si considera una sola lingua come l’Italiano, 256 caratteri sono insufficienti per rappresentare tutti i simboli di cui si ha bisogno se, per esempio, si considerano anche quelli tecnici, matematici, ingegneristici, etc. . I sistemi di codifica tradizionali, inoltre, creano problemi perché assegnano allo stesso carattere un codice diverso oppure lo stesso codice per caratteri diversi. Da queste esigenze nasce il codice UNICODE, che attribuisce a ciascun simbolo, indipendentemente dalla piattaforma, dall’applicativo e dalla lingua, un codice numerico identificativo univoco. Lo standard UNICODE è stato adottato dai principali leader del mercato informatico mondiale, è supportato dalla maggior parte dei sistemi operativi, dei data base e dei WEB Browser. Nasce così lo Unicode Consortium, un consorzio senza fini di lucro al quale aderiscono aziende leader del settore informatico e che si propone di sviluppare, standardizzare e promuovere l'uso del codice Unicode; il sito web del consorzio è accessibile mediante il seguente indirizzo (URL: Unique Resource Locator): http://www.unicode.org/ L’Unicode, oltre ai caratteri di cui ai codici visti in precedenza, codifica alfabeti nazionali occidentali, latini, greci, ebraici, arabi, cirillici, alfabeti nazionali orientali, ricchi di simboli come il Giapponese e il Cinese, simboli tecnici, etc.; ho scaricato per voi da Internet il codice UNICODE completo che, ovviamente, non riporto, ma vi consiglio di darci uno sguardo che risulterà sicuramente interessante; il file da consultare è “UNICODE CodeCharts.pdf”, salvato nella stessa cartella condivisa sul server dal quale copiate questi appunti. Un codice UNICODE è compreso tra 0 e 1.114.111 = (216 * 17)-1 corrispondente all’esadecimale 10FFFF. Per l’UNICODE sono stati definiti, per il momento, 3 standard a 8, 16 e 32 bit detti UTF-8, UTF-16 e UTF-32 (Unicode Transformation Formats). Capitolo 1: Informazione ed informatica 28 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 1.2.4. Rappresentazioni numeriche Packed e Zoned I numeri possono essere rappresentati anche in modalità packed e zoned facendo uso del codice adottato dal sistema di elaborazione. La rappresentazione ZONED fa uso di un byte per rappresentare ciascuna cifra del numero mentre con la packed due cifre sono impacchettate in un solo byte; per il segno ed il punto decimale la zoned fa uso di un ulteriore byte mentre la packed fa uso di un semibyte (4 bit). Per esempio, facendo uso del codice ASCII, la +12352 è: rappresentazione zoned di Decimale + Binario 00101011 00110001 00110010 00110011 00110101 00110010 Esadecimale 2B 1 2 31 3 32 5 33 35 2 32 Con la rappresentazione packed si usa la codifica BCD (Binary coded decimal), che assegna ad ogni cifra decimale la corrispondente rappresentazione binaria assoluta a 4 bit, al segno “+” 1100 ed al segno “-“ 1101; così la rappresentazione packed di +12352 è la seguente: Decimale +1 Binario 11000001 00100011 01010010 Esadecimale C1 23 23 52 52 1.2.5. Rappresentazioni numeriche: Confronto In questo breve paragrafo voglio riportare le semplici differenze tra le rappresentazioni fixed/floating point, dette binarie, e la zoned/packed, dette decimali, anche se queste considerazioni oggi hanno perso buona parte della loro valenza in quanto la stampa dei dati procede in maniera grafica e non più a caratteri come una volta. Mi rendo conto di aver detto qualcosa di piuttosto oscuro ma, se siete interessati, possiamo discuterne in classe ed approfondire concetti che ormai fanno parte della storia dell’informatica. Le rappresentazioni binarie, come evidente, ottimizzano lo spazio. Con riferimento ai tempi necessari per la loro elaborazione dirò che, mentre le rappresentazioni binarie sono più convenienti per le operazioni aritmetiche, quelle decimali si prestano meglio alle operazioni di Input/Output ovvero di immissione e Capitolo 1: Informazione ed informatica 29 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro stampa ma, probabilmente, oggi non è più così e sempre meno o sono quasi del tutto inutilizzate le rappresentazioni decimali. 1.3. Conclusioni A questo punto, se io vi chiedessi cosa rappresenta la successione binaria “1010001001001010” voi non potreste rispondere perché devo dirvi anche quale tipo di rappresentazione sto utilizzando; in binario assoluto sarebbe il valore 41546 mentre in fixed point 16 bit -23990 e, infine, se sono due caratteri del codice ASCII corrispondono alla stringa3 “óJ”. Naturalmente si tratterebbe di altri valori se floating point, packed o zoned ma potrebbero essere anche due note o un pixel colorato, etc. . Il concetto assomiglia molto alla relazione esistente tra i tipi dei file ed i programmi che li elaborano: ………. e infine tutto diventa binario, è il trattamento dell’informazione che la rende diversa. Al di là di tutti i concetti importanti riportati in questo capitolo, è opportuno sottolineare un aspetto estremamente semplice: Tutti i dati, per quanto complessi possano essere, possono essere rappresentati con alfabeti molto semplici e quando utilizzo la parola semplice mi riferisco all’alfabeto e non alla rappresentazione che è tutt’altro che semplice. D’altra parte, ad inizio capitolo, ho parlato anche di dati multimediali e, ve lo assicuro, rappresentare in binario una canzone o, addirittura, un film non è cosa semplice ma, e qui ci siamo arrivati, possibile. Il bit è il “mattoncino” con il quale costruire il castello delle nostre informazioni. Esempi di mattoncini che consentono la realizzazione di grandi opere ve ne posso dare tantissimi; per esempio con i mattoni, quelli veri, si costruiscono le case, i palazzi, le città; ed ancora, immaginate cosa si è riusciti a scrivere negli anni con 26 lettere dell’alfabeto, 10 cifre ed un gruppuscolo di segni di punteggiatura; e non finisce qui perché con solo 7 note ……………. ; allora non è importante la grandezza del mattoncino ma come lo si riesce ad utilizzare e la quantità di cui possiamo disporre! Vi renderete conto ancora meglio del concetto appena espresso quando comincerete a programmare utilizzando mattoncini che chiameremo istruzioni per realizzare programmi anche di una certa complessità. E’ evidente che non posso, né ritengo opportuno riportare le codifiche adottate per la rappresentazione di foto, audio o film, anche se in seguito ritornerò sull’argomento e, più precisamente, quando vi parlerò della compressione dati ma un piccolo accenno è possibile. Per esempio una foto può essere divisa in tanti punti detti pixel, contrazione di picture element, e, per ognuno di essi, è possibile memorizzare, opportunamente codificato in binario, il colore; per esempio, con 8 bit posso memorizzare fino a 28=256 colori, con 16 216=65.536 colori con 24 224=16.777.216; i 3 Stringa: successione di caratteri. Capitolo 1: Informazione ed informatica 30 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro PC attuali utilizzano 32 bit per memorizzare il colore di ciascun pixel. In questo modo una immagine su uno schermo, che utilizzi una risoluzione pari a 1024x768 pixel, occuperà 1024x767x32=25.165.824 bit pari a 3.145.728 byte ovvero 3MB. Allora una foto è memorizzata in binario come una mappa a matrice di punti colorati detta Bit Map e, infatti, una tipologia di file contenenti foto ha estensione .BMP . Ed un film? E’ una successione di foto detti frame; ma allora è facile (!!!!!!!!!) memorizzare un film perché so come memorizzare una foto ed è sufficiente memorizzare centinaia di migliaia di foto. Infine per la musica sarà sufficiente codificare le sette note? Per la gestione dell’audio i moderni sistemi di elaborazione utilizzano un opportuno convertitore analogico/digitale, quello che tutti conosciamo come scheda audio. La rappresentazione binaria di qualsiasi tipo di informazione è possibile grazie alla rivoluzione digitale in atto; per capire bene cosa intendo, è necessario dare delle definizioni. Una grandezza si dice analogica quando l’insieme dei suoi possibili valori è infinito mentre è digitale quando tale insieme è finito; si dice, in genere, che una grandezza analogica può variare con continuità mentre una digitale varia in maniera discreta. Per esempio i colori in natura sono infiniti, la musica è analogica. Con riferimento agli orologi, quello analogico ha le lancette mentre quello digitale ha un display per visualizzare l’ora ed i minuti; ebbene, si può dire che l’orologio analogico segna sempre l’ora esatta perché la lancetta dei minuti attraversa, in maniera continua, tutti i punti della circonferenza; l’orologio digitale, invece, tra un minuto e l’altro, non segna l’ora esatta. Qualcuno potrebbe suggerire di visualizzare anche i secondi ma non cambia nulla: tra un secondo e l’altro l’ora non sarebbe esatta. Altro esempio è quello di un poligono regolare che, con un numero sufficiente di lati, approssima una circonferenza. Ho detto la parola magica “approssima” che, in maniera del tutto generale, sta ad indicare che qualsiasi grandezza analogica può essere approssimata con una digitale. Ad esempio e con riferimento ai colori, il nostro occhio vede non più di un milione di colori, per cui se ne scegliamo, in maniera opportuna, un milione tra gli infiniti disponibili in natura, non perdiamo assolutamente niente; se abbassate il numero dei colori visualizzati dal vostro PC a 256=28, le vostre foto appariranno poco chiare mentre con 65536=216 colori saranno apprezzabili mentre con 16.777.216=224 saranno eccellenti e, in tutti i casi, il numero dei colori non è infinito. Con la musica ha cominciato Philips alcuni anni fa, producendo il CD-DA (Compact Disk-Digital Audio) e, successivamente, anche foto e film sono stati digitalizzati; si pensi alla TV satellitare, al digitale terrestre, ai DVD-Video, agli MP3, etc. . Capitolo 1: Informazione ed informatica 31 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro In altri termini, foto, audio, film e qualsiasi altra forma di informazione, viene rappresentata mediante una successione di valori o simboli o qualsiasi altra codifica digitale. I vantaggi del digitale possono essere così riassunti: • Nessun deterioramento della qualità: la qualità digitale è nota e si pensi alle copie ed ai film di molti anni fa, per i quali è stato necessario il restauro; pensate alle copie di video cassette o audio cassette: la qualità della copia è sempre inferiore all’originale. Il tempo e le copie deteriorano l’analogico. Il digitale non teme né il tempo né le copie: la copia della copia della copia …………….. della copia è perfettamente uguale all’originale; • Facilità di elaborazione: il digitale può essere gestito da un computer con tutti i vantaggi che conoscete; • Migliore trasferibilità: facilità di trasferimento da un supporto all’altro e mediante sistemi di comunicazione (Internet); • Interattività: possibilità di interagire con la sorgente dell’informazione; • Trasportabilità: Foto, audio e film sono oggi trasportabili con memorie digitali molto piccole. Il computer è il fulcro di questa rivoluzione ed è il digitale per eccellenza perché fa uso di solo due cifre: 0 e 1. Concludo il capitolo con questa citazione di un anonimo: Ci sono solo 10 tipi di persone, quelli che comprendono il binario e quelli che non lo comprendono. ……………… e voi a quale categoria appartenete? 1.4. Esercizi 1. Date esempi di trattamento dell’informazione nei seguenti ambiti: a) Scuola; b) azienda; c) ospedale; d) banca; e) campionato di calcio di serie A; f) biblioteca; g) anagrafe cittadina. 2. Convertire nelle altre basi i seguenti numeri: a) 85.510; 234.8710; 6543.36510; 1548.95610; b) 101111011.1012; 11111100000.11012; 1101000001.0012; 101110101.010112; Capitolo 1: Informazione ed informatica 32 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro c) 45.68; 251.258; 654.768; 76892.1538; d) A3.C916; C6D.4F16; 8BE5.23716; BA1C.E2F16 . 3. Eseguire le seguenti operazioni binarie: a) 101000 + 11010; 101011 + 111; 1010111111 + 1111; b) 101000 * 11010; 101011 * 111; 1010111111 * 1001; c) 101000 -11010; 101001 - 111; 1010110101 - 1111; d) 101000 : 1101; 10101101 : 111; 1010111111 : 1111; 4. Rappresentare in fixed point 16 bit i seguenti numeri: a) 8510; -23410; 3850010; b) 458; -6548; c) A316; -C6D16 . 5. Rappresentare in floating point 16+8 bit i seguenti numeri: a) -85.510; 234.8710; b) -45.68; 251.258; c) -A3.C916; C6D.4F16 . 6. Rappresentare in packed e zoned i seguenti numeri: a) 8510; -23410; 3850010; b) 458; -6548; c) A316; -C6D16 . 7. Rappresentare mediante il codice ASCII le seguenti parole: Computer; STAMPANTE; mouse; tastIERA. Capitolo 1: Informazione ed informatica 33 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Capitolo 2. Algoritmi e approccio alla programmazione 2.1. Definizione e proprietà Algoritmo è sinonimo di procedura di calcolo anche se oggi gli algoritmi sono utilizzati più in generale per l’elaborazione dell’informazione così come definita nei capitoli precedenti. Un algoritmo è un insieme ben coordinato di istruzioni che a partire da dati iniziali fornisce dati finali o risultati. Dati iniziali Algoritmo (input o ingresso) Dati finali (output o uscita) Chi esegue le istruzioni di un algoritmo è detto “esecutore” ed in particolare un algoritmo è detto programma quando l’esecutore è un sistema di elaborazione dati volgarmente detto computer. Chi, invece, realizza l’algoritmo è in genere detto programmatore ma sulle figure professionali torneremo in seguito. Se, per esempio, si vuole realizzare un algoritmo che risolva l’equazione di secondo grado individuiamo: • Dati iniziali: a, b e c ovvero i coefficienti dell’equazione; • Dati finali: le soluzioni x1 e x2 oppure l’unica soluzione ovvero il messaggio che non esistono soluzioni; • L’algoritmo: o Calcolare il delta; o Se positivo calcolare x1 e x2; o Se nullo calcolare x1=x2; o Se negativo inviare messaggio “non esistono soluzioni”. Il concetto di algoritmo è, in effetti, molto più generale e non si applica solo all’elaborazione delle informazioni; per esempio, quando si acquista un mobile, le istruzioni per il suo montaggio sono un algoritmo. Anche le fasi per la realizzazione di una torta possono essere descritte come un algoritmo i cui dati iniziali sono gli Capitolo 2: Algoritmi e approccio alla programmazione 34 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro ingredienti, l’algoritmo è costituito dalle fasi della lavorazione e i dati finali sono rappresentati dalla fumante torta. Un algoritmo deve godere delle seguenti proprietà: i. Efficacia: un algoritmo deve terminare la sua esecuzione fornendo i risultati corretti per qualsiasi combinazione dei dati in ingresso; ii. Finitezza: L’algoritmo deve essere costituito da un numero finito di istruzioni scelte da un insieme finito e l’esecuzione di ognuna di esse deve impiegare un tempo finito; anticipo che nonostante tali caratteristiche, un algoritmo, per errore di realizzazione, potrebbe non terminare la propria esecuzione; iii. Definitezza: assenza di ambiguità ovvero garanzia che lo stesso algoritmo eseguito da esecutori diversi in tempi diversi sugli stessi dati iniziali fornisce sempre gli stessi risultati; iv. Effettività: le istruzioni che costituiscono l’algoritmo devono essere effettivamente eseguibili. Un aspetto molto importante di un algoritmo è l’efficienza ovvero la sua bontà determinata in base a due parametri: il tempo e lo spazio. Con riferimento allo spazio dirò subito che questo parametro oggi ha perso molta della sua importanza, in quanto i moderni elaboratori hanno memoria a sufficienza mentre in passato non era così e il programmatore spesso doveva ottimizzare lo spazio affinché l’algoritmo potesse essere correttamente eseguito. Molta importanza, invece, ha il tempo misurato in passi e non così come siamo abituati ovvero in secondi, minuti o ore. La complessità di tempo di un algoritmo è il numero di passi che esso deve compiere per produrre i risultati; si tratta di una funzione matematica che lega i passi alla cosiddetta taglia dell’input. La complessità di tempo è in genere determinata nel caso migliore (numero minimo di passi), peggiore (numero massimo di passi) e medio (media aritmetica dei casi precedenti). Tornerò sull’argomento quando realizzeremo i primi algoritmi. 2.2. Rappresentazione Un algoritmo va rappresentato ovvero c’è la necessità di descrivere senza ambiguità l’elenco delle istruzioni che lo costituiscono e la loro sequenza ovvero l’ordine di esecuzione. In generale non si utilizza il linguaggio naturale così come negli esempi precedenti perché tutti i linguaggi naturali sono o possono essere ambigui. Ci sono numerosi formalismi per la scrittura degli algoritmi, tra questi io scelgo per voi i diagrammi a blocchi anche se molti informatici li ritengono obsoleti. Al contrario io Capitolo 2: Algoritmi e approccio alla programmazione 35 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro ritengo siano più visibili e semplici da capire per cui più adatti ad un corso di programmazione di primo livello come il nostro. Un diagramma a blocchi è costituito da blocchi e linee del flusso; i blocchi rappresentano le operazioni da eseguire e le linee del flusso l’ordine con il quale eseguire le istruzioni. Si utilizzano blocchi di forma geometrica diversa per le diverse operazioni (input, output, elaborazione, etc.): Inizio/fine Input Linee del flusso Elaborazione Connettore Alternativa A Chiamata esterna A Continuazione Output Continua Commento I connettori sono utilizzati anche per andare a pagina seguente nel caso in cui l’algoritmo non sia contenibile in una sola pagina. In questo caso, siccome sono possibili più continuazioni, all’interno del connettore si inserisce una lettera. Altro metodo per la rappresentazione degli algoritmi è la pseudocodifica ovvero le istruzioni sono costituite da frasi della lingua inglese. Il nome deriva dal fatto che questo metodo di rappresentazione è molto vicino ai linguaggi di programmazione che consentono di tradurre un algoritmo in un programma ovvero renderlo comprensibile ed eseguibile da una macchina. Capitolo 2: Algoritmi e approccio alla programmazione 36 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Ritengo opportuno, a questo punto, definire il termine linguaggio di programmazione di cui si parlerà in maniera molto approfondita in seguito. Un linguaggio di programmazione è un linguaggio artificiale e non naturale come le lingue; vengono definiti opportunamente per risolvere i problemi dell’elaborazione dei dati e, come i linguaggi naturali, hanno un alfabeto, le parole scritte su tale alfabeto, le frasi e un insieme di regole grammaticali detto sintassi per scrivere correttamente le istruzioni. 2.3. Formati, variabili e costanti, espressioni Prima di passare alla realizzazione degli algoritmi, è necessario parlare del formato delle istruzioni; per ogni istruzione i linguaggi di programmazione, di cui si parlerà in seguito, riportano il formato che, in maniera semplificata, riassume l’insieme delle regole per poter correttamente scrivere l’istruzione ovvero in modo tale che essa, sintatticamente corretta, sia riconoscibile ed eseguibile dal sistema. I formati delle istruzioni sono scritte utilizzando le seguenti convenzioni: [] Opzionalità | Alternativa … Ripetitività MAIUSCOLO Parole chiavi che vanno scritte così come riportate minuscolo Scelte del programmatore Le scelte del programmatore devono sempre essere conformi alle regole del linguaggio; per esempio, il nome di una variabile deve rispettare le regole imposte dal linguaggio. Esempi: [ON|OFF] indica l’alternativa opzionale tra le parole ON e OFF; ON|OFF indica l’obbligatorietà della scelta tra le parole ON e OFF; File1[,file2]… Indica l’obbligatorietà di “file1” seguita da nessuno, uno o più valori analoghi separati da virgole e scelti dal programmatore. Secondo il seguente formato: DIM nomevar[,nomevar]… as tipo [,nomevar[,nomevar]… as tipo]… le seguenti istruzioni sono sintatticamente corrette: DIM a as int32 Capitolo 2: Algoritmi e approccio alla programmazione 37 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro DIM a, b, totale as int16, x as string, delta, x1, x2 as double mentre le seguenti istruzioni sono errate: DIM a; b as int16 DIM a, b as int16. x as string Ed è arrivato il momento di realizzare il primo algoritmo che consente di determinare l’area di un triangolo. Dati Iniziali: Base B e altezza H. Dati finali: Area A. Algoritmo: Inizio DIM A, B, H AS SINGLE B,H Pseudocodifica Dim a, b, h as single Input b,h A=b*h/2 Print a End A=B*H/2 A fine Capitolo 2: Algoritmi e approccio alla programmazione 38 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Questo altro algoritmo, invece, consente di stampare il più grande di due numeri. Dati Iniziali: A, B. Dati finali: Il più grande. Algoritmo: Pseudocodifica Inizio Dim a,b as double Input a,b DIM A, B AS DOUBLE A, B V If a > b then Print a Else Print b End if F A>B A B End fine Oppure: Inizio DIM A, B, MAX AS DOUBLE Dim a, b, max as double Input a,b A, B V F A>B Max=A Pseudocodifica Max=B If a > b then Max=a Else Max=b End if Print max Max End fine Capitolo 2: Algoritmi e approccio alla programmazione 39 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Analizziamo gli algoritmi. A, B, H, Max sono variabili; una variabile è un’entità il cui valore può cambiare nel corso dell’elaborazione o in elaborazioni successive ed è caratterizzata da: • Nome: il nome consente di distinguere una variabile dall’altra, deve cominciare con una lettera dell’alfabeto, non deve superare, in genere, i 256 caratteri ma si sconsiglia di superare i 15 caratteri, si possono utilizzare lettere e cifre ed il segno di sottolineatura “_”; i nomi non sono case-sensitive ovvero non c’è distinzione tra maiuscole e minuscole. Esempi: Nomi corretti: X, X1, totale, somma, supercalifragilistichespiralidoso; Nomi scorretti: 1X, X+Y, A?; • Tipo: il tipo dipende dal contenuto della variabile e può essere numerico se contiene un numero, stringa o alfanumerica se contiene una qualsiasi successione di caratteri, data se contiene una data, etc.; • Valore: è il valore della variabile in un certo istante. Una costante, invece, non può variare il suo valore nel corso dell’elaborazione; esempi di costanti numeriche sono 5, 18, 123.765 mentre “Totale fattura” è un esempio di costante alfanumerica. Il nome di una variabile deve essere mnemonico ovvero ricordare il ruolo che la variabile ha nell’ambito del programma; in un algoritmo che risolva l’equazione di secondo grado, per esempio, DELTA potrebbe essere il nome della variabile contenente b^2-4*a*c e X1, X2 i nomi delle soluzioni mentre, per l’algoritmo che elabora una fattura, nomi di variabili potrebbero essere Totale_Fattura, Imponibile, IVA etc. Una variabile va sempre dichiarata con una apposita istruzione, spesso DIM, e, prima del suo utilizzo, bisogna sempre assegnarle un valore mediante una operazione di assegnazione, di input o altro che vedremo in seguito; quando ad una variabile è assegnato un valore, il precedente valore è definitivamente perso. La dichiarazione deve precedere l’utilizzo della variabile ed è legata al tipo della variabile. In Visual Basic.NET (d’ora in poi VB.NET) si utilizza l’istruzione DIM per dichiarare una variabile: DIM nomevar[,nomevar]… as tipo, [nomevar[,nomevar]… as tipo]… Alcuni tipi di dati disponibili in VB.NET sono i seguenti: Tipo Contenuto Note BYTE Numerico Binario assoluto 8 bit: valori da 0 a +28-1 Capitolo 2: Algoritmi e approccio alla programmazione 40 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro INT16 Numerico Fixed point 16 bit: valori da -215 a +215-1 INT32 Numerico Fixed point 32 bit: valori da -231 a +231-1 INT64 Numerico Fixed point 64 bit, valori da -263 a +263-1 SINGLE Numerico Floating point 32 bit DOUBLE Numerico Floating point 64 bit STRING Caratteri Lunghezza variabile CHAR Carattere Contiene un sol carattere UNICODE (codifica a 16 bit) BOOLEAN Logico TRUE o FALSE (Vero o Falso) DATE Data Contiene una data OBJECT Oggetto Oggetto come definiremo in seguito Bisogna evitare di “mischiare” le variabili nelle espressioni, per esempio: DIM a,b as INT16, c,d as STRING C=a+b non è valida A=a+b è valida A=b+d non è valida Vedremo successivamente come il linguaggio di programmazione ci consenta di effettuare conversioni tra i tipi di dati. Max=A è l’istruzione di assegnazione. Il formato dell’istruzione di assegnazione è il seguente: Variabile = Espressione dove “variabile” è un corretto nome di variabile e “espressione” una espressione, per il momento numerica, ottenuta utilizzando parentesi (solo tonde), variabili, costanti ed i seguenti operatori aritmetici: + per la somma - per la sottrazione * per la moltiplicazione / per la divisione \ per la divisione intera mod per il resto ^ per l’elevamento a potenza Le regole di precedenza utilizzate sono identiche a quelle della matematica. Capitolo 2: Algoritmi e approccio alla programmazione 41 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Le espressioni seguenti sono corrette: A=B*C-A I=I+1 TOTALE=((A+B)*5+K)*F Mentre le seguenti sono errate: A+B=C 1A=C+K A=((B+3)*6 SOMMA=K:5 PRODOTTO=5A Nelle espressioni possono anche essere utilizzate le funzioni. Una funzione informatica non si discosta molto dalla sua definizione matematica. Una funzione è una legge che associa ad ogni elemento di un insieme, detto dominio, un elemento di un altro insieme detto codominio: y=f(x). In generale, però, una funzione informatica può lavorare su nessun, uno o più argomenti (funzioni a più variabili). Ritengo opportuno riportare subito i formati di alcune funzioni matematiche: ABS(espressione): Restituisce il valore assoluto; INT(espressione): Restituisce la parte intera; SQRT(espressione): Restituisce la radice quadrata. così l’assegnazione X=SQRT(Y) assegna a X il valore della radice quadrata di Y. Queste funzioni sono riferite come funzioni standard del linguaggio perché in seguito vedremo anche le funzioni definite dal programmatore. In genere faremo poco uso delle funzioni sostituite dai metodi e dalle proprietà delle classi che tratterò durante lo studio del linguaggio di programmazione. Sicuramente più complessa è l’istruzione riportata nel rombo detta alternativa. L’alternativa consente di eseguire un gruppo di istruzioni piuttosto che altre. Di fondamentale importanza per una corretta gestione delle alternative è il concetto di espressione logica o predicato o, semplicemente, test. Una espressione logica, al contrario di quelle numeriche che possono avere infiniti valori, può essere solo vera (TRUE) o falsa (FALSE) cosicché in una alternativa ci sono solo due possibilità: una per vero e l’altra per falso. Il formato per un predicato è il seguente: Espressione OperatoreRelazione Espressione Capitolo 2: Algoritmi e approccio alla programmazione 42 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Dove “espressione” è stata definita in precedenza e OperatoreRelazione può essere: = Uguale > Maggiore < Minore <> Diverso <= Minore o uguale >= Maggiore o uguale Per esempio: 8>7 è vero 3>5 è falso 5>5 è falso 5>=5 è vero 7<>7 è falso Adesso la comprensione dei diagrammi riportati in precedenza dovrebbe essere chiara così come, per esercizio, potreste provare a realizzare un algoritmo che risolva l’equazione di secondo grado che, volutamente, non vi espongo. 2.3.1. Approfondimento: dichiarazione di costanti Le costanti possono essere utilizzate direttamente nei programmi senza essere dichiarate; in alcuni casi, però, è opportuno dichiarare anche le costanti. In genere le costanti possono essere dichiarate con l’istruzione CONST: Const name [ As type ] = initexpr [,name [ As type ] = initexpr]……. Per esempio Const pigreco as double=3.14159265358979, euro=1936.27 definisce la costante pigreco alla quale viene assegnato il valore 3.14159265358979 e la costante euro il cui valore è 1936.27; nello sviluppo dell’algoritmo potranno essere utilizzati i nomi delle costanti anziché i corrispondenti valori con evidenti vantaggi. Il valore di una costante non può essere cambiato durante l’esecuzione dell’algoritmo così, per esempio, una qualsiasi assegnazione che cambiasse il valore di pigreco e euro genererebbe un errore di programma la cui esecuzione terminerebbe in maniera anomala. Capitolo 2: Algoritmi e approccio alla programmazione 43 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 2.4. Iterazione o ciclo Una struttura fondamentale per la risoluzione dei problemi è quella iterativa. Una iterazione consente l’esecuzione di un gruppo di istruzioni per un certo numero di volte. Le strutture iterative più diffuse sono WHILE, REPEAT e FOR. Iterazione di tipo WHILE: Inizializzazione Pseudocodifica Test di uscita F V Inizializzazione WHILE test Istruzioni END WHILE Istruzioni e Modifica del test di uscita Iterazione di tipo REPEAT: Inizializzazione Pseudocodifica Istruzioni e Modifica del test di uscita F Inizializzazione REPEAT Istruzioni UNTIL test Test di uscita V Capitolo 2: Algoritmi e approccio alla programmazione 44 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Iterazione di tipo FOR: Inizializzazione Pseudocodifica For Var=espr1 to espr2 [step espr3] FOR Var=espr1 to espr2 [STEP espr3] Istruzioni NEXT Var Istruzioni Next Var L’insieme delle istruzioni che vengono eseguite più volte è detto “corpo del ciclo”, il test “test di uscita” e l’inizializzazione contiene le istruzioni preparatorie all’iterazione. Come si vede l’iterazione di tipo WHILE esce dal ciclo per falso mentre con REPEAT si esce per vero ed i test di uscita sono, rispettivamente, all’inizio ed alla fine; ciò consente di eseguire almeno una volta il corpo del ciclo con REPEAT mentre con WHILE potrebbe anche non essere eseguito. Il ciclo di tipo FOR, invece, è un ciclo a conteggio dove lo STEP indica l’incremento della variabile di controllo Var ogni volta che si esegue l’istruzione NEXT. Così il valore iniziale di Var è espr1 e viene incrementata di espr3 ad ogni NEXT e si esce dal ciclo quando Var>espr2. Una variante è rappresentata dallo step negativo che consente l’uscita quando Var<espr2. Se lo STEP viene omesso, viene assunto uguale a 1. Ritengo opportuno dare un esempio dello stesso algoritmo realizzato con ciascuno dei tre cicli. Si realizzi un algoritmo che sommi i numeri interi compresi tra 1 ed N; ad esempio se N=5 allora si deve sommare 1+2+3+4+5=15. Dati Iniziali: N. Dati finali: 1+2+ … + N Analisi: L’algoritmo è facilmente realizzabile mediante l’utilizzo di un semplice ciclo. Capitolo 2: Algoritmi e approccio alla programmazione 45 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Algoritmo sviluppato con il ciclo WHILE: Inizio DIM N, I AS INT32, S AS INT64 N I=1 S=0 Pseudocodifica dim n, i as int32, s as int64 I<=N V S=S+I I=I+1 F Input N I=1 S=0 While I<=N S=S+I I=I+1 End while Print S End S Fine Documentazione variabili: N: Dato in ingresso; I: Contatore; S: Somma corrente e finale. Capitolo 2: Algoritmi e approccio alla programmazione 46 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Algoritmo sviluppato con il ciclo REPEAT: Inizio DIM N, I AS INT32, S AS INT64 N I=0 S=0 Pseudocodifica dim n, i as int32, s as int64 Input N I=0 S=0 REPEAT S=S+I I=I+1 Until I>N Print S End S=S+I I=I+1 F I>N V S Fine Documentazione variabili: N: Dato in ingresso; I: Contatore; S: Somma corrente e finale. Capitolo 2: Algoritmi e approccio alla programmazione 47 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Algoritmo sviluppato con il ciclo FOR: Inizio DIM N, I AS INT32, S AS INT64 Pseudocodifica dim n, i as int32, s as int64 N Input N S=0 S=0 For I=1 to N S=S+I For I=1 to N Next I Print S S=S+I End NEXT I S Fine Documentazione variabili: N: Dato in ingresso; I: Contatore; S: Somma corrente e finale. Se, per esempio, si richiedeva la somma dei soli numeri dispari compresi tra 1 ed N ovvero 1+3+5+ … +N, allora, nel caso del ciclo FOR, è sufficiente utilizzare l’istruzione “FOR i=1 TO n STEP 2”. Capitolo 2: Algoritmi e approccio alla programmazione 48 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 2.5. Si fa sul serio State calmi e non vi preoccupate anche se da questo momento in poi gli algoritmi e la programmazione si complicano ma, d’altra parte, programmare non è cosa semplice. 2.5.1. Programmazione strutturata La programmazione strutturata ha come obiettivo l’utilizzo disciplinato delle strutture di controllo. Lo scopo principale è quello di realizzare algoritmi comprensibili. La comprensibilità degli algoritmi è un problema da non sottovalutare; il programmatore che ha realizzato un programma potrebbe, dopo un certo tempo, avere difficoltà a capire la logica del suo stesso lavoro, figuriamoci cosa succede se bisogna modificare il lavoro degli altri come spesso capita alle aziende produttrici di software, le cosiddette software house. Utilizzare poche e semplici strutture, pertanto, ne facilita la comprensione e, quindi, la modifica in caso di necessità; tornerò sull’argomento e lo approfondirò in seguito. Gli studiosi Bohm e Jacopini hanno dimostrato che tutti gli algoritmi sono realizzabili utilizzando solo tre strutture: sequenza, alternativa ed iterazione. Sequenza: Una sequenza è un insieme istruzioni per le quali definito un unico punto ingresso ed un unico punto uscita. Pseudocodifica Istruzioni di è di di Istruzioni Alternativa: V Una alternativa è la possibilità di eseguire un gruppo di istruzioni (sequenza) piuttosto che altre. Si noti comunque un unico punto di ingresso ed un unico punto di uscita. F Test Pseudocodifica Sequenza A Sequenza B IF test THEN Sequenza A ELSE Sequenza B END IF Capitolo 2: Algoritmi e approccio alla programmazione 49 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Iterazione: Inizializzazione Test di uscita F V Istruzioni e Modifica del test di uscita Una iterazione consente l’esecuzione di un gruppo di istruzioni (sequenza) per un certo numero di volte. Con riferimento all’intera struttura, si noti comunque un unico punto di ingresso ed un unico punto di uscita Pseudocodifica Inizializzazione WHILE test Istruzioni END WHILE Le tre strutture vanno realizzate così come sopra riportate senza alcuna eccezione; per esempio l’uscita dal ciclo WHILE non può avvenire per VERO. Spesso ci troviamo di fronte ad algoritmi non strutturati per i quali dobbiamo trovare una versione equivalente strutturata. Il concetto di equivalenza tra algoritmi è estremamente semplice: due algoritmi sono equivalenti se risolvono lo stesso problema. Per esempio il seguente algoritmo non è strutturato in quanto il ciclo ammette due uscite: Capitolo 2: Algoritmi e approccio alla programmazione 50 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Sequenza A V Test 1 Sequenza D F V F Test 2 Sequenza B Sequenza C L’algoritmo equivalente strutturato è il seguente: Capitolo 2: Algoritmi e approccio alla programmazione 51 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Sequenza A Test=Vero F Test V F V Test 1 V Sequenza B Test 2 F Sequenza C Sequenza D Test=Falso Test=Falso 2.5.2. Modularità L’approccio modulare alla risoluzione di un problema ne semplifica molto la soluzione. I problemi, nella maggioranza dei casi, sono piuttosto complessi e difficili da risolvere se non procedendo ad una sua suddivisione in sottoproblemi più semplici. A loro volta i sottoproblemi possono essere suddivisi in altri sottoproblemi ancora più semplici e così via fino ad ottenere una struttura gerarchica di Capitolo 2: Algoritmi e approccio alla programmazione 52 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro sottoproblemi facilmente risolvibili. La risoluzione di ciascun sottoproblema concorre alla soluzione del problema generale ovvero le singole e molteplici soluzioni vengono integrate in modo da risolvere il problema iniziale. Nella risoluzione dei singoli problemi si utilizzano due tecniche: Bottom-Up e Top-Down. Con la tecnica bottomup si procede alla realizzazione degli algoritmi a livello inferiore (sottoproblemi) e poi via via verso quelli a livello più alto. La tecnica Top-Down, invece, procede risolvendo i problemi a livello superiore e poi quelli a livello più basso. Ad esempio, se si vuole determinare il fattoriale del massimo di tre numeri, il problema può essere scomposto in due sottoproblemi: Calcolo del massimo e calcolo del fattoriale: Calcolo fattoriale del max di 3 numeri Calcolo del massimo di 3 numeri Calcolo del fattoriale Trattasi di un esempio piuttosto banale ma, d’altra parte, il problema iniziale è tutt’altro che complesso. Altri esempi saranno dati in seguito appena le conoscenze acquisite ci consentiranno di risolvere problemi più complessi. Mi direte che pur suddividendo il problema, alla fine realizzate comunque l’algoritmo come un’unica successione di istruzioni perdendo, così, la visione delle soluzioni dei singoli sottoproblemi e allora io vi dico che dovete pazientare per poter conoscere gli strumenti che tutti i linguaggi di programmazione mettono a disposizione del programmatore affinché il progetto possa essere realizzato in maniera rigorosamente modulare anche con l’apporto di più programmatori, nel senso che ognuno di essi risolverà uno o più sottoproblemi. L’approccio modulare alla risoluzione dei problemi sarà, pertanto, ripreso più avanti quando tratterò i sottoprogrammi; adesso si è voluto solo suggerire l’approccio modulare alla risoluzione dei problemi come tecnica mentale generale da utilizzare sempre per una corretta e semplice risoluzione dei problemi. Capitolo 2: Algoritmi e approccio alla programmazione 53 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 2.5.3. Complessità di tempo ed utilizzo dello switch Si consideri il seguente problema: Input: N, intero e positivo. Output: Stabilire se N è primo. Soluzione 1: Analisi: Si contano i divisori di N diversi da 1 e se stesso; se il numero di tali divisori è zero, il numero è primo. Diagramma: Capitolo 2: Algoritmi e approccio alla programmazione 54 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Inizio DIM N, I AS INT64, D AS INT32 N I=2 D=0 F I<N V V F N MOD I = 0 D=D+1 I=I+1 V N “ è primo D=0 F N “ non è primo” ” Fine Capitolo 2: Algoritmi e approccio alla programmazione 55 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Documentazione variabili: I: Contatore; D: Conta i divisori di N. Esercizio: pseudocodificare l’algoritmo. La complessità di tempo di questo algoritmo, sia nel caso migliore che in quello peggiore, è N-2. Si può fare meglio? Sì. Soluzione 2. Analisi: Si cerca un divisore di N diverso da 1 e se stesso e appena lo trovo concludo che N non è primo. Diagramma: Capitolo 2: Algoritmi e approccio alla programmazione 56 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Inizio DIM N, I AS INT64, SW AS BYTE SW AS Boolean N I=2 SW=0 SW=False I <= N/2 F I<N I <= SQRT(N) V V F N MOD I = 0 SW=1 SW=True I=N I=I+1 V N “ non è primo SW=1 ” SW F N “ è primo ” Fine Capitolo 2: Algoritmi e approccio alla programmazione 57 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Documentazione variabili: N: Dato in ingresso; I: Contatore; SW: Switch. Esercizio: pseudocodificare l’algoritmo. Si noti l’utilizzo di una variabile SW abbreviazione di switch (interruttore) utilizzata, in questo caso, per tenere memoria della presenza di un divisore; così, al termine dell’algoritmo, SW varrà 1 se è stato trovato un divisore e 0 altrimenti consentendomi pertanto di stabilire se N è primo oppure no. Una soluzione molto più elegante, rappresentata nel diagramma con i commenti, fa uso di una variabile logica. SW è definita boolean e non byte, per cui il suo valore può essere TRUE o FALSE. L’ultima alternativa, in questo caso, viene codificata semplicemente con IF SW Then La comprensione di questa soluzione è estremamente semplice. La complessità di tempo, in questo caso, è variata perché diversa nei casi migliore e peggiore. E’ facile intuire, infatti, che nel caso in cui N sia pari, l’algoritmo compie un sol passo mentre nel caso peggiore, ovvero quando il numero è primo, il numero di passi è ancora N-2 come nella soluzione precedente. Questo algoritmo è ancora migliorabile; se, infatti, si considera che dopo N/2 non ci sono più divisori di N la soluzione riportata in rosso nel diagramma precedente porta la complessità nel caso peggiore a N/2-1. Si riesce ancora a migliorare se si considera che se esiste un divisore di N maggiore della sua radice quadrata (SQRT), ne esiste anche uno minore di tale radice. Per questo motivo la soluzione in verde è senz’altro la migliore. In questo caso possiamo così concludere con la complessità di tempo: Caso migliore: N pari, numero di passi 1; Caso peggiore: N primo, numero di passi SQRT(N)-1 Caso medio: (1 + (SQRT(N)-1))/2=SQRT(N)/2 Questo esempio mette in evidenza come è assolutamente importante cercare sempre una soluzione efficiente al problema; nel nostro caso si ritenga il valore di N superiore ad 1.000.000 e si facciano le opportune considerazioni. In genere per la complessità di tempo si utilizza l’operatore “ordine di” abbreviato in O( ) che considera solo l’ordine di grandezza della complessità di tempo trascurando costanti e utilizzando solo il termine più significativo. Nei nostri esempi siamo passati dalla complessità O(N) a O(N/2), considerata comunque O(N), a O(SQRT(N)). Per esempio, se la complessità di tempo di un algoritmo è 3N2+5N si Capitolo 2: Algoritmi e approccio alla programmazione 58 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro dice che essa è O(N2) o quadratica mentre per 5N3+7N+2N è O(2N) o esponenziale. Gli algoritmi esponenziali sono praticamente intrattabili nel senso che, nonostante la enorme velocità dei sistemi di elaborazione, il tempo necessario misurato in modo tradizionale (ore, giorni, etc.) sarebbe eccessivo. Si deve pertanto cercare di realizzare sempre algoritmi con complessità di tempo lineare in quanto anche la complessità quadratica richiede tempi piuttosto lunghi. 2.5.4. Modalità di risoluzione degli esercizi Nel risolvere gli esercizi si seguano i seguenti passi: 1. Descrizione dei dati in ingresso; 2. Descrizione dei dati in uscita; 3. Analisi; 4. Realizzazione del/dei diagrammi; 5. Codifica; 6. Verifica; 7. Documentazione. E’ opportuno, inoltre, determinare sempre la complessità dell’algoritmo nei casi migliore e peggiore. Sulle fasi necessarie per la risoluzione dei problemi tornerò in seguito per ulteriori e necessari approfondimenti. Ritengo opportuno solo dare qualche semplice indicazione sulla fase di verifica o debugging. In questa fase occorre scegliere in maniera opportuna i dati di prova, quelli iniziali naturalmente; in genere occorre testare l’algoritmo su più di una serie di dati di prova per poter concludere che l’algoritmo è corretto. Molto importante è individuare e testare i cosiddetti casi particolari che impareremo ad individuare di volta in volta. Per esempio, per l’algoritmo che risolve l’equazione di secondo grado sarà opportuno considerare il caso in cui il delta è positivo, negativo e nullo oltre ai casi particolari a=0, b=0 e c=0, in tutto 6 casi. Per l’algoritmo dato in precedenza occorrerà considerare almeno il caso N primo e N non primo oltre ai casi particolari N=1, N=2 (e anche N=3?). Non è importante il numero delle prove effettuate ma la qualità dei dati di prova. E’ inutile testare l’algoritmo precedente per 10 volte su numeri non primi se poi dimentichiamo di testare il caso N primo. Capitolo 2: Algoritmi e approccio alla programmazione 59 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro L’operazione di debugging è molto importante perché, in caso di errori non individuati, si rilascia all’utilizzatore un software non efficace le cui conseguenze sono facilmente immaginabili. In genere l’operazione di debugging consente di accertare la presenza di errori ma non di accertarne l’assenza. In altre parole e come già detto, mestiere ingrato e difficile quello del programmatore che non può mai avere la certezza di aver scritto un software assolutamente perfetto. Sì perché è possibile che l’errore ci sia e non siamo stati in grado di individuarlo. 2.6. Il primo compito in classe Il 24/10/2005 viene svolto il primo compito in classe distinto per file come da tradizione; ritengo opportuno riportarne la soluzione completa e vi ricordo che la cartella “Primo compito in classe” contenuta nella directory condivisa sul server contiene la soluzione in VB.NET. 2.6.1. Fila sinistra 1. Descrivere un algoritmo che, ricevuti in input N numeri interi, determini la media aritmetica dei pari e dei dispari escluso lo zero e conti gli zeri. 2. Descrivere un algoritmo che, ricevuta in input una successione di N numeri, conti i pari e stabilisca la prima e l’ultima posizione di tali valori. 3. Descrivere un algoritmo che, ricevute in input N coppie di valori (A, B), conti le coppie in cui A e B sono pari. Opzionale: determinare la posizione della prima e dell’ultima coppia pari. Per tutti gli esercizi è assolutamente obbligatorio descrivere i dati in ingresso ed in uscita, riportare una breve analisi ed il diagramma a blocchi. 2.6.1.1. Esercizio 1 Input: N, N numeri Capitolo 2: Algoritmi e approccio alla programmazione 60 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Output: Media aritmetica dei pari, dei dispari e numero degli zeri. Analisi: Lo sviluppo dell’algoritmo richiede un ciclo nel quale contare e sommare i numeri pari e dispari escludendo e contando gli zeri. Una stampa finale fornirà i risultati voluti. Questo il diagramma: Capitolo 2: Algoritmi e approccio alla programmazione 61 L’Informatica per i miei studenti – Volume 1 Capitolo 2: Algoritmi e approccio alla programmazione Prof. Bianco Mauro 62 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Documentazione variabili: N: Numeri da gestire; A: Numero corrente in input; I: Contatore; Nd: Conta i numeri dispari; Np: Conta i numeri pari; Z: Conta gli zeri; Sp: Somma dei pari; Sd: Somma dei dispari; Mp: Media dei pari; Md: Media dei dispari. 2.6.1.2. Esercizio 2 Input: N, N numeri. Output: Contare i pari e stabilire la posizione del primo e dell’ultimo. Analisi: Lo sviluppo dell’algoritmo richiede un ciclo nel quale contare i pari e stabilire la posizione del primo e dell’ultimo numero pari. Questo il diagramma: Capitolo 2: Algoritmi e approccio alla programmazione 63 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro INIZIO Dim N, I , P, Pp, Up as Int16, A as Int64 N I = 1, P = 0 F I <= N V A V F A Mod 2=0 P=P+1 Up = I V P=1 F Pp = I I=I+1 V F P=0 “Nessun P, Pp, Up numero pari” FINE Capitolo 2: Algoritmi e approccio alla programmazione 64 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Documentazione variabili: N: Numeri da gestire; A: Numero corrente in input; I: Contatore; P: conta i numeri pari; Up: ultima posizione; Pp: prima posizione. 2.6.1.3. Esercizio 3 Input: N, N coppie. Output: Contare le coppie pari e stabilire la posizione della prima e dell’ultima. Analisi: Lo sviluppo dell’algoritmo richiede un ciclo nel quale individuare le coppie pari e stabilire la posizione della prima e dell’ultima. Questo il diagramma: Capitolo 2: Algoritmi e approccio alla programmazione 65 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro INIZIO Dim N, I, C, Up, Pp as Int16, A, B, as Int64 N I=1, C=0 F I<= N V A,B V F A Mod2=0 V F B Mod2=0 C=C+1 Up = I V F C=1 Pp = I I=I+1 V F C=0 “Nessuna coppia pari” C, Pp, Up “Coppie pari: “ C “Posizione prima coppia pari: “ Pp “Posizione ultima coppia pari: “ Up FINE Capitolo 2: Algoritmi e approccio alla programmazione 66 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Documentazione variabili: N: Coppie da gestire; A, B: Coppia corrente in input; I: Contatore; C: conta le coppie pari; Up: ultima posizione; Pp: prima posizione. 2.6.2. Fila destra 1. Descrivere un algoritmo che, ricevuti in input M numeri interi, determini la media aritmetica dei positivi e dei negativi e conti gli zeri. 2. Descrivere un algoritmo che, ricevuta in input una successione di M numeri, conti i positivi e stabilisca la prima e l’ultima posizione di tali valori. 3. Descrivere un algoritmo che, ricevute in input M coppie di valori (X, Y), conti le coppie in cui X e Y sono di segno contrario. Opzionale: determinare la posizione della prima e dell’ultima coppia di segno contrario. Per tutti gli esercizi è assolutamente obbligatorio descrivere i dati in ingresso ed in uscita, riportare una breve analisi ed il diagramma a blocchi. 2.6.2.1. Esercizio 1 Input: M, M numeri Output: Media aritmetica dei positivi, dei negativi e contare gli zeri. Analisi: Lo sviluppo dell’algoritmo richiede un ciclo nel quale contare e sommare i numeri positivi e negativi escludendo e contando gli zeri. Una stampa finale fornirà i risultati voluti. Questo il diagramma: Capitolo 2: Algoritmi e approccio alla programmazione 67 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Inizio Dim M, I, Cp, Cn, Z as Int16, A, Sp, Sn as Int64 M I=1 SN=0 SP=0 CP=0 CN=0 Z=0 F I<=M V A V F A>=0 V SN=SN+A F A=0 SP= SP+A Z=Z+1 CN=CN+1 CP= CP+1 I=I+1 F CP=O V “Nessun numero positivo” “Media positivi:” Sp/Cp A Capitolo 2: Algoritmi e approccio alla programmazione 68 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro A F CN=0 “Media negativi:” Sn/Cn V “Nessun numero negativo” “Zeri:” Z FINE Documentazione variabili: M: numerica gestire; A: Numero corrente in input; I: Contatore; SN: somma dei numeri negativi; SP: somma dei numeri positivi; CN: contatore numeri negativi; CP: contatore numeri positivi; Z: contatore zeri. Capitolo 2: Algoritmi e approccio alla programmazione 69 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 2.6.2.2. Esercizio 2 Input: M, M numeri. Output: Contare i positivi e stabilire la posizione del primo e dell’ultimo. Analisi: Lo sviluppo dell’algoritmo richiede un ciclo nel quale contare i positivi e stabilire la posizione del primo e dell’ultimo. Questo il diagramma: Capitolo 2: Algoritmi e approccio alla programmazione 70 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Inizio Dim M, I, P, Up, Pp as Int16, A as Int64 M I=1 P=0 F I <= M V A V A>0 F UP = I P=P+1 V P=1 F PP = I I=I+1 F P=0 V “Nessun numero positivo” P,PP, UP Fine Capitolo 2: Algoritmi e approccio alla programmazione 71 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Documentazione variabili: M: Numeri da gestire; A: Numero corrente in input; I: Contatore; P: conta i numeri pari; Up: ultima posizione; Pp: prima posizione. 2.6.2.3. Esercizio 3 Input: M, M coppie. Output: Contare le coppie con elementi di segno opposto e stabilire la posizione della prima e dell’ultima. Analisi: Lo sviluppo dell’algoritmo richiede un ciclo nel quale individuare le coppie di segno opposto e stabilire la posizione della prima e dell’ultima. Questo il diagramma: Capitolo 2: Algoritmi e approccio alla programmazione 72 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro INIZIO Dim M, I, CO, PC, UC as Int16, X, Y as Int64 M I=1 CO=0 F I <= M V X, Y V F X>0 V V F Y<0 F X=0 F CO=CO+1 Y>0 V CO=CO+1 UC = I UC=I V F CO=1 V PC = I F CO=1 PC=I I=I+1 F CO=0 V “Nessuna coppia di segno opposto” CO, PC, UC FINE Capitolo 2: Algoritmi e approccio alla programmazione 73 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Documentazione variabili: M: Coppie da gestire; X, Y: Coppia corrente in input; I: Contatore; CO: conta le coppie di segno opposto; PC: Posizione prima coppia; UC: Posizione ultima coppia. 2.7. Operatori logici Si voglia determinare se una terna di valori numerici interi G, M ed A costituiscono una data corretta. In questo caso è evidente che la correttezza del giorno dipende dal mese perché, per esempio, la data 31/03/2005 è corretta mentre non lo sono 31/04/2005 e 30/02/2005. Ci si rende conto, pertanto, che per verificare la correttezza del giorno devo individuare il mese, ma per fare questo ho bisogno di 12 alternative diverse. La realizzazione di tale algoritmo, pertanto, risulta alquanto difficoltosa per il proliferare delle alternative. Una soluzione molto più semplice è ottenibile utilizzando gli operatori logici che, lavorando su predicati, ovvero su valori Vero e Falso, restituiscono a loro volta un valore di verità. Gli operatori logici più utilizzati sono AND, OR, XOR e NOT. Il funzionamento di questi operatori è evidenziato dalle seguenti tavole di verità nelle quali A e B sono espressioni o variabili logiche: A B A AND B A OR B A XOR B V V V V F V F F V V F V F V V F F F F F A NOT A V F F V L’operatore NOT è unario ovvero lavora su un sol predicato e ne cambia il valore di verità. Capitolo 2: Algoritmi e approccio alla programmazione 74 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Per capire il funzionamento di questi operatori ritengo opportuno fornire la soluzione all’esercizio proposto ad inizio paragrafo. Input: G, M, A interi Output: Verificare se G, M ed A costituiscono una data corretta. Analisi: L’anno A è ritenuto corretto se positivo; il mese M, ovviamente, è corretto se compreso tra 1 e 12; la correttezza del giorno è invece più complessa perché richiede di stabilire il numero di giorni del mese in esame e, nel caso Febbraio (M=2), se l’anno è bisestile. Diagramma. Capitolo 2: Algoritmi e approccio alla programmazione 75 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro INIZIO Dim G, M, A, MAXG as byte M, G, A V F M>=1 AND M<=12 “Mese errato” V F A>0 V “Anno errato” F M=4 OR M=6 OR M=9 OR M=11 MAXG=30 V V A MOD 4=O M=2 F F MAXG=31 MAXG=29 V MAXG=28 G>=1 AND G<= MAXG F “Data corretta” “Giorno errato” FINE Capitolo 2: Algoritmi e approccio alla programmazione 76 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Documentazione variabili: G, M, A: Dati in ingresso, la data da controllare; MAXG: Numero massimo giorni mese in input. Come si vede, l’utilizzo degli operatori AND e OR ha semplificato molto l’algoritmo. 2.8. Array: Vettori e matrici Le variabili utilizzate fino ad ora sono dette variabili semplici o dati elementari perché possono contenere un solo valore. In genere i dati elementari si aggregano tra di loro creando strutture denominate strutture informative o strutture dati. L’argomento sarà trattato in maniera approfondita nei prossimi capitoli ma ora ho la necessità di introdurre le due più semplici strutture dati, i vettori e le matrici, per poter continuare a realizzare algoritmi, naturalmente sempre più complessi. Il vettore è la struttura dati più semplice perché costituito da una collezione di elementi ognuno dei quali accessibile mediante un indice; l’indice di un elemento è la sua posizione nell’ambito del vettore: V0 V1 V2 ………………. Vi ………………. Vn-2 Vn-1 Vn L’indice può essere specificato mediante una espressione numerica intera, per cui, ovviamente, si può anche utilizzare una semplice costante o una variabile. Un vettore è caratterizzato dalla dimensione che rappresenta il numero massimo di elementi che esso potrà contenere. In genere il primo elemento è in posizione 0, vettori a base 0, oppure 1, vettori a base 1. Il linguaggio di programmazione VB.NET utilizza vettori a base 0; in altri linguaggi è possibile modificare la base utilizzando persino valori negativi. Salvo diverso avviso, d’ora in poi tratterò vettori e matrici a base 0. Per esempio istruzione: DIM V(10) as INT16, W(N) as STRING dichiara il vettore V() costituito da 11 elementi interi ed il vettore W costituito da N+1 elementi di tipo stringa. Ci si può riferire all’intero vettore con V() e ad un suo elemento racchiudendo l’indice tra parentesi così V(0) è il primo elemento, V(1) il secondo, V(i) l’i-esimo, V(10) o W(N) l’ultimo. L’indice di un vettore deve essere compreso tra 0 ed N dove N è la dimensione del vettore: DIM A(N), il generico elemento è A(i) 0<=i<=N Capitolo 2: Algoritmi e approccio alla programmazione 77 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Una matrice può essere considerata una estensione del concetto di vettore; gli elementi sono disposti su righe e colonne, così, per individuare un singolo elemento, è necessario utilizzare due indici: l’indice di riga e l’indice di colonna; in altri termini la matrice ha due dimensioni: A0 0 A0 1 ……………….. A0 n-1 A0 n A1 0 A1 1 ……………….. A1 n-1 A1 n ………... Ai j …………. Am-1 0 Am-1 1 ……………….. Am-1 n-1 Am-1 n Am 0 Am 1 ……………….. Am n-1 Am n L’istruzione DIM A(M,N) dichiara una matrice costituita da (M+1)*(N+1) elementi distribuiti su M+1 righe ed N+1 colonne il cui generico elemento è: A(i,j) 0<=i<=M, 0<=j<=N All’intera matrice ci si riferisce con A(,). Una matrice avente un numero di righe pari al numero di colonne (M=N) è detta quadrata. Nelle matrici quadrate si individuano le diagonali principale e secondaria costituite, rispettivamente, dagli elementi per i quali i=j e i+j=N, dove i è l’indice di riga, j l’indice di colonna e N l’ordine della matrice ovvero il numero di righe e colonne. Il numero delle dimensioni può essere anche più di due ottenendo così matrici a tre A(,,), quattro A(,,,) e così via dimensioni. In informatica tali strutture dati sono dette array e, secondo quanto esposto, un array ad una dimensione è un vettore, a due dimensioni una matrice, a tre dimensioni una matrice a tre dimensioni e così via. 2.8.1. Esempi di programmazione Caricare un array significa assegnare un valore a ciascun suo elemento. I due algoritmi seguenti caricano un vettore ed una matrice bidimensionale. Capitolo 2: Algoritmi e approccio alla programmazione 78 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Inizio DIM N, I AS INT16 N DIM V(N) AS INT64 Pseudocodifica I=0 (I=1 se base 1) F I<=N Dim n, i as int16 Input n Dim v(n) as int64 I=0 (I=1 se base 1) While I<=N Input v(i) I=I+1 End while End V V(I) I=I+1 Fine Documentazione variabili: N: Dimensione del vettore; V(): Vettore; I: indice. Come si può notare è necessario un ciclo per poter assegnare a ciascun elemento del vettore un valore. La complessità di tempo è, pertanto, N+1 ovvero O(N). Capitolo 2: Algoritmi e approccio alla programmazione 79 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Inizio DIM M, N, I, J AS INT16 M, N DIM A(M,N) AS INT64 Pseudocodifica Dim m, n, i, j as int16 Input m, n Dim a(m,n) as int64 I=0 (I=1 se base 1) F I<=M V J=0 (J=1 se base 1) F J<=N i=0 (i=1 se base 1) While i<=m j=0 (j=1 se base 1) While j<=n Input a(i,j) j=j+1 End while i=i+1 End while End V A(I,J) J=J+1 I=I+1 Fine Documentazione variabili: M,N: Dimensioni matrice; Capitolo 2: Algoritmi e approccio alla programmazione 80 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro A(,): Matrice; I, J: indici. In questo caso, il caricamento richiede due cicli uno nell’altro e la complessità di tempo è (m+1)*(n+1) ovvero O(m*n). 2.8.2. Ordinamento di vettori Un vettore è ordinato crescente (decrescente) se ogni suo elemento è maggiore (minore) di quello che lo precede. Posso farvi numerosi esempi di strutture dati ordinate: l’elenco telefonico, un vocabolario, l’elenco dei nominativi degli studenti di una classe, le fatture commerciali ordinate su data e numero, etc. . L’ordinamento risolve un problema molto importante nell’elaborazione dei dati: semplifica la ricerca; un elenco telefonico o un vocabolario non ordinato alfabeticamente sarebbe praticamente inutilizzabile. Ci sono numerosi algoritmi di ordinamento, alcuni molto semplici da realizzare, ma con alta complessità di tempo, e altri molto più complessi che, però, riducono il tempo necessario per eseguire l’operazione di ordinamento: 1. Bubblesort ¾ Confrontare ciascun elemento del vettore con il successivo ed eventualmente scambiarli di posizione se non risultano ordinati; ¾ Dopo aver completato il confronto di tutte le coppie contigue di elementi del vettore, ritornare al passo precedente se è stato effettuato almeno uno scambio altrimenti il vettore è ordinato. La complessità di tempo di questo algoritmo è pari a O(n2), dove n è la dimensione del vettore, e si verifica tutte le volte che il minimo si trova in ultima posizione (perché?). 2. Quicksort Un miglioramento dell’algoritmo precedente prevede che al passo successivo non si confronti il primo elemento con il secondo e così via, ma si parte dal confronto degli ultimi due elementi e, al passo successivo, di nuovo dai primi due e così via fino a quando non si effettuano scambi; si tratta di un piccolo miglioramento che non modifica sostanzialmente la complessità di tempo. 3. Selezione Un altro algoritmo si basa sull’idea di determinare il minimo del vettore e scambiarlo con il primo elemento, quindi ripetere l’operazione su un vettore Capitolo 2: Algoritmi e approccio alla programmazione 81 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro ridotto ovvero trovando il minimo a partire dal secondo elemento e così via. Anche questo algoritmo ha una complessità di tempo quadratica. Realizzate tutti e tre gli algoritmi eventualmente persone diverse ne realizzano, previo accordo, uno solo di quelli proposti. Ci sono algoritmi di ordinamento molto veloci con complessità di tempo pari a O(n * log2n). 2.8.3. Ricerca binaria. Una ricerca sequenziale verifica la presenza di un valore in una struttura, per esempio un vettore, confrontando dal primo all’ultimo gli elementi della struttura con quello cercato. Una ricerca sequenziale su una struttura ordinata non sfrutta, pertanto, l’ordinamento esistente; pensate alla ricerca di una parola sul vocabolario partendo dalla prima pagina e procedendo in maniera rigorosamente sequenziale; in effetti la nostra ricerca in un vocabolario è molto più veloce e dopo solo pochi passi si arriva alla pagina contenente il termine da cercare. Se volessi cercare un elemento in un vettore disordinato non avrei altra soluzione se non quella di procedere in maniera sequenziale e la complessità di tempo sarebbe O(n) con n dimensione del vettore. Se, invece, il vettore è ordinato posso effettuare la cosiddetta ricerca binaria o dicotomica, confrontando il valore da cercare con l’elemento centrale del vettore, quindi spostare la ricerca nella metà di destra o di sinistra a seconda che il valore da cercare sia maggiore o minore a meno che i due elementi non siano uguali, nel qual caso la ricerca si conclude con esito positivo. Se, invece, continuando a dividere l’intervallo di ricerca, questo diventa vuoto, allora concludo che il valore cercato non è presente nel vettore. Questo algoritmo ha una complessità pari a O(log2n). Si noti che, per esempio, log2 1.000 = 10, log2 1.000.000 = 20, log2 1.000.000.000=30, così per cercare un valore tra mille sono sufficienti solo 10 passi, tra un milione solo 20 passi e addirittura solo 30 confronti sono necessari per individuare un valore tra un miliardo. Se non ci credete possiamo fare un piccolo giochino: voi pensate un numero tra 1 e 1.000.000.000 ed io ve lo indovino con solo 30 domande, ovviamente ogni volta voi mi direte se il numero da me scelto è maggiore, minore o uguale a quello pensato. 2.9. Sottoprogrammi Nell'ambito di un programma non banale accade che una stessa parte di programma debba essere eseguita più volte ed in punti diversi; sorge, quindi, la Capitolo 2: Algoritmi e approccio alla programmazione 82 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro necessità di scrivere più volte lo stesso pezzo di programma. Gli svantaggi sono evidenti: - Duplicazione del codice; - Impossibilità di riutilizzare parti di codice in progetti futuri; - Una eventuale modifica ad una di tali parti dovrà essere ripetuta in tutti i punti in cui tale parte è presente. La risposta eccellente a tali problematiche e ad altre, di cui parleremo in seguito, è fornita dai sottoprogrammi; i termini subroutine, procedura, modulo e routine sono sinonimi di sottoprogramma. Un sottoprogramma consiste in una porzione di codice distinta o distinguibile da quello che chiameremo Programma principale o chiamante al quale si aggancia per mezzo di una o più chiamate. Il programma principale effettua, pertanto, solo una chiamata al sottoprogramma il quale, completata la sua esecuzione, mediante una istruzione del tipo RETURN, ritorna il controllo al chiamante ed esattamente all'istruzione successiva alla chiamata. Chiamante Chiama 1 Sottoprogramma R1 Istruzioni Chiama 2 R2 Fine Sottoprogramma Chiama 3 R3 L'esecuzione in punti diversi di un sottoprogramma avviene con una sola istruzione chiamante e tutto appare come se il modulo sia presente in più punti nel Capitolo 2: Algoritmi e approccio alla programmazione 83 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro chiamante. Un sottoprogramma può a sua volta chiamare un'altra procedura e così via fino ad un certo numero di volte dipendente dal linguaggio di programmazione in uso. Così i termini principale e sottoprogramma lasciano spesso il posto a chiamante e chiamato. Il modulo principale, che consente l'avvio dell'esecuzione di un programma, è detto Programma principale e si differenzia dagli altri moduli perchè è l'unico (non in tutti i linguaggi di programmazione) che può essere attivato direttamente dall'utente, mentre gli altri moduli possono essere soltanto richiamati da chiamanti. L'indipendenza del solo codice tra chiamante e chiamato non è sufficiente a garantire una riutilizzabilità della procedura nell'ambito dello stesso programma ed in programmi diversi ma tale indipendenza deve essere allargata anche alle variabili utilizzate dal chiamante e dal chiamato. Si pensi al calcolo delle disposizioni di N oggetti su M posti che comporta il calcolo dei seguenti tre fattoriali: N!, M! ed (N-M)! . Il calcolo del fattoriale può essere effettuato da un modulo separato, ma tale modulo deve effettuare tale calcolo in tre punti diversi del programma principale e su tre valori diversi; si pensi anche alla possibilità di riutilizzare il modulo, in seguito, in altri programmi per i quali il valore di cui calcolare il fattoriale è assolutamente imprevedibile. L'idea è quella di progettare un modulo per il calcolo del fattoriale di, per esempio, X con risultato in FX; il cerchio si chiude se si riesce a disporre di una tecnica che consenta di associare a X ed FX i valori reali di cui calcolare il fattoriale ed in cui restituire il risultato. Si pensi, inoltre, a cosa potrebbe succedere se il modulo utilizzasse la variabile I, per il ciclo FOR necessario per il calcolo del fattoriale, e che questa variabile sia contemporaneamente in uso, con altri scopi, nel programma principale. Sento qualcuno che risponde: "Non utilizzo variabili omonime!" Controrisposta: "E la riutilizzabilità futura?" In realtà un sottoprogramma ben progettato può essere utilizzato senza alcuna modifica in altri programmi; l'indipendenza del codice viene estesa anche alle variabili. Per spiegare tale indipendenza occorre dare la definizione di ambiente di un modulo come dell'insieme di tutte le variabili utilizzate e dei corrispondenti valori. Si tratta quindi di chiarire il legame esistente tra l'ambiente del chiamato e quello del chiamante. Tali ambienti possono essere completamente disgiunti o congiunti oppure intersecarsi su un sub-set di variabili. Negli ambienti disgiunti variabili aventi lo stesso nome, nel chiamante e nel chiamato, sono variabili distinte, mentre in ambienti congiunti sono la stessa variabile. La maggior parte dei linguaggi di Capitolo 2: Algoritmi e approccio alla programmazione 84 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro programmazione hanno ambienti disgiunti ma la gestione delle variabili è, in genere, molto più complessa; le variabili, infatti, possono essere così classificate: ¾ Locali: Una variabile locale viene dichiarata all’interno di un sottoprogramma ed il suo valore è perso al termine dell’esecuzione di quest’ultimo; ¾ Private: Una variabile privata è comune solo ad un certo numero di sottoprogrammi; ¾ Globali: Sono variabili comuni a tutti i sottoprogrammi del progetto a meno che, nell’ambito di un sottoprogramma, non venga ridichiarata; in un tal caso in questo sottoprogramma sarà locale; ¾ Statiche: Una variabile statica è locale ma conserva il proprio valore tra una chiamata e l’altra. L’area di visibilità di una variabile, quindi, dipende da come essa è dichiarata, dove per area di visibilità si intende un insieme di sottoprogrammi per i quali una certa variabile è comune. Premesso che la gestione degli ambienti può variare da linguaggio di programmazione a linguaggio, diciamo subito che la disgiunzione completa degli ambienti, tranne che per alcune variabili, X ed FX nell'esempio, è senz'altro la soluzione migliore. Del tutto in generale, tale situazione è resa possibile grazie alla cosìddetta tecnica del passaggio dei parametri: ¾ I parametri formali sono quelli utilizzati dalla procedura (X, FX); ¾ I parametri attuali sono quelli di volta in volta specificati dell'attivazione della procedura ((N,FN) o (M,FM) o .....). al momento I parametri formali si vestono ed assumono il ruolo dei parametri attuali. Si noti, nell'esempio, una sola coppia di parametri formali e tante di attuali; quante? ma ovvio, quante sono le chiamate. Siamo così arrivati alla possibilità di avere variabili del chiamante e del chiamato con nome diverso che sono la stessa variabile. Così i parametri formali, X ed FX nell'esempio, sono delle variabili fittizie, prive di qualsiasi contenuto, che, di volta in volta, si "vestono" delle variabili attuali. Il passaggio dei parametri può avvenire secondo due modalità: per riferimento e per valore. Il passaggio per riferimento consente al parametro formale di ricevere l'indirizzo di memoria del corrispondente attuale per cui, in questo caso, le due variabili sono la stessa variabile pur avendo nomi diversi; ne segue che una qualsiasi variazione del parametro formale si riflette nel parametro attuale nel programma chiamante. Il passaggio per valore consente al parametro formale di ricevere solo il valore del corrispondente attuale per cui, in questo caso, le due variabili non sono la stessa Capitolo 2: Algoritmi e approccio alla programmazione 85 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro variabile; ne segue che il valore iniziale del parametro formale è quello dell'attuale al momento della chiamata ma una qualsiasi variazione del parametro formale non si riflette nel parametro attuale nel programma chiamante. Nell'esempio citato, il parametro attuale corrispondente a X può essere passato per valore ma quello relativo a FX deve essere passato per riferimento altrimenti il programma chiamante è impossibilitato a ricevere il risultato del calcolo del fattoriale così come determinato dalla procedura. Le variabili indicizzate, vettori e matrici, vengono passate per riferimento ovvero al chiamato arriva l'indirizzo del primo elemento e la lunghezza comune e tali informazioni sono sufficienti per correttamente gestire il parametro attuale indicizzato; per valore, invece, sarebbe necessario duplicare in locazioni del chiamato tutti gli elementi del parametro attuale con evidente perdita di spazio e di tempo. Il programma chiamante specifica, nell’istruzione che chiama il sottoprogramma, i parametri attuali con un elenco di variabili e, analogamente, il modulo chiamato specifica un elenco di variabili in numero e tipo corrispondenti a quelli attuali. A solo scopo documentativo i parametri sono classificati in: - Input: Il chiamato utilizza il valore del parametro attuale senza effettuarne alcuna modifica; il passaggio può avvenire sia per valore che per riferimento, meglio per valore (nell'esempio X); - Output: Il chiamato non utilizza il valore del parametro attuale ma ne modifica il valore allo scopo di restituire un risultato. Il passaggio deve avvenire per riferimento (nell'esempio FX); - Input/Output (I/O): Il chiamato utilizza il valore del parametro attuale e lo modifica. Il passaggio deve avvenire per riferimento. E' il caso in cui si progetta il modulo per il calcolo del fattoriale con un solo parametro che costituisce sia il valore di cui calcolare il fattoriale sia il risultato. Un particolare sottoprogramma è una funzione definita dall'utente; l’unica differenza consiste nel fatto che al nome della funzione è associato un valore; le funzioni definite dall'utente, pertanto, possono essere utilizzate nell'ambito di un programma allo stesso modo di quelle standard ossia semplicemente specificandone il nome nell'ambito di una espressione o di qualsiasi altra istruzione che ne richieda l'utilizzo. Una programmazione modulare che faccia uso di un gran numero di moduli costituiti da poche istruzioni porta ad innumerevoli vantaggi: ¾ facile messa a punto; ¾ riutilizzabilità del codice; ¾ possibilità di lavorare in gruppi; Capitolo 2: Algoritmi e approccio alla programmazione 86 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro ¾ una meno difficoltosa manutenzione, ovvero tutte le modifiche successive, che sarà necessario apportare ad un progetto per mutate esigenze, miglioramenti, eliminazione di errori, etc..., richiederanno tanto meno sforzo quanto più esso è modulare e ben documentato. Tutti questi vantaggi vengono ripresi e migliorati dalla programmazione orientata agli oggetti di cui vi parlerò nel prossimo anno. Per poter realizzare e ben documentare un sottoprogramma è opportuno seguire i seguenti passi: 1. Compilare un modulo di documentazione; 2. Realizzare il diagramma a blocchi; 3. Codificare; 4. Debugging; 5. Completamento del modulo di documentazione. In generale programmatori facenti parte di un gruppo di lavoro utilizzano una modulistica standard cartacea o elettronica per documentare il lavoro prodotto in modo tale da uniformare la documentazione prodotta durante la realizzazione di un progetto informatico. In genere, per ciascun sottoprogramma che si realizza, nella documentazione occorre riportarne il nome, cosa fa, come lo fa (analisi), una descrizione completa dei parametri e delle altre variabili utilizzate, in dettaglio: ¾ Informazioni di carattere generale: nome del sottoprogramma, nome del file che lo contiene, nome del programmatore, data, breve descrizione, codice di versione, ecc.; ¾ Analisi: breve analisi sull’algoritmo risolutivo; ¾ Descrizione parametri: descrizione dettagliata di tutti i parametri con l’indicazione del nome e del tipo, delle modalità di passaggio, etc.; ¾ Descrizione altre variabili utilizzate: descrizione di tutte le altre variabili utilizzate specificandone nome, area di visibilità, tipo, etc.; ¾ Note: altre informazioni che si ritiene opportuno fornire. La vostra preparazione sarà completa dopo le dovute esercitazioni, la visione degli esempi contenuti nelle cartelle “Sottoprogrammi 1”, “Sottoprogrammi 2”, “SUB Function” e “STATIC” a loro volta contenute nella cartella condivisa sul server e gli esercizi che svolgerete. In precedenza ho accennato alla modularità come un approccio mentale alla risoluzione dei problemi; alla luce di quanto esposto in questo paragrafo, invece, la programmazione modulare comincia ad apparire come una vera e propria metodologia per la risoluzione dei problemi. In pratica, ciascun sottoproblema verrà risolto con un sottoprogramma; i sottoprogrammi verranno sviluppati in maniera Capitolo 2: Algoritmi e approccio alla programmazione 87 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro indipendente e, molto spesso, da programmatori diversi; la soluzione completa del problema passa attraverso una corretta gestione delle chiamate ai sottoprogrammi realizzati. 2.9.1. Ricorsività Parlare di ricorsività in questo momento mi sembra piuttosto prematuro ma senz’altro il posto più giusto nell’ambito della mia piccola ma non troppo dispensa; si consideri, infatti, che è passato meno di un anno da quando avete cominciato a studiare questa senz’altro difficile arte della programmazione. Vi sembra eccessivo il termine arte? Vi assicuro che sono in molti ad utilizzarlo. Una procedura è definita ricorsiva quando chiama se stessa; con un maggiore livello di dettaglio, vi dico che ci sono due tipi di ricorsività: • Ricorsività diretta: un sottoprogramma chiama se stesso; • Ricorsività indiretta: un sottoprogramma è richiamato da un altro a livello inferiore; mi spiego con un esempio: A chiama B, B chiama A; analogamente, A chiama B, B chiama C, C chiama D, ………., KK chiama ZZ e ZZ chiama … indovinate un po’? Ormai vi state abituando ma ritengo opportuno tranquillizzarvi dicendovi che vi farò vedere almeno un esempio in laboratorio e qualcuno lo realizzerete voi il prossimo anno scolastico. 2.10. Programmazione modulare: esempio Siamo pronti per un esempio più significativo sulla programmazione modulare, trattata nei paragrafi precedenti. Si voglia risolvere il seguente problema: Riportare in un vettore B() i fattoriali degli elementi primi di un vettore A(). Soluzione: Input: N, V(). Output: B() contenente i fattoriali degli elementi primi di A(). Analisi: si scompone il problema secondo il seguente schema gerarchico: Capitolo 2: Algoritmi e approccio alla programmazione 88 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Riportare fattoriali degli elementi primi di A() in B() Carica vettore A() Riporta fattoriali Verifica primo Stampa vettore B() Calcola fattoriale Come si può notare, il sottoproblema “Riporta i fattoriali” è stato ulteriormente suddiviso in due sottoproblemi: “Verifica primo” e “calcola fattoriale”. Ciascun sottoproblema sarà risolto realizzando un sottoprogramma e, opportunamente gestite le chiamate, si arriva alla soluzione del problema proposto. A questo punto non resta che realizzare i sottoprogrammi in maniera indipendente, uno per ciascun studente, e, quindi, organizzarli in un unico programma; se non ci riuscite non vi preoccupate, lo faremo insieme in laboratorio; successivamente scrivete un programma identico che lavori su una matrice anziché su un vettore, riutilizzando, ovviamente, i sottoprogrammi già realizzati. Spero che questa politica dei piccoli passi possa giovare alla vostra formazione anche se mi rendo conto che questa trattazione vi potrà apparire frammentata perché sono costretto a riprendere ed approfondire i concetti in maniera discontinua; sull’argomento della programmazione modulare, infatti, tornerò ancora in seguito. Dico sempre ai miei allievi che studiare l’informatica, all’inizio, è come realizzare un puzzle i cui tasselli, spesso, non vengono inseriti al loro posto in maniera sequenziale ma sparsa, la bellezza del puzzle sarà evidente solo quando esso sarà completo. Dopo qualche mese, pertanto, sarà chiaro solo il “guaio” in cui vi siete cacciati scegliendo il corso programmatori ma alla fine del triennio, quando tutti i tasselli saranno al loro posto, molti misteri di questa complicata materia vi saranno chiari e spero possa servirvi per la vita e per il lavoro. Sì, non solo per il lavoro, ma anche per la vita perché l’Informatica allena il cervello ed un cervello allenato è utile in qualsiasi circostanza. Capitolo 2: Algoritmi e approccio alla programmazione 89 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 2.11. Un po’ di filosofia: la tesi di Church Alcuni studiosi si sono chiesti cosa sia l’effettivamente computabile ovvero quando una funzione è calcolabile. Da qui la necessità di individuare l’insieme di tutte le funzioni effettivamente computabili. Si tratta di un concetto astratto e non è semplice trovare una risposta. Si sono così definiti vari strumenti per computare funzioni: Linguaggi di programmazione, funzioni matematiche, macchine virtuali, etc. Ciascuno di questi formalismi definisce un insieme di funzioni computabili e avendone dimostrato l’equivalenza, lo studioso Church arrivò alla seguente conclusione: L’insieme delle funzioni effettivamente computabili è quello definito dalla macchina di Touring (o qualsiasi altro formalismo per l’equivalenza di cui innanzi). La macchina di Touring è ideale ed è costituita da un nastro infinito ed una testina che, muovendosi sul nastro, può leggere o scrivere simboli di un alfabeto. Quando arriverete in quinta e se parteciperemo alla gara di Informatica presso l’Università di Pisa, imparerete ad utilizzare la macchina di Touring. 2.12. Esercizi Dati elementari 1. INPUT: 2 numeri A e B OUTPUT: Stampa ordinata di A e B. 2. Descrivere un algoritmo che risolva una equazione di secondo grado. 3. Descrivere un algoritmo che ricevuti in input 3 numeri stampi il minimo. 4. Descrivere un algoritmo che verifichi se B divide A. 5. INPUT: A, B,C OUTPUT: Stampa ordinata di A,B e C 6. INPUT: A,B e C OUTPUT: Verificare se A,B e C possono essere lati di un triangolo. 7. INPUT: A,B e C, lati di un triangolo. OUTPUT: Verificare se il triangolo è equilatero, isoscele o scaleno. 8. INPUT: N numeri OUTPUT: Somma degli N numeri. 9. Descrivere un algoritmo che effettui la somma dei primi N numeri interi. 10. Descrivere un algoritmo che determini il minore di N numeri. Capitolo 2: Algoritmi e approccio alla programmazione 90 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 11. INPUT: N OUTPUT: Somma dei numeri pari e dispari minori di N. 12. INPUT: N >= 0 13. Descrivere un algoritmo per il calcolo di X^N usando l'operatore "*". 14. Determinare il maggiore di N valori numerici. 15. Descrivere un algoritmo per il calcolo di M*N usando l'operatore "+". 16. INPUT: N 17. Realizzare un algoritmo che determini il numero primo più vicino a X. 18. Realizzare un algoritmo che determini i primi n numeri primi. 19. Descrivere un algoritmo che calcoli il valore finale di una somma S depositata in banca al tasso di interesse del R% annuo dopo N anni. 20. Fornire un algoritmo che calcoli il coefficiente binomiale. 21. Descrivere un algoritmo che determini il M.C.D. di due numeri interi e positivi. 22. Descrivere un algoritmo che riduca una frazione ai minimi termini. 23. Input: due frazioni, A/B e M/N. Output: La loro somma, differenza, prodotto e rapporto. 24. Descrivere un algoritmo che determini il m.c.m di due numeri interi e positivi. 25. Determinare le prime n terne pitagoriche. 26. I primi due numeri di Fibonacci sono 0 e 1; i successivi sono dati dalla somma dei due che lo precedono: 0, 1, 1, 2, 3. 5, 8, 13 e così via. Realizzare un algoritmo che generi i primi n numeri di Fibonacci. 27. INPUT:Data (Giorno,mese,anno) OUTPUT:Verificare se la data è corretta. 28. INPUT: Data OUTPUT: Data relativa al giorno successivo. 29. INPUT: Data OUTPUT: Data relativa al giorno precedente. 30. Descrivere un algoritmo che ha in input una successione di N numeri e stabilisce quante volte accade che un numero è maggiore del precedente, quante volte è minore e quante uguale. OUTPUT: N! OUTPUT: Stabilire se N è primo. Capitolo 2: Algoritmi e approccio alla programmazione 91 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 31. INPUT:N OUTPUT:Verificare se N è una data corretta nella forma GGMMAA. 32. Una banca effettua operazioni di quattro tipi (1-4) diversi e percepisce per ciascuna di esse il seguente compenso: tipo 1 € 1.00, tipo 2 € 2.00, tipo 3 € 3.50, tipo 4 € 6.00 Progettare un algoritmo che, nell'ambito di una giornata, riceva i tipi delle operazioni effettuate e fornisca, a fine giornata, ricevendo quale tipo il valore 9, gli incassi ed il numero di operazioni effettuate in totale e per ciascun tipo. 33. Descrivere un algoritmo che, ricevute in input il numero degli abitanti di M città, stabilisca: • Quante città hanno fino a 100.000, tra 100.001 e 1.000.000 e più di 1.000.000 di abitanti; • La città col maggior numero e quella con il minor numero di abitanti nonchè la loro posizione nella successione in input; 34. Descrivere un algoritmo che, ricevuti in input tre numeri M, N e P interi positivi, calcoli il fattoriale del più grande dei tre. 35. Descrivere un algoritmo che, ricevuti in input tre numeri A, B e C interi positivi, calcoli la somma dei primi X numeri interi, con X il più piccolo tra i tre numeri immessi. 36. Descrivere un algoritmo che, ricevuta in input una sequenza di N numeri interi e positivi, determini se il loro massimo è un numero primo. 37. Descrivere un algoritmo che, ricevuta in input una sequenza di N numeri interi e positivi, determini se il loro minimo è un numero perfetto. 38. INPUT: Due numeri interi e positivi. OUTPUT: Stabilire se sono primi tra loro. 39. Descrivere un algoritmo che, ricevuti in input N numeri interi, determini la media aritmetica dei pari e dei dispari escluso lo zero e conti gli zeri. 40. Descrivere un algoritmo che, ricevuta in input una successione di N numeri, conti i pari e stabilisca la prima e l’ultima posizione di tali valori. 41. Descrivere un algoritmo che, ricevute in input N coppie di valori (A, B), conti le coppie in cui A e B sono pari e determini la posizione della prima e dell’ultima coppia pari. 42. Descrivere un algoritmo che, ricevute in input M coppie di valori (X, Y), conti le coppie in cui X e Y sono di segno contrario e determini la posizione della prima e dell’ultima coppia di segno contrario. 43. Descrivere un algoritmo che, ricevuta in input una successione di N numeri interi e positivi, conti i numeri perfetti. 44. Descrivere un algoritmo che, ricevuta in input una successione di N numeri interi e Capitolo 2: Algoritmi e approccio alla programmazione 92 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro positivi, conti i numeri primi. 45. Descrivere un algoritmo che, ricevute in input N coppie di valori (A, B), conti le coppie in cui A e B sono primi tra loro. 46. Descrivere un algoritmo che, ricevuta in input una successione di N numeri interi e positivi, determini la somma dei fattoriali dei numeri primi. 47. Visualizzare la tavola pitagorica di ordine N. Vettori 48. Caricare e stampare un vettore di N elementi. 49. INPUT: A() e B() lunghi N OUTPUT: C() dato da C(i) = A(i)+B(i). 50. INPUT: A() OUTPUT: B() dato da B(i) = 2*A(i). 51. INPUT: A() OUTPUT: A() così modificato: A(i) = A(i)*i. 52. INPUT: A() e B() lunghi N OUTPUT: A() dato da A(i) = min{A(i),B(i)}. 53. INPUT: A() OUTPUT: A() modificato secondo l'assegnazione: A(i)=A(i)*3 se A(i) è pari A(i)=A(i)*2 se A(i) è dispari 54. INPUT: A(),B() e C() lunghi N OUTPUT: D(), D(i) = max {A(i),B(i),C(i)}. 55. INPUT: A() OUTPUT: Prodotto degli elementi di posto pari e dispari. 56. INPUT: A() OUTPUT: Il suo minimo. 57. Descrivere un algoritmo che inverta un vettore su se stesso (e in un altro vettore). 58. INPUT: A() OUTPUT: Il massimo ed il minimo di A(). 59. INPUT: X() e Y() lunghi N OUTPUT: W() così definito: W(i) = x(i)*y(i) se X(i) e Y(i) entrambi diversi da zero W(i) = i negli altri casi. 60. INPUT: W() e K OUTPUT: Quante volte K è presente in W(). Capitolo 2: Algoritmi e approccio alla programmazione 93 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 61. INPUT: V() e K OUTPUT: In 3 vettori, gli elementi di V() minori, maggiori e uguali a K. 62. INPUT:V() OUTPUT: 2 vettori contenenti gli elementi pari e dispari di V() 63. INPUT: A(), K OUTPUT A() così modificato: A(i)=A(i)*i se i<k A(i)=A(i)/i se i>k A(i)=A(i) se i=k 64. INPUT: W() e K OUTPUT: In 2 vettori gli elementi di W() multipli e sottomultipli di K. 65. Descrivere un algoritmo che, ricevute in input le altezze di N persone, stabilisca: • L'altezza media; • Quante persone hanno l'altezza maggiore, minore o uguale alla media; • L'altezza massima e minima e le relative posizioni nella successione data in input. 66. INPUT: V() e K OUTPUT: Posizione di K in V(). L'algoritmo deve ciclare ed uscire quando l'utente darà 0 in input per K. 67. INPUT: V() OUTPUT: Max e min di V(); scambiare il minimo col primo elemento ed il massimo con l'ultimo. 68. INPUT: V(). OUTPUT: Il fattoriale della somma del minimo e del massimo del vettore. 69. INPUT: V(). OUTPUT: L'elemento che si discosta meno dalla media aritmetica e quello che si discosta di più. 70. INPUT: V(). OUTPUT: La posizione del più piccolo numero pari nonchè quanti sono gli eventuali elementi ad esso uguali. 71. Descrivere un algoritmo che, ricevuti in input il vettore V(), costituito da M elementi, e due numeri X e Y, con X<Y, determini quanti elementi del vettore sono minori di X, quanti compresi tra X e Y e quanti maggiori di Y nonchè le loro rispettive somme. 72. Descrivere un algoritmo che, caricati due vettori V() e W() costituiti, rispettivamente, di M e N elementi, determini quanti elementi di V() sono maggiori del minimo di W(). 73. INPUT: V(). OUTPUT: Determinare la media aritmetica degli elementi di posto pari, degli elementi di posto dispari e di tutti gli elementi. 74. Input: V(N), X. Output: W() dato da V() privo dell’elemento in posizione X. Capitolo 2: Algoritmi e approccio alla programmazione 94 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 75. Input: V(N), X, Y e X<=Y. Output: W() dato da V() privo degli elementi dalla posizione X a Y. 76. Input: V(N), E, X. Output: W() dato da V() con E inserito in posizione X. 77. Input: V(N) ordinato crescente, E. Output: W() dato da V() con E nella posizione che gli compete secondo l’ordinamento crescente. 78. Descrivere un algoritmo che, a fine mese, ricevuti gli incassi giornalieri di un negozio, fornisca in uscita: • L'incasso mensile; • Il giorno in cui si è incassato di più ed il relativo incasso; • Il giorno in cui si è incassato di meno ed il relativo incasso; • La media aritmetica degli incassi giornalieri. Si consideri il mese di trenta giorni. 79. Descrivere un algoritmo che, caricati due vettori A() e B(), determini quanti elementi di B() sono minori del prodotto degli elementi di A(). 80. INPUT: A() e B() OUTPUT: Unione. 81. INPUT: A() e B() OUTPUT: Intersezione. 82. Descrivere un algoritmo che, ricevuti in input il vettore V() di M elementi ed un numero K, determini quanti elementi di V() sono primi con K. 83. INPUT: A() e B() ordinati crescenti. OUTPUT: Il vettore X(), ordinato crescente, ottenuto dalla fusione dei primi due. 84. Descrivere un algoritmo che riceva in input un vettore e determini quante volte in esso è presente il suo stesso massimo e quante volte il suo stesso minimo nonchè le ultime posizioni in cui si trovano il massimo ed il minimo. 85. INPUT: V(). OUTPUT: stabilire quanti numeri primi sono in esso contenuti e, tra questi, il massimo ed il minimo. 86. Progettare un algoritmo che, ricevuta in input un importo da pagare, restituisca i tagli ed il numero di banconote/monete necessarie. 87. Progettare un algoritmo che legga successivamente dei numeri e li inserisca in un vettore (inizialmente vuoto) solo se non sono già presenti. In caso contrario scrivere un messaggio del tipo "numero gia presente all'i-esimo posto". 88. Descrivere un algoritmo che, ricevuti in input i tre vettori A(L), B(M) e C(N), visualizzi gli elementi di A() presenti in B() e non in C(). Capitolo 2: Algoritmi e approccio alla programmazione 95 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 89. Descrivere un algoritmo che, caricato il vettore A(), costituito da M elementi interi, stabilisca se esiste in esso almeno un numero perfetto. 90. Descrivere un algoritmo che, ricevuto in input un vettore V() costituito da M elementi interi e positivi, riporti in un secondo vettore W() gli elementi perfetti di V(). Si stampi il vettore W() dall'ultimo elemento al primo. 91. Descrivere un algoritmo che, ricevuto in input un vettore V() costituito da M elementi interi e positivi, riporti in un secondo vettore W() i fattoriali degli elementi primi di V(). Si stampi il vettore W() dall'ultimo elemento al primo. 92. Slittamento di un vettore: si realizzi un algoritmo che slitti gli elementi di un vettore di X posizioni in avanti ed azzeri tutti gli elementi precedenti la posizione X. 93. Rotazione di un vettore: si realizzi un algoritmo che slitti gli elementi di un vettore di X posizioni in avanti e riporti in testa gli ultimi X. 94. Input: V(M), W(N), X. Output: Il vettore A() i cui primi X elementi sono presi da V(), seguiti da tutti gli elementi di W() quindi i restanti di V(). Opportune considerazioni per casi particolari. 95. Descrivere un algoritmo che, ricevuti in input i tre vettori V(M), W(N) e X(P), conti gli elementi comuni. 96. INPUT: Un vettore contenente molti zeri e numeri positivi; OUTPUT: Vettore compattato ottenuto sostituendo a zeri consecutivi un numero negativo pari al numero di zeri individuati. 97. Scompattare il vettore compattato di cui all'esercizio precedente. 98. Ordinamento di un vettore: INPUT: V(); OUTPUT: V() ordinato crescente. 99. Ricerca binaria: INPUT: V() ordinato crescente, K; OUTPUT: Verificare se K è presente in V(). Matrici 100. Fornire un DaB per caricare e stampare una matrice di ordine M*N. 101. INPUT : M(,) quadrata OUTPUT : La somma di tutti gli elementi, degli elementi della diagonale principale e degli elementi della secondaria. 102. INPUT : A(,) quadrata OUTPUT : B(,) trasposta di A(,). 103. INPUT : M(,) OUTPUT : Minimo e massimo e rispettivi indici. Capitolo 2: Algoritmi e approccio alla programmazione 96 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 104. Descrivere un algoritmo che, ricevuta in input la matrice A(,) ed un numero K, determini quanti elementi di A(,) sono maggiori di K, quanti uguali a K e quanti minori di K. 105. INPUT : M(,) OUTPUT : La somma di tutti gli elementi, degli elementi dispari, dei pari e dei primi. 106. Si progetti un programma che, ricevuta in input una matrice quadrata A(,) di ordine M, determini la media aritmetica di tutti gli elementi, degli elementi della diagonale principale e secondaria. 107. INPUT: A(,). OUTPUT: La posizione del più piccolo numero pari nonchè quanti sono gli eventuali elementi ad esso uguali. 108. INPUT: M(,) OUTPUT : Riga e colonna per le quali è massima la somma degli elementi. 109. INPUT:M(,), K OUTPUT: Indici di riga il cui prodotto degli elementi è K. 110. INPUT:M(,), K OUTPUT: Indici di colonna la cui somma degli elementi è K. 111. INPUT : A(,) e B(,) OUTPUT : Intersezione di A(,) e B(,). 112. INPUT : M(,) OUTPUT : Determinare dapprima le somme di ciascuna riga e ciascuna colonna, quindi stampare. 113. INPUT : M(,) quadrata di ordine N OUTPUT : ordinare le righe di M(,) 114. INPUT: M(,) quadrata OUTPUT: Verificare se esiste una riga la cui somma degli elementi è uguale alla somma degli elementi della diagonale principale. 115. Come il precedente con colonne e diagonale secondaria. 116. INPUT : M(,) quadrata OUTPUT : Stabilire se M(,) è simmetrica. 117. Descrivere un algoritmo che, caricata la matrice A(,), costituita da MxN elementi interi positivi, stabilisca quanti numeri primi sono in essa contenuti e, tra questi, il massimo. 118. Descrivere un algoritmo che, ricevuta in input la matrice A(,), quadrata di ordine M, stampi i fattoriali degli elementi positivi, interi e non appartenenti alla diagonale secondaria della matrice. 119. Descrivere un algoritmo che, ricevuta in input la matrice A(,) di ordine MxN ed il Capitolo 2: Algoritmi e approccio alla programmazione 97 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro numero X, stampi gli indici delle righe nelle quali il numero X compare almeno 3 volte. 120. Descrivere un algoritmo che, ricevuta in input la matrice A(,) di ordine MxN, ed un numero X determini la riga della matrice in cui X compare più volte e quante volte e quella in cui X compare meno volte e quante volte. 121. Costruire la matrice A(,) di ordine M*N nella quale A(i,j) = i! + j!. 122. Descrivere un algoritmo che, nella prima fase, carichi una matrice A(,) di ordine Mx2 che riporta nella prima colonna gli importi e nella seconda la corrispondente aliquota IVA. Nella seconda fase l'algoritmo riceve in input un valore rappresentante una aliquota IVA e calcola la somma degli importi relativi a tale aliquota. Opzionale: La seconda fase deve essere ciclica e concludersi quando l'utente fornisce il valore 0 per l'aliquota. 123. Descrivere un algoritmo che, nella prima fase, carichi una matrice A(,) di ordine Mx2 che riporta nella prima colonna gli importi e nella seconda la corrispondente aliquota IVA. Nella seconda fase l'algoritmo calcola e stampa le somme degli importi divisi per aliquote. 124. Descrivere un algoritmo che, ricevuti in input il vettore W() di N elementi e la matrice A(,) di ordine MxN, stabilisca se il vettore è presente in una riga della matrice. 125. Descrivere un algoritmo che, ricevuta in input la matrice W(,) quadrata di ordine M, determini quanti elementi di W(,) sono perfetti e, di questi, quanti appartengono alla diagonale principale e quanti alla secondaria. 126. Descrivere un algoritmo che, ricevuta in input la matrice W(,) di ordine MxN, determini se in essa esistono due colonne i cui prodotti degli elementi siano uguali. 127. Descrivere un algoritmo che, ricevuti in input il vettore V() di M elementi e la matrice B(,) di ordine MxN, stabilisca se il vettore è presente in una colonna della matrice. 128. Descrivere un algoritmo che, ricevute in input le matrici A(,) e B(,), rispettivamente, MxN e PxQ, visualizzi gli elementi comuni. 129. Descrivere un algoritmo che, ricevuta in input una matrice quadrata, conti le righe la cui somma degli elementi è uguale a quella degli elementi della diagonale secondaria. 130. Progettare un algoritmo che, ricevute in input n coppie costituite dall’importo da pagare ed il loro numero (quanti importi tutti uguali da pagare), restituisca i tagli ed il numero di banconote/monete necessarie. Capitolo 2: Algoritmi e approccio alla programmazione di ordine, 98 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Capitolo 3. Hardware 3.1. Sistemi, automi, processi e modelli Un sistema è un insieme di parti interconnesse ed interagenti che costituiscono una unica entità. Una parte di un sistema può, a sua volta, essere un sistema detto sottosistema, ovvero un sistema può essere incorporato all’interno di un sistema più ampio detto ecosistema. Spesso i termini sistemi e sottosistemi vengono sostituiti dai termini microsistemi e macrosistemi. Le parti di un sistema concorrono al raggiungimento di uno scopo così come, per esempio, un sistema di elaborazione, volgarmente detto computer, serve per l’elaborazione dell’informazione ed un sistema stereofonico per ascoltare la musica; il corpo umano è un sistema e noi stessi, in classe, costituiamo un sistema, che ci consente lo scambio di informazioni allo scopo di apprendere. Un sistema riceve dall’ecosistema input e/o sollecitazioni e restituisce output: Sistema Input Output I sistemi possono essere collegati tra loro secondo diverse modalità: • Seriale: L’output di un sistema costituisce l’input di un secondo sistema; Input Sistema 1 Sistema 2 Output Un esempio di sistemi sequenziali, è costituito dalla catena di montaggio, nella quale un semilavorato di un settore costituisce materia prima per un altro settore e così via fino al prodotto finito. • Parallelo: due sistemi condividono l’input Input Capitolo 3: Hardware Sistema 1 Output Sistema 2 Output 99 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Nella nostra aula ognuno di voi è un sistema e riceve lo stesso input: la mia spiegazione. • Retroazione o feedback: L’output di un sistema influenza l’input di un altro . Input Sistema 1 Output Sistema 2 Nell’esempio precedente, qualcuno di voi potrebbe interrompere e chiedermi di ripetere. Altro esempio è il caso di una persona che ascolta musica da un sistema HiFi e regola il volume se questo non è di suo gradimento. I sistemi sono anche classificati come statici, che non evolvono nel tempo, e dinamici; deterministici, in cui l’output dipende solo dall’input, per cui questo sarà sempre uguale, anche in tempi diversi, in corrispondenza dello stesso input, e probabilistici in cui svariate cause possono portare a risultati diversi in corrispondenza dello stesso input. I sistemi di elaborazione sono sistemi deterministici mentre, per esempio, il sistema borsistico è probabilistico. I sistemi autonomi, ricevuto l’input dall’uomo, sono in grado di eseguire i loro processi in totale autonomia. Questi sistemi vengono visti come scatole nere alle quali l’uomo è interessato solo all’input ed all’output e non alle trasformazione effettuate dal sistema per passare dall’uno all’altro. Una macchina così fatta e che sia deterministica, è indicata con il termine automa; in particolare un automa è definito come una macchina costituita da: • Un insieme finito di possibili input; • Un insieme finito di possibili output; • Un insieme finito di stati interni; • Una funzione, detta di transizione, che consente il passaggio della macchina da uno stato all’altro in funzione dell’input e dello stato in cui si trova; • Una funzione che definisce l’output. Un esempio di automa è un juke-box o una macchina che distribuisce bibite; in ambito informatico ha rilevante interesse la macchina di Touring. L’insieme delle azioni compiute da un sistema per raggiungere il suo obiettivo è detto processo. In particolare, un processo è sequenziale quando le operazioni vengono eseguite una dopo l’altra ovvero non è possibile eseguire una istruzione se non al completamento della precedente, mentre dicesi parallelo se più istruzioni possono essere eseguite contemporaneamente. Un processo può, pertanto, essere definito come l’insieme delle azioni che il sistema deve compiere per passare dall’input all’output. Capitolo 3: Hardware 100 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro In un sistema di elaborazione, un processo è la fase di esecuzione di un programma. Molto spesso, invece di realizzare un sistema, lo si rappresenta con un formalismo matematico detto modello. Per esempio, prima di realizzare una nuova auto se ne descrivono e verificano le caratteristiche con un modello matematico, realizzato mediante un computer, quindi e se ritenuto opportuno se ne realizza un prototipo e solo successivamente, effettuati tutti i test, si passa alla produzione in serie. I modelli matematici sono molto utilizzati, ad esempio per le previsioni meteorologiche. 3.2. Sistema di elaborazione Un sistema di elaborazione è, ovviamente, un insieme di parti interconnesse ed interagenti. In maniera immediata, un sistema di elaborazione può essere considerato come costituito da due parti: l’Hardware ed il Software. In maniera più dettagliata, esso è costituito da unità centrale di elaborazione, memorie di massa, dispositivi periferici, software di base, software applicativo, etc.; in questo e nei prossimi capitoli approfondirò il trattamento di questi componenti. Il sistema di elaborazione è spesso chiamato computer, elaboratore elettronico o semplicemente elaboratore ma il termine più appropriato è senz’altro sistema di elaborazione. 3.3. La macchina di Von Neumann John Von Neumann (Budapest-1903; Washington-1957) fu il primo a realizzare un sistema di calcolo basato sull’idea di programma memorizzato. In questo sistema, infatti, il programma, opportunamente codificato in binario, veniva memorizzato all’interno di una memoria che poteva contenere anche i dati da elaborare. In pratica non vi era differenza tra dati e istruzioni che li elaborano, entrambi codificati in binario e memorizzati all’interno della stessa memoria. Ancora oggi i moderni elaboratori, pur se tecnologicamente diversi, lavorano secondo i concetti della macchina di Von Neumann memorizzando dati e programmi all’interno di una memoria. Lo schema generale della macchina di Von Neumann è riportato nella seguente figura: Capitolo 3: Hardware 101 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro RAM Input CPU CU Output ALU In questo schema le frecce indicano il verso del flusso dei dati. La sezione INPUT consente il collegamento dei dispositivi di INPUT, necessari per l’immissione dei dati. La sezione OUTPUT consente il collegamento dei dispositivi di OUTPUT, necessari per l’emissione dei risultati. La CPU è la Central processing Unit (Unità Centrale di Elaborazione) e costituisce l’organo più importante in un sistema di elaborazione; essa è costituita dalla Control Unit (Unità di controllo), che sovrintende al corretto funzionamento del sistema controllandone tutti i componenti, e dalla Arithmetic and Logic Unit (Unità Aritmetica e Logica) che effettua tutti i calcoli, aritmetici e logici. La Random Access Memory (Memoria ad Accesso Casuale), detta anche memoria centrale, è il deposito dove dati e istruzioni dei programmi da eseguire vengono memorizzati. Essa è costituita da una serie di celle numerate; l’indirizzo di una cella è definito come la sua posizione nell’ambito della memoria e ne consente l’univoca individuazione. 3.4. I moderni sistemi di elaborazione Lo schema concettuale ed estremamente semplificato di un moderno sistema di elaborazione è riportato nella seguente figura: Capitolo 3: Hardware 102 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro BUS CPU RAM DMA Interfacce Dispositivi periferici di Input Dispositivi periferici di Output Dispositivi periferici di I/O In questo schema ritroviamo gli stessi componenti della macchina di Von Neumann con qualche piccola differenza. Nei paragrafi successivi parlerò in dettaglio delle parti che compongono un moderno sistema di elaborazione. 3.4.1. BUS Il BUS è il corridoio ideale che consente il trasferimento dei dati tra i componenti del sistema. In altri termini non esistono collegamenti diretti tra un dispositivo e l’altro ma tutti si “affacciano” sul BUS e possono trasmettere o ricevere informazioni; è evidente che il bus può essere utilizzato da un sol dispositivo alla volta per scambiare informazioni da e per la CPU. Il controllo del BUS è a totale carico della CPU, che di volta in volta consente un unico trasferimento di dati. In effetti esistono 3 BUS: • BUS di dati: è il bus utilizzato per il trasferimento dei dati; i dati scambiati con la CPU viaggiano su tale BUS; • BUS di controllo: su questo BUS la CPU invia i segnali di controllo ai vari dispositivi che costituiscono il sistema; insieme al bus dei dati, consente un corretto scambio di informazioni, consentendo la specifica di chi, come e cosa trasferire; Capitolo 3: Hardware 103 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro • BUS degli indirizzi: su questo bus viaggia l’indirizzo della cella di memoria da leggere o da scrivere. Numerosi sono i tipi di BUS, che sono stati utilizzati nel corso dell’evoluzione dei sistemi di elaborazione; essi si diversificano per la velocità di trasferimento dei dati e per il numero di bit che riescono a far viaggiare contemporaneamente detto parallelismo: • BUS ISA, EISA, VESA: non sono più utilizzati; il primo è stato realizzato nella versione a 8 e 16 bit, il secondo è detto Extented ISA ed il terzo, a 32 bit, è stato utilizzato per un periodo di tempo assai limitato; • BUS PCI: BUS a 32 bit ancora in uso ma che vedrà la sua graduale sostituzione con il PCI Express; • AGP: BUS ancora in uso ma che sarà anch’esso sostituito dal PCI Express; si tratta di un BUS locale ovvero utilizzato da un solo dispositivo. Ho detto in precedenza che il BUS è condiviso ovvero utilizzato da più periferiche anche se uno solo di essi lo può utilizzare in un certo istante; ebbene il BUS AGP ha la caratteristica di essere dedicato all’interfaccia dello schermo, la cosiddetta scheda video; questa scelta è stata necessaria con l’avvento della multimedialità che, soprattutto con i film, aumenta lo scambio di dati tra la CPU e lo schermo; • PCI Express: BUS di ultima generazione che andrà a sostituire sia il bus PCI che l’AGP; si tratta di un bus con uno o più canali seriali indipendenti ognuno dei quali può arrivare ad una velocità di trasferimento dati pari a 533 Mb/sec. A seconda del numero di canali, si parla di BUS PCI-E x1, PCI-E x4, PCI-E x16. 3.4.2. CPU La CPU è senz’altro l’organo più importante di un sistema di elaborazione e, da sola, costituisce il 70% della potenza di calcolo di un Personal Computer (PC). Essa è costituita dalla CU e dalla ALU. La CU ha il compito di controllare l’intero sistema ed eseguire le istruzioni del/i programma/i in esecuzione. Le istruzioni eseguibili dalla CU fanno parte di un linguaggio di programmazione binario detto linguaggio macchina ed ogni istruzione fa riferimento ad un microprogramma memorizzato in maniera permanente all’interno della CU. L’esecuzione di una istruzione in linguaggio macchina comporta, pertanto, l’esecuzione di un microprogramma costituito da microistruzioni. Nella CU troviamo, inoltre, i cosiddetti registri. Un registro è una piccola memoria in grado di memorizzare pochi bit in numero variabile, in genere, da 8 a 64. I registri principali che si ritrovano in una CU sono: Capitolo 3: Hardware 104 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro • Registro P, Program Counter (Contatore di programma): contiene l’indirizzo della cella di memoria (RAM) contenente la prossima istruzione da eseguire; • Registro IR, Instruction Register (Registro istruzione): contiene l’istruzione in esecuzione; • Registro S di stato: i bit di cui è costituito memorizzano lo stato del sistema o meglio dell’esecuzione dell’istruzione in corso; per esempio, un bit è l’extend di cui ho parlato nel capitolo 1 a proposito della rappresentazione binaria fixed point, e rappresenta il carry o riporto di una operazione aritmetica; un altro bit rappresenta l’overflow. Il lavoro della CU è estremamente semplice; all’inizio viene forzato, all’interno del registro P, l’indirizzo della prima istruzione del programma da eseguire quindi l’esecuzione dell’istruzione e del programma passa attraverso le seguenti 3 fasi: 1. Fase di fetch: l’istruzione da eseguire, il cui indirizzo è contenuto nel registro P, viene trasferita dalla memoria al registro IR; 2. Fase di decode: è la fase di decodifica e di interpretazione dell’istruzione che consiste nell’individuazione delle microistruzioni da eseguire; 3. Fase di execute: è la fase di esecuzione vera e propria durante la quale viene modificato il valore del registro P, inserendo in esso l’indirizzo della prossima istruzione da eseguire e così, alla fine dell’esecuzione dell’istruzione in corso, si torna alla fase 1 fino all’esecuzione di una istruzione del tipo ‘END’ che termina l’esecuzione del programma. In questo la CU è un automa che esegue sempre le stesse operazioni cambiando stato durante l’esecuzione delle istruzioni del programma. L’ALU, invece, è coinvolta nelle operazioni di calcolo e nelle operazioni logiche (AND, OR, etc.). L’ALU, analogamente alla CU, contiene una serie di registri detti accumulatori contenenti gli operandi coinvolti dall’istruzione in corso ed il risultato della stessa. Gli operandi vengono trasferiti in questi registri leggendoli dalla memoria e sempre in quest’ultima viene scaricato il risultato. Le moderne CPU integrano, oltre alla CU ed all’ALU, anche la cache memory; la cache memory è una memoria elettronica con tempi di lettura/scrittura paragonabili a quella della CPU. In altre parole sto dicendo che la RAM, pur essendo molto veloce, ha tempi di lavoro più alti rispetto alla CPU, per cui i dati sui quali la CPU opera vengono letti/scritti nella cache memory e, quest’ultima, dialoga con la memoria centrale. Le caratteristiche fondamentali di una CPU sono il parallelismo di bit, ovvero il numero di bit che essa riesce a trattare contemporaneamente, e la velocità di esecuzione delle istruzioni. Per il parallelismo di bit si è passati da CPU a 8 bit alle moderne CPU a 64 bit mentre per la velocità di elaborazione si utilizza il MIPS (Millions instructions per second) ed altri parametri; tra questi quello legato al clock. Il clock è un generatore Capitolo 3: Hardware 105 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro di impulsi; la CPU comincia l’esecuzione di una istruzione in presenza di un segnale di clock e passa alla successiva al successivo impulso. E’ evidente che maggiore è il numero di impulsi tanto maggiore sarà la velocità di esecuzione. La velocità del clock è detta frequenza ed è misurata in impulsi al secondo; in particolare oggi si utilizzano il MHZ (Mega Hertz) ed il GHZ (Giga Hertz) che corrispondono, rispettivamente, ad un numero di impulsi pari a 106/sec e 109/sec. Il tempo di esecuzione di una istruzione, pertanto, è molto basso, per cui occorre introdurre i seguenti nuovi sottomultipli del secondo: Millisecondo: 1 msec=10-3sec; Microsecondo: 1 µsec=10-6sec; Nanosecondo: 1 nsec=10-9sec; Picosecondo: 10-12sec; Femtosecondo: 10-15sec. In pratica, però, oggi la tecnologia offre la tecnica Pipeline che assomiglia molto alla logica della catena di montaggio. Il sistema è in grado di eseguire l’execute dell’istruzione in corso contemporaneamente alla fetch della successiva. Se si pensa di aumentare le fasi necessarie per l’esecuzione di una istruzione allora le istruzioni in esecuzione potrebbero essere tante quante le fasi ed ognuna di esse è in una fase diversa di esecuzione. Questo, ovviamente, velocizza l’esecuzione dei programmi. In questa tecnica, però, assume un ruolo importante il cosiddetto predictor che ha il compito di prevedere, con una certa sicurezza, l’istruzione successiva che sarà nota solo alla fine di quella che la precede. Un fallimento di tale previsione rende inutile la parte già eseguita dell’istruzione successiva. Una particolare CPU è il microprocessore. Un microprocessore è una CPU miniaturizzata costituita da un solo circuito integrato detto chip. Inizialmente l’elettronica disponeva di componenti quali transistor, resistenze, condensatori, etc., che, opportunamente collegati, realizzavano un circuito capace di svolgere una funzione logica oppure costituire una piccola memoria. Lo scenario attuale è completamente diverso in quanto il componente elementare è il circuito integrato prodotto in un’unica serie di operazioni e che rende indistinguibili gli elementi che lo compongono. Un circuito integrato è, in genere, grande quanto la capocchia di un fiammifero ma viene inserito all’interno di un contenitore plastico o ceramico più grande munito di piedini che ne facilitano il collegamento agli altri componenti del sistema. I vari circuiti integrati, insieme ad un numero assai limitato di altri componenti, vengono inseriti su una scheda che ne consente il collegamento ed il dialogo. Attraverso le cosìddette scale di integrazione (SSI-Small Scale Integration, MSI-Medium Scale Integration, LSI-Large Scale Integration, , VLSI-Very Large Scale Integration, HVLSI-High Very Large Scale Integration, etc.) si è passati da circuiti integrati costituiti da qualche centinaio di componenti agli attuali in grado di integrare oltre 100 milioni di componenti. L’attuale tecnologia usa componenti della Capitolo 3: Hardware 106 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro grandezza di 90 nanometri dove 1nm=1x10-9m; altra unità di misura molto utilizzata è il micron, 1 µm=1x10-6m; per questo motivo ci si riferisce a queste tecnologie con il termine nanotecnologie. La storia dei microprocessori comincia negli anni settanta del secolo scorso quando si realizzarono i primi microprocessori a 4 bit per poi passare al mitico Z80 a 8 bit. Quando sulla scena mondiale, negli USA, compare l’azienda Intel (www.intel.com), attualmente la più grande azienda produttrice di microprocessori, si comincia a creare un vero monopolio oggi spezzato solo in parte dall’azienda AMD (www.amd.com). La seguente tabella mostra l’evoluzione dei processori Intel: Nome processore Frequenze in MHZ Parallelismo di bit 8088 4.77/8/10 8 8086 10MHZ 16 interno/8 sul bus 80286 10/12/16/20 MHZ 16 80386 16/20/33/40 32 interno/16 su bus ISA 80486 25/33/..../66/100/133 32 int./16 su bus ISA - 32 su VLB prima e PCI dopo PENTIUM 60/75/100/..../200/233 32 interno/16 su bus ISA 32 su PCI PENTIUM II 233/266/..../450 32 int./16 su bus ISA-32 PCI/AGP PENTIUM III 500/..../1100 32 int./16 su bus ISA-32 PCI/AGP PENTIUM IV 1300/1400/…./2000/3000 32 int./16 su bus ISA-32 PCI/AGP PENTIUM IV 630 2800/.../3600 64 bit BUS PCI/PCI Express PENTIUM IV D (Duo) 2800/3000/.../3600 64 bit / Dual core BUS PCI/PCI Express Pentium CORE 2 DUO 1800, 2000, ...., 2660 64 bit / Dual core BUS PCI/PCI Express Pentium CORE 2 QUAD 2400 64 bit / Quadruple core BUS PCI/PCI Express ......... e continua Capitolo 3: Hardware 107 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro La produzione di AMD è stata caratterizzata, nella sua fase iniziale, dalla realizzazione di processori completamente compatibili ed analoghi per prestazioni a quelli di Intel; successivamente AMD ha prodotto i processori cosìddetti ATHLON, DURON, e, attualmente, SEMPRON e ATHLON 64 a 64 bit. Per velocizzare l’esecuzione dei programmi, abbiamo visto in precedenza l’adozione di tecniche come la pipeline. Il passo successivo è stato quello di realizzare sistemi multiprocessor, con più di un processore, che consentono l’esecuzione contemporanea di più istruzioni prese anche da programmi diversi, la cosiddetta multiprogrammazione di cui parlerò molto più avanti. L’integrazione dei circuiti oggi consente di realizzare un unico integrato che, in pratica, è quasi un dual processor in quanto ne viene duplicato solo una parte ovvero quella denominata nucleo. Probabilmente in un prossimo futuro avremo microprocessori dual processor ovvero costituito da due processori completamente distinti. Una CPU di ultima generazione Il processore INTEL 8088 Capitolo 3: Hardware 108 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 3.4.3. RAM La RAM, Random Access Memory, è la memoria centrale del sistema; la RAM è una memoria operativa nel senso che dati e programmi, per poter essere elaborati, devono essere trasferiti in essa. Si tratta di una memoria elettronica di lettura/scrittura con una discreta capacità e tempi di accesso, ovvero di lettura/scrittura, molto bassi. La memoria centrale è organizzata in celle costituite da uno o più byte; ogni cella, come detto, è univocamente individuata mediante il suo indirizzo che è la posizione occupata nell’ambito della memoria; gli indirizzi vanno da zero ad n, dove n è la dimensione della memoria. Le operazioni effettuabili sono quelle di lettura e scrittura di una cella. Le caratteristiche fondamentali di una RAM sono la capacità ed il tempo di accesso ovvero di lettura/scrittura di una cella. Dico subito che il tempo di lettura/scrittura sono dell’ordine di qualche miliardesimo di secondo mentre la capacità varia da sistema a sistema. La capacità è misurata in byte o, meglio secondo i suoi multipli: Simbolo Leggi Capacità KB Kilo Byte 210 Byte = 1024 Byte MB Mega Byte 220 Byte = 1024 KB = 1.048.576 Byte GB Giga Byte 230 Byte = 1024 MB = 1.073.741.824 Byte TB Tera Byte 240 Byte = 1024 GB = 1.099.511.627.776 Byte In genere il Kilo, nel sistema metrico decimale, corrisponde a 1000 mentre il Kilo informatico corrisponde a 1024; questo perché i sistemi informatici sono binari e 1024=210. I nostri personal computer hanno una memoria centrale che, in genere, non è mai inferiore ai 256MB fino a qualche GB. La cache memory, essendo integrata nel processore, ha una capacità molto più bassa, variabile tra i 256KB e i 2 MB, e, come detto, tempi di accesso molto più bassi rispetto alla RAM. In genere “B” sta per byte e “b” sta per bit cosicché, per esempio, 256KB e 256Kb sono, ovviamente, due cose ben diverse. La RAM è sicuramente un componente importante per il buon funzionamento di un sistema e per questo, in alcuni casi, la memoria è sottoposta ad un controllo di buon funzionamento; il controllo più utilizzato è quello di parità. Capitolo 3: Hardware 109 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Il controllo di parità fa uso, per ciascun byte, di un bit in più, detto bit di parità; il valore di questo nono bit dipende dai primi 8 ed è impostato a 1 se il numero di bit con valore 1 è dispari e a zero se tale numero è pari. In questo modo, il numero complessivo di bit con valore 1, compreso quello di parità, è sempre pari. In fase di scrittura in memoria viene generato e memorizzato il bit di parità mentre in fase di lettura viene generato e controllato il bit di parità ovvero si verifica che il numero complessivo di bit con valore 1 sia pari; nel caso in cui il numero di bit con valore 1 è dispari il sistema comunica il malfunzionamento della memoria che, in genere, porta al blocco delle elaborazioni ed alla richiesta di intervento di un tecnico per procedere alla riparazione. Il controllo di parità, ovviamente, fallisce quando si verificano due errori in lettura sullo stesso byte, perché il doppio errore non altera la parità. Il controllo di disparità è analogo perché rende dispari e non pari il numero complessivo di bit. Sui sistemi server si tende ad evitare il fermo macchina e si utilizzano tecniche ancora più sofisticate mediante memorie ECC a correzione di errore; in questo caso si utilizzano più bit di controllo, in genere almeno 2, che consentono il recupero dell’errore; il sistema, in pratica, è in grado non solo di rilevare l’errore ma, nel caso, di correggerlo. La maggior parte dei PC utilizza memorie senza controllo di parità mentre su sistemi professionali e server si utilizzano memorie a controllo di parità o a correzione dell’errore il cui costo, ovviamente, è maggiore. 3.4.4. ROM – Read Only Memory Un componente importante in un sistema di elaborazione è la ROM (memoria a sola lettura) che, in genere, contiene software indispensabile all’avvio del sistema e denominato BIOS (Basic I/O System); si tratta, come evidente, di una memoria a sola lettura della capacità di non più di 2Mb che contiene in modo permanente software che esegue le seguenti funzioni: 1. Diagnostica (POST: Power On Self Test): all’avvio del sistema, il software contenuto nella ROM esegue una auto diagnosi per verificare che i componenti principali del sistema siano correttamente funzionanti; 2. Setup: un programma che consente di impostare parametri relativi all’hardware, molto importanti ai fini di un corretto funzionamento del sistema; 3. Boot: programma di boot-strap del sistema operativo; ha il compito di caricare il sistema operativo, in genere dal primo disco fisso installato nel sistema; 4. Utilità: Programmi di utilità quali diagnostica approfondita di HDD e RAM, riscrittura della ROM, etc. . In questo corso avremo modo di approfondire la fase di setup del sistema. Capitolo 3: Hardware 110 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Una ROM è, pertanto, un componente hardware che contiene in modo permanente sempre lo stesso software anche se aggiornabile; per questo motivo ci si riferisce alla ROM ed al BIOS con il termine Firmware che risulta essere la terza componente di un sistema di elaborazione di minore importanza rispetto all’hardware ed al software. Ho detto che la ROM è una memoria a sola lettura ebbene essa è scrivibile solo per aggiornare in maniera completa il software contenuto; a volte malfunzionamenti del sistema sono risolti con un aggiornamento del BIOS. Si tratta di un’operazione molto delicata che, in passato, poteva essere effettuata solo smontando la ROM ed utilizzando appositi dispositivi di cancellazione (cancellatori di EPROM) e riscrittura (Programmatori di EPROM). Oggi la tecnologia mette a nostra disposizione memorie EEPROM (Electronically Erasable Programmable Read Only Memory) che sono cancellabili e riprogrammabili senza la necessità di rimuoverle dalla scheda dove sono alloggiate. Qualche tempo fa un virus cancellava il BIOS con il risultato che, al riavvio, il PC era completamente “morto” ovvero non riusciva più ad avviare correttamente le fasi di diagnosi e caricamento del sistema operativo. 3.4.5. Interfacce Interfacciare è sinonimo di collegare; un’interfaccia, quindi, è una scheda o un componente elettronico che consente il dialogo ovvero lo scambio dei dati tra due dispositivi. In genere una interfaccia consente di collegare dispositivi periferici all’unità centrale in modo da consentirne, mediante operazioni di I/O (Input/Output =Ingresso/Uscita), lo scambio dei dati; per esempio accettare dati in input da tastiera o produrre una stampa, scrivere o leggere un floppy disk e così via. Le interfacce possono essere di INPUT, di OUTPUT oppure di I/O a seconda che il flusso sia, rispettivamente, verso la CPU, dalla CPU o in entrambe le direzioni. Le interfacce sono classificate in seriali e parallele a seconda che il flusso dei dati avvenga un bit alla volta o più bit contemporaneamente. E’ evidente che un flusso di dati parallelo richiede un canale trasmissivo per ciascun bit mentre una trasmissione seriale in I/O richiede solo due canali, uno per l’input ed un altro per l’output. La tendenza attuale è quella di avere solo comunicazioni seriali in quanto, negli ultimi anni, la velocità di una trasmissione seriale è aumentata tantissimo fino a rendere inutili i collegamenti paralleli che richiedono un numero superiore di connessioni, uno per ciascun bit, per il trasferimento dei dati. Sono disponibili sui nostri personal computer numerose interfacce: Capitolo 3: Hardware 111 L’Informatica per i miei studenti – Volume 1 Connettore Nome Prof. Bianco Mauro S/P VGA I/O Specifiche e note O Interfaccia analogica utilizzata per il collegamento del monitor. O Interfaccia digitale utilizzata per il collegamento del monitor. O Interfaccia multimediale digitale per i segnali HDTV fino a 1920x1080 (1080i). Video Graphics Array DVI Digital Video Interface HDMI High Definition Multimedia Interface Capitolo 3: Hardware Keyb S I Interfaccia tastiera oggi di tipo PS/2. Mouse S I Interfaccia mouse di tipo PS/2. USB S I/O Universal Serial Bus: è l’interfaccia più utilizzata; universale perché consente il collegamento di numerosissime periferiche assai diverse tra loro; la maggior parte delle 112 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro periferiche, infatti, collegabile via USB. è Un’altra caratteristica importante, detta Hot Plug, è la possibilità di collegare/scollegare periferiche a caldo ovvero quando il PC è acceso; 2 Connettori USB Velocità di trasferimento della versione 1.1: 11Mb/sec; Velocità di trasferimento della nuova versione 2.0: 480Mb/sec; ad una porta USB può essere collegato un replicatore di porte, detto HUB USB; gli HUB USB possono essere collegati in cascata fino ad un massimo di 128 porte. 1394 S I/O Volgarmente detta “Fire Wire”, realizzata per collegare dispositivi domestici come le videocamere digitali; ha una velocità di trasferimento dei dati pari a 400Mb/sec e 800Mb/sec con la versione fire wire 800. Interfaccia Hot Plug. Audio Capitolo 3: Hardware I/O Interfaccia per la multimedialità che consente di riprodurre e acquisire suoni e audio in generale. 113 L’Informatica per i miei studenti – Volume 1 1294 Prof. Bianco Mauro P O Volgarmente denominata “Parallela centronics” si è evoluta fino a diventare di tipo I/O. Utilizzata dapprima per il collegamento delle stampanti, successivamente ha visto diversificato il suo utilizzo; è stata, infatti, utilizzata per collegare hard disk esterni, scanner, etc. Oggi, pur essendo presente sui PC e non sui notebook, è quasi inutilizzata se non per collegare vecchie stampanti. RS232 S I/O Volgarmente denominata “Seriale”. Utilizzata per il collegamento di mouse, modem, terminali, stampanti e periferiche a bassa velocità. Velocità di trasferimento dati molto bassa tra 300b/sec fino a 115Kb/sec. I vecchi PC disponevano di due porte seriali denominate COM1: e COM2:; oggi al massimo ne hanno una che è praticamente inutilizzata. I notebook non dispongono più di questa interfaccia. Capitolo 3: Hardware 114 L’Informatica per i miei studenti – Volume 1 I/O Interfaccia di rete RJ45 utilizzata per la connessione in rete dei PC. La velocità è, in genere, 100Mb/sec, ma vecchi PC utilizzano interfacce a 10Mb/sec altri, modernissimi, a 1000Mb/sec. Rete S Game S Modem S I/O Interfaccia di tipo RJ11 utilizzata per collegamenti internet e per la trasmissione e ricezione di fax oltre che per servizi di segreteria telefonica e telefonici in genere. ATA P I/O Oggi ribattezzata P-ATA (Parallel ATA), interfaccia non disponibile all’esterno e utilizzata per il collegamento di dischi rigidi e unità ottiche. In genere i PC dispongono di due interfacce IDE denominate primaria e secondaria ad ognuna delle quali è possibile collegare fino a due unità riferite come master e slave per un totale di 4 unità. Sinonimi: IDE EIDE ATAPI 2 connettori IDE. Prof. Bianco Mauro I Interfaccia per collegare controller per giochi quali Joystick e Joypad. In genere utilizzata anche per il collegamento di tastiere musicali con interfaccia MIDI. Questa interfaccia, almeno per i dischi rigidi, sta per essere sostituita con la più moderna S-ATA. Capitolo 3: Hardware 115 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Velocità di trasferimento, variata nel corso del tempo, raggiunge oggi i 133MB/Sec. S-ATA S I/O Serial ATA: utilizzata per il collegamento di HD ma in futuro anche di unità ottiche. In genere un PC dispone di 2, 4 o anche più interfacce SATA ad ognuna delle quali è collegabile un sol dispositivo. 4 connettori S-ATA. L’attuale velocità del S-ATA è di 150MB/Sec ma le versioni successive arriveranno a 300 e 600MB/Sec. E-SATA 2 Connettori SATA S External I/O Interfaccia SATA esterna, che consente il collegamento di dischi SATA contenuti in appositi box alimentati; si tratta di una interfaccia che unisce al vantaggio di un’altissima velocità, nel trasferimento dei dati, la grande flessibilità del supporto esterno. Può avere numerosissimi utilizzi tra i quali: • Aumento della capacità di memorizzazione dati; • Copie di back-up; • Elaborazioni on line; • Trasporto dati; • RAID. Floppy Capitolo 3: Hardware P I/O Interfaccia per il collegamento del dispositivo 116 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro obsoleto floppy disk. SCSI P I/O La maggiore velocità di trasferimento dati la si ottiene con interfacce di tipo SCSI utilizzate dai sistemi server per interfacciare, soprattutto, i dischi rigidi. P/S I/O Vedi più avanti in questo stesso paragrafo. IR S I/O Interfaccia ad infrarossi oggi obsoleta, utilizzata per il collegamento di mouse, cellulari, etc.; si tratta di interfaccia senza fili. Blue-Tooth S I/O Interfaccia di ultima generazione a radio frequenza con distanze fino a 150 metri; è utilizzata per il collegamento di palmari, cellulari, stampanti, macchine fotografiche digitali, etc. . WiFi S I/O Collegamenti in rete locale wireless (senza fili) a radio frequenza. RAID Redundant array of independent disks Wireless Fidelity Capitolo 3: Hardware 117 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Le interfacce P-ATA, S-ATA, SCSI e RAID sono riferite come controller; il controller ha una maggiore capacità di elaborazione rispetto ad una semplice interfaccia tanto che ad esse spesso ci si riferisce con il termine sottosistema che sta ad evidenziare una propria capacità elaborativa. A volte anche l’interfaccia video è riferita come controller video. Il controller RAID (Redundant array of independent disks) richiede una trattazione più articolata; un controller RAID è utilizzato soprattutto dai sistemi SERVER anche se oggi, considerati i costi piuttosto bassi di un sottosistema RAID completo, vengono utilizzati spesso anche dai sistemi PC. Il RAID consente di migliorare le prestazioni e/o la sicurezza dei dati. Il RAID si distingue in livelli: • Livello 0 o Striping: sono necessari almeno due dischi rigidi che costituiscono un solo volume; l’algoritmo di lettura/scrittura dei dati consente un miglioramento delle prestazioni, in genere si dimezzano i tempi di accesso; questo sistema ha un grosso inconveniente perché un guasto ad uno qualsiasi dei dischi dello stripe o catena provoca la perdita di tutti i dati, anche quelli presenti sui dischi funzionanti; • Livello 1 o Mirroring: si utilizza un numero pari di dischi, di cui una metà è l’esatta copia degli altri; la ridondanza dei dati così ottenuta aumenta la sicurezza dei dati in quanto un guasto ad un qualsiasi disco non causa perdita di dati e non solo, il sistema riesce a continuare a lavorare utilizzando il disco funzionante corrispondente; questo sistema fa parte di una serie di soluzioni hardware riferite con il termine fault tolerant (tolleranza del guasto). Questa tecnica spesso consente anche l’aggiunta e la rimozione di dischi a caldo, secondo una tecnologia detta hot plug, ovvero senza spegnere il sistema ed è utilizzata in tutti i Capitolo 3: Hardware 118 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro casi in cui è importante garantire il buon funzionamento del sistema 24 ore su 24, si pensi ai WEB Server, Mail Server, etc. ; • Livello 5: La ridondanza dei dischi non porta ad raddoppio del loro numero ma ad utilizzarne uno in più, detto disco di parità, con il quale sarà possibile ricostruire i dati presenti in uno qualsiasi degli altri dischi che dovesse rompersi; ovviamente ha un costo minore del livello precedente; • Livello 10 e 0+1: offre contemporaneamente le prestazioni dei livelli 0 e 1; in questo caso occorrono almeno 4 dischi, 2 per lo striping e 2 per il mirroring; la differenza tra il livello 10 e 0+1 è molto sottile: il livello 10 fa uno striping di dischi in raid 1 mentre il livello 0+1 fa un raid di due stripe; • JBOD (Just a Bunch of Disks): Simile al livello 0, unisce più dischi fisici in un unico disco logico o volume ma senza migliorarne le prestazioni; è una semplice concatenazione di dischi; non dovrebbe neanche essere considerato tra i sistemi RAID perché non migliora né le prestazioni, né la sicurezza. Spesso in un sistema RAID sono presenti dischi hot spare, collegati e non utilizzati, ma adoperati in sostituzione di uno rotto, a volte automaticamente e immediatamente al momento del guasto. Esistono controller RAID di tipo IDE, SATA o SCSI che consentono l’utilizzo di dischi con le corrispondenti interfacce. 3.4.6. DMA Il DMA, Direct Memory Access, è un componente elettronico che consente ai dispositivi periferici, attraverso le loro interfacce, di leggere e scrivere nella memoria, anche una grande quantità di dati, senza l’intervento della CPU che, così, è libera ma non ferma perché esegue istruzioni di altri programmi secondo una tecnica chiamata multiprogrammazione, che, come già detto, verrà trattata molto più avanti. 3.4.7. Main Board I vari componenti di cui vi ho parlato possono scambiare dati tra di loro perché trovano collocazione su una scheda elettronica detta Scheda Madre o Main Board (M/B). Le foto seguenti rappresentano una moderna M/B ed il suo cosiddetto layout, grafico che rappresenta gli slot, le interfacce, i bus e quanto altro disponibile su di essa. Capitolo 3: Hardware 119 L’Informatica per i miei studenti – Volume 1 Capitolo 3: Hardware Prof. Bianco Mauro 120 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Nel layout della M/B sono ben visibili il socket 775, dove trova sistemazione la CPU, gli alloggiamenti per la memoria di tipo DDR-2 o DDR-3, gli slot PCI-E e PCI, i connettori SATA, USB, etc. . La figura seguente mostra il retro della M/B, ricca di connettori, che sono le interfacce di cui vi ho appena parlato. Capitolo 3: Hardware 121 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Appare evidente come quasi tutte le interfacce sono integrate sulla scheda madre. Non sempre è stato così; in passato, spesso, occorreva aggiungere una scheda per poter disporre di una nuova interfaccia; tale scheda veniva inserita negli appositi slot ISA, PCI etc.; spesso anche la scheda video è integrata sulla scheda madre. Il responsabile della gestione dell’INPUT/OUTPUT, attraverso le interfacce, è il cosiddetto chipset che, dopo la CPU, è senz’altro uno dei componente più importanti; nel nostro caso si tratta del chipset Intel ICH9R. 3.4.8. Dispositivi periferici I dispositivi periferici sono quelli che, attraverso le interfacce cui si collegano, consentono lo scambio dei dati con la CPU e/o la memoria; alcuni di questi dispositivi, quali tastiera, mouse, video, etc., interfacciano direttamente l’utente consentendogli di immettere i dati da elaborare e riceverne i risultati . I dispositivi periferici sono classificati in: • INPUT: periferiche per l’immissione dei dati quali tastiera, mouse, etc.; • OUTPUT: periferiche per l’emissione di risultati quali monitor, stampante, etc.; • INPUT/OUTPUT (I/O): dispositivi di ingresso/uscita; a questa categoria appartengono le memorie di massa, i floppy disk, pen disk, etc. . Capitolo 3: Hardware 122 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 3.4.8.1. Tastiera e mouse La tastiera ed il mouse sono dispositivi di input di uso molto comune per cui non ritengo necessario descriverli in dettaglio. Per le tastiere, mi limito a dire che sono disponibili versioni nazionali che, con riferimento ai tasti, hanno disposizione, numero e simboli che cambiano da nazione a nazione; si veda una forte analogia con il codice ASCII. Non ritengo necessario perdere tempo in altre discussioni ma vi invito a porre domande sull’utilizzo di quei tasti la cui funzione vi è sconosciuta. Per il mouse dico solo che ne sono disponibili sul mercato di tipo meccanico (obsoleti), ottico, con e senza filo (Wireless) di collegamento al PC; i tasti disponibili sono, in genere, programmabili ovvero ad essi può essere assegnata una funzione diversa da quella standard. Una caratteristica del mouse è la risoluzione misurata in dpi – dot per inch (punti per pollice) che fa riferimento all’accuratezza del mouse ovvero al numero di punti individuati dal mouse in un pollice; è chiaro che una risoluzione maggiore si trasforma in una maggiore precisione del mouse. 3.4.8.2. Monitor Il monitor è il dispositivo di output di uso più comune. Numerose sono le caratteristiche peculiari di un monitor ma ritengo opportuno riportarne solo alcune. Innanzitutto la tecnologia che oggi offre tre tipi di monitor: • CRT - Catode Ray Tube (Tubo a raggi catodici): sono i monitor tradizionali di grande ingombro la cui vendita è notevolmente diminuita e, probabilmente, la loro produzione è in via di cessazione; • LCD – Liquid Cristall Display (Display a cristalli liquidi): si tratta di una tecnologia che ha quasi sostituito la precedente; i monitor hanno un ingombro assai ridotto e, soprattutto, sono meno nocivi per la salute dell’utilizzatore; • Plasma: Tecnologia emergente. Altre caratteristiche fondamentali di un monitor sono la grandezza, la risoluzione ed il numero di colori. La grandezza di un monitor è misurata in pollici (1” = 2.54 cm) e fa riferimento alla sua diagonale; sono oggi disponibili monitor da 9” a 23” e oltre anche se i più diffusi sono senz’altro i 17”. Ho detto che la misura fa riferimento alla diagonale ma non è sufficiente per avere la “forma” del monitor; a tal proposito si utilizza il Capitolo 3: Hardware 123 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro rapporto tra i due lati (orizzontale/verticale) e sono oggi disponibili monitor del tipo 4/3, 16/9 e 16/10. L’immagine visualizzata da un monitor è costituita da numerosissimi punti detti pixel o dot pitch ognuno dei quali ha un proprio colore; più è piccolo il pixel e tanto maggiore è il loro numero, tanto migliore sarà la qualità dell’immagine. La grandezza del pixel, in genere, è variabile tra 0.23 e 0.28 mm mentre il numero complessivo di pixel è detto risoluzione, indicata con un prodotto tra il numero di pixel orizzontali e quello verticale. Sono oggi disponibili numerosissime risoluzioni ma, le principali sono: 640x480 (VGA), 800x600 (SVGA), 1024x768 (XGA), 1280x1024 (SXGA). Sono disponibili risoluzioni ancora maggiori per schermi di grande formato. E’ utile dare un cenno al termine VGA (Video Graphic Array) introdotto ad opera dell’azienda IBM molti anni fa; prima dello standard VGA erano disponibili standard (CGA, EGA, Hercules) con risoluzioni molto basse, qualità dell’immagine molto scadente e, addirittura, senza il supporto del colore ovvero B/N. La VGA introduceva il concetto di video analogico 640x480 in grado di visualizzare un numero infinito di colori; la qualità dell’immagine visualizzata fa un enorme balzo in avanti. Successivi miglioramenti di questo standard hanno portato alle attuali risoluzioni e migliore qualità dell’immagine come detto in precedenza. Il numero di colori che può assumere ciascun pixel è praticamente infinito con lo standard VGA e con quello emergente digitale detto DVI che arriva a 224= 16.777.216 colori; entrambi fanno uso del sistema RGB (Red-Green-Blue) che forma tutti i colori con solo tre detti fondamentali. Naturalmente ci sono altre caratteristiche che differenziano i monitor quali le normative per la sicurezza sul lavoro e, a tal proposito, ne ricordo una: la certificazione TCO che, nei vari anni, ha visto la TCO95, TCO99 e TCO03. 3.4.8.3. Videoterminali Un videoterminale è costituito da un monitor ed una tastiera per cui è un dispositivo di I/O; i video terminali, oggi quasi in disuso, sono utilizzati per il collegamento a grandi sistemi di elaborazione in grado di lavorare per centinaia di utenti contemporaneamente secondo una tecnica denominata multiutente di cui parlerò molto più avanti. Il videoterminale non ha una propria capacità elaborativa ma solo la logica per scambiare dati con l’unità centrale cui è collegato per cui il/i programmi sono in esecuzione contemporaneamente o, meglio concorrentemente, sul sistema centrale. Capitolo 3: Hardware 124 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 3.4.8.4. Stampanti e Plotter La stampante è senz’altro tra i dispositivi di output più importanti. C’erano una volta le stampanti seriali e parallele; le stampanti seriali stampavano un carattere alla volta mentre le parallele più caratteri della stessa riga quasi contemporaneamente. Oggi la tecnologia offre stampanti per punti ovvero l’elemento atomico non è più il carattere ma il punto; sono evidenti i vantaggi di una tale trasformazione: una migliore qualità di stampa che arriva fino alla cosiddetta stampa fotografica che tutti conosciamo. Potrei di nuovo dire c’era una volta la classificazione tra stampanti ad impatto e non; con le stampanti ad impatto, gli organi di stampa toccano la carta mentre per quelle a non impatto …… indovinate un po’! Tecnologicamente abbiamo i seguenti tipi di stampanti: • Aghi: fino ad alcuni anni fa rappresentavano la fascia di mercato più diffusa mentre oggi sono poco utilizzate perché ad impatto, quindi rumorose, lente per la stampa grafica e impossibilità della stampa a colori, con qualche eccezione che vi racconterò a lezione, ma che offrono qualche vantaggio quale un basso costo di esercizio e la possibilità di stampare più copie mediante l’utilizzo di carta carbone o carta speciale chimica. I costi vanno da circa 200,00 € ai 3.000,00 € . • Ink Jet (Getto di inchiostro): rappresentano le stampanti più diffuse perché hanno un costo di acquisto molto basso e una qualità di stampa fotografica; la tecnologia utilizzata è detta CMYK (Cian-Magent-Yellow-blacK) perché fa uso di solo 4 colori fondamentali. Sono disponibili stampanti con tecnologia single ink, ovvero con un contenitore di inchiostro separato per ogni colore a differenza di altre che utilizzano una cartuccia per il nero ed un’altra per gli altri tre colori fondamentali: ciano, magenta e giallo. Alcune stampanti gestiscono più di 4 colori base arrivando fino ad un massimo di 8 colori. I costi vanno da circa 40,00 € ai 3.000,00 € . • Laser B/N: Stampanti che utilizzano una polvere nera molto sottile detta toner per ottenere stampe di altissima qualità ma in scala di grigio; I costi vanno da circa 100,00 € ai 5.000,00 € . • Laser Colore: stampanti che utilizzano, in genere, 4 toner di colore diverso (Nero, Magenta, Ciano e Giallo) per stampe a colori di qualità fotografica. I costi vanno da circa 300,00 € ai 7.000 ,00 € . • Altre tecnologie, quali il trasferimento termico, hanno fasce di mercato trascurabili. Altre caratteristiche fondamentali delle stampanti sono: Capitolo 3: Hardware 125 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 1. Velocità di stampa: la velocità di stampa è senz’altro una delle caratteristiche più importanti per una stampante. Alcuni anni fa essa era misurata in caratteri al secondo mentre l’unità di misura universalmente adottata oggi è quella delle pagine al minuto (ppm). La velocità va da qualche pagina al minuto per le stampanti più lente a oltre 30 ppm in quelle più veloci. A volte la stampa fotografica di una sola pagina in formato A4 può richiedere fino ad alcuni minuti; 2. Risoluzione: è il numero di punti stampati in un pollice, l’unità di misura è detta dpi–dot per inch; ovviamente maggiore è la risoluzione e tanto migliore sarà la qualità di stampa. Le stampanti attuali hanno risoluzioni variabili tra i 100 e i 4800 dpi; 3. Supporto: il supporto è il foglio di carta sul quale la stampante scrive e si distingue per: • Formato carta: il formato carta fa riferimento alle dimensione del foglio gestibile dalla stampante. Tutte le stampanti sono in grado di gestire formati diversificati. Uno standard internazionale classifica i formati carta in A4 (21x29,7 cm.), il formato più diffuso ed i suoi multipli A3, A2, A1 A0, doppio A0, etc. e sottomultipli A5, A6, etc.; per avere le dimensioni corrispondenti basta applicare la regola che raddoppia la dimensione più piccola per i multipli mentre dimezza la più grande per i sottomultipli così che il foglio A3 ha dimensioni 42x29,7 , A2 42x59,4 , A5 21x14,85 A6 10.50x14,85 e così via con la possibilità di arrotondare all’intero. Naturalmente le stampanti possono gestire anche formati non standard; per ciascuna stampante, sono specificate dal produttore la minima e la massima dimensione del foglio gestibile. Quando il formato supera l’A3 si parla di stampanti di grande formato o plotter; in passato i plotter utilizzavano una o più penne per tracciare disegni su formati carta molto grandi; oggi i plotter, invece, utilizzano le stesse tecnologie delle stampanti e, in particolare, quella a getto d’inchiostro; • Tipologie: la tipologia del foglio utilizzato si riferisce alla superficie del foglio e si distingue in carta normale, fotografica, lucida, buste, glossy, adesivi, etc. ; alcune stampanti oggi sono in grado di scrivere direttamente anche supporti CD e DVD cosiddetti printable; • Grammatura: la grammatura della carta è un indice del suo spessore. Invece di misurare lo spessore della carta, si utilizza stabilire il peso di un foglio pari a 1 mq. E’ evidente che ad una maggiore grammatura corrisponde un foglio di maggiore spessore. La grammatura più diffusa è pari a 80gr/mq ma sono disponibili grammature assai diversificate. In genere le stampanti sono in grado di gestire supporti da circa 60gr/mq fino a 260 gr/mq; 4. Stampa senza bordi: molte stampanti sono in grado di stampare il foglio intero, che, così, si presenta, una volta stampato, senza il classico rettangolo bianco esterno; questa caratteristica è molto apprezzata nelle stampe fotografiche; Capitolo 3: Hardware 126 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Naturalmente questo elenco non è esaustivo, ma credo di aver riportato tutte quelle importanti caratteristiche che consentono di orientarvi nel panorama odierno delle stampanti. 3.4.8.5. Scanner Lo scanner è un dispositivo di INPUT in grado di trasferire immagini o testo da supporti cartacei. La principale caratteristica di uno scanner è la risoluzione che, analogamente a quella descritta per i monitor, è il numero di punti che lo scanner riesce a leggere; in altri termini l’immagine da scandire è discretizzata in un certo numero di punti dei quali lo scanner individua il colore e lo trasferisce al sistema. La risoluzione, in questo caso, è misurata in dpi - dot per inch (punti per pollice); tutti gli scanner consentono l’acquisizione con diverse risoluzioni, stabilite dall’utente, da un minimo, in genere, di 100x100 dpi fino a 4800x4800 dpi raggiunta dagli scanner più sofisticati. La maggior parte degli scanner riesce a interpolare i pixel individuati per raggiungere risoluzioni ancora maggiori. Interpolare significa, attraverso opportuni algoritmi, stabilire il colore di un pixel intermedio tra due letti dallo scanner. Per questo spesso si riferisce alla risoluzione ottica e quella interpolata. Altre caratteristiche importanti: • il formato, ovvero la dimensione massima del foglio da scandire e, in genere, è data dal formato A4 ma ci sono anche scanner A3 e scanner di grande formato A2 e successivi; • la velocità di scansione; • la possibilità di leggere i negativi quali le diapositive; • il costo; • la disponibilità di un caricatore automatico degli originali che consente l’acquisizione di più pagine senza l’intervento dell’operatore. 3.4.8.6. Multifunzione Una multifunzione, come dice il nome stesso, è un dispositivo in grado di assolvere a più di un compito; nella sua massima configurazione, un multifunzione consente di stampare, scandire, fotocopiare, ricevere e spedire fax, leggere memorie per fotocamere e stampare direttamente da macchine fotografiche digitali o memorie senza l’ausilio del PC. Il sistema multifunzione più semplice integra le funzioni di una stampante, di uno scanner e di una fotocopiatrice. Capitolo 3: Hardware 127 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 3.4.8.7. Fotocamere e videocamere digitali La rivoluzione digitale non poteva trascurare foto e film; anche le fotocamere e videocamere sono divenute digitali e memorizzano i dati, in questo caso foto e filmati, su apposite memorie o, per le videocamere, su cassette DV (Digital Video) o DVD. Le caratteristiche fondamentali di una fotocamera sono la risoluzione, ovvero il numero di pixel memorizzati al momento dello scatto, e lo zoom, funzionalità simile a quella di un binocolo in grado di “avvicinare” il soggetto da fotografare. Le moderne macchine fotografiche hanno risoluzioni che vanno da 1M pixel fino a 10M pixel. Le memorie utilizzate hanno una capacità che va da 128MB a qualche GB, sono molto piccole, in genere quanto una moneta, e di diversi formati: SD-Secure digital, CF-Compact Flash, XD picture card, MMC-Multi media Card, etc. . Le fotocamere digitali si collegano quasi sempre alla porta USB mentre le videocamere alla porta fire wire. 3.4.8.8. Memorie di massa Come detto la memoria centrale è operativa ed ha tempi di accesso molto bassi; questa memoria ha, però, due limitazioni: la capacità che, per quanto notevole, è insufficiente per contenere una grande quantità di dati e la volatilità che le fa perdere il contenuto al momento dello spegnimento del sistema. Si rende pertanto necessario ricorrere ad altri tipi di memoria che garantiscono stabilità e capacità superiori; tali memorie sono dette memorie di massa proprio in considerazione della notevole capacità di immagazzinamento dei dati. A questa categoria appartengono numerosi dispositivi tecnologicamente raggruppabili in tre grosse categorie: • Magnetici: Memorizzano i dati magnetizzando la superficie del supporto contenente l’informazione; appartengono a questa categoria i dischi rigidi, i floppy disk e i nastri magnetici; • Ottici: l’informazione è memorizzata facendo uso di un laser che incide la superficie del disco; tale operazione, su alcuni supporti, è irreversibile per cui tali supporti non risultano essere riscrivibili. Appartengono a tale categoria i CD ed i DVD; • Flash RAM o memory flash: sono dispositivi esclusivamente elettronici che si caratterizzano per la facile trasportabilità ed una buona capacità; appartengono a questa categoria i PEN DISK, detti anche USB disk, Flash disk e PEN DRIVE. Capitolo 3: Hardware 128 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro In funzione delle modalità di accesso ai dati, invece, le memorie di massa possono essere così classificate: • Memorie ad accesso uniforme: Tutte le celle hanno lo stesso tempo di accesso; a questa categoria appartiene la RAM e, in genere, le memorie elettroniche; • Memorie ad accesso diretto: il tempo necessario per l’accesso all’informazione richiesta dipende dalla sua posizione rispetto agli organi di lettura/scrittura; a questa categoria appartengono i dischi rigidi e, in genere, le cosiddette memorie rotanti; • Memorie ad accesso sequenziale: l’accesso ad una informazione è possibile solo scorrendo in maniera rigorosamente sequenziale tutte le precedenti; a tale categoria appartengono i nastri magnetici. Il tempo di accesso è, in genere, definito come il tempo intercorrente tra l’istante in cui si chiede l’informazione e quello in cui essa è raggiunta dagli organi di lettura. Il tempo di trasferimento è il tempo necessario, ad accesso avvenuto, per trasferire l’informazione al dispositivo che l’ha richiesta. Il tempo di lettura/scrittura o di risposta è dato dalla somma tra il tempo di accesso e quello di trasferimento. Quasi sempre il tempo di trasferimento è trascurabile perché la velocità di scambio dati sul bus o attraverso il DMA avviene a velocità molto alte (Vedi interfacce). Ritengo opportuno chiarire la differenza tra DRIVE e supporto; l’informazione è memorizzata sui supporti (floppy disk, CD, DVD, etc.) mentre il drive è il dispositivo che legge e/o scrive l’informazione sul supporto. Così il CD è il supporto che contiene l’informazione mentre il lettore CD è il drive che lo legge mentre il masterizzatore è in grado anche di scriverlo. 3.4.8.8.1. Dischi magnetici La memoria di massa con i tempi di accesso più bassi e la più grande capacità è senz’altro il disco rigido o Hard Disk. Un disco rigido è costituito da uno o più supporti di forma circolare detti “piatti” agganciati allo stesso asse rotante che consente loro di ruotare in maniera solidale; ogni piatto dispone di due testine, una per ogni superficie, e la stessa testina è in grado di leggere o scrivere l’informazione; tutte le testine sono agganciate allo stesso asse e si muovono anch’esse in maniera solidale: Capitolo 3: Hardware 129 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 2 TESTINE PER PIATTO Le testine sono agganciate allo stesso asse e si muovono in maniera solidale Superfici : Superiore e Inferiore I piatti sono agganciati allo stesso asse e ruotano in maniera solidale Le testine riescono a leggere e scrivere l’informazione senza toccare la superficie del piatto in maniera tale da evitarne l’usura. Ciascun piatto è diviso in tracce e ogni traccia in settori, tra un settore e l’altro vi è una zona inutilizzata denominata gap: Traccia Settore Gap Capitolo 3: Hardware 130 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro La logica del disco è quella di leggere o scrivere un settore, in genere costituito da 512Byte. Ciascun settore è raggiungibile dalla testina di lettura/scrittura grazie al movimento rotatorio dei piatti e quello trasversale delle testine che si infilano tra i piatti. Il tempo di accesso, nel caso dei dischi rigidi, è dato dalla somma del tempo di posizionamento e di latenza. Il tempo di posizionamento è il tempo impiegato dalla testina per raggiungere la traccia contenente il settore da leggere. Il tempo di latenza, invece, è legato alla velocità di rotazione del disco ed è quello necessario affinché, raggiunta la traccia, il settore da leggere/scrivere passi sotto la testina. Questi tempi sono, in genere, dell’ordine di pochi millesimi di secondo. Ed è arrivato il momento di dare le cifre. I moderni dischi rigidi sono costituiti da piatti del diametro di 3”1/2 e 2”1/2 utilizzati, questi ultimi, dai computer portatili. Le velocità di rotazione sono pari a 4200 o 5400 giri/min per i dischi da 2”1/2 mentre i dischi da 3”1/2 arrivano anche a 7200 giri/min e 10K giri/min. Per i dischi con interfaccia SCSI si arriva a 10K e 15K giri/min. Le capacità variano da 40 GB a 1 TB (1024 GB). I costi vanno da circa 50,00 € a 350,00 €. Da alcuni anni i dischi rigidi dispongono della tecnologia SMART (SelfMonitoring Analysis and Reporting Technology), che fornisce un avviso all’utente di guasto imminente del disco rigido. Questa tecnologia consente, pertanto, di sostituire il disco prima che si guasti definitivamente con conseguente perdita dei dati. Il danno economico maggiore provocato dalla rottura del disco rigido è dovuto alla perdita dei dati e non certo al costo della sua sostituzione, che è del tutto trascurabile. Ci sono aziende specializzate per il recupero dei dati da dischi rigidi guasti ma il costo di una tale operazione può essere anche di decine di migliaia di euro. 3.4.8.8.2. Floppy Disk I floppy disk, ormai obsoleti, hanno caratteristiche analoghe ai dischi rigidi; sono costituiti da un solo piatto di materiale plastico flessibile di diametro pari a 2,5”. La loro capacità è pari a 1,44MB o, in pochi casi, 2,88MB; la capacità assai ridotta e la scarsa affidabilità rendono il supporto oggi praticamente quasi inutilizzato. Il floppy disk ha comunque fatto la storia delle memorie di massa; nei primi PC non erano disponibili Hard Disk per cui l’unica memoria di massa era rappresentata Capitolo 3: Hardware 131 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro da floppy disk del diametro di 5”1/4 ed una capacità pari a 160KB; si sono susseguiti supporti da 360KB, 720KB e, infine, 1,44MB e 2,88MB. 3.4.8.8.3. CD e DVD I CD ed i DVD utilizzano una tecnologia completamente diversa per la lettura/scrittura dei dati; si tratta di supporti ottici letti e scritti mediante laser. Introdotti nel 1976 dalla Philips quali supporti digitali per la musica e denominati CD-DA (Compact Disc Digital Audio), sono stati successivamente utilizzati come memorie a sola lettura denominati CD-ROM (Compact Disc Read Only Memory).La capacità iniziale era di 74 minuti di audio corrispondenti a 650MB di dati, mentre oggi il supporto più diffuso è di 80 minuti pari a 700MB ma ne esistono di capacità superiore poco standardizzata e, quindi, poco utilizzata. La tecnologia ha progredito velocemente riuscendo a fornire i supporti registrabili e riscrivibili utilizzando un drive chiamato masterizzatore. Ma non ci si poteva fermare e si è arrivati ai DVD (Digital Versatile Disc) la cui capacità è di 4,7GB e 8,5GB. Si distinguono DVD-ROM e DVD Video contenenti FILM. Sui supporti registrabili, il processo di masterizzazione ne altera la superficie, rendendo così impossibile la cancellazione e/o la riscrittura; pur tuttavia tali supporti sono scrivibili più volte fino al riempimento, mantenendo o meno il contenuto precedente secondo una tecnica denominata multisessione. La seguente tabella elenca i supporti disponibili attualmente sul mercato e le loro principali caratteristiche: Supporto Capacità Descrizione CD-R 700 MB, 80 minuti Registrabile. Può essere scritto più volte fino al riempimento ma non è cancellabile. CD-RW 700 MB, 80 minuti Riscrivibile. Può essere letto, cancellato e riscritto più volte, come un normale floppy disk. La capacità effettivamente utilizzabile è di poco oltre i 500MB. Capitolo 3: Hardware 132 L’Informatica per i miei studenti – Volume 1 DVD-R, DVD+R Prof. Bianco Mauro 4,7 GB Come CD-R. Per i DVD esistono due standard mondiali (denotati con + e -) portati avanti da due diverse organizzazioni che, non riuscendo a raggiungere un accordo, hanno condotto ricerche indipendenti che hanno portato a due diverse soluzioni. DVD-RW, DVD+RW 4,7 GB Come CD-RW. DVD+DL 8,5 GB Come CD-R. Layer. DL=Dual Questi, invece, i drive disponibili: Drive Descrizione Lettore CD Legge CD-R, CDR-W. Ormai in fase di fine produzione. Lettore DVD Legge tutti i supporti; quelli di ultima generazione anche i DL. Masterizzatore CD Legge e scrive CD-R, CD-RW. Masterizzatore DVD Legge e scrive tutti i supporti ad eccezione dei DL. Masterizzatore DVD DL Legge e scrive tutti i supporti. Capitolo 3: Hardware 133 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro I masterizzatori DVD attualmente in commercio sono di tipo DL. Naturalmente si sono succeduti, nel corso del tempo, altri drive quali, ad esempio, i masterizzatori che supportavano solo i CD-R, i masterizzatori DVD+ e DVD-. La tecnologia ha fornito a getto continuo soluzioni migliorative con riferimento, per esempio, alla velocità di masterizzazione passata da 2x a circa 52x per i CDR e da 1x a 16x per i DVD+/-R; la velocità di riferimento 1x corrisponde a 150KB/sec per i CD e 1.135KB/sec per i DVD. Famose sono le tecnologie di scrittura burn proof e samless link: queste due tecnologie hanno come obiettivo quello di evitare il fallimento del processo di masterizzazione con conseguente perdita del supporto; in precedenza, infatti, il processo di masterizzazione non poteva essere interrotto e, nel caso, il supporto era irrimediabilmente rovinato ed inutilizzabile mentre, con le tecnologie di cui innanzi, una interruzione del processo non compromette l’esito finale della masterizzazione. Uno sguardo al futuro: sono da poco in commercio masterizzatori di ultima generazione che utilizzano la tecnologia BD (Blu-ray Disc) con capacità del supporto che arriverà addirittura a 200GB. 3.4.8.8.4. Nastri magnetici Il nastro magnetico è un dispositivo ad accesso sequenziale ed è costituito da un nastro di plastica ricoperto di materiale magnetizzabile e avvolto su una bobina. L’informazione è scritta sul nastro su piste longitudinali, in genere 8 + 1 per il controllo di parità; ogni byte viene letto in maniera trasversale sulle 8 piste. Attualmente sono utilizzati supporti di tipo DAT (Digital Audio Tape). La capacità di un nastro dipende dalla sua lunghezza e dalla densità con la quale l’informazione è registrata. La densità è il rapporto tra la quantità di informazione registrata e lo spazio utilizzato e, per i nastri, è misurata in KB/inch. Capitolo 3: Hardware 134 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro L’informazione su un nastro è, in genere, organizzata in volumi sequenziali e la presenza del gap è necessaria, come per i dischi, per separare un’informazione da un’altra. I nastri sono utilizzati esclusivamente per le copie di back-up ovvero per memorizzare, a scopo precauzionale, i dati presenti sui dischi rigidi in modo da poterli ripristinare in caso di guasto di quest’ultimi. L’utilizzo dei nastri per questo scopo è sicuramente vantaggioso perché hanno una grande capacità, dell’ordine di qualche centinaia di GB, un costo assai ridotto e si dimostrano molto veloci in elaborazioni sequenziali, come quella di copiare dati provenienti da altri supporti. Per le copie di back-up, molti utenti preferiscono supporti quali CD e DVD, almeno nei casi in cui i dati da copiare sono contenibili su 1 o, al massimo, tre/quattro CD o DVD. Ritornerò sulla gestione delle copie durante l’ultimo anno di corso. 3.4.8.8.5. Pen Disk, MP3, foto album I Pen Disk sono, in ordine di tempo, le ultime memorie ad essere state inventate e per questo ci si riferisce ad esse con numerosi nomi quali USB Disk, chiavette USB, Flash disk, Pen drive. Le caratteristiche fondamentali di un pen disk sono la discreta capacità, attualmente da 128MB a 4GB, e la facile trasportabilità, dovuta al peso irrisorio, qualche decina di grammi, ed alle ridotte dimensioni, che ne consentono la custodia, senza alcun impiccio, persino nel portafoglio; si tratta, pertanto, di una memoria da portare sempre con sé. Sono in commercio pen disk in grado di leggere i file MP34; questi dispositivi, di fatto, stanno sostituendo i lettori portatili di CD e stereo cassette. Prodotti analoghi sono i foto album portatili che, muniti di un piccolo display LCD, consentono la memorizzazione e la visualizzazione di moltissime foto e/o la visione di filmati. 3.4.8.8.6. Confronto tra le memorie di massa Dopo aver visto tanti tipi di memorie di massa ci si chiede come mai una tale diversificazione; ebbene questi dispositivi, pur avendo tutti lo stesso scopo ovvero quello di memorizzare dati, hanno specificità diverse. 4 La codifica MP3 consente la compressione dei file audio mantenendo una discreta qualità; la compressione dati consente di ridurre la grandezza dei file. Non mi dilungo molto perché la compressione sarà trattata in maniera approfondita il prossimo anno. Capitolo 3: Hardware 135 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro I dischi rigidi costituiscono la memoria di massa più veloce e con la maggiore capacità; sono utilizzati per archiviare tutti i dati utilizzati dall’utente, i programmi ed il sistema operativo. Nei dischi rigidi, però, il drive ed il supporto costituiscono un’unica unità non estraibile. Esistono dei dispositivi detti slitte, che consentono di estrarre il disco rigido dal sistema e dei contenitori con interfaccia USB ma sono piuttosto grandi, pesanti e non sempre hot plug. I Floppy disk hanno il vantaggio dell’estraibilità del supporto ma, come detto, sono ormai quasi del tutto inutilizzati. I CD ed i DVD si caratterizzano per l’estraibilità del supporto e la tecnologia non più magnetica ma ottica. Sono i supporti esterni più utilizzati perché leggibili su tutte le macchine, con una notevole capacità ed una grande affidabilità. I nastri magnetici sono utilizzati da piccole e medie aziende, enti e grandi organizzazioni al solo scopo di effettuare copie di back-up. Quasi mai i nastri sono utilizzati da utenze domestiche. I pen disk si caratterizzano per la loro praticità: sono molto piccoli, utilizzabili con connessioni hot plug su tutti i PC tramite l’interfaccia USB, hanno velocità di trasferimento dati e capacità apprezzabili. Il pen disk è utile per il trasporto dati e, in genere, viene sempre portato con sé dall’utilizzatore, perché facilmente contenibile persino nel portafoglio. 3.4.8.9. Gruppi di continuità (UPS) I gruppi di continuità o UPS (Uninterruptible power supply) risolvono un problema essenziale per il corretto spegnimento del sistema. In caso di assenza di alimentazione elettrica, l’UPS garantisce, tramite apposite batterie, una corretta alimentazione al sistema per un certo numero di minuti dipendente dalla tipologia del gruppo di continuità. L’obiettivo non è quello di lavorare in assenza di alimentazione elettrica ma quello di evitare lo spegnimento improvviso del sistema, così molti gruppi forniscono una autonomia limitata e sufficiente per procedere al corretto spegnimento del sistema di elaborazione. La maggior parte dei gruppi di continuità svolgono anche altre funzioni quali, ad esempio, la stabilizzazione e la “pulizia” dell’alimentazione elettrica, la protezione della linea telefonica e della rete dati. Capitolo 3: Hardware 136 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 3.4.8.10. Videoproiettore e tavoletta grafica I videoproiettori consentono di proiettare l’immagine proveniente da un PC o da una fonte video (TV, videoregistratore, etc.) su uno schermo o direttamente su una parete. Le caratteristiche fondamentali di un videoproiettore sono la risoluzione e la luminosità misurata in ansi lumen; una maggiore luminosità consente la visione dell’immagine senza necessariamente oscurare l’ambiente in cui si proietta. I moderni videoproiettori hanno una risoluzione XGA o superiore e luminosità a partire da 800 ansi lumen. La tavoletta grafica è un dispositivo di input che consente l’immissione di dati grafici mediante una penna trascinata su un’apposita superficie. Le caratteristiche Capitolo 3: Hardware 137 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro fondamentali di una tavoletta grafica sono la risoluzione e la grandezza. Sono oggi disponibili tavolette dal formato A6 ad A3 o anche più. L’uso combinato del videoproiettore e di una tavoletta grafica di dimensioni A0 o superiore consente oggi di disporre di lavagne elettroniche, che si rivelano molto utili nella didattica. Il nostro laboratorio linguistico dispone di tale tecnologia. 3.4.8.11. Schede tecniche Nei paragrafi precedenti ho riportati soltanto le caratteristiche principali dei dispositivi periferici; un elenco esaustivo sarebbe piuttosto lungo, ma ritengo opportuno riportare schede tecniche più complete almeno per alcuni prodotti disponibili sul mercato. Le pagine seguenti vanno solo lette e lo scopo è quello di stimolare una discussione in classe che possa ampliare le vostre conoscenze. Questo ciclo di lezioni, peraltro, si concluderà con la lettura di brochure di prodotti riportati nei pieghevoli pubblicitari, che voi procurerete, distribuiti da negozi di informatica. Notebook SCHEDA TECNICA Processore Intel Core 2 Duo T5750 2 Mb di cache Livello 2; clock 2.00 GHz; velocità del bus 667 MHz FSB Capitolo 3: Hardware 138 L’Informatica per i miei studenti – Volume 1 Ram Hard disk Cd/dvd Schermo (pollici) Connettività Sistema operativo Grafica Audio Webcam Software Prof. Bianco Mauro supporta Intel 64 architecture 4GB (2x2GB) Dual-channel DDR2 SDRAM Il notebook è dotato di 2 slot in totale, tutte e due occupate 250GB Hard disk S-ATA Masterizzatore DVD Super Multi (+/-R +/-RW) con supporto Double Layer Lettore di supporti digitali integrato 6-in-1 card reader, supporting Secure Digital™ (SD), MultiMediaCard (MMC), MultiMediaCard Plus (MMCplus™), Memory Stick® (MS), Memory Stick PRO™ (MS PRO), xD-Picture Card™ (xD) Display 16" con CineCrystal TFT LCD Risoluzione 1366 x 768 pixel high-brightness (220-nit) Visualizzazione multi-window con GridVista Visualizzazione 16:9 Tempo di risposta 8 ms high-def 60% color gamut WLAN: Intel® Wireless WiFi Link 4965AGN (dual-band quad-mode 802.11a/b/g/Draft-N) Wi-Fi CERTIFIED® network connection, supporting SignalUp™ with InviLink™ Nplify™2 wireless technology LAN: Gigabit Ethernet, Wake-on-LAN ready WPAN: Bluetooth® 2.0+EDR (Enhanced Data Rate) Modem: 56K ITU V.92 with PTT approval, Wake-on-Ring ready Windows Vista Home Premium NVIDIA GeForce 9500M GS con fino a 1280 MB di TurboCache(512 MB di GDDR2 VRAM dedicata, fino a 768 MB di memoria di sistema condivisa) Supporta la tecnologia HD NVIDIA PureVideo, la tecnologia OpenEXR High Dynamic-Range (HDR), Shader Model 4.0, Microsoft® DirectX® 10 Supporto DualView MEPG-2/DVD acceleration, decoding WMV9 (VC-1) and H.264 (AVC) decoding HDMI™ (High-Definition Multimedia Interface) con HDCP (High-bandwidth Digital Content Protection) support Arcade™ Deluxe con tecnologie CinemaVision™ e ClearVision™ Dolby Home Theater® audio enhancement ottimizzato di secondo generazione, con tecnologie Dolby® Digital, Dolby® Digital Live, Dolby® Pro Logic® IIx, Dolby® Headphone, Dolby® Natural Bass and Dolby® Sound Space Expander Due casse stereo incorporate e un booster Tuba CineBass booster che supporta gli effetti a bassa frequenza Supporto audio alta definizione Supporto per casse digitali S/PDIF Compatibile MS-Sound Tecnologia PureZone con 2 microfoni stereo incorporati con tecnologie beam forming, echo cancellation, and noise suppression Crystal Eye webcam integrata supporta la tecnologia potenziata PrimaLite™ Video Conference Manager software con tecnologia Video Quality Enhancement (VQE) con H.264 video compression, supporta la risoluzione 640 x 480 per le video chiamate on line con drag-and-drop Picture-in-Picture (PIP) interactivity Empowering Technology ( ePower, eAudio, eDataSecurity, eRecovery, eSettings Management) . Arcade Deluxe featuring Cinema, Album, Music, HomeMedia . InstantOn Arcade . Bio-Protection . Crystal Eye . GridVista . Launch Manager . GameZone . Video Conference Manager featuring Video Quality Enhancement (VQE) . McAfee Internet Security Suite 60-day trial version (o equivalente) . Adobe® Reader® . CyberLink® PowerDirector® trial version . NTI Media Maker™ Capitolo 3: Hardware 139 L’Informatica per i miei studenti – Volume 1 Sicurezza Interfacce Tastiera e dispositivi di puntamento Test di qualità e affidabilità Batteria Dimensioni Peso Prof. Bianco Mauro . Microsoft® Works 9.0 con Office Home e Student 2007 Trial Soluzione Bio-Protection fingerprint, con accesso Windows®, protezione computer, FingerLaunch, ProfileLaunch, MusicLaunch, password bank, MyLaunch, FingerNav Slot per blocco Kensington HDD Password BIOS per utente e amministratore 1x slot ExpressCard™/54 6-in-1 card reader (SD™, MMC, MMCplus™, MS, MS PRO, xD) 4x porte USB 2.0 1x porta HDMI™ con supporto HDCP 1x porta Consumer infrared (CIR) 1x porta external display (VGA) 1x jack uscita cuffi/casse con supporto S/PDIF 1x jack per microfono 1x jack ingresso linea 1x porta Modem (RJ-11) 1x porta Ethernet (RJ-45) 1x jack ingresso DC per adattore AC Tastiera a 88/89-tasti con layout del cursore a "T" invertita, escursione tasti 2.5 mm (minima) Dispositivo di puntamento touchpad con lettore fingerprint Bio-Protection, con controllo funzioni FingerNav a 4 vie 12 tasti funzione, tasto cursore a 4 vie, 2 tasti Windows®, controlli hotkey, tastiera numerica incassata, supporto linguaggi internazionali, tasti indipendenti per US dollar e Euro Tasto Empowering Tasti accesso facilitato: WLAN, Internet, email, Bluetooth®* (manufacturing option) CineDash media console, comprende • Arcade™ • Volume meter • Menu navigation(enter/back/left/right) • Media control (play/pause, stop, previous, next, fast forward, rewind) • Mute and hold keys Controllo remoto Media Center opzionale Temperature & humidity test Free drop test Acoustics test Weight and Pressure tests Spillage test Shock and Vibration tests Electrostatic discharge immunity test MTBF (Mean Time Between Failure) test Hinge life test Keyboard-switch life test 6-cell Ioni di Litio Sino a 3.2-ore di durara batteria con 8 celle e grafica dedicata Tecnologia QuicCharge™: • 80% ricarica in 1 ora • 2-ore ricarica rapida a sistema spento f• 3-ore ricarica sistema in uso 385 x 275 x 43.6/39.3 mm 3.5 kg Capitolo 3: Hardware 140 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Personal Computer SCHEDA TECNICA Processore Ram Hard disk Scheda grafica Sistema operativo Unita ottiche Lan Interfacce i/o Tastiera & mouse Software Monitor Certificazioni Alloggiamenti Dimensione Garanzia Audio Altro Cabinet Alimentatore Floppy disk Intel Core 2 Quad Q6600 (2.40GHz FSB 1066MHz, 8MB Cache), Chipset Intel Q35 + ICH9DO 2 GB DDRII 667 MHz espandibile fino a 8GB 2 X 320GB SATA II 7200 RPM NVIDIA 8600GS 512MB Windows Vista® Business Autentico multilingua (UK+DE+FR+NL+IT) masterizzatore dvd dual layer Ethernet 10/100/1000 LAN: gigabit Ethernet Dieci porte USB 2.0 (quattro anteriori; sei posteriori) porte tastiera e mouse PS/2 porta parallela porta seriale porta Ethernet (RJ-45) porta VGA DVI HDTV otto porte audio (2 frontali, 6 retro) inclusi Intel Active Management Technology (AMT) 3.0 Empowering Technology (eDataSecurity1, eLock, eRecovery, eSettings, ePerformance Management) LANScope v3.5 Norton Internet Security 2007 Adobe Reader 8.1 CyberLink PowerDVD NTI CD-Maker Gold Microsoft Office Ready 2007 Non incluso E' possibile abbinare qualsiasi modello della gamma CE,FCC,BSMI, CCC, UL, cUL, ETL, Nemko, Energy Star tre alloggiamenti da 5,25" Sei alloggiamenti da 3,5" (2 esterni, 4 interni) BR/> 185,9 (H) x 447.4 (L) x 484,2 (P) mm 3 anni di cui il primo on site Audio incorporato 7.1 canali ad alta definizione Il CD di Ripristino non è incluso fisicamente ma caricato direttamente sull' Hard Disk Mini Tower 300 W integrato Capitolo 3: Hardware 141 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Monitor SCHEDA TECNICA Dimensione (pollici) Risoluzione std. Frequenza std. Dot pitch Multimediale Contrasto Certificazione Pannello Luminosità Colori visualizzabili Tempo di risposta Angolo di visuale (orizz/vert) Dati elettrici Connettività Plug & play Osd Alimentazione Inclinazione Kensington-lock Vesa standard 19"/48 cm 1280 x 1024 60 Hz 0.294 x 0.294 mm sì - Audio incorporato 1,5 W RMS x 2 altoparlanti stereo 800:1 Marchio CE, EMC, FCC-B, UL, CSA, Energy Star, SEMKO, TÜV/GS, TÜV Ergo, TCO '03 Polarizzatore antiriflesso Striscia verticale RGB 300 cd/m² 16,7 M 5 msec Angolo visuale (orizzontale) : 176 gradi Angolo visuale (verticale) : 170 gradi Dot Rate video : 140 MHz Frequenza scansione orizzontale : 30 - 83 kHz Frequenza scansione verticale : 56 - 75 Hz Ingresso segnale Analogico (VGA) , DVI-D , Ingresso audio PC Uscita audio Audio stereo (jack da 3,5 mm) 1 x USB 1 x USB 2.0 Composite sync, Sincronizzazione separata, Sync su verde Impedenza ingresso video : 75 ohm Impedenza ingresso sincronizzazione : 2,2k ohm Livelli segnale ingresso video : 0,7 Vpp DDC CI, sRGB, Windows 98/ME/2000/XP/Vista Praticità migliorata : OSD (On-screen Display), SmartManage attivato, SmartControl II Comandi monitor : Automatici, Controllo luminosità, Sinistra/Destra, Menu (OK), Accensione/spegnimento, Su/Giù Lingue OSD : Inglese, Francese, Tedesco, Italiano, Spagnolo, Russo, Portoghese Conforme con : Energy Star Consumo : < 36W (tipico) Off Mode : < 1 W Alimentazione : Incorporata, 100-240 Vca, 50/60 Hz Da -5° a 20° Blocco Kensington compatibile 100 x 100 mm Capitolo 3: Hardware 142 L’Informatica per i miei studenti – Volume 1 Dimensioni Peso Colore Accessori inclusi Condizioni di esercizio Prof. Bianco Mauro Imposta larghezza (con supporto) 422 mm Imposta altezza (con supporto) 411,2 mm Imposta profondità (con supporto) 198,8 mm Peso prodotto (+ supporto) 5,86 Kg Silver ( Argento ) Cavo di alimentazione CA, Cavo VGA MTBF : 50.000 ore Umidità relativa : 20% - 80% Intervallo di temp. (funzionamento) : Da 5° C a 40° C Intervallo di temp. (immagazzinamento) : Da -20° C a 60° C Multifunzione SCHEDA TECNICA Tecnologia Tipologia Formato Carta Velocità Copia (cpm) Velocità Stampa (ppm) Capacità Cassetti (ff) Modalità Alim. Carta Supporti di stampa Funzione stampante Inkjet a 6 inchiostri, microugelli con gocce da 2 pl minimo, testina di stampa FINE e PgR "Clear Ink" Stampa, scansione, copiatura, fax e ADF fronte/retro da 35 pagine. Stampa diretta da fotocamera, scheda di memoria e telefono cellulare con display LCD a colori da 4,5 cm. Alimentatore automatico: A4, B5, A5, Letter, Legal, Buste (formato DL o Commerciale 10), 10 x 15 cm, 13 x 18 cm, 20 x 25 cm, carta di credito (54 x 86 mm) Cassetto: A4, B5, A5, Letter, Buste (formato DL o Commerciale 10), 10 x 15 cm, 13 x 18 cm, 20 x 25 cm Velocità di copia documento a colori: Circa 22 sec. Velocità copia foto 10x15cm senza bordi :Circa 45 sec. Velocità di copia in bianco e nero Fino a 28 cpm Velocità di copia a colori:Fino a 23 cpm Velocità copia foto 10x15cm senza bordi Circa 37 sec.¹ Velocità di copia in bianco e nero Fino a 31 cpm Velocità di copia a colori Fino a 24 cpm Velocità di stampa fotografica (secondi):Senza bordi 10 x 15 cm: ca. 43 secondi (Standard) Velocità di stampa monocromatica Fino a 28 ppm (Max.), 11 ppm (Standard) Velocità di stampa a colori: Testo e grafica: fino a 23 ppm (Max.), 10 ppm (Standard) Alimentatore posteriore: max. 20 fogli (MP-101, SG-201) Cassetto frontale: max. 150 fogli (carta comune) Alimetazione della copia tramite piano fisso Authomatic Document Feeder (ADF) Carta comune, PP-101/PP-201, SG-201, MP-101, FA-PR1, buste, SW-201 Risoluzione di stampa:Fino a 4800 x 1200 dpi Stampa su DVD/CD:Non disponibile Stampa fronte-retro Selezionabile automaticamente con Photo Paper Plus Fronte-Retro, Super White Paper o carta comune nei formati A4, B5, A5, Letter e 13 x 18 cm Stampa senza bordi Sì (formati A4, 20 x 25 cm, 13 x 18 cm, 10 x 15 cm e Carta di credito) Interfaccia fotocamera e connettività Porta Direct Print: stampa diretta da fotocamere e videocamere compatibili PictBridge. Stampa diretta da scheda di memoria CompactFlash®, Microdrive, Memory Stick®, Memory Stick Pro™, SD Memory Card®, MultiMediaCard™, MultiMedia Card Plus™ e SDHC Memory Card. Capitolo 3: Hardware 143 L’Informatica per i miei studenti – Volume 1 Funzione scanner Funzione copiatrice Funzione fax Prof. Bianco Mauro xD-PictureCard™ ¹, Memory Stick Duo™ ¹, Memory Stick PRO Duo™ ¹, Memory Stick Micro™ ¹, RS-MMC™ ¹, miniSD™ ¹, microSD™ ¹, miniSDHC™ ¹ e microSDHC™ ¹. Funzionalità: stampa multiselezione (selezione di varie immagini e vario numero di stampe per ogni immagine), stampa indice delle foto, stampa tutte le foto, stampa DPOF, stampa layout, stampa adesivi, stampa su DVD/CD (con sup. stampabile), stampa con informazioni sullo scatto EXIF, foglio indice delle foto, diapositive, stampa data e numero file Altre funzioni Ottimizzazione dell'immagine per stampa diretta da scheda di memoria: correzione automatica delle immagini, Vivid Photo, Photo Optimizer PRO, riduzione del rumore, illuminazione dei visi, luminosità, contrasto, sfumatura di colore, seppia/simulazione di illustrazione, riduzione degli occhi rossi, Image Optimizer, ritaglio Funzioni del driver: Photo Optimizer PRO (solo Windows), Image Optimizer (solo Windows), Photo Noise Reduction, Vivid Photo. Scanner piano e adattatore ADF, scanner a colori CIS Alimentazione automatica dei documenti Fronte/retro automatico fino a 35 pagine Film Scanning Non disponibile Risoluzione ottica 4800 x 9600 dpi (piano di copiatura) Fino a 600 x 600 dpi (ADF) Risoluzione digitale Fino a 19200 x 19200 dpi (solo piano di copiatura) Profondità scansione cromatica 48 / 24 bit (RGB, 16 / 8 bit per colore) Scala dei grigi 16 bit / 8 bit Compatibilità TWAIN / WIA (Windows XP / Windows Vista) Larghezza effettiva di scansione A4/LTR OCR in bundle Sì (ScanSoft OmniPage SE OCR) Push-scan, Multi-Scan, creazione ed elaborazione PDF*, deretinatura, maschera di contrasto, correzione fotografica (correzione sbiadimento, correzione grana, riduzione polvere e graffi, correzione controluce, tonalità automatica), correzione ombra dei margini, testo (OCR) Con MP Navigator EX Copia colore Sì Velocità di copia documento a colori:Circa 22 sec. Velocità copia foto 10x15cm senza bordi:Circa 45 sec. Velocità di copia in bianco e nero: Fino a 28 cpm Velocità di copia a colori Fino a 23 cpm Copie multiple 1- 99 copie Zoom 25 – 400% con incrementi del 1% e rapporti preimpostati Altre funzioni Intensità automatica (copia AE), regolazione manuale dell'intensità, copia ripetuta dell'immagine, copia fronte/retro (solo con carta comune), copia 4 in 1, copia 2 in 1, copia su adesivi (2, 4, 9, 16), copia senza bordo, copia ripetuta dell'immagine, copia con correzione sbiadimento, copia con fascicolazione, copia con cancellazione della cornice Alimentatore di documenti automatico: fronte e retro automatico fino a 35 pagine Fax standalone Sì PC fax Win: Win: tramite fax-modem (in MFP) Mac: non disponibile Mac: non disponibile Fax a colori (omologato ITU-T.30E) Sì Velocità di trasmissione mono/colore Monocromia: ca. 3 sec./pag. (33,6 kbps) (in base a impostazioni predefinite utilizzando tabella ITU-T No1) Colore: ca. 1 min./pag. (33,6 kbps) (in base a impostazioni predefinite utilizzando foglio di prova fax a colori standard ) Monocromia: MH, MR, MMR Colore: JPEG Risoluzione fax Monocromia: 8 linee/mm x 3,85 linee/mm (Standard), 8 linee/mm x 7,7 linee/mm (Fine) Colore: 200 x 200 dpi Scala dei grigi Monocromia: 256 livelli Colore: 24 bit (pieno colore) (RGB, 8 bit per colore) Alimentatore automatico documenti Fino a 35 pagine (lato singolo) Selezione veloce 8 selezioni rapide a un tasto Selezione codificata 100 posizioni programmabili Selezione a gruppi 107 gruppi Riselezione Riselezione manuale, automatica Commutazione automatica FAX/TEL Sì (manuale) Collegamento segreteria telefonica Sì Ricezione remota Sì Trasmissione sequenziale:Sì Correzione automatica errori (ECM) Sì, compatibile ITU-T T.30 Microtelefono No Capitolo 3: Hardware 144 L’Informatica per i miei studenti – Volume 1 Velocità modem Memoria fax Rapporti di servizio fax Interfacce Sistemi operativi supportati Software incluso Condizioni di funzionamento Silenziosità Alimentazione e consumo Dimensioni Peso Durata cartucce Prof. Bianco Mauro Polling Non disponibile Velocità modem 33,6k / 31,2k / 28,8k / 26,4k / 24k / 21,6k / 19,2k / 16,8k / 14,4k / 12k / 9,6k / 7,2k / 4,8k / 2,4 kbps (riduzione automatica) Memoria FAX Circa 250 pagine (in base al foglio di prova fax a colori ) Rapporto attività, elenco numeri di telefono (selezione rapida, codificata, gruppi), elenco dati utente, elenco memoria, TX (rapporto di trasmissione), RX (rapporto di ricezione) USB 2.0 Hi-Speed Ethernet: IEEE802.3u (100BASE-TX), IEEE802.3 (10BASE-T), 10/100 Mbps (commutazione automatica). Interfaccia cellulare / PDA Stampa fotografica tramite PictBridge Windows Vista / Windows XP SP2 / Windows 2000 Professional SP4 Mac OS X da v.10.3.9 a v.10.5. MP Navigator EX, Easy-PhotoPrint EX, Solution Menu, Nuance Communication OmniPage SE (software OCR), NewSoft Presto! PageManager (solo Windows) Temperatura Ambiente operativo: 5° - 35° C Umidità Umidità operativa: 10 - 90% RH (senza condensa) Stampa: ca. 33 dB(A), durante la stampa nella modalità di massima qualità su carta Photo Paper Plus Semi-Gloss Copiatura: ca. 36,6 dB(A) durante la copiatura nella modalità di massima qualità su Photo Paper Plus Semi-Gloss Fonte CA 100-240V, 50/60Hz Consumo Standby: ca. 6,5 W (quando la lampada di scansione è spenta) Spenta: circa 1,6 W Copiatura: circa 26 W Massimo istantaneo: circa 70 W L x P x A) 500 × 535 × 257 mm Circa 16,6 kg Tecnologia Single Ink: 6 serbatoi d'inchiostro separati (PGI-9PBK, PGI-7 BK, PGI-9 Y, PGI-9 M, PGI-9 C, PGI-9 Clear) . Durata cartuccia nero Nero: 505 pagine (PGI-5BK), 5.025 pagine* (CLI-8BK) Nero: 4.065 foto* (PGI-5BK), 1.345 foto (CLI-8BK) * Resa supplementare stimata Durata cartucce colore Ciano: 890 pagine (CLI-8C); magenta: 665 pagine (CLI-8M); giallo: 710 pagine (CLI-8Y) Ciano: 437 foto (CLI-8C); magenta: 301 foto (CLI-8M); giallo: 329 foto (CLI8Y) Hard Disk SCHEDA TECNICA Capacità Velocità Interfaccia 750Gb 300 Mbytes/sec Serial ATA II Capitolo 3: Hardware 145 L’Informatica per i miei studenti – Volume 1 Formato (pollici) Rpm Buffer Seek Prof. Bianco Mauro 3,5" 7200 16 Mb Random read seek time : <8.5 msec Random write seek time : <10.0 msec 22 pin serial ata 101,6 x 26,1 x 146,99 Connettore Dimensione (L x A x P) mm Peso 0,72 Kg Masterizzatore SCHEDA TECNICA Standard Interfaccia Tipologia Versione Software Inclusi Velocità di trasferimento DVD±R/±RW/DL/-RAM/BD-R/BD-RE S-ATA Interno Retail Si Scrittura BD-R (SL/DL) 2x, 4x CLV, 6x CAV / 2x, 4x CLV BD-RE (SL/DL) 2x CLV DVD-R 1x, 2x, 4x CLV, 8x ZCLV, 8x, 12x, 16x PCAV DVD-R DL 2x, 4x CLV DVD-RW (SL/DL) 1x, 2x, 4x, 6x CLV / Non supportato DVD-RAM 2x, 3x ZCLV, 5x PCAV DVD+R 2.4x, 4x CLV, 8x ZCLV, 8x, 12x, 16x PCAV DVD+R DL 2.4x, 4x CLV DVD+RW (SL/DL) 2.4x, 4x, 6x CLV, 8x ZCLV / Non supportato CD-R 4x, 8x, 16x CLV, 24x, 32x, 40x PCAV CD-RW 4x, 10x, 16x CLV, 24x ZCLV Lettura BD-ROM (SL/DL) 6x / 4.8x CAV BD-R (SL/DL) 6x / 4.8x CAV BD-R (SL LTH) 3.8x CAV BD-RE (SL/DL) BDMV (AACS Compliant Disc) 4.8x CAV HD DVD-ROM (SL/DL) 3x / 3x CAV HD DVD-R (SL/DL) 3x / 3x CAV HD DVD-Video (AACS Compliant Disc) 3x CAV DVD-ROM (SL/DL) 16x / 8x CAV DVD-R (SL/DL) 12x / 8x CAV DVD-RW (SL/DL) 10x CAV / Non supportato DVD+R (SL/DL) 12x / 8x CAV Capitolo 3: Hardware 146 L’Informatica per i miei studenti – Volume 1 Tempo di accesso Buffer Media supportati Funzione LightScribe Dimensioni (l x a x p) Peso Sistemi operativi supportati Prof. Bianco Mauro DVD+RW (SL/DL) 10x CAV / Non supportato DVD-RAM 2x, 3x ZCLV, 3x-5x PCAV DVD-Video (CSS Compliant Disc) (SL/DL) 8x CAV CD-R/RW/ROM 40x CAV CD-DA (DAE) 40x CAV 8cm CD 10x CAV Video CD 40x CAV BD-ROM 170 ms typ DVD-ROM 180 ms typ DVD-RAM (Ver.2.2) 190 ms typ. CD-ROM 170 ms typ. CD, DVD 2 MB, BD 4 MB BD-ROM (SL/DL),BD-R (SL/DL),BD-RE (SL/DL),HD DVD-ROM (SL/DL),HD DVD-R (SL/DL), DVD-ROM (SL/DL), DVD-R SL , DVD-R DL, DVD-RW SL, DVDRAM, DVD+R SL, DVD+R DL, DVD+RW, CD-ROM, CD-ROM XA, CD-I, Photo-CD Multi-Session, Video CD,CD-Audio Disc, CD-Extra, CD-Text, CD-R, CD-RW Pixel Resolution : 600 [DPI] Colore : greyscale 146 x 41.3 x 185 mm 850 g Windows XP Home Edition, Professional, Media Center Edition Main Board SCHEDA TECNICA Socket/slot Formato Velocità bus Chipset Controller Raid AGP Slot Memorie LGA775 socket for Intel Core2 Extreme/Core2 Quad/ Core2 Duo/Pentium dual-core/Celeron dual-core /Celeron Processors Compatible with Intel 05B/05A/06 processors Intel 45nm multi-Core CPU ATX Form Factor, 30,5cm x 24,5cm 1600/1333/1066/800 MHz NVIDIA nForce 790i Ultra SLI 0/1/0+1/5 PCI-Express 16X 4 x DIMM, Max. 8 GB, DDR3 2000*/1800*/1600*/1333/800 Non-ECC,Un-buffered Memory Dual channel memory architecture - supports NVIDIA SLI-ready technology *Overclock speed **Refer to user manual for the Memory QVL(Qualified Vendors Lidts). ***When installing total memory of 4GB capacity or more, Windows 32-bit operation system may only recognize less than 3GB. Hence, a total installed memory of less than 3GB is recommended. Capitolo 3: Hardware 147 L’Informatica per i miei studenti – Volume 1 Slot di espansione Storage Lan Audio Ieee 1394 Usb Caratteristiche di overclock Caratteristiche speciali I/o su pannello posteriore I/o su connettori interni Prof. Bianco Mauro 2 x PCIe 2.0 x16 ,support NVIDIA SLI technology, at full x16, x16 speed(blue) 1 x PCIe x16 ,at x16 speed(middle) 2 x PCIe x1 ( the PCIEx1_1 (black) is compatible with audio slot) 2 x PCI 2.2 Southbridge 1 xUltraDMA 133/100/66/33 6 xSATA 3 Gb/s ports NVIDIA MediaShield RAID Support RAID 0,1,0+1,5,JBOD span cross Serial ATA drives JMicron JMB363 PATA and SATA controller 2 xExternal SATA 3.0Gb/s port on back I/O (SATA On-the-Go) Dual Gigabit LAN, both featuring AI NET2, Support Teaming Technology SupremeFX II Audio Card ADI 1988B 8 -Channel High Definition Audio CODEC Coaxial / Optical S/PDIF out ports at back I/O Noise Filter 2 x 1394a ports (1 port at back I/O, 1 port onboard) 10 USB 2.0 ports (6 ports at mid-board, 4 ports at back panel) Extreme Tweaker Loadline Calibration 2-Phase DDR 3 Intelligent overclocking tools - CPU Level Up - Memory Level Up - AI Gear 3+ - AI Overclocking (intelligent CPU frequency tuner) - AI Booster Utility - O.C. Profile: overclocking< configuration-sharing tool Overclocking Protection - COP EX (Component Overheat Protection - EX) - Frequency LED - Voltiminder LED - C.P.R.(CPU Parameter Recall) LCD Poster Fusion Block System EL I/O Onboard Switches: Power / Reset / Cls CMOS (at rear) EPU (Energy Processing Unit) Q-Connector Q-Fan Plus EZ Flash 2 Q-fan 2 CrashFree BIOS BIOS Wallpaper MyLogo3 1 x PS/2 Keyboard 2 x External SATA 1 x IEEE 1394a 2 x LAN(RJ45) port 6 x USB 2.0/1.1 1 x Clr CMOS switch 1 x Optical + 1 x Coaxial S/PDIF Output1 x onboard LED switch 2 x USB connectors supports additional 6 USB 2.0 ports 1 x Floppy disk drive connector 1 x IDE connector 6 x SATA connectors 1 x IEEE 1394a connector 8 x Fan connectors: 1 x CPU / 1 x PWR / 3 x Chassis / 3 x Optional 1 x S/PDIF Out connector 1 x8-pin ATX 12V Power connector 24-pin ATX Power connector 1 x EL I/O Shield Connector Capitolo 3: Hardware 148 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 1 x En/Dis-able Clr CMOS connector 3 x thermal sensor connectors Chassis Intrusion connector System Panel 1 x ROG connector 8Mb AMI Flash ROM, PnP, DMI2.0, WfM2.0, SM BIOS 2.4, ACPI 2.0a, Multi-language BIOS WOL by PME, WOR by PME, WOR by Ring, Chasis Intrusion, PXE LCD Poster Optional Fan SupremeFX II Audio Card 3 in 1 Q-Connector Kit UltraDMA 133/100/66 cable Floppy disk drive cable 3-way SLI bridge SLI bridge SATA cables SATA power cables 2-port USB2.0 + IEEE 1394a module EL I/O Shield Thermal sensor cables DIY Pedestal Fusion Block System Accessory Cable Ties Manuale d'uso Support Disc The hottest DX10 Game: Company of Heroes: Opposing Fronts Support DVD: - Drivers and applications PC Probe II Update AI Suite Futuremark 3DMark 06 Advanced Edition Kaspersky Anti-Virus Bios Gestibilità Accessori Cd di supporto Fotocamera digitale SCHEDA TECNICA Risoluzione Sensore (MegaPixels) Dimens. lcd (pollici) Tipo Memoria Zoom Foto: Large: 4.000 x 3.000 pixel, Middle1: 3.264 x 2.448 pixel, Middle2: 2.592 x 1.944 pixel, Middle3: 1.600 x 1.200 pixel, Small: 640 x 480 pixel, Wide: 4.000 x 2.248. Video: L1 1.024 x 768 pixel (15 fps), L2 640 x 480 pixel (30/15 fps), M 320 x 240 pixel (30/15 fps), S 160 x 120 pixel (15 fps) (a rallentatore), 640x480 (0.5/1 fps) (playback) Sensore CCD da 1/7” e 12,1 Megapixel. Processore DIGIC III con tecnologia iSAPS LCD P-Si TFT da 3.0'' 230.000 Pixels con copertura del 100% e regolazione della luminosità su 15 livelli. Slot di espansione per schede di tipo Secure Digital (SD), Secure Digital High-Capacity (SDHC) o MultiMedia Card (MMC). Viene fornita nella confezione una scheda da 32MB 6x Ottico Capitolo 3: Hardware 149 L’Informatica per i miei studenti – Volume 1 Peso (g) Interfaccia Mirino Sensibilità iso Messa a fuoco Distanza di messa a fuoco Esposizione Bilanciamento del bianco Obiettivo Stabilizzatore di immagine Flash Portata flash Otturatore Modalità di scatto Registrazione video Formati file Altre caratteristiche Alimentazione La confezione comprende Dimensioni (l x a x p) mm Garanzia Manuale Prof. Bianco Mauro 320 gr. USB 2.0 Hi-Speed (Mini-B, PTB); Uscita A/V audio-video PAL/NTSC Ottico zoom a immagine reale con correzione diottrica Automatico e manuale (High ISO Auto, 80, 100, 200, 400, 800, 1600) TTL, AiAF a 9 punti con rilevamento viso, 1 punto AF (qualsiasi posizione disponibile o fissa centrale), disponibile blocco AF On/Off, messa a fuoco singola o continua, bracketing di messa a fuoco, selezione manuale del punto AF con FlexiZone AF/AE, raggio ausiliario di assistenza e messa a fuoco manuale Face Detection AF/AE/FE e Face Select & Track. da 1 cm. Misurazione TTL di tipo valutativa, media pesata al centro e spot (centrale o collegata al punto AF di rilevamento del volto o alla cornice FlaxiZone AF). Compensazione dell'esposizione: ±2,0 EV (incrementi di 1/3 stop), bracketing AEB, blocco esposimetrico. 25 modalità di scatto (Auto, Programma AE, Priorità dei tempi AE, Priorità dei diaframmi AE, Manuale, Personalizzato (2 modalità), Panorama, Video; Special Scene: ritratto, paesaggio, notturno, sport, fogliame, neve, spiaggia, fuochi artificiali, interni, istantanea notturna, bambini, acquario, sott’acqua, ISO 32005, accento colore, viraggio colore). Misurazione TTL. 9 preselezioni (Auto, Luce del giorno, Nuvoloso, Tungsteno, Fluorescente, Fluorescente high, Flash, Sott’acqua e Personalizzato) f7.4 - 44.4 Eq. Fotografico: F35 - 210 mm. f2.8 - 4.8. 9 elementi in 7 gruppi (1 elemento asferico su entrambi i lati) Assente Integrato con funzioni Auto, Riduzione occhi rossi automatica, Manuale Flash On/Off. Compensazione a 3 livelli con il flash interno (13 livelli con Speedlite esterno4), esposizione di sicurezza, blocco FE, regolazione potenza manuale su 3 livelli, sincronizzazione sulla seconda tendina. da 30cm a 4 metri nella posizione grandangolo e da 30 cm. a 2.5 metri in posizione Tele. 15 – 1/2500 sec. (le velocità disponibili dipendono dalla modalità di scatto) Scatto singolo, Scatto continuo (1.5 fps), Autoscatto. Si Foto: JPEG compatibile Exif 2.2; DPOF compatibile v1.1; Video: AVI (Motion JPEG + WAVE mono); Audio: WAVE mono Effetti fotografici My Colors (My Colors off, Vivace, Neutro, Seppia, Bianco e Nero, Toni pelle più chiari, più scuri, Pellicola diapositiva, Blu più vivace, Verde più vivace, Rosso più vivace, Colore personalizzato) Batteria ricaricabile agli ioni di litio NB-2LH/NB-2L (fornita NB-2LH con caricabatteria). In condizioni ottimali è in grado di scattare fino a 240 fotografie o 420 minuti in riproduzione. Fotocamera, Caricabatterie, Batteria ricaricabile agli ioni di litio (NB-2LH). Cavi di collegamento, Manuali di istruzione, Software e Driver. 106,4 x 71,9 x 42,5 mm (eccetto le parti sporgenti) Assistenza diretta . Documentazione in Italiano 3.4.9. Classificazione dei sistemi di elaborazione I sistemi di elaborazione sono classificati in funzione delle loro caratteristiche hardware e software; essi si differenziano, dal punto di vista hardware, soprattutto per potenza di calcolo, dovuta essenzialmente alle caratteristiche ed al numero dei processori, e per la capacità di memoria, con riferimento sia a quella centrale che quelle di massa. Nei moderni elaboratori hanno una grande importanza anche il Capitolo 3: Hardware 150 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro sottosistema video, soprattutto per applicazioni di grafica avanzata e videogiochi, la qualità e la quantità di dispositivi periferici collegati e/o collegabili, etc. . C’erano una volta gli Home Computer, i computer per uso domestico. Oggi, a causa del continuo ribasso dei prezzi, i PC-Personal Computer sono utilizzati sia per uso domestico che per uso professionale da aziende, scuole, enti, professionisti, etc. . Gli odierni personal computer hanno una notevole capacità di calcolo, memorie piuttosto grandi e la possibilità di collegare numerosissimi dispositivi periferici, come visto in precedenza, ma non gestiscono la multiutenza mediante dispositivi terminali. Un personal computer ben configurato può essere addirittura utilizzato come Server nell’ambito di una piccola rete locale. D’altra parte le cosiddette consolle per giochi, quali X-Box di Microsoft e Playstation di Sony, sono dei veri computer dalle capacità grafiche e di elaborazione notevoli, almeno per quanto riguarda il software ludico. Nella fascia immediatamente superiore troviamo i Mini Computer ed i grandi computer detti Mainframe, che si distinguono per la loro maggiore potenza di calcolo e capacità di memorizzazione dati. Sono utilizzati come Server da grosse organizzazioni; si pensi, ad esempio, all’amministrazione finanziaria del nostro stato che deve memorizzare milioni di dichiarazioni dei redditi ogni anno. Una menzione a parte va fatta per i Supercomputer, utilizzati nella ricerca scientifica più avanzata e caratterizzati dalla più grande potenza di calcolo. Altre categorie di prodotti hanno funzioni simili ai personal computer: • Palmari, PDA (Personal Digital Assistant) o Pocket PC: piccoli sistemi che possono essere tenuti nel palmo di una mano; hanno capacità elaborative in grado di eseguire programmi semplici quali orologio, calcolatrice, calendario, rubrica, agenda e memorizzazione di appunti, anche vocali o scritti a mano, e programmi di una certa complessità quali Word e Excel per pocket PC e navigatori satellitari, mediante l’ausilio di una antenna GPS, che rilava la propria posizione sulla superficie terrestre. I palmari, in genere, utilizzano il sistema operativo Windows mobile; • Smartphone: si tratta di cellulari con possibilità di eseguire semplici programmi applicativi; spesso invadono il campo dei palmari ed i palmari, a volte, hanno anche la funzione di telefono cellulare; • NetBook: una nuova categoria di notebook caratterizzati da dimensioni e peso, in genere inferiore ad 1 Kg, molto ridotti. Capitolo 3: Hardware 151 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 3.5. Conclusioni Fornire un panorama completo della grande varietà dell’hardware è impresa assai difficile, pur tuttavia in questo capitolo ho trattato l’argomento in maniera abbastanza approfondita e completa. La trattazione dell’argomento si concluderà con la visione di componenti e dispositivi che hanno fatto la storia dell’informatica, breve ma intensa, e delle attrezzature disponibili nel nostro laboratorio di informatica; infine daremo uno sguardo all’interno di uno dei PC disponibili nel laboratorio. Nel corso del capitolo abbiamo potuto vedere come i dispositivi possono essere meccanici, elettromeccanici ed elettronici. Un dispositivo meccanico è costituito da parti in movimento azionate da energia animale o umana. Per esempio, la tastiera è meccanica anche se non manca la parte elettronica, un trapano manuale, un taglia erba senza motore, etc. . Un dispositivo elettromeccanico è costituito da parti in movimento azionate dall’energia elettrica. Ad esempio il disco rigido ha una componente elettromeccanica, per la rotazione dei piatti e lo spostamento delle testine, un trapano elettrico o un asciugacapelli, etc. . Un dispositivo elettronico è in grado di elaborare o memorizzare l’informazione senza che vi siano parti in movimento; sono ovviamente ed esclusivamente elettroniche la CPU, la RAM, i pen disk, le calcolatrici non scriventi, etc. . In uno stesso dispositivo possono essere presenti una o più di tali tecnologie. Un dispositivo elettronico ha una velocità di elaborazione milioni di volte superiore a quelli elettromeccanici che, a loro volta, sono di gran lunga più veloci di quelli meccanici. Si pensi ad una elaborazione che coinvolga la sola CPU e la memoria centrale quale l’elaborazione su una foto (rotazione, taglio, etc.), ad una che coinvolga il disco rigido, come il caricamento iniziale del sistema operativo, alla stampa di una o più pagine e, infine, alla vostra lentezza nello scrivere mediante la tastiera. Concludo il capitolo con una citazione di Umberto Eco: Il computer non è una macchina intelligente che aiuta le persone stupide, ma è una macchina stupida che funziona solo nelle mani delle persone intelligenti. Capitolo 3: Hardware 152 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Capitolo 4. Il sistema operativo Windows 4.1. Generalità Questo è uno di quei capitoli definiti trasversali rispetto al corso che vi accingete a seguire; gli argomenti in esso presenti, infatti, saranno trattati, per la parte iniziale, durante il primo anno e, per la restante parte, durante il terzo ed ultimo anno del corso di studio. Windows è un sistema operativo; parlerò dei sistemi operativi in un altro capitolo ma ritengo opportuno almeno darne qualche cenno introduttivo. Un sistema operativo è un software cosiddetto di base ovvero necessario per il funzionamento del sistema di elaborazione. Le principali funzioni sono quelle di gestione del sistema, di ottimizzazione delle risorse, di interfacciare l’utente ovvero rendere semplice l’utilizzo del sistema anche agli utenti meno esperti. Uno dei sistemi operativi più diffusi al mondo, con centinaia di milioni di installazioni, è Windows, sviluppato da Microsoft e le cui ultime versioni sono Windows XP e la recentissima Windows VISTA (Prima edizione gennaio 2007). Questo capitolo vuole essere soprattutto un riferimento a quella teoria necessaria per poter correttamente utilizzare il PC mentre per la pratica ci si limiterà ad una sorta di riepilogo del tipo “come si fa per” e riportare l’utilizzo delle barre degli strumenti e dei menù. Voglio evitare di riscrivere la guida in linea di Windows, alla quale si invita a ricorrere per qualsiasi esigenza, per cui questo capitolo vuole essere solo una traccia di quello che si farà in laboratorio ed un utile riferimento rapido alle operazioni più frequenti. Vi ricordo che potete avviare la guida in linea di Windows da <start\guida in linea e supporto tecnico>: \ 4.2. File, cartelle, volumi e unità Una delle funzioni più importanti del sistema operativo è gestire le memorie di massa ovvero Hard Disk, CD ROM, DVD, Floppy disk, Pen Disk, etc, di cui si è parlato nei capitoli precedenti. Abbiamo visto come, per esempio gli hard disk, sono organizzati fisicamente in tracce e settori; sarebbe impossibile per l’utente poter gestire il disco rifacendosi alla sua struttura fisica, per questo le memorie di massa sono organizzate in volumi, cartelle e file. Un file è un insieme di informazioni omogenee, pensate ad un documento Word o Excel; qualsiasi lavoro realizzate con il Capitolo 4: Il sistema operativo Windows 153 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro vostro PC, verrà salvato, ovvero memorizzato, in un file (o più file o cartelle); il sistema distingue i file mediante il loro nome ovvero ad ogni file è assegnato un nome; ogni volta che, infatti, salvate un documento, vi viene chiesto il nome da assegnargli. C’erano una volta i files di programma ed i files di dati; i files di programma contengono istruzioni eseguibili dal sistema mentre i files di dati costituiscono la parte passiva e sono l’oggetto dell’elaborazione; concetto estremamente semplice da capire, visto che abbiamo studiato gli algoritmi. Oggi in effetti non sempre è così perché anche i files di dati possono contenere “porzioni di codice” dette macro. Un disco può contenere centinaia di migliaia di file e sarebbe pertanto difficile poterli distinguere e gestirli organizzandoli solo con il nome. Per questo i file sono organizzati in cartelle. Una cartella è, pertanto, un contenitore di file e non solo perché, infatti, una cartella può contenere altre cartelle; così l’organizzazione delle cartelle è gerarchica e la cartella principale o iniziale è detta radice. Questa semplice organizzazione si dimostra molto efficiente perché consente di organizzare i file per gruppi omogenei e, per esempio, in una cartella posso salvare i documenti, in un’altra le foto e, a sua volta, questa è organizzata in cartelle distinte per anni e così via. Le cartelle sono contenute nei volumi; un volume è una organizzazione logica di informazioni, in genere distinte in file e cartelle, e allocata su uno o più dischi o memorie di massa. In pratica ho detto che un disco può essere diviso in più unità logiche disgiunte dette volumi o partizioni oppure che un volume può essere costituito da più dischi fisici ma questa è un’altra storia! (E’ presto per approfondire ma lo farò). In genere una unità logica coincide con una unità fisica ovvero un disco è organizzato in un unico volume ovvero contiene una sola partizione anche se oggi, con l’aumento notevole della capacità dei dischi, sempre più spesso questi vengono organizzati in due partizioni o volumi. Ogni volume o unità logica viene individuato dal sistema mediante una lettera dell’alfabeto seguita da due punti; così: • A: indica il volume allocato sul primo floppy disk; • B: indica il volume allocato sul secondo floppy disk; • C: indica, in genere, il primo volume o prima partizione del primo disco fisso e, sempre, il volume di sistema ovvero quello utilizzato dal sistema operativo per l’avvio e la gestione; • D:, E:, F: …. indicano, in genere, i volumi successivi sul primo e sui dischi seguenti, quindi i CD, DVD, masterizzatori, Pen disk, etc…. . In pratica, fatta eccezione per il volume utilizzato dal sistema e per i due floppy, a tutti gli altri volumi si può assegnare una lettera qualsiasi e non finisce qui perché ci sono le unità virtuali ma questa è sempre un’altra storia! Capitolo 4: Il sistema operativo Windows 154 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Le lettere assegnate ai volumi possono, quindi, cambiare e ciò può generare qualche confusione; per questo ad ogni volume può essere assegnata una etichetta o label ovvero una successione di 11 o più caratteri in funzione del file system5 (Oh, scusate mi è scappato!) . L’etichetta viene assegnata al supporto e non al drive così, per esempio, un Pen Disk o un CD con etichetta “Foto Gita” vedrà cambiare, da un PC all’altro, la lettera associata ma non la sua etichetta. Pertanto, un consiglio: battezzate i vostri Pen Disk. Per l’organizzazione gerarchica delle cartelle si utilizzano due analogie: La natura e gli alberi genealogici. Con riferimento alla natura, abbiamo già parlato della radice e credo sia ovvio il concetto di ramo così come la denominazione delle cartelle che non contengono altre cartelle dette foglie. Con riferimento agli alberi genealogici, invece, si estende agli alberi informatici il concetto di padre o genitore (parent), fratello, figlio etc. . Radice Volume: Etichetta Windows System System32 Fonts TerzaProg Documenti Documets and settings Programmi Ospite Prof Desktop I nomi di file e cartelle possono essere lunghi fino a 255 caratteri ma si consiglia di non superare i 15/20 caratteri ed in genere può essere utilizzato qualsiasi carattere del codice ASCII ad eccezione dei seguenti, che sono utilizzati per scopi speciali: Carattere Descrizione \ Separatore nei percorsi 5 Il file system fa riferimento al modo con il quale il sistema operativo organizza i file e le cartelle sui volumi. In passato si utilizzavano file system di tipo FAT e FAT32 mentre oggi, pur mantenendo la compatibilità e la possibilità di utilizzare i vecchi file system, Windows XP, Windows 2000 e Windows per SERVER utilizza il file system di tipo NTFS. Capitolo 4: Il sistema operativo Windows 155 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Carattere Descrizione / Precede opzione : Indicatore di unità *e? Caratteri jolly " Delimitatore <e> Reindirizzamento | Piping . Separatore tra nome ed estensione Il nome di un file è costituito da due parti: il nome e l’estensione del nome costituita, in genere, da tre caratteri e separata dal nome mediante un punto. L’estensione del nome fa riferimento al contenuto del file; Windows tende a nascondere le estensioni ed a sostituirle con icone. Ogni programma utilizza proprie estensioni per individuare i propri file, per cui oggi le possibili estensioni sono migliaia; queste alcune: Estensione Icona Descrizione .DOC Documento di Microsoft Word .XLS Foglio di calcolo Microsoft Excel .MDB Database Microsoft Access .PPT Presentazione Microsoft Power Point .PUB File di Microsoft Publisher .TXT File di testo .MP3, .Wav, .MPEG. .Mid File multimediale: audio/video e altre .BMP File bit mapped: mappa di bit (grafico, foto, etc.) Capitolo 4: Il sistema operativo Windows 156 L’Informatica per i miei studenti – Volume 1 Estensione Icona Prof. Bianco Mauro Descrizione .JPG Foto .DLL Dynamic Link Library: Estensioni di programma .INI File di inizializzazione Varie .EXE Programma .SYS File di sistema .COM Comando: obsoleti, vecchi programmi MS-DOS .DRV Driver di periferica Non noto Tutti i file non riconosciuti dal sistema L’estensione del nome, in pratica, dice al sistema come “trattare” il file ovvero quale programma deve essere avviato affinché il contenuto del file sia correttamente gestibile. Se, per esempio, cambiamo l’estensione di un file da Wav a Doc, lasciandone inalterato il contenuto, il sistema tratterà il file come documento e non come audio, per cui si riceve un messaggio di errore oppure il testo visualizzato è completamente incomprensibile. Per questo, mai cambiare l’estensione del nome del file. Spesso l’icona associata dipende dal programma che gestisce il file. Il tutto è molto semplice perché il sistema associa a ciascun file un programma che lo gestisce cosicché quando si apre un file all’elaborazione, il sistema esegue il corrispondente programma. Fate molta attenzione ai file .EXE, .DLL, .SYS scaricati da Internet perché possono contenere virus che determinano malfunzionamenti del sistema e, peggio, possono cancellare i dati. Non è questo il momento di affrontare il problema della sicurezza ma, come al solito, …………….. ne parleremo e come se ne parleremo!. Cosa è necessario, pertanto, per individuare un file? Innanzitutto il suo nome, ma non basta, occorre sapere anche il nome della cartella che lo contiene che, a sua volta, può essere contenuta in un’altra cartella e poi un’altra fino, manco a dirlo, al volume: Volume:\cartella\........\cartella\file detto percorso; così “c:\documents and setting\antonio\documenti\relazione.doc” individua il file relazione.doc contenuto nella cartella documenti di Antonio a sua volta in “documents and settings” sul disco, scusate, sul volume, C:. Avrete sicuramente notato il simbolo “\” (back slash) che separa i nomi di cartelle e file. Capitolo 4: Il sistema operativo Windows 157 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Siccome utilizzerete subito le cartelle condivise in rete6 (che disastro!!!! Ho nominato cartelle condivise e rete ma ……………. ne parleremo), ritengo opportuno fornire anche il seguente formato del percorso: \\nome Server\nome condivisione\cartella\........\cartella\file nel quale oltre al percorso di cui innanzi compare, preceduto da “\\” il nome di una macchina in rete e quello di una cartella condivisa. Il sistema operativo Windows indica con “.” e “..”, rispettivamente, la cartella corrente e la cartella superiore (padre o parent directory) della corrente. 4.3. Al lavoro: gestione di file e cartelle Le operazioni più ovvie sui file e le cartelle sono quelle di creazione, cancellazione, cambio nome, copia, spostamento, etc.; Windows mette a disposizione degli utilizzatori il programma esplora risorse avviabile con <start\tutti i programmi\accessori\esplora risorse> Appena avviato il programma, ci si presenta una finestra divisa in due parti: quella di sinistra mostra la struttura gerarchica delle risorse del computer mentre quella di destra evidenzia il contenuto della cartella corrente ovvero quella selezionata nella parte sinistra; vi dico in maniera esplicita che una sola può essere la cartella corrente. Per spiegare la funzionalità di esplora risorse, scelgo di utilizzare la seguente tabella, il cui titolo potrebbe essere come si fa per: come si fa per Selezionare un elemento Puntare e cliccare Selezionare più elementi (nella finestra di destra) • Tenere abbassato il tasto <CTRL> e cliccare sugli oggetti da selezionare; • Puntare e trascinare. Cancellare elemento/i selezionati • <Dx> \ Elimina • <File\Elimina> • Trascinare sul cestino • Barra degli strumenti 6 Una rete è costituita da un insieme di sistemi di elaborazione messi in comunicazione tra loro allo scopo di condividere risorse, per esempio cartelle (dette cartelle condivise), accessibili, così, dagli utenti della rete. Capitolo 4: Il sistema operativo Windows 158 L’Informatica per i miei studenti – Volume 1 Copiare file da una cartella ad un’altra Prof. Bianco Mauro 1. Selezionare 2. <Dx>\copia 3. Aprire destinazione 4. <Dx>\incolla Spostare file da una cartella ad un’altra 1. Selezionare 2. <Dx>\taglia 3. Aprire destinazione 4. <Dx>\incolla Cambiare la visualizzazione disposizione delle icone e la Per copiare o spostare file/cartelle è possibile utilizzare il trascinamento facendo attenzione alle seguenti regole: 1. Se le cartelle di origine e di destinazione sono sulla stessa unità o volume, allora il sistema sposta (taglia/incolla); 2. Se le cartelle di origine e di destinazione non sono sulla stessa unità o volume, allora il sistema copia (copia/incolla); 3. Se, durante il trascinamento, si tiene abbassato il tasto <CTRL> allora il sistema copia (copia/incolla). Vi suggerisco di provare l’utilizzo del tasto destro del mouse e dello scroll (rotellina centrale). Il pulsante destro del mouse consente l’accesso al menù contestuale ovvero dipendente dall’oggetto puntato; in particolare l’ultima voce del menù contestuale è quasi sempre proprietà e consente di visualizzare l’elenco delle caratteristiche dell’oggetto puntato. Molte delle operazioni riportate sono attivabili anche dalla barra dei menù. Capitolo 4: Il sistema operativo Windows 159 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 4.4. Utility cerca e caratteri jolly Come visto in precedenza, le cartelle consentono una pratica e logica archiviazione dei file; il vantaggio più immediato è la facilità con la quale, una buona organizzazione delle cartelle, consente, successivamente, una rapida individuazione dei file. Nell’arco di alcuni anni un qualsiasi utente crea, tra documenti, file audio e video, foto, etc., migliaia se non decine di migliaia di file. Dopo qualche tempo, una cattiva organizzazione, rende estremamente difficile l’individuazione di uno o più file che si rende necessario consultare o aprire all’elaborazione. A volte, anche in presenza di una buona organizzazione, individuare un file risulta difficile. Tutti i sistemi operativi mettono a disposizione dell’utente una serie di programmi detti programmi di utilità o semplicemente utility; Windows ci aiuta nella ricerca di uno o più file con l’utility “Cerca”: <Start>/<Cerca>. La ricerca di uno o più file può essere fatta specificando dove cercare e secondo una serie di criteri: il nome, la data di creazione, la dimensione, gli attributi, etc. . Non ritengo opportuno dilungarmi molto sulla descrizione di questo programma perché sarà sufficiente una mezz’ora in laboratorio per spiegarvi in maniera abbastanza completa il suo utilizzo; una semplice lezione pratica è molto più efficace di numerose pagine descrittive. Ritengo invece opportuno descrivere l’uso dei caratteri jolly: “*” e “?”. Il loro funzionamento è identico al jolly nel gioco del ramino o della “matta” nel più famoso gioco del 7½. Il carattere “?” è un jolly relativo ad una singola posizione mentre “*” è un jolly ripetitivo a partire dalla sua posizione; non sono stato molto chiaro e lo so ma con qualche semplice esempio comprenderete l’uso dei jolly. Quando si cerca un file è possibile specificarne una parte del nome, così, per esempio, se chiedo al sistema di cercare “rela”, mi vengono elencati tutti i file che cominciano con “rela”, come “relazione”, oppure contenenti la parola “rela”, come “correlazione”. Se, invece, voglio tutti i file comincianti con “rela” allora devo utilizzare la maschera di ricerca “rela*”; con “rela?”, invece, il sistema troverà tutti i file il cui nome comincia con “rela” ma avente lunghezza 5: “rela1”, “rela2”, “relaz”, etc., ma non “relazi”. L’uso del carattere jolly può essere utilizzato indipendentemente per il nome del file e/o la sua estensione. In effetti una stringa contenente i caratteri jolly è una cosiddetta maschera di ricerca ed il sistema, nel caso dell’utility cerca, elenca solo i file che combinano con tale maschera. Ritengo utile, per completare la trattazione, fornire esempi di maschere e relativi risultati: Capitolo 4: Il sistema operativo Windows 160 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Maschera di ricerca File individuati (esempi) rela Tutti i file con nomi comincianti o contenenti la parola “rela” ed estensione qualsiasi; rela* Tutti i file con nomi comincianti con la parola “rela” ed estensione qualsiasi; rela?? Rela12.doc, relazi.bmp; *.doc Tutti i file con estensione .doc; A*.do? Tutti i file il cui nome comincia con “A” ed estensione “do” seguita da un qualsiasi carattere (dos, doc, etc. ); *.* Indovinate un po’! Utilizzando l’utility cerca di Windows, vi renderete conto che il carattere jolly “?” funziona in maniera identica al jolly “*”; non è un mio errore ma Windows non rispetta il ruolo dei jolly. 4.5. Il cestino Il cestino è, in pratica, una cartella contenente i file cancellati. Il cestino ha lo scopo di evitare la cancellazione accidentale di file e cartelle. Quando si cancellano file e cartelle, essi vengono spostati nel cestino dal quale possono essere ripristinati, ovvero riportati nella loro posizione originaria o in un’altra cartella a scelta dell’utente mentre la cancellazione dal cestino elimina definitivamente file e cartelle selezionati. Per questo sul cestino è possibile utilizzare due nuove operazioni: il ripristino e lo svuotamento. L’operazione di ripristino riporta nelle posizioni originarie gli oggetti selezionati mentre lo svuotamento del cestino elimina definitivamente tutti gli oggetti in esso contenuti. Una possibilità molto comoda è quella di visualizzare gli oggetti presenti nel cestino per data di eliminazione. In genere il cestino non viene svuotato ma, all’occorrenza, si selezionano gli elementi da più tempo presenti nel cestino e li si elimina. Concludo con le proprietà del cestino accessibili mediante il pulsante Dx del mouse che consentono di: • assegnare la percentuale di spazio riservata al cestino e calcolata sulla capacità del disco; Capitolo 4: Il sistema operativo Windows 161 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro • disattivare la funzionalità del cestino 7; • richiedere o meno una conferma di cancellazione; • configurare i volumi in maniera indipendente. Le unità rimovibili, ad esempio floppy disk e usb disk, non hanno cestino, per cui una qualsiasi cancellazione è definitiva. 4.6. Collegamenti e associazioni Collegamenti e associazioni offrono all’utilizzatore una grande flessibilità. Abbiamo visto in precedenza come copiare un file o una cartella ma, molto spesso, invece di copiare è più utile “collegare” un’icona ad una cartella. Un collegamento è un riferimento ad un oggetto e si comporta come l’oggetto cui si riferisce. E’ la possibilità di disporre di un riferimento ad un oggetto in più punti all’interno del nostro sistema occupando pochissimo spazio. Sto dicendo, per esempio, che trascinando un file su un’icona che rappresenta un collegamento ad una cartella, questo viene spostato o copiato nella cartella cui il collegamento si riferisce. E’ possibile avere collegamenti a qualsiasi oggetto, per esempio una stampante o una unità oppure ad un programma. In genere molti collegamenti vengono aggiunti sul desktop, in modo da poter avere accesso rapido a tutti quegli oggetti che utilizziamo più spesso, ma un collegamento può essere inserito all’interno di qualsiasi cartella. Da notare che un collegamento è completamente differente da una copia dell’oggetto. La copia occupa lo stesso spazio dell’oggetto originale dal quale è completamente distinta mentre un collegamento, in pratica un file con estensione .LNK, occupa pochissimo spazio, in genere meno di 1 KB; se si cancella il collegamento o lo si rinomina o lo si sposta, l’oggetto originale non subisce alcuna modifica. Un collegamento può essere creato mediante il pulsante destro del mouse con copia e, quindi, incolla collegamento oppure mediante nuovo collegamento e sfogliando le risorse del computer per individuare l’oggetto da collegare. Il sistema può eseguire solo programmi, per esempio file con estensione .exe, ed allora nessuna azione dovrebbe essere eseguita quando si attiva, mediante un doppio click, un file di dati; per esperienza, però, sappiamo che quando si attiva un file .DOC, si avvia Microsoft WORD mentre per un .WAV si avvia un software per l’ascolto della musica. Tutto questo è comodo perché, per esempio, consente l’immediata gestione di un file di dati scaricato da Internet e non costringe l’utente ad avviare ogni volta il programma corretto per poter gestire un certo tipo di file. Tutto questo è possibile grazie alle associazioni tra le estensioni dei nomi di file, tipi di file, ed i programmi. E’ possibile visionare le associazioni, modificarle, aggiungerne di nuove o eliminarle mediante la voce di menù <Stumenti\opzioni cartella\tipi di 7 Attenzione: in questo caso le cancellazioni saranno definitive. Capitolo 4: Il sistema operativo Windows 162 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro file> in esplora risorse. Si sconsiglia di modificare le associazioni, a meno che non si è sicuri che un certo tipo di file possa essere correttamente gestito dal programma che gli stiamo associando. Un altro modo per poter associare un programma ad un file in maniera definitiva o momentanea, ovvero per una sola esecuzione, consiste nel puntare il file ed utilizzare la voce <apri con> accessibile dal menu contestuale al quale, come detto, si accede con il pulsante destro del mouse. Quando si attiva, mediante un doppio click, un file non associato ad alcuna applicazione, windows presenta l’elenco dei programmi installati nel sistema e ne impone una scelta; avviare, in questo caso, il programma sbagliato porta ad una cattiva o impossibile elaborazione del file. Ma chi crea le associazioni? Ho già detto che l’utente può modificare, creare o cancellare le associazioni, ma, in genere, qualsiasi installazione di un nuovo software crea nuove associazioni; per esempio, l’installazione di Microsoft WORD associa i file .DOC a WinWord.exe. 4.7. Navigare in Internet Lo scopo di questo paragrafo è riportare semplici suggerimenti per una corretta navigazione in Internet. Ritengo comunque opportuno dare almeno una prima semplice definizione di Internet: Internet è una rete geografica ovvero un insieme di sistemi di elaborazione comunque sparsi nel mondo e messi in comunicazione tra loro; l’argomento sarà approfondito in quinta quando parlerò in maniera approfondita delle reti di computer. Navigare in internet significa accedere alle pagine del WEB o WWW (World Wide WEB) pubblicate da aziende, enti, privati, etc. Queste pagine sono memorizzate su macchine SERVER raggiungibili mediante la rete telefonica mondiale. Le pagine sono organizzate in siti secondo la tecnica dell’ipertesto. Un sito è l’insieme delle pagine pubblicate da un qualsiasi soggetto, come detto prima azienda, ente, privato etc. Un ipertesto è un testo all’interno del quale compaiono riferimenti, detti link o puntatori, ad altre parti del testo; in effetti oggi si parla di Ipermedia perché le pagine WEB contengono anche animazioni, foto, musica, film e quant’altro. Un sito o una sua pagina è raggiungibile, ovvero visualizzabile dagli utenti del WEB, mediante la specifica dell’indirizzo detto URL (Unique Resource Locator); la pagina iniziale di un sito è detta Home page; è evidente, pertanto, che ogni sito ha un indirizzo univoco. Gli indirizzi hanno la forma: protocollo:\\indirizzo il protocollo, in genere http, è l’insieme delle regole per poter correttamente visualizzare le pagine mentre l’indirizzo univoco individua il sito o la pagina ed è organizzato in livelli. Capitolo 4: Il sistema operativo Windows 163 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Ad esempio, l’indirizzo del sito della nostra scuola è http://www.itcgbruno.it dove “itcgbruno” è stata scelto dalla scuola ed è pubblicato sul WWW come parte del dominio di primo livello it; questo suffisso, sempre presente negli indirizzi, indica il tipo di organizzazione detta authority che gestisce l’assegnazione degli URL. Nel nostro caso il sito della nostra scuola è stato assegnato dall’ authority italiana. I suffissi più utilizzati sono: Suffisso Descrizione Esempio .it www.itcgbruno.it Siti italiani .de, .fr... Siti tedeschi, francesi, etc. www.nutella.de .com Siti commerciali www.fiat.com .org Siti di organizzazioni www.fao.org .biz Siti commerciali www.netek.biz .edu Sito educativo (scuole, università, etc.) www.lib.lsu.edu .net Organizzazioni in rete www.campani.net .tv Siti TV www.la7.tv Così, per visitare un sito, occorre conoscerne l’indirizzo; a volte gli indirizzi sono piuttosto complessi e difficili da ricordare; per questo si hanno a disposizione i preferiti ed i motori di ricerca. I preferiti costituiscono l’elenco dei siti da noi più visitati e consentono di sostituire all’indirizzo un nome o riferimento mnemonico; sono gestibili mediante il menù preferiti, possono essere aggiunti mediante <preferiti\aggiungi a preferiti> e organizzati in cartelle (Preferiti/organizza preferiti); così possiamo richiedere la visualizzazione di un sito già visitato ed aggiunto ai preferiti semplicemente ricercandolo tra essi. Se si conosce l’indirizzo del sito da visitare, è sufficiente digitarlo nella barra degli indirizzi oppure se è stato inserito nei preferiti basta semplicemente selezionarlo nel relativo elenco; se, però, non si conosce l’indirizzo ma solo l’informazione che ci interessa, ad esempio auto usate, musica leggera, Garibaldi, etc., allora si utilizzano i motori di ricerca o lo strumento cerca. I motori di ricerca sono raggiungibili come qualsiasi altro sito; i più diffusi motori di ricerca sono www.google.it, www.virgilio.it, www.lycos.it, www.altavista.it, www.msn.it etc. . Per effettuare una ricerca basta digitare la/le parola/e cercata/e oppure una frase racchiusa tra apici (“fiat punto”). Per poter navigare bisogna disporre di un software di navigazione detto browser. Uno dei browser più diffusi è Internet Explorer della Microsoft del quale riporto la barra degli strumenti: Strumento Funzione Capitolo 4: Il sistema operativo Windows 164 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Ritorna alla pagina precedente; Ritorna alla pagina successiva; Termina l’operazione di scaricamento della pagina; utile, insieme al pulsante aggiorna, quando la pagina tarda ad essere visualizzata; Ricarica la pagina corrente richiedendone il suo re-invio al server; si utilizza quando la pagina non è visualizzata correttamente; Visualizza la pagina iniziale; è possibile cambiare la pagina iniziale, che è anche quella visualizzata all’avvio del browser, dal menù <strumenti\opzioni internet>; Avvia il motore di ricerca; Visualizza i preferiti; Visualizza la cronologia; la cronologia è l’elenco dei siti visitati nelle ultime settimane; Stampa la pagina visualizzata. 4.8. Utilità del sistema Un sistema operativo mette a disposizione dell’utilizzatore una serie di programmi di utilità, che svolgono le cosiddette operazioni ausiliarie all’elaborazione dei dati, quali copie di sicurezza, ottimizzazione delle risorse, individuazione di errori, aggiornamenti, ecc. Il sistema operativo Windows non si sottrae a questa regola, anzi fornisce all’utilizzatore anche alcuni semplici programmi applicativi quali il browser Internet Explorer per la navigazione in Internet, il gestore della posta elettronica outlook express, Windows Media Player quale lettore multimediale per file audio, CD, video, ecc., il programma di word processing WordPad, la calcolatrice, ecc.; di questi ultimi ritengo, ovviamente, di fare a meno di scrivere anche un sol rigo; se vi interessa, potete imparare da soli il loro funzionamento utilizzando la guida in linea. Sui programmi di utilità, invece, ritengo opportuno scrivere qualcosa, anche se potete tranquillamente utilizzare la loro guida in linea; per alcuni di essi, infatti, ritengo opportuno dare tutte quelle informazioni, in genere non comprese nella guida, Capitolo 4: Il sistema operativo Windows 165 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro che ne rendono più semplice la comprensione ed una conoscenza che non si ferma al mero utilizzo del software. 4.8.1. Scandisk Il programma di utilità scandisk consente di individuare e correggere errori logici e fisici sui supporti di memoria quali hard disk, floppy disk, ecc.; questa utility si avvia accedendo, mediante il pulsante destro del mouse, al menù contestuale del volume che si vuole controllare, quindi <proprietà/strumenti>: Scandisk individua e corregge errori logici causati da spegnimenti irregolari del sistema, cadute di alimentazione, errori del sistema operativo, ecc. Due dei problemi individuati e corretti da scandisk sono i riferimenti incrociati, ovvero due file allocati su uno o più cluster comuni, ed i cluster persi, ovvero che risultano occupati nella FAT ma nessun file punta ad essi. Nel primo caso la parte comune viene duplicata ed assegnata in maniera indipendente ai due file mentre nel secondo caso scandisk ripristina i cluster come spazio libero oppure crea dei file con nomi FILEn.chk, dove n parte da 0001 e si incrementa per ogni file creato; tali file vengono, in genere, registrati nella radice del volume controllato ed è a cura dell’utilizzatore verificarne il contenuto ed eventualmente procedere ad una loro cancellazione oppure ridenominazione. L’utente può decidere, di volta in volta, a quale correzione procedere oppure lasciare la decisione al sistema. Lo scandisk approfondito consente di verificare la bontà della superficie dei dischi magnetici ed è avviato solo se richiesto dall’utente; si tratta di un’operazione che richiede un tempo piuttosto alto e, in caso di rilevamento di errori fisici su uno o più settori, il sistema tenta un recupero dei dati allocati su di essi ed eventualmente li copia in una zona non difettosa; i settori risultati danneggiati vengono “marcati” come guasti e non più utilizzati dal sistema. Capitolo 4: Il sistema operativo Windows 166 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Vi consiglio di utilizzare raramente il controllo approfondito e, comunque, sempre nei casi in cui si ricevano informazioni su errori di I/O, lettura/scrittura, su disco; nel caso in cui vengano individuati uno o più settori difettosi, vi consiglio di ripetere l’operazione dopo qualche giorno e, se il sistema continua a trovare nuovi settori difettosi, è opportuno procedere alla sostituzione del disco. Il sistema operativo, in genere, esegue uno scandisk automatico all’avvio, quando rileva errori logici in lettura/scrittura o quando lo spegnimento non avviene in modo corretto. E’ ormai chiara l’importanza che rivestono le memorie di massa nell’ambito di un sistema di elaborazione; un guasto al disco rigido comporta, quasi sempre, la perdita dei dati; è possibile recuperare i dati, o parte di essi, da un disco danneggiato rivolgendosi ad aziende specializzate, ma il costo di tale operazione è, in genere, molto alto e a volte proibitivo per le economie di chi ha perso i dati. Da alcuni anni la tecnologia SMART, Self-Monitoring, Analysis, Reporting Technology, consente di predire un possibile guasto al disco rigido e di avvisare l’utilizzatore che, così, può procedere alla sua sostituzione, prima che si guasti definitivamente, con conseguente perdita dei dati. La tecnologia SMART coinvolge, ovviamente, i dischi rigidi, il BIOS del sistema ed il sistema operativo; quando le prestazioni del disco degradano, perché le operazioni di lettura/scrittura avvengono con tempi pù alti o comunque con difficoltà, il firmware del disco rigido avverte il BIOS di un possibile deterioramento delle superfici del disco e, quindi, un messaggio viene inviato all’utente che, ovviamente, provvede alla sostituzione del disco. 4.8.2. Defrag La frammentazione è l’allocazione non contigua dei file sulle memorie di massa; la frammentazione, aumentando gli spostamenti della testina sui dischi rigidi e, quindi, il tempo di posizionamento durante la lettura dei dati da un file frammentato, rallenta le prestazioni del sistema. Defrag elimina la frammentazione riscrivendo, in pratica, l’intero disco in modo tale che tutti i file siano allocati in maniera fisicamente contigua e che lo spazio libero sia tutto alla fine del volume. Prima di avviare l’operazione, è possibile analizzare il volume per verificare l’opportunità di procedere alla deframmentazione, che richiede molto tempo ed anche qualche raro rischio di perdita dati dovuta ad eventuali interruzioni accidentali; per questo vi consiglio di eseguire questa operazione raramente e solo in casi di necessità. L’operazione di deframmentazione può essere avviata come già descritto per lo scandisk oppure da <Start/Tutti i programmi/Accessori/Utilità del sistema/Utilità di deframmentazione dischi>. Capitolo 4: Il sistema operativo Windows 167 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 4.8.3. Backup Ormai abbiamo già perfettamente capito la grande importanza dei dati, per cui essi vanno protetti da qualsiasi causa che ne possa determinare la perdita totale o parziale. Anche i PC di casa contengono dati importanti: si pensi alle foto o alla musica oltre che ai documenti; ebbene sempre è opportuno copiare, a scopi precauzionali, i dati su supporti esterni, dai quali eventualmente ripristinarli in caso di necessità. Potete copiare i dati semplicemente utilizzando esplora risorse e le operazioni di Copia/Incolla, ma le copie vanno effettuate con cadenza giornaliera e non è possibile procedere ogni giorno alla copia completa del disco rigido perché richiederebbe troppo tempo. Per poter effettuare copie giornaliere senza impiegare un tempo eccessivo, è necessario utilizzare un programma specifico opportunamente pianificato, ovvero in grado di procedere alla copia ad intervalli di tempo regolari e senza intervento dell’operatore. Anche se disponiamo di un RAID è opportuno procedere alla copia su supporti esterni per evitare i rischi derivanti, per esempio, da furti o incendi. Per poter comprendere la pianificazione del backup, occorre parlare degli attributi dei file; i file possono avere uno o più attributi o proprietà; in effetti, con riferimento al backup, l’unico attributo che interessa è quello di archivio, ma ritengo opportuno riportare tutti gli attributi dei file: ¾ A - Archive: l’attributo di archivio viene assegnato automaticamente ad un file quando subisce una modifica; ¾ H – Hidden: un file con l’attributo di nascosto non viene riportato nell’elenco del contenuto di una cartella; è possibile modificare le impostazioni in modo da poterli vedere da gestione risorse in <Strumenti/Opzioni/Visualizzazione/visualizza file e cartelle nascosti>; ¾ S - System: un file con l’attributo di sistema è nascosto e non può essere cancellato; è possibile modificare le impostazioni in modo da poterli vedere da gestione risorse in <Strumenti/Opzioni/Visualizzazione/nascondi i file protetti di sistema>; ¾ R – Read: i file con attributo di sola lettura non possono essere modificati e cancellati solo mediante apposita conferma. L’operazione di backup consente di selezionare i file da copiare: è possibile selezionare da un singolo file ad un intero volume o, addirittura, più volumi, anche su sistemi accessibili attraverso i servizi di rete. Una volta selezionati i file da copiare, è possibile scegliere tra i seguenti tipi di backup: ¾ Completo o normale: vengono copiati tutti i file selezionati, quelli con e senza l’attributo di archivio; l’attributo di archivio viene tolto; Capitolo 4: Il sistema operativo Windows 168 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro ¾ Differenziale: vengono copiati solo i file selezionati che hanno l’attributo di archivio; l’attributo di archivio non viene tolto, per cui questi file saranno di nuovo copiati dal successivo differenziale; ¾ Incrementale: vengono copiati solo i file selezionati che hanno l’attributo di archivio; l’attributo di archivio viene tolto, per cui questi file non saranno di nuovo copiati dal successivo incrementale; ¾ Giornaliero: vengono copiati tutti i file selezionati e modificati nel giorno in cui avviene la copia; si tratta di un backup che comporta qualche rischio se non viene eseguito tutti i giorni; ¾ Copia: vengono copiati tutti i file selezionati, quelli con e senza l’attributo di archivio; l’attributo di archivio non viene tolto; si tratta di una copia extra pianificazione perché non interferisce con quelli pianificati. Una pianificazione delle copie di backup deve prevedere un backup completo, per esempio mensile, e un differenziale giornaliero oppure un backup completo ed un incrementale giornaliero. L’operazione inversa, che, a causa di una perdita accidentale, riporta i dati dai supporti esterni, sui quali è avvenuta a suo tempo la copia, al disco rigido, è detta restore o ripristino. Con il differenziale è possibile ripristinare i dati, in caso di necessità, disponendo del completo e dell’ultimo differenziale, mentre con l’incrementale ho bisogno, come è facile intuire, di tutti gli incrementali e, ovviamente, del completo; a questo svantaggio, l’incrementale offre il vantaggio di essere più veloce perché copia i file copiati in precedenza solo se questi hanno subito una modifica; il differenziale, invece, aumenta di giorno in giorno il numero di file copiati, perché copia tutti i precedenti più quelli che subiscono modifiche. Il restore corretto, disponendo di un completo e più incrementali, deve procedere ripristinando il completo seguito da tutti gli incrementali nell’ordine con il quale, a suo tempo, sono stati realizzati; per questo motivo è necessario numerare i supporti esterni multipli utilizzati per le copie incrementali. Il differenziale e tutti gli incrementali non sono più necessari quando si procede ad una nuova copia completa. Capitolo 4: Il sistema operativo Windows 169 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro Capitolo 1. Informazione ed informatica ................................................................. 7 1.1. Informazione e … .....................................................................................................................7 1.2. Rappresentazione dell’informazione.......................................................................................10 1.2.1. Generalità .............................................................................................................................10 1.2.2. Rappresentazioni numeriche ................................................................................................11 1.2.2.1. Le quattro operazioni binarie ............................................................................................16 1.2.2.2. Fixed e Floating point .......................................................................................................18 1.2.3. Rappresentazione alfanumeriche .........................................................................................22 1.2.3.1. La codifica UNICODE......................................................................................................28 1.2.4. Rappresentazioni numeriche Packed e Zoned .....................................................................29 1.2.5. Rappresentazioni numeriche: Confronto .............................................................................29 1.3. Conclusioni .............................................................................................................................30 1.4. Esercizi....................................................................................................................................32 Capitolo 2. Algoritmi e approccio alla programmazione ..................................... 34 2.1. Definizione e proprietà............................................................................................................34 2.2. Rappresentazione ....................................................................................................................35 2.3. Formati, variabili e costanti, espressioni.................................................................................37 2.3.1. Approfondimento: dichiarazione di costanti........................................................................43 2.4. Iterazione o ciclo.....................................................................................................................44 2.5. Si fa sul serio...........................................................................................................................49 2.5.1. Programmazione strutturata .................................................................................................49 2.5.2. Modularità............................................................................................................................52 2.5.3. Complessità di tempo ed utilizzo dello switch ....................................................................54 2.5.4. Modalità di risoluzione degli esercizi ..................................................................................59 2.6. Il primo compito in classe.......................................................................................................60 2.6.1. Fila sinistra...........................................................................................................................60 2.6.1.1. Esercizio 1.........................................................................................................................60 2.6.1.2. Esercizio 2.........................................................................................................................63 2.6.1.3. Esercizio 3.........................................................................................................................65 2.6.2. Fila destra.............................................................................................................................67 2.6.2.1. Esercizio 1.........................................................................................................................67 2.6.2.2. Esercizio 2.........................................................................................................................70 2.6.2.3. Esercizio 3.........................................................................................................................72 2.7. Operatori logici .......................................................................................................................74 2.8. Array: Vettori e matrici...........................................................................................................77 2.8.1. Esempi di programmazione .................................................................................................78 2.8.2. Ordinamento di vettori .........................................................................................................81 2.8.3. Ricerca binaria. ....................................................................................................................82 2.9. Sottoprogrammi ......................................................................................................................82 2.9.1. Ricorsività ............................................................................................................................88 2.10. Programmazione modulare: esempio....................................................................................88 2.11. Un po’ di filosofia: la tesi di Church.....................................................................................90 2.12. Esercizi..................................................................................................................................90 Capitolo 3. Hardware............................................................................................... 99 3.1. Sistemi, automi, processi e modelli ........................................................................................99 3.2. Sistema di elaborazione ........................................................................................................101 3.3. La macchina di Von Neumann..............................................................................................101 3.4. I moderni sistemi di elaborazione .........................................................................................102 Indice 170 L’Informatica per i miei studenti – Volume 1 Prof. Bianco Mauro 3.4.1. BUS....................................................................................................................................103 3.4.2. CPU....................................................................................................................................104 3.4.3. RAM ..................................................................................................................................109 3.4.4. ROM – Read Only Memory ..............................................................................................110 3.4.5. Interfacce............................................................................................................................111 3.4.6. DMA ..................................................................................................................................119 3.4.7. Main Board ........................................................................................................................119 3.4.8. Dispositivi periferici ..........................................................................................................122 3.4.8.1. Tastiera e mouse..............................................................................................................123 3.4.8.2. Monitor ...........................................................................................................................123 3.4.8.3. Videoterminali ................................................................................................................124 3.4.8.4. Stampanti e Plotter ..........................................................................................................125 3.4.8.5. Scanner............................................................................................................................127 3.4.8.6. Multifunzione..................................................................................................................127 3.4.8.7. Fotocamere e videocamere digitali .................................................................................128 3.4.8.8. Memorie di massa ...........................................................................................................128 3.4.8.8.1. Dischi magnetici ......................................................................................................129 3.4.8.8.2. Floppy Disk..............................................................................................................131 3.4.8.8.3. CD e DVD................................................................................................................132 3.4.8.8.4. Nastri magnetici .......................................................................................................134 3.4.8.8.5. Pen Disk, MP3, foto album......................................................................................135 3.4.8.8.6. Confronto tra le memorie di massa ..........................................................................135 3.4.8.9. Gruppi di continuità (UPS) .............................................................................................136 3.4.8.10. Videoproiettore e tavoletta grafica................................................................................137 3.4.8.11. Schede tecniche.............................................................................................................138 3.4.9. Classificazione dei sistemi di elaborazione .......................................................................150 3.5. Conclusioni ...........................................................................................................................152 Capitolo 4. ............................................................................................................... 153 Il sistema operativo Windows ................................................................................ 153 4.1. Generalità ..............................................................................................................................153 4.2. File, cartelle, volumi e unità..................................................................................................153 4.3. Al lavoro: gestione di file e cartelle ......................................................................................158 4.4. Utility cerca e caratteri jolly ................................................................................................160 4.5. Il cestino................................................................................................................................161 4.6. Collegamenti e associazioni..................................................................................................162 4.7. Navigare in Internet ..............................................................................................................163 4.8. Utilità del sistema..................................................................................................................165 4.8.1. Scandisk .............................................................................................................................166 4.8.2. Defrag.................................................................................................................................167 4.8.3. Backup ...............................................................................................................................168 Indice 171