Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima...

119
10/09/2018 Liceo delle Scienze Applicate Informatica Classe prima Fondamenti Argomenti: Introduzione Hardware e Software Sistemi di numerazione Memorizzazione delle informazioni Il Foglio Elettronico La formattazione condizionale Introduzione agli Algoritmi Appendice

Transcript of Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima...

Page 1: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

10/09/2018

Liceo delle Scienze Applicate

Informatica

Classe prima

Fondamenti

Argomenti:

Introduzione

Hardware e Software

Sistemi di numerazione

Memorizzazione delle informazioni

Il Foglio Elettronico

La formattazione condizionale

Introduzione agli Algoritmi

Appendice

Page 2: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Argomenti Hardware e Software

Page 3: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Cos’è (e cosa non è) l’Informatica

Per iniziare il nostro corso, sarà opportuno illustrarne gli obiettivi e chiarire le idee sui concetti di base

dell’informatica, a proposito dei quali circolano parecchie informazioni errate.

Intanto, nessun corso di informatica si occupa di:

Videogiochi

Messaggi

Social networks

Queste attività, contrariamente a quanto molti ritengono, non sono “alta tecnologia” e NON rendono chi le

pratica un esperto di informatica. Servono piuttosto a usare come giocattolo una macchina di grande

complessità in grado di risolvere problemi in molti settori della conoscenza umana.

Alcuni esempi di cosa fanno veramente i computer:

I computer industriali manovrano

automatismi in grado di costruire

di tutto, dalle manette alle

automobili, e anche altri computer.

I computer scientifici analizzano i

dati delle particelle ad alta energia

nei laboratori del CERN a

Ginevra, o analizzano la struttura

dell’universo negli osservatori

astronomici.

L’economia mondiale potrà

piacere o no, comunque è gestita

attraverso i computer.

Anche se negli anni ’60 erano

meno potenti di un moderno

smartphone, i computer hanno

mandato l’uomo nello spazio.

L’unico “spazio” con cui questi

individui hanno avuto a che fare è

quello che hanno creato nel

portafoglio per acquistare costosi

giocattoli. E sono pure contenti…

Per tornare all’obiettivo iniziale, questo:

NON è un corso per imparare a scrivere testi e documenti;

NON è un corso di tecnologia;

È un corso orientato alla risoluzione di problemi scientifici con l’uso del computer.

Page 4: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Definizioni

Informazione

Sequenza di simboli che registra e consente di trasmettere un concetto.

Scienza dell’Informazione

Si occupa della gestione generale dell’informazione: raccolta, classificazione, analisi, memorizzazione,

manipolazione, cancellazione, reperimento e disseminazione (la raccolta avviene prima di memorizzare; il

reperimento riguarda le informazioni già memorizzate).

N.B. Questo vale in ogni sua forma: scritta (anche manualmente), grafica, orale…

Formato

Come è memorizzato un gruppo di informazioni. A volte (in stampa o su uno schermo) può coincidere con il

loro aspetto visivo. Altre volte segue una codifica: ad esempio, il codice ASCII1 per la lettera A è 65, mentre

quello per la lettera a è 97; in realtà c’è anche una seconda codifica, perché nella memoria di un computer i

valori sono rispettivamente 01000001 e 01100001. Il numero 485 può essere, a seconda dei casi,

memorizzato come 001101000011100000110101 oppure 00000000000000000000000111100101.

Le informazioni possono essere di formato misto, solitamente per rendere più comprensibile il concetto

memorizzato. L’esempio è preso dal regolamento federale del gioco del calcio, dove le immagini vengono

accompagnate alle spiegazioni, al fine di chiarire meglio le situazioni.

Le informazioni sono utili quando possono essere condivise (disseminazione):

Comunicazione

Processo di trasmissione di informazioni tra un mittente e uno o più destinatari.

Messaggio

Contenuto di una comunicazione.

Protocollo

Insieme di regole definite al fine di regolare la comunicazione tra uno o più entità. Tra le varie cose che

descrivono, c’è il formato che determinate informazioni devono avere. Nel caso delle reti di computer, ci

sono anche tutte le caratteristiche del tipo di segnale trasmesso.

1 American Standard Code for Information Interchange, uno dei più usati metodi di codifica delle informazioni.

A picture is worth a thousand words

http://www.aia-figc.it/download

Page 5: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Informatica (da: informazione automatica) – Computer science (CS) – Information Technology (IT)

Studio dei fondamenti teorici della gestione dell’informazione e delle tecniche pratiche per la sua

applicazione in sistemi automatizzati (computer).

L’informatica NON è da confondere con l’uso di software applicativo, come: programmi per l’ufficio,

navigazione Web, videogiochi, condivisione di immagini. L’uso è un aspetto marginale, non è tutto, anche se

è abbastanza naturale che un esperto di informatica sia in grado di usare bene alcuni programmi.

Uno dei maestri dell’informatica, Edsger Dijkstra (1930-2002), ha spiegato chiaramente il

concetto:

Computer science is no more about computers than astronomy is about telescopes

(L'informatica non riguarda i computer più di quanto l'astronomia riguardi i telescopi)

Questo significa che il computer è un mezzo, non un fine. L’informatica è uno studio

completo dell’informazione e degli strumenti teorici e pratici per la sua gestione. Gli aspetti

tecnici (riguardanti computer e dispositivi associati) sono il supporto per conoscere le caratteristiche generali

dello strumento informatico più diffuso, ma non sono tutto. Quindi: “informatica” NON è il solo studio dei

Personal Computer. Inoltre non è molte cose: NON è “abilità nell’usare il Personal Computer”, NON è

“postare immagini”, NON è “usare giocattoli tecnologici”, Chi si ritiene “esperto” perché sa fare queste cose

non ha la minima idea di cosa stia dicendo.

Programma

Sequenza di istruzioni per fare svolgere determinate azioni a un computer. Spesso si tratta di comandi che

sembrano rivolti ad una persona.

Linguaggio di Programmazione

Linguaggio artificiale progettato per comandare le azioni di un computer. Queste operazioni possono essere

di calcolo o di I/O (input/output: servono per comunicare dati e ottenere risultati).

Programmatore

Chi scrive programmi (vedi a fianco). Contrariamente a quanto molti pensano, un

programmatore non vi aggiusterà una stampante o un dispositivo guasto, compito

estraneo alle sue conoscenze.

Sigle utili

GIGO – Garbage In, Garbage Out

Se i dati forniti al computer non hanno senso, nemmeno le risposte ne avranno.

KISS – Keep It Simple, Stupid

Fare le cose in modo semplice: il facile è reso difficile attraverso l’inutile.

RTFM – Read The F***ing Manual

Prima (di fare domande inutili), leggi le istruzioni.

GIYF – Google Is Your Friend

Vallo a cercare su Google.

Saggezza informatica

“I computer sono inutili, possono dare solo risposte” (Pablo Picasso)

“It is the greatest truth of our age: Information is not knowledge” (Caleb Carr)

“I have only one major problem with the Internet: it’s full of liars” (John Lydon/Johnny Rotten)

Simoniy Kàroly (60)

Page 6: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Introduzione Numeri

Page 7: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Come è nato il computer

Hardware: le parti di un computer che puoi prendere a calci;

Software: le parti di un computer che non funzionano.

Più seriamente, lo hardware (=ferramenta) sono i componenti fisici, che si possono toccare; il software sono

i programmi, che sono registrati in qualche unità di computer, ma non sono materiali.

I Greci (ma non solo) erano stati in grado di produrre numerosi congegni, tra i quali un vero e proprio

distributore automatico, come fece (probabilmente nel I secolo A.C.) un certo Erone di Alessandria: egli

costruì un congegno azionato da una moneta che, cadendo su una leva, apriva una valvola che faceva uscire

l’acqua per le cerimonie sacre.

Per quanto riguarda il calcolo, invece, non si andò oltre l’abaco, anche se i Romani lo usavano con tecniche

molto sofisticate. Ancora oggi, in paesi come India e Giappone, l’abaco viene usato comunemente, e c’è chi

riesce a visualizzarlo nella mente senza averne uno disponibile. Ci sono filmati (leggermente inquietanti) che

mostrano alcuni studenti particolarmente abili:

https://www.youtube.com/watch?v=hepU-W8ksEk https://www.youtube.com/watch?v=FgFEckm-rRA

La matematica europea, trascurata durante l’Alto Medioevo, iniziò la sua storia quando, intorno al 1200, un

giovane commerciante, Leonardo da Pisa (detto il Fibonacci), fece conoscere un sistema di cifre inventato

alcuni secoli prima in India, e adottato dagli Arabi, presso i quali Leonardo aveva studiato e lavorato.

La nuova aritmetica, presto furono applicate alla

contabilità e alla finanza2, aumentando la

quantità di calcoli: presto qualcuno iniziò a

pensare a macchine che potessero svolgerli al

posto dell’uomo, senza sviste o stanchezza che

portassero ad errori. Una delle prime calcolatrici

meccaniche, presente in ogni storia del calcolo

automatico, è la “pascalina”, progettata da Blaise

Pascal (1623-1662), che sostanzialmente è il

disegno con il quale funzionarono per secoli i

registratori di cassa, quelli a manovella che si vedono nei vecchi film, ma anche

quelli elettrici. In realtà la prima macchina calcolatrice conosciuta fu costruita

da Wilhelm Schickard nel 1623. Assomiglia in modo impressionante ai primi modelli di computer.

Il primo concetto di “macchina calcolatrice” (nel senso moderno di “calcolo automatico”) è probabilmente

quello di Charles Babbage, che inizialmente intendeva usarla per il calcolo di tavole logaritmiche, e poi ne

discusse i possibili usi per ogni genere di calcolo. Babbage

non costruì mai la sua “macchina analitica”, ma ispirò altri

inventori, in particolare alcuni svedesi: dapprima Pehr e

Edvard Scheutz (padre e figlio) costruirono una macchina

simile (1843), seguiti poi da Martin

Wiberg (1875). Il progetto di Babbage

aveva molti elementi dei computer

moderni: lettore di schede perforate,

memoria, unità centrale, registri di calcolo.

Un’amica dell’inventore, Ada Lovelace3,

pensò anche ad un linguaggio con cui programmare la macchina (ed è per questo considerata

da alcuni la prima programmatrice della storia). Nel 1991, bicentenario della nascita di Babbage, alcuni

tecnici del London Science Museum costruìrono una versione funzionante del suo Analytical Engine,

rispettandone il progetto originale e usando solo materiali e tecnologia disponibili ai suoi tempi.

2 Lo stesso Fibonacci, a suo dire, scrisse il proprio trattato più famoso (il Liber Abbaci, che tratta di matematica e di

economia) per aiutare il padre, commerciante e funzionario doganale della repubblica pisana. 3 Nata Augusta Ada Byron, figlia del celebre poeta George. È passata alla storia come the Enchantress of Numbers.

Pascalina e altre diavolerie

Babbage e la macchina costruita nel 1991

Il disegno di Schickard

Page 8: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Intorno all’inizio del XX secolo esistevano già i “computer”.

Proprio così: ma non erano quelli che conosciamo noi.

Erano persone (per lo più donne, pagate anche poco) che

eseguivano calcoli, generalmente a macchina, ma anche a

mano. Sempre al London Science Museum c’è la foto di una

campionessa di calcolo, Amy Bower, descritta come

compter, oltre che come “la più veloce operatrice del

mondo”, avendo vinto una gara organizzata dalla ditta Felt

& Tarrant, costruttrice di macchine da calcolo. C’è anche il

tempo: 3'50" (non si sa per quante addizioni).

Nei laboratori di astronomia le “computer” avevano anche il compito di esaminare le lastre fotografiche e di

contare le stelle. Queste ragazze, sempre sottopagate, furono indispensabili durante l’esplorazione

dell’universo attraverso i primi grandi telescopi. La più famosa fu Henrietta Swan Leavitt, che divenne poi

un’astronoma di prestigio.

Normalmente, grandi aziende, banche e uffici pubblici avevano saloni pieni di macchine contabili e

macchine da scrivere, con una schiera di operatrici (e anche qualche operatore). L’immagine a destra,

scattata nella redazione di un giornale, è degna di nota per la presenza della sputacchiera.

Henrietta Swan Leavitt Tipiche immagini di operatrici al lavoro

Page 9: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

I pionieri moderni

È molto difficile proporre una cronologia accurata dello sviluppo dei

computer, anche perché alcuni Paesi si contendono le priorità per questioni

di orgoglio nazionale. Un personaggio molto rimarchevole, comunque,

appare quello del tedesco Konrad Zuse: quasi da solo costruì un computer

elettro-meccanico (Z1) fino dagli anni ’20, per arrivare, attorno al 1941, a

costruirne uno commerciale (Z4). La sua impresa è ancora più degna di nota

se si pensa alle difficili condizioni della Germania in guerra. Zuse progettò

anche uno dei primi linguaggi di programmazione, chiamato Plankalkül.

Il primo calcolatore digitale totalmente elettronico fu una macchina

chiamata ABC (Atanasoff-Berry Computer), non programmabile, costruita

per risolvere sistemi di equazioni (1942). Fu poi

smantellato durante la guerra, e non ebbe un seguito.

Sempre durante la II guerra mondiale, i servizi segreti

inglesi avevano il compito di decifrare i messaggi in

codice che i tedeschi componevano tramite una macchina

chiamata Enigma. Un gruppo di scienziati, tra cui il

“pioniere informatico” Alan Turing, nascosto in una

palazzina a Bletchley Park (a nord-ovest di Londra), vi

riuscì, proseguendo il lavoro di alcuni crittografi polacchi

e usando una macchina chiamata Bombe. Negli anni finali della guerra, i tedeschi usavano un’altra

macchina, chiamata Lorenz-Schlüsselmaschine; per decifrare quei messaggi gli inglesi costruirono dei

computer segretissimi, chiamati Colossus (10 in tutto), talmente segreti che furono distrutti dopo la guerra e

se ne ebbe notizia circa 50 anni dopo. Il Colossus fu il primo elaboratore elettronico programmabile.

Gli americani, intanto, non stavano a guardare: il loro ENIAC (Electronic Numeric Integrator And Computer,

progettato da John Eckert e John Mauchly), che serviva a calcolare le tabelle di puntamento dei cannoni, fu il

primo calcolatore elettronico programmabile, anche se questo non significava scrivere comandi, ma

riconnettere con nuovi schemi una serie di cavi. Rispetto al modello di Atanasoff, questo computer venne

usato estensivamente e diede origine ad altri modelli, chiamati UNIVAC (UNIVersal Automatic Computer).

La priorità di Atanasoff venne riconosciuta solo nel 1973: il giudice Earl Larson (tribunale del Minnesota)

concluse che “Eckert and Mauchly did not themselves first invent the automatic electronic digital computer,

but instead derived that subject matter from one Dr. John Vincent Atanasoff”.

Konrad Zuse con lo Z1

John Atanasoff, Clifford Berry (USA) e l’ABC

Le macchine tedesche: Enigma e Lorenz Turing Bombe Dorothy Du Boisson e Elsie Booker

al Colossus

Dentro l’ENIAC si poteva

passeggiare

Gloria Ruth Gordon e Esther Gerston

riconnettono i cavi UNIVAC

Page 10: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Di nuovo in Inghilterra, un team dell’Università di Cambridge, guidato da Maurice Wilkes, costruì, nel 1949,

un computer chiamato EDSAC (Electronic Delay Storage Automatic Calculator). Il progetto proseguì con

l’aiuto dalla Lyons, un’industria dolciaria che fece costruire una macchina simile, chiamata LEO (Lyons

Electronic Office), probabilmente il primo computer usato per applicazioni commerciali.

Anche il primo calcolatore distribuito commercialmente fu inglese, e dentro c’era un po’ di Italia: il Ferranti

Mark-1 (1951) era costruito da una ditta di Manchester (scomparsa nel 1993), fondata da Sebastian Ferranti,

figlio di un italiano, Cesare. La Ferranti ha un legame con l’oggi: due suoi programmatori, Conway Berners-

Lee e Mary Lee Woods, si sposarono, e il loro figlio, Tim Berners-Lee, avrebbe inventato, una quarantina

d’ani più tardi, il World Wide Web.

Nascevano anche i primi linguaggi di programmazione: uno dei primi venne chiamato George, e fu

sviluppato nel 1952 da J.Halcombe Laning per inserire equazioni in un computer del MIT, Whirlwind

(Tempesta); tra il 1953 e il 1959 ne nacquero altri, tra i quali FLOW-MATIC, FORTRAN,

COBOL. Difficile stabilire una priorità, ma i più probabili candidati come “primo

linguaggio” sono il Plankalkül di Zuse e lo Short Code, sviluppato da John Mauchly per

l’UNIVAC negli anni ‘40.

Tra un modello e l’altro di computer, sempre più piccoli, ma ancora grandi come armadi,

alla fine degli anni ‘60 resisteva ancora uno strumento manuale, il “regolo calcolatore”

(slide rule).

Le prime calcolatrici tascabili furono costruite in Giappone nel 1970, e mandarono presto in pensione il

regolo. Negli anni ’80 una ditta di detersivi regalava calcolatrici tascabili come gadget nei fustini di detersivo

per lavatrice. Fece poi storia in Italia un convertitore lira-euro distribuito dal governo in carica al momento

della transizione tra le due valute (2001).

Immagini del Ferranti Mark 1

EDSAC LEO Lyons

Regolo calcolatore Calcolo di 2 x 3 = 6

Page 11: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Il Personal Computer

Per molti il PC è un’invenzione americana, ma non è stato così: nella sua storia c’è anche un po’

di Italia. Intorno al 1962 un ingegnere della Olivetti, Piergiorgio Perotto (1930-2002), progettò

una macchina programmabile che per molti versi era un prototipo di PC. Le parole di Perotto, con

qualche piccola variazione dovuta alla moderna tecnologia, potrebbero sembrare scritte ora:

“Sognavo una macchina amichevole alla quale

delegare quelle operazioni che sono causa di fatica

mentale e di errori, una macchina che sapesse

imparare e poi eseguire docilmente, che

immagazzinasse dati e istruzioni semplici e

intuitive, il cui uso fosse alla portata di tutti, che

costasse poco e fosse delle dimensioni degli altri

prodotti per ufficio ai quali la gente era abituata.

Dovevo creare un linguaggio nuovo, che non

avesse bisogno dell'interprete in camice bianco“.

La Programma 101 (proprio così, al femminile) ebbe un discreto successo, fu venduta in 40.000 esemplari,

conquistò il mercato americano, e persino la Nasa acquistò alcuni modelli4. Ma i vertici di Ivrea non seppero

cogliere l’occasione, abbandonando la divisione elettronica (venduta agli americani della General Electric)

per concentrarsi sulle calcolatrici da tavolo. Non sembrava realizzabile l’idea di un computer per tutti,

lontano dall’idea del “Centro di Calcolo” (o “Centro Meccanografico” come si diceva allora) con tecnici in

camice bianco chiusi in asettiche sale sigillate.

Anche il microprocessore è un’invenzione italiana, dovuta

al vicentino Federico Faggin (1941-), guarda caso un ex

impiegato Olivetti. Il microprocessore riunisce tutta

l’unità centrale in un unico componente. Questo avrebbe

permesso, nel giro di pochi anni, la

costruzione di piastre madri modulari.

Il moderno PC nasce nel 1981, con

l’uscita del PC IBM. Prima di allora il

mondo informatico viaggiava con strani modelli con ancora più strani sistemi operativi.

Una volta entrato in campo la ditta più ricca e potente, tutto cambia, e nasce uno standard, che comprende

anche il sistema operativo (Microsoft DOS, seguito poi da Windows).

Non è l’hardware migliore? Non è il software migliore? Forse, o

forse no. Ma le cose vanno spesso così. Lo standard ha reso

possibile la compatibilità dei dispositivi e del software. Solo con

dei modelli comuni è possibile sviluppare un’industria globale e

specializzata: in caso contrario non sarebbe possibile avere

contributi coordinati da personaggi indipendenti, sparsi in tutto il mondo.

Attualmente, tuttavia, il mondo del PC non vede uno standard solo ma tre, ciascuno con i propri sostenitori,

eroi e simboli: tra tostapane, mele e pinguini, ciascuno è in grado di scegliere la propria dimensione.

Un’ultima considerazione: a volte la storia non insegna. Anni

dopo la mancata rivoluzione della Programma 101, la stessa

Olivetti era rientrata nel mondo dei PC con macchine come il

P6060, arrivando all’ottimo M24 (1983). Un’altra occasione

d’oro: ma ancora una volta l’azienda smantellò la divisione

d’avanguardia, entrando poi in un lungo periodo di crisi. Al

momento fa parte del gruppo Telecom Italia.

4 L’ex dirigente NASA David Whittle racconta che la Programma 101 fu usata nel progetto Apollo che arrivò a sbarcare

sulla Luna. L’intervista relativa, risalente al 2006, può essere trovata a:

http://www.jsc.nasa.gov/history/oral_histories/WhittleDW/WhittleDW_2-16-06.pdf

Piergiorgio Perotto e la Programma 101

Olivetti P6060 e M24

Federico Faggin e il microprocessore Intel 4004

Page 12: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Il modello di von Neumann

Nel 1945 il matematico ungherese Neumann János Lajos (nome in lingua inglese: John von

Neumann) pubblicò una relazione nella quale descriveva uno schema di “architettura” per il

sistema di calcolo EDVAC (Electronic Discrete Variable Automatic Computer, un successore

dell’ENIAC). Molte delle idee presentate non erano nuove, ma von Neumann ebbe il merito

di organizzarle, chiarendo una struttura che poteva risultare utile nella progettazione di questi

sistemi: talmente utile che il suo modello è ancora in uso.

L’unità centrale del sistema è una piastra di plastica detta motherboard (scheda madre), che contiene gli

alloggiamenti per le parti essenziali del computer: la CPU (Central Processing Unit: il microprocessore), che

è il vero e proprio calcolatore, e la memoria centrale, chiamata RAM (Random Access Memory).

Quest’ultima contiene programmi e dati, consentendo di disporre

di un sistema general purpose (in grado di essere programmato

per più compiti). La parola random non significa che il sistema è

disorganizzato: forse è più efficace l’espressione italiana

“memoria ad accesso diretto”, nata per distinguere la memoria

centrale dalle unità a nastro usate in tempi remoti. l’accesso alle

quali era sequenziale.

Un programma, memorizzato su un disco, viene copiato (o

caricato) nella RAM al momento dell’attivazione. Parte della

RAM viene destinata ai dati del programma. La CPU, per

effettuare i calcoli, copia al suo interno istruzioni e dati attraverso

memorie ausiliarie ad accesso veloce, dette cache5 (una per le

istruzioni, una o più per i dati): in essa vengono memorizzate

anche più istruzioni, che sono così già disponibili per la CPU.

Le istruzioni vengono eseguite dalla CPU, a sua volta divisa in unità di controllo (CU=Control Unit) e unità

aritmetico-logica (ALU=Arithmetic-Logic Unit). L’unità di controllo “decide” le operazioni da fare, che

vengono eseguite in piccoli (e veloci) registri di memoria da parte della ALU. Tra i registri ce n’è anche

uno, chiamato program counter, che individua a che punto della propria sequenza di istruzioni si trova

ciascun programma. Il traffico dei dati avviene in una serie di circuiti conduttori chiamati BUS; tutti i

procedimenti sono sincronizzati attraverso un orologio interno (clock).

Le comunicazioni del sistema con il mondo esterno sono chiamate operazioni di input-output (I/O), ed

avvengono mediante altri BUS esterni (ad esempio quelli di tipo USB=Universal Serial Bus). L’interfaccia è

costituita da dispositivi di interazione del computer con l’utente (tastiera, mouse, webcam, …).

Le memorie periferiche (secondary storage) servono a conservare le istruzioni e i dati, perché, al contrario

della RAM, sono permanenti (dischi, CD, DVD, pen-drive, nastri).

Esiste un altro tipo di memoria ad accesso diretto, detta ROM (Read Only Memory)6, che solitamente

contiene il cosiddetto firmware, che si può definire come “software che fa funzionare l’hardware”. Il

firmware memorizzato nella scheda madre serve, tra le altre cose, ad avviare il computer; anche le unità

periferiche hanno il proprio firmware specializzato, che si occupa del loro funzionamento e di null’altro.

Altri dispositivi servono per scambiare diversi tipi di messaggi con il sistema: stampanti e scanner per dati

scritti o grafici, altoparlanti e microfoni per dati audio, videocamere e proiettori per dati video, modem e TA

per le comunicazioni telefoniche. Il flusso di input va dalle periferiche all’unità centrale, quello di output

nel verso opposto.

Due utenti di un forum specializzato, Mason Wheeler e Dan Pichelman, hanno fornito una curiosa e

interessante analogia per spiegare il funzionamento di alcuni componenti hardware. Immaginiamo un

falegname al lavoro (CPU). In mano (registri) ha un paio di attrezzi, vicino a sé ha il banco da lavoro

(cache), dove stanno altri oggetti che deve usare frequentemente, mentre nel furgone (RAM) ha altri oggetti,

sempre relativi al lavoro che sta facendo, ma che non servono al momento. Inoltre potrà avere altri attrezzi

nel magazzino (disco), e quello che non ha lo può acquistare nei negozi specializzati (la rete).

5 Antico termine inglese per “magazzino”.

6 A volte indicata come flash ROM, dal nome della tecnologia usata per registrarla.

Page 13: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

In giro per i bus

Un bus è un mezzo di trasporto, il cui nome deriva dal latino omnibus (che significa: per tutti).

In un computer, per analogia, un bus è un insieme di conduttori (raggruppate in cavi o stampati direttamente

in una scheda) che consente la comunicazione di dati tra componenti hardware. I dati sono trasformati in

impulsi elettrici e come tali trasmessi lungo i bus.

Ogni bus è costituito da alcune decine di conduttori (tra 50 e 100), divise in tre (a volte quattro) sezioni:

bus di indirizzo

(o “di memoria”)

Trasmettono gli indirizzi di memoria che servono al processore: in essi il

flusso di informazioni è unidirezionale, dal processore alla RAM

bus dati Trasmettono non solo i dati, ma anche le istruzioni; in essi il flusso di

informazioni può essere bidirezionale (I/O)

bus di controllo

(o “di comando”)

Trasmettono segnali di controllo e sincronizzazione tra la CPU e le altre

componenti

bus di alimentazione Servono quando l’unità collegata non ha una fonte di alimentazione, come

nel caso di alcuni dispositivi USB7 esterni.

I terminali dei bus nella scheda madre, chiamati slot (fessure), si differenziano per numero di collegamenti e

velocità, in base a quali unità sono ad essi collegati:

7 USB = Universal Serial Bus. In altri tempi ogni unità aveva un collegamento specifico. L’adozione della tecnologia

USB ha grandemente semplificato le operazioni per l’uso delle periferiche, che usano quasi tutte gli stessi cavi.

Bus usati nel box del computer Bus per periferiche (USB)

Page 14: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

I bus vengono misurati secondo la quantità di informazione che possono trasmettere contemporaneamente

(larghezza: il numero di conduttori paralleli) e la frequenza di spedizione/ricezione nell’unità di tempo. La

frequenza viene misurata in Hertz (Hz: 1 Hz corrisponde a 1/1 secondo), ed è inversamente proporzionale al

tempo, secondo queste formule:

1 Hz 1 / 1 secondo Una volta al secondo 1 KHz 1000 Hz 1 / 1000 secondi 1000 volte al secondo 1 MHz 1000 KHz 1 / 106 secondi 1 milione di volte al secondo 1 GHz 1000 MHz 1 / 109 secondi 1 miliardo di volte al secondo

Ad esempio, la massima velocità di trasferimento possibile per un bus con una larghezza di 32 bit e una

frequenza di 133 MHz si può esprimere in vari modi, a seconda dell’unità di misura:

32 * 133 * 106 = 4256 * 106 bit/s 4256 * 106 / 8 = 532 * 106 byte/s 532 * 106 / 103 = 532*103 KB/s 532 * 103 / 103 = 532 MB/s

1 bit = 1 impulso elementare 8 bit = 1 byte (1 carattere) 1024 byte = 1 Kb 1024 Kb = 1 Mb

N.B.: i multipli non sono esattamente per 1000, ma per 1024: questo è dovuto al fatto che il computer

effettua i calcoli secondo le potenze di 2 (come si vedrà più avanti).

I bus fanno capo a due componenti, chiamati chipset, che si possono immaginare come stazioni di

smistamento, ai quali sono collegati tutti i dispositivi (il nome chipset deriva dal fatto che, in origine, essi

comprendevano un gran numero di chip elettronici), e prendono i seguenti nomi:

NorthBridge: trasferisce i dati tra CPU, RAM e scheda grafica: i bus ad esso collegati sono detti interni;

SouthBridge: gestisce la comunicazione con le periferiche: i bus ad esso collegati sono detti esterni.

Il termine bridge è stato usato per descrivere la funzione di collegamento dei chipset, mentre North e South

corrispondono alla rappresentazione abituale del modello di Von Neumann, con l’unità centrale in alto e le

periferiche in basso.

I bus più veloci, che possono fornire risposte più rapidamente, sono quelli collegati al NorthBridge:

FSB (front-side bus) collegato alla CPU ed al clock;

memory bus collegato alla RAM;

graphics bus collegato alla scheda video.

I bus collegati al SouthBridge sono di due tipi:

PCI (Peripheral Component Interconnect), solitamente per collegamenti con dispositivi audio o di rete.

LPC (Low Pin Count) per le altre periferiche.

Il firmware (su ROM) è collegato al SouthBridge perché viene consultato solo al momento dell’accensione, e

i suoi dati significativi sono memorizzati nella RAM fino allo spegnimento del computer.

L’immagine riporta uno schema molto semplificato della rete interna dei bus:

Page 15: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

La memoria: dalla scheda perforata al DVD

Le prime memorie erano di carta. Proprio così. Erano

derivate dalle schede perforate che servirono ad

automatizzare i telai, introdotte nel XVIII secolo in

Francia e perfezionate attorno al 1805 dal tessitore e

inventore Joseph-Marie Jacquard (1752-1834).

Lo schema della perforazione delle schede jacquard (la

parola è diventata anche un nome comune) predispone il

telaio per la scelta automatica dei colori e dei disegni.

Anche il telegrafo (brevettato nel 1844) usava il nastro perforato, non essendoci altra

tecnologia per memorizzare le informazioni.

Fu quindi naturale usare memorie cartacee con i primi computer: il

nastro nell’immagine di destra è in tutto simile a quelli manovrati dalle

operatrici in una foto del 1918.

Anche le stampanti potevano essere predisposte con un nastro di carta

avvolto ad anello: ad esempio, 66 fori per usare carta da 11 pollici, 72

fori per carta da 12 pollici.

Nel 1889 venne inventato un altro formato cartaceo, quello

della scheda perforata, ad opera di Herman Hollerith, per il

conteggio del censimento USA. Un cartoncino di circa 18.7x8.2 cm riporta una

griglia 12x80: ogni colonna può contenere una serie di fori rettangolari che

rappresentano un limitato insieme di caratteri (ad esempio, senza le minuscole e

altri simboli come le parentesi, che furono aggiunte più tardi).

Ogni scheda rappresentava UNA RIGA di un testo (programmi o dati), contenente al più 80 lettere o simboli.

Essendo lo spessore del cartoncino di circa 0.018 cm, un programma modesto, con 500 istruzioni, occupava

circa 9 cm in altezza, e si portava in giro in una scatola da scarpe.

Un conteggio molto indicativo, tanto per dare un’idea:

1 riga (1 scheda) = 80 byte

16 Gb = 17179869184 byte

Un pen-drive da 16 Gb equivale a 214.748.364 schede, sufficienti per una

pila di schede alta più di 38 km.

Hollerith fondò la IBM, uno dei cui centri di ricerca è stato progettato come

monumento alla scheda perforata (ora ospita una scuola d’arte).

L’immagine riporta lo schema di codifica di una scheda di programmazione (anni ‘50/’70):

Page 16: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Questa immagine ha all’incirca la dimensione di un

floppy da 8 pollici (una pagina A4 è larga 8.3 pollici). Si

possono notare le zone scoperte del disco: al centro per

il meccanismo di trascinamento, vicino al centro per il

foro di sincronizzazione, in basso per il lettore.

Alan Shugart inventò il floppy disk alla fine degli anni ’60, quando i lettori di hard disk erano dispositivi

esterni, con le dimensioni di una lavatrice. Il disco scorre dentro una custodia di plastica (jacket), trascinato

da una ganascia centrale. Il foro più piccolo serve per la sincronizzazione del lettore.

Per decenni questa memoria periferica è stata la più economica, nelle sue versioni sempre più ridotte (8

pollici – 5.25 – 3.5). I masterizzatori di CD prima e DVD poi sono entrati sul mercato con una lentezza

esasperante, soprattutto nel rendere i costi alla portata di tutti. L’utenza era obbligata ad adattarsi ad una

pessima tecnologia, visto che almeno un paio di floppy per scatola erano da buttare.

La fine definitiva del floppy disk è stato il formato JPG, sviluppato negli anni ’90: un disco che, con 1.44

Mb, poteva contenere forse un paio di immagini, non serviva più a nessuno. In quegli anni l’informatica

usciva dal guscio: uscivano masterizzatori a costi non proibitivi, nasceva il WWW, i PC entravano nelle case.

Ancora qualche anno e sarebbero comparse sul mercato le memorie a stato solido: dai 128 Mb iniziali si è

ora giunti ad un numero spropositato di Gb. Questi dispositivi (detti pen-drive, USB keys, chiavette,

pennette) hanno contribuito alla diffusione e alla distribuzione (non sempre legale) di programmi e dati.

Page 17: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

L’interfaccia con l’utente

L’interfaccia dei primi sistemi operativi per PC era testuale: uno schermo nero sul quale si scrivevano i

comandi con la tastiera. In DOS (Disk Operating System), ad esempio, dir s*.gif per elencare tutti i file

di una cartella con iniziale del nome uguale a s, ed estensione gif:

I colori originali (bianco su nero) sono stati modificati (rosso su bianco).

Altri comandi potevano essere:

C:\> copy *.* a: copia tutti i file sul dischetto A: C:\> cls cancella tutte le scritte sullo schermo C:\> print abc.txt stampa il file testo ABC.TXT

Questa modalità esiste ancora nel Prompt dei comandi presente negli accessori, che viene chiamato anche

shell DOS. L’espressione deriva da shell (=guscio), perché si immaginava questo schermo come qualcosa

che divideva l’utente dal sistema operativo.

La moderna interfaccia, che usa il mouse per molte operazioni, è grafica, e viene detta GUI (Graphical User

Interface). Quando è stata introdotta, veniva distinta con la sigla wysiwyg (What You See Is What You Get),

tale era la novità rispetto alla riga di comando singola.

Attraverso l’interfaccia grafica e il mouse (o il touchpad) è possibile svolgere tutte le operazioni di gestione

dei propri dati, come ad esempio la creazione di cartelle, di collegamenti (link) a programmi, a dispositivi o a

URL; attraverso il Drag and Drop (=trascina e rilascia) è possibile spostare o copiare uno o più file o cartelle

da un punto ad un altro. Il click destro permette solitamente di scegliere alcune tra le operazioni più comuni8,

facendo comparire un menu interattivo (popup), detto menu contestuale perché dipende dal tipo di oggetto

che si punta.

Grazie ai collegamenti l’utente può raggiungere un file o attivare un programma da un qualsiasi punto dello

schermo. Il collegamento può essere creato trascinando la relativa icona in un punto libero dello sfondo,

oppure con il Wizard9 (attivato con il click destro), che consente di sfogliare le cartelle alla ricerca del file o

della cartella.

Un volta creato il collegamento è possibile rinominarlo e spostarlo nella posizione desiderata. Se si vuole

modificarne le impostazioni del collegamento, come ad esempio l’icona associata, si può aprire il menu tasto

destro di scelta rapida ed attivare Proprietà.

I collegamenti possono essere eliminati selezionandoli e premendo il tasto Canc, oppure con il menu click

destro. ELIMINANDO UN COLLEGAMENTO NON SI ELIMINA L’OGGETTO.

8 Secondo un vecchio detto, when in doubt, right click

9 wizard=mago

Page 18: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Il sistema operativo mette a disposizione dell’utente un insieme di applicazioni, dette accessori, che vanno

dall’editor di testi, alla calcolatrice, al terminale remoto. Gli accessori vengono scelti in fase di installazione;

per rimuovere uno o più accessori si può andare in Pannello di Controllo / Installazione applicazioni /

Installazione componenti di Windows. Il menu accessori si attiva con Start / Tutti i programmi / Accessori.

Le principali applicazioni presenti sono:

strumenti di accessibilità come Magnifier (per chi ha problemi di interazione)

strumenti di “produttività” come Notepad, Wordpad, Calcolatrice e Paint (proprio per i casi disperati)

strumenti di comunicazione come HyperTerminal (nel caso si debba programmare un dispositivo di rete)

utilità di sistema come Backup, Utilità di deframmentazione dischi, Centro di sicurezza (saltuarie)

Le impostazioni del monitor e della scheda grafica consentono all’utente

di ottenere una visualizzazione consona alle proprie abitudini. Per

effettuare queste impostazioni è opportuno conoscere la risoluzione e la

frequenza massima di refresh10

supportata dal monitor, il numero di

colori e le risoluzioni supportate dalla scheda video. Questi dati sono

solitamente nella documentazione tecnica, e si possono solitamente

ottenere consultando i siti web dei produttori, che contengono anche i

driver11

aggiornati.

Le impostazioni si attivano con Pannello di controllo / Schermo, oppure

con click destro sul desktop seguito da “Proprietà”; poi si sceglie la

linguetta “Impostazioni”.

Risoluzione e impostazione dei colori sono già in evidenza. Talvolta,

quando si modifica un’impostazione, viene richiesta una conferma aggiuntiva. Il pulsante “Avanzate” attiva

una serie di opzioni molto dettagliate per intervenire sul tipo di monitor12

, la frequenza di refresh e la scheda

video: sono consigliate per gli utenti più esperti.

Solitamente ciascuno personalizza il desktop modificando la disposizione o l’aspetto di alcuni componenti,

come: risorse del computer, risorse di rete, collegamento a Documenti, cestino. Esistono anche temi

predefiniti, ciascuno con un insieme di icone, suoni, sfondi e colori associati all’interazione con il computer.

Uno strumento fondamentale è la barra delle applicazioni, anch’essa personalizzabile (click destro sulla

barra/ Proprietà), per regolare queste impostazioni:

bloccare la barra delle applicazioni

nascondere la barra delle applicazioni

mettere la barra delle applicazioni sempre in primo piano

raggruppare le applicazioni

mostrare/nascondere: orologio / Avvio veloce13

/ barra delle lingue

nascondere le icone inattive.

La posizione su disco della barra “Quick Launch” è un po’ complicata da trovare, ed è curiosamente

associata ad “Internet Explorer”. Il nome completo della cartella è:

C:\Documents and Settings\[nome utente]\Dati applicazioni\Microsoft\Internet Explorer\Quick Launch

10 Refresh: indica quante volte l'intero quadro viene rigenerato ogni secondo. Più la frequenza è alta, più è stabile e

realistica l'immagine sullo schermo. Come ogni frequenza, si misura in Hz (Hertz). 11

Un driver è un programma che regola il funzionamento di un dispositivo. 12

L’aspetto dello schermo viene misurato in DPI (Dots Per Inch = Punti per pollice) 13

Avvio veloce (QuickLaunch) sulla barra è destinato a contenere i collegamenti ai programmi che si usano più

frequentemente, per velocizzarne la selezione.

Page 19: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

I principali dispositivi di input gestiti da ogni sistema operativo sono la tastiera

e il mouse. Il mouse è uno strumento opzionale, comunque molto utile; la

tastiera è invece un elemento fondamentale senza il quale non si riesce a

lavorare. Le proprietà sono sempre accessibili dal pannello di controllo. I

principali parametri per la tastiera sono la velocità di ripetizione dei caratteri, il

ritardo nella sua attivazione e l’intermittenza del cursore.

Sempre nel “Pannello di controllo”, con “Opzioni internazionali e della lingua” si apre una

finestra da cui, selezionando la scheda “Lingue” e successivamente “Dettagli”, è possibile

definire la lingua (o le lingue) di input ed i relativi layout14

di tastiera.

La configurazione del mouse (Pannello di controllo / Mouse) può riguardare lo scambio dei

pulsanti per i mancini, la velocità del doppio clic e il blocco del clic durante il

trascinamento. Per chi vuole personalizzare i puntatori, è possibile specificare le icone e alcune opzioni di

visualizzazione, destinate soprattutto a chi ha problemi di vista.

Il termine font indica un insieme di caratteri tipografici, generalmente

accomunati da uno stesso stile grafico. I principali sistemi operativi mettono a

disposizione degli strumenti per capire quali font sono attualmente disponibili

nel sistema e per installarne di nuovi. I font sono accessibili da Pannello di

controllo / Caratteri, dove è possibile visualizzarne o stamparne un’anteprima.

L’estensione dei file contenenti i font è normalmente TTF (True Type Font),

che sostituisce quelle vecchie (FON, FNT). Per aggiungere un font si passa dal

menu “File” / “Installa nuovo tipo di carattere”, per effettuare una scelta

interattiva della posizione dove si trova il file TTF. È possibile anche copiare

il file TTF manualmente nella cartella C:\WINDOWS\FONTS.

Le impostazioni multimediali di un sistema operativo permettono di configurare i dispositivi audio del PC,

modificando, ad esempio, il volume degli altoparlanti o il livello del segnale di ingresso del microfono. Potrà

risultare strano ricordare che, in passato, i PC uscivano senza scheda audio: i musicisti che volevano aiutarsi

con il computer erano costretti ad acquistare ed installare anche la scheda. Esistono ancora schede audio di

alta qualità per uso professionale: questi dispositivi hanno generalmente il loro manuale d’uso e un CD con

driver e altre informazioni.

La configurazione dell’audio può essere avviata con Pannello di Controllo / Suoni e periferiche audio. Oltre

ai comandi per il volume, uno per ogni tipo di segnale in uscita, con il pulsante ”Avanzate” nella sezione

“Impostazioni altoparlanti” è possibile specificare il tipo di altoparlanti

usati per migliorarne la resa. Esistono altre impostazioni, come i suoni

del sistema e i microfoni, più l’impostazione “Hardware” che si

consiglia di lasciare agli utenti esperti.

Le impostazioni internazionali in un sistema operativo permettono di

configurare tutti i parametri relativi alla lingua e la formattazione usata

per i numeri, la valuta, la data e l’ora, che sono generalmente impostate

in base alla nazione di riferimento durante l’installazione del sistema

operativo. Oltre alla scelta “Paese e lingua” del Pannello di controllo, è

presente la “barra della lingua” nella barra delle applicazioni.

14 Layout = disposizione (in questo caso dei tasti delle tastiere nazionali)

Page 20: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

L’installazione di una nuova stampante può essere effettuata solamente dagli amministratori del sistema.

Occorre selezionare Menu di avvio (o pannello di controllo) – Dispositivi e Stampanti – Aggiungi stampante

(dal menu “file” o con click destro). Viene avviato il wizard per l’installazione di una nuova stampante.

Nella finestra iniziale, l’amministratore di sistema

può specificare che si tratta di una stampante Plug

and Play e che quindi l’installazione può essere

effettuata con la procedura standard (automatica) di

tutte le periferiche PnP.

Proseguendo con il wizard, si seleziona:

tipo stampante (locale o di rete)

porta della stampante (la creazione di una nuova

porta viene spesso usata per l’installazione di

una stampante di rete: si tratta di una porta

TCP/IP con l’indirizzo IP della stampante

Selezione dei driver. per alcuni modelli di

stampanti è possibile servirsi dei due elenchi

presenti nella finestra (in alternativa, si possono scaricare i driver dal sito Web del produttore)

Nome da associare alla stampante

Eventuale impostazione come stampante predefinita.

Richiesta pagina di prova

N.B.: Le stampanti con funzioni un po’ sofisticate sono provviste di un CD di installazione che

provvede a tutto tramite un suo wizard (generalmente anche più completo nella diagnostica), ed anche

l’aggiornamento del driver si può scaricare dal sito del produttore.

Dal menu “Stampante” è possibile effettuare alcune

operazioni di gestione della stampante come “Imposta

come stampante predefinita” e “Proprietà della

stampante”.

Nella finestra “Proprietà”, la scheda “Generale” mostra le

caratteristiche della stampante (stampante a colori, fronte-

retro, ecc..). Le finestre successive variano a seconda del

driver di stampa e della corrispondente complessità delle

funzioni disponibili.

La coda di stampa memorizza tutte le operazioni richieste

su una determinata stampante, eseguendole in sequenza.

Per gestire la coda di stampa o modificare le impostazioni

di una stampante bisogna fare un doppio clic sulla

stampante da gestire (in Stampanti e Fax). Si apre così una

nuova finestra che visualizza la coda dei processi della stampante. E’ possibile mettere in pausa, riavviare o

annullare un processo selezionando il processo di stampa ed agendo sulla voce corrispondente:

Page 21: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Evoluzione degli strumenti di output

I primi output erano decisamente poco sofisticati: si potevano “leggere” i risultati osservando spie

variamente colorate o nastri di carta perforati.

Più avanti, alle perforatrici di nastri si aggiungono quelle, a forma di rullo cilindrico, per le schede perforate:

Negli anni ’60 si usano vari tipi di stampanti. Alcune sono termiche, e necessitano di una speciale carta,

trattata chimicamente, che viene riscaldata nelle zone destinate a diventare colorate (alcuni tipi di stampanti

possono scaldare in modo differenziato la carta, aggiungendo il colore rosso al nero classico).

Altre sono ad aghi, e funzionano premendo con un dispositivo chiamato testina un nastro inchiostrato contro

la carta in uno schema rettangolare, dove l’alternanza di aghi attivati e disattivati forma lettere e cifre.

Le stampanti a margherita (daisy wheel), simili alle macchine da scrivere, hanno i

caratteri impressi ai bordi di una raggiera in plastica: il principio di stampa è sempre a

pressione, con una qualità maggiore rispetto alle stampanti ad aghi, ma una minore

velocità, dovuta alla necessità di ruotare la margherita per ogni carattere diverso.

Spie e pulsanti Nastri perforati

Seconda generazione di memorie cartacee

Schemi di funzionamento delle stampanti ad aghi

Stampanti termiche

Page 22: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Inizialmente, la stampa viene prodotta sui “terminali” detti TTY (teletype), dispositivi muniti anche di

tastiera per l’input, con stampa termica oppure ad aghi; successivamente arrivano stampanti dedicate,

funzionanti a modulo continuo.

La stampa grafica è ancora una faccenda a sé, e viene prodotta con dispositivi chiamati plotter, dotati di una

o più penne o pennarelli, montati su un braccio mobile. Nei plotter da tavolo, un secondo braccio

perpendicolare al primo permette di spostare le penne in qualsiasi direzione; in quelli professionali, sono i

fogli, di formato A0 (circa 1.2m di larghezza, con lunghezza anche di decine di metri) che vengono spostati

orizzontalmente, sotto la postazione delle penne.

L’evoluzione ha poi portato stampanti a getto d’inchiostro (inkjet), già usate dai fotografi fino dagli anni ’50,

e stampanti laser, che di fatto eliminano l’esigenza dei plotter da tavolo (c’è comunque un discreto mercato

di appassionati dell’usato). Queste tecnologie vengono aggiunte ai plotter professionali, dei quali aumentano

prestazioni e qualità di stampa.

Macchine simili ai plotter sono state a lungo usate per il taglio del vetro o di altri materiali, come metalli e

plastica, e successivamente per il taglio e la stampa di tessuti. Le moderne “stampanti 3d” non hanno in

realtà a che fare con documenti e disegni: sono veri e propri stampi programmabili per produrre oggetti

tridimensionali con polimeri, metalli o materiali compositi, che vengono aggiunti a strati seguendo modelli

predisposti da appositi software.

Page 23: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Hardware e Software Foglio Elettronico

Page 24: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Simboli e numeri

I computer sono nati per risolvere problemi di calcolo, quindi il primo problema che si è presentato è stato

quello di memorizzare i numeri. Occorre perciò aver bene presente la nostra idea (umana) di numeri ed il

modo con cui abbiamo scelto di rappresentarli, per poi vedere le soluzioni scelte per trasportarli in un

sistema di elaborazione automatico.

Noi tendiamo a dare troppe cose per scontate, data la familiarità che abbiamo (o dovremmo avere) con i

numeri e le relative operazioni. Tuttavia la storia della matematica presenta soluzioni molto diverse, che solo

nel corso di millenni sono arrivate a quelle ora universalmente accettate.

Alcune civiltà hanno un sistema di numerazione fondato sulle parole che indicano “uno” e “due”, anche in

continenti diversi:

Kawatsa (Papua)

1 = to 2 = tavau 3 = tavau to (2 e 1) 4 = tavau tavau (2 e 2) 5 = tavau tavau to

Gumulgal (Australia)

1 = urapon 2 = ukasar 3 = ukasar urapon 4 = ukasar ukasar 5 = ukasar ukasar urapon

Bakairi (Brasile)

1 = tokale 2 = azage 3 = azage tokale 4 = azage azage 5 = azage azage tokale

Per quanto semplice, questa rappresentazione diventa problematica con numeri grandi, ed è ancora peggio

quando si tratta di eseguire le comuni operazioni aritmetiche.

La situazione non migliora con i geroglifici egiziani, in cui vengono usati simboli:

1 = asta 10 = rotolo di fune 1000 = fiore di loto 10000 = dito 100000 = rana

Per rappresentare il numero 315202 occorre mettere

in fila 3 rane, 1 dito, 5 fiori di loto, due rotoli di

fune, due aste verticali. Immaginiamoci di dividerlo

anche solo per due: con i rotoli di fune va bene, ma

con le rane un po’ meno (mezza rana sono 5 dita)

Anche i Romani, che pure come ingegneri se la cavavano piuttosto bene, con i numeri erano un po’ persi:

1 = I 5 = V 10 = X 100 = C 500 = D 1000 = M

2016 non è molto difficile da scrivere (MMXVI),

ma eseguire le operazioni è uno strazio. Guardando

2016/6 (che fa 336) non c’è alcuna logica che

consenta di ottenere i risultati con regole generali:

MMXVI / VI = CCCXXXVI

Possiamo solo tentare di immaginare lo scenario quando arrivarono in Europa i numeri detti “arabi” o “indo-

arabi”, appresi durante i commerci con gli arabi, e originari dell’India, attribuiti ai due maggiori matematici

di quel Paese, Aryabhat (V secolo) e Brahmagupta (VI secolo):

Cifre indiane:

Page 25: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Sebbene perfino un papa (Gilberto di Aurillac, divenuto Silvestro II), nel decimo secolo, avesse cercato di

diffondere in Europa la numerazione ancora chiamata solamente “indiana”, l’ingresso ufficiale nella

contabilità europea risale agli inizi del 13° secolo, grazie al matematico pisano Leonardo Fibonacci. Molti

“ragionieri” dell’epoca (anche se allora non si chiamavano così), atterriti dalla velocità con cui gli esperti

della nuova numerazione eseguivano i calcoli, non esitarono a definire tutto il sistema come opera del

demonio, con buona pace di Gilberto-Silvestro.

Il successo della nuova numerazione è dovuto a due grandi innovazioni:

La notazione posizionale

L’uso dello zero

La notazione posizionale fa in modo che ogni cifra abbia, oltre al proprio significato normale, un altro

significato legato alla sua posizione, che si lega ad una potenza di 10 (da destra: 1, 10, 100, 1000, ecc.).

Lo zero consente di individuare una posizione vuota, senza spostare le altre cifre dalla posizione corretta.

Così 27509 è scomposto in:

2*104 + 7*103 + 5*102 + 0*101 + 9*100

Possiamo notare che il 2 conta molto di più del 9, grazie alla sua posizione.

Lo sviluppo del numero è un polinomio ordinato secondo le potenze di 10, e grazie a questa forma si possono

fare calcoli più facilmente di ogni Gumulgal, Bakairi, Egizio o Romano.

Il numero 10 è la base di numerazione perché corrisponde al numero di simboli usato (da 0 a 9, compresi).

Se osserviamo alcune caratteristiche della notazione posizionale, potremo trovarle anche con altre basi di

numerazione.

La base è il più piccolo numero di due cifre

Il numero precedente alla base corrisponde alla cifra più grande

Le potenze della base si scrivono tutte con 1 seguito da un certo numero di zeri

I numeri precedenti alle potenze della base sono formati solo dalla cifra più grande ripetuta

Spostare una cifra di una posizione equivale a moltiplicarla (o dividerla) per la base

Con la nascita dell’algebra, alcuni matematici si sono posti il problema di usare altre basi di numerazione

(non è dato sapere il perché). Un vescovo spagnolo, che, oltre alla teologia, si occupava di ingegneria

militare, propose l’uso della base 2 in un libro del 1669: “Mathesis biceps. Vetus, et noua”. Il suo nome era

Juan Caramuel y Lobkowitz. Anche matematici più illustri, come Nepero (John Napier) e Leibniz,

studiarono la base 2 e la sua aritmetica, così come Gorge Boole, che se ne occupò in un trattato del 1847.

Ma la definitiva affermazione dell’aritmetica binaria e della sua consociata, l’algebra di Boole, fu dovuta

all’invenzione dei calcolatori elettronici. Essa venne buona sia nella tecnologia, sia nella programmazione:

nel primo caso per la facilità con cui si potevano memorizzare in un computer i numeri e la velocità con cui

si potevano elaborare; nel secondo per la semplicità con cui si potevano codificare i procedimenti di calcolo

con cui si potevano istruire i computer.

La semplicità della base 2 è evidente: 2 soli simboli, risultati parziali semplici. Nella tecnologia, l’uso di

correnti e campi magnetici (che si presentano in 2 stati) si è combinata alla perfezione con l’uso di questa

notazione. Inoltre la velocità dei componenti, anche negli anni dei pionieri, permetteva di superare

l’inconveniente della base 2, che necessita di molte cifre per rappresentare numeri anche di uso comune15

.

Altre basi di numerazione che hanno a che fare con l’informatica sono 8 (sistema ottale) e 16 (sistema

esadecimale); sono correlate anche con il 2, dato che:

8=23 e 16=24.

15 I calcoli vengono eseguiti dalla macchina, che è comunque più veloce degli operatori umani.

Page 26: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Numeri in base 2

Dov’è il trucco per la base 2? Considerando che ci sono solo due simboli a disposizione, 0 e 1, per

proseguire nella numerazione occorre usare i riporti. Tra l’altro, almeno per i primi numeri, possiamo notare

una lontana somiglianza con alcuni sistemi già visti, ad esempio quello dei Gumulgal, che arrivano a

distinguere 1 da 2 (l’analogia si ferma lì, perché manca il resto dell’aritmetica).

Procedimento Binario Calcoli Gumulgal Il primo numero è ZERO Il secondo numero è UNO 1+1 fa ZERO con riporto di 1 +1 non c’è riporto +1 ci sono 2 riporti +1 non c’è riporto sulle "unità" +1 c’è 1 riporto alla 2.cifra +1 non c’è riporto sulle "unità" +1 di nuovo un 1 seguito da zeri

0 1

10 11 100 101 110 111

1000

0 1 2+0 2+1 4+0+0 4+0+1 4+2+0 4+2+1 8+0+0+0

1 = urapon 2 = ukasar 3 = ukasar urapon 4 = ukasar ukasar 5 = ukasar ukasar urapon ... (si complica troppo)

Considerando un numero qualunque (senza dimenticare che abbiamo a disposizione solo 2 cifre), e

applichiamo la scomposizione come polinomio (tenendo conto che la base è 2, non 10):

10110102 = 1*26+0*25+1*24+1*23+0*22+1*21+0*20

Il numero 10110102 non è altro che 9010. Se si hanno ben presenti le potenze del 2, la traduzione di un numero in base 2 non è difficile: ad esempio,

167 corrisponde a 128+32+4+2+1, quindi:

16710=101001112

Le prime potenze di 2 sono: 128 64 32 16 8 4 2 1 Per i meno matematici, il procedimento per tradurre un numero da base 10 a base 2 è semplice, anche se i

passi possono essere numerosi. Riprendiamo il 167:

167 : 2 = 83 resto 1 83 : 2 = 41 resto 1 41 : 2 = 20 resto 1 20 : 2 = 10 resto 0 10 : 2 = 5 resto 0 5 : 2 = 2 resto 1 2 : 2 = 1 resto 0 1 : 2 = 0 resto 1

La sequenza dei resti, presa alla rovescia, è la codifica binaria del numero di partenza. Possiamo riassumere

i due passaggi in questo modo:

Per passare da base 2 a base 10, si moltiplica per 2

Per passare da base 10 a base 2, si divide per 2

Ci sono 10 tipi di persone al mondo: quelli che capiscono il binario e quelli che non lo capiscono

Page 27: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Come si fa

Per semplicità, useremo il formato più piccolo per la memorizzazione dei numeri interi, che prevede 8 cifre

binarie. In realtà l’ottava cifra non viene usata per i numeri positivi: più avanti vedremo come venga usata

per memorizzare il segno (in particolare: 0 per i positivi, 1 per i negativi).

Il numero “positivo” minore è: 000000002 010

Il numero positivo maggiore è: 011111112 12710

Un modo pratico per ottenere il formato binario di un numero decimale è incolonnare i numeri che si

ottengono con le divisioni e i resti. Si può iniziare con la sequenza delle divisioni (1), mentre i resti possono

essere facilmente aggiunti anche dopo (2). Alla fine (3) è consigliato aggiungere gli zeri mancanti per

ottenere le 8 cifre.

ULTIMA CIFRA CON ZERO SI TERMINA

(1) 18 9 4 2 1 0

(2) 0 1 0 0 1

9 dispari 1 dispari

Risultato (8 cifre) (3) 00010010

Altri esempi:

50 25 12 6 3 1 0

0 1 0 0 1 1

115 57 28 14 7 3 1 0

1 1 0 0 1 1 1

12 6 3 1 0

0 0 1 1

35 17 8 4 2 1 0

1 1 0 0 0 1

80 40 20 10 5 2 1 0

0 0 0 0 1 0 1

5 2 1 0

1 0 1

00110010 01110011 00001100 00100011 01010000 00000101

Alcuni accorgimenti possono risultare utili per controllare i risultati.

1

Un numero come 35 può anche essere scomposto: 00100011 = 35 00100000 = 32 (valore dell’ultima cifra, se fosse da sola) 00000011 = 3 (valore delle prime due, se fossero da sole)

2

Il primo resto di 35 è 1, il primo resto di 80 è 0 Se consideriamo che il primo resto (prima cifra) corrisponde ad un valore di 1, mentre tutte le altre corrispondono a numeri pari (2,4,8,...), i numeri dispari DEVONO avere come prima cifra 1.

3 Se osserviamo la scomposizione di 5, notiamo che la scomposizione è la stessa che si ha con 80, dopo che il quoziente raggiunge il 5.

4 Ogni sequenza termina con (3-1-0) o con (2-1-0)

Page 28: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Esercizi

Qualche esercizio per fare pratica. Le soluzioni sono alla pagina seguente

base 10 - base 2 base 2 - base 10 110 10111100 85 100001 19 111100 250 11000100 30 110001 60 10111110 150 10011000 80 1001000 160 1111111 245 10001011 50 10000001 112 101000 48 110100 200 10101110 151 10000000 89 110011 78 10110111 39 1000000 75 10010011 150 10011101 100 101111 80 1010100 5 1101100 99 10000111 49 10001110 15 11001000 65 1101100 66 10101100 41 1010100 51 11000101

Page 29: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Soluzioni

base 10 - base 2 base 2 - base 10 110 1101110 10111100 188 85 1010101 100001 33 19 10011 111100 60 250 11111010 11000100 196 30 11110 110001 49 60 111100 10111110 190 150 10010110 10011000 152 80 1010000 1001000 72 160 10100000 1111111 127 245 11110101 10001011 139 50 110010 10000001 129 112 1110000 101000 40 48 110000 110100 52 200 11001000 10101110 174 151 10010111 10000000 128 89 1011001 110011 51 78 1001110 10110111 183 39 100111 1000000 64 75 1001011 10010011 147 150 10010110 10011101 157 100 1100100 101111 47 80 1010000 1010100 84 5 101 1101100 108 99 1100011 10000111 135 49 110001 10001110 142 15 1111 11001000 200 65 1000001 1101100 108 66 1000010 10101100 172 41 101001 1010100 84 51 110011 11000101 197

Page 30: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Operazioni in base 2

45+54=101101+110110

I risultati delle singole somme sono sempre 0 o 1. Anche con il riporto il massimo che si può ottenere è un 3,

che comunque non si scrive 3, ma 1 con riporto di 1.

1+0 = 1 Riporto 0

0+0+1 = 1 Riporto 0

0+1+1 = 0 Riporto 1

1+1+0 = 0 Riporto 1

1+0+1 = 0 Riporto 1

1+1+1 fa 1 Riporto 1

Solo riporto

101101 110110 1

0 101101 110110 11

0 101101 110110 011

1 101101 110110 0011

1 101101 110110 00011

1 101101 100110 100011

1 0101101 0100110 1100011

1100011 = 1*26+1*25+0*24+0*23+0*22+1*21+1*20

45+54 = 99 = 64+32+2+1 Con la moltiplicazione le cose si complicano, ma non dimentichiamo che questi calcoli sono fatti per essere

eseguiti da un computer, la cui velocità compensa per il numero di operazioni che vanno svolte. Con gli

stessi numeri di prima, 45*54 fa 2430 (un numero di 12 cifre binarie, essendo superiore a 2048=211):

101101 110110 -------------- * 000000 11101101. 1101101.. 1000000... 1101101.... 101101..... -------------- 100101111110

In ogni riga parziale abbiamo solo due possibilità:

000000 (tutti zeri, se la cifra è 0) 101101 (il primo numero, se la cifra è 1)

Nella colonna contrassegnata con * il riporto è doppio (il risultato della colonna

precedente è 4)

Qui i conteggi sono più numerosi, ma il computer somma sempre 2 numeri per volta, quindi non fa una

somma di 6 numeri, ma 5 somme di 2 numeri.

Alcuni trucchetti per cavarsela con la base 2 (alcuni sono già visti):

Un numero dispari termina con 1, uno pari con 0

Un 1 seguito da zeri è una potenza di 2 (esponente=numero di zeri)

Un repunit (tutti 1) precede di 1 una potenza di 2

Aggiungendo uno zero a destra, il numero raddoppia

Togliendo l’ultima cifra a destra, in numero si dimezza (senza resto)

Per calcolare un numero con molti 1, costruire un repunit e sottrarre le posizioni corrispondenti agli zeri

(al posto di sommare le posizioni presenti). Ad esempio, trovandosi davanti 1111011 conviene ricordare

(se possibile) che 1111111 precede 27, quindi è 127, poi togliendo il 4 si ottiene 123.

I primi repunit corrispondono a:

11111111 1111111 111111 11111 1111 111 11 1

255 127 63 31 15 7 3 1

Page 31: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Esercizi

Qualche somma per fare pratica. Le soluzioni sono alla pagina seguente

1001010 10111100 111011 100001

11111 11000100 11111 110001

1010 10011000

1111111 1001000

11101000001 10001011 10000010 10000001

100010000 110100 100101100 10101110

11101110 110011

1111 10110111

10101001010 10010011 101010100 10011101

1000000000001 1010100 11111111111 1101100

100000001 10001110 101111111 11001000

111101 10101100

11011010 1010100

Page 32: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Soluzioni

Le somme sono in rosso, sotto i rispettivi addendi:

1001010 10111100 111011 100001

10000101 11011101 11111 11000100 11111 110001 111110 11110101 1010 10011000

1111111 1001000 10001001 11100000

11101000001 10001011 10000010 10000001

11111000011 100001100 100010000 110100 100101100 10101110 1000111100 11100010 11101110 110011

1111 10110111 11111101 11101010

10101001010 10010011 101010100 10011101

11010011110 10110000 1000000000001 1010100 11111111111 1101100

1100000000000 11000000 100000001 10001110 101111111 11001000 1010000000 101010110

111101 10101100 11011010 1010100 100010111 100000000

Page 33: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Base 8 e base 16

I numeri in base 8 e 16 sono usati per rappresentare GRUPPI di cifre binarie. La base 8, in verità, non si

incontra più molto spesso, dato che la crescente potenza dei computer. Osservando la tabella, si nota la

ciclicità delle rappresentazioni: le 8 cifre ottali corrispondono a tutte le combinazioni di 3 cifre binarie, le 16

cifre esadecimali a quelle di 4 (e 4 è molto meglio di 3, almeno in elettronica). Nella tabella viene inclusa,

per completare i confronti, anche la base 4 (non in uso):

Base 2 Base 4 Base 8 Base 16 Base 10

0000 0 0 0 0 0001 1 1 1 1 0010 2 2 2 2 0011 3 3 3 3 0100 10 4 4 4 0101 11 5 5 5 0110 12 6 6 6 0111 13 7 7 7 1000 20 10 8 8 1001 21 11 9 9 1010 22 12 A 10 1011 23 13 B 11 1100 30 14 C 12 1101 31 15 D 13 1110 32 16 E 14 1111 33 17 F 15

10000 100 20 10 16 10001 101 21 11 17 10010 102 22 12 18 10011 103 23 13 19 10100 110 30 14 20

... ... ... ... ...

I numeri in base 8 sono più che altro una curiosità storica: solo i numeri in base 16 sono usati per evidenziare

i contenuti della memoria, visto che con due cifre in base 16 si può rappresentare un byte.

La conversione tra basi che sono una potenza dell’altra è piuttosto semplice: da base 2 a base 8 o 16 si

suddivide in numero in gruppi di 3 o 4 cifre; da base 8 o 16 a base 2 ogni cifra genera un gruppo di 3 o 4

cifre.

1011011101012=(101)(101)(110)(101)=55658

10110111101012=(1)(0110)(1111)(0101)=16F516

1658=(001)(110)(101)=11101012

7816=(0111)(1000)=11110002

A17416=(1010)(0001)(0111)(0100)=10100001011101002

L’importante è iniziare i gruppi dall’ultima cifra a destra. Esempio:

trasformare in base 16: 11011111012

1101.1111.012=DF216 ERRORE MADORNALE

11.0111.11012=37D16 corretto (non DF2)

Page 34: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Esercizi

Qualche esercizio per fare pratica. Le soluzioni sono alla pagina seguente.

base 2 - base 16 base 16 - base 2 111110101 170

1101011 A193

10101011110101101011000 4583

101111 4

111111111111110001 9B

1111010 134C

1101110100100010 DA9F

100000000011110010 3B

1000001 AA66

1000111 60

10100111 A107D

101011010001011011 111AD

101011101011011010101 91

1001101 1C

10000000 FF92

11101010110100110 1DC51

10000100 8E

1111000000001010100 1029

10101111 1B

10111010110101011110 2B153

1110010 EC98

10110100 35

11100011100011111000 14

10100100 BB3D

111101010101101011 1C66

11111111111110110 DD139

10101110 A196

101110101010011100 29

1000111 FA29

101011101011101010110 1ABC20

Page 35: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Soluzioni

base 2 - base 16 base 16 - base 2 1.1111.0101 1F5 170 101110000

110.1011 6B A193 1010000110010011

1010101.1110.1011.0101.1000 55EB58 4583 100010110000011

10.1111 2F 4 100

11.1111.1111.1111.0001 3FFF1 9B 10011011

111.1010 7A 134C 1001101001100

1101.1101.0010.0010 DD22 DA9F 1101101010011111

10.0000.0000.1111.0010 200F2 3B 111011

100.0001 41 AA66 1010101001100110

100.0111 47 60 1100000

1010.0111 A7 A107D 10100001000001111101

10.1011.0100.0101.1011 2B45B 111AD 10001000110101101

1.0101.1101.0110.1101.0101 15D6D5 91 10010001

100.1101 4D 1C 11100

1000.0000 80 FF92 1111111110010010

1.1101.0101.1010.0110 1D5A6 1DC51 11101011001010001

1000.0100 84 8E 10001110

111.1000.0000.0101.0100 78054 1029 1000000101001

1010.1111 AF 1B 11011

1011.1010.1101.0101.1110 BAD5E 2B153 101011000101010011

111.0010 72 EC98 1110110010011000

1011.0100 B4 35 110101

1110.0011.1000.1111.1000 E38F38 14 10100

1010.0100 A4 BB3D 1011101100111101

11.1101.0101.0110.1011 3D56B 1C66 1110001100110

1.1111.1111.1111.0110 1FFF6 DD139 11011101000100111001

1010.1110 AE A196 1010000110010110

10.1110.1010.1001.1100 2EA9C 29 101001

100.0111 47 FA29 1111101000101001

1.0101.1101.0111.0101.0110 15D756 1ABC20 110101011110000100000

Page 36: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Esercizi

Qualche esercizio per fare pratica. Le soluzioni sono alla pagina seguente.

base 2 - base 8 base 8 - base 2 111110101 170

1101011 7103

10101011110101101011000 4563

101111 4

111111111111110001 345

1111010 134

1101110100100010 77531

100000000011110010 32322

1000001 66

1000111 60

10100111 771005

101011010001011011 11156

101011101011011010101 71

1001101 12

10000000 4452

11101010110100110 10051

10000100 844

1111000000001010100 1023

10101111 14

10111010110101011110 2153

1110010 111565

10110100 35

11100011100011111000 14

10100100 7764

111101010101101011 166

11111111111110110 5513

10101110 166

101110101010011100 244

1000111 3321

101011101011101010110 176520

Page 37: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Soluzioni

base 2 - base 8 base 8 - base 2 111.110.101 765 170 1.111.000

1.101.011 153 7103 111.001.000.011

10.101.011.110.101.101.011.000 25365530 4563 100.101.110.011

101.111 57 4 100

111.111.111.111.110.001 777761 345 11.100.101

1.111.010 172 134 1.011.100

1.101.110.100.100.010 156442 77531 1.111.111.010.110.014

100.000.000.011.110.010 400362 32322 11010011010010

1.000.001 101 66 110.110

1.000.111 107 60 110.000

10.100.111 247 771005 111.111.001.000.000.101

101.011.010.001.011.011 532133 11156 1.001.001.101.110

101.011.101.011.011.010.101 5353325 71 111.001

1.001.101 115 12 1.010

10.000.000 200 4452 100.100.101.010

11.101.010.110.100.110 352646 10051 1.000.000.101.001

10.000.100 204 644 110.100.100

1.111.000.000.001.010.100 1700124 1023 1.000.010.011

10.101.111 257 14 1.100

10.111.010.110.101.011.110 2726536 2153 10.001.101.011

1.110.010 162 111565 1.001.001.101.110.101

10.110.100 261 35 11.101

11.100.011.100.011.111.000 3434370 14 1.100

10.100.100 244 7764 111.111.110.100

111.101.010.101.101.011 752553 166 1.110.110

11.111.111.111.110.110 377766 5513 101.101.001.011

10.101.110 256 166 1.110.110

101.110.101.010.011.100 565234 244 10.100.100

1.000.111 107 3321 11.011.010.001

101.011.101.011.101.010.110 5353523 176520 1.111.110.101.010.000

Page 38: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Altre basi di numerazione

Per convertire un numero in base 10 in qualsiasi altra base si usano sempre divisioni e resti. In realtà, nella

storia le uniche altre basi che sono state usate con una certa efficacia sono state 12, 20, 60. La base 12 deriva

dall’uso delle falangi di una mano (pollice escluso); la base 20 deriva dalle 20 dita normalmente possedute

tra mani e piedi; la base 60 è di origine incerta, ma è stata usata per il fatto che il numero 60 ha parecchi

divisori interi, e nel commercio permetteva di fare calcoli con velocità.

Ogni numero può essere usato come base, con regole analoghe a quelle già viste. Ad esempio, in base 7 ci

sono 7 cifre (0,1,2,3,4,5,6) e i numeri sono sempre polinomi nelle potenze crescenti della base:

60417 = 6*73+0*72+4*71+1*70 = (2058+0+28+1)10 = 208710

Alcuni esempi:

45110=33015 45110=1012013 45110=38011 45110=10A21

451:5=90 resto 1 90:5=18 resto 0 18:5= 3 resto 3 3:5= 0 resto 3

451:3=150 resto 1 150:3= 50 resto 0 50:3= 16 resto 2 16:3= 3 resto 1 3:3= 1 resto 0 1:3= 0 resto 1

451:11=41 resto 0 41:11= 3 resto 8 3:11= 0 resto 3

451:21=21 resto 10 (A) 21:21= 1 resto 0 1:21= 0 resto 1

Quando le basi non sono collegate tra loro come 2-16 o 2-8, conviene passare attraverso la base 10.

Ad esempio, trasformiamo 4256 in base 9:

1 da base 6 a base 10 4256 = 4*62 + 2*61 + 5*60 = 16110

2 da base 10 a base 9

161 : 9 = 17 resto 8 17 : 9 = 1 resto 8 1 : 9 = 0 resto 1

Risultato 1889

Alcuni esercizi (le soluzioni sono alla pagina seguente):

Numero Nuova base Risultato 7311 5

11004 15 2027 3 2446 9 2224 7 469 12

21213 9 1546 11 3324 7 5212 14

Page 39: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Soluzioni

Numero Nuova base Risultato 7311 5 3105

11004 15 5515 2027 3 102013 2446 9 1219 2224 7 607 469 12 3612

21213 9 779 1546 11 6411 3324 7 1167 5212 14 4614

Page 40: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Notazione binaria complementare

Nell’aritmetica del computer i numeri interi sono memorizzati in base 2. Normalmente occupano 32 cifre,

che possono coprire, senza segno, i numeri da 0 a 4294967295 (il repunit di 32 cifre binarie vale 232-1).

Va tuttavia tenuto conto che devono essere memorizzati anche i numeri negativi. Per fare questo viene tenuta

da parte una cifra binaria (la prima) per il segno. I numeri con segno memorizzabili sono quindi quelli

compresi tra -2147483648 e +2147483647. Sono tanti quanti quelli da 0 a 4294967295, ma sono

equamente distribuiti tra positivi e negativi.

I seguenti esempi, per semplicità, faranno uso di 8 cifre binarie (numeri compresi tra -128 e +127).

I numeri negativi sono memorizzati con la prima cifra uguale ad 1 (segno), ma non sono memorizzati come

quelli positivi. Per essi si fa uso della notazione binaria complementare: un numero negativo viene sostituito

con quello che manca al corrispondente positivo ad arrivare a 256 (questo vale in 8 cifre).

Rappresentazione di -12

Si parte da +12: 00001100

Si rovesciano i bit: 11110011 (ogni cifra viene sottratta da quella più grande nella base, che è 1)

Si aggiunge 1 00000001

Risultato 11110100

La notazione è detta complementare perché il risultato, in apparenza 244 , è ciò che manca a 12 per arrivare

a 256 (244+12=256). Vediamo due esempi di sottrazione:

Somma 20-12 (RISULTATO POSITIVO)

20 00010100

12 11110100

Risultato 100001000

La prima cifra 1 corrisponde a 256, e viene

scartata: in questo modo si mantiene un

numero di 8 cifre

Somma 7-12 (RISULTATO NEGATIV0)

7 00000111

12 11110100

Risultato 11111011 (*)

Questo numero, se fosse positivo (ma non lo è),

varrebbe 251, quindi per arrivare a 256 mancherebbe

5, che corrisponde al risultato della sottrazione. Per

verificarlo, cambiamo segno al risultato::

Si rovesciano i bit: 00000100 Si aggiunge 1 00000001 Risultato 00000101

L’opposto del numero negativo è 5, quindi il

numero negativo (*) è -5 (non 5)

Solo in visualizzazione/stampa un numero negativo viene convertito e presentato con il segno MENO.

I motivi per l’uso della notazione complementare sono 10:

1 le operazioni di complemento a 1 (che corrisponde al rovesciamento dei bit) sono molto veloci in

elettronica;

10 la somma tra numeri interi con segno è sempre eseguita come un’addizione (anche con i negativi, si

usano gli stessi registri della somma: i registri sottrattori, complessi e lenti, non sono più usati).

Anche in base 10 si può usare la notazione complementare, che consente di trasformare ogni sottrazione in

una sequenza di sottrazioni più semplici. Prendiamo come esempio l’operazione 1205-892. Visto che

abbiamo al massimo 4 cifre, ne usiamo 4 anche per il minuendo. Ogni cifra del numero 0892 viene sottratta

dalla cifra più grande (che in base 10 è 9), poi si aggiunge 1: risulta inizialmente 9107, poi 9108. La

somma risulta quindi:

1205+ 9108= -------- 10313

Scartando la sesta cifra, il risultato è (come ci si doveva aspettare) 313. Si noti che nell’esempio non viene

considerato il segno: l’obiettivo è solo di mostrare il procedimento in base 10.

Page 41: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

La sottrazione non esiste

Non proprio. La verità è che i numeri negativi sono memorizzati in notazione binaria complementare.

Prendiamo il numero -2. Si parte dal valore assoluto +2, poi si applicano le operazioni di complemento:

210 00000010 Valore assoluto

-210

11111101 1

11111110

Complemento a 1 Somma con 1 NUMERO COMPLEMENTATO A 2

Altro esempio, con -10:

1010 00001010 Valore assoluto

-1010

11110101 1

11110110

Complemento a 1 Somma con 1 NUMERO COMPLEMENTATO A 2

Altro esempio, con -15:

1510 00001111 Valore assoluto

-1510

11110000 1

11110001

Complemento a 1 Somma con 1 NUMERO COMPLEMENTATO A 2

Altro esempio, con -127:

12710 01111111 Valore assoluto

-12710

10000000 1

10000001

Complemento a 1 Somma con 1 NUMERO COMPLEMENTATO A 2

Quindi, come si fa una sottrazione? Esattamente come una somma, ma con i numeri negativi in forma

complementare. Questo semplifica grandemente l’elettronica necessaria per costruire i registri e la ALU.

Non esiste 85-10, ma 85+(-10). Non esiste -4-5, ma +(-4)+(-5), come mostrato nei due esempi:

riporti 1 1 1 1

85 0 1 0 1 0 1 0 1 positivo (così com’è)

-10 1 1 1 1 0 1 1 0 negativo (complementato a 2)

risultato 1 0 1 0 0 1 0 1 1 la nona cifra viene scartata

riporti 1 1 1 1 1

-4 1 1 1 1 1 1 0 0 negativo (complementato a 2)

-5 1 1 1 1 1 0 1 1 negativo (complementato a 2)

risultato 1 1 1 1 1 0 1 1 1 la nona cifra viene scartata

Sommando due opposti, dobbiamo aspettarci 0 come risultato, ed è esattamente quello che avviene:

riporti 1 1 1 1 1 1

-4 1 1 1 1 1 1 0 0 negativo (complementato a 2)

+4 0 0 0 0 0 1 0 0 positivo

risultato 1 0 0 0 0 0 0 0 0 la nona cifra viene scartata

Page 42: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Le limitazioni del computer

Nella notazione binaria a 8 bit, il numero che fa eccezione è -128, perché non ha un corrispondente positivo

(infatti i numeri positivi arrivano a +127). Se proviamo a fare il complemento a 2, si ottiene uno strano

risultato:

12810 10000000 Valore assoluto

-12810

01111111 1

10000000

Complemento a 1 Somma con 1 NUMERO COMPLEMENTATO

In pratica, l’opposto di -128 è lo stesso numero -128. Questo succede perché abbiamo esaurito le cifre

disponibili, ed è un limite fisico del computer. La stessa cosa avviene con un numero maggiore di cifre.

Un altro caso curioso si ha con numeri troppo grandi, come vedremo con 120+80:

riporti 1 1 1

120 0 1 1 1 1 0 0 0 positivo

80 0 1 0 1 0 0 0 0 positivo

risultato 1 1 0 0 1 0 0 0 negativo?

riporti 1 1 1 Troviamo il valore assoluto

0 0 1 1 0 1 1 1 Complemento a 1

1 Somma con 1

0 0 1 1 1 0 0 0 +56

Il risultato paradossale di 120+80 è -56 (possiamo anche notare che 120+80+56=256). Questa condizione

si chiama overflow, ed è un altro caso nel quale sono stati oltrepassati i limiti fisici dei numeri binari a 8 bit.

Ovviamente, i costruttori di computer non si limitano a questo tipo di numeri. Normalmente vengono usati

interi a 16 o 32 bit, con o senza segno, ma esistono anche memorizzazioni a 64 e a 128 bit, per usi altamente

professionali. I limiti numerici variano a seconda se viene usato il segno o no, come si vede nella tabella:

8 senza segno

min 0

max 255

con segno min -128

max +127

16 senza segno

min 0

max 65.536

con segno min -32.768

max +32.767

32

senza segno min 0

max 4.294.967.295

con segno min -2.147.483.648

max +2.147.483.647

64 senza segno

min 0

max 18.446.744.073.709.551.615

con segno min −9.223.372.036.854.775.808

max +9.223.372.036.854.775.807

128 senza segno

min 0

max 340.282.366.920.938.463.463.374.607.431.768.211.455

con segno min −170.141.183.460.469.231.731.687.303.715.884.105.728

max 170.141.183.460.469.231.731.687.303.715.884.105.727

Page 43: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Esercizi

Qualche esercizio per fare pratica. Le soluzioni sono alla pagina seguente.

Notazione binaria complementare – 8 bit Base 10 Valore assoluto Complemento

-1

-20

-40

-15

-100

-18

-50

-97

-111

-48

-2

-5

-90

-80

-70

-25

-101

-102

-10

-11

-106

-82

-29

-30

-12

-8

-63

-31

-64

-98

Page 44: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Soluzioni

Notazione binaria complementare – 8 bit Base 10 Valore assoluto Complemento

-1 00000001 11111111

-20 00010100 11101100

-40 00101000 11011000

-15 00001111 11110001

-100 01100100 10011110

-18 00010010 11101110

-50 00110010 11001110

-97 01100001 10011111

-111 01101111 10010001

-48 00110000 11010000

-2 00000010 11111110

-5 00000101 11111011

-90 01011010 10100110

-80 01010000 10110000

-70 01000110 10111010

-25 00011001 11100111

-101 01100101 10011011

-102 01100110 10011010

-10 00001010 11110110

-11 00001011 11110101

-106 01101010 10010110

-82 01010010 10101110

-29 00011101 11100011

-30 00011110 11100010

-12 00001100 11110100

-8 00001000 11111000

-63 00111111 11000001

-31 00011111 11100001

-64 01000000 11000000

-98 01100010 10011110

Page 45: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Foglio Elettronico Foglio Elettronico

Page 46: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Cosa c’è nelle memorie

Nelle memorie del computer tutte le informazioni sono binarie, essendo tutti i dispositivi usati a due

componenti. Nei mezzi di trasmissione si usano correnti o segnali luminosi (segnale presente/segnale

assente), nelle memorie si usano componenti magnetici (nord/sud) oppure ottici (plastica scavata oppure no).

La capacità di memoria di un singolo componente è minima (2 informazioni): esso viene chiamato, in

qualunque forma sia, bit (contrazione di binary digit=cifra binaria). Per motivi di praticità i bit sono

raggruppati a 8 per volta, costituendo unità dette byte.

Un byte è diviso in due semibyte o nibble (nibble e bite indicano, in inglese, l’azione di mordere), ed è

quindi rappresentabile in due modi:

Notazione binaria 00000000 01001010 11111111

Notazione esadecimale 0 0 4 A F F

Un byte può assumere 256 configurazioni (28=256), quindi anche la sua capacità informativa non è molto

alta, per cui è stato associato al singolo carattere (maiuscole, minuscole, cifre, segni di punteggiatura). La

scelta del byte di 8 bit è stata effettuata negli anni ’50, e si è dimostrata più che adeguata nel nascente mondo

dell’informatica, superiore, ad esempio, ad una differente a 6 bit. Il raggruppamento dei bit a 4+4 si è

rivelato molto più pratico, anche per questioni di elettronica.

In particolare, prendendo spunto da codici usati in telegrafia16

, un

comitato dell’ASA (American Standard Institute) elaborò, tra il

1960 e il 1963, una codifica detta ASCII (American Standard

Code for Information Interchange), inizialmente usata come

codice a 7 bit per le telescriventi. L’ottavo bit veniva usato per il

controllo della trasmissione, quindi non compariva nella codifica.

Sulle 128 combinazioni disponibili (27=128), poi, le prime 32 non venivano

usati per la rappresentazione dei caratteri, ma per codici di controllo della telescrivente (TTY=teletype), ad

esempio per andare a capo, tabulare, o far suonare il campanello di fine riga.

Essendo basata sull’alfabeto inglese, è stata adottata nel mondo occidentale, in

particolare nella codifica delle informazioni per i minicomputer e i primi PC.

Negli anni ’80 si è diffusa, con i PC IBM e

compatibili, la codifica “ASCII estesa” (extended

ASCII), che NON è un aggiornamento o una

estensione dell’ASCII, anche se i primi 128 caratteri

sono corrispondenti: in essa viene usato anche l’ultimo bit, consentendo di

raggiungere tutte le 256 configurazioni di un byte. In questo modo si sono potuti

codificare caratteri speciali presenti in varie lingue. Sono state introdotte numerose

versioni di ASCII esteso, distinte per code page: la pagina originale 437 (Nord

America), ad esempio, contenendo i caratteri accentati tipici di alcune lingue

romanze, poteva essere abbinata alla tastiera italiana.

La codifica introdotta dalla IBM per i suoi mainframe è nota come EBCDIC

(Extended Binary Coded Decimal Interchange Code), ed era stata usata anche

su altre piattaforme hardware (Siemens, Unisys).

La codifica a 6 bit realizzata per i computer della CDC17

era chiamata, senza tante sigle, “Display code”. Non più in

uso nelle memorie dei computer per le sue limitazioni,

viene usata in alcuni obiettivi per macchine fotografiche digitali.

16 Ad esempio, le codifiche Morse, Manchester, Miller, Baudot.

17 CDC (Control Data Corporation): fu la prima costruttrice di “supercomputer”.

Page 47: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

ASCII in action

Con i 7 bit ASCII si possono rappresentare 128 simboli (27). I codici (quelli adottati per i primi PC

all’inizio degli anni ‘80) sono i seguenti:

PRIMO NIBBLE (0..7)

0000 0001 0010 0011 0100 0101 0110 0111

SECONDO NIBLLE (0..15)

0000 NUL DLE 0 @ P ` p

0001 SOH DC1 ! 1 A Q a q

0010 STX DC2 “ 2 B R b r

0011 ETX DC3 # 3 C S c s

0100 EOT DC4 $ 4 D T d t

0101 ENQ NAK % 5 E U e u

0110 ACK SYN & 6 F V f v

0111 BEL ETB ‘ 7 G W g w

1000 BS CAN ( 8 H X h x

1001 TAB EM ) 9 I Y i y

1010 LF SUB * : J Z j z

1011 VT ESC + ; K [ k {

1100 FF FS , < L \ l |

1101 CR GS - = M ] m }

1110 SO RS . > N ^ n ~

1111 SI US / ? O _ o DEL

La tabella va letta combinando il primo nibble (o semibyte) con il secondo, costruendo così il byte

corrispondente. Teniamo sempre presente che il primo bit è sempre 0. Esempi:

0 0011-0000 32+16 48

4 0011-0100 32+16+4 52

@ 0100-0000 64

A 0100-0001 64+1 65

F 0100-0110 64+4+2 70

[ 0101-1011 64+16+8+2+1 91

\ 0101-1100 64+16+8+4 92

] 0101-1101 64+16+8+4+1 93

a 0110-0001 64+32+1 97

f 0110-0110 64+32+4+2 102

{ 0111-1011 64+32+16+8+3+1 123

| 0111-1100 64+32+16+8+4 124

} 0111-1101 64+32+16+8+4+1 125

Lo SPAZIO è codificato come 3210-2016-001000002.

Anche sui PC attuali è possibile inserire un carattere tramite il codice ASCII: il numero corrispondente va

scritto tenendo premuto il tasto Alt, usando il tastierino numerico. La conoscenza (anche a grandi linee)

della codifica permette a volte di cavarsi d’impaccio con una tastiera sconosciuta, come capita quando ci si

trova all’estero.

Page 48: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Esame del contenuto di un file testo

Un semplice modo di vedere la codifica ASCII si ha memorizzando un file testo con un programma tipo

“Blocco note” o direttamente dal prompt dei comandi. Esempio di file testo (che si suppone memorizzato su

disco con il nome testo.txt):

Come sul capo al naufrago L'onda s'avvolve e pesa L'onda su cui del misero Alta pur dianzi e tesa, Scorrea la vista a scernere Prode remote invan;

Attivando un programma di gestione esadecimale (uno dei

più noti: Free Hex Editor Neo), si ha una vista più completa

(a destra):

Il primo gruppo di dati rappresenta gli indirizzi dei byte

all’interno del file. Il contenuto del file viene presentato in

notazione esadecimale (2 nibble per volta) nella parte centrale, in forma più visibile nella colonna di destra.

Il trattino in mezzo alla colonna esadecimale è solo per comodità. Si può notare che per andare a capo viene

usata una sequenza di 2 caratteri, corrispondenti ai codici ASCII 13 e 10 (13=torna a inizio riga, 10=nuova

riga).

Man mano che l’informatica è andata diffondendosi, è nata l’esigenza di codificare un numero sempre

maggiore di simboli, sia per tener conto di alfabeti non europei, sia per altre

notazioni presenti, ad esempio, nella letteratura scientifica o musicale.

La codifica accettata come standard informatico è quella del consorzio Unicode, che

usa fino a 4 byte per carattere nella versione chiamata UTF-8. Il consorzio ha

iniziato i lavori tra il 1987 e il 1988, ed è giunto alla versione 6.0. Con 4 byte a

disposizione, il numero di combinazioni possibili è circa 232 (4.294.967.295).

La lunghezza della codifica è variabile:

i primi 128 caratteri (US-ASCII) occupano 1 byte;

i successivi 1920 (sufficienti a coprire tutti gli alfabeti latini ed altri come il cirillico e il greco)

occupano 2 byte;

i caratteri di altri alfabeti (tra cui cinese e giapponese) occupano 3 byte;

i caratteri meno comuni, inclusi alcuni archeologici, e una serie di altri simboli (tra cui gli

emoticon) occupano 4 byte.

Attualmente sono codificati oltre 109.000 caratteri provenienti da 93 alfabeti. Alcuni esempi:

€ Euro 20AC

Pi greco 03C0

Infinito 221E

QUI (Tsalagi o ᏣᎳᎩ )18

13C8

TLU (Tsalagi o ᏣᎳᎩ ) 13E1

Snowman 9731

Chiave di violino 1D11E

Chiave di basso 1D122

18 La lingua scritta della nazione degli Aniyounwiya, noti (erroneamente) come Cherokee. L’alfabeto fu creato da un

loro membro chiamato Sequoyah (ca.1767-1843), da cui ha preso il nome un albero (Sequoia Sempervirens). La cosa

interessante è che egli era analfabeta.

Page 49: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Sistemi di numerazione Formattazione condizionale

Page 50: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Gli inizi

Il foglio elettronico è stato inventato attorno al 1980 da Dan Bricklin e Bob Frankston19

, fondatori di una

ditta chiamata “Software Arts”. Il loro programma si chiamava VisiCalc, ed è stato seguito da molti altri, che

hanno lasciato qualche traccia nella storia iniziale del PC: Lotus 1-2-3,

Symphony, Quattro, MultiPlan, SuperCalc, Works. Attualmente i più noti

fogli elettronici sono Microsoft Excel e Open Office Calc. In questo corso

viene usato Open Office Calc.

Il corrispondente termine inglese “spreadsheet”, nella contabilità manuale,

indicava il libro dove venivano riportati i dati delle fatture, con le spese

separate in colonne distinte: lo stesso formato è stato adottato per le tabelle elettroniche di

calcolo. I fogli di calcolo sono spesso usati per memorizzare ed elaborare informazioni finanziarie o

scientifiche, data la loro proprietà di ricalcolare automaticamente i valori delle celle dopo ogni variazione.

In realtà, quando si attiva il programma, più che un foglio elettronico compare una cartella con più fogli

(normalmente 3).

Un foglio è formato da celle organizzate in righe e colonne. Le righe sono numerate, le colonne sono

indicate da lettere. Per superare i limiti dell’alfabeto esistono lettere multiple: dopo Z c’è AA, AB, AC; dopo

ZZ c’è AAA, AAB, AAC, … L’ultima colonna disponibile è AMJ, corrispondente a 1024 (210

). Le righe

disponibili sono 1048576 (220

).

Le celle possono contenere valori costanti, ad esempio numeri, testi20

, date.

I valori calcolati a partire da altri dati (per esempio, usando altre celle) sono detti formule o funzioni.

Una cella viene selezionata con le frecce direzionali o puntando il mouse. Abbinando il tasto “maiuscolo”

alle frecce o trascinando il mouse, è possibile selezionare un’area rettangolare di più celle. Una riga o una

colonna possono essere selezionate facendo click sulla loro intestazione (il numero o la lettera). L’intero

foglio può essere selezionato facendo click sull’intestazione vuota presente nell’angolo superiore sinistro

(vicino ad A1). Abbinando il tasto “Ctrl” con il click del mouse, è possibile selezionare celle anche non

adiacenti.

La selezione può essere tagliata/copiata e incollata con i comandi standard, che possono essere:

nel menu “Modifica”

nelle icone della barra “Modifica”

Ctrl-C, Ctrl-V, Ctrl-X

Possono essere inserite righe e colonne con il menu “Inserisci”. Per inserire più righe o colonne

contemporaneamente, è necessario selezionarne un certo numero: il numero di righe o colonne inserite è pari

al numero di righe o colonne selezionate.

19 Il padre di Bob si chiamava in realtà Frankenstein. Cambiò nome per motivi comprensibili.

20 I testi sono compresi tra virgolette: ad esempio, “questo è un testo”.

Page 51: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Le selezioni possono essere indicate con l’elenco delle celle (separato da “punto e virgola”) o con le

coordinate degli angoli (separati da “due punti”).

Negli esempi sottostanti, la prima selezione può essere indicata con A2;B4;C1, la seconda con B1:C2 (o

anche con C1:B2, nel qual caso il programma la converte automaticamente in B1:C2).

La cella che rimane evidenziata è l’ultima selezionata. Una selezione rettangolare viene solitamente

effettuata da “alto-sinistra” verso “basso-destra”: nelle esercitazioni seguenti verrà sempre considerata come

“ultima cella” quella in basso a destra.

Uno degli aspetti più significativi dei fogli di calcolo è la possibilità di inserire dati dinamici21

attraverso le

formule o le funzioni.

Una formula è indicata da un segno di uguale seguito da un polinomio, nel quale possono essere inclusi

valori costanti o riferimenti a celle (valori variabili). La sintassi della formula deve rispettare le comune

regole dell’algebra (parentesi e simboli di operazioni).

+ Addizione

- Sottrazione

* Moltiplicazione

/ Divisione

^ Elevamento a potenza22

Esempi:

=A1/2 (v. esempio a fianco)

=A1^2+3*A2^3+2*(5)

Il carattere dinamico del dato inserito come formula si nota quando essa contiene un riferimento ad una

cella. Modificando il valore della cella relativa, si ha la modifica immediata del risultato della formula

(questo è il significato dell’espressione “dato dinamico”).

21 Si intende che possono cambiare anche in modo automatico.

22 Attenzione !!! Questo simbolo non viene solitamente usato nei linguaggi di programmazione che verranno studiati

nel seguito di questo corso.

Se la cella B1 contiene la formula =A1/2,

ogni variazione della cella A1 viene riportata

immediatamente nella cella B1

Page 52: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Semplificando molto, si può dire che, in matematica, una funzione è una associazione tra un valore

(argomento; può essere anche un insieme di più valori) ed uno corrispondente (detto valore o, a volte,

immagine). Anche nei fogli elettronici esistono funzioni, che sono indicate da un segno di uguale all’inizio,

una parola chiave che indica cosa calcola la funzione, e una coppia di parentesi, contenente uno o più

argomenti.

Le funzioni più comuni sono =SOMMA() e =MEDIA(). Esse hanno come argomento una selezione di celle

(volendo, anche una sola, sebbene non abbia molto senso). Un esempio per verificarne il comportamento:

Scrivere valori numerici nelle celle tra A1 e B2

Nella cella A3 scrivere =SOMMA(A1;A2) Copiare la cella A3 nella cella B3: verrà trasformata in =SOMMA(B1;B2)

Nella cella A4 scrivere =SOMMA(A1:B2) In un’altra cella scrivere =SOMMA(A1;A2;B1;B2)

Il punto e virgola ; separa due indicazioni di cella. I due punti : indicano gli angoli di un’area rettangolare.

La funzione =MEDIA() ha un comportamento analogo, con le seguenti particolarità:

le celle vuote sono escluse dal calcolo; quelle contenenti ZERO sono incluse

Se la somma calcolata è nulla, nella cella esce il messaggio di divisione per zero: #DIV/0!

Esempio:

Come visto in precedenza, una formula =SOMMA(A1;A2), se copiata nella cella a fianco, viene trasformata

in =SOMMA(B1;B2). Questo potrebbe essere un effetto non voluto, perché capita a volte di voler effettuare i

calcoli su una zona fissa del foglio.

Per copiare una formula o una funzione senza modificare i riferimenti alle celle, si può usare il segno di $

(dollaro) davanti a una o a entrambe le coordinate del riferimento. La coordinata preceduta dal segno $ non

verrà modificata copiando la formula in un’altra cella.

=SOMMA($A$1:$A$2) selezione invariata =SOMMA($A1:$A2) colonna invariata =SOMMA(A$1:A$2) riga invariata

N.B.: la modifica delle coordinate non avviene se la formula viene spostata in un’altra cella (taglia+incolla).

Funzioni di aritmetica intera

Nell’aritmetica intera vengono spesso usati gli operatori INT e RESTO, in formule e funzioni che hanno a

che fare con divisioni intere:

=A1/2 Divisione esatta (possibili decimali) =INT(VALORE) Parte intera =INT(FORMULA) =RESTO(DIVIDENDO;DIVISORE) Gli argomenti devono essere interi

Al posto degli argomenti evidenziati in rosso si può indicare qualsiasi cosa sia numerica (valori, riferimenti

a celle, formule, funzioni). Gli argomenti vanno separati da ; (punto e virgola). Per provare l’effetto, basta

inserire dei numeri in qualche cella e scrivere una di queste formule in un’altra. Esempio:

In A1 scrivere 15; in B1 scrivere 4; in C1 scrivere =RESTO(A1;B1). Risultato: 3

Una volta completato l’inserimento della formula-

funzione, la cella A7 mostrerà il valore 5,4.

Come prevedibile, la funzione è dinamica:

modificando, ad esempio, la cella A5 perché

contenga 6, la media verrà ricalcolata in 5,6.

Page 53: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Applicazione delle formule SOMMA e MEDIA ad una zona.

Vediamo come la zona sia preferibilmente indicata con :, mentre l’elenco ottenuto con ; si traduce in una

scrittura complessa:

=SOMMA(a1:a6) la formula corretta =SOMMA(a1;a2;a3;a4;a5;a6) perdita di tempo

Applicazione delle formule MIN e MAX ad una zona.

In questo esempio, dove la zona è rettangolare, vediamo che l’elenco ottenuto con ; porta ad un errore.

Applicazione della formula RESTO a tutte le celle di una zona. Come già visto in precedenza, il resto della

divisione per 2 è associato alla parità di un numero (immagini iniziali)..

In questo caso la soluzione è scrivere la formula solo per una riga, poi usare le funzioni copia/incolla per

applicare la formula alle altre celle:

La formula RESTO con divisore 10 permette di estrarre le cifre delle unità da una cella:

Page 54: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Spesso accade di applicare una funzione al risultato di un’altra funzione (operazione detta composizione).

Questo implica l’uso di una parentesi che contiene un’altra parentesi, come può accadere in algebra. Come in

algebra, le parentesi si “svolgono” dall’interno verso l’esterno: l’ordine di esecuzione, quindi, non essendo

“da destra a sinistra”, è meno immediato da cogliere. Per individuare il concetto di “e poi” legato alla

successione temporale occorre individuare le parentesi dalle più interne alle più esterne.

Due esempi di calcolo composto, uno con sole operazioni aritmetiche e uno con funzioni:

Formula (ordine: 1-2) Calcolo 1 Calcolo 2 =(A1*(B1+C1)) B1+C1 A1*(risultato1) =INT(RESTO(A1;100)/10) RESTO(A1;100) INT(risultato1/10)

Questa funzione richiama un costrutto molto usato nella programmazione, detto “istruzione condizionale”.

Semplificando molto, si prevedono due possibili formule da calcolare: quale delle due viene scelta dipende

del risultato di un confronto tra valori. Il valore è condizionato, perché dipende da altri calcoli.

Il confronto può avere due risultati, vero o falso: la scelta del valore da assegnare alla cella viene per questo

motivo detta binaria o alternativa. Anche i confronti possibili sono binari, e sono i cosiddetti “operatori

relazionali” usati anche in programmazione. Sono 3 coppie di operatori contrapposti:

= Uguale

<> Diverso

>= Maggiore o uguale

< Minore

<= Minore o uguale

> Maggiore

Nelle formule condizionali vengono indicati il confronto e i due possibili risultati o calcoli (il primo se la

condizione risulta vera, l’altro in caso contrario), separati tra loro da ;

=SE(A1>0;"Positivo";"Non positivo") =SE(A2<>"";"non vuota";"vuota") =SE(A3=1;0;1) =SE(A2<>"";INT(A2/2);"")

La funzione =SE() è suddivisa in 3 parti:

=SE( controllo ; se-vero ; se-falso) 1 2 3

La (1) deve necessariamente essere un controllo (a volte detto “test”). Il risultato di un controllo può essere

solamente vero o falso. In base al risultato la cella potrà mostrare il valore (2) oppure il (3). Il secondo

valore (parte 3 della funzione) potrebbe anche mancare, ma non è una pratica consigliabile: in caso di

controllo “falso” il programma mostrerebbe un messaggio di errore.

Nel seguente esempio, si controlla se il contenuto di qualche cella è >=0 oppure <0. In una cella vicina si

vuole che compaia la scritta corrispondente (N.B.: solo la scritta, nessun calcolo).

Alcuni valori di esempio sono stati inseriti nelle celle D1, E1, F1. Nelle celle D2, E2, F2 è stata inserita la

funzione riportata in verde nella terza riga (la terza riga è presente solo per mostrare a formula).

A B C D E F 1 VALORE 2 -3 0 2 CALCOLO >=0 <0 >=0 3 =se =SE( D1>=0 ; ">=0" ; "<0")

N.B.: l’opposto di < non è >, è >=

È uno degli errori più comuni.

Page 55: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

1

Esaminare il contenuto di una cella (ad esempio, quelle

della colonna A).

Scrivere, nella cella a fianco, se il numero in A è multiplo

di 10 oppure no.

In questo caso occorre usare la funzione “resto”. La

formula va scritta nella cella B1, poi copiata nel seguito

della colonna B:

=SE( RESTO(A1;10)=0; "multiplo di 10"; "non multiplo di 10")

Un altro modo di porre il problema potrebbe essere: verificare se un valore termina con zero.

L’espressione “termina con zero” non è algebrica: deve essere trasformata in qualcosa che il programma può

fare. Questo “qualcosa” è un’operazione di “resto”: nel caso specifico un resto con divisore 10.

2 Esaminare il contenuto di una cella (ad esempio, quelle

della colonna A).

Se il numero è pari, la cella in B deve mostrare il doppio

della cella in A.

Se il numero è dispari, la cella in B deve mostrare il triplo

della cella in A.

L’espressione “pari” va trasformata usando la funzione

“resto uguale a ZERO” (il divisore è, ovviamente, 2): =SE( RESTO(A1;2)=0; A1*2; A1*3)

3

Confrontare due celle (nei 3 esempi: A1 con B1, A2 con B2, A3

con B3), e inserire nella cella a fianco un simbolo che descrive la

relazione tra le due celle.

Se la prima è maggiore della seconda, si dovrà visualizzare >

Se i valori sono uguali, si dovrà visualizzare =

Se la prima è minore della seconda, si dovrà visualizzare <

Questa situazione è complicata dal fatto che ci sono tre possibili risultati. La soluzione è un “doppio SE”:

uno dei casi della funzione SE contiene a sua volta una funzione “SE”.

=SE( A1<B1; "<"; SE( A1=B1; "="; ">") )

Page 56: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Confronti complessi

Quando devono essere verificate più condizioni contemporaneamente il controllo (parte 1 della funzione SE)

diventa “composto”. Per fare questo si può usare un connettivo logico tra DUE confronti distinti (analoghi ai

vari “et”, “vel”, “non” della logica matematica).

Mentre nella maggior parte dei linguaggi di programmazione questi connettivi sono delle parole inglesi

(normalmente AND, OR, NOT), nel foglio di calcolo dobbiamo usare la versione italiana.

Le funzioni logiche sono: E, O, NON.

(c1) E (c2) risulta VERO se entrambi in controlli sono veri, FALSO in ogni altro caso.

(c1) O (c2) risulta VERO se almeno uno dei due controlli è vero, FALSO solo se entrambi sono falsi

NON(c) è una negazione, tra parentesi ci va solo una condizione.

Nel seguente esempio le cose si complicano. Il confronto della funzione SE è a sua volta una funzione.

Nasce quindi una parentesi all’interno di un’altra. Mentre in algebra esistono differenti parentesi (tonde,

quadre, graffe), in informatica si usano solo le rotonde. Questo genera inizialmente un po’ di difficoltà, ma è

necessario abituarsi, perché le parentesi multiple si incontrano molto spesso.

Per evitare errori, occorre prestare molta attenzione nella chiusura delle parentesi interne. Se possibile, si

consiglia di aggiungerle in momenti successivi, in modo da controllare le possibili cause di errore una per

volta.

Esempio

Calcolare le cifre di un numero in notazione binaria. Il numero è contenuto

nella cella A1, i risultati parziali vanno scritti sotto (colonna A) e a destra

(colonna B).

Come è noto, per trasformare un numero in base 2 occorre una sequenza di

divisioni e resti per 2. I risultati delle divisioni saranno in colonna A, i resti

in colonna B. I due esempi di fianco rappresentano i numeri 25 e 80.

Una prima soluzione (semplificata) si ottiene con le formule:

=INT(A1/2) (cella A2)

=RESTO(A1;2) (cella B1)

Copiando le formule si ha un risultato corretto, ma non molto efficace nella visualizzazione.

Occorre ottenere l’effetto presentato nelle immagini precedenti. In pratica, sotto il valore

zero che viene incontrato nella colonna A bisogna che non si vedano valori, e

analogamente bisogna che non si vedano resti “non significativi” sotto l’ultimo “1” che si

calcola.

La soluzione NON è andare a cancellare il contenuto delle celle. Questa non è una

soluzione: è una perdita di tempo. La soluzione consiste invece nel verificare, attraverso le

formule di confronto, SE un valore è da visualizzare o se la cella deve apparire vuota.

Un valore vuoto viene rappresentato con "" (virgolette aperte e chiuse, VUOTE).

Quindi, per verificare se una cella è vuota, essa va confrontata con "".

Nella soluzione, le operazioni vanno eseguite solo se la cella sopra (la divisione) o la cella a fianco (il resto)

è NON VUOTA e contiene un numero MAGGIORE DI ZERO. Come si può notare, questa è proprio una

condizione doppia.

Le formule vanno sistemate con un operatore E che raggruppa i due confronti. Se i confronti non sono

verificati il valore visualizzato nella cella deve essere "" (virgolette vuote):

=SE( (A1<>"") E (A1>0); INT(A1/2) ; "") (cella A2) =SE( (A1<>"") E (A1>0); RESTO(A1;2) ; "") (cella B1)

Page 57: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

4 Verificare se un numero è compreso tra altri due. Ad esempio, controlliamo se il

valore della cella B1 è compreso tra quelli delle celle A1 e C1, mettendo in D1

una risposta (“SI” oppure “NO”).

In questo caso sono necessari due confronti. Nella cella D1 potrebbe andare

questa formula:

=SE( (A1<=B1) E (B1<=C1); "SI"; "NO")

=SE(A1<=B1<=C1;"SI";"NO") ERRORE

La seconda formula si incontra nei testi di algebra, dove si preferisce per la sua compattezza. Tuttavia non è

solitamente presente nell’informatica. Purtroppo generazioni di studenti si intestardiscono nel vano tentativo

di farla accettare ad un foglio di calcolo o in un linguaggio di programmazione, con l’unico risultato di

ottenere un messaggio di errore.

In realtà la soluzione è più complessa. La formula proposta va bene solo se i valori sono in sequenza

crescente. Per controllare anche una sequenza decrescente è necessario controllare due condizioni, con la

funzione O(), che risulta vera quando lo è almeno una (in totale abbiamo quindi quattro confronti):

=SE( ((A1<=B1) E (B1<=C1)) O ((A1>=B1) E (B1>=C1));"SI";"NO")

5 Verificare se due numeri sono entrambi pari. Nella riga 1 la condizione è vera (la

formula visualizza "A"), nelle altre righe la condizione è falsa (la formula visualizza

"B").

In questo caso sono necessari due controlli su resti della divisione per 2. La

condizione “pari” deve valere contemporaneamente, quindi è necessario un E().

La cella C1 potrebbe contenere questa formula:

=SE( (RESTO(A1;2)=0) E (RESTO(B1;2)=0); "A"; "B")

6 Verificare se almeno uno tra due numeri è pari. Nella riga 4 la condizione è falsa (la

formula visualizza "B"), nelle altre righe la condizione è vera (la formula visualizza

"A").

Anche in questo caso sono necessari due controlli su resti della divisione per 2, ma

questa volta basta una condizione “pari”, quindi useremo un O().

La cella C1 potrebbe contenere questa formula:

=SE( (RESTO(A1;2)=0) O (RESTO(B1;2)=0); "A"; "B")

7 Verificare se le distanze tra due coppie di numeri sono uguali. Come in

geometria, per “distanza” si intende “differenza”.

Qui c’è un piccolo inganno: sono coinvolte 3 celle, ma la formula è semplice:

basta confrontare 2 distanze. La cella D1 potrebbe contenere questa formula:

=SE( C1-B1=B1-A1; "S"; "N")

Page 58: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Funzioni Data

Il foglio elettronico è nato per eseguire dei calcoli, ma anche delle previsioni di bilancio. È quindi naturale

che presenti una serie di funzioni per l’elaborazione delle date, che entrano in molti calcoli finanziari.

Con un foglio vuoto, possiamo rapidamente inserire una serie di formule per le cosiddette “funzioni data”.

Inserimento di una data Data corrente =oggi()

ANNO – MESE – GIORNO Data assegnata con 3 numeri =data(2005;12;5)

Data assegnata con 3 numeri + correzione =data(2005;12;35)

Data assegnata con 3 numeri: variabile =data(A1;B1;C1)

Scadenze Data + giorni (anche in negativo) =F4+87 =F4-15

Data + mesi (anche in negativo) =data.mese(A1;A2)

Calcoli con due date Anni tra 2 date (*) =anni(A4;B4;0)

Anni tra 2 date, con decimali (*) =frazione.anno(A4;B4;1)

Numero giorni tra due date =giorni(A4;B4)

(stessa cosa con la differenza) =B4-A4

Calcoli sull’anno Giorni dell'anno di una data =giorni.anno(F5)

Bisestile? 0=no; 1=si (serve una data) =anno.bisestile(F5)

Pasqua di un anno =domenica.di.pasqua(F5)

Calcoli sul mese Numero giorni (serve una data) =giorni.mese(F5)

Informazioni riguardanti la data Estrazione dell’anno da una data =anno(H5)

Estrazione del mese da una data =mese(H5)

Estrazione del giorno da una data =giorno(H5)

Settimanale: 1=domenica; 7=sabato (*) =giorno.settimana(F5;1)

Le prime due formule di assegnazione di una data non si incontrano mai in questa forma.

Sono state messe a scopo dimostrativo, per vedere come il programma sistema gli errori.

Ad esempio, con i valori 2005;12;35 il foglio considera i 4 giorni di troppo del mese di dicembre e li

aggiunge al mese successivo, ottenendo così 04/01/2006. Naturalmente, se ci sono errori nel mese, i mesi

eccedenti il 12 vengono sommati al gennaio successivo. In caso di errori ancora più grandi, il foglio farà tutti

i calcoli possibili per sistemare la data, avanzando o indietreggiando del dovuto.

I calcoli sull’anno e sul mese si possono fare indicando tra parentesi una data o un numero:

Le informazioni riguardanti la data, invece, prevedono tra parentesi solo una data;

Il calcolo della scadenza può essere fatto anche con numeri negativi (si va indietro nel calendario);

La scadenza per mese prevede come primo argomento una data, come secondo argomento un numero;

Le 3 formule segnalate con (*) hanno più modalità di calcolo, ottenibili variando l’ultimo argomento: le

impostazioni scritte sono quelle consigliate per calcoli più complessi.

Formattazione

Può capitare che una data venga visualizzata in forma numerica, come nell’esempio

riportato a sinistra (in realtà il contenuto della cella è 30/12/2012).

La soluzione rapida a questo problema è di selezionare la

cella, attivare Formato – Celle, poi selezionare “Data”

nella linguetta “Numeri”.

Più avanti si vedrà una soluzione più elegante.

Page 59: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Esercizi

Supponiamo di avere un foglio con alcuni dati:

A1, B1 contengono due date;

A2, A3, A4 contengono tre numeri;

C1 contiene un numero.

I tre numeri nella colonna A, se associati in una formula =DATA, determinano una data (nell’esempio è una

data corretta, ma nell’esercizio 10 verificheremo casi errati come la combinazione 2012, 15, 17).

Ci sono 12 domande; le risposte sono nella pagina successiva.

Ogni domanda prevede la scrittura di una formula che può andare in qualsiasi cella, e che viene calcolata in

base ai valori indicati, che fanno parte delle celle riportate nell’esempio.

ATTENZIONE !!! I valori sono solo degli esempi. Se fossero diversi, i risultati potrebbero

cambiare. Non ci dovrebbe mai essere un valore costante in una formula, a

parte date sicuramente esistenti come potrebbero essere il primo di un mese o

l’ultimo di un anno (in quei casi, e solo in quelli, i numeri 1, 12 e 31 sarebbero

giustificati),

Quindi nessuna formula dovrebbe contenere i numeri delle celle: 29, 12, 11, 17, 3, 34. L’unica

eccezione è il 12, quando si cerca l’ultimo giorno di un determinato anno.

1 La data in B sommata con i giorni in C

2 Calcolare la data di Pasqua dell’anno successivo

3 Calcolare l’ultimo giorno del mese di una data.

4 Calcolare l’ultimo giorno dell’anno di una data.

5 Calcolare quanti giorni mancano alla fine del mese

6 Calcolare quanti giorni mancano alla fine dell’anno

7 Visualizzare 1 se nella prima metà del mese, 2 se nella seconda

8 Visualizzare "P" se il mese è pari, "D" se il mese è dispari

9 La stessa data tra un anno

10 Visualizzare "SI" se 3 celle contengono una data corretta (A-M-G), "NO" altrimenti

11 Visualizzare "SI" se il giorno esiste anche nel mese successivo, "NO" altrimenti

12 Visualizzare "SI" se il giorno della settimana di due date è lo stesso, "NO" altrimenti.

13 Calcolare la domenica precedente.

14 Calcolare la domenica successiva.

Page 60: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Soluzioni

1 La data in B sommata con i giorni in C =B1+C1 (N.B.:C1 è un numero puro)

2 Calcolare la data di Pasqua dell’anno successivo =DOMENICA.DI.PASQUA(ANNO(A1)+1)

3 =DATA(ANNO(A1);MESE(A1);GIORNI.MESE(A1))

4 =DATA(ANNO(A1);12;31)

5 Calcolare quanti giorni mancano alla fine del mese =GIORNI.MESE(A1)-GIORNO(A1)

6 Calcolare quanti giorni mancano alla fine dell’anno =GIORNI(DATA(ANNO(A1);12;31);A1)

7 Visualizzare 1 se nella prima metà del mese, 2 se nella seconda

=SE(GIORNO(A1)<=GIORNI.MESE(A1)/2;"1";"2")

La funzione GIORNI.MESE conta i giorni del mese; basta dividere per 2.

8 Visualizzare “P” se il mese è pari, “D” se il mese è dispari

=SE(RESTO(MESE(A1);2)=0;"P";"D")

La funzione MESE combinata con la funzione RESTO della divisione per 2.

9 La stessa data tra un anno

=DATA.MESE(A1;12) Soluzioni quasi identiche sono le seguenti:

=DATA(ANNO(A1)+1;MESE(A1);GIORNO(A1)) =A1+GIORNI.ANNO(A1)

Soluzione 1: usa la funzione DATA.MESE per avanzare di un certo numero di mesi.

Soluzione 2: usa la funzione ANNO per trovare l’anno successivo, abbinata alla funzione DATA. La prima

soluzione è più sicura, visto che il mese non viene modificato. La seconda fallisce solo se la cella di partenza

contenga il 29 Febbraio di un anno bisestile: in quel caso porta al 1 Marzo dell’anno seguente.

Soluzione 3: poco efficiente quando ci sono di mezzo anni bisestili. Sconsigliabile.

10 Visualizzare SI se 3 celle contengono una data corretta, NO altrimenti

=SE(E(MESE(DATA(A2;A3;A4))=A3;ANNO(DATA(A2;A3;A4))=A2); "SI";"NO")

Per “data corretta” si intende che i tre numeri sono ben combinati per formare una data.

In questo caso la cella visualizza SI. Potrebbe non essere così se, ad esempio, A3 contenesse 15, oppure A4

contenesse 45. In quel caso, il foglio calcolerebbe una data alterata per far tornare i conti, e quindi ci sarebbe

un mese a sua volta alterato, non più corrispondente alla cella A3.

11 Visualizzare SI se il giorno esiste anche nel mese successivo, NO altrimenti

=SE(GIORNO(A1)<=GIORNI.MESE(DATA.MESE(A1;1));"SI";"NO") =SE(GIORNO(DATA.MESE(A1;1))=GIORNO(A1);"SI";"NO")

La risposta negativa ci sarebbe se A1 contenesse una data con giorno 31 in un mese seguito da uno di A1,

oppure se fosse uno degli ultimi giorni di gennaio. Ad esempio, un giorno come 31/08/2012 , oppure

come 30/01/2012.

Soluzione 1: La funzione GIORNI.MESE applicata al mese successivo.

Soluzione 2: La funzione DATA.MESE per avanzare di un mese, abbinata alla funzione GIORNO.

12 Visualizzare SI se il giorno della settimana è lo stesso (2 date), NO altrimenti

=SE(GIORNO.SETTIMANA(A1)=GIORNO.SETTIMANA(B1);"SI";"NO")

13 =B1-GIORNO.SETTIMANA(B1;1)+1

14 =B1-GIORNO.SETTIMANA(B1;1)+8

Page 61: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Foglio Elettronico Algoritmi

Page 62: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

La formattazione condizionale

Rispetto al vecchio VisiCalc, i moderni fogli

elettronici hanno una vasta scelta di colori ed effetti

grafici, adatti per distinguere e separare le varie fasi

di un procedimento di calcolo.

Una definizione dell’aspetto visivo di una cella, o di

un gruppo di celle, viene chiamata stile: tra le

specifiche di uno stile è possibile progettare:

tipo di carattere (font)

colore di testo

colore di sfondo

presentazione dei dati (formato di output)

L’organizzazione degli stili è accessibile attraverso Formato-Stili e Formattazione, oppure premendo il

tasto F11. La finestra che esce mostra gli stili associati al programma Calc, uno dei quali è quello predefinito

(detto anche default).

Gli stili possono essere aggiunti o modificati con alcuni click del mouse. Con un click destro su uno degli

stili, viene attivato un menu nel quale è possibile scegliere di definire un nuovo stile (derivato da quello

selezionato) o modificare quello selezionato:

Le varie impostazioni dello stile sono

sparse nelle linguette disponibili:

nome Gestione

font Carattere

colore Effetto carattere

sfondo Sfondo

Bisogna passare per tutte queste fasi

per definire uno stile, che in seguito

potrà essere attivato tramite il nome

assegnato.

N.B.: ogni stile dovrebbe avere un nome che non sia “Senza nome1” come propone il programma.

Page 63: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Gestione dei formati – stili derivati

In alcune situazioni c’è bisogno di stili simili tra loro, ma comunque facilmente distinguibili. Esiste una

scorciatoia che permette di creare un nuovo stile partendo da uno già definito, facendo in modo che abbia le

stesse caratteristiche, senza dover perdere tempo a ridefinire tutto.

Per definire un nuovo stile, selezionare “Predefinito”, poi click destro e “Nuovo”.

Supponiamo di aver definito uno stile, chiamato “topo”, con queste caratteristiche:

font stencil, dimensione 20

colore rosso

sfondo giallo

Supponiamo che, per qualche esigenza visuale, sia necessario uno stile simile, ma

bianco su arancio (come a fianco), che chiameremo “gatto”.

Per evitare di perdere tempo ridefinendo tutte le caratteristiche dello stile, la strada

migliore è di creare uno stile derivato dal precedente e non dal predefinito. Si fa quindi click destro su

“topo”, poi “nuovo”, poi si prosegue come nel caso precedente.

In questo modo tutte le caratteristiche del nuovo stile sono “ereditate” da quello vecchio, ed è possibile

modificare solo quelle che devono essere diverse. Nel nostro esempio l’unica cosa da modificare sarebbero i

colori in “Effetto carattere”. Il vantaggio è che non c’è bisogno di impostare il resto, perché il nuovo stile è

già definito come il vecchio.

Si noti che modificando il formato dell’elenco degli stili in “gerarchico”, se ne ha una visione più chiara:

Questa procedura è più importante di quello che sembra. In questa situazione serve solo per

un giochino di colori, ma in studi avanzati diventa uno strumento fondamentale.

Page 64: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Stili e celle – formattazione condizionale

Assegnare uno stile ad una selezione di celle è immediato: basta scegliere lo stile desiderato nella finestra

“Stili e formattazione” e attivare il “modo riempimento” facendo click sull’icona con il barattolo di vernice.

Ogni cella su cui si fa click con il cursore trasformato in barattolo assume il formato selezionato.

Formattazione condizionale

L’assegnazione manuale dello stile è un lavoro molto modesto, e non ha nulla a che fare con l’elaborazione

automatica delle informazioni.

Il foglio elettronico dispone invece di uno strumento per la scelta automatica del formato in base al contenuto

delle celle. Un esempio molto semplice (anche se non molto utile) potrebbe essere una formula per colorare i

numeri pari diversamente dai numeri dispari.

Nell’esempio sottostante (che verrà risolto nella prima esercitazione proposta) sono stati inseriti dei numeri

nel foglio. Sono stati preparati due stili, chiamati blu e rosso, in cui l’unica differenza è il colore di testo (che

corrisponde, ovviamente, al nome dello stile). L’effetto che si vuole raggiungere è il seguente:

Inoltre, appena uno dei numeri del riquadro viene variato, deve rispondere immediatamente all’inserimento

del valore con la corrispondente variazione di colore (questo è l’automatismo che deve scattare).

È questa la formattazione condizionale: il formato viene scelto in base a una condizione. Le istruzioni da

inserire nel foglio per ottenere l’effetto desiderato sono infatti molto simili a quelle già incontrate nelle

formule condizionali (operatori relazionali e logici, in pratica confronti e condizioni composte).

Page 65: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Come salvare gli stili

Per eseguire diverse esercitazioni con gli stessi stili, può risultare comodo

memorizzare un gruppo di impostazioni in modo che ad ogni nuova apertura

del programma si presentino già predisposte.

Supponiamo di avere preparato tre stili (blu, rosso, verde) e li vogliamo

conservare per il futuro. Il foglio dovrebbe essere vuoto (altrimenti anche i dati

presenti si ripresenteranno ad ogni nuova apertura).

Fase 1: salvataggio delle impostazioni

Attivare:

File – Modelli – Salva

Mettere un nome nella casella “Nuovo modello” (esempio: liceo)

Premere OK (N.B.: non ci sono effetti visibili)

Page 66: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Fase 2: memorizzazione modello

Attivare: File – Modelli – Gestisci

Fare doppio click su “Personalizzati”, dovrebbe comparire il nostro nuovo stile (liceo).

Nella scelta “Comandi” (sulla destra) attivare “Imposta come modello predefinito (anche in questo caso non

ci sono effetti visibili immediati). Da questo momento, ogni nuovo foglio avrà gli stessi stili al momento in

uso.

Per riattivare il modello “predefinito” si entra sempre in questa fase “Gestisci”, solo che nella scelta

“Comandi” compare, come ultima voce, “Ripristino del modello predefinito”, seguito da “Foglio

Elettronico”. Dopo questa scelta, il modello per ogni nuovo foglio sarà nuovamente quello standard.

Page 67: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Zone e conteggi

Le zone di un foglio elettronico sono selezioni rettangolari di celle contigue. Alle zone spesso si assegna un

nome, più significativo e comodo da usare rispetto alla definizione fatta usando le coordinate delle celle

estremanti.

L’esempio seguente contiene attori e personaggi del film “Quella sporca dozzina”. Le date di nascita e di

morte si riferiscono ai personaggi, non agli attori23

.

L’intervallo A3:A14, ad esempio, potrebbe essere chiamato “attori”; l’intervallo C3:C14 potrebbe essere

chiamato “condanne”; e così via, identificando un particolare intervallo con una parola, che è solitamente più

significativa dell’indicazione delle celle.

La procedura è semplice: dopo aver selezionato la zona, si attiva l’elenco dei nomi di zona con la sequenza

Inserisci-Nomi-Definisci, oppure con la combinazione CTRL+F3. In questo riquadro si può scrivere il nuovo

nome, ed è anche possibile modificare il riferimento alle celle (che si trova in basso).

Si può notare che i riferimenti contengono tutti il segno $, ad indicare che sono tutti riferimenti fissi (anche il

nome del foglio): tali debbono rimanere, altrimenti non sarà possibile costruire formule corrette. Il nome del

foglio, comunque, è di importanza molto trascurabile rispetto alla zona, che solitamente abbiamo sotto gli

occhi.

23 Le date sono puramente indicative. L’unico riferimento nel film è che l’ambientazione è nella primavera del 1944.

Page 68: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

In LibreOffice, nonostante le guide in linea suggeriscano la stessa procedura di OpenOffice, la gestione

dei nomi (comunque accessibile con CTRL+F3) è sepolta nei menu, e si raggiunge con:

Foglio-Aree con Nome ed espressioni-Gestisci

Page 69: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Funzioni di conteggio

I conteggi sulle celle possono essere effettuati con tre funzioni:

=CONTA.VALORI(zona) Conteggio celle non vuote

=CONTA.VUOTE(zona) Conteggio celle vuote (attenzione: non sono quelle con valore 0)

=CONTA.SE(zona;criterio) Conteggio condizionato

Supponiamo di avere una zona chiamata “numeri”, con limiti A1:C5, ed un paio

di celle campione (E1, E2).

I risultati di CONTA.VALORI(numeri) e CONTA.VUOTE(numeri) sono 15 e 0.

Questi valori, ovviamente, mutano se vengono effettuate modifiche (come

variazione di celle, inserimenti e/o cancellazioni di righe o celle).

Vediamo alcuni esempi di conteggi condizionati numerici. Il confronto più semplice è l’uguaglianza, dove

l’unico criterio è il numero campione. Come già visto in altre situazioni, non essendo una buona pratica usare

valori costanti (1 e 2), i confronti sono effettuati con una cella (3 e 4).

Il criterio di uguaglianza può essere scritto con il segno di =, che DEVE essere tra virgolette. In questo caso,

però, occorre fare attenzione quando il confronto è con una cella: segno e cella DEVONO essere collegati da

un & (ampersand). Questa notazione composta diventa obbligatoria con gli altri operatori relazionali:

<>(diverso), >, <, >=, >=. Qualche esempio:

uguaglianze altro

=CONTA.SE(numeri;20) 2 =CONTA.SE(numeri;"<19") 11

=CONTA.SE(numeri;"=19") 2 =CONTA.SE(numeri;"<"&E2) 11

=CONTA.SE(numeri;E1) 1 =CONTA.SE(numeri;">="&E2) 4

=CONTA.SE(numeri;"="&E2) 2 =CONTA.SE(numeri;"<>"&E2) 13

Con le stringhe la faccenda non è così semplice. La ricerca normale verifica se l’oggetto del criterio è

presente nella zona (non importa in quale posizione della cella). Con una zona “nomi” F1:H5, avremo:

=CONTA.SE(nomi;"q") 2

=CONTA.SE(nomi;"<>sp") 9

=CONTA.SE(nomi;J1) 4

=CONTA.SE(nomi;"<>"&J2) 9

Le cosiddette espressioni regolari (regexp) permettono di controllare il contenuto della stringa in varie

posizioni, secondo i seguenti criteri:

^xxx inizia con ... N.B.: esistono anche altre clausole per le

regexp, ma non sono parte di questo corso. xxx$ termina con ...

.* qualsiasi cosa

Negli esempi ci sono espressioni tra virgolette; in realtà si dovrebbero usare le celle, come in (*):

=CONTA.SE(nomi;"sp") contiene "sp" 3

=CONTA.SE(nomi;".*sp.*") Equivalente 3

=CONTA.SE(nomi;"^sp$") ESATTAMENTE UGUALE a "sp" 1

=CONTA.SE(nomi;"q$") termina con "q" 1

=CONTA.SE(nomi;"tto$") termina con "tto" 2

=CONTA.SE(nomi;"^ga") inizia con "ga" 2

(*) =CONTA.SE(nomi;J5) inizia con "g";termina con "e" 3

=CONTA.SE(nomi;"^g.*la.*e$") inizia con "g";termina con "e";in mezzo "la" 2

Nell’ultimo esempio vanno distinti 5 componenti: g + qualsiasi + la + qualsiasi + e

Page 70: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Per gestire i criteri di ricerca sulle stringhe, attivare Strumenti – Opzioni – OpenOffice Calc – Calcola:

Attivando “Celle intere”, la stringa cercata deve coincidere con l’intero contenuto della cella. In quel caso, il

conteggio =CONTA.SE(nomi;"sp") includerebbe solo le celle il cui contenuto è "sp".

I conteggi degli esempi precedenti sono stati ottenuti con la configurazione riportata nell’immagine, grazie

alla quale è sufficiente che la stringa di ricerca sia presente all’interno delle celle.

Page 71: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

1 - pari e dispari Risolviamo l’ultimo esempio proposto. La prima cosa da fare è definire i due stili blu e rosso. Qualunque

font e formato va bene, l’importante in questo esercizio non è fare un’opera d’arte, ma imparare a derivare

gli stili.

Evitiamo di perdere tempo a definire gli stili separatamente. Prima di tutto non si rendono le cose più

semplici, e nemmeno più rapide; in secondo luogo, non avrebbe senso in un’esercitazione sugli stili derivati.

Possiamo poi creare il nostro “campo di gara”, come si dice in gergo: altro non è che lo spazio nel foglio nel

quale mettiamo i nostri dati e applichiamo le nostre formule.

Non c’è bisogno di andare a scrivere i numeri cella per cella; in realtà si può preparare lo schema usando 4

celle (1). Trascinando il quadratino nero che c’è in fondo alla selezione, si copia verso il basso (2), poi verso

destra (3):

1 2 3

Per applicare la formattazione condizionale, la cosa più comoda è selezionare nuovamente il campo di gara

nella maniera abituale (da alto-sinistra a basso-destra): in questo modo la cella evidenziata sarà J13. Questo

vale nell’esempio riportato: se il campo di gara è diverso, la cella in basso a destra potrebbe essere diversa.

L’importante è sapere qual è la cella evidenziata da un contorno nero.

Page 72: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Le condizioni

Nel menu “Formato”, scegliere “Formattazione condizionale”. Compare un riquadro come il seguente:

È possibile specificare tre formati condizionati, spuntando le caselle corrispondenti; in questo esercizio ne

basteranno due (visto che la scelta è tra numeri pari e numeri dispari).

Attenzione !!! Nelle due condizioni va indicata una formula, non un valore (per verificare la parità di un numero occorre

un calcolo), quindi in entrambe le condizioni va selezionato “La formula è”.

Nello spazio a fianco va messa la formula che deve essere verificata. Nella formula va messa la cella

evidenziata dal contorno nero; sarà il programma a calcolarla per tutte le celle della selezione.

La prima condizione è applicata ai numeri pari, quindi la formula descrive un “resto della divisione per 2

uguale a zero”. La seconda condizione è quella opposta (resto maggiore di zero).

Le formule vanno scritte esattamente come se fossero dentro una formula =SE.

Si può anche includere la clausola SE, l’effetto non cambia. Volendo proprio perdere del tempo, si può

metterci anche il segno di =: il programma lo scarterà senza fare una piega. Sono quindi equivalenti:

RESTO(J13;2)=0

SE(RESTO(J13;2)=0) clausola inutile

=SE(RESTO(J13;2)=0) una vera perdita di tempo

Page 73: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

2 - Divisori di un numero Il risultato che vogliamo ottenere è di visualizzare i divisori di un numero in un riquadro 10x10.

Nell’immagine sottostante sono visualizzati i tre formati che verranno usati.

I numeri considerati non saranno superiori a 100.

Come già visto, per inserire i valori nel foglio bastano quattro celle:

Con due trascinamenti si completa il quadro:

Page 74: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

GLI STILI

Passiamo poi a definire 3 stili, ciascuno derivato dal precedente. Solo il primo è derivato da “Predefinito”:

Predefinito

divisore (derivato da “Predefinito”)

non divisore (derivato da “divisore”)

titolo (derivato da “non divisore”)

Il font usato negli esempi è “Stencil” con grandezza 20. Il formato “titolo” serve più che altro per le

intestazioni; non è molto importante per gli stili, ma solo come “stile derivato”.

LE CELLE

Il campo di gioco (NON il foglio) va sottoposto a formattazione condizionale. Come nell’esercizio

precedente, le celle interessate potrebbero essere diverse. In questo esempio, la cella i1 contiene il divisore,

la zona sottoposta a formattazione condizionale termina nella cella j12. Le formule seguono queste

indirizzi, quindi va osservato che:

$i$1 necessita dei segni $ perché il dividendo è unico, e la sua cella deve essere fissa

j12 corrisponde alla cella rimasta evidenziata dalla selezione (solitamente quella in basso a destra).

ALTRI CALCOLI

Se vogliamo contare quanti sono i divisori occorre predisporre

una zona analoga a quella dei numeri, contenente i resti delle

divisioni del dividendo per essi. Per quella zona potrà essere

attivato un conta.se, per contare quanti sono i valori zero.

Sempre con il valore 70, in questo esempio i resti sono stati

sottoposti ad una formattazione condizionale inversa rispetto ai

divisori.

Per la zona dei resti basta UNA cella, le altre sono copie:

Page 75: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

3 - TIC-TAC-TOE IL GIOCO

Questo gioco è noto con diversi nomi:

tic-tac-toe Stati Uniti d’America

noughts and crosses Inghilterra

X’s and O’s Irlanda

tres en linea Spagna

ristinolla Finlandia

amőba Ungheria

tris Italia

hiruko artzain-joko Paesi Baschi

Come sicuramente ben noto, i giocatori si alternano nell’occupare le caselle di una griglia 3x3 con i rispettivi

simboli (X e O), e vince chi riesce ad allineare tre simboli, orizzontalmente, verticalmente o diagonalmente.

Se giocato bene, finisce sempre in parità: per questo motivo è considerato un gioco per bambini.

Questa esercitazione non fa queste considerazioni, né si propone di costruire un programma di gioco.

Il suo obiettivo è di fare un po’ di pratica con i nomi di zona, la formattazione condizionale e le

operazioni di conteggio in un foglio elettronico.

IL FOGLIO DI CALCOLO

Per realizzare il nostro gioco, possiamo organizzare il foglio di calcolo in questo modo:

Una zona 3x3 (a1:c3) costituisce il campo di gioco. Verranno usati alcuni accorgimenti di stile per

evidenziare la partita in corso. Per ogni giocatore ci sono 8 zone di calcolo, che consentono di stabilire il

risultato della partita. Sono 8 perché corrispondono agli 8 modi con i quali può essere vinta la partita (3

righe, 3 colonne, 2 diagonali). Altre due celle sono usate per i messaggi di partita terminata (“vince X”

oppure “vince O”).

Attenzione !!! Come nelle altre esercitazioni, le celle indicate sono relative agli esempi visualizzati. Se le zono scelte non

fossero le stesse, gli indirizzi andrebbero modificati di conseguenza.

Page 76: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

LE ZONE

Per facilitare il riconoscimento delle celle, si possono definire 6 zone corrispondenti a righe e colonne del

campo di gioco. Altre due zone sono quelle per i calcoli. Per quanto riguarda le diagonali, non è possibile

costruire zone che non siano rettangolari: quindi le celle di calcolo corrispondenti dovranno sommare i

risultati delle 3 celle interessate con una formula.

Righe e colonne del campo di gioco sono larghe (o alte) 3 celle. Le zone che servono per l’esercitazione

sono 8 (alle quali vanno aggiunte le diagonali, che vanno calcolate a parte):

riga1, riga2, riga3 le righe del campo di gioco

col1, col2, col3 le colonne del campo di gioco

calcoliO, calcoliX servono a calcolare il numeri di simboli per ogni giocatore

Lo schema delle zone sarà il seguente:

GLI STILI

Prima di iniziare, scaricare il font Tycho (freeware) ed installarlo sul proprio computer. Il file va copiato

nella cartella c:\windows\fonts.

Passiamo poi a definire 3 stili, ciascuno derivato dal precedente. Solo il primo è derivato da “Predefinito”:

Predefinito

x (derivato da “Predefinito”)

o (derivato da “x”)

invisibile (derivato da “o”)

Come si può intuire, lo stile “x” e lo stile “o” servono a visualizzare i simboli dei giocatori; lo stile

“invisibile”, invece, serve a nascondere ogni altro simbolo inserito.

Il font consigliato è Tycho grassetto. con grandezza 20. Per predisporre lo stile “invisibile” occorre

assegnare lo stesso colore al carattere e allo sfondo (si consiglia un colore chiaro, ad esempio: GrigioBlu).

Ancora una volta, evitiamo di perdere tempo a definire i colori separatamente. Basterà definire uno

sfondo nello stile principale “x”: poi si potranno scegliere tre colori diversi per il carattere, accertandosi solo

che l’ultimo sia uguale allo sfondo, per ottenere l’effetto24

“invisibile”.

24 È un “effetto” perché in realtà, qualsiasi cosa contenga la cella, sembrerà vuota.

Page 77: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

LE CELLE

Predisporre le celle del campo di gioco con larghezza e altezza 0.90 cm.

Questo vale per usare il font consigliato. Se si cambiano font o dimensioni, si dovranno sistemare i numeri

per ottenere un effetto gradevole.

Il campo di gioco (NON il foglio) è sottoposto a formattazione condizionale.

ATTENZIONE !!!

In questa esercitazione, le prime due condizioni sono legate a valori specifici del gioco (X e O); quindi nella

loro definizione dovremo usare la clausola “Il valore della cella è…”.

Come sempre, le celle indicate sono relative agli esempi visualizzati. Se le zono scelte non sono le stesse, gli

indirizzi andranno modificati di conseguenza. Lo stesso vale se la cella campione non è la C3.

ATTENZIONE !!!

I valori usati non sono numerici, quindi vanno indicati tra virgolette;

Lo stile “invisibile” nasconde qualsiasi cosa che non sia “X oppure O”;

La terza condizione è una formula (ha più possibilità di un “valore”);

La formula contiene un’espressione logica composta, visto che i valori da verificare sono due.

Ecco un possibile effetto della formattazione a partita in corso:

Page 78: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

I CALCOLI

Ci sono 8 modi per vincere la partita, quindi 8 zone serviranno per verificare la presenza di 3 simboli uguali:

6 dovrebbero avere un nome (di riga o di colonna), altre 2 non si possono definire con un nome perché sono

rettangolari, ma i calcoli ci devono essere comunque.

Le zone di conteggio sono sempre doppie, visto che i giocatori sono 2.

In colonna G ci sono i calcoli per le X, in colonna H per le O. Lo schema dell’esempio è il seguente:

G5 X sulla riga 1 H5 O sulla riga 1

G6 X sulla riga 2 H6 O sulla riga 2

G7 X sulla riga 3 H7 O sulla riga 3

G8 X sulla colonna 1 H8 O sulla colonna 1

G9 X sulla colonna 2 H9 O sulla colonna 2

G10 X sulla colonna 3 H10 O sulla colonna 3

G11 X sulla diagonale principale H11 O sulla diagonale principale

G12 X sulla diagonale secondaria H12 O sulla diagonale secondaria

G13 Eventuale vittoria di X H13 Eventuale vittoria di O

Le zone corrispondenti alle righe e alle colonne dovrebbero avere già un nome, quindi i conteggi devono

fare riferimento ad esso.

Due esempi di calcoli (G5 e H10):

Le altre celle di calcolo possono essere preparate con formule simili, tranne nel caso delle diagonali, dove si

dovrà procedere elencando direttamente le celle.

Nella cella G12 si contano le X sulla diagonale secondaria (C1-B2-A3). Occorre fare tre conteggi diversi

e sommare i risultati. La formula sarà quindi:

Le altre celle per le diagonali avranno formule simili.

La vittoria di uno dei due giocatori si ha quando una delle zone di calcolo contiene tre X oppure tre O.

Normalmente solo una zona sarà vincente, ma esiste anche una remota possibilità di trovare una “doppia”

vittoria (ad esempio, una riga e una colonna che vengono completate contemporaneamente).

Per non avere troppi problemi, basterà una formula che dia la segnalazione quando almeno una zona risulta

vincente. La seguente formula serve per l’eventuale vittoria del giocatore O (quindi va in H13):

Attenzione !!! L’esercitazione si ferma qui. Ci sono molte cose che mancano per produrre un

programma di gioco funzionante. Ad esempio, non viene controllata la regolarità delle

mosse, che prevede l’inserimento dei simboli alternati: volendo, si possono inserire tre

X in fila e il foglio darà comunque X vincente, anche se la partita è irregolare.

Le celle devono contenere una sola “x” o una sola “o” (per

questo sono necessarie le regexp e ).

Page 79: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

4 - Battaglia navale ATTENZIONE !!!

Come nell’esercitazione precedente, non si tratta di costruire un gioco completo. Non ci sono controlli sulla

regolarità della partita, dato che l’obiettivo è di fare pratica sulla formattazione condizionale. Un programma

di gioco è ben oltre gli obiettivi di questo corso.

IL FOGLIO DI CALCOLO

Possiamo organizzare due fogli di calcolo (attacco e difesa) in questo modo:

L’ipotesi è che si disponga di una flotta da 15 celle, che potrebbe essere così formata:

1 portaerei da 4 celle (4);

2 incrociatori da 3 celle (6)

2 caccia-torpediniere da 2 celle (4)

1 motoscafo da 1 (1).

Le zone A1:J10 potranno essere chiamate “mare” (servono due zone, una

per ciascun foglio: qui sono chiamate mare_attacco e mare_difesa).

Per l’attacco e la difesa servono 2 zone di calcolo, che consentono di stabilire il risultato della partita. Per

calcolare le informazioni note, tn attacco si contano le celle “colpite”, in difesa si contano le celle “a galla”.

Se le celle colpite sono 15, l’attacco vince

Se le celle “a galla” sono zero, la difesa perde

Page 80: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

LE ZONE

Per facilitare il riconoscimento delle celle, si possono definire 4 zone corrispondenti alle zone di mare e a

quelle di calcolo.

Queste ultime (chiamate punti_attacco e punti_difesa) sono composte da una cella ciascuna, e devono

servire a contare, rispettivamente, quante celle della flotta nemica sono state colpite e quante celle della

propria flotta sono ancora a galla.

GLI STILI

Prima di iniziare, scaricare il font Tycho (freeware) ed installarlo sul proprio computer.

Passiamo poi a definire 4 stili, ciascuno derivato dal precedente (solo il primo è derivato da “Predefinito”):

nave (derivato da “Predefinito”)

colpito (derivato da “nave”)

mancato (derivato da “x”)

affondato (derivato da “o”)

Il font da usare è Tycho grassetto. con grandezza 20. Ogni stile potrà essere “invisibile”, con lo stesso

colore per il carattere e lo sfondo (quello che deve comparire è una cella colorata, non un carattere

particolare.

Con lo stile “nave” si può inserire la propria flotta, segnando le navi con delle “x”. Lo stile usato

nell’esempio è “grigio su grigio”. Per il “colpito” si può usare il “+”, per il “mancato” il “-“. Un altro stile

“affondato” dovrà essere di color diverso dal “colpito”, e si potrà usare, ad esempio, una lettera “a”.

Esempio:

Attacco Difesa

+ Colpito x Nave “a galla”

- Mancato + Colpito

a Affondato - Mancato

LE CELLE

Predisporre le celle dei due “mari” con larghezza 0.72 cm e altezza 0.81 cm.

Come sempre, questa è una scelta fatta in base al font scelto. In caso di situazioni

diverse, le dimensioni andranno adattate.

Il campo di gioco (NON il foglio) è sottoposto a formattazione condizionale.

Page 81: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

FOGLIO MARE_ATTACCO

Il foglio di attacco non può visualizzare la flotta nemica, tranne per le navi colpite o affondate. Mantiene

comunque traccia dei colpi andati a vuoto, attraverso i colori.

La cella/zona punti_attacco visualizza il totale delle celle della flotta nemica colpite + quelle affondate.

Nell’esempio è L2.

FOGLIO MARE_DIFESA

In difesa sono visibili le celle per tutta la propria flotta (a galla e colpita):

La cella/zona punti_difesa visualizza il totale delle celle della propria flotta rimaste “a galla”.

Anche qui è L2.

I CALCOLI

Contenuto della cella/zona punti_attacco

Contenuto della cella per la vittoria

Contenuto della cella/zona punti_difesa

Contenuto della cella per la sconfitta

Page 82: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

5 - CALENDARIO ATTENZIONE !!! Questa esercitazione è complessa (6 pagine), e perché serva a qualcosa,

si consiglia di:

procedere con calma;

non risolvere le cose con metodi infantili;

accertarsi di avere finito una fase prima di passare a quella successiva.

L’obiettivo finale è quello di ottenere un calendario annuale (come quelli da parete) con diversi effetti visivi,

come schematizzato sotto (un’intestazione con il nome del mese in alto, i giorni di ciascun mese incolonnati

con le domeniche in evidenza. L’anno deve comparire solamente in una cella. Tutto deve essere calcolato.

GLI STILI

Servono 3 stili, ciascuno derivato dal precedente. Solo il primo è derivato da “Predefinito”:

Predefinito

mese (derivato da “Predefinito”)

domenica (derivato da “mese”)

settimana (derivato da “domenica”)

Mese serve per l’intestazione del mese (Gennaio, Febbraio, …): nell’esempio è “bianco su arancio);

Domenica serve per le domeniche: nell’esempio è “rosso su bianco”;

Settimana serve per gli altri giorni della settimana; nell’esempio è “blu su giallo”.

Gli stili devono essere definiti per visualizzare delle date, quindi nel riquadro “Numeri” andrà

selezionato “Data”. Ci sarà anche bisogno di inserire formati particolari, in una zona del riquadro

che si trova in basso a sinistra, e che serve per i formati definiti dall’utente. Il particolare è

riportato nell’immagine a destra.

Il formato “mese” dovrà avere come codice del formato “MMMM AAAA”, gli altri due “GGGG G”. La

differenza sta nell’effetto provocato: MMMM AAAA indica “nome del mese + anno”, GGGG G indica “nome

del giorno + giorno. Se il secondo stile è derivato dal primo (o anche dal “Predefinito”, occorrerà modificare

solo questa parte del formato. Se il terzo stile è derivato dal secondo, NON CI SARÀ BISOGNO DI

MODIFICARE IL FORMATO DATA, SOLO I COLORI.

Particolare del formato

definito dall’utente

Page 83: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

LO SCHEMA

L’intero calendario può essere calcolato a partire da 7 celle. In realtà le celle che vanno riempite direttamente

sono 4, le altre 3 potrebbero anche essere copiate:

A1 contiene l’anno (valore numerico), in modo che il calendario sia VARIABILE: l’obiettivo è fare in

modo che basti cambiare questa cella per ricalcolare immediatamente tutto il calendario dell’anno;

A2 contiene il primo dell’anno, senza indicare il valore dell’anno: viene preso dalla cella A1;

B2 contiene il primo del mese successivo di A2 (il primo Febbraio), attraverso;

A4 contiene il giorno SUCCESSIVO DI A3 (il secondo del mese, sempre di Gennaio).

A B

1 2012

2 =data($a$1;1;1) =data.mese(a2;1)

3 =data($a$1;1;1) =data.mese(b2;1)

4 =a3+1 =b3+1

Le altre celle dello schema (A3, B3, B4) si possono copiare da quelle esistenti:

la riga 3 dalla riga 2

la cella B4 da B3

In tutto lo schema c’è solo una cella con il valore dell’anno. Tutte le altre sono calcolate.

Il risultato sul foglio sarà il seguente:

È probabile che le celle nella colonna B siano visibili con valori non formattati (in pratica, le date dovrebbero

essere in un formato numerico interno usato dal programma), ma siamo ancora agli inizi dell’esercitazione:

siamo ancora in tempo a sistemare il foglio.

NON PERDERE TEMPO A CAMBIARE IL FORMATO CON

“FORMATO-CELLE”, altrimenti l’esercitazione, oltre a

diventare inutile, è destinata a non funzionare.

A questo punto potremo applicare gli stili definiti in precedenza.

Page 84: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

GLI STILI

La cosa più semplice e immediata è sistemare le intestazioni dei mesi. Selezioniamo le celle A2 e B2. Dalla

finestra “Stili e formattazione” (F11), dopo aver scelto lo stile “mese”, facciamo click sul pulsante del

“modo riempimento”, poi click sulla selezione celle con il cursore trasformato in barattolo di vernice.

Il formato MMMM AAAA visualizza la data con il nome del mese seguito dall’anno con 4 cifre, come in

“Gennaio 2012” (nell’esempio è bianco su arancio):

Ora passiamo alle quattro date che fanno parte dell’elenco dei giorni. Selezioniamo le quattro celle

A3:B4, poi . “Formato-Formattazione condizionale”

Nelle formule si indica la cella B4 perché è quella dove termina la selezione. Va applicato lo stile

“domenica” alle domeniche, lo stile “settimana” agli altri giorni: basta controllare il valore della funzione

giorno.settimana e sistemare la formula di conseguenza (domenica=1; altri giorni: da 2 a 7).

Le celle prima e dopo l’applicazione della formattazione condizionale

Page 85: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

COMPLETAMENTO

A questo punto lo schema del calendario è quasi completo. Possiamo provare a selezionare la riga 4 e a

copiarla fino alla riga 33, avremo quasi finito.

Manca solo un dettaglio: togliere i giorni finali di Febbraio, che, come si può notare, sono in realtà i

primi giorni di marzo. Lo stesso vale per i mesi di 30 giorni.

Quello che dobbiamo fare è inserire una formula che provveda automaticamente alla cancellazione. Se

dobbiamo usare il foglio elettronico per modificare manualmente i dati, allora tanto vale usare carta e

penna.

Inseriamo nella cella A4 la seguente formula:

=SE(E(A3<>"";MESE(A3+1)=MESE(A$2));A3+1;"").

Notiamo un riferimento fisso alla riga 2, che contiene il primo giorno del mese. Il significato della

formula è di controllare se il contenuto della cella corrisponde al mese del giorno 1. Se appartiene ad un

mese successivo, la formula risulterà falsa e la cella conterrà il valore vuoto.

Se le cose sono state fatte per bene, i giorni in più risultano vuoti. Rimane lo sfondo, ma anche questo si

può cancellare con una formula.

ATTENZIONE !!!

La formula finale riguarda il contenuto, quindi è stata inserita direttamente nelle celle;

La formula per lo sfondo riguarda la stile, quindi va inserita attraverso la formattazione condizionale.

Page 86: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

IL TOCCO FINALE

Modifichiamo la formattazione condizionale tra A3 e B33, per togliere lo sfondo dalle celle vuote:

E(B33<>"";GIORNO.SETTIMANA(B33;1)=1)

E(B33<>"";GIORNO.SETTIMANA(B33;1)>1) (vedi immagine)

Con queste formule, le celle indesiderate appaiono completamente vuote:

Ora si può copiare febbraio negli altri 10 mesi, e il calendario è finito:

Page 87: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Mitchel Resnick, coordinatore

del progetto Scratch Paolo Santi, ideatore

di AlgoBuild

Formattazione condizionale Appendice

Page 88: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Cos’è un algoritmo

Un algoritmo è una sequenza di operazioni che servono per effettuare uno specifico compito.

Il nome algoritmo deriva da Abu Abdallah Muhammad ibn ben-Musa al-Khwarizmi, uno dei pionieri della

matematica, scienziato vissuto nell’Impero persiano nel IX secolo. Khwarizm (latinizzato in Chorasmia) è il

nome della sua regione di nascita, attualmente divisa tra Turkmenistan e Uzbekistan.

Durante il corso abbiamo incontrato algoritmi, senza usare questo nome:

Problema Descrizione procedimento Esempio

Trasformazione di numero

da base 10 a base 2.

Dividere il numero per 2, tenendo la

parte intera e trascrivendo il resto.

Dividere il quoziente per 2, tenendo la

parte intera e trascrivendo il resto.

Proseguire fino ad ottenere 0.

La sequenza dei resti, rovesciata, è il

numero cercato.

Numero = 25

25 / 2 = 12 r 1 12 / 2 = 6 r 0 6 / 2 = 3 r 0 3 / 2 = 1 r 1 1 / 2 = 0 r 1

2510 = 110012

Trovare l’opposto di un

numero binario in notazione

complementare.

Trasformare ogni 1 in 0, ogni 0 in 1.

Aggiungere 1 al risultato parziale.

Numero = 10100111

10100111 01011000 1 01011001

Anche le formule del foglio elettronico sono procedimenti per risolvere determinati problemi, con la

differenza che si tratta di formule valide per una sola cella. Procedimenti complessi possono essere descritti

con più celle, contenenti formule simili o comunque relative al problema da risolvere, come nel caso del

calendario, dove una zona comprende più date dello stesso periodo:

In Informatica, un algoritmo viene solitamente tradotto in un linguaggio di programmazione per costruire un

programma (ora spesso chiamato applicazione) in grado di risolvere specifici problemi. Questo capitolo non

si occupa di scrivere programmi, ma di descrivere come si ragiona per farlo. La programmazione sarà

oggetto di corsi successivi.

Page 89: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Cos’è Scratch

Il software per installare Scratch è reperibile al seguente indirizzo:

http://scratch.mit.edu/scratch2download/

che può essere trovato anche inserendo "download scratch 2" in un qualsiasi motore di ricerca. Può

essere eseguito direttamente, oppure scaricato su disco per una successiva installazione.

In realtà, verranno installati due programmi:

Adobe AIR (Adobe Integrated Runtime)

Scratch

Una volta avviato, il programma Scratch si presenta con il seguente schermo (la freccia indica il pulsante per

il cambio della lingua25

):

25 Questo pulsante ogni tanto è necessario: un problema di Scratch 2 è che tende a perdere l’impostazione della lingua.

Il software “Scratch” nasce da un progetto del Lifelong Kindergarten Group del MIT, con l’obiettivo di

insegnare a programmare in maniera semplice ed interattiva. Sebbene progettato per la fascia di età tra 8

e 16 anni, è usato da milioni di persone, che creano progetti con Scratch a casa, a scuola ma anche in

musei, biblioteche e centri ricreativi. Con Scratch è possibile programmare storie interattive, giochi ed

animazioni; oltre a questo, nella comunità online i progetti possono essere condivisi. Il tutto è reso

disponibile gratuitamente.

Scratch è stato progettato per aiutare a raggiungere, tra le altre, queste capacità:

pensare in modo creativo

ragionare in maniera sistematica

collaborare

Definite “capacità essenziali nel XXI secolo”, sono le principali caratteristiche richieste ai programmatori

per svolgere al meglio il proprio lavoro.

testo tratto da: http://scratch.mit.edu/about

ATTENZIONE: Non installare la versione 1.4

Icona di Scratch

Page 90: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Lo schermo di Scratch è diviso in quattro zone:

Stage (il palcoscenico dove avviene l’animazione/storia)

Elenco elementi (sfondi e personaggi protagonisti)

Elenco comandi (il comportamento degli elementi)

Script (sequenze di comandi per ciascun personaggio presente sullo stage)

I personaggi sono chiamati anche sprite, un termine in uso già negli anni ’70 per descrivere singole immagini

o animazioni. Gli script Scratch sono dei veri e propri programmi.

Appena attivato Scratch, compare uno stage bianco con un personaggio solo, il gatto scelto come simbolo del

programma:

I comandi sono suddivisi per categorie:

Movimento, Aspetto, Suono, Penna, Sensori Animazione e svolgimento storia

Situazioni, Controllo Gestione del programma in base alle situazioni

Variabili e Liste, Operatori Gestione dati

Altri Blocchi Costruzione di nuovi blocchi composti

Le prime due categorie di comandi, che consentono l’interazione con il programma, sono solitamente di

facile comprensione, soprattutto per chi ha già usato videogiochi.

Variabili, Liste, Operatori sono invece molto vicini ai linguaggi di programmazione, ed occuperanno la parte

principale della trattazione.

La sezione “Altri Blocchi” consente di creare blocchi di comandi composti da comandi elementari.

Far eseguire un comando ad un personaggio è immediato: per esempio, nel gruppo di comandi “Suono” un

click il primo blocco fa miagolare il gatto (è possibile associare anche altri suoni ad ogni personaggio):

Page 91: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Preparazione di uno script

Per costruire un nuovo progetto si può eliminare il gatto (con click destro seguito da cancella) e scegliere un

nuovo personaggio con uno dei modi proposti nell’elenco “Nuovo sprite”. È possibile disegnare il proprio

personaggio, ma la scelta consigliata è quella di sceglierne uno nell’abbondante libreria del programma. In

alternativa, si può usare una qualsiasi immagine presente sul disco, oppure generare la sprite a partire dalla

propria webcam.

La libreria offre numerosi personaggi, selezionabili per categoria, tema e tipo. Ad esempio, il tema Castello

presenta vari personaggi da favola (draghi, fantasmi, cavalieri, maghi):

Ogni personaggio può avere il proprio script. Per prepararlo, occorre prima selezionare la sprite nell’elenco,

in modo che diventi il destinatario dello script.

Poi, trascinando nell’area “script” i blocchi desiderati, si possono programmare le azioni del personaggio. Un

breve esempio è il seguente, con blocchi presi da Situazioni, Controllo e Movimento. I blocchi vengono

combinati facendo coincidere sporgenze e rientranze. Come si può notare, alcuni blocchi possono essere solo

all’inizio o solo alla fine dello script, mancando delle tacche in alto o in basso:

Questo script viene attivato quando si effettua un click sulla bandierina verde sul margine alto dello stage. Il

nostro personaggio è destinato a ruotare per sempre, o almeno fino a quando non si termina lo script con un

click sul segnale ottagonale di stop, vicino alla bandierina verde.

Page 92: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Le variabili

Uno dei concetti fondamentali della programmazione è quello di “variabile”. Una variabile è un dato che ha

un nome e un valore. È attraverso i valori delle variabili che i programmi risolvono i problemi di calcolo.

Al contrario del foglio di calcolo, dove le variabili sono le celle della griglia, nei programmi le variabili

devono essere dichiarate. Inoltre il loro valore non viene modificato con la scrittura diretta, ma attraverso

altre operazioni (dette normalmente di assegnazione).

Dichiarazione di una variabile

Per aggiungere una variabile al progetto, premere “Nuova variabile” nel gruppo

“Variabili e Liste” (arancione). Compare un riquadro con uno spazio per il nome della

variabile e i pulsanti per la conferma e la rinuncia. Si può lasciare selezionata l’opzione

“Per tutti gli sprite”, che rende disponibile la variabile per tutti i personaggi (in questo

caso viene definita pubblica). L’elenco delle variabili compare nello spazio centrale del

programma: il segno di spunta indica se la variabile compare sullo stage.

Valore

Come si può intuire dal nome, il valore di una variabile può cambiare (altrimenti non avrebbe quel nome).

Ci sono più modi di modificare una variabile:

blocco “porta” (assegnazione)

blocco “cambia” (modifica: il valore PRECEDENTE della variabile più qualcosa)

blocco “porta” proveniente da una risposta

Il blocco “porta” prende un valore costante, un’altra variabile o un’espressione, e ne assegna il valore (o il

risultato) alla variabile selezionata.

Il blocco “cambia” conserva la memoria del precedente valore della variabile, aggiungendo (o togliendo)

qualcosa.

In entrambi questi casi la variabile da modificare può essere selezionata dal relativo elenco (attivabile con la

freccetta nera visibile nel blocco). Il valore da assegnare può essere scritto direttamente nello spazio bianco;

se si tratta di un’altra variabile o di un’espressione, il nuovo dato va invece trascinato in quello spazio.

dichiarazione elenco

blocco "porta"

Elenco valori sullo stage

blocco "cambia"

Page 93: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Interazione

Ora vediamo come chiedere il valore di una variabile, con una sequenza di blocchi chiedi-porta. Le

operazioni sono, nell’ordine:

Richiesta: lo script si blocca, in attesa che l’utente scriva qualcosa nell’apposito spazio;

Assegnazione: il contenuto della risposta viene trasferito in una variabile.

1 Richiesta

Il blocco è nel gruppo “Sensori” (azzurro). Il testo viene proposto dal personaggio con un fumetto; la risposta

viene inserita nel riquadro che compare sotto lo stage:

2 Assegnazione

La risposta ha una sua icona azzurra (arrotondata, come le variabili). Per assegnarla ad una variabile, si

inserisce questa icona in un blocco “porta”:

In realtà, quando si ha a che fare con un problema matematico, la maggior parte delle variabili deve

contenere valori numerici (non possiamo immaginare cosa risulta da scarpa/2, e non è di certo sca). Per

evitare di operare su valori insensati, esiste un trucchetto aritmetico, che consiste nel moltiplicare per 1 la

risposta, rimediando così ad errori di inserimento, secondo questa logica:

se il numero è scritto correttamente, non viene modificato

in caso contrario, la moltiplicazione risulta zero, che almeno è un valore numerico.

Assegneremo quindi alla variabile “risposta*1”. Per fare questo, prendiamo il blocco di moltiplicazione

dagli operatori (sezione verde), inseriamo la “risposta” in uno degli spazi e scriviamo 1 nell’altro:

Una volta assegnato il valore richiesto alla variabile, esso viene visualizzato nell’elenco (solitamente

presente sullo stage). È comunque preferibile fare in modo che il personaggio, una volta chiesto il numero, lo

visualizzi attraverso un fumetto (secondo script). L’effetto è nell’immagine a destra:

Page 94: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

script Input OK (5 e 6) Input errato (5 e 0)

Elaborazione

Il tipico programma di gestione attraversa tre fasi in sequenza: leggi-elabora-scrivi. Al contrario di un foglio

di calcolo, dove alcune celle possono contenere formule che vengono calcolate simultaneamente, in un

normale programma occorre dare le istruzioni esplicitamente e in sequenza.

Le fasi sono così riassumibili:

1. Il personaggio chiede un numero (o due, o tre, …) 2. Lo script del personaggio esegue delle operazioni di calcolo 3. Il personaggio “pronuncia” la risposta

Ogni script deve quindi riprodurre queste fasi, rispettando la sequenza:

1. Blocchi per l’input 2. Blocchi per l’elaborazione 3. Blocchi per l’output

Esempio 1: calcolo di una radice quadrata

Nell’immagine sono evidenziate le tre fasi dello script (l’input, come visto, occupa due blocchi).

L’operazione di radice quadrata è nel gruppo “Operatori”, e si chiama sqrt (square root). Una volta inserito

il valore della variabile x, si assegna a z la sua radice. In caso di calcolo impossibile (quando il numero

scritto è negativo), il risultato assume il valore particolare NaN (sigla per: Not a Number).

Esempio 2: calcolo di un quoziente

In questo caso occorrono due variabili (quindi due input). Come nel caso precedente, anche la divisione non

è sempre possibile. Quando il divisore è zero, il risultato è Infinity (infinito). Matematicamente questa

assunzione è falsa come Giuda, e viene giustificata con il fatto che un divisore piccolo provoca un risultato

grande (ciò non cancella che la divisione per zero non è definita in aritmetica).

Come visto nel capitolo riguardante il foglio elettronico, per risolvere queste situazioni occorre una struttura

decisionale, che possa scegliere differenti azioni in base a determinate condizioni (ad esempio, l’essere non

negativo per l’estrazione di radice, o l’essere il divisore non nullo per la divisione). Il nome struttura riflette

il fatto che si tratta di più blocchi organizzati.

Prima, però, vediamo un altro modo di rappresentare i procedimenti di calcolo.

script Input OK (9) Input errato (-9)

Page 95: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Diagrammi di flusso

Tra gli aspetti positivi, il programma Scratch offre immediatezza e semplicità; è invece un po’ problematico

nella scrittura manuale su carta. Per schematizzare un procedimento di calcolo può essere utile usare un

metodo storico, quello dei “diagrammi di flusso”, che descrive la sequenza delle operazioni con blocchi di

varie forme, collegati da frecce. Se questo metodo è decisamente antiquato per quanto riguarda progetti

complessi, può ancora risultare utile con semplici problemi di elaborazione, essendo piuttosto intuitivo da

seguire.

Uno degli usi dei diagrammi di flusso è per dare un’idea di un ragionamento. In America, è molto popolare

una semplificazione dei lavori di riparazione in casa, che qualche buontempone ha trasformato in diagramma

di flusso:

Handyman flow chart Diagramma per il riparatore

You only need two tools Servono solo due attrezzi

It moves and shouldn’t? Use the hammer. Non si muove e dovrebbe? Usate il martello.

It doesn’t move and should? Use duct tape. Si muove e non dovrebbe? Usate il nastro.

Quando si descrive un procedimento di calcolo o di gestione, i diagrammi possono essere un po’ complessi:

Page 96: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Disegno ed esecuzione di diagrammi

Analogamente a quanto accade con Scratch, i blocchi di un diagramma descrivono diverse operazioni,

indicate da diverse forme geometriche; le forme più usate sono le seguenti:

La sequenza delle operazioni è identificata da frecce, che non possono presentare ambiguità. Ovviamente, il

blocco iniziale ha solo una freccia in uscita e quello finale solo una in entrata; ogni blocco intermedio ha una

freccia in entrata e una in uscita, tranne il blocco “decisionale” o “condizionale” che ha due possibili uscite:

Esistono molti programmi che permettono di disegnare diagrammi di flusso. In questo corso è stato scelto

AlgoBuild, un software poco appariscente ma che facilita la costruzione di diagrammi semplici e corretti,

avendo una rigida struttura di inserimento e collegamento dei blocchi.

Per i sistemi Windows è sufficiente copiare il programma algobuild.exe nella cartella dove si intendono

memorizzare i lavori; con altri sistemi c’è una procedura leggermente più complessa, che può essere

visualizzata in questa pagina (alla sezione “Avviare il programma”):

http://algobuild.com/docsonline/ab_075/manuale-it/manuale-it.html

Ogni diagramma di flusso necessita di un inizio e una fine; per questo motivo AlgoBuild propone

automaticamente un diagramma minimo con solo tali blocchi (Start/End):

Per aggiungere un blocco, si avvicina il cursore alla freccia che separa i blocchi esistenti, facendo comparire

un riquadro NEW, poi con un click si attiva la scelta del tipo di blocco o di struttura. Come blocchi singoli si

può scegliere tra Assegnamento, Input, Output; come strutture tra If, For, While (esiste un’altra struttura, ma

è sconsigliata in quanto rende più complessi i ragionamenti). Con questi strumenti è possibile costruire

qualsiasi algoritmo.

Page 97: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Come esperimento, si può scegliere un blocco “Output”, ed inserire come “Nuovo Output” un messaggio tra

apici (non tra virgolette), ad esempio, ‘ciao’.

L’algoritmo può essere eseguito tramite un click sulla freccia verde che si trova sopra l’area del diagramma.

Normalmente, per passare da un blocco al successivo la freccia va sempre attivata, a meno che non venga

deselezionata l’opzione “Passo passo”. Il risultato dell’operazione di output viene visualizzato nel riquadro

in basso a sinistra.

L’algoritmo può essere eseguito tramite un click sulla freccia verde che si trova sopra l’area del diagramma.

In questo modo si attiva un vero e proprio programma. Valgono le seguenti considerazioni, che possiamo

verificare direttamente, e sono evidenziate nell’immagine:

normalmente, per passare da un blocco al

successivo la “freccia verde” va ogni volta

attivata;

disattivando l’opzione “Passo passo”, il

programma avanza automaticamente;

il tempo di transizione da un blocco

all’altro, normalmente di 500 msec, può

essere modificato;

il risultato dell’operazione di output viene

visualizzato nel riquadro in basso a

sinistra.

L’uso delle variabili non è molto diverso che in Scratch (tutti gli ambienti di programmazione sono simili da

questo punto di vista), e non necessita di dichiarazioni. Vediamo due esempi, il primo con l’input, il secondo

con l’assegnamento diretto di un valore ad una variabile chiamata a. In entrambe le situazioni, il nome della

variabile va scritto da solo, senza apici:

Vediamo i due differenti diagrammi. Ovviamente, l’esecuzione del programma con l’input viene sospesa in

attesa del nostro inserimento del valore di a:, mentre l’altro programma procede senza interruzioni.

output *** PROGRAMMA main inizia. INPUT: a=51 var: | a=51.0 | OUTPUT a: 51.0 *** PROGRAMMA main termina.

output *** PROGRAMMA main inizia. ASSEGNA: a <- 48.0 var: | a=48.0 | OUTPUT a: 48.0 *** PROGRAMMA main termina.

Page 98: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Strutture di controllo

Il seguente esempio, che fa uso di tre variabili, mostra il differente comportamento del programma con o

senza l’opzione “Traccia”. Nel primo caso, ogni operazione viene visualizzata nel riquadro di output,

insieme all’elenco delle variabili ad ogni cambiamento; nel secondo caso, vengono visualizzati solo i risultati

delle operazioni di output.

output *** PROGRAMMA main inizia. ASSEGNA: a <- 48.0 var: | a=48.0 | ASSEGNA: b <- 29.0 var: | a=48.0 | b=29.0 | ASSEGNA: c <- 77.0 var: | a=48.0 | b=29.0 | c=77.0 | OUTPUT c: 77.0 *** PROGRAMMA main termina.

output *** PROGRAMMA main inizia. 77.0 *** PROGRAMMA main termina.

In Scratch ci eravamo interrotti Per vedere come funzionano i blocchi decisionali (e i relativi connettori),

ripeteremo gli esempi precedenti, mostrando come evitare le operazioni non definite (quelle

matematicamente impossibili). Faremo in modo che il diagramma/programma prenda una decisione,

scegliendo una tra due elaborazioni, per poi proseguire con altre operazioni.

Questa “decisione” è analoga alla funzione =SE(...) del foglio elettronico: anche qui la scelta avviene

controllando se una data condizione è vera o falsa. Il blocco decisionale è fatto in modo che le due diverse

sequenze escano dagli angoli laterali (T=true/vero; F=false/falso). I seguenti diagrammi traducono

gli esempi visti precedentemente in Scratch, tenendo conto anche di quando la soluzione non esiste. La

decisione è un confronto tra dati, che a volte (come nel primo esempio) si scrive in forma di domanda; il

segno per “diverso” (nel secondo esempio y deve essere diverso da 0) è!= .

Nella programmazione non sempre occorre indicare due soluzioni distinte. Esiste anche

una struttura senza il “caso contrario”, dove basta lasciare vuota una delle due

alternative, come si può vedere nell’immagine a fianco.

Alcuni (come anche i programmatori di Scratch) identificano le due strutture come “se-

allora-altrimenti” e “se-allora”.

Page 99: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

In Scratch i blocchi decisionali sono orientati diversamente (le soluzioni sono in

verticale, non affiancate), comunque le differenti soluzioni sono ben distinte, che siano

una o due (se…allora, oppure se…allora…altrimenti). Si può notare il posto

vuoto per il blocco angolato, analogo a quello dei diagrammi, dove può essere inserito

un confronto, preso dalla sezione “operatori”.

Scratch non ha un blocco per “diverso”. In questo caso occorre combinare un blocco

“non” con un blocco “uguale”. Anche per “maggiore o uguale” occorre combinare le

due condizioni singole con un blocco “o”.

Quindi, x!=0 si indica con non(x=0), e x>=0 si indica con (x>=0) o (x=0):

A questo punto, riproponiamo gli stessi esempi con Scratch.

Esempio 1 – Radice quadrata

La scelta del programma è determinata dal valore della variabile x:

se negativo, la soluzione è impossibile;

in caso contrario, è possibile applicare l’operatore sqrt senza

errori.

È possibile mettere un blocco “dire” in ciascuna delle due

alternative, ma risulta più semplice modificare il valore della

variabile z che viene visualizzata.

Al posto di un blocco “dire” a tempo, è possibile inserire un blocco

di attesa, che sospende l’esecuzione dello script fino al verificarsi

di una determinata condizione. Spesso si usa come condizione la

pressione di un tasto: in questo caso il tasto più “semplice” a

disposizione è lo spazio.

Il blocco di attesa non dovrebbe essere particolarmente difficile da decifrare.

Esempio 2 – quoziente

La soluzione è analoga alla precedente, con la scelta determinata

dal valore della variabile y:

se nullo, la soluzione è impossibile;

in caso contrario, è possibile applicare la divisione senza errori.

Rispetto all’esempio precedente è stata leggermente modificato

l’output del risultato da parte del personaggio, accompagnando il

messaggio “Soluzione :” al valore della variabile y, tramite il

blocco operativo “unione”. In questo modo il messaggio risolutivo

è più comprensibile:

Anche in questo esempio è presente l’attesa dell’evento “tasto

spazio premuto” per sospendere e riprendere l’esecuzione dello

script dopo la visualizzazione del risultato.

Attenzione !!!

Il blocco di attesa non serve a “terminare lo script”. Serve a “sospendere l’esecuzione”. Se lo script termina è

solo perché il blocco successivo è “arresta tutto”.

Page 100: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Differenze tra diagrammi di flusso e script Scratch

Come in tutte le imprese tecnologiche, anche la programmazione necessita di standard. Procedere in modo

coerente riduce le possibilità di errore e le perdite di tempo.

Struttura di uno script

I progetti Scratch più semplici possono essere costruiti con lo script di un solo personaggio. Per avere un

inizio e una fine, una soluzione è quella di iniziare con una “bandiera verde” e terminare con un “arresta

tutto” preceduto da un blocco di attesa. In questo modo si possono controllare i risultati dello script senza

problemi di timer: per sbloccare lo script e portarlo al termine, si preme “spazio” o si fa click con il mouse.

Input

Uno script semplice inizia con l’input di una o due variabili. Per non lavorare troppo di fantasia, può essere

di aiuto predisporre un progetto vuoto con alcune variabili già pronte: a, b, c, x, y, z. Quante di queste

andranno usate dipenderà dal problema proposto. Il progetto finito potrà essere salvato con altro nome.

Output

Un modo per visualizzare i risultati è usare i fumetti di un personaggio (“dire” o “pensa”). Per combinare

frasi fisse (stringhe costanti) con risultati variabili si deve usare un blocco unione:

Differenze tra diagramma di flusso e progetto Scratch

DIAGRAMMA DI FLUSSO SCRATCH

Un blocco “input” è sufficiente

Al blocco “chiedi” va aggiunto un blocco “porta” per

memorizzare la risposta in una variabile, assegnando

zero in caso di numeri mal scritti

L’assegnazione di una variabile va fatta con una

formula algebrica; il nome della variabile deve essere

scritto a sinistra di un simbolo di assegnazione “=”

L’assegnazione di una variabile va fatta attraverso un

blocco “porta”: la variabile si trova comunque nella

parte sinistra del blocco

Per modificare il valore già esistente di una variabile

occorre una formula con la stessa variabile dalle due

parti del segno “=”: a = a + 1

La modifica di una variabile può essere fatta anche

attraverso un blocco “cambia”. Sono equivalenti:

porta x a x+1 cambia x di 1

Un blocco “output” è sufficiente

Un blocco “dire” andrebbe sempre completato con

(almeno) una scritta e un risultato: in caso contrario si

avrebbe un messaggio poco leggibile

Condizioni composte: and (&&) or (||) not (!)

a==0 && b==0 a==0 || a==b !( a==b )

Blocchi condizionali composti: e o non

Page 101: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Il resto della divisione

Come già visto in altre situazioni, in molti problemi si farà uso di RESTI DI DIVISIONE:

resto per 2 per determinare se il valore di una variabile è pari

resto per 10 per calcolare la cifra delle unità

parte intera divisione per 10 per calcolare la cifra delle decine

resto tra due variabili per determinare multipli e sottomultipli

Il controllo di un resto va fatto con un blocco angolato di confronto.

Il resto (o modulo) è un’operazione frequente con i numeri interi. La differenza tra il diagramma e Scratch è

nel come viene rappresentata:

b % 2

Resto nei blocchi condizionali

Spesso un resto viene controllato in una condizione (blocco angolato). Ad esempio, per controllare se la

variabile “b” è una “decina” (multiplo di 10):

Il doppio segno di uguale è una caratteristica di alcuni linguaggi di programmazione.

Resto nei calcoli

Qualche volta non c’è il blocco angolato: questo avviene quando si sta eseguendo un calcolo. Ad esempio,

per calcolare la cifra delle unità di una variabile:

Per le decine si usa la “parte intera”, che AlgoBuild chiama “floor” e Scratch chiama “intero inferiore”:

Multipli e sottomultipli

Un resto tra due variabili può essere utile quando si cercano dei divisori. La domanda “z è divisore di b?”

diventa:

Problemi non risolti

1. Chiedere un numero. Rispondere se è pari o dispari.

2. Chiedere due numeri a e b. Rispondere se b é divisore di a.

3. (vedi immagini) Chiedere due numeri a e b. Rispondere se:

Uno dei due è zero;

a é divisore di b;

b é divisore di a;

nessuna delle precedenti.

4. Chiedere un numero; controllare se di tratta di un numero pari o dispari: nel primo caso lo aumenta di 1,

nel secondo lo diminuisce di 1.

Page 102: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Applicazioni

Dato un numero a (input).

SE non ha esattamente due cifre, non si va avanti e si manda un messaggio di errore.

ALTRIMENTI procedere in sequenza con le seguenti operazioni:

1) calcolare il quadrato b;

2) “dividerlo” in due parti x e y, di 2 cifre ciascuna (attenzione: non sono due metà);

3) se a è uguale a x+y (come con a=45, o con a=55) allora si dice che a è un numero di Kaprekar.

Quindi la risposta finale del personaggio (a parte il caso precedente) è un sì o un no

ESEMPI 45 (a) al quadrato fa 2025 (b) va diviso in 2 parti: 20 (x) e 25 (y) anziché usare la divisione per 10, si usa la divisione per 100.

20 + 25 == 45 La proprietà è verificata

14 (a) al quadrato fa 0196 (b) va diviso in 2 parti: 01 (x) e 96 (y) non importa se 1 ha una 1 cifra

01 + 96 != 14 La proprietà NON è verificata

Le due versioni:

Page 103: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Problema 1

QUANTE CIFRE HA UN NUMERO (fino a 3)?

Ci sono alcuni “se” perché il programma deve

scegliere quale risposta dare.

Per facilitare le risposte, eliminando il caso in cui il

numero è negativo, possiamo usare il valore assoluto

(negli operatori è indicato con abs).

Problema 2

QUAL E’ LA DECINA SUCCESSIVA?

N.B.: con “decina” si intende un multiplo di 10

esempi:

con 10 o 13 la risposta è 20

con 49 la risposta è 50

Possiamo chiamare la variabile risultato d

Non ci sono “se” perché i calcoli sono in sequenza e

sono gli stessi per qualsiasi numero.

La soluzione è solo un elenco di blocchi “porta”.

N.B.: questo diagramma è incompleto.

Problema supplementare

Chiedere un numero all’utente, poi controllare se è positivo o negativo. Se positivo aumentarne il valore di 1,

se negativo diminuirlo di 1. Visualizzare il risultato ottenuto.

Page 104: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

La tabella segue i movimenti delle variabili nel tempo:

i c b OUTPUT

10 3 54 54

36 36

N.B.: la sequenza di output è formata dai soli valori che

vengono visualizzati (associati alle variabili, ma non sempre

uguali ad esse), e risulta:

54 36

Go with the flow - Trace

Le istruzioni di un diagramma di flusso possono essere seguite con carta e penna, operazione chiamata

“trace” nella letteratura. Non si tratta di un esercizio sterile: nei casi più complessi, saper interpretare un

diagramma può permettere di analizzare i procedimenti e migliorarli.

In pratica, quello che va fatto è seguire il flusso delle operazioni, tenendo una traccia scritta (trace) dei valori

delle variabili, annotando le loro variazioni nel tempo, ed eseguendo le operazioni di output (di solito in una

sequenza separata). Occorre quindi calcolare e scrivere quello che farebbe un programma in ciascun

momento del suo flusso temporale.

Il caso più semplice è un diagramma puramente sequenziale, composto da soli assegnamenti:

Il programma AlgoBuild permette di seguire il flusso del diagramma, con o senza trace, e comunque con la

sequenza di output:

Con TRACE Senza TRACE (solo OUTPUT)

*** PROGRAMMA main inizia. ASSEGNA: i <- 10.0 var: | i=10.0 | ASSEGNA: c <- 3.0 var: | c=3.0 | i=10.0 | ASSEGNA: b <- 54.0 var: | b=54.0 | c=3.0 | i=10.0 | OUTPUT b: 54.0 ASSEGNA: b <- 36.0 var: | b=36.0 | c=3.0 | i=10.0 | OUTPUT b: 36.0 *** PROGRAMMA main termina.

*** PROGRAMMA main inizia. 54.0 36.0 *** PROGRAMMA main termina.

Sviluppo passo-passo

1 il valore della variabile i è 10

2 il valore della variabile c è 3

3 il valore di b è 54, ottenuto con 9 * 6.

4 l’output è 54, corrispondente a b

5 il valore di b diventa 36

6 l’output è 32, corrispondente a b-4

Page 105: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

a b x y OUTPUT

45 2025 20 25 Kaprekar

a b x y OUTPUT

46 2116 21 16 Non Kaprekar

a b x y OUTPUT

121 Impossibile

Una struttura condizionale presenta il problema della scelta

dell’azione da intraprendere, identificata da una delle frecce

che escono dal blocco romboidale.

Riprendendo un esercizio precedente (relativo ai numeri di

Kaprekar), osserviamo le differenti scelte del programma in

casi diversi.

Vediamo i possibili contenuti della tabella e i diversi

comportamenti del diagramma:

Nella descrizione delle azioni di AlgoBuild sono state aggiunte le direzioni prese per ogni condizione

incontrata:

Con TRACE Senza TRACE (solo OUTPUT)

*** PROGRAMMA kaprekar inizia. INPUT: a=45 var: | a=45.0 | IF a<10 || a>99 valutata FALSE ( ) SINISTRA ASSEGNA: b <- 2025.0 var: | a=45.0 | b=2025.0 | ASSEGNA: x <- 20.0 var: | a=45.0 | b=2025.0 | x=20.0 | ASSEGNA: y <- 25.0 var: | a=45.0 | b=2025.0 | x=20.0 | y=25.0 | IF a == x+y valutata TRUE ( ) DESTRAOUTPUT b: Kaprekar *** PROGRAMMA kaprekar termina.

*** PROGRAMMA main inizia. 45 Kaprekar *** PROGRAMMA main termina.

*** PROGRAMMA kaprekar inizia. INPUT: a=46 var: | a=46.0 | IF a<10 || a>99 valutata FALSE ( ) SINISTRA ASSEGNA: b <- 2116.0 var: | a=46.0 | b=2116.0 | ASSEGNA: x <- 21.0 var: | a=46.0 | b=2116.0 | x=21.0 | ASSEGNA: y <- 16.0 var: | a=46.0 | b=2116.0 | x=21.0 | y=16.0 | IF a == x+y valutata FALSE ( ) SINISTRAOUTPUT b: non Kaprekar *** PROGRAMMA kaprekar termina.

*** PROGRAMMA main inizia. 46 non Kaprekar *** PROGRAMMA main termina.

*** PROGRAMMA kaprekar inizia. INPUT: a=121 var: | a=121.0 | IF a<10 || a>99 valutata TRUE ( ) DESTRAOUTPUT: Impossibile *** PROGRAMMA kaprekar termina.

*** PROGRAMMA main inizia. 121 Impossibile *** PROGRAMMA main termina.

Page 106: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

La tabella riporta anche le decisioni prese nel blocco

centrale della sequenza:

i b DIREZIONE OUTPUT

0 0 destra 1

1 3 destra 4

2 6 destra 7

3 9 destra 10

4 12 destra 13

5 in basso

Sequenza di output:

1 4 7 10 13

Più complesso ancora il caso di un ciclo, quando il diagramma ripete parti di sé stesso, sempre in base ad una

condizione (che in questo caso è destinata ad essere calcolata più volte):

Attenzione: con AlgoBuild la disposizione dei blocchi è leggermente diversa, come vedremo più avanti.

I risultati sono i seguenti:

Con TRACE Senza TRACE (solo OUTPUT)

*** PROGRAMMA main inizia. ASSEGNA: i <- 0.0 var: | i=0.0 | ASSEGNA: b <- 0.0 var: | b=0.0 | i=0.0 | OUTPUT b+1: 1.0 ASSEGNA: i <- 1.0 var: | b=0.0 | i=1.0 | ASSEGNA: b <- 3.0 var: | b=3.0 | i=1.0 | OUTPUT b+1: 4.0 ASSEGNA: i <- 2.0 var: | b=3.0 | i=2.0 | ASSEGNA: b <- 6.0 var: | b=6.0 | i=2.0 | OUTPUT b+1: 7.0 ASSEGNA: i <- 3.0 var: | b=6.0 | i=3.0 | ASSEGNA: b <- 9.0 var: | b=9.0 | i=3.0 | OUTPUT b+1: 10.0 ASSEGNA: i <- 4.0 var: | b=9.0 | i=4.0 | ASSEGNA: b <- 12.0 var: | b=12.0 | i=3.0 | OUTPUT b+1: 13.0 ASSEGNA: i <- 5.0 *** PROGRAMMA main termina.

*** PROGRAMMA main inizia. 1.0 4.0 7.0 10.0 13.3 *** PROGRAMMA main termina.

Il valore culminante per la struttura è il 5, che rende falsa la condizione e fa proseguire ai blocchi successivi.

Page 107: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Il seguente diagramma non si può disegnare con AlgoBuild, dal momento che presenta alcune complicazioni

che sono state inserite solo per fare un po’ di esercizio (in effetti, non è buona pratica far entrare più frecce

nello stesso blocco, come avviene in questo esempio). La soluzione è alla pagina successiva.

Page 108: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

i DIREZIONE Scelta 1 a DIREZIONE Scelta 2 b

1 a destra 3 (output)

2 a destra 6 (output)

3 a destra 9 (output)

4 a destra 12 (output)

5 a destra 15 (output)

6 a destra 18 (output)

7 a destra 21 (output)

8 a destra 24 (output)

9 a destra 27 (output)

10 a destra 30 (output)

11 in basso 55 a destra (dispari)

54

55 165 (output)

56 in basso 280 in basso (pari) 165 (output)

FINE

Sequenza di output: 3 6 9 12 15 18 21 24 27 30 165 165

Page 109: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Cicli semplici: progressioni aritmetiche

In una progressione aritmetica, si produce una sequenza di numeri tale che la differenza tra ogni numero e il

successivo (detta ragione) ha lo stesso valore. Ad esempio, una delle sequenze più semplici è:

0 1 2 3 4 5 6 7 8 9

In questo caso la progressione è regolare, ed assomiglia al procedimento del conteggio.

In un diagramma AlgoBuild (ed anche nella maggior parte dei linguaggi di programmazione), la struttura

predisposta per produrre questo tipo di progressioni è chiamata for. La struttura necessita di una variabile

solitamente chiamata indice (perché con il suo valore indica a che punto siamo), che attraversa una

sequenza di valori. Per riprodurre l’esempio appena visto, i valori sono i numeri interi da 0 a 9 (per un totale

di 10 ripetizioni).

La struttura AlgoBuild ha il seguente aspetto:

In Scratch la struttura è leggermente diversa, e ci sono due possibilità:

Vediamo quindi le sequenze nei due programmi:

*** ... inizia. 0.0 1.0 2.0 3.0 ... 9.0 *** ... termina.

Scratch

AlgoBuild

Page 110: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

L’obiettivo di questo esercizio preparatorio è di trovare le cifre di un numero (anche in questo caso, fino a

tre: unità, decine, centinaia). Consideriamo una variabile chiamata x, con un valore iniziale di 482.26

Una prima soluzione è il calcolo diretto di tre variabili:

u cifra delle unità di x 2

d cifra delle unità della parte intera della divisione di x per 10 48, poi 8

c parte intera della divisione di x per 100 4

Il calcolo delle decine non è complesso come può sembrare, essendo

una sequenza di due operazioni (una divisione intera, seguita da un

resto). In questi casi, occorre combinare più blocchi di calcolo,

trascinando il primo in uno degli spazi vuoti del secondo. Come con le

parentesi in algebra, è il blocco interno, non quello esterno, ad essere

eseguito per primo.

Una seconda soluzione estrae progressivamente le cifre della x, in questo modo:

Valore di partenza x è 482

Troviamo la cifra delle unità e la portiamo in una variabile (u) u diventa 2

Dividiamo x per 10 e teniamo la parte intera x diventa 48

Troviamo la cifra delle unità e la portiamo in una variabile (d) d diventa 8

Dividiamo x per 10 e teniamo la parte intera x diventa 4

Troviamo la cifra delle unità e la portiamo in una variabile (c) c diventa 4

Dividiamo x per 10 e teniamo la parte intera x diventa 0

L’ultima divisione non è strettamente necessaria: serve solo a mantenere la simmetria con le operazioni

precedenti, che sono sempre a coppie (un resto, una divisione). Più avanti vedremo come ripetere

automaticamente una sequenza di operazioni (che siano una, due, o un qualsiasi numero).

26 Un programma deve funzionare sempre nello stesso modo, indipendentemente dai valori. Con un numero diverso, i

calcoli danno risultati diversi, ma il metodo è sempre lo stesso.

u = x % 10

x = floor(x/10)

d = x % 10

x = floor(x/10)

c = x % 10

x = floor(x/10)

OUT c

OUT d

output u

Calcoli sintetici

Page 111: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

*** PROGRAMMA inizia. INPUT: x=482 var: | x=482.0 | OUTPUT x: 482.0 ASSEGNA: x <- 48.0 var: | x=48.0 | OUTPUT x: 48.0 ASSEGNA: x <- 4.0 var: | x=4.0 | OUTPUT x: 4.0 ASSEGNA: x <- 0.0 var: | x=0.0 | *** PROGRAMMA termina.

L’estrazione delle cifre di un numero è stata eseguita limitatamente a tre cifre, perché il procedimento usato

era piuttosto elementare. Vediamo ora un metodo per demolire un numero qualunque, controllando non le

cifre in posizioni note, ma sfruttando il fatto che, dividendo in modo intero un numero, si elimina la cifra

delle unità: a forza di dividere, prima o poi troveremo zero.

Questo “prima o poi” è il fulcro del blocco “ripeti”, che continua ad eseguire una sequenza di blocchi fino al

momento in cui si verifica una determinata condizione. Ovviamente, occorre conoscere e definire quale sia

questa condizione. Con le divisioni intere non è un problema: continuando a dividere si ottiene zero.

In AlgoBuild e nei linguaggi di programmazione, questo tipo di sequenza non

aritmetica è chiamato while (immagine a destra).

La traduzione di questo concetto è che non c’è bisogno di ripetere i blocchi,

basta ripetere l’esecuzione di una sola sequenza, a patto di indicare

correttamente la condizione di arresto. Nel nostro caso è necessario ridurre il

quoziente alla sua parte intera (altrimenti il numero non raggiungerà lo zero),

usando l’operatore “intero inferiore”:

Se, ad esempio, il numero scritto fosse 482, le rispettive sequenze di risposta sarebbero:

Notiamo che il valore finale 0 non viene visualizzato: esso fa terminare il

ciclo, quindi uscire dal blocco “ripeti”, e dopo il blocco c’è la fine dello

script. Per visualizzare anche il valore finale, occorre un nuovo blocco

“dire” dopo la fine del ciclo (e non c’è scampo: non esiste un altro modo

semplice per farlo).

Se non si eseguisse la divisione intera (usando solo x/10), la sequenza delle

risposte sarebbe:

482 48.20 4.82 0.48 0.05 0.004820000000005 ...

e così via con numeri sempre più piccoli, fino circa al 323° decimale o giù di lì. A quel punto, anche Scratch

considera nullo il valore della variabile e il ciclo finalmente termina, per andare poi alla fine dello script.

Page 112: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Schemi per la gestione delle cifre di un numero

Ogni volta che si affronta un problema con le cifre di un numero, occorre ripetere il procedimento visto

prima. Questo diventa uno schema che varierà solo nella parte centrale del ciclo.

1) Conteggio delle cifre 2) Somma delle cifre 3) Trovare la cifra maggiore

Page 113: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

4) Conteggio delle cifre pari 5) Doppio conteggio: le cifre maggiori di 5 e le altre

Page 114: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Schemi per le progressioni

Ogni volta che si affronta un problema con una progressione (sequenza regolare), si suggerisce l’uso di una

struttura for, che può o meno contenere un filtro.

Esempio: data in input una variabile a, scrivere una sequenza ascendente da 1 ad a, triplicando il numero

scritto.

Esempio: data in input una variabile a, scrivere la sequenza ascendente dei divisori di a. Il filtro consiste nel

controllare quali numeri della sequenza vanno scelti.

Page 115: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Algoritmi

Page 116: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Come ottenere l’indirizzo MAC della scheda wireless

L’accesso di ogni computer alla rete di istituto richiede un permesso. Questo viene assegnato ad ogni scheda

di rete, che è identificata da un codice chiamato indirizzo MAC (Media Access Control), ed è una sequenza

di 12 numeri o lettere, solitamente scritti a gruppi di 2, separati da - o :, in questo modo:

f5-60-c2-e9-87-1d

f6:6f:cc:e9:42:a1

Le lettere sono comprese tra a e f, essendo cifre in base 16.

I portatili hanno solitamente almeno due schede, una Ethernet (che funziona tramite un cavo di rete) e una

Wi-fi (Wi=Wireless, senza cavo). Per controllare i propri indirizzi MAC su sistemi Windows, aprire il

prompt dei comandi, che si presenta come una finestra nera, con il nome assegnato all’utente attuale

(indicato genericamente con xxxxx) e un cursore lampeggiante (evidenziato in rosso).

Scrivere il comando ipconfig/all (alla fine premere Enter). Nell’elenco che viene visualizzato, che può

occupare più righe di quante presenti contemporaneamente nella finestra, cercare la connessione wireless,

eventualmente scorrendo lungo la finestra. La sequenza a fianco è l’indirizzo MAC cercato.

Nell’elenco che compare, scorrere fino a trovare la dicitura Scheda LAN wireless Wi-Fi , e leggere il dato

denominato Indirizzo fisico, quello da usare come chiave di accesso. Nell’esempio è visualizzato in

rosso:

... Scheda LAN wireless Wi-Fi: Suffisso DNS specifico per connessione: homenet.telecomitalia.it Descrizione . . . . . . . . . . . . . : Qualcomm Atheros ... Indirizzo fisico. . . . . . . . . . . : 30-52-00-6D-1B-37 DHCP abilitato. . . . . . . . . . . . : Sì Configurazione automatica abilitata : Sì Indirizzo IPv6. . . . . . . . . . . . : fe80::b556:bfa... Indirizzo IPv4. . . . . . . . . . . . : 192.168.1.234(Preferenziale) Subnet mask . . . . . . . . . . . . . : 255.255.255.0 Lease ottenuto. . . . . . . . . . . . : martedì 21 novembre 2017 18:40:01 Scadenza lease . . . . . . . . . . . : mercoledì 22 novembre 2017 00:40:01 Gateway predefinito . . . . . . . . . : 192.168.1.1 Server DHCP . . . . . . . . . . . . . : 192.168.1.1 IAID DHCPv6 . . . . . . . . . . . . . : 87053003 DUID Client DHCPv6. . . . . . . . . . : 00-01-00-01-1D-B8-D9-29-F0-76-1C-FB-EE-BE Server DNS . . . . . . . . . . . . . : 192.168.1.1 NetBIOS su TCP/IP . . . . . . . . . . : Attivato ...

Page 117: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Come leggere l’indirizzo MAC della scheda wireless sui sistemi MAC

N.B.: l’indirizzo MAC (Media Access Control) non ha nulla a che fare con il nome del sistema.

Esistono due modi per conoscere l’indirizzo della propria scheda.

Modo 1 (interattivo)

Scegliere Preferenze di Sistema dal menu generale, e da lì selezionare Rete:

Scegliere la scheda wireless, poi comparirà l’indirizzo MAC

Page 118: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Modo 2 (a comando)

Attivare Terminale da applicazioni/utilità:

Scrivere ifconfig nella finestra Terminale e premere Enter/Return.

Nell’elenco visualizzato, cercare le voci en0 e en1, che rappresentano le schede di connessione

rispettivamente con cavo e wireless. Se sono entrambe presenti, l’indirizzo MAC da annotare è il secondo.

Se il Sistema ha solo la connessione wireless, ovviamente ci sarà un solo indirizzo MAC.

Page 119: Liceo delle Scienze Applicate Informatica · Cos’è (e cosa non è) l ... In realtà la prima macchina calcolatrice conosciuta fu costruita ... non programmabile, costruita per

Come installare AlgoBuild su Mac

Andare sul sito ufficiale di AlgoBuild e scaricarlo per versione Mac;

Una volta scaricato cliccare l’icona di AlgoBuild; compare una icona che indica di scaricare SDK di Java;

sotto tale icona compaiono due opzioni: “ok” o “più informazioni”; scegliere “più informazioni”;

Compare questa pagina, scaricare il file cerchiato (Java SE Download):

Una volta scaricato, compare questa pagina dove va selezionato il JDK associato a Mac OS X.