#NetGeneration - informatica per il primo biennio [2 ed.] 9788823370654

315 53 33MB

Italian Pages 429 Year 2022

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

#NetGeneration - informatica per il primo biennio [2 ed.]
 9788823370654

Table of contents :
NetGeneration 1
NetGeneration 1
File
Blank Page
File0001
File0002
File0003
File0004
File0005
File
File0001
File0002
File0003

Citation preview

DDI DIDATTICA DIGITALE INTEGRATA

# N etGene:tation Seconda edizione _



INFORMATICA PER IL PRIMO BIENNIO

WRAMONTANA

ISBN 978-88-233 7065-4 © 2022 Rizzoli Education S.p.A. - Milano Prima edizione: gennaio 2022 Tutti i cliritti riservati Ristarnpe : 2022 2023

2024

2025

0

4

6

1

2

3

5

7

2026 8 9

~ FONT biancoenero® Questo libro usa la font ad Alta Leg gibilita biancoenero® di biancoenero ediz io ni, disegnata da Umberto Misch i . La font e gratuita per studenti e insegnanti .

Stampa: Centro Poligrafico Milano S. p .A. - Casarile (Ml)

Coordinamento eclitoriale: Elisa Pettinari Coordinamento redazionale: Gabriele Zuti, Emanuele Bottazzi Progetto grafico: Type & Type, Cernusco sul Naviglio (MI); Angela Garignani Progetto grafico di copertina: zarnpecliverse, Carate Brianza (MB) Impaginazione copertina: Apilab, Azzano San Paolo (BG) Reclazione, elaborazione digitale testo e immagini e impaginazione: Dedita , Rovella Porro (CO) Progettazione contenuti digitali: Fabio Ferri, Nicola Barzagli Reclazione contenuti cligitali: cluDAT Sri Realizzazione contenuti digitali: cluDAT Sri, EICON s. r.l. , Frigo Studio, IMMAGINA s. r.l. , Lurnina Datarnatics Si ringraziano: Viviana Pinto per la revisione critica delle Ven.fiche di fi ne capitolo, dei Compiti di realta e de Ile schede Infofacile; Pao la Tabachin per l'adattamento e la revisione dei capitoli digitali dedicati alla suite LibreOffice; Elisa Bellistri per ii contributo alle rubriche e ai laboratori.

Immagine di copertina: Happy College students using laptop and tablet pc on campus lawn © RyanKing999 - Getty Images Crediti fotografici Archivio Gettyimages: Ariel Skelley, Nikada, Compassionate Eye Foundation/James Tse, Jeffrey Coolidge, metamorworks, AlesVeluscek, matejmo, Chris Hellier, skegbydave, pagadesign, Anton Marchenkov, vlado85rs, 07_av, gawrav, yusufsarlar, jaroon, NorGal, eclipse_images, Peter Dazeley, sefa ozel, isak55, Dacian_G, venimo, peshkov, RamCreativ, -VICTOR-, drogatnev, Alistair Berg, Ekaterina Romanova, imaginima, golubovy, pidjoe, yayayoyo, 10'000 Hours, gmast3r, Simfo, dam_point, Talaj , mirsad sarajlic, Grafner, Peter Dazeley, fcafotodigital. Archivio Vvstudio - Freepik. com (Logo Istagram) . Archivio CC BY-SA 2.5: Yukihiro Matsumoto, Ruby Visual Identity Team (Logo Ruby). Archivio CC BY-SA 3.0: Renee French (Logo Go). Archivio CC BY-SA 4.0: Hadley Wickham and others at RStudio (Logo R); The Scratch team (Logo Scratch); Timachevsky (Logo Python); Biktora (Logo php); Great Brightstar (loghi Writer, Cale, Impress) . U< Al ION

+

+



.,,,,.

'- -

+



lnnovare insieme , .: ; \'

:::~

INNOVA Le nuove metodologie per la scuola che cambia IN NOVA

e il progetto di Rizzoli Education per essere al fianco delle studentesse e degli studenti, dei docenti e delle docenti con una proposta didattica innovativa, coinvolgente, aperta agli stili di apprendimento di oggi.

e ouali metodologie?

• Perche le nuove metodologie? Per creare contesti di apprendimento motivanti, per dare voce e spazi inediti a studenti e studentesse. Le nuove metodologie, inoltre, ratforzano e ampliano l'ambito delle competenze: la collaborativa/ cooperativa, la digitale, l'argomentativa, l'espositiva, quelle sociali e civiche, quella di ricerca e il pensiero critico.

• Come metterle in pratica?

Storytelling, debate, jigsaw (la classe puzzle), TEAL, flipped classroom, escape room sono alcune delle metodologie innovative presenti nei nostri libri. Ciascuna attivita e declinata sui contenuti delle diverse discipline e adattata per livello di complessita alla classe in cui viene proposta.

La sfida stimolante di queste metodologie consiste nell'opportunita di integrare e variare le pratiche didattiche consolidate, basate sull'insegnamento di tipo trasmissivo. Ciascuna delle attivita proposte indica gli strumenti e da le indicazioni operative necessarie per tutte le attrici e gli attori coinvolti.

INSIEME

perche le nuove metodologie sono collaborative ed esperienziali

DIGITALE

COINVOLGIMENTO

perche cresce l'integrazione delle tecnologie digitali nelle pratiche didattiche

perche si sperimentano modalita inedite di apprendimento

V CONSAPEVOLEZZA

CREATIVITA

perche l'autovalutazione e la valutazione condivisa

perche lavorare in modo cooperativo significa anche

fanno parte delle nuove metodologie

esprimere se stessi e risolvere problemi

COMPETENZE

perche si amplia il ventaglio delle

L..

competenze

INNOVA SI TROVA NEI LIBRI, CARTACEI E DIGITALI, E NEI MATERIALI PER LE DOCENTI E I DOCENTI

.

Lavorare insieme per PARITA DI GENERE e PLURALITA Rizzoli Education ha intrapreso un percorso di ricerca che mette al centro delle sue attivita i temi della Parita di genere e della Pluralita. Un percorso graduale e in continua aggiornamento. che riguarda tutti i materiali e i contenuti prodotti e che e assolutamente irrinunciabile. I principi ispiratori sono stati maturati anche grazie alla pluriennale collaborazione scientifica con Irene Biemmi. specialista in Pedagogia di genere presso l·Universita di Firenze .

CHE COSA VOGLIAMO •

Combattere gli stereotipi e i ' pregiudizi di genere. owero valorizzare le persone e non il genere a cui appartengono. rappresentandole sempre nell'espressione delle loro capacita e della loro personalita e mai in base a ruoli predeterminati.



Assumere un punto di vista che rappresenti e valorizzi tutte le differenze. riflettendo la realta di un mondo plurale e multiforme. Stimolare una visione del mondo ispirata da principi di equita. uguaglianza. pari opportunita e non discriminazione.



Utilizzare un linguaggio, ' verbale e visivo, che non esprima pregiudizi etnici. religiosi. di genere. di orientamento sessuale o abilistici. poiche il linguaggio non si limita a descrivere il mondo ma lo interpreta e lo trasforma attivamente.

e Proporre modelli piu aperti, consapevoli e liberi. con l·auspicio che cosi le giovani generazioni. alla cui formazione i nostri libri offrono un contributo. possano ampliare le possibilita di costruire la propria identita e di progettare il proprio futuro.

CHE COSA FACCIAMO In collaborazione con Erickson e Irene Biemmi, abbiamo sviluppato alcune linee guida che coinvolgono tutte le fasi di lavorazione dei nostri testi. _.··• Realizziamo appuntamenti ' di formazione per le professionalita della Casa Editrice e per quelle esterne che con essa collaborano per mettere in atto i principi di parita e inclusivita. Mettiamo a disposizione percorsi formativi dedicati anche a docenti e genitori .

Abbiamo individuato dei criteri • ··... fondamentali che ci guidano sia nella rappresentazione equilibrata dei generi e della realta plurale e multiforme che ci circonda. sia nell·utilizzo del linguaggio verbale e di quello visivo.

Chiediamo di condividere • --, principi. criteri fondamentali e linee guida a tutte le persone coinvolte nella realizzazione dei nostri materiali (autrici e autori. illustratrici e illustratori. redattori e redattrici. formatori e formatrici. .. ).

Ci awaliamo della consulenza • ···························· di figure scientifiche esperte in questioni linguistiche di genere e sui temi della pluralita e della non discriminazione.

....

··.... •• Prevediamo fasi di controllo e revisione sui testi scritti e sulle immagi ni rispetto alle questioni di genere e alla pluralita. Gia dal 2018 portiamo avanti. in collaborazione con Erickson. il progetto Obiettivo Parita. che prevede la supeNisione delle nostre opere della Scuola Primaria da parte di Irene Biemmi.

CHE COSA FAR EMO Continueremo a lavorare sempre piu insieme a tutte e tutti (docenti, studentesse e studenti, genitori) per contribuire a costruire immaginari futuri liberi da pregiudizi e che valorizzino le pluralita .

La didattica digitale integrata

DIDATTICA DIGITALE INTEGRATA

La Didattica Digitale lntegrata, o DDI, rappresenta un'opportunita di integrazione tra ii libro di carta e gli strumenti digitali ma anchetra i diversi stili cognitivi e di apprendimento.

e

La DD! uno strumento che aiuta i giovani a sviluppare nuove competenze, come organizzare in modo efficace l'attivita di studio in classe o a casa; utilizzare in modo consapevole la tecnologia; imparare a imparare in modo piu coinvolgente e appagante. La DD! asseconda ii processo di apprendimento di ciascuno, perche permette di scegliere tra una molteplicita di strumenti quello piu adatto al proprio stile di apprendimento: ii libro, i video, le mappe concettuali, gli audio, gli esercizi in autovalutazione . Ecos) che Rizzoli Education progetta tutti i corsi.

e

II libro resta ii centro de! kit per ii successo formativo, ma completato da una serie di strumenti organizzati nel sistema HUB Scuola, dove si potranno trovare tante risorse utili e divertenti collegate al libro.

e

Ogni corso progettato per affiancare e integrare la lezione tradizionale con una serie di contenuti digitali che arricchiscono, approfondiscono o sintetizzano gli argomenti. Grazie a tutte le potenzialita de! corso si possono costruire percorsi formativi personalizzabili, efficaci e soddisfacenti che utilizzano anche metodologie didattiche innovative.

HUB SCUOLA

LIBRO CARTACEO

-------------------------· I

v

CONTENUTI DIGITAL!

LIBRO DIGITALE

I I

v HUB TEST

HUB Scuola: perunadidatticadigitalmente aumen ata e

HUB Scuola la so luzione on line che permette a studenti e docenti di consultare ii libro digitale, esplorare le risorse multimediali integrate nel libro, creare classi virtuali e condividere i contenuti disponibili.

Scopri l'ecosistema HUB Scuola Per consu ltare ii libro di testo digitale e stimolare l'apprendimento.

Per trovare spunti didattici sempre originali.

Per condividere risorse didattiche con gli alu nni ed assegnare attivita.

Un unico atlante, con centinaia di carte, per la Geografia e la Storia.

L'App per consultare i contenuti digitali da smartphone.

KIT

Un vero e proprio museo online sempre con te, a casa e a scuola.

0

hubt ~ar

Per consu Itare tutti i contenuti digitali del libro di testo.

Piu di 3500 video con contenuti d'autore, liberamente consultabili per una didattica ingaggiante.

Per creare test e verifiche partendo da un ricco database di quesiti disponibili.

Per prepararsi alle prove INVALSI.

L'.ambiente online per imparare, suonare e cantare insieme in classe ed esercitarsi, con ii tutor, a casa.

Per accedere a hubscuola.it

PerScaricare HUB Young o HUB Kids

Sei registrato? Usa le tue credenziali Riuoli Education e inizia a consultare i contenuti. Non sei registrato?Cliccasu registrati e compila ii form.

L'.App scaricabile direttamente da hubscuola.it oppure dai principali store on line. Lancia l'App, effettua ii login e nella libreria troverai tutti i libri che hai attivato.

e

Link utili , La piattaforma per la didattica digitale: hubscuola.it , II silo web con le nostre novita: >

rizzolieducation.it l..'.assistenza per tutti: assistenza.hubscuola.it

GUIDA ALLA LETTURA •

La rete Internet

c·--...-ooct""'9o..__~....._.,doopoo,,..,_..,

Emolto importante che tu prenda coscienza dell'evoluzione della tecnologia e degli studi che hanno portato ai risultati che oggi trovi descritti nei capitoli del libro di testo che ti accingi a studiare.

:=::- :..~:.~=:..'":.:."=:-"' ·=--==--~=.:=:.::.:=.:..::-==~ ·- -·- :::::=~-~-"'::'=·

~

._: . -=·-·-·

=,!,..-=:.--:.::-...::==:...~;;;:-_,..._._,._Oev-•P'--..---·...

·=.,, . :-•" - 9 - •

-5a.,..,.,t._.,,.__..._. ... -------· _..,.._o...n._..,...le_

===:==~~.:::=:-= =--~

·----

=::.=~-

o:~·-~.

§:-:-.::::::::..-.~.::.

__ == --•-•-r__ _. _. __ --·-··

INTERNET: LA STORIA DELLE RETI

., . .>A.

---=---..

_ ,_ ,.6 __ " ' !_ 1_ _ __ ~_ , ._ . .dogf, .,.. _ _ . q,, _ _

~::~=..--:::=~

....~-==..-=::,

=-~...:=..":': ,.,.,_,_.,_, ...,_ ___ .,.

=-====--:_-:;:=:;;:!.

!::.~:-~-:.:::_·., :. . . ~.:.: .·, _-__,· , .·--

-=..::·

,_,.

1

1945

1957

~.!...

=:...-===--= -·-

1973 198=2=

1971

1986

1969

==--· . . ~,...: °t: ..~-c::',. ►""."..:.,_~ ·-·!, .

:::-::-

Go gle

=:.:.=--

. ~~---·

= = =1=99=7=-= -= = = : : a 1993 1999 2021

,_,.,....._............. =-~""'~-INTHNET

Metodologie INNOVA CllN

,:,o ...... , Q I I N ~

In apertura di unita spunti operativi permettono a te e alla tua classe di lavorare secondo metodologie didattiche coinvolgenti come jigsaw, debate, flipped classroom confrontandoti e collaborando con i compagni e l'insegnante .

--

:.:::::i;:.::...,.. -.~- .

Elaborare un testo

p;:::~:~-~!::~:::d1;~tl

'.n

@

, vid eo1cri t\ur1

Utilizzare un foglio di calcolo In questo Caprtolo parl&remo di, . fogli dinlcolo

I In vista di un eventuale esame per conseguire la certificazione, trovi utili riferimenti tra ii tuo libro di testo e ii Syllabus dell'ICDL.

VIII

CHE COS' E UN FOGUO DI CALCOLO

: :i~ ; :~ : :~ .. , .... .. .. u .. z..u .. u ,

ftio,i,.,,hca.1,,>1,.,,unq:l>J.-.-,odlllc,,... J. i,brll, orll,

........,, loglGdli.-..

APPLICATIVI I capitoli che des cri vono gli applicativi del pacchetto di office automation ti vengono presentati su carta nella versione proprietaria Office e in digitale nella versione open source della suite LibreOffice. Scaricali da Hub Scuola.

----------- - - - - -

0

The environmental Impact of computer science technologlu :

Pro'11amo insleme

F,.,.,.....,...,......,..,...,~-..... lou9,f,.,....,... p•edocl-22cm • 1Scm ~-W1-wrf>I ,_,,_.,1,g,.,,.

:::.".:i'=':'::,4:.:!•-•Y --"-F'-••'M11

4~:' ,.._

l1rn,..,"II and.,.. n..:I • ,_.,,.. p,Kl""!M__..,,...,, 11no,,,r,....,.,_u,

.~ ...

ESEMPI SVOLTI E DA SVOLGERE

IN ENGLI SH

I ON-•

"""f>CI

01•oJMdlCfflonuf0Ilo'll'ol ,.,_"""""' - ~ ~



01 a p, ova tu!

-

..... ..... ~,

s._,..,• ..,..__,.._,_• ..,...._..OO'~dof,ancoquol•1o...porl-

dol__,.,..,.,,_.,._,,,1



..~..... ___ Ot,......,_,.,..,,..,_..,

0..-~n..,._,__...,. _ _ _ ..,..•--to~'

No,, ................. ~ - - - ~ - · - " " " ' - - - - -

H Ascolta l'audio delle proposte CLIL di fine capitolo direttamente dal tuo smartphone inquadrando ii codice OR in alto nella pagina .

INFOFACILE

f

Fire cllc per lnserlre II tltolQ

:..~~~=- ,_, :::::: ~ ~

-- -~

........

_,_

Fa re ~lie per inserlre ii titolo ~

1··-..·~·""'"'"'""" I

d ~

d1•Hto !ni .. u•-••Word•ot

INFOFACILE

-. --....... -~-""

,. . "· """"'' "'"'' I ~n• UruUu,apo1

.

Logu1doo\onoto

,-·1-

=,,_,.,---c, ....,..~ ... •-nno1 noo 1\

Una scheda su doppia pagina precede gli eserciziari e ti mostra a colpo d'occhio i punti salienti della teoria in modo visuale e infografico ad alta leggibilita.

1''""""''":";:"-· I

;-,- t·-I!:. - -----I

l,h,.d"pOla,~bn11

,

..... c ..081.d.oll 1-drl11lg " . --->

At ivi

a

Confronta la rappresentazione a 8 bit del numero -103 con la tecnica modulo e segno econ quella del complemento a 2.

33

SEZIONE

D

Hardware e software

Come si rappresenta il numero (-31) 10 in complemento a 2 con 8 bit1 Dobbiamo rappresentare il numero x che soddisfi l'equazione: 1 · (-27)

+x =

-31

ovvero -128

+x =

-31

cioe

x=

97

11 numero (97) 10 equi.vale a (1100001\ , per cui otteniamo la tabella seguente. Posizione

7

6

5

5

3

2

1

0

Peso

-27

26

2s

24

23

22

21

20

Bit

1

1

1

0

0

0

0

1

11 numero binario ottenuto prende il nome di complemento a 2 del numero (31) 10 = (00011111\ e si indica con la notazione (11100001) CA 2 . Osserviamo che, in questo modo, 0 ha un'unica rappresentazione: (00000000\A 2 , in quanto (10000000\A 2 corri.sponde a (-128\ 0 .

Generali.zzando, se vogli.amo rappresentare conn bit il numero -m , dobbiamo trovare il numero x che soddisfi la seguente equazione: -2"

Proviamo insieme

+x =

ovvero x

-m

=

2

m

11 -

Convertiamo in base 10 un numero espresso in complemento a 2

Convertiamo ii numero (1010011)cA 2 in un numero negativo in base 10 utilizzando la tabella. La rappresentazione e a 7 bit, pertanto assegniamo al bit piu significativo ii peso - 26 • Posizione

6

5

4

3

0

- 26

2s

24

23

2 22

1

Peso

21

20

Bit

1

0

1

0

0

1

1

Moltiplichiamo ii valore dei bit per ii loro peso e sommiamo i risultati parziali: 1 . (- 26 ) + 0 . 25 + 1 • 24 + 0 - 23 + 0 • 2 2 + 1 • 21 + 1 • 2° = - 64 + 16 + 2 + 1 = -45

Perna 8 bit, l'inversione dei bit corrisponde a 127 - n su 7 bit, senza cioe ii bit di segno. Si somma 1 perche: x= 128 - n = (127 - n) + 1

LA TECNICA PER IL CALCOLO DEL COMPLEMENTO A 2 Per calcolare i.l complemento a 2 di un numero con segno esiste un metodo pi.u veloce di. quello vi.sto nel paragrafo precedente. Possi.amo procedere come segue.

Passo 1. Esprimi.amo il numero senza segno in binario . Passo 2. lnvertiamo tutti. i bit trasformando gli. 1 in 0 e gli 0 in 1; tale opera-

zione prende il nome di "complemento a l". Passo 3. Sommiamo 1 al numero ottenuto.

Proviamo insieme Rappresentiamo nel sistema binario ii numero (-31) 10 con la tecnica del complemento a 2

Passo 1. Esprim iamo ii numero senza segno in binario :

(31) 10 = (00011111) 2

Passo 2. lnvertiamo i bit, cioe calcoliamo ii complemento a 1:

CA 1(00011111 )2 = (111 00000)cA,

Passo 3. Aggiungiamo 1, cioe calcoliamo ii complemento a 2:

CA2(00011111) 2 = (11100001)cA2

Eseguiamo la controprova : 1 -(- 27) + 1-26 + 1 - 25 + 0-2 4 + 0-2 3 + 0-2 2 + 0-2 1 + 1-2°=- 128 + 64 + 32 + 1 =-31

34

Co mpute r e codic i

CAPITOLO

Per effettuare velocemente il complemento a 2 di un numero binario, possiamo applicare la seguente tecnica: partendo da destra, lasciamo invariati i bit fino al primo con valore 1 compreso; poi invertiamo tutti gli altri . Per esempio: CA2(0001111 0\

FJ

#CLIP Segui ii video: II calcolo del complemento a 2

= (l 11000 10)CA2

Osserviamo che, per i numeri positivi, e sufficiente calcolare la rappresentazione binaria, senza effettuare il complemento a 2. Riassumiamo quanta detto nella tabella seguente. Complemento Complemento 2 (8 bit) a 1 (8 bit)

12

1100

00001100

00001100

00001100

00001100

-12

1100

00001100

10001100

11110011

11110100

N Un altro metodo per rappresentare i numeri negativi in binario con due soli simboli e la cosiddetta notazione eccesso N , dove N = 2 1 - 1 e 11 e il numero dei bit utilizzati . ECCESSO

11

-

In questa notazione il numero N, convertito in binario, rappresenta lo 0, i nu meri minori di N sono i numeri negativi, quelli maggiori di Ni positivi. Se usiamo una rappresentazione binaria a 8 bit, 11 = 8 e quindi N = 127. 0 sara rappresentato dal valore 127, che in binario, a 8 bit, e (01111111\. Porremo quindi che (0\ 0 = (01111111\rn 7 . Allo stesso modo, ogni numero maggiore o minore di 0 viene espresso in eccesso 127 sommandogli il numero 127.

Proviamo insieme Rappresentiamo nel sistema binario i numeri (12) 10 e (-12) 10 a 8 bit con la notazione eccesso 127 I numeri che dobbiamo esprimere in binario sono 127 + 12 = 139 e 127 - 12 = 115. Poiche (139) 10 = (10001011) 2 e (115) 10 = (01110011) 2 , abbiamo:

(+ 12),o

=

(10001011 ) EC127

(- 12),o

=

(011100 11) EC127

Per effettuare la sottrazione tra numeri binari si utilizzano le seguenti regole. LA SOTTRAZIONE TRA NUMERI BINARI

1-0=1 1- 1=0

0 - 1 = 1 con un prestito dalla cifra a sinistra

Proviamo insieme Eseguiamo la sottrazione (29) 10

(14) 10

=

=

Abbiamo (29) 10

(00011101 )2 e (14) 10

(15) 10 in binario nella rappresentazione a 8 bit

(00001110) 2 . Possiamo aiutarci con lo schema seguente .

0

0

0

?, 10 r. 10 4-0 ,I 4-0 ,/ 4-0

Sottraendo 0

0

0

0

1

0

0

0

0

1

Riporti Minuendo

Risultato



10

0

1

-

1

1

0

=

1

1

1

=

,I

(..... -J.n

35

SEZIONE

D

Hardware e software

L'esecuzione della sottrazione con questa tecnica risulta complessa e dispendiosa anche per un calcolatore. Pertanto, si preferisce trnsformare l'opernzione nell 'addizione di due numeri con segno rappresentati con il complemento a 2 . Riprendiamo l 'opernzione (29)10

(14\

-

0

e scriviamola come (29)10

+ (-14\ 0 .

• Convertiamo in binario il primo addenda. (29\

0

= (00011101 \

• Rappresentiamo il numero ( -14) 10 con la tecnica del complemento a 2.

= (00001110\ CAl(0000ll 10\ = (l ll l000l )CAJ (14\

0

CA2(00001110)2 = (llll000l)CAI

+1=

(11110010)CA2

• A questo punto effettuiamo l'addizione. Riporti

Overflow 1 Svolgi in binario l'operazione (9)10

A

B

-

10 11

C

12

D

13

E

14

F

15

(15)10 .

0

0

0

1

1

1

0

1

+

1

1

1

1

0

0

1

0

=

0

0

0

0

1

1

1

1

= (15) 10

11 bit in overflow, cioe in eccesso, va ignorato.

ALTRI SISTEMI DI NUMERAZIONE Siccome il sistema binario prevede due soli simboli, l'espressione binaria di un numero ha piu cifre rispetto alla sua rappresentazione decimale. Per ottenere una scrittura piu sintetica, ma che si presti a un'immediata "trnduzione" in binario, si utilizza la base 16. In questo caso il sistema si dice esadecimale e utilizza i seguenti 16 simboli: 0, 1,2 , 3 , 4 , 5, 6, 7, 8,9,A, B, C, D, E, F Ai primi dieci e attribuito lo stesso valore che nel sistema decimale; per gli altri (le lettere) si procede come nella tabella di sinistra. Per convertire un numero decimale in esadecimale, possiamo utilizzare un procedimento analogo a quello impiegato per la conversione binaria. LA CONVERSIONE DA DECIMALE A ESADECIMALE

Passo 1. Dividiamo il numero per 16 calcolando quoziente e resto. Se i resti assumono valori tra 10 e 15 , usiamo le lettere corrispondenti. Passo 2. Seil quoziente

e diverso da 0, ripetiamo l'opernzione del passo

1.

Passo 3. La rappresentazione esadecimale consiste nella sequenza dei resti scritti in ordine inverso rispetto a quello in cui li abbiamo ottenuti. Se il numero decimale ha cifre anche dopa la virgola , si procede cosl.

Passo 1. Moltiplichiamo la pane frazionaria per 16 e sottrniamo al numero ottenuto la sua pane intern. Passo 2. Seil risultato e diverso da 0, ripetiamo le operazioni descritte al passo 1. Passo 3. l'.espressione in esadecimale della pane decimale del numero data e costituita dai valori della pane intern nell'ordine in cui li abbiamo ottenuti. Per convertire un numero esadecimale in decimale, applichiamo la stessa tecnica vista per convertire un numero binario in decimale, ossia la definizione di notazione posizionale. LA CONVERSIONE DA ESADECIMALE A DECIMALE

36

Computer e codici

CAPITOLO

FJ

Proviamo insieme Convertiamo in esadecimale ii numero (1246,35) 10 1 Parte intera

Consideriamo la sola parte intera del numero da convertire. Dividiamo ii numero 1246 per 16 tenendo conto dei resti, che riscriveremo in ordine opposto.

= 77 con resto 14 77 : 16 = 4 con resto 13 13 : 16 = 0 con resto 4

1246 : 16

----+

E {la cifra meno significativa)

----+

D

----+

4 (la cifra piu significativa)

II procedimento si puo schematizzare come segue. : 16 1246 77 4 0

(1246) 10

14 13 4

=

l

(4DE) 16

2 Parte frazionaria

Consideriamo la parte frazionaria del numero da convertire. Lo convertiamo utilizzando la stessa tecnica vista nella conversione da decimale a binario. 0,35 · 16 0,6 - 16

= 5,6

0,6 - 16 0,6 - 16

= 9,6

= 9,6 = 9,6

= 0,6 = 0,6 9 = 0,6 9 = 0,6

5,6 - 5 9,6 - 9

prima cifra esadecimale dopo la virgo la: 5 seconda cifra esadecimale dopo la virgola: 9

9,6 9,6 -

terza cifra esadecimale dopo la virgola: 9 quarta cifra esadecimale dopo la virgola: 9

Osserviamo che la rappresentazione del numero Dunque: (1246,35) 10

e periodica.

= (4DE,599999 .. .)16

Ora prova tu! Converti da esadecimale a binario e viceversa Puoi convertire un numero esadecimale in binario in almeno due modi. Pu oi convertire ii numero esadecimale in decimale e successivamente in binario. Prova a farlo con ii numero (16)16' 2 Esiste una strada molto piu veloce: a ogni cifra del numero esadecimale fai corrispondere ii relativo val ore binario a 4 bit; per esempio, (A) 16 vale (10) 10 e quin di corri sponde a (1010\ . Riscrivi adesso di fila tutti i gruppi di 4 b it ottenuti . II risultato e ugual e a quello ottenuto al punto 1? Ora prova con la procedura seguente. Passo 1. Considera un numero binario, per esempio 1011000100. Passo 2. A partire da destra, raggruppa i bit a 4 a 4. Passo 3. Se gli ultimi bit a sinistra non costituiscono un gruppo di 4, aggiungi degli O a sinistra . Passo 4. Scrivi ii corrispondente valore esadecimale di ciascun gruppo. Passo 5. Riscrivi di fila le cifre esadecimali ottenute: .... ..... ...... ........... ... .. . Ache cosa serve la procedura appena descritta?

37

SEZIONE

D

Hardware e softw are

2.4 LA RAPPRESENTAZIONE BINARIA DEi CARATTERI ALFANUMERICI Come abbiamo visto nel paragrafo 2.3, la rappresentazione in notazione binaria di un numero razionale ha una parte intera e una frazionaria, separate dalla virgola . Lo stesso avviene per i numeri reali.

LA RAPPRESENTAZIONE DEi NUMERI REALI Ci sono due tipologie di rappresentazione dei numeri reali in un computer: la rappresentazione in virgola fissa e quella in virgola mobile. Nella rappresentazione in virgola fissa vengono stabiliti un numero hsso di bit da riservare alla parte intera e uno da riservare alla parte fraziona ria. Fissiamo, per esempio, 4 bit per la parte intera e 4 bit per la parte frazionaria . Alcuni numeri esprimibili in questa forma sono: 1111,0001

1011,1000

0000,1000

1111,1111

Osservando questi esempi si deduce che, in alcuni casi, si verifica uno spreco di bit. La rappresentazione in virgola mobile, che consente un utilizzo piu efficiente dei bit a disposizione, si basa sulla seguente proprieta dei numeri reali. •

Siano N, M, B, E numeri in rappresentazione decimale. Allora ii numero reale N si puo rappresentare nella forma mista : N = (M) 8 • BE, dove (M) 8 prende ii nome di mantissa ed Ee un numero intero.

Per esempio, il numero (13,687510\ 0 , in binario 1101,1011 , si puo rappresentare in forma mista come (1,1011011\ · 23 . La forma mista permette di "normalizzare" la mantissa, ossia di scriverla in modo che la parte intera sia rappresentata da un unico bit di valore 1.

Osserva che, proprio come accade in base 10, anche in base 2 moltiplicare un numero frazionario per la base con esponente positivo n significa spostare di n posti la virgola verso sinistra . In modo analogo, per spostare la virgola din posti verso destra , bastera moltiplicare il numero per la base con esponente -n.

Proviamo insieme Normalizziamo i seguenti numeri binari: 110,0111; 1101,01; 0,0001111 Dobbiamo spostare la virgola all'interno dei numeri in modo che, leggendo ii numero da sinistra a destra, venga a trovarsi subito dopo ii primo 1: 110,0111 -. 1,100111 ;

- 1101,01 -. - 1,10101;

0,0001111 -. 1,111

Contiamo poi di quante posizion i abbiamo spostato la virgo la (e in qua le d irezi one) e moltipli ch iamo ii numero per l'opportuna potenza d i 2: 110,0111

=

1,100111 . 2 2 ;

- 1101,01

=

- 1,10101 . 23 ;

0,00011 11

=

1,111 . 2- 4

Ora prova tu! Normalizza i seguenti numeri: 1111,0011; 0,000001111 Procedi come indicato nell'esemp io; fai inoltre la contro prova, convertend o in decimale i du e membri di ciascuna equazione per ve rifica re che esprim ano effettivamen te lo stesso numero.

38

Co mputer e cod ici

FJ

CAPITOLO

Nata che qualunque numero binario , espresso in forma mista e normalizzato: • comincia sempre con "l," (o con "-1, " see negativo); • ha un certo numero (variabile) di cifre dopa la virgola; • va moltiplicato per 2 elevato a un esponente positivo o negativo.

#CLIP

Questa e la rapp resentazione in virgola mob ile. Lo standard piu diffuso nella rappresentazione in virgola mobile e IEEE 754, chiamato anche floating point. Essa prevede la codifica di un numero in virgola mobile utilizzando 32 , 64 o 128 bit. Indipendentemente dal numero di bit utilizzati , essi vengono ripartiti in tre gruppi: un bit per il segno (secondo la rappresentazione modulo e segno), un certo numero di bit per l'esponente e i restanti per la mantissa. La distribuzione dei bit in ciascuna codifica e rappresentata nelle tabelle seguenti.

Segui ii video: Lo standard IEEE 754 a 32 bit

, Rappresentazione a 64 bit ("a precisione doppia") bit

Rappresentazione a 128 bit ("a precisione quadrupla")

bit

Segno

bit

Segno

1

Segno

1

Esponente

8

Esponente

11

Esponente

15

Mantissa

23

Mantissa

52

Mantissa

112

Proviamo insieme Rappresentiamo ( 31,375) 10 in virgola mobile secondo lo standard IEEE 754 a 32 bit

Passo 1. II numero e negative: diamo al bit di segno, cioe al p rim o b it , valo re 1 (se foss e stat o posit ivo, gli avremmo assegnato valore 0):

Passo 2. Codifich iamo in binario la parte intera: :2

31

15 7 3

1 0

Pertanto : (31 )10

=

(111 11 )2

= 0,7 5 0,75 · 2 = 1,5 0,5 · 2 = 1

Passo 3. Cod if ich iamo in binario la parte frazionaria: 0,375 · 2

O uindi : (0,3 75)10

=

(0,011 )2

Passo 4. La codifica del numero razionale e: (31,375) 10

=

(1 1111 ,011) 2

Passo 5. N orm alizz iamo ii numero ottenuto al passo 4: 11111,011 = 1,1111011 • 24 Passo 6. Prendiamo la mantissa del numero 1,1111011 • 24 privata dell' 1 che precede la virgola e comp letiamo a destra con degli 0, poiche i bit sono meno d i 23 . 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

39

SEZIONE

D

Hardware e software

Passo 7. Ci restano 8 bit per l'esponente, che nel nostro caso e (4) 10 . Nella standard IEEE 754 a 32 bit, per convenzione, l'esponente si codifica in eccesso 127 (in questo modo, infatti, possiamo usare per ii suo valore tutti gli 8 bit disponibili senza "sprecarne" uno per ii segno). Poiche 4 + 127 = 131, convertiamo in binario (131) 10 . Come mostra lo schema a fianco si ha: (4) 10

=

(10000011 )EC 127

:2 131 65 32 16 8 4 2 1 0

1 1 0 0 0 0 0 1

Passo 8. lnseriamo l'esponente in codifica eccesso 127 ottenuto al passo precedente. 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1000001

Passo 9. Per una notazione piu compatta, 1 10000011

1

C

B

F

e possibile esprimere ii numero in esadecimale: C1 FB0000. 0

1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0

0

0

Ora prova tu! Trasforma ii numero ( 49,526) 10 in virgola mobile secondo lo standard IEEE 754 a 32 bit Segui ii procedimento dell'esemp io e scrivi ii risultato (binario ed esadecimale) nella tabella qui sotto .

LETTERE E SIMBOLI: ASCII E UNICODE Oltre ai numeri, un calcolatore deve poter memorizzare ed elaborare dati non strettamente numerici ossia, come si dice, alfanumerici Oltre alle cifre , i caratteri alfanumerici comprendono lettere, simboli degli operatori matematici ("+ ", " - ", "7", " :", " = " ecc .), caratteri speciali (per esempio, "@ ") e altri. II codice UNICODE comprende anche gli emoji: cerca in Internet la codifica di que lli che utilizzi di piu.

Cerca in Internet una tabella ASCII a 8 bit e usala per codificare alcune parole. UNICODE suddivide i codici in 17 gruppi, detti piani (pla ne), numerati da O a 16. Ciascun piano e costituito da 216 codici diversi. Ouanti codici si hanno in totale? Cerca in Internet qua Ii sono i caratteri del piano O e che cosa significa l'acronimo

BMP.

40



Una successione di caratteri alfanumerici prende ii nome di stringa .

Naturalmente, anche questi simboli vanno espressi mediante l 'alfabeto binario. Per stabilire una codifica e necessario conoscere il numero totale di simboli che vogliamo rappresentare . Se prendiamo l 'alfabeto latino (52 lettere, tra maiuscole e minuscole), le 10 cifre decimali , i simboli per la punteggiatura (sono piu di 50) e i caratteri speciali , otteniamo oltre 100 simboli . La potenza di 2 che piu si avvicina a 100 e 7, poiche 27 = 128. Abbiamo dunque bisogno di almeno 7 bit. 11 codice a 7 bit piu utilizzato per la codifica dei caratteri alfanumerici prende il nome di ASCII, ma oggi se ne usa un'estensione a 8 bit. Tuttavia , se consideriamo anche i caratteri di alfabeti diversi da quello latino (il greco, il cirillico, l'arabo . .. ), vediamo che questo numero non e sufficiente. E nemmeno si avvicina al numero di simboli necessari per le lingue asiatiche, come il cinese o il giapponese. Per tenere conto della grande varieta di simboli necessari , alla fine degli anni Ottanta del secolo scorso si e giunti a un nuovo standard, detto UNICODE . Nella versione 13.0.0 del marzo 2020 i caratteri codificati da questo codice sono arrivati a 143 859. I primi 128 caratteri dell 'UN ICODE sono gli stessi di quelli dell 'ASCII.

Computer e codici

CAPITOLO

FJ

2.5 L'ALGEBRA BOOLEANA L'algebra e una pane della matematica che studia le operazioni definite su insiemi dati di elementi. L'algebra boo lean a si occupa dell'insieme che contiene i due elementi O (fal-

so) e 1 (vero), su cui sono definite tre operazioni, chiamate AN D ("e"), OR ("o") e NOT ("non") e dette anche connettivi logici , il cui risultato pub essere soltanto O o 1.

L'aggettivo booleana de riva da George Boole, nome del matematico e logi co britannico che nel 1847 introdusse questa nuova algebra nel suo Iibro The Mathematical Analysis o f Logic.

valore di verita delle proposizioni ottenute (ossia ii fatto che esse siano vere o false) dipende solo dal valore di verita delle proposizioni che la compongono e dai connettivi utilizzati .

Alla b ase delle ri ce rche di Bo ol e vi era ii tentativo di descri vere in forma algebri ca la logica proposizionale . Tale logica studia le pro posizioni, a partire da quel le elementari, contenenti cioe un so lo predicato e di cui si puo stabilire con certezza se sono vere o fa lse. Le proposizioni elementari collegate attraverso i connetti vi logici formano proposizioni composte. II fatto notevole e che ii

Diverse frasi che pronunciamo quotidianamente si possono ricondurre a proposizioni elementari o composte. Per esempio, "Roma e la capitale d'ltalia" e una proposizione vera; "Roma si trova in Umbria" una proposizione falsa . Da esse, usando ii connettivo "e" si ottiene la proposizione composta: "Roma e la cap ita le d'ltalia e Roma si trova in Umbria", che falsa.

e

Per capire come operano i connettivi, possiamo usare le tavole di verita

e

(Fig. 5) .

AND L'operazione logica AN D e anche chiam ata prodotto logico (o "congiunzione"). Date due proposizioni A e B, il risultato dell 'operazione A AND B e:

0

• 1 (vero) se sia Asia B hanno valore 1 (vero);

0

1

: f¥#i•i=i

L 0PERAZIONE

• 0 (falso) se almeno una tra A e B ha valore O (falso).

0

0 0

0

0

0

0

0

0

1

1

1

0

1

1

1

1

L'operazione logica OR e anche chiamata somma logica (o "disgiunzione"). Date due proposizioni A e B, il risultato dell'operazione A ORB e: L'OPERAZIONE

OR

• 0 (falso) se sia Asia B hanno valore O (falso) ; • 1 (vero) se almeno una tra A e B ha valore 1 (vero).

NOT L'operazione logica NOT e la negazione logica (o "complementazione"). Data una proposizione A, il risultato dell'operazione NOT A e:

L'OPERAZIONE

• 1 (vero) se A ha valore O (falso); • 0 (falso) se A ha valore 1 (vero) . Anche nell'algebra booleana l'ordine delle operazioni e stabilito dalle parentesi, proprio come per le altre operazioni matematiche . Attraverso i connettivi logici possiamo costruire prop osizioni composte e stabilirne il valore di verita. A ogni proposizione, infatti , possiamo associare una tavola di verita simile a quella dei conneuivi, che ne ripor ta i valori (0 o 1) a partire dai valori di verita delle proposizioni elementari che la costituiscono. Per farlo, procediamo nel modo seguente.

Fig . 5 Le t avole di verita diA ANDB,AORB e NOT A.

• Le prime colonne, una per ciascuna delle proposizioni elementari, riportano i valori possibili di queste ultime.

41

SEZIONE

D

Hard w are e soft ware

• Le colonne successive , una per ciascun connettivo utilizzato, riportano i valori assunti dalle proposizioni composte in dipendenza dai valori delle proposizioni elementari che le compongono.

Proviamo insieme Scriviamo la tavola di verita della seguente proposizione: (A AND B) OR (NOT(B)) Nella proposizione compa iono due sole proposizio ni elementari: A e B; abb iamo inoltre le t re ope razioni AN D, O R e NOT applicate la prima ad A e B, la t erza alla so la Be la seco nda alle proposizioni composte ottenute con le operazioni pre cedenti. La tavola di verita , ch e si comp ila da sin istra verso destra, dunque:

e

0 0

0 1

0

• W~l•l=I 0

:

!(A AND B) OR (NOT(B))

1

0 0

0

0

1

0

Ora prova tu! Scrivi la tavola di verita di A AND B e di A OR B Scrivi la tavola di ve rita rich iesta riportandone i valori di verita in una tabella sim il e a quella dell'e sempio, po i valuta ii valore d i verita che si ottiene per le propos izioni A: " II quad rato di 3 9" e B: "9 divisibile per 2".

e

e

Per valutare correttamente il valore di verita di una proposizione composta , e necessario prestare attenzione alle parentesi e alle regole di precedenza tra le diverse operazioni: NOT ha precedenza su AND, che ha precedenza su OR. In alcuni casi , le regole di precedenza possono rendere superflue le parentesi.

Ora prov a tu! Verifica che le proposizioni (A AND B) OR (NOT(B)) e A AND B OR NOT B sono equivalenti Puoi effettua re la verific a confrontando la tavola di verita d e lle du e p ro pos izi o ni. Per la seconda proposizione uti lizza le regale di precedenza .

TAVOLE DI VERITA ED EQUIVALENZA

#CLI P Seg ui ii video: Costruire una tavola d i verita

Costruire le tavole di verita di una proposizione composta significa esprimere in una tabella tutte le possibili combinazioni di valori che possono assumere le proposizioni semplici che la compongono. 11 numero di combinazioni possibili di n proposizioni e 2". Negli esempi precedenti, con due sole proposizioni (A e B) , le combinazioni possibili dei loro valori di verita sono 2 2 = 4 e precisamente 0-0, 0-1, 1-0, 1-1 , che abbiamo scritto dall 'alto verso il basso nelle prime due colonne; se le proposizioni fossero state tre, avremmo avuto 23 = 8 combinazioni nelle tre colonne a sinistra : 0-0-0 , 0-0-1, 0-1-0, 0-1-1 , 1-0-0, 1-0-1, 1-1-0, 1-1-1. •



42

DDI

Due proposizion i compost e si d icono equivalenti se assu m ono lo st esso valore di verita q ualu nq ue sia ii va lore di ve rit a d elle p ro p osizioni elementari che le compongo no .

CAPITOLO Nota che , per dimostrare l'equivalenza di due proposizioni composte, ciente confrontare le rispettive tavole di verita.

FJ

e suffi-

Proviamo insieme Analizziamo e scomponiamo una proposizione composta La proposizione che esprime ii criteria di divisibilita per 5 e 3 e la seguente: "(un numero e divisibile per 3 e per 5 se) la somma delle sue cifre e un multiplo di 3 e la sua ultima cifra e O oppure 5". Analizziamo la seconda parte : e una proposizione composta che puo essere scomposta in proposizioni semplici. Possiamo individuarne tre.

A: La somma delle cifre del numero B: L'ultima cifra del numero e 0. C: L'ultima cifra del numero e 5.

e un multiplo di 3.

La nostra proposizione si puo allora scrivere : A AND (B OR C) . Costruiamone la tavola di verita.

0

0

2

0

0

3

0

4

0

0

0

0 0

0

0 0

5

0

6

0

7

0

0

0

0

8

Consideriamo ii numero 33. Sostituendo in tutte le proposizioni l'espressione "del numero" con "di 33", A vale 1, B vale 0, C vale 0. La riga corrispondente della tabella e la 5, dalla quale risulta che la proposizione e falsa. lnfatti, 33 non e divisibile per 3 e per 5, ma solo per 3. Se prendiamo 60, A vale 1, B 1, C 0. La riga corrispondente e la 7, dalla quale risulta che la proposizione e vera . lnfatti, 60 e divisibile sia per 3 sia per 5.

Ora prova tu! • Scrivi la tavola di verita e scopri se riceverai ii bonus Nell'azienda Spider, produttrice di computer, ii reparto commerciale riceve un bonus a fine annose ii numero di PC venduti e maggio re di quello dell'anno precedente oppure ii numero di PC venduti e minore ma ii fatturato dell'azienda e almeno ii 20% in piu dell'anno precedente. Utilizzando la tavola di verita, determina in quali condizioni ii reparto NON riceve ii bonus. • Verifica le seguenti proprieta degli operatori logici con le tavole di verita Ecco alcune proprieta degli operatori logici. Se ne puo dimostrare la validita confrontando le tavole di verita delle proposizioni che si trovano ai due lati del segno di uguaglianza. Commutativa di AND

A AND B = BAND A

Commutativa di OR

A ORB = BORA

Associativa di AND

A AND (BAND C) = (A AND B) AND C

Associativa di OR

A OR (B OR C) = (A OR B) OR C

Distributiva di AND rispetto a OR Distributiva di OR rispetto a AND

A AND (B OR C) = (A AND B) OR (A AND C) A OR (BAND C) = (A OR B) AND (A OR C)

Teoremi di De Morgan

NOT (A AND B) = (NOT A) OR (NOT B) NOT (A ORB) = (NOT A) AND (NOT B)

43

SEZIONE

D (7,t

II!!DJ@•)~jg,m;i=i-i-miiM!-1,

Hardw are e soft ware

2.6 LA CODIFICA DELL'INFORMAZIONE Auna successione di 8 bit si da il nome di byte. Nell 'ambito tecnologico sono spesso utilizzati i multipli del byte come kilobyte , megabyte , gigabyte ecc.

➔ 4 .3.2

Nel Sistema Internazionale (SI) i prefissi kilo-, mega-, giga-, tera- sono associati alle potenze crescenti del 10 come mostrato nella tabella a sinistra.

Kilo

103 = 1000

Mega

106 = 1000000

Giga

109 = 1000000000

Tera

1012

= 1000000000000

Peta

1015

= 1000000000000000

Nel caso binario questi prefissi vengono associati alle potenze del 2 che si avvicinano di piu alle corrispondenti potenze del 10. Quindi si puo affermare, per esempio, che 1 kilobyte e circa 1000 byte. In rea lta, utilizzando le potenze del 2, un kilobyte corrisponde esattamente a 2 10 = 1024 byte, perche questa e la potenza di 2 che piu si avvicina a 1000 = 103 .

Dal 2000 una norma dell'International Electrotechnical Commission (IEC) prevede l'in troduzione di nuovi prefissi binari per evitare ogni ambiguita. Nella tabella che segue vengono confrontati i nuovi prefissi con quelli del SI.

#CLIP Segui ii video : Equivalenza tra multipli del byte

Kibibyte

KiB

210 byte

kilobyte

KB

103 byte

2,4%

Mebibyte

MiB

220 byte

megabyte

MB

106 byte

4,86%

Gibibyte

GiB

230 byte

gigabyte

GB

109 byte

7,37%

40

12

Tebibyte

TiB

2 byte

terabyte

TB

10 byte

9,95%

Pebibyte

PiB

250 byte

petabyte

PB

1015 byte

12,59%

La differenza tra 1 kilobyte binario e uno del SI e di circa il 2%, ma aumenta di multiplo in multiplo, come risulta dalla tabella. LUtilizzo dei multipli binari, tuttavia, e molto limitato e i prefissi del Sistema Internazionale sono piu diffusi .

Proviamo insieme Valutiamo la capacita di una memoria per computer Supponiamo che un produttore di memorie per compute r, utilizzando ii Sistema lnternazionale, dichiari che un proprio prodotto ha capacita 150 GB. Di quanta si d iscosta dal vero questa affermazione, se in realta la sua capienza uguale a 150 GiB?

e

Nel Sistema lnternazionale si ha 150 GB = 150000000000 byte, mentre 150 GiB = 150 • 230 = 161061273600 byte . Le due quantita quindi no n sono equivalenti: una memoria per computer da 150 GiB p iu capiente. La differenza di oltre 11 GB .

e

e

Ouanto si perde in velocita? La quantita di informazioni digitali (numero di bit) trasferita o registrata in una unita di tempo prende ii name di bitrate (o velocita di trasmissione) :

. _ b 1trate -

numero di bit . tempo d., tras c,enmento

e

L'unita d i misura della velocita di trasmissione bit/ s (bit al secondo o bps). Nelle telecomunicazioni, per indicare i valori della velocita di trasmissione dei dati in rete si utilizzano i prefissi del Sistema lnternazionale. Per esempio, un valore di 500 megabit/ secondo corrisponde a 500 • 10 6 bit/ s. Pertanto, la velocita piu bassa di quanta un utente si aspette rebbe effettuando ii calcolo in termini di potenze del 2. Se avessimo infatti 500 mebibyte al secondo, la velocita sarebbe di 500 • 2 20 bit/s, ovvero oltre 524 • 106 b it/s . Riesci a ca lcolare l'errore percentuale che si commetterebbe in questo caso confondendo le due unita?

e

44

Comput er e codici

CAPITOLO

FJ

6

Ora prova tu!

Determina quale bitrate permette di trasferire 1000 bit in un secondo.

L'ORGANIZZAZIONE LOGICA DEi DATI I dati vanno raccolti in un archivio: cartaceo se l'elaborazione e manuale, o digitale se viene eseguita tramite un calcolatore.



4.1.4



5.1 .4

Gli archivi memorizzati su un dispositivo informatico sono i file. Le informazioni scritte all 'interno di un file sono codificate e organizzate in sequenze di byte . Ogni file e identificato da un name, da un'estensione che ne indica il formato e da un percorso che permette di individuarne la posizione. Dal formato e possibile interpretare correttamente il contenuto del file e utilizzare il software piu adatto per il suo utilizzo. Come vedremo nel Capitola 4, in ogni sistema operativo e possibile conoscere in dettaglio le proprieta di un file , tra cui la dimensione in byte . Le dimensioni di un file si possono ridurre grazie a meccanismi di compressione, tecniche che permettono di rappresentare le informazioni in forma digitale "risparmiando" bit: riescono, infatti, a eliminare ripetizioni nei dati inserendo istruzioni che consentono di ricostruire il file durante la decompressione . Le tecniche di compressione possono essere senza perdita di informazione (lossless) o con perdita di informazione (lossy). Nati formati di file compressi con procedure lossless sono .ZIP e .RAR. Le compressioni lossy sono irreversibili: ci6 significa che, effettuando il processo di decompressione, non e possibile tornare all 'esatto file di partenza.

IMMAGINI, SUONI, VIDEO, CAMPIONAMENTO I calcolatori sono in grado di elaborare, oltre a caratteri numerici e alfanumerici , anche elementi multimediali, quali immagini , suoni e video. Mentre i caratteri che costituiscono, per esempio, un testo sono distinti o, come si dice , discreti, gli elementi multimediali variano nel tempo o nello spazio e possono assumere tutti i valori compresi in un data intervallo, senza salti; sono quindi grandezze analogiche. Prova a pensare, per esempio, a un concerto: il suono e un'onda di pressione che si propaga nello spazio e che pu6 essere rappresentata come una corda che oscilla al passare del tempo. Oppure, se guardi un quadro realizzato con pittura a olio, vedrai colori che sfumano o che variano con continuita, anche in questo caso senza salti. LA RAPPRESENTAZIONE DI SUONI Come abbiamo visto nel paragrafo 2.2 , un calcolatore puo rappresentare una grandezza analogica, cioe continua, attraverso la sua digitalizzazione, che si ottiene con un'operazione di campionamento. Nel caso di un segnale audio, l'onda viene divisa in tanti intervalli di tempo uguali tra lorn (Fig. 6 , a pagina seguente).

11 valore del campione su un intervallo e il valore dell 'onda nel primo estremo dell'intervallo; questo numero puo essere tradotto in binario. L'onda pub essere, quindi, rappresentata da una serie di valori numerici tradotti in bit. Questa significa che, per il computer, una traccia audio salvata in un file altro non e che una lunga lista di numeri binari.

45

SEZIONE

D

Controlla le dimensioni di alcuni fi le presenti nel tuo computer (testo, immagine, video ...): quali "pesano" di piu?

Hardware e software

Piu piccoli vengono presi gli intervalh di tempo, maggiore e il numero di campioni che rappresentano l'onda e migliore e la fedelta con cui viene riprodotto il suono. 11 numero di campioni misurati e digitalizzati al secondo e detto frequenza di campionamento e si misura in Hertz (Hz). Una frequenza di campionamento elevata comporta, pero, una dimensione maggiore del file audio. I formati piu comuni per la codifica digitale dei suoni sono Wave (.wav) e il noto MPEG-1 Layer 3 (. mp3). Diversamente dal primo, il formato mp3 utilizza tecniche di compressione che permettono di rendere i file molto piu leggeri.

Fig. 6 L'operazione di campionamento di un segna le audio.

Diversi suoni richiedono frequenze di campionamento diverse. Per la voce sono sufficienti da 8 a 11 kHz per avere una riproduzione fedele, nella musica pop bastano 22 kHz, mentre nella musica classica servono almeno 44-48 kHz per assicurare una riproduzione fedele del suono. LA RAPPRESENTAZIONE DI IMMAGINI Per l'elaborazione di immagini esistono diverse tecniche. Come primo esempio consideriamo un'immagine in bianco e nero , senza sfumature.

Per memorizzare un'immagine , si. trae spunto da una tecnica grafi.ca: sudd ividiamo l'immagine stessa in quadratini attraverso una serie di righe orizzontali e verticali equidistanti. Anche in questo caso stiamo facendo un'operazione di campionamento, che non e piu nel tempo ma nello spazio (Fig. 7). Fig. 7 Un esempio di campionamento di un'immagine.

46

CAPITOLO

Comput er e codic i

FJ

Ogni quadratino e un elemento dell'immagine (pixel) e a ognuno di essi si puo assegnare un valore numerico; nel caso piu semplice si assegna O ai quadratini di colore bianco e 1 a quelli di colore nero. La codifica di ogni pixel con un valore numerico appartenente a un intervallo definito prende il nome di quantizzazione. Si chiama risoluzione di un'immagine la dimensione della griglia utilizzata per effettuare il campionamento, cioe il numero di pixel che forma l'immagine stessa. Nell 'esempio qui di fianco si e considerata una griglia 11 per 11. In questo caso, l'immagine di partenza viene rappresentata dalla stringa binaria 0000000000000000000000000010001100 .. ., ottenuta scrivendo in sequenza i bit della griglia da sinistra a destra e dall 'alto verso il basso. La rappresentazione dell'immagine sara tanto piu accurata quanta piu fitta e la griglia che si utilizza: per migliorare la digitalizzazione si deve infittire la griglia, aumentando quindi il numero di pixel e la risoluzione dell'immagine.

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

1

0

0

0

0 -+

0

1

0

0

0

0

0

0

1

1

0

0

1

0

1

0 0

+----
-----~. -------

+

I would use it because ..

I would not use it because ...

Imagine you are a member of the following professional categories. What kind of licenses would you use for the software you use or develop? Give a brief explanation for your choices. Student Teacher

Open-source

{

Mobile app developer

Free software Open but nonfree Commercial (i.e. paid)

Game developer Back-end developer Shareware

Front-end developer Business consultant Volunteer

Proprietary

' Freemium

Cryptocurrency miner Small business owner

If you had unlimited budget, would you always prefer proprietary software over open-source software? Explain your position in two short texts, one 50 words long, the other 150 words long.

115

J

. __ _ ~

COMPITO DI REALT4 Un corso di f t ritocc L'azienda pubblicitaria Graphix vuole offrire un corso di formazione ai propri dipendenti sull'uso di un nuovo software di fotoritocco. Ti contatta per realizzare un progetto del corso e per tenere eventualmente le lezioni.

lndica anche, dove poss ibile, delle risorse reperibili online (immagini, webcomic ecc.) realizzate con i software proposti .

Cerca in Internet la licenza di Photoshop e scrivi una nota per ii proprietario di Graphix in cui gli spieghi perche non possibile utilizzarlo gratuitamente.

e

Effettu a ii d own load e l'i nstal lazione di Krita.

G o gle

krita

,...._ Tutti

X

0

~ lmmagtnl

Video

c,n:a 5 710 000 nsuttati (0 ,31

li1

Nottlie

() Shoppmg

: Altro

lmpost2mon1

Q.

Strumentl

seoondI)

knta org • Tl'lldUCI questa pagma

Krita I Digital Painting. Creative Freedom. Krlta Is a prolesslonol FREE and open souroe pambng program It Is mode by artists that want to see afforda~ art I ~ for

everyone concept art. lexture and

a tenere -

-

j

--

---

-

lnformat i pri ncipalmente sui seguenti aspetti: !I

download;

b analisi dell'area di lavoro; finestre e pa nnelli;

d apertura e salvataggio delle immagini; e

strument i di se lezione del le immag ini;

f

pen ne ll i di base;

g st rument i di manipolazione della dimensione di un'immagine;

h strument i di manipolazione de! colore.

Sceg li un'i mm agine e utilizza almeno sei strumenti proposti da Krita per modificarla.

Cre a un vid eotuto rial introduttivo su Krita (puoi utilizzare, per esempio, ii software libero OBS Studio).

116

@J40•H••0 Elaborare un testo

@40•>!••0 Utilizzare un foglio di calcolo

R140•H•if) Creare una presentazione

0

CONOSCENZE • Le suite per !'Office

Automation • La formattazione di un testo • I fogli elettronici • Le presentazioni multimedia li

Documenti e Iettro nici



Ouesta parte de/ Corso riguarda i principali programmi applicativi utilizzati con ii computer: i programmi per la cosiddetta Office Automation, creati per la digitalizzazione de/ lavoro di ufficio e che servono per scrivere testi, lavorare su fogli di calco lo, creare presentazioni ecc.: in una parola, realizzare documenti elettronici. Tali programmi sono in genere disponibili in un unico pacchetto, o suite, in modo che siano facilmente integrabili tra loro. Esistono numerose tipologie di questi

Q

0

ABILITA

pacchetti, sia open-source sia proprietari. Ai fini didattici, pen:,, sono equivalenti.

• Formattare testo e paragrafi di un documento

Dovendo sceglierne uno, utilizzeremo principalmente i software della suite Microsoft Office, per la sua maggiore diffusione. Faremo rife rimento alla versione

• lnserire oggetti diversi in un documento di testo

2019, ma la d escrizione dei comandi

• Realizzare un foglio di calcolo con formule e funzioni

Word (editor di testi), Exce l (foglio di calcolo) e PowerPoint (presentazioni

e analoga anche per le versioni precedenti .

II pacchet~o Microsoft Office comp rende almeno i tre programmi base:

• lnserire grafici in un foglio di calco lo

multimediali).

• Rea lizzare presentazioni multim ediali interattive

Gli argomenti trattati in questa Sezione rispecchiano le indicazioni per ii conseguimento dell' ICDL: troverai i riferimenti al Syllabus a lato del testo.

COMPETENZE • Utilizzare una suite facendo interagire software diversi • lnterpretare criticamente le informazioni e dare loro una veste comunicativa adeguata

DEBATE /SOFTWARE LIBERO VS SOFTWARE PROPRIETARIO Richard Stallman ha affermato : "Ho avviato ii movimento del software libero per rimpiazzare con software libero, rispettoso della liberta, ii software non libero che controlla l'utente. Con ii software libero, possiamo almeno avere ii control lo su quel che ii software fa nei nostri computer."

LE REGOLE PRINCIPAL! • Squadre: una PRO e una CONTRO ii tema assegnato. • Tempi: Ciascuna squadra svolge, a partire dalla squadra PRO, quattro interventi: i primi tre di 3 minuti ciascuno, !'ultimo intervento di 1 minuto. • Domande: Durante i primi tre interventi i membri dell a squadra avvers aria possono porre una domanda allo speaker. Puoi approfondire le regale del dibattito alle pagine: https://camp ,onatoitalianodebate .it/protocollo-wsd/ https://camp ,onatoital ianodebate .it/codice-debater/

117

LE SUITE PER LOFFICE AUTOMATION

il Off

·1

Ce

/

pacchetto Microsoft Office e una suite di app/icazioni di tipo Office Automation per i sistemi operativi Microsoft Windows e MacOS svi/uppata dalla Microsoft Corporation (a Redmond, neg/i Stati Uniti), fondata da Bi// Gates e Paul Allen. Ne/ corso degli anni le app/icazio ni che lo compongono sono aumentate in numero, ma hanno mante-

~ m-• L:;.,il ~ ~ r;ffl l';?l e_ci_p_ro_c_o_._s_i_ca_/_co_/_a_c_h_e_n_e_/_2_0_1s_o_f_fi_ce_fo_s_s_e_u_t,_/~_z_a_to_d_a_o_lt_r_e_u_n~ ~ ~ ~ -___mn_u_to_u_n_/e_g~a-m_e_r_ iliardo di pe rsone in tutto ii mondo. Outlook

Durante ii COMDEX, la principa le fiera dell'informatica statunitense, Bill Gates presenta ii pacchetto Microsoft Office.

Vengono distribuiti Windows XP e Office XP, che presentano numerosi miglioramenti e cambiamenti .

Office 3.0 e la prima vers ione diffusa su CD ROM.



agosto

agosto

1988

1992

Lazienda Oracle acqu isisce Sun Microsystems, sviluppatrice di OpenOffice.

i.

i

genna10

2001

2010

ottobre

luglio

agosto

dicembre

1989

1991

1995

2006

i

t



Office 1.0 La prim a vers ione, che contiene Microsoft Word, Microsoft Excel e Microsoft PowerPoint, progettata a 16 bite studiata appositament e per Windows 2.x.

Office 1.6 Include Mail, un gestore di pasta elettronica.

e

In concom itanza con Windows 95 esce Office 95, la prima ve rsi one progettata a 32 bit per ii nuovo sistema operativo.

I

Office 2007, creata per sostitu ire Office 2003, ha una nuova interfaccia grafica che sostituisce i menu e le tool bared simile a quella che troviamo ancora oggi.

e

Sano numeros i i programmi ancora integrabi/i, non inc/usi nei pacchet ti, ma acquistabi/i separatamente. lnfoPath: serve per progettare e compi/are moduli elettronici, ba-

O /tre ai suoi tre prodotti principa /i, la suite Office comprende mo/ti altri softwa re integrati. Access: serve p er crea re, amministrare e visua/izza re

OneNote: e un blocco note virtuale capace di accogliere oggetti

e documenti provenienti da qua/siasi fonte, comprese annotazio-

un database.

ni a mano.

Equation Ed itor: permette di

Project: fornisce un supporto comp/eta per la gestione aziendale

scrivere oggetti matematici (equazio ni, sistemi di equazioni, matrici).

(pianificazione, project management, gestione de/ budget, analisi dei carichi di lavoro).

Outlook: possie-

de un client di pasta elettronica e un'area di g e stio ne degl i impegni persona/i, con ca lenda rio, dia rio, agenda e p romemoria.

118

sato su XM L.

Publisher: e dedicato ai progetti di pubblicazione (volantini, siti web, lettere, biglietti, attestati ecc.).

e

Skype: usato per la messag-

gistica istantanea e le video-

conferenze.

e un'area di lavoro per produzioni di grafica vettoria/e, grafici e diagrammi.

Visio:

-

La piu nota suite open-source per /'office automation e LibreOffice, disponibile per i sistemi operativi Microsoft Windows, MacOS e GNU/Linux. E sviluppata da The Document Foundation, un'organizzazione no profit per lo sviluppo di software libero. LibreOffice compatibi/e con le altre suite per /'office automation, tra cui Microsoft Office.

e

LibreOffice 3.3.0

e la

prima versione stabile de! pacchetto .



Esce Office 365, contenente tutti gli strumenti Office in versione online, per ii cloud, di cui accoglie gli aggiornamenti (non va confuso con Office Online, ii servizio gratuito di Microsoft per utilizzare Office in modalita web).

e

LibreOffice 7.2 la prima versione a supportare in modo sperimentale le piattaforme Apple Silicon .

genna10

• • genna10

' agosto

2011

2013

2021



settembre

agosto

febbraio

ottobre

2010

2012 .

2013 .

2021 t

i

Alcuni sviluppatori de ll a comun ita di OpenOffice, preoccupati che Oracle ne vogl ia sospendere lo svi luppo, creano The Document Foundation e, a partire dalla versione 3.3 di OpenOffice, svi lu ppano la prima ve rsione d i LibreOffice.

e

LibreOffice 3.6

LibreOffice 4.0 migliora

Office 2021

puo esportare file PDF e importare file dal programma di disegno Corel Draw.

l'importazione e l'esportazione di file di Microsoft Office (formati .docx, .rtf, .xlsx) e di oggetti OLE; inoltre, aggiorna molte funzioni del foglio di calcolo (Cale).

l'u lt ima versione del pacchetto Office. Include miglioramenti alla modalita di lettura immersiva e all'accessibilita dei programmi.

II pacchetto LibreOffice comprende i programmi seguenti, anch'essi perfettamente integrati fra loro. Writer: e un elaboratore di testi.

Cale: e i/ foglio elettronico, che puo esportare documenti in HTML. Impress: serve per creare presentazioni multimediali. Base:

e usato per la creazione e la gestione di un database.

Draw: e un programma di grafica vettoriale per la connessione di forme.

Math: serve per /'elaborazione di formule matematiche.

In LibreOffice sono inoltre incorporati un creatore di PDF e uno strumento di importazione di file PDF.

119

Elaborare un testo In questo Capitolo parleremo di: • programmi per l'elaborazione di testi • videoscrittura

Guarda sul libro digitale ii capitolo dedicato a Writer

5.1 I PROGRAMMI PER LA VIDEOSCRITTURA -........;u.&1._.•....• ... • rnit❖l:f.i-·mM ➔ 1.1 .1 ➔ 1.2 .1

I programmi per l'elaborazione di testi sono fondamentali , dato che tutti abbiamo la necessita di scrivere un testo, per la scuola , nella vita lavorativa e non. •

Un programma di videoscrittura (o word processor) permette di utilizzare computer, smartphone o tablet per produrre testi di aspetto gradevole e chiaro, anche molto complessi e illustrati, come lettere, volantini, libri, manuali ecc.

Esistono word processor diversi, che possono essere proprietari, come Word o Pages, oppure open-source , come Writer. Nelle pagine seguenti, per i nostri esempi utilizzeremo Word, della suite Microsoft Office, che e il piu diffuso tra questi software. In alternativa, e possibile scaricare da HUB Scuola il capitolo parallelo che utilizza Writer, della suite LibreOffice. Oltre a questi word processor, ci sono anche servizi che permettono di scrivere testi utilizzando il browser del computer. Ne parleremo nella prossima sezione , quando vedremo che cosa sono i servizi in cloud. Ciascun word processor ha versioni diverse. Qui faremo riferimento a Word 2019, ma la maggior pane delle funzionalita e disponibile anche nelle versioni precedenti, che si utilizzano con procedure simili a quelle che vedremo.

5.2 LA PAGINA INIZIALE DI WORD Tutti i word processor condividono alcune caratteristiche generali. Quando si crea un nuovo documento, si apre una finestra il cui aspetto e simile a quello di un foglio bianco. Quella di Word e rappresentata nella pagina seguente. Al suo interno e posizionato un cursore lampeggiante , che indica il punto in cui inserire il testo usando una tastiera . Sopra al foglio si trova un righello orizzontale, che mostra i margini sinistro e destro del documento ed eventuali tabulatori. Sul lato destro della finestra c'e una barra di scorrimento per far scorrere il foglio .

120

CAPITOLO

Elaborare un t esto

Nella parte alta della finestra si trovano delle barre che ospitano menu e icone, con cui attivare i diversi comandi. Ricordiamo comunque che una stessa azione pub essere eseguita quasi sempre in piu modi , anche da tastiera. Barra multifunzione con i comandi piu usati del programma: divisa in schede, ciascuna delle quali suddivisa in gruppi

Barra di accesso rap ido con le funzioni piu usate: Salva , Annulla, Ripristina

File

Home

fidJ

. . Ii'.S Ma~gin,

lnserisci

Dimensioni..,

== Calonne ..,

Riferimenti

Rientro

~ A sinistra: 0 cm

:

b'r Sillabazione ....

~ A destro:

:

1 '

't

ocm

l'i

2 ' ' ' 3 • ' •

Lettere

Revisione

! ~ Prima: *:~Dopo:

·,·

Visualizza

l_____!_ ~ Conc,:d::..:ivid .:.: · ::.. i _.:. i;::i...,c ommenti

Guida

j~AllinH ~

!£i

0 pt

c

8 pt Til

Paragrafo



e

Spaziatura

~: Numeri di riga..,

lmpo sta pag lna

i• ' '

~

Progettazione

~ Orientamento.., -~ lnterruzioni ...

e

Riquadro di selezione

__ ~

1◄ ,

fidJ

Ba,,adlstato➔••"' +

Italiano (Italia)

il

Layo"t web

.+

_. IB

lmposta pagina

Zoom

-1--

+ ,~

Segui ii video: La finestra di Word

} : Numeri di riga ... bt Sillabazione ..,

/

#CLIP

~ Orientamento .., -~ lnterruzioni ..,.

Dimensioni .., Marg1n1 .., :: Calonne ..,

. , . 1' , , ,

Layout di stampa

Modal,,; di lettura

0 parol•

, , 1S

Barra di scorrimento verticale, che consente di scorrere la / pagina trascinando ii rettangolo

cursore

Paglna 1 di 1

Ru ta

onl

S · , · 6 · , , 7 , , · 8 , , , 9 , , , 10, , , 11 , , , 12 , , , 1l , , ,

righello orizzontale e verticale

_j

r,; -

freccetta per espandere ii gruppo

gruppo lmposta pagina della scheda Layout, per impostare margini, orientamento, dimensione del foglio

Word consente di selezionare numerose impostazioni dal menu File, voce Opzioni (Fig. 1). Possiamo, per esempio, cambiare il nome, visualizzato nei documenti tramite la scheda Generale, casella Nome utente, e inserire le nostre iniziali (casella lnizial i). Nella scheda Salvataggio possiamo modificare la cartella di destinazione dei salvataggi automatici dei documenti. Inoltre, possiamo personalizzare la Barra multifunzione e la Barra di accesso rapido nelle rispettive schede.

1

Op:,ono"Word

I~= """''"- ----~·I

.....

X

i

~ OpDOn19MffalipntvtiiD:odoW0td. Opnonllnlerf•ulautenle

,..,,,

• Ottirnm•perr~olll9"""' 0ttffom•perloi;~(.,..,..,.,6dl'~n«awnol

@ Moul•bM•dilonNttiNION!ro,podlqu,ndosiHkloofwtnto ~wonz..it

@Atw•-~dir.omica @A9goorN~c

~

In ba.s.sQ

>

~

Nel margine

>

~

Pos~ione corrente

>

It

Eo rmato numeri di pagina ...

~ B,imuovi numeri di pagina

II.!E! m!llli.Xilit❖l:J.i-11Md ➔

2.2.4



2.2.5

I comandi per farlo si trovano nel gruppo Modifica della scheda Home. Il pulsante Trova apre una finestra di dialogo che permette la ricerca di termini nel testo. 11 pulsante Sostituisci apre invece una finestra con tre schede: Trova , per le ricerche avanzate, Sostituisci e Vai (Fig . 19) . La scheda Sostituisci ha due caselle. Nella prima (Trova) scriviamo il testo da cercare. Nella seconda (Sostituisci con) il testo sostitutivo. 11 pulsante Sostituisci tutto permette di sostituire in un'unica operazione tutte le occorrenze del termine che si sta cercando. Se preferiamo confermare volta per volta la sostituzione, usiamo il pulsante Trova successivo e poi , eventualmente, il pulsante Sostituisci .

X

Trov• e sostituisci Irova

Sostltulscl

~al

It ova:

Studt ntt

Op:Jont:

Ctttl In basso

Sostltl,llsdcon:

Sos1ttutsd

,S.ostltulsd tutto

TtO\'l succt ulvo

Annull a

Fig. 19 La f inestra Trova e sosti t u isci.

135

: I

I

SEZIONE

D

Documenti elett ronici

Dopo aver completato un testo, e buona norma controllare che non siano presenti errori ortografici. Le funzioni per questa verifica sono principalmente nella scheda Revisione del gruppo Strumenti di correzione . Se clicchiamo sul pulsante Ortografia e grammatica , il programma inizia a perlustrare il documento alla ricerca di errori. IL CONTROLLO ORTOGRAFICO



6.2.1



6.2.2

Editor +--

.......

1 - • ft,ldl l ..,.._

........ i,,,«atutto

Fig. 20 II controllo ortografico di Word.

Appare quindi una finestra di dialogo che suggerisce le correzioni per i termini che Word non conosce. Con il pulsante Aggiungi possiamo anche aggiungerli al dizionario di Word, in modo che non vengano piu segnalati come parole da correggere (Fig. 20). Un'altra funzione che pub aiutare nella scrittura si attiva con il pulsante Thesaurus, sempre nella scheda Revisione. Inserendo in questa finestra una parola , Word suggerira dei sinonimi consentendo cos1 di trovare il termine piu appropriato per cio che si vuole dire oppure di evitare una ripetizione nel testo. Possiamo completare la preparazione di un documento con la sillabazione. 11 programma , di default, cioe a meno di nostre richieste specifiche, non tronca le parole a fine riga , ma le manda a capo. Se il testo e allineato a destra o a sinistra, il risultato e quello che viene definito un testo a bandiera , ossia con righe di lunghezza diseguale . Se invece il testo e giusti ficato , cioe con righe tutte della stessa lunghezza, Word distanzia tra lorn le parole quanto necessario a chiudere la riga , a volte anche eccessivamente. Per evitare questi inconvenienti , che possono pregiudicare l'estetica del documento, possiamo sillabare il testo. LA SILLABAZIONE

#CLIP Segui ii video: Ortografia e sillabazione

Selezioniamo il testo su cui intervenire e nel menu del pulsante Sillabazione nella scheda Layout di pagina scegliamo Automatica. 11 programma effettuera la sillabazione del documento dove riterra necessario.

5.8 SALVARE UN DOCUMENTO ICDL IWORD PROCESSING ➔ 1.1.3

Terminata la scrittura del testo, vediamo come salvare un documento . •

Salvare un documento significa archiviare ii lavoro nella memoria pe rmanente del computer, in modo da poterlo aprire in un secondo momenta per consultarlo, rielaborarlo o stamparlo.

L'operazione di salvataggio e effettuata con il pulsante Salva (~), che si trova nella Barra di accesso rapido, oppure con la voce Salva nel menu File.

Ogni documento deve avere un nome: se non lo ha ancora, dal menu scegliamo la voce Salva con name . Nella finestra di dialogo possiamo indicare il nome del file e la cartella in cui memorizzare il documento. In basso a destra clicchiamo infine sul pulsante Salva.

#CLIP Segui ii video : PDF e altri formati Se d iamo ai nostri fi le no mi come " bozza", " Piano lv1" o, peggio, " docume nto1 ", rischi amo che i nostri d ocum enti siano gestiti in mod o p oco effi ciente: sara molt o d iffici le, nei mesi successivi, ricordare che cosa conti ene un file ch iamato " d ocumento1 ". Meg lio dare un name significativo al file, che rispecchi ii suo co ntenuto o permetta d i ricordarlo. Word, al moment a del sa lvataggio, propane come name ii t esto della prima riga scritta.

136

I

CAPITOLO

Elaborare un testo

Nella finestra Salva con nome appare anche la casella Salva come, con cu i possiamo specificare un formato diverso da quello predefinito. Per esempio, possiamo chiedere di salvare il file in un formato di solo testo, di estensione .txt: si perdera la formattazione, ma si manterra intatto il contenuto testuale del documento (Fig. 21 ) . Un formato molto interessante e il PDF (Portable Document Format), le cui caratteristiche sono la portabilita, ossia la leggibilita su altri sistemi, e la generale nonmodificabilita. 11 formato PDF e largamente diffuso proprio perche la portabilita e una caratteristica essenziale dei documenti, che devono pater essere scambiati anche tra persone che usano sistemi differenti tra loro . 11 limite dei file PDF e che, tranne in determinati casi, possono essere solamente letti e non modificati. Tuttavia, questo puo diventare un vantaggio se il testo non deve essere alterato da chi lo riceve . Creare un PDF e un'operazione completamente diversa dalla produzione di un documento; e una trasformazione del suo Jormato . Questa libro, per esempio, e stato scritto in Microsoft Word (significa quindi che i file originali hanno estensione .docx), ma e poi stato trasformato in PDF per la stampa e la distribuzione.

ICDL IWORD PROCESSING ➔

1.1 .4

Fig. 21 La finestra Salva con name. X

Salva con nome

fOrganiz:u ..

~ > Questo-. , Documfflti >

v

C,

P

Cera in 00



Vert 1cale Oriz:zontale

G2J Righello 0 Griglia

D Riquadro di spostamento

~

°'

Zoom

~• rnm 8

~ Nuova fin6tra

100%

D

Puoi cambiare la disposizione delle finestre dei vari documenti apert i.

ro

Disponi tutto

E3Dividi

ro

lo

Cambia fine:Stra "'

~ .

Macro

ra

Proprieta

CAPITOLO

I

Elaborare un testo

La scheda Formato immagine si apre solo quando viene selezionata un 'immagine dentro al documento. Contiene i pulsanti per le principali operazioni su un ' immagine .

'o ,3;.

m Form•

.

■■

~

Q

• .sl:, Riempimento form.- I

• Iz: Contorno forma • 0

~!

IA ·

Effdti form.-

1 [f] Alline.a testo -

II Posj )"" . .

~

-~ Test "1 Port

T..to

~

afternativo



a capo...

c

Porta indietro ..,

!£i

I] 3,33cm

"

V

Riquadro di se:lezione ~ ..,

~ 4,3Scm

avanti - ~ Allinea "'

"

\ Con questi pulsanti puoi correggere l'immagine modificando il colore e la sfumatura. Puoi inoltre aggiungere effetti artistici.

~

fa,_))

# Editor

ffi Thesaurus ~ Conteggio parole 0 Strumentl di corruior

,R~ itJ Traduci lingua . . lrif.,

~

a :111

le,ggi ad altavoce

acc,:ssibiliti

Par1ato

Acctsslblllt\

V~ifica

Il pulsante Posizione permette di stabilire come disporre un ' immagine rispetto al testo , per esempio allineata a una riga, col testo sopra e sotto o interamente circondata da esso .

Nuovo commento

Lingua

~

:;;J Pr

r,,J

P

Mortra comment,

E'.'.) Mostra commenti"'

Revi~ioni G!:'.] Riquadro delle revisioni

.

Ac:dt• r,;

Rlltvamento modlflche

Comment!

®' g·

.

~ Commenti semplici

[fill .

~

Confronta

Revlsioni

Confronta

ra

~

Prot.e,ggi

.

Nascondi input penna .,. In put penna

Nella scheda Cont rolli fi nali trovi i pulsanti per il controllo ortografico, Thesaurus e il conteggio parole.

I comandi per l'impostazione della pagina (margini, orientamento, dimensioni ecc.) si t rovano nella scheda Layout . ~

Non tutti i comandi descritti sono presenti nella scheda Home .

I lo

·ei

,lil .....

I comandi per la Stampa unione sono nella scheda Le t tere.

I comandi per simboli, tabelle, immagini, intestazione e pie di pagina sono nella scheda Inserisci.

~ lmm9fll

""""' -e · le-

"" ......... d)Gulko

(il -JO•!i:--

t,beh

llk1Jt1W11ni --

,_ - -rm

;;:,

4)

Compw,entl

v...

d tifile•

itgg!UlllM•

C11nunut11

-

..,

u..,ntt...,ltllllcOlall

~

,_,nil

[ii!

lnizla sump1

union••

tJ ,.........

ei1nt.st-¥

lnltl.lst111101unlon c

..cf ..

ta10•

ru .

1..tll

-

~

Modiflc1 eletKo dfflinl\lri• dtihnat1rl Wc:io,\1

c-ladi

lnt.ul&Zlon••plcdl,.....

~~ 1

Iii· llr ·

0

~Pl'dip•gln_.. ~NumHadl~•

~

.~

~

g::,,:.._,_

Bi::~1 di~':, lns~~:•~po r.-

lI

i:, [)CatlttOllowari

lnurlsdcampl

143

VERIFICHE DI FINE CAPITOLO Svolgi ii test interattivo

----------

• CONOSCENZE Vero o falso? 1. 2. 3. 4. 5.

Una parola e la parte di testo compresa tra due spazi.

[y] [I]

Certi caratteri possono essere scritti tramite combinazioni di tasti.

[y] [I]

In Word ci sono dei caratteri non stampabili.

[y] [I]

Non si puo impostare la dimensione di un carattere a 17 pt.

[y] [I]

Esiste un comando per convertire un testo da minuscolo in maiuscolo.

[y] [I]

Esiste un comando per sostituire tutte le occorrenze di un termine con un altro.

[y] [I]

Esiste un comando per copiare ii formate di un testo.

[y] [I]

II bordo delle righe di una tabella deve essere sempre uguale.

[y] [I]

Esiste una procedura guidata per realizzare la Stampa unione.

[y] [I]

10. In Word non si possono aggiungere termini al dizionario.

[y] [I]

6. 7. 8. 9.

Test a scelta multipla 11. La combinazione di tast i CTRL

+ C consente:

W di incol lare un testo [fil

di tagl iare un testo

[ill

di cance llare un test o

w di cop iare un testo

12. II comando Sostituisci consente di : sa lvare un fi le in un altro formato [fil individ uare e correggere errori o rtografici e g rammat ica li ricercare e sostituire parti di testo [ill modificare ii forma t o di un testo

W

w

13. Per selezionare una parola occorre: fare un singolo die sul la paro la [fil fa re dopp io d ie sulla paro la fare t rip lo d ie sul la paro la ~ premere MAIUSC e fare die sul la pa ro la

W

w

14. L'Anteprima d i stampa consente di: st ampare piu pagine ne ll o st esso fo g lio [fil contro llare la formattazione e l'impaginazione de\ documento modificare ii formato de\ documento da sta mpare [ill st ampa re ii document o in formato ridotto

W

w

144

15. Con la Stampa unione non posso generare: grafici lettere [fil buste [ill etichette

w

W

16. II file di origi ne dei dati nella Stampa unione: puo essere un fil e d i Exce l [fil puo essere un qualunque file con i dati in elenco puo essere solo un file di Word ~ puo essere solo un f ile di Microsoft Office

W

w

17. Per limita re i destinat ari nella Stampa unione: occorre selezionarli nel file di origine dei dati [fil e possibile selezionarli durante la creazio ne guidata della St ampa unione e possibile limitarli solo dai campi numerici [ill none po ssibile limitarl i

W

w

18. Per inserire i campi unione al quarto passaggio della creazione guidata della Stampa unione si usa la voce: Blocco di indirizzi [fil Formula di apertura Affrancatura elettron ica [ill nessuna delle altre risposte e corretta

W

W

19. Una volta completati i passaggi per la creazione di una lettera con la Stampa unione: bisogna stampare tutte le lettere [fil le lettere unite prendono ii posto de\ documento di composizione della Stampa unione

W

W si [ill

possono stampare le lett ere o vederle tutte insieme in un nuovo documento si puo solamente creare un nuovo documento con tutte le lettere, ma non e possibile stamparle

20. Si possono copiare le proprieta di formatta zione d i un testo? No, non e possibile: si riescono a copiare solo i caratteri [fil S1, utilizzando ii p u lsante Copia formato S1, ma solo le impostazioni del carattere ~ S1, ma solo i bordi o lo sfondo

W

W

'

. Elaborare un testo

Completamento

30. Per inserire una tabulazione si preme ii tasto

Completa i brevi testi seguenti inserendovi i termini mancanti.

31. Gli stili di scrittura riguardano solo i caratteri e

21. Per scrivere un testo e sufficiente .......................... . sulla tastiera. II programma va a capo ... ... .. .. ........ ........ alla fine di ogni

.................. Per

selezionare una parola occorre fare die su di es-

INVIO. non ii paragrafo.

32. Non si puo inserire la numerazione delle pagine nell'intestazione del documento, ma solo nel pie di pagina.

sa ..... ............... .. volte. Per selezionare una riga, si

33. Per effettuare un cambio pagina, si deve pre me-

puo fare die ....................... . Se un testo e selezio-

re tante volte ii tasto INVI O fino a quando non si passa alla pagina successiva.

nato, si puo cancellare sia con . s1a con

22. Nella finestra Paragrafo e possibile impostare .............................. , cioe la quantita di spazio verticale tra le righe di testo di un paragrafo e I' ...................... ... ... ... ... ., che puo essere a sinistra, a destra, al centro e giustificato.

Domande aperte Descrivi la sequenza di comandi necessari per effettuare le seguenti operazioni.

34. lmpostare una spaziatura prima o dopo un pa ragrafo: ...... .. ............ .... .. ..... .. ... .... .. .. ............................ ..

23. Ouando ii corpo del testo e piu lungo di quello che puo essere contenuto tra ii margine superiore e quello inferiore, Word crea una nuo-

35. lmpostare una tabulazione:

va pagina inserendo un'interruzione di pagina automatica. Per controllare come le pagine si

36. Modificare lo stile di un elenco puntato:

interrompono e possibile inserire un'interruzione di pagina manuale, scegliendo ii comando nella scheda lnserisci. Per inserire un'interruzione di paragrafo si usa ii ta-

37. Modificare dimensioni, margini e orientamento de! documento:

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

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

sto ... .

38. lnserire un'immagine con trasparenza al 50% e

Trova I' errore II professor Meozzi corregge ii compito che ha assegnato ai suoi ragazzi: " Le tecn iche di rappresentazione dei testi". Nell e dieci frasi seguenti, estrapolate dagli el aborati degli studenti, ii professore ha trovato almeno otto errori . Sapresti individuarli?

bordo nero:

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

39. Eliminare le colonne di una tabella : .....

40. Aggiungere una parola al dizionario: ... .

24. Per annullare le modifiche, si puo d iccare un numero infinito di volte sul tasto IN DI ETRO.

25. Word e uno dei programmi di scrittura maggiormente diffusi.

26.

E importante imparare a memoria ii significato di tutte le icone di Word perche non cambiano negli anni.

41. Sostituire ogni occorrenza dell a parola "docente" con "professore": ............. ...... ................ .... ........ .

42. Cambiare un testo da maiuscolo in minuscolo:

27. II corsivo, ii grassetto e ii sottolineato devono essere usati necessariamente insieme .

43. Salvare un fi le in formato .rtf:

28. Gli stili di scrittura sono definiti nei programmi e none possibile creare e utilizzare degli stili propri .

29. I rientri di paragrafo permettono di modificare i

44. Annullare l'ultima operazione eseguita : ..

margini della pagina di Word.

145

VERIFICHE DI FINE CAPITOLO



ABILITA Tie richiesto di preparare un documento sulla riapertura di un bar. Devi utilizzare ii file "presentazione bar" disponibile online, applicarvi una serie di formattazioni come indicate di seguito ed effettuare un 'operazione di Stampa unione, preparando cos, la lettera per l'invio ai clienti. Lavera a partire dai file disponibili sulla piattafo rma.

45. Apri ii programma di elaborazione testi e apri ii file "presentazione bar". Salva ii documento con ii nome "presentazione bar finale". 46. Seleziona tutto ii testo del paragrafo dopo ii titolo "Bar Franco & Carmen" e cambia ii tipo di carattere in Times New Roman, dimensione 11 pt. Giustifica ii testo dell'intero documento. 47. lnserisci la data odierna sotto ii name e l'indirizzo. Applica grassetto e sottolineatura ondulata all'intestazione "bar franco & carmen", e imposta le iniziali maiuscole.

48. Nel pa ragrafo che inizia con "La invitiamo", a pagina 2 del documento, apri un nuovo paragrafo dalla frase che inizia con "Presso ii bar potra inoltre" . Taglia ii testo "Biliardo" dalla lista dei servizi della pagina 1 e inserisci ii testo sotto "Pasti pervegetariani e vegani". Modifica la voce dell'elenco "Biliardo" in "Tavo li da biliardo". Applica un rientro di 4 cm dal margine sinistro alla lista dei servizi da "Giochi da tavolo" fino a "Tavoli da biliardo".

49. Applica l'elenco puntato alla lista dei servizi. II simbolo deve essere un pallino vuoto blu. lnserisci l'effetto maiuscoletto ai caratteri dell 'elenco puntato di servizi . Sostitu isci tutte le occorrenze della parola "baristi" con "barman".

50. Cambia la dimensione del foglio dell'intero documento in A4. lmposta ii margine sinistro del documento a 4 cm . lnserisci l'immagine bibite.jpg sotto la lista dei servizi. Ridimensiona l'immagine in modo che abbia un'altezza di 5 cm, rispettando le dimensioni.

51 . Modifica l'intestazione del documento in modo che diventi "Bar Franco & Carmen, soci". Applica la numerazione di pagina automatica in basso a destra alle pagine di tutto ii documento. Porta a 10 pt la spaziatura dopo (sotto) ii testo: "Nuove Tariffe", a pagina 2.

146

52. Usa un programma di controllo ortografico ed esegui le eventuali correzioni del caso (i nomi propri non sono compresi in questo controllo ortografico e possono essere ignorati).

53 . lnserisci un'ulteriore colonna a destra della colonna "Disponibilita", nella tabella di pagina 2.

54. Aggiungi ii titolo "Prezzo" alla nuova colonna e inserisci i prezzi seguenti. Prezzo € 5,50 € 5,00 € 3,50 Ridimensiona la prima colonna della tabella in modo che abbia una larghezza di 3,5 cm.

55. Copia ii formato del titolo "Bar Franco & Carmen" della prima pagina e applicalo ai titoli delle colonne della tabella a pagina 2. lnserisci 4 simboli a form a di smile sorridente (©) nella prima colonna dell'ultima riga della tabella. Applica ii colore blu ai simboli.

56. Salva una copia del file come pdf. 57. Stampa unione: usa la versione attuale di "presentazione bar finale" come documento principale. Usa ii file "lndirizzi" come origine dei dati che devono essere integrati nella lettera "presentazione bar finale". Sostituisci le righe del name e dell'indirizzo all'inizio del documento con i campi unione seguenti:

Unisci la lista degli indirizzi e la lettera per ottenere ii documento finale. Salva ii documento finale come " Unito". Salva e chiudi tutti i documenti aperti. Apri ii file "Messaggio" e salvalo come modello. N'ome file: doc1 .docx Sal,,a, come: Documento di Word r .docx) A . Documento di Word r. docx) utorr. Documento di Word con attivazione macro r .docm) Documento di Word 97-.2003. r.doc) M'odello di Word con attivazione macro r. dotm) Modello di Word 97-2003. r. dot) ondi cartelle PDF r .pdf) Documento XPS r.x ps) Pagina Web in file unico r. mht; ...mhtml) Pagina Web r. htm;"".htm Q Pagina Web filtrata r. htm;"".html) Rich Text Format r. rtfl Testo normale r .txt) Documento XML di Word r .xml) Documento XML di Word 2003 .x ml)

r

.

.

Elaborare un testo



COMPETENZE

58.

Associamo a ciascuno dei se guenti simboli la funzionalita corretta.

[A •] ~ ~ 0 [

Hewetica

AC 2 = AB 2 + BC 2

• 12

a. b. c. d. e. f.

lmposta un carattere come apice. Mette ii carattere in grassetto . Modifica ii colore del testo. Annulla l'ultima modifica. lngrandisce ii carattere del testo. Aumenta la spaziatura tra due rig he del testo. g. lnserisce un elenco puntato. h. lndica dimensione e font del carattere di un testo.

A•

Modifica ii colore del testo .

Fig. B Lo strumento Forme di Microsoft Word. ct) Form~.,

1ci SmartArt

rn

Forme usat"e di recente

m

'\. □ OOL'.:).l...'"L.o0C:,

~-Y\.{}* linee

"'\. '\. l... L, '7.. 2.?.?. '\.C:,~ Rettangoo

□ ODOOD □ OO Forme

G

Mette ii carattere in grassetto.

x'

lmposta un carattere come apice.

A.

lngrandisce ii carattere del testo .

Frecce

----::::l12 • lndica dimensione e font del carattere d i un testo.

Helvetica

ooo o~ o ◊~rFfii}Jt.JJ (', .'.hll~c:>PD»0,9 >

Unisci la lista deg Ii indirizzi e la lettera per ottenere ii documento finale. Salva ii documento finale con ii name "Fusione". Salva e chiudi tutti i documenti aperti.

151

Utilizzare un foglio di calcolo In questo Capitolo parleremo di: • fogli di calcolo • elaborazione di dati • preparazione di grafici e tabelle

Guarda sul libro digitale ii capitolo dedicato a Cale

6.1 CHE COS'E UN FOGLIO DI CALCOLO ➔ ➔ ➔ ➔

1.1.3 1.2.1 1.2.4 2.2.4

➔ ➔ ➔

1.1.4 1.2.2 2.2.2

➔ ➔ ➔

1.1.5 1.2.3 2.2 .3

Un foglio di calcolo e un foglio diviso in caselle che possono contenere testo oppure numeri e formule, con i quali effettuare calcoli in modo automatico. •

e

Un foglio di calcolo elettronico una tabella, ossia un insieme di righe e di colonne che, nei loro punti di intersezione, formano delle celle. In og ni cella, individuata dal nome della colonna e della riga, possibile in serire testo, numeri o formule.

e

La funzionalita principale di un foglio di calcolo e la possibilita di modificare dei dati sui quali operano delle formule senza dover effettuare nuovamente i calcoli, dal momenta che il programma li esegue automaticamente aggiornando di conseguenza i risultati. Poiche appartengono alla stessa suite, Excel e Word hanno molti aspetti in comune. Sono del tutto simili, infatti, i comandi per salvare un file, spostarsi tra documenti, impostare le opzioni di base, utilizzare la guida in linea, come anche lo zoom e la Barra multifunzione. Rimangono invariati anche i comandi Annulla , Ripristina , Trova e Sostituisci e le principali formattazioni dei caratteri (grassetto, corsivo ecc.), che svolgono esattamente le stesse funzioni sia per Word sia per Excel. Per questi argomenti facciamo quindi riferimento al Capitola 5, dedicato a Word.

6.2 LA PAGINA INIZIALE DI EXCEL ICDL SPREADSHEETS 1.1.2



Come per Word , anche quando apriamo Excel dobbiamo scegliere se iniziare con un nuovo documento vuoto (Cartella di lavoro vuota) oppure crearne uno sulla base di modelli predefiniti. Il programma ne propane piu di venti, che possono soddisfare alcune delle necessita piu frequenti, come realizzare calendari o inventari, oppure gestire un piccolo budget. Se scegliamo una Cartella di lavoro vuota , appare una grande tabella nella quale inserire i dati , chiamata foglio di lavoro.

152

CAPITOLO

Utilizza re un fog li o di ca lco lo

Tipo e Dimensione carattere

-,Home

A

i

c...J

l ' .

principali formati numerici [ ['Ell

v

% 000 ~o8

Germano Pcttarm

• 11



A

~lnserisci ..

A

lii! F& ato•

Clr11tte:rt

1

,;numtnto

Ii

-t--

Ii

411e

Sllll

Ii

Numtrl

N

M

' a~1nea~ento del testo nelle celle

ril

-

Condividi

0

X

c:J Commenti

f)

I:. ~'v'

1

~8 ]

:;i: ~

G C S. • Fi

v

Guida

:i2 Etimina "'

=2") restituisce come risultato 2. CONTA.SE() : la sintassi di questa funzione

MEDIA.SE(): simile a CONTA.SE(), calcola la media delle celle in un interval-

lo, specificato come primo parametro , che soddisfano i criteri specificati nel secondo parametro. RADO() : restituisce la radice qu adrata del numero che ha come argomento . Per esempio, se la cella Al contiene il valore 4, allora la formu la =RADQ(Al) restituisce come risultato 2. La funzione e equivalente alla formula =A l 11 0,5. Notiamo che, se si cerca di calcolare la radice quadrata di un numero negativo, appare il messaggio di errore #NUM .

Proviamo insieme La relazione di laboratorio: misurazioni medie ed errori anomali Per realizzare un'analisi statistica sui dati raccolti, dobbiamo fare ricorso a ulteriori formule disponibili in Excel. La media di una serie di valori, per esempio, puo essere calcolata utilizzando la somma automatica. Sostituiamola a quella manuale gia immessa. Passo 1. Selezioniamo la cella JS. Passo 2. Premiamo ii pulsante Somma : compare la formula = SOMMA(); inseriamo tra parentesi l'intervallo di celle da sommare: = SOMMA( ES:IS). Le celle coinvolte sono evidenziate da un bordo tratteggiato che scorre. Passo 3. Completiamo la formula dividendo la somma per 5: = SOMMA(ES :IS)/5. Passo 4. Premiamo ii tasto INVIO per confermare. Nella cella JS appare ii risultato, uguale al precedente: 1,233. Passo 5. Copiamo la formula nelle celle sottostanti tram ite ii riempimento automatico e calcoliamo, sino a J15, i tempi medi delle diverse misurazioni. In alternativa, possiamo usare direttamente la funzione MEDIA(), seguendo questi passaggi . Passo 1. Selezioniamo la cel la JS in modo che diventi la cella attiva. Passo 2. Facciamo clic sulla freccetta nera di fianco al pulsante Somma automatica !. . Anche se la funzione Me.dia appare nell'elenco delle funzioni di uso comune, effettuiamo l'inserimento della funzione nel modo generale: scegliamo la voce Altre funzioni.

X

?

lnserisci funzione Cerca una funzione:

Digitare una breve descrizione di cosa si desidera fare, quindi fare clic suVai

j

~

i

Oppure selezionare una fategeria : ["sta ..._s_ta_tist _ i_ch_e_ _ _ _ _ __,E]._ v.. Selezionarc una funzione·:

ASIMM ETRIA. P CONFIDENZA.NORM CONFIDENZA.T CONT A.NUM ERI CONT A. Pill.SE CONT A.SE

V

A5IMMETRIA(num1 ;num2; ...J

Restituisce ii grade di asimmetria di una distribuzie ne, ovvero una earatterizzaziene del grade di as immetria di una distribuziene atterne alla media.

Passo 3. Nella finestra, scegliamo come categoria Statistiche.

166

Guida relativa a guesta funziene

_ _o_K_

_.! [

Annulla

CAPITOLO

Utilizzare un foglio di calcolo

Pass o 4. Appare l'ele nco delle f unzi o ni st atistiche predefinite di Excel disposte in ordine alfabetico: scorriamolo fino a t rov are MEDIA. Passo 5. Selezioniamo la fun zione MEDIA e premiamo OK. Passo 6. Appare la se conda f inestra del processo d i autocomposizione de lla fun zione, nella qua le vanno specif icati gl i argomenti: per ciascuno d i essi, Excel propane un interval lo possibile di celle . Nel nostro caso inseriamo come unico argomento l' intervallo ES:I8. Passo 7. Concludiam o l' inseriment o de lla formula con un clic sul pulsante OK . Nella cella JS appare ii risultato attes o, cioe 1,233. Nella Barra della formula appare la formula creata = MEDIA(ES:I8). Con la funz ione MEDIA() calcoliamo anche la velocita media e l'acce lerazione media, rispettivamente nelle celle K18 e L18 . lnvece, con la funzione STD.DEV() calcoliamo la deviazione standard dell'accelerazione nella cella M18. lnfine, applichiamo una formattazione condizionale (che abbiamo visto nel paragrafo 6.7) ai valori della colonna O (errore percentuale) . Secondo le specifiche de\ nostro strumento di misura, un errore maggiore de\ 30% non rientra nella variabilita ammessa durante le misurazioni, ma puo indicare un errore intercorso durante la ripetiz ione dell'esperimento. Vogliamo quindi evidenziare con una cella di colore rosso quelle misure che superino ii valore 0,3. Possiamo farlo nel mo do seguente . Passo 1. Selezi on iam o la serie di celle 08:015. Passo 2. Dalla scheda Home scegliam o ii pu lsante Formattazione condizionale, po i Regole evidenziazione celle e inf ine Maggiore di. Passo 3. Specifichiam o ii valore 0,3 ne lla scheda di input che compare e premiamo ii pu lsante OK. Solo la cella 09 diventa effettivamente rossa, essendo l'unico valore maggiore di 0,3.

-A

8

E

D

C

1 Relazio ne di la boratorio 2 3 Classe 4 l nsegnante 5 Anna scalastica 6 7 8 9 10 11 12 13 14 15 16

Data Alunna

1 2 3 4 5 6 7 8

Misurazionel Misurazione2 Misurazione3 Misurazione4 Misurazione5 Misura zio ne6 Misurazio ne7 Misurazio ne8

H

I

I

I

K

I

L

M

I

N

0

Errore relat ive

percentuale

c=1 MISURE RIPETUTE

Spazio (cm) Spazio (m) t 1



G

10 20 30 40 50 60 70 80

17 18

0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8

1,236 1,781 2,222 2,614 2,936 3,244 3,494 3,773

ti 1,236 1,788 2,232 2,611 2,933 3,244 3,497 3,779

t, tm t3 t5 1,232 1,231 1,231 " 1,781 1,774 1,772 " 2,227 2,227 2,226 " 2,607 2,608 2,606 " 2,931 2,942 2,934 ,, 3,244 3,235 3,237 " 3,500 3,500 3,499 ,, 3,781 3,770 3,789 "

Errore v (veloclta ) a (accelerazlone )

1,233 1,779 2,227 2,609 2,935 3,241 3,498 3,778

0,162 0,225 0,269 0,307 0,341 0,370 0,400 0,423

asso luto

0,132 ,, 0,126 " 0,121 " 0,118 " 0,116 " 0,114 ,, 0,114 " 0,112 ,,

0,00 2 0,008 0,005 0,004 0,006 0,005 0,003 0,010

Veloc,ta

Acce lerazione

Oev laz ione

med ia

media

acce lerazlone

0,31

0,12

0,002 0,004 0,002 0,002 0,002 0,001 0,001 0,003

Errore

20% 45% 22% 15% 19% 14% 9% 25%

0,01

Ora prova tu! La relazione di laboratorio: aggiungi altre formule II foglio Excel che hai creato puo essere ulteriormente arricchito di altre formule. lnizia ad aggiungere quelle descritte di seguito: • inserisci la funzione per la data corrente; • nella cella PS inserisci una funzione che restituisca No se la percentuale di errore e maggiore de\ 30%, S1 se e inferiore; • utilizza ii completamento automatico per copiare la formula immessa al punto precedente anche per le altre misurazioni.

167

I

1

SEZIONE

f)

Documenti elett ro nici

6.10 I GRAFICI ICDL SPREADSHEETS 6.1.1-6.1 .5 ➔ 6.2.1-6.2.5 ➔

Excel permette di rappresentare i dati inseriti nel foglio di lavoro tramite grafici . Per creare un grafico, Excel deve leggere dei dati. Per prima cosa, quindi , bisogna scrivere i valori in un intervallo di celle e selezionarle. Una volta selezionati i dati , possiamo scegliere il tipo di grafico con cui rappresentarli tramite il gruppo Grafici della scheda lnserisci (Fig. 6). I pulsanti dei diversi tipi di grafici (istogramma , a linee, a torta ecc.) aprono un menu da cui selezionare il sottotipo. 11 pulsante Grafici consigliati presenta, per ciascun tipo, un'anteprima del risultato che si otterrebbe applicandolo ai dati selezionati e una breve descrizione del suo uso tipico.

Grafici cons:igliati

r» Grafici ~ -- - - - - - - - - - - - - ~ Fig. 6 II gruppo Grafici.

Una volta scelti tipo e sottotipo, Excel inserisce automaticamente il grafico nel foglio di lavoro con le impostazioni predefinite . 11 grafico, come un'immagine , puo essere ridimensionato, spostato nel foglio, ingrandito o rimpicciolito utilizzando le maniglie. Compaiono, inoltre, due nuove schede: Progettazione e Formato. La prima permette di scegliere tra una serie di modelli preimpostati e offre gli strumenti per intervenire sulla struttura del grafico. La scheda Formato, invece, consente di modificare i titoli del grafico e degli assi, la legenda, il formato dei caratteri e i diversi effetti grafici. La scelta del tipo di grafico non dipende solo da motivi estetici. Dati diversi, infatti, sono rappresentati in modo piu chiaro da grafici differenti. Vediamo una breve descrizione di alcuni tipi di grafico. .350

. )SO

~

.JOO

:,·1iii iliiil'i'

lstogramma : ogni valore viene rappresentato da una barra verticale (Fig . 7). Lo si utilizza soprattutto per confrontare i valori di alcune categorie. Simili a esso sono i grafici a Cilindri , Coni e Piramidi , in cui queste forme geometriche sostituiscono le classiche barre. Barre : e come l'istogramma , ma con le barre orizzontali.

Li nee: il grafico a linee e utilizzato per la rappresentazio-

ne di funzioni nel piano cartesiano. Torta : rappresenta i dati evidenziando la proporzione che Fig . 7 II reddito regionale in Italia nel 2017, dati ISTAT (istogramma).

ml 7,82% 'IC

~,,

0 80,70%,,

(~~I

,dtNilom

[mlOllfttUr&

lg."

........

[@

....

Yhuafinazionl schma

~

Gngl,.

Schm,a Schema

Moma

°'

Zoom Ad.ttaallai

Not•

Guide I

-D Vlsualzu

RNStOne

Presentmone

Anll!1a2IOIU

-'diapOSibva s1:_,.,.,.11

a~rde

Vis allzzazioni prtstnbziont

r; ,

I

I

lnserisci

Progettazione

Anwnazroni

Presentmone

f - - T J6%

Formato forma

Condividi

LJ

8o,,pon;tutto

Gndanonidigrigio

N..,..

12, Sompponi

fi-.s;lSpostodMS

- ~t • c..- daiu. #11; b ~ - - II OIi=~•-• lal•t~ro ~ l llf1l; l•tcw i ........l"Q""... . :1-.,e'" - ~ t• '" ( D / - . • r - ~ . . . , . ~ . ~ •-oa:.rl'" C!OD.t:Mt.• tt,i,e:, ,-.•-•90'W'•ltJ"'> .,r.....-..:,-• . . :r..a.l:.l

~

-t:~



PL prima pagina web 5

La divina Commedia

Nel mezzo del cammin di nostra vita



Cerchiamo informazioni sui QR Code. I OR Code sono codici rappresentati da un'immagine di forma quadrata costituita da quadratini bianchi e neri (o di altro colore diverso dal bianco). Vengono impiegati per memorizzare informazioni che possono essere lette da uno smartphone mediante la fotocamera o un apposito programma. I QR Code sono molto utilizzati in settori diversi. Cerchiamo in Internet informazioni al riguardo seguendo i passi qui descritti . Passo 1. Visitiamo ii sito ht tps://it .qr-code-generato r.com/. Passo 2. Generiamo un O R Code inserendo l'URL de/ sito web della nostra scuola. Proviamo a farlo dello stesso colore della figura seguente. Passo 3. Salviamo ii logo sul desktop del computer, nominandolo code .png. Passo 4. Leggiamo ii OR Code con un'applicazione dello smartphone (in alcuni e sufficiente puntare la fotocamera verso ii OR Code, in altri e possibile scaricare un'app gratuita dallo Store).

232

Le reti di computer

, ~

}' C G) OTT

1iiJ

~

••• 0

qr code-generator com

[!) VCard

(.; Appstore

~

Testo



1111

a

QR ODE GENERA OR PRt'

URL

*

@ lndirozzo e-mail

i;.t SMS

I

Facebook

2) PDf

."': MP3

t;;i lmrag, ,,

Sito web (URL) https:1/www.exariple de CORNICE

0

Statico

~-----,,6----,

Oinamico

-

-

-·-~·--

din

-

X

.-.- : - - ~

::

C

,

r

-

- - ·,

-

- -

-~---

~

..--p-r-

COLOR

C~EA UN CODICE QR

I

LOGO

Passo 5_ Apriamo ii blocco note e digitiamo ii seguente testo_ < ! DOCTYPE I •• - >

Sito web scolastico

Per avere informazioni sull'Istituto ..... utilizza il seguente QR Code



Passo 6. Salviamo ii file sul desktop con ii name CodeScuola.html. Passo 7. Apriamo ii file con ii browser e controlliamo ii risultato ottenuto.

• COMPETENZE

39. Osserva la seguente immagine. Distingui le parti che compongono l'URL. lndividua ii protocollo utilizzato e ii suo significato. Riconosci infine ii server e le sue ca rat teristiche, le directory e ii file.

i

POSTE ITALIANE S. p .A. (IT]

La connessione

https;//www.poste.it

e protetta

:. Amministrato

C

Noi PA

X

+

X

TALIANE

Le tue informazioni (ad esempio password o numeri di carte di credito) restano private quando

• ~

41 . Quali informazioni puoi ricavare dalla seguente immagine? Utilizzando un browser prova a visualizzare le stesse informazioni su un sito diverso.

vengono inviate a questo si te. Ulteriori

roNTI CA ;: FINANZ

informazioni

It https: noipa.mef.gov.it g

1p/mypa/amm1rnstrato

40. SaaS viene spesso indicato anche come software on demand. Ricerca in Internet ii significato e la motivazione di questa definizione.

Ii!

Certificato (Valido)



Cookie: 112 in

I)

lmpostazioni sito

USO)

233

I

I

VERIFICHE DI FINE CAPITOLO

42.

Utilizziamo ii servizio del Consorzio W3C per controllare ii codice. Consultiamo ii sito web https://val idator.w3.org/. Clicchiamo su Validate by direct input. Scriviamo ii codice seguente e poi clicchiamo su Check.

1 1 1

Validate by direct lnpu1

,..

~



Sito web scolastico

gia Download Preferitl Dimensioni dei caratteri

Google

-

100%

Stampa...



XP

Trasmettl. ..

Trova...

XF

Altr1 strumentI

-!,

Mod/flea

Taglia

Cop4a

lncolla

lmpostazioni Google Search

rm Fffllng Lucky

Guida

Descrivi tutte le azioni che possono essere eseguite accedendo a tale finestra. 34. Che cosa significa la seguente immagine?

0

Sei passato alla navigazione in incognito Orc1 puo1 nc1v1qJre 111 privato. Le altre persone che us.:ino questo d1spos1t1vo non vedr.:inno le tue .1tttv11.:1. ma I downlo,1d Pi prdPritt vf'rr,1nno s,1lvJt1 lJl!r>r•or1 111fnrn1.J11c,n,

Chrom~ non sJlvera le sequent1 intormaz1on1 C:ro11ol(HJ1d di 11;w1ga11one

Cook1~' e dJ\1 de1 lnforma11on1

Ln Ilia attiv1td potrt>bhe cornunque essere vis1bde A1 sI1I web v1s1tJt1

~111

111sn1tp

ne1 modult

Al tuo r!JtorP d1 lovmo o ;::ilia tu.J scuola !\I tuo provider d1 servw Internet

Scrivi le istruzioni per passare alla navigazione in incognito utilizzando Google Chrome. 35. Ricerca in Internet qua( e l'eta minima per iscriversi ai principali social e per acquisire un account di posta elettronica. 36. Utilizzando ii motore di ricerca Google, scrivi related: davanti all'indirizzo del sito della tua scuola. Che cosa ottieni?

262

39. Utilizzando ii motore di ricerca Google, effettua una ricerca con due parole chiave. Poi ripeti la stessa ricerca, ma metti ii segno appena prima della seconda parola (non lasciare uno spazio tra ii simbolo e la parola). Che cosa osservi?

37. Utilizzando ii motore di ricerca Google, scrivi cache : davanti all'indirizzo del sito Internet della tua scuola. Che cosa ottieni?

40. Utilizzando ii motore di ricerca Google, per effettuare una ricerca che include un prezzo, si utilizza un simbolo particolare. Effettua una ricerca online per scoprire qual e questo simbolo.

38. Utilizzando ii motore di ricerca Google, metti una parola o una frase tra virgolette. Che cosa ottieni?

41. Utilizzando ii motore di ricerca Google, inserisci .. tra due numeri. Esempio: cellulare € 600 ..€1 800 . Che cosa ottieni?

Internet e ii World Wide Web

• COMPETENZE 42. Vai al sito Internet della Polizia di Stato (tiny.cc/37mr0y) e cerca ii significato di Social media policy. 43. Cerca in Internet che cosa si intende per ricerca inversa delle immagini. Utilizza poi ii link https://images.google.com/ per applicare quanto hai appreso. 44. Google permette di restringere i risultati ottenuti per le ricerche complesse utilizzando la pagina Ricerca avanzata. Collegati alla pagina principale di Google, clicca su lmpostazioni (in basso a destra) e poi su Ricerca avanzata. G .....

'

C



+

hllp9, WWW .~

Go gle !,

~

Mltlonl~

-

~

Otterrai una pagina come questa: R1cerca avanzata

Treva paglne web che contengono ...

Per ,,,. quHto n•II• caHlla di ricerca.

tulle quest• parole: questa esatta parola o frase

una qualunque di qu&1ta pa,ole· Anl9pon!IIMgll0•(1Mno) ... parol9 d l l ~

neaauna di queste parole:

-roditor•, - ".Jock 11u,11ll" , ~ due P',Wld n I runer11 aog1ung1 un·~ di JO . ,J5 kq, C JOO, ,C 500, 2010. ,2011

numeri eta.

mmn

Pol /Im/ta i r/su/tatl per... lingua:

tutteleKngu.

area gaograflca ,

tuttllPNSI



Trova II pag1r111 pubbkata

in"'"..,.. geograflca lpKlficl

uttlmo agglomamento: c«c;einunM0(00f'l'levikiped11.or;)o~~,~ f9191N11undorrwlio.cc,r,. ,edu .. or90 .9ov

atto o dominlo· termini che compaiono:

In un pYnto quatslffl deJla paglna



c.rc.1ten"YW11nd'lnler1pegil'lil,,neltlkllodela.,..,..,nell'l0Cllnu.o'NN0 r.el link che rlmandano aa. p-oin,i dM6dltata

Safe Search:

Mottn I rlauhatl plQ ptrtlnentl



lndica a SafeSNtch N l'llnt9 I conl«'luti IHsualmenle ttplidtl

tlpodi file:

qu1l1l1alfonn1to



Trovai.~r..ifomutiOchtirnf..w:I

dmlti di utilizzo•

rl1ult1tl non lilttati In ban 1111 tic.nu

Esegui una ricerca inserendo almeno cinque criteri.

263

VERIFICHE DI FINE CAPITOLO

45.

Usando Moduli, creiamo un questionario per rilevare l'andamento scolastico

@ della classe nel primo quadrimestre. II questionario deve essere composto da cinque domande.

Tutte le domande sono a risposta obbligatoria, tranne l'ultima. lnfine, impostiamo ii file per la raccolta delle risposte . 46. Osserva l'immagine seguente.

Go gle Tutti

lmmaginl

Dimensloni •

Video

Colore ..

Notizie

Maps

Diritti di ulillzzo •

Altro Tipo •

lmpostazloni Ora •

Strumenti

Altri strumenli •

a. Prova a ottenere lo stesso risultato utilizzando ii tuo browser ed elenca le azioni che hai compiuto. b. Ricerca un'immagine relativa a un argomento a tua scelta e, nel menu a tendina Dimensioni, seleziona di volta in volta le singole voci . Che cosa cambia tra una ricerca e l'altra? c. Ricerca tre tipologie differenti di immagini. Ouale menu a tendina puoi utilizzare? d. Ricerca foto presenti in Google negli ultimi sei mesi ed elenca le azioni che hai effettuato. 47. Ricerca in Internet ii significato dei seguenti simboli, che rappresentano le sei licenze Creative Commons. Logo

(oioJ [oioio] l:oJ:oJ:0%0] [oioI~ loJ:0Ie%0J loioI0]

Acronimo licenza CC BY 4.0 IT

CC BY-ND 4.0 IT

CC BY-NC-ND 4.0 IT

CC BY-NC 4.0 IT

CC BY-NC-SA 4.0 IT

CC BY-SA 4.0 IT

48. Vai sul sito tiny.cc/9inr0y e cerca la dichiarazione dei diritti in Internet. Che cos'e? a. Che cosa si intende nel documento per diritto all'identita? b. Che cosa si intende nel documento per diritto all'oblio? c. Che cosa si intende nel documento per diritto di accesso? d. Che cosa si intende nel documento per diritto alla conoscenza e all'educazione in rete? 49. Vai sul sito tiny.cc/9inr0y e cerca ii galateo dei rapporti online. Spiega che cosa puoi fare nel caso in cui ti accorgessi che ii galateo online non e rispettato.

264

Descrizione

50. Descrivi come useresti la rete per promuovere un nuovo videogioco. 51. Descrivi come useresti la rete per promuovere un software didattico. 52. Ricerca in Internet consigli su come usare correttamente un hashtag . 53. Un ex alunno della tua scuola, neodiplomato, sta cercando lavoro. Gli hanno consigliato di iscriversi a Linked In. Ti chiede aiuto per capire di che cosa si tratta. Documentati e prepara una piccola presentazione che riassuma tutte le informazioni che ritieni utili per presentarsi nel migliore dei modi nel mondo del lavoro.

IN ENGLISH A collaborative effort The spread of COVID-19 has forced many businesses to adopt work from home policies . Listen However, working remotely in a to the t ext team is a different experience than working face to face. Nevertheless, there are many web services that allow people to work together even if they cannot meet in person. Work with four friends and write together a single document on the features of the Internet. Use the on line text editor provided by Google. As a first step, discuss w ith your friends the index and the structure of the text.

What topics do you want to discuss? Do you plan to write a traditional essay, or do you want to create a more dynamic document? Set up the discussion with a videoconferencing tool, such as Google Meets.

I Topic 1

I Topic,

I... I

I Topic 3

Decide how the work should be shared between the collaborators.

Who is going to write about what topic? Are you going to write individually every section of the text, or do you plan to work together right from the start? Initial draft

Reviewing and commenting

Second draft

.. .

Time needed

Discuss a timetable.

For instance, you might want to have an initial draft ready in a week, t hen allow for some days of reviewing and commenting.

I

I

Topic I

Team member(s)

ITapic3

I Topic 2

I... I

Now you are ready to begin your collaboration. Remember to keep in touch with your friends throughout the whole project!

-

V

C

,,. ......... OS -

E

0

·--·------ S E D

MA GN A T ...,_..., EM

_____

___---

N

C T T

D O LO R QU I S

E

_,......,,,

It---'--~

---:::::--

E

,. ,

I

-----.•· .

265

I

.. I

COMPITO DI REALTA I

Dimmi com Prepara un sondaggio sull'uso dei social tra i ragazzi della tua eta.

Osserva i seguenti dati raccolti dal Safer Internet Centre Italia e disponibili nella presentazione tiny.cc/ sabkuz, fai le tue considerazioni al riguardo ed elabora un sondaggio da proporre ai tuoi amici . II sondaggio puo essere effettuato online, ad esempio tramite l'applicazione Moduli di Google, via email o in modalita cartacea. NELLE FOTO TAGGO ... Se una foto m1 p1ace taggo tutti, anche se gll altn sono m pose butte

Ch1edo

11

permesso pnma d1 taggare quatcuno

Non taggo nessuno. se vogllono s1 taggano loro

,.

Taggo tutti I present! nelle foto Posto solo case che non s1ano 1mbarazzant1 per gll altn

Ef

111

Raccogli i dati ottenuti attraverso ii sondaggio ed elabora li; costruisci dei grafici confrontandoli anche con quelli presentati dal sito Generazioni Connesse. Che conclusioni puoi trarne? Secondo te, sono significative da un punto di vista statistico? Perche?

Attraverso uno strumento di presentazione, racconta ai tuoi compagni di classe i risultati ottenuti e le tue riflessioni .

266

@QO•J!•IQ) Problem solving e algoritmi

kfJQO•J!•IG, Dagli algoritmi alla programmazione strutturata

kt+140•J!•I$

Algoritmi e • programmaz1one



Un nuovo linguaggio: C#

0

CONOSCENZE • Fasi risolutive di un problema, algoritmi e loro rappresentazione • Fondamenti di programmazione e sviluppo di semplici programmi in un linguaggio

Q

cioe determinare ii comportamento senza intervenire sulla struttura fisica, ma limitandosi a modificare ii software. Ouesto permette di avere macchine sempre piu efficienti. La tecnologia pero e solo uno strumento, e come tale risulta utile solo se migliora e arricchisce la vita e se vi sono persone in grado di utilizzarlo. Pertanto, di pari passo con la rivoluzione digitale, cresce l'esigenza di formare

ABILITA • Analizzare, risolvere problemi e codificarne la soluzione • Sviluppare la capacita di implementare un algoritmo in pseudocodice o in un linguaggio di programmazione • Utilizzare la rete Internet per ricercare fonti e dati di tipo tecnico-scientifico

0

I dispositivi introdotti nelle sezioni precedenti sono programmabili: se ne puo

figure professionali capaci di utilizzare in modo consapevole e appropriato i sistemi informatici, cogliendone potenzialita e limiti. All'inizio del percorso che ci portera, con gli anni, ad apprendere la programmazione, potremmo porre una frase di Steve Jobs (1955-2011), cofondatore ea lungo amministratore delegato di Apple: "Tutti dovrebbero imparare a program mare un computer... perche farlo ti insegna a pensare". Ouesta Sezione del volume e stata pensata proprio per favorire lo sviluppo del pensiero computazio nale, sollecitando l'attivazione continua di processi mentali impiegati nell'analisi e nella risoluzione dei problemi.

COMPETENZE • lndividuare le strategie appropriate per la soluzione di problemi • Essere consapevole delle potenzialita e dei limiti delle tecnologie nel contesto culturale e sociale in cui vengono applicate • Analizzare ii valore, i limiti e i rischi delle varie soluzioni tecniche per la vita sociale e culturale con particolare attenzione alla sicurezza nei luoghi di vita e di lavoro, alla tutela della persona, dell'ambiente e del territorio

Scopriremo le basi della programmazione esaminando ii concetto di algoritmo e le principali tipologie di linguaggi. Svilupperemo la capacita di implementare un algoritmo in pseudo-codice o in un particolare linguaggio di programmazione, introducendone la sintassi. Acquisiremo padronanza di un linguaggio per sviluppare applicazioni semplici, ma significative, misurandoci anche con i problemi proposti nelle prove INVALSI di matematica per la classe seconda . Utilizzeremo un software libero sviluppato per tutti i sistemi operativi, apprendendo un linguaggio potente, aggiornato, utilizzato da professionisti del settore e richiesto nel mondo del lavoro. BACHECA

I E L'ORA

DEL CODICE!

SCENARIO Code.erg e un progetto che rendere la programmazione piu accessibile a tutti, incoraggiando persone di qualsiasi eta a imparare l'informatica. La prima "ora del codice", cioe la prima serie di attivita dedicate alla disciplina, e stata lanciata nel dicembre del 2013. Da allora ogni anno le attivita si moltiplicano e sempre piu studenti si affacciano all'informatica utilizzando le lezioni proposte. COMPITO Vai su https://studio.code.org/courses e prova qualche attivita. Scegli la tua preferita e inseriscila in una bacheca di classe come nell'esempio alla pagina http://Q2.hubscuola.it/3mci .

267

'

SEZIONE

D

QUALE LINGUAGGIO IMPARARE? Perche imparare a programmare7

l

'

Per trovare un lavoro

In quale campo o settore?

'

Non lo so! Consigli per iniziare?



Non ha importanza!

Giochi e 3D

Voglio solo $$$

C# (D 0

~ CosoL a V

Java

-

(

Ricerca scientifica



Startup

◄---►



;a

JS

Web

m C#

Vuoi lavorare per le grandi aziende IT?

Vuoi provare qualcosa di nuovo, dalle grandi potenzialita ma ancora poco diffuso?

Non so

268



Solo per divertimento

' ►

Per mettermi

Hai un'idea

alla prova

brillante?

No, non ancora! Voglio solo iniziare

• ►

'

Perche sono interessato

Preferisci imparare ...

' nel modo piu facile

'

)

C#

nel modo migliore

nella maniera piu complessa

j) C# Java =

e

Mobile

'"'

C

ROGU"I\U,.,,

u ..u,u

' ►

.

iOs

ma che mi permetta di apprendere altri linguaggi

c# ! ] G

'

Quale sistema operativo?

Android

---►

«

= Java '=:;: )

C#

unGUAGGI

1)

=Java

JAVA

!]

OBJECTIVE C

II

RUBY

C

C++

0

ASSEMBLY

PYTHON

JAVASCRIPT

SWIFT

T ll f

C#

C#

C

PROGR\\t\ll\;C:

G

LA,GLAGt;

(D

UNREAL ENGINE

R

COBOL

COBOL

@

RUST

~

CD ◄

UNITY

F#

{ ·~· \

~

::--

I;

SCRATCH

KOTLIN

PHP

m

e

TYPESCRIPT

VISUAL BASIC

- GO

269

Problem solving e algoritmi In questo Capitolo parleremo di : • problem solving • algoritmi • diagrammi a blocchi e pseu docod ifica

10.1 PROBLEMI E SOLUZIONI Francesca deve arrivare a scuola entro le 7:50. Puo prendere il bus numero 6, che impiega 30 minuti, oppure il numero 3, che impiega solo 15 minuti ma la fermata e piu lontana. Inoltre, se lo perde, con il successivo arriverebbe in ritardo di 5 minuti . Insomma , ache ora deve mettere la sveglia7 Anche Marco deve andare a scuola, ma ha il motorino e puo fare almeno tre strade diverse. Se pane dopo le 7:30, pero, trova molto traffico passando dal centro; la strada piu lunga , invece, passa davanti alla pasticceria dove fare colazione. Oggi pero ha poca benzina e niente soldi. Che strada gli conviene fare7

Fai almeno tre esempi di problemi che puoi incontrare in una giornata normale.

Spesso si pensa erroneamente che risolvere problemi sia compito esclusivo delle scienze, come la matematica , la fisica ecc. In realta , ciascuno di noi si trova quotidianamente di fronte a situazioni problematiche, a volte molto semplici e altre volte assai complesse, che ci mettono in difficolta. Questa puo accadere anche perche le strategie per risolvere un problema possono essere molteplici e spesso dipendono dal contesto.

IL PROBLEM SOLVING Nonostante la grande varieta di problemi e strategie per affrontarli, nel processo che porta alla soluzione di un problema possiamo sempre riconoscere tre fasi . Passo 1.

Individuazione del problema (Probl em finding ) .

Passo 2. Definizione del problema e delle sue caratteristiche, come la difficolta, il contesto , gli elementi coinvolti (Problem shaping). Passo 3. Risoluzione del problema individuato e definito ai passi precedenti (Problem solving).

Come primo passo dobbiamo capire qual e il problema (finding) . Per arrivare a scuola in orario occorre impostare la sveglia e non lo si puo fare a caso. In secondo luogo, dobbiamo capire qual e esattamente la natura (shaping) del problema. Non basta trovare la strada piu corta: bisogna tenere conto anche dei sensi unici e del traffico.

270

Prob lem solvin g e algoritmi

CAPITOLO

Commettere errori in queste prime fasi del processo di risoluzione di un problema comporta il rischio di trovare una soluzione sbagliata, di risolvere un problema differente da quello desiderata o addirittura di non riuscire a proseguire nella risoluzione. Solo dopa aver compreso che il problema esiste e qual mo pensare a come risolverlo (solving). •

e la sua natura, possia-

Si defin isce problem solving l'attivita che, a partire da alcune condizioni iniziali date, permette di raggiungere un obiettivo prefissato.

IL RISOLUTORE E L'ESECUTORE Cerchiamo di capire meglio in che cosa consiste la fase del problem solving. Una volta individuato il problema e compresa la sua natura , possiamo dividere la sua risoluzione in due momenti: • la scelta della strategia da attuare; • l'esecuzione delle azioni necessarie per ottenere la soluzione desiderata . 11 primo momenta e di competenza di colui che analizza il problema : il riso lutore . 11 secondo, invece, e affidato a chi ha la capacita di eseguire le istruzioni necessarie per raggiungere la soluzione: l'esecutore . I due ruoli sono quasi sempre ricoperti da soggetti diversi . L'esecutore, in particolare, non e necessariamente un essere umano: in informatica spesso e una macchina.

Fig. 1 I ruoli principali in ambito informatico.

Inoltre , il risolutore potrebbe non essere in grado di mettere in atto la strategia risolutiva scelta, mentre l'esecutore non sempre ha la capacita di prendere decisioni in merito alle azioni da eseguire per risolvere il problema. Per questo motivo, in ambito informatico, hanno grande importanza anche altre figure professionali, alcune delle quali sono intermedie tra questi due ruoli. In sintesi, possiamo ricondurre le principali professioni legate all 'informatica alle tre seguenti (Fig. 1). 1. lnformatico (Computer scientist) : e il ri sol utore . Con formazione matematica, e colui che individua le strategie risolutive e definisce la struttura delle applicazioni e dei sistemi informatici. 2. Sviluppatore (Developer) : collabora con il risolutore in quanta ha una visione d'insieme dell'intero progetto e ne conosce tutti i componenti. Puo usare sistemi e linguaggi differenti e sa dare ai programmatori le specifiche in base alla strategia risolutiva dettata dal Computer scientist . 3. Programmatore (Programmer): scrive il codice entro una scadenza assegnata. Generalmente esperto di una specifica tecnologia, scrive la strategia risolutiva, scelta dal Computer scientist e adattata dal Developer, in un linguaggio comprensibile all'esecutore.

In questo Capitola faremo i primi passi per diventare un Computer scientist.

ALCUNE STRATEGIE RISOLUTIVE Osserviamo che, in generale, ci sono molti modi per affrontare uno stesso problema . Per scegliere quale strategia risolutiva adouare, possiamo aiutarci con un'analisi iniziale. Per esempio, se affrontiamo un quesito di matematica, dobbiamo mettere in evidenza i dati forniti nel testo del problema e le incognite da determinare.

271

SEZIONE

D

Algoritmi e pro g rammaz io n e

Per scegliere una strategia risolutiva dobbiamo anzitutto determinare: • i dati a disposizione (espliciti e impliciti); • la soluzione finale da trovare (obiettivo); • le azioni necessarie per raggiungere l'obiettivo. Nell'analisi di un problema dobbiamo inoltre tenere conto di eventuali vincoli , cioe delle condizioni che devono essere soddisfatte affinche il risultato sia corretto e adeguato. I vincoli possono essere impliciti oppure espliciti. • Vincoli espliciti: vengono richiesti dalla formulazione del problema. Per esempio, nel problema di trovare la media tra due numeri positivi, il vincolo esplicito chiede che i dati siano maggiori di zero . • Vincoli impliciti : non vengono richiesti esplicitamente, ma si possono ricavare dalle altre informazioni a disposizione. Per esempio, nel problema di determinare il prezzo totale di alcuni prodotti , c'e un vincolo implicito: i dati (cioe i singoli prezzi) devono essere positivi (siccome un prezzo non puo essere negativo o nullo).

Sceg li un p roblema che ti inte ressa e scriv i i vincoli da tenere in considerazione perche la soluzione risu lti accettabile .

Per risolvere un problema si effettua un processo di astrazione, si separano cioe i dati dal loro contesto per poterli elaborare meglio. Rappresentando un oggetto reale con un simbolo, per esempio, si effettua un processo di astrazione.

Proviamo insieme Delimitiamo la distanza P GP,I

Sulla cartina geografica qui riprodotta sono indicate alcune cit t a de l Portogallo, tra le quali Lisbona (in portoghese Lisboa) , Coimbra (a circa 180 km in linea d'aria da Lisbona) e Beja (a ci rca 140 km in linea d 'aria da Lisbona). La distanza in linea d'aria tra Beja e Coimbra

e:

A circa 320 km; B circa 40 km; C sicuramente maggiore di 40 km e minore di 320 km; D sicuramente maggiore di 320 km e minore di 500 km. [Prove IN VA L5/ matematica 552 2016-2017]

Dati a disposizione

Distanza Coimbra-Lisbona (circa 180 km) Distanza Beja-Lisbona (circa 140 km)

Dato cercato•

D istanza Beja-Coimbra

W.incoli

Siccome lavoriamo con distanze, ciascun valore deve essere positivo. Ouesti vincoli sono impliciti.

-.

~--,

...

f 1. Esaminare la cartina e individuare le citta indicate (Coimbra, Beja). 2. Disegnare sulla cartina i collegamenti in linea d'aria tra le due citta. 3. Disegnare sul la cartina i collegamenti in linea d'aria tra Lisbona e le due citta. Osservare la forma geometrica ottenuta (triangolo). Ouesto passaggio richiede un processo di astrazione: le citta sono considerate vertici di un triangolo . 4. Studiare ii problema dal punto di vista teorico (proprieta dei triangoli). 5. Ricordare la disuguaglianza triangolare: la somma delle lunghezze di due lati qualsiasi maggiore della lunghezza del terzo. 6. Calcolare la somma delle lunghezze dei lati noti: 180 km + 140 km= 320 km. 7. Confrontare questo risultato con le risposte proposte; esso non permette ancora di individuare con sicurezza quella corretta (Ao (?) _ 8. Ricordare la disuguaglianza triangolare inversa: la differenza tra le lunghezze di due lati qualsiasi minore della lunghezza del terzo . 9. Calcolare la differenza tra le lunghezze dei lati noti: 180 km - 140 km= 40 km. 10. lndividuare la risposta corretta tra quelle proposte: C. La di stanza Beja-Coimbra sicuramente maggiore di 40 km e minore di 320 km .

e

e

e

Riesci a trovare una strada piu veloce per raggiungere lo stesso ri sultato? necessaria la cartina per risolvere ii p roblema?

E davvero

272

Probl em solving e alg o ri t mi

CAPITOLO

Due metodologie molto utilizzate per analizzare problemi e ipotizzare soluzioni sono chiamate top-down (dall 'alto in basso) e bottom-up (dal basso verso l'alto). Non sono, pero, le uniche. L:approccio top -down prevede di suddividere il problema in sottoproblemi; ciascun sottoproblema viene a sua volta scomposto in problemi piu semplici, finche non si raggiunge un livello di complessita che permetta una soluzione diretta dei sottoproblemi. 11 problema di partenza si puo risolvere combinando in modo opportuno le soluzioni di questi sottoproblemi piu semplici. TOP-DOWN

Scomponendo un problema in sottoproblemi se ne riduce la complessita, ma il metodo richiede una dettagliata pianificazione iniziale e una completa comprensione del problema che si vuole risolvere. Nell 'approccio bottom-up , viceversa, si pane dal basso e si arriva in alto: si costruisce il processo risolutivo individuando inizialmente un insieme di passi o funzionalita elementari che si ritengono utili alla risoluzione del problema e componendo successivamente tali funzionalita in parti piu grandi . La visione complessiva della soluzione potra essere ottenuta solamente alla fine del lavoro. BOTTOM-UP

Semplicita di progettazione

.lJ.

Meno adatto se la complessita del problema Permette temporaneamente di risolvere rende difficile scomporlo in parti piu piccole sottoproblemi parziali

it

Permette di costruire soluzioni modulari in Una volta trovata la soluzione necessario rivequanta procede per scomposizione in sotto- derla per suddividerla in sottoproblemi .lJ. problemi

it

Le soluzioni trovate sono piu facilmente modi- Le soluzioni trovate sono meno facilmente moficabili, ripercorrendo a ritroso le scelte effet- dificabili .lJ. tuate e individuando quali cambiare

it

Rende possibile va lutare preventivamente l'ef- E piu difficile valutare preventivamente l'effi ficienza generale della strategia risolutiva adot- cienza della strategia risolutiva adottata .lJ. tata in termini di costi, tempo e risorse

.lJ.

Gli errori si propagano e si amplificano lungo Gli errori rimangono inizialmente locali ed piu facile individuarli tutto ii lavoro

e

Modularita

Modificabilita

Efficienza

Influenza sugli errori

it

Esistono anche altre strategie risolutive, come per esempio il metodo brute-force, cioe forza bruta. Questa tecnica permette di risolvere moltissimi problemi, anche se non e noto un procedimento generale di risoluzione. La procedura del metodo brute-force consiste nel provare tutte le possibili soluzioni del problema fin quando non si trova quella che funziona. Consideriamo, per esempio , il problema di algebra modulare di determinare tutti i numeri naturali compresi tra 1 e 220 tali per cui 7" e un multiplo di 221. Potremmo provare a sostituire all 'incognita n tutti i numeri naturali compresi tra 1 e 220 e verificare per ciascuno di essi se 7" soddisfi la proprieta richiesta.

e

it

BRUTE-FORCE

Naturalmente, un procedimento del genere e molto costoso in termini di tempo. Pero, se c'e solo un numero finito di possibilita da provare , il metodo brute-force permette sempre di ottenere una soluzione ea volte e l'unica strategia applicabile. In alcuni casi puo anche essere opportuno combinare strategie risolutive diverse (per esempio, un approccio top-down con risoluzione a forza bruta di alcuni sottoproblemi).

Verifica con la tecnica del brute-force qua Ii tra le soluzioni (1, 2, 0, -2, 4) dell'equazione

x2 -4=0 sono corrette. Pensi che ii metodo brute-force si possa applicare anche alla soluzione dell'equazione

x3 + x+ 1 = O?

273

I

: SEZIONE

0

Al goritm i e program m azi one

===========================~:::::......

Proviamo insieme Troviamo la dimensione del cartoncino Franco vuole incollare su un cartoncino una fotografia rettangolare di dimensioni 22 cm x 15 cm. Attorno alla fotografia deve restare una cornice larga 3 cm, come mostrato in figura. Oual l'area del cartoncino?

e

A 588 cm 2 B 525 cm 2 C 504 cm 2 D 450 cm 2 [Prove INVALS/ matematica S52 2016-2017]

Applichiamo la metodologia top-down. Problema Trovare l'area del cartoncino

e

L'area data dalla somma dell 'area della foto e l'area della cornice.

t

t

Sottoproblema Trovare l'area della fotografia: 22 X 15

Sottoproblema Trovare l'area della cornice

e

L'area data dalla somma delle aree di quattro quadrati di 3 cm di lato, due rettangoli 3 cm x 15 cm e due rettangoli 3 cm x 22 cm.

I

t Sottoproblema Trovare l'area del quadrato: 3 x 3

Sottoproblema Trovare l'area del rettangolo: 3 x 15

Sottoproblema Trovare l'area del rettangolo: 3 x 22

Proviamo adesso a risolvere lo stesso problema con metodologia bottom-up. Trovare l'area della fotografia : 22 X 15

Trovare l'area del quadrato: 3 x 3

Trovare l'area del rettangolo: 3 X 15

I t

moltiplicare per 2

I

moltiplicare per 4

Trovare l'area del rettangolo: 3 X 22

moltiplicare per 2

t Sommare le aree trovate

I

Ora prova tu! Aiuta Franco a trovare ii cartoncino giusto

274

e la superficie



Seguen do la strategia proposta, trova la soluzione del problema di Franco: qual del cartoncino che gli occorre?



Non esiste un'unica strategia per risolvere un problema: trova un altro modo per determinare la superficie del cartoncino diverso da quelli descritti nel testo.



Quale potrebbe essere, secondo te, una soluzione brute-force per questo problema?

Problem so lving e algoritmi

CAPITOLO

LA MODELLIZZAZIONE DEL PROBLEMA Consideriamo adesso questo problema di fisica: Due treni sono partiti alla stessa ora rispettivamente da Milano e da Napoli. II treno partito da Milano viaggia a una velocita costante di 155 hmlh, mentre il treno partito da Napoli viaggia a una velocita costante di 230 hm/h. Sapendo che la distanza tra Milano e Napoli e 770 km, calcola dopa quanta tempo si incroceranno. Per risolvere questo problema non ci serve sapere quale motore utilizzano i due treni o quanti passeggeri trasportano. Ci basta conoscere la direzione e la velocita di entrambi e la lunghezza complessiva della tratta . Una volta trovata la soluzione , questa e valida per qualunque problema simile, anche se i due mezzi non fossero treni ma biciclette, o se il percorso fosse quello che collega Roma a Pavia , invece che Milano a Napoli. M odellizzare un problema significa crearne una rappresentazione sempli ficata (modello), che contenga gli elementi utili alla sua soluzione e permetta di fare previsioni coerenti con le osservazioni effettuate, ossia di ottenere i valori attesi (output) in base ai dati forniti (input).

Un modello, quindi, e un'astrazione. Per costruirlo si usano simboli e si ricavano regole che devono essere indipendenti dal singolo caso esaminato. Il modello cosl ottenuto sara allora generale e potremo applicarlo a ogni caso specifico, assegnando ai simboli i valori osservati e applicando a essi la strategia risolutiva stabilita nella fase di problem solving.

Alcuni giochi, come per esempio battaglia navale, la pian t a d i una citta, un simulatore d i volo, sono tutti de i m ode ll i. Ri esci a trovare al tr i esemp i?

Proviamo insieme Cerch1amo la tariffa piu conveniente Nel 2008 un gestore telefonico aveva proposto a Marcella tre possibili tariffe mensili per le telefonate nazionali da telefono fisso. Tariffa 1: telefonate a 26 centesimi di euro l'una . Tariffa 2: 30 euro con chiamate illimitate senza ulteriore spesa . Tariffa 3: 10 euro di spesa fissa piu 15 centesim i di euro per ogni telefonata . Esiste una tariffa che conviene sempre piu delle altre? [Prove INVAL5/ matematica 552 2016-201 7]

Per rispondere al quesito, ii problema puo essere modellizzato utilizzando le formule seguenti, che esprimono per ciascuna tariffa ii costo C in euro, in funzione del numero n di telefonate effettuate.

= 0,26 · n 2: C = 30 3: C = 10 + 0,15

Tariffa 1: C Tariffa Tariffa

•n

e

Dopo aver analizzato ii problema, Marcella afferma che la tariffa 1 in ogni caso la piu conveniente. Marcella ha trovato una soluzione, ma sbaglia . Perche? Per verificare la soluzione trovata da Marcella basta scegliere dei valori, sostituirli a lie formule che modellizzano le tariffe e verificare quanta afferma .

130

33,8

30

29,5

Abbiamo trovato un esempio che confuta la soluzione di Marcella : se si effettuano 130 telefonate, la tariffa 3 risulta la piu conveniente .

275

I

SEZIONE

0

Algoritm i e pro gramma zio ne

Ora prova tu• Aiuta Marcella a risparmiare •

Risolvi ii problema delle tariffe telefon iche individuando q uella p iu conveniente per Marcella . Ti manca pero un dato, che dovrai chiedere diret tam ente a le i.



Puoi trovare una soluzione generale che non dipenda dalle ab itudin i di Marcella?

10.2 GLI ALGORITMI Per esprimere in modo sistematico come arrivare a una possibile soluzione di un problema , introduciamo un concetto basilare in informatica , quello di algoritmo . •

e

Un algoritmo una sequenza finita di passi per risolvere un determinato problema.

I passi di un algoritmo devono essere non ambigui: in ogni momenta deve essere chiaro quale di essi va eseguito e come. L'esecuzione dell 'algoritmo e infatti affidata all'esecutore che , come abbiamo visto, non deve prendere decisioni in merito alla strategia risolutiva del problema. Dobbiamo prestare particolare attenzione al concetto di sequenza finita : un algoritmo e composto da una sequenza di istruzioni , ma questa sequenza prima o poi deve terminare. In altre parole , le istruzioni non possono procedere all 'infinito, anche se il loro numero puo essere molto grande. La loro esecuzione, una dopo l'altra, deve portare alla soluzione del problema.

LE CARATTERISTICHE DI UN ALGORITMO Un algoritmo, per essere definito tale, deve avere le proprieta che seguono.

Scrivi un algoritmo per indossare i guanti e controlla che abbia tutte le caratteristiche elencate nel testo.

• Deve essere elementare : nessuna delle istruzioni che lo compongono sideve pater scomporre in istruzioni piu semplici. • Deve essere non ambiguo : le istruzioni devono essere interpretate senza incertezze , e devono esistere un solo punto di inizio e una sola terminazione . • Deve contenere un numero finito di istruzioni. • Deve essere completo: deve cioe prevedere tutti i possibili casi del problema e indicare come procedere in ciascuno di essi. • Deve essere generale , ovvero risolvere tutti i problemi che hanno la stessa struttura e differiscono solo per elementi legati ai singoli casi specifici. • Deve essere deterministico : in ogni istante l'esecutore deve pater eseguire una e una sola azione; eseguendo l'algoritmo una seconda volta con gli stessi dati di input , si deve ottenere lo stesso risultato. • La sua esecuzione deve , prima o poi, terminare. Dobbiamo infine ricordare che nessun algoritmo e in grado di svolgere compiti non previsti nella sua progettazione.

L'EFFICIENZA DI UN ALGORITMO Un algoritmo deve essere pensato per utilizzare la quantita minima di risorse . Le risorse coinvolte sono di due tipi: • la quantita di memoria impiegata per immagazzinare i dati; • il tempo di esecuzione , che dipende dal numero di istruzioni da eseguire.

276

Problem solving e algoritmi

CAPITOLO

L efficienza di un algoritmo e inversamente proporzionale alla quantita di ri-

sorse che richiede . Poiche, in generale , ci sono piu algoritmi che risolvono uno stesso problema , si cerca quello piu efficiente, quello cioe la cui esecuzione richiede meno tempo di calcolo o meno memoria . Non sempre e possibile minimizzarli entrambi: se diminuisce il tempo di esecuzione, spesso aumenta la memoria utilizzata e viceversa. La scelta tra quale tipo di risorsa privilegiare viene effettuata caso per caso.

Proviamo insieme Progettiamo

n a gor· m

per calcolare l'area di un triangolo qualsiasi

Come abbiamo visto, per progettare un algoritmo e necessario anzitutto analizzare ii problema che vogliamo risolvere, individuare cioe i dati che ci occorrono e la strategia risolutiva. In questo caso ii problema e semplice, vediamo come svolgerne l'analisi. •

Per calcolare l'area di un triangolo, la cui formula e A = (bh)/2, abbiamo bisogno delle misure della base (b) e dell'altezza (h). L'algoritmo dovra quindi richiedere in input questi dati e procedera poi al calcolo dell'area A applicando la formula.

• Enecessario che siano rispettati i vincoli (impliciti):

i dati forniti in input devono essere numeri reali, ma non possono essere negativi, perche rappresentano misure di segmenti.



Dobbiamo decidere come affrontare un eventuale errore: l'algoritmo deve avvisare l'utente e terminare oppure deve continuare a richiedere i dati in input finche non gli vengono forniti dei valori validi? La scelta, in assenza di richie ste specifiche, spetta a noi .



lnfine, l'algoritmo deve comunicare ii risultato (output) : senza quest'ultimo passaggio, pur facendo quello che deve fare, e del tutto inutile.

E importante

sottolineare che l'algoritmo deve essere completo, cioe prevedere qualsiasi eventuale errore l'utente possa commettere e, possibilmente, segnalarlo o correggerlo. Non ci deve essere alcuna eventualita non prevista, altrimenti l'algoritmo potrebbe non terminare: nel qual caso, per quanto si e detto, non sarebbe un algoritmo!

LE VARIABILI Un algoritmo svolge sempre lo stesso compito, ma la risposta che fornisce e in generale diversa a seconda dell 'input che riceve. Lalgoritmo, infatti, esegue una sequenza di istruzioni e, nel farlo , manipola dei dati. Questi dati vengono memorizzati temporaneamente in variabili, che possiamo pensare come una sorta di scatole a cui possiamo dare dei nomi per poterle riutilizzare. •

e

In un algoritmo una variabile un contenitore identificato da un nome e al quale possibile assegnare un valore di un certo tipo stabilito; questo valore modificabile, appunto variabile, nel corso dell'algoritmo.

e

Fig. 2 Un esempio di variabili coinvolte nell'esecuzione di un'add izione .

e

Consideriamo il caso dell 'addizione di due numeri. Possiamo utilizzare due variabili per i due addendi , chiamandole, per esempio, numeral e numero2. Diremo quindi al nostro algoritmo di calcolare la loro somma e di memorizzare il risu ltato in una terza variabile, che chiamiamo somma. Se le variabili numeral e numero2, al momenta di eseguire l'addizione, contengono rispettivamente i valori 2 e 3, al termine dell 'esecuzione dell'algoritmo la variabile somma dovra contenere il valore 5 (Fig . 2).

numeral

numero2

somma

277

I

SEZIONE

D

A lgoritmi e p rogrammazio ne

I nomi assegnati alle variabili devono seguire delle regale , che riguardano principalmente l'insieme dei caratteri ammessi. In particolare: • il name deve essere costituito da caratteri alfanumerici (lettere o numeri), senza caratteri speciali eccetto il trattino basso_ (underscore); sono quindi vietati spazi, punti esclamativi, @ e altro; • il carattere iniziale del name di una variabile non puo essere un numero.

Per ciascuno deg Ii esempi di nomi di variabi li vietati indica perche non ammesso .

e

Consideriamo gli esempi seguenti. • Nomi di variabili ammessi : somma , prodotto , numeral , area del cerchio , areaDelCerchio • Nomi di variabil i vietati : somma di due numeri , lnumero , area+del+cerchio , 5 Infine, e consigliabile che i nomi delle variabili siano facilmente memorizzabili e abbiano un nesso chiaro con i valori che devono contenere.

LE COSTANTI In un algoritmo, oltre alle variabili, e possibile utilizzare le costanti . •

e

In un algoritmo una costante un contenito re identificato da un nome, che contiene un valore di un certo tipo stabilito; questo valore non puo essere modificato, ossia resta costante, nel co rso dell 'algoritmo.

Le variabili vengono utilizzate per tutti i dati che non sono noti quando si progetta l'algoritmo e che, durante la sua esecuzione, possono cambiare: per esempio, un input immesso dall'utente o il risultato di un calcolo. Nelle materie scientifiche spesso si utilizzano delle costanti. Sai fare un esempio? In fisica si studia la forza peso data dalla relazione P = mg. lndividua le va riabili e le costanti presenti nella formula.

Le costanti sono utilizzate, viceversa, per quei dati che hanno un valore fisso e noto fin dall'inizio. Se, per esempio, volessimo calcolare l'area del cerchio, ci servirebbe la costante matematica 1r: invece di riscrivere per tutto l'algoritmo il suo valore 3,14159 ... (fino alla precisione desiderata), potremmo memorizzarlo in una costante chiamata, per esempio, PI, che utilizzeremo ogni volta che ne avremo bisogno chiamandola per name , esattamente come si fa in matematica . I nomi assegnati alle costanti seguono le stesse regale gia viste per le variabili, con la convenzione, pero , di scriverne il name in maiuscolo (per esempio, PI) , in modo da essere facilmente identificabili come costanti. Le variabili sono t ipizzate, possiedono cioe un tipo specifico: sono, quindi , dei contenitori a cui assegniamo un name e al cui interno, come risu lta dalla definizione , possiamo memorizzare dati di un determinato tipo . I TIPI DI DATI



II tipo di un dato

e l'insieme dei valori che puo assumere.

Ci sono diversi tipi di dati, vediamo quali. • Tipo numerico intero , cioe un numero intern: 4 , 5 , - 6, • Tipo numerico reale , ossia un numero decimale reale:

11 ,

17.5, -JI., ...

• Tipo alfanumerico : chiamati di solito strin ghe , sono sequenze di caratteri

qualsiasi (compresi numeri e simboli) paste tra virgolette: 11 prov a 11 , 11 que sta e una stringa 11 , . •• • Tipo carattere , cioe sono singoli caratteri posti tra apici: 'a', 'x','' (lo spazio), '3', ... • Tipo booleano : possono assumere solo i valori vero o falso (true, false) .

Sano utili per l'algebra booleana, che abbiamo incontrato nel Capitola 2, e per i risultati delle operazioni di confronto, che vedremo tra poco.

278

Problem solving e algoritmi

Per evitare errori nella memorizzazione delle variabili, facciamo attenzione alle seguenti caratteristiche della lo ro sintassi. • II separatore decimale da util izzare e sempre ii punto: si scrive 12.4 e non 12,4. • Un numero intero e an c he un numero de cimale: 6 = 6.0. • L'uso delle virgolette cambi a ii tipo dei dati: "prova" e una stringa, mentre prova e un no me di variabile, perche no n e tra virgolette.

CAPITOLO

• Analogamente, 'x' e un carattere, mentre x e un nome di variabile, perche non ha gli apici, e "x" e una stringa composta da un solo carattere perche e tra virgolette. • Anche '3' e un carattere, mentre 3 e un numero intero (o reale) e "3" e una stringa composta da un solo carattere. • Poiche vero e falso (true, false) sono due valori booleani, non e possibile dare questi nomi a delle varia b ili .

Un dato di un certo tipo pub , in generale, essere inserito solo in una variabile di quel tipo (ci sono delle eccezioni, di cui parleremo nel Capitola 12) Le stesse considerazioni valgono per le costanti.

GLI OPERATOR! Per elaborare i dati servono, oltre che va riabili e costanti, anche dei simboli per rappresentare le operazioni che vogliamo compiere su di esse . •

Gli operatori so no simboli che rapprese ntano funzion i le quali, applicate a un insieme di dati di un tipo determinato, producono un risultato.

Ci sono diversi tipi di operatori, vediamo quali . Lassegnamento e un operatore fondamentale; si indica con il simbolo = (uguale) e viene utilizzato per assegnare un valore a una variabile o a una costante. ASSEGNAMENTO

Se, per esempio, scriviamo: numeral = 3

#CLIP Segui ii video: Assegnamento d i una va riabile

dopo l'esecu zione di questa istruzione, la variabile chiamata numera l contern1 il valore 3. Se in seguito, senza che nel frattempo il valore della variabile numera l sia stato modifica to, si esegue l'istruzione: nume r o2 = numera l alla variabile chiam ata numero2 verra assegnato il valore con tenuto nella variabile numera l , quindi anche nume ro2 conterra il valore 3. Modificando successivamente il valore di n ume r a l non modificheremo il valore di numero2. Dopo il comando visto sopra , le variabili nume r a l e numero 2 contengono lo stesso valore , ma sono indipendenti. Se modifichiamo il contenuto di numeral , numero2 restera uguale, e viceversa. Consideriamo adesso l'istruzione: numero3 =numera l + numero2 Questo assegnamento produce il seguente risu ltato: • viene calcolato il valore a destra , cioe la somma del valore contenuto in nu mero l e del valore contenuto in numero2 (nel n ostro esempio e 3 in entrambi i casi); • il risultato e memorizzato in numero3 , che a questo punto conterra 6 . Se , dopo aver eseguito le istru zioni precedenti , eseguissimo l'assegnazione: numeroS = nume r o4

Scrivi le istruzio ni necessarie pe r sca mbi are tr a lo ro ii co nte nut o de\le va ria bili numeral e

numero3 . T i occo rrono tre istruzio ni e una variabil e aggiu ntiva. Al la f ine de ll'algo rit mo, la variabile numeral dovra contene re 6 e numero3 d ovra co ntenere 3.

279

SEZIONE

D

Al goritmi e programmazione

commetteremmo un grave errore: infatti non abbiamo assegnato alcun valore alla variabile numero4. Nel caso peggiore, la variabile numero4 e stata usata in elaborazioni precedenti e contiene un valore a noi ignoto, e indesiderato, che in questo modo verrebbe introdotto nel nostro algoritmo.

OPERATOR! DI BASE

Gli operatori matematici implementano le operazioni di

addizione, sottrazione, moltiplicazione, divisione tra numeri (interi e reali)

con le stesse priorita che hanno in matematica. Sano rappresentati dai simboli che conosciamo gia; il simbolo +, pen':>, viene utilizzato anche per l'operazione di concatenazione tra due stringhe, che produce la stringa ottenuta aggiungendo la seconda alla prima senza interporre spazi tra le due.

+

Addizione

Esegue l'addizione tra due numeri

4

+ 3 7

-

"Questa e II + "un esempio" Questo e un esempio "Il risultato e II + '4' Il risultato e 4

Concatenazione

Concatena due stringhe, una stringa e un carattere, una stringa e ii contenuto di una variabile

Sottrazione

Esegue la sottrazione tra due numeri

4 -

3

Esegue la moltiplicazione tra due numeri

4

*

3

Divisione

Esegue la divisione tra due numeri

4

I

3

Modulo

Resto della divisione tra due numeri

4

% 3

1 Moltiplicazione

*

12

I

1.33333

%

1

Gli operatori di confronto comparano due valori (interi o reali) e restituiscono un valore booleano (vero e falso).

OPERATOR! DI CONFRONTO

--

Uguaglianza

Restituisce ii valore sioni sono uguali

vero se e solo se le due espres- 3

--

2

falso

"c" -- "c" I

!=

vero Diverso

Restituisce ii valore sioni sono diverse

vero se e solo se le due espres- 3 !=

2

vero nc"

!=

"c"

falso <

>=

280

Restituisce ii valore vero see solo se ii numero a si- 3 nistra minore di quello a destra

< 4

Minore o uguale

Restituisce ii valore vero se e solo se ii numero a si- 3 nistra minore o uguale a quello a destra

3

Restituisce ii valore vero see solo se ii numero a si- 3 nistra maggiore o uguale a quello a destra

>= 3

Minore

Maggiore o uguale

e

vero

e e e

vero falso vero

Problem solving e algoritmi

CAPITOLO

Gli operatori booleani implementano le operazioni booleane AND, OR, NOT. Si applicano a valori booleani (vero e falso) e restituiscono un valore booleano. Hanno due argomenti, tranne NOT che ne ha uno solo.

OPERATOR! BOOLEAN!

&&















a

AND booleano

'.l• •

~IY=,.~-rf59~~~11f~~.-A~

:C2~. ~~~·1(~10 'l~--~ ""j}_ ~ t;



,

~~- :,

.;,_~~ ~ ~~1~ -~'"'-~ Esempio Restituisce ii valore vero see solo se i due argomenti vero && falso hanno entrambi valore vero falso

11

OR booleano

Restituisce ii valore vero see solo se almeno uno degli argomenti ha valore vero

vero

!

NOT booleano

lnverte ii valore di verita dell'argomento

!vero

11

falso vero falso

Consideriamo una variabile intera chiamata nurnero. Ouando scriviamo nurnero = O stiamo assegnando alla variabile nurnero un determinato valore, in questo caso ii numero zero.



numero

Ouando scriviamo nurnero == O non assegniamo alcun valore alla variabile nurnero: stiamo control lando se ii suo contenuto e o non e esattamente uguale a zero. In questo caso lo e e l'i- numero struzione nurnero == o restituisce true; nel caso in cui ii valore della variabile nurnero fosse invece diverso da zero, restituirebbe false.

10.3 LA RAPPRESENTAZIONE DEGLI ALGORITMI: I DIAGRAMMI DI FLUSSO Per realizzare una casa, un ingegnere non inizia a costruirla nel cantiere, con la posa del primo mattone : prima dedica del tempo alla sua progettazione. Durante questa fase, svolge i calcoli e prende le decisioni relative a quale sara il suo aspetto finale, alle sue dimensioni, ai materiali da usare, al costo. 11 risultato sara un progetto, ossia un documento redatto prima di iniziare la costruzione vera e propria, che contiene tutte le istruzioni su come effettuare i lavori. Esso deve utilizzare delle convenzioni concordate con le altre persone che partecipano alla costruzione, in modo che tutti possano leggerlo facilmente. In modo del tutto simile, anche in informatica, prima dello sviluppo dell 'algoritmo al computer, si compie una fase preliminare di progettazione. In questa fase si prendono decisioni su come risolvere il problema in esame e su quali strategie adottare. None necessario utilizzare un linguaggio di programmazione: il progetto deve usare un linguaggio che possa essere compreso da persone diverse, ma non ancora dal computer (Fig. 3).

Fig. 3 La fase di progettazione di una app per cellulare inizialmente puo essere una bozza realizzata con carta e penna.

Solo successivamente, partendo dal progetto, il programmatore codifica l'algoritmo in un linguaggio di programmazione. Questa fase di codifica potra essere effettuata anche da un soggetto diverso da chi ha realizzato il progetto.

281

SEZIONE

D

#CLIP Segui ii video: Elementi di un diagramma a blocchi

Algoritmi e programma zio ne

Una delle rappresentazioni di algoritmi piu utilizzate in fase di progettazione e detta a diagrammi di flusso (flowc hart) ed e di natura grafica. Si tratta di un disegno composto da blocchi, che rappresentano le diverse azioni da compiere , collegati da frecce che ne determinano la successione. I blocchi, per convenzione, vengono disegnati in verticale, dall'alto verso il basso, uno sotto l'altro (o affiancati se rappresentano un'alternativa). I blocchi hanno forma diversa a seconda del tipo di azione da compiere : lnizio, Fine, Input , Output e di azione . A questi si aggiungono i blocchi di controllo. Per convenzione, i blocchi di inizio e di fine si indicano con un rettangolo dagli angoli arrotondati contenente la scritta , rispettivamente, lnizio (oppure Start o Main) e Fine (oppure End ) (Fig. 4). IL BLOCCO INIZIO E IL BLOCCO FINE

Fig. 4 I blocchi lnizio e Fine di un flowchart. lnizio

In ogni algoritmo vie uno e un solo blocco lnizio, che indica l'inizio dell'algoritmo. Se manca, o sono piu -di uno, l'esecutore non pub sapere da dove iniziare. Dal blocco di inizio esce un'unica freccia , che lo collega all'istruzione da eseguire per prima: nessuna freccia pub entrare nel blocco di inizio. In modo del tutto speculare, al termine dell'algoritmo c'e uno e un solo blocco Fine, che ne indica il punto di uscita e da cui non pub partire alcuna freccia. In questo caso, perb, le frecce in ingresso possono essere piu di una: come vedremo tra poco, un algoritmo in certi punti pub dividersi in piu percorsi, i quali devono perb raggiungere tutti, alla fine , il blocco che termina l'algoritmo stesso.

Fine

Se il blocco di fine non esistesse, l'algoritmo non terminerebbe e, in base alla definizione , non sarebbe un algoritmo. Fig. 5 I b locchi In p ut e Output in un flowchart.

Input base

Input a/tezza

Peri blocchi di input utilizzeremo l'azione Input (o Leggi o Read ) seguita dal dato che si vuole acquisire ed eventualmente dal nome del dispositivo da cui ricavare l'informazione (tastiera , hard-disk , memoria rimovibile ecc.) e dalla posizione in cui memorizzare il dato letto.

Output area

Peri blocchi di output utilizzeremo invece l'azione Output (o Stam pa o Write) seguita da cib che vogliamo visualizzare ed eventualmente dal nome del dispositivo su cui visualizzarlo (monitor, stampante o altro) o dalla posizione in cui esso si trova.

= (base "' altezza) I

Un blocco di azione e rappresentato da un rettangolo al cui interno vengono descritti un'azione o un gruppo di azioni da eseguire. Alcuni esempi di azioni sono l'assegnazione di una variahile o di una costante oppure il calcolo di una funzione (Fig. 6). I BLOCCHI DI AZIONE

Fig. 6 Un blocco di azione in un fl owchart .

area

I BLOCCHI INPUT E I BLOCCHI OUTPUT Nel corso dell'algoritmo potremo acquisire dati (input) dall'esterno, oppure visualizzare il risultato di un processo (output) all 'esterno. Queste azioni sono descritte all'interno di specifici blocchi rappresentati come parallelogrammi (Fig. 5).

2



Vedremo che, utilizzando soltanto questi blocchi e poco altro, e possibile rappresentare qualsiasi algoritmo.

Ora prova tu! Disegna un flowchart per l'algoritmo che calcola l'area di un triangolo Utilizzando nell'ordine corretto i blocchi di flowchart lnizio, Fine, Input, Output e di azione, prova a realizzare un diagramma di flusso che rappresenti l'a lgoritmo per calcolare l'area di un triangolo. Che cosa ti sembra che manchi? Che cosa vorresti aggiungere?

282

Problem solving e algorit mi

10.4 LE STRUTTURE DI CONTROLLO

CAPITOLO Fig. 7 Una sequenza di istruzioni in un algoritmo.

Finora abbiamo visto istruzioni che si susseguono una dopo l'altra. Formano cioe una sequenza , che e la struttura piu semplice: ogni istruzione costituisce il punto di partenza per l'istruzione successiva. Questi algoritmi si possono rappresentare in un flowchart disponendo i blocchi uno sotto l'altro (Fig. 7).

Input

t Assegnazione

In un algoritmo, pen':>, pub anche capitare di dover scegliere fra due strade distinte. Oppure potrebbe essere necessario ripetere, per un certo numero di volte, un intern gruppo di istruzioni. In questi casi sono necessarie delle strutture che modifichino in modo opportuno la successione delle istruzioni da eseguire. Tali strutture sono essenzialmente di due tipi: la selezione e l 'iterazione .

LA SELEZIONE In un algoritmo la sel ezio ne e una struttura che permette di dividere il cammino in strade diverse in base al risultato di una condizione booleana da valutare . Durante l'esecuzione la condizione viene valutata e, in base al risu ltato, l'algoritmo prende una sola delle strade possibili. In un diagramma di flusso la condizione viene scritta all 'interno di un blocco a forma di rombo, dal quale escono due frecce corrispondenti a ciascuno dei valori possibili della condizione booleana: vero e fal so (Fig. 8).

Assegnazione

t Output

Fig. 8 La se lezione in un flowchart.

Vero

Falso

I

Condizione

7

Proviamo insieme Dato un numero intero positivo, determiniamo se

e pari o dispari

Scriviamo un algoritmo per determinare se un numero intero dato in input e pari o dispari . lnizio • Prima di t utto legg iamo ii numero e lo memorizziamo nella variabile n umero. Leggi numero • Sappiamo che un numero e pari see solo see divisibile per 2, ovvero quando ii resto della div isione per 2 e 0. resto = numero % 2 Utilizziamo quindi l'operatore modulo che restituisce ii resto della divisione tra due numeri e calcoliamo ii resto Falso Vero di nu mero d iviso 2. resto == O • Nel b locco condizione valutiamo la variabile re sto : se r est o e uguale a 0, prendiamo la strada a destra; viceversa, se e Output "ii numero e pari " Output "ii numero e dispari " d iverso da 0, prendiamo la strada a sinistra. • Nel primo caso ii numero e pari, quindi in output visualizziamo la stringa "ii numero Fine e pari" . Nel secondo caso e d ispari e qui ndi avremo in output "ii numero e dispa ri".

Ora prova tu! Completa l'algoritmo

L'algoritmo scritto qui sopra e incompleto, in quanto abbiamo ass un to che ii numero inser ito in input sia intero, ma potrebbe non esserlo. Modifica l'algoritmo in modo t a le da controllare se ii numero e intero . Suggerimento: puoi usare la funzione fl oor, che ha in input un nu mero reale x e ha come output ii numero in tero piu grande che non supera x. Osserva che un numero x e intero see solo se e uguale a floor(x) .

#CLIP Segu i ii video: Proviamo l'algorit mo

283

D

SEZIONE

Se la condizione booleana e sostituita da un'espressione generica che puo dare come risultato un serie (finita) di valori di diversa natura (numeri , caratteri , stringhe ecc.), le strade possibili da associare al risultato dell'espressione sono piu di due. Si puo allora ricorrere alla selezione multipla . LA SELEZIONE MULTIPLA

Fig. 9 La selezione mu ltip la in un flowcha rt.

B C

Algoritmi e programmazion e

Nella selezione multipla, a ogni risultato possibile dell'espressione e associato un diverso cammino dell 'algoritmo . Nell'esecuzione viene valutata l'espressione, posta anche in questo caso all'interno del rombo , e, in base al risultato , viene seguita la strada indicata (Fig. 9). Se uno dei rami non e associato esplicitamente a una soluzione specifica dell'espressione , allora va percorso per esclusione , quando cioe nessuna delle soluzioni associate agli altri rami e corretta: indica quindi il cammino da percorrere di default .

E

D

Fig. 10 La selezione binaria in un flowchart.

Se l'espressione della selezione multipla ha due soli risultati possibili, si parla di selezione binaria (Fig. 10) . Notiamo che la selezione semplice e un caso particolare di selezione binaria , in cui la condizione da valutare e di tipo booleano. LA SELEZIONE BINARIA

B

7

La selezione e indicata anche con la locuzione se ... altrimenti. .. o piu spesso, in inglese, if. .. else ... , che ne indica i due rami.

Proviamo insieme Verifichiamo che una password inserita dall'utente abbia una lunghezza adeguata Un sito chiede di scegliere una password d i lunghezza lnizio compresa tra 8 e 20 caratteri. Scriviamo l'algo ritmo che effettua questa verifica, restituendo un messaggio di errore diverso nel caso in cui la password sia troppo lunga Legg i password o troppo corta .

• •

Nel blocco condizione calcoliamo la lunghezza del la password . Ci sono tre possibilita : la lunghezza inferiore a 8 caratteri, compresa tra 8 e 20 caratteri o supera i 20 caratte ri.

e



t

lniziamo a leggere la password e memorizziamo la nella variabile passwo r d .

e

Nel primo caso, restituiamo l'errore "password troppo corta". Nel secondo caso, restituiamo ii messagg io "password accettata ". Nel terzo caso, restituiamo l'errore "password troppo lunga".

Numero di caratteri

Output "password troppo corta "

> 20

7

Output "password troppo lunga"

8 ::;

e ::;

20

Output "password accettata "

L'ITERAZIONE None sempre detto che, all 'interno di un algoritmo, le istruzioni siano eseguite in ordine e una volta sola. Puo infatti capitare che una sequenza di istruzioni debba essere eseguita piu volte. Cio accade nelle due situazioni seguenti:

Pensa a un'attivita iterativa che ti capita di compiere spesso.

284

1. si deve eseguire un certo insieme di istruzioni fino a quando non si verifica un certo evento (condizione); per esempio , cerco una canzone su un lettore multimediale , saltando alla canzone successiva finche non la trovo. Non so quante volte dovro ripetere l'operazione "saltare alla canzone successiva", so solo quando devo smettere di farlo ; 2. si deve eseguire un certo insieme di istruzioni un numero prefissato di volte; per esempio, devo inserire nella mia playlist dieci canzoni; l'istruzione da ripetere e "inserire una canzone" e so esattamente quante volte devo eseguirla.

Pro blem so lving e algoritmi

CAPITOLO

Quando si devono eseguire delle istruzioni piu volte, si parla di iterazione o anche di ciclo. Literazione e una struttura che serve per evitare di copiare piu volte dei blocchi di istruzioni e permette la loro ripetizione. Un elemento necessario nelle iterazioni e una condizione, chiamata condizione di permanenza , che indichi quante volte ripetere il blocco di istruzioni. Questa condizione pub essere valutata prima o dopa l'esecuzione delle istruzioni del ciclo. 1

Quando la condizione di permanenza viene valutata prima di entrare nel ciclo, l'iterazione si dice pre-condizionale . Se la condizione e soddisfatta, ossia se il suo risultato e vero, allora il blocco di istruzioni dell'iterazione viene eseguito, dopa di che la condizione viene di nuovo valutata. Se, al contrario, la condizione none soddisfatta (falso ), non viene eseguita alcuna istruzione dell'iterazione. L ITERAZIONE PRE-CONDIZIONALE

Questa iterazione viene anche denominata iterazione Mentre (While), perche si pub descrivere nel linguaggio naturale come "Mentre fai " In un diagramma a blocchi, essa viene rappresentata come in Fig. 11 .

Fig. 11 L'iterazione precondiziona le Mentre.

Falso

L'iterazione Mentre e utilizzata, per esempio, quando la condizione di permanenza e necessaria per determinare se le istruzioni del ciclo debbano essere eseguite. Immaginiamo di voler accendere una lampadina e di trovare diversi interruttori, senza sapere quale sia quello giusto. Se la lampadina e gia accesa, non si deve fare nulla. Altrimenti, finche la lampadina e spenta dobbiamo provare i pulsanti in successione. Trovato quello giusto, la lampadina si accende e smettiamo.

Mentre

lstruzioni da ripetere

Quando il numero di iterazioni e noto a priori si parla di iterazione pre-condizionale definita. Possiamo implementarla usando un contatore (counter in inglese) , cioe una variabile che tiene il canto di quante volte viene eseguita una istruzione (o un gruppo di istruzioni). In un ciclo questa variabile richiede tre passaggi, tutti necessari. L'ITERAZIONE PRE-CONDIZIONALE DEFINITA

• lnizializzazione : a un contatore va assegnato il primo valore che deve assu-

mere (di solito e 0). • Valutazione : all'interno della condizione bisogna valutare il valore del contatore, confrontandolo ogni volta con un valore soglia , che rappresenta il numero di volte in cui va eseguito il ciclo . • lncremento (o decremento): durante il ciclo il valore del contatore vaincrementato (o decrementato, se si conta a ritroso). Vediamo come rappresentare i contatori nei diagrammi di flusso (Fig. 12). All'inizio del ciclo creiamo una variabile contatore a cui assegniamo valore 0, perche non abbiamo ancora eseguito alcuna istruzione. Utilizziamo poi una variabile max per memorizzare il valore di soglia, per esempio il numero N. All'interno del ciclo incrementeremo infine la variabile cont a tore di una unita ogni volta, utilizzando l'istruzione contatore = contatore + 1 , con la quale si incrementa di 1 il valore di contatore. La condizione di permanenza dell 'iterazione e data dal confronto tra i valori delle variabili contatore e max. Le istruzioni del ciclo verranno infatti eseguite finche contatore < max, cioe in totale N volte. Piu avanti vedremo che le iterazioni pre-condizionali definite si possono implementare con iterazioni Mentre e anche con un altro tipo di iterazioni, chiamate iterazioni For.

Fig. 12 II contatore di una iterazione.

contatore = 0

max=N

Falso

con ta tore

lstruzioni da ripetere

contatore

= contatore

+1

285

SEZIONE

0

Algoritm i e programmaz ione

1

Quando la condizione di permanenza viene valutata dopo aver eseguito ii blocco di istruzioni, l'iterazione si dice postcondizionale. Se la condizione e. soddisfatta (vero), allora il blocco dell'iterazione viene eseguito di nuovo. Se, viceversa, la condizione none. soddisfatta (fal so), si esce dall 'iterazione. L ITERAZIONE POST·CONDIZIONALE

Fig. 13 L'iterazione postcondiziona le Fai.

lstruzioni da ripetere

Vero

Fai Falso

Questa iterazione viene anche detta iterazione Fai ... finche (Do ... While), perche si pub descrivere come Fai finche . In un diagramma a blocchi, essa viene rappresentata come in Fig . 13. Notiamo che, a differenza dell 'iterazione Mentre , nell 'iterazione Fai le istruzioni del ciclo vengono eseguite sempre almeno una volta. l:iterazione Fai e. usata tu tte le volte in cui, per poter valu tare la condizione , e. necessario aver eseguito le istruzioni del ciclo. Se, per esempio, dovessimo effettuare ripetutamente un gruppo di cinque misure finche l'errore nelle misure sia infer iore a una soglia fissata, dovremmo anzitutto compiere una serie di misure e verificare se l'errore e. maggiore o minore del valore soglia. Nel primo caso , la condizione di permanenza sarebbe soddisfatta , quindi dovremmo effettuare nuovamente le cinque misure . Nel secondo caso , potremmo invece procedere con le istruzioni successive.

Proviamo insieme Calcoliamo l'area di un triangolo qualsiasi Possiamo completare ii diagramma di flusso dell'algoritmo per calcolare l'area di un triangolo qualsiasi con i controlli relativi all'input. Osserviamo che i numeri forniti dall'esterno rappresentano delle lunghezze d i segmenti: e percio necessario che siano positivi. Dobbiamo quindi chiederci se ii numero inserito e non negativo e, in caso contrario, dovremo chiedere che ne venga immesso un altro finche no n ne verra fornito lnizio uno non negativo . Ovviamente, non possiamo sapere se ii numero e adeguato prima di leggerlo . Da queste considerazioni capiamo che, per valutare ii numero, ci Input base occorre un'iterazione post-condizionale. Ouanto detto vale sia per la base sia per l'altezza . Disegniamo quindi i relativ i blocchi da inserire ne l diagramma di flusso . ciclo post-condizionale: viene iterata la richiesta del valore della base, finche ii valore fornito non e positivo

base< 0

ciclo post-condi zionale: viene iterata la ri chiesta del valore dell 'altezza, finche ii valore fornito non e positivo

tFalso

Input altezza Input base

Input altezza Vero altezza < 0 Vero

base < 0

altezza < 0 tFalso

Falso

Falso

Adesso abbiamo tutti i blocchi del nostro diagrarnma d i flusso e possiamo comporli nell'ordine opportuno per ottenere l'algoritmo completo: leggiamo i valori di base e al tez za, calcoliamo l'are a, stampiamo ii risultato. II diagramma di flusso completo e disegnato a destra .

286

area

= (base * altezza) I

Output area

Fine

2

-

Problem solving e algoritmi

I .

I

CAPITO LO

:

#CLIP

Ora prova tu! Messaggi d'errore Modifica l'algoritmo in modo che visualizzi un messaggio di errore quando vengono inseriti dati non adeguati . Aggiungi dei blocchi di output, come i seguenti, in corrispondenza dei casi appropriati.

Segui ii video: Calcoliamo l'area: l'algoritmo

Output "valore base errata! " Output "valare altezza errata!"



Riesci a individuare i punti in cui inserire i blocchi nel diagramma?



Completa ii diagramma di flusso con gli elementi necessari per visualizzare i messaggi di errore indicati .

,

DOI

Nell'esempio precedente abbiamo utilizzato un'iterazione post-condizionale, dal momenta che non possiamo sapere se il numero immesso e positivo prima che esso venga fornito dall'utente . Vi sono, pero, anche problemi che possono essere risolti sia con iterazioni pre-condizionali sia con iterazioni post-condizionali.

Ora prova tu! Scrivi due algoritmi che, dati quattro nurneri in input, contino quelli positivi Nel primo algoritmo utilizza l'iterazione pre-condizionale, nel secondo quella post-condizionale.

IL TEOREMA DI BOHM-JACOPINI Si puo dimostrare che le tre strutture viste finora (sequenza, selezione e iterazione) sono sufficienti per progettare qualsiasi algoritmo . Lo afferma il teorema di Bohm-Jacopini, enunciato nel 1966 dai due informatici italiani dai quale prende il nome. •

Oualunque algoritmo puo essere implementato utilizzando tre sole strutture: la sequenza , la selezione e l'iterazione, da applicare ricorsivamente alla composizione di istruzioni elernentari.

10.5 LA RAPPRESENTAZIONE DEGLI ALGORITMI: LA PSEUDOCODIFICA Finora abbiamo rappresentato gli argoritmi utilizzando il forma lismo dei d iagrammi di flusso: none pero l'unico. Un altro modo per rappresentare gli algoritmi e la pseudocodifica . Essa si basa su quello che viene chiamato pseudocodice: un linguaggio che sta, in un certo senso, a meta strada frail linguaggio naturale e un linguaggio comprensibile alle macchine. Lo pseudocodice utilizza parole chiave della lingua corrente, ma con regale e costrutti simili a quelli dei linguaggi di programmazione. Dallo pseudocodice e comunque possibile ottenere in maniera semplificata il codice sorgente in un linguaggio di programmazione, tramite un'attivita chiamata traduzione. La pseudocodifica , tuttavia, non ha regale del tutto rigide, per cui non esiste una stesura errata di pseudocodice e se ne possono dare piu versioni.

287

SEZIONE

D

Algoritm i e programmazione

Proviamo insieme Scriviamo in pseudocodice l'algoritmo per l'area di un triangolo Vogliamo esprimere in pseudocodice l'algoritmo rappresentat o nell'ultimo esercizio guidato del paragrafo precedente. Come possiamo vedere, a ogn i blocco del diagramma di flusso corrisponde una pseudoistruzione molto simile. Osserviamo quella che viene chiamata indentazione: Funzione lnizio ogni volta che delle istruzioni sono annidate all'interno Cicio di un blocco, vengono spostate a destra . Nell'esempio, 0 Input base tutte le istruzioni del nostro algoritmo sono spostate 1 2 a destra rispetto ai blocchi di in izio e fine; le istruzioFai base 2) I I (2 < o) e False e. Se numeral == 2 e numera2 == 3 allora numeral== numera2 e False 25. Riscrivi in modo corretto le proprieta che deve avere un algoritmo per essere definite tale. a. A ogni passo dell'algoritmo deve essere possibile scomporre la singola istruzione in istruzioni piu semplici. b. Le istruzioni devono comunque essere interpretate in modo ambiguo. c. Deve contenere infinite istruzioni. d. Pua avere piu punti di inizio e una sola term1naz1one. e. L'esecuzione puo non terminare.

'

Domande aperte Rispondi in un massimo di tre righe.

26. O uali sono le fasi da seguire per la risoluzione d i un problema?

27. Che caratter istiche devono avere le istruzioni d i un algoritmo?

Rappresenta tram ite fl owchart e pseudocod ice gli algoritmi che risolvono i problemi seguenti. 34. Calcolare la lunghezza della circonferenza ii cui raggio ha lunghezza assegnata.

35. Dato un angolo di un triangolo, calcolare ii valore del corrispondente angolo esterno.

36. Date le coordinate di due punti, calcolare la distanza tra essi. 37. Dati due punti su un piano cartesiano ortogonale, con differenti ascisse, calcolare ii coeffic iente angolare della retta passante per i due punti .

38. Risolvere un'equazione di primo grado. 39. Dati massa e volume di un corpo, calcolare la densita. 40. Effettuare uno sconto del 10% per importi maggiori di 100 €. 41. Calcolare la velocita di un veicolo dati lo spazio percorso e l'intervallo di tempo impiegato per percorrerlo.

28. Oua l e la d ifferenza tra le metodologie risolutive top-down e bottom-up?

42. Calcolare la forza peso di un corpo di massa 70 kg sulla Luna.

29. Che cos'e ii tipo di un dato? O uali sono i tipi di dato che conosci?

43. Effettuare dieci misurazioni di temperatura e calcolare la media dei valori rilevati.

30. lndica due t ipologie d i rappresentazione di un algoritmo e descrivile .

44. Dati tre numeri interi, individuare ii massimo .



45. Date le misure di tre segmenti, verificare che formino un triangolo e visualizzare in output ii tipo di triangolo rappresentato (equilatero, isoscele, scaleno).

ABI LITA

31. Applica la metodologia top-down al problema "determinare la superficie totale di un parallelep ipedo, conoscendo le dimensioni di base e altezza del so lido". 32. Realizza l'algoritmo che permette di risolvere ii problema "prenotare un tavolo per quattro persone a un ristorante". 33. Realizza l'algoritmo che permette di risolvere ii problema "acquistare un biglietto aereo per una persona con partenza da Milano e arrive a New York ii 16 luglio del prossimo anno".

300

Applicazioni alla matematica e alla fisica

46. Dato un numero in ingresso, stabilire se o d ispari.

e pari

47. Dato un numero in ingresso, stampare tutti i numeri pari maggiori di 1 e minori o uguali a esso. 48. Dati due numeri in ingresso, stampare tutti i numeri dispari compresi tra ii minore e ii maggiore dei due.

49. Date le misure di quattro segmenti, verificare che formino un rettangolo e non un quadrato.

Problem solvin

• COMPETENZE 50. Scrivi un algoritmo che permetta di valutare la frequenza cardia ca in base ai valori a riposo forniti in input secondo la seguente tabella. Bradicardia Normale Tachicardia

Minore di 60 battiti al minuto Compresa tra 60 e 100 battiti al minuto Maggiore di 100 battiti al minuto

51. Una palestra propane ai propri clienti differenti abbonamenti, con le tariffe in figura . ABBONAMENTO

Scrivi un algoritmo che, in base a lla scelta delta tipologia di abbonamento, visualizzi l'importo da pagare.

52. Un quadrato e formate da due quadrati A e B e da un poligono C, come mostrato in figura. L'area di A e 16 e

A

B

quella di B e 9. C Spiega la metodologia risolutiva top-down che permette di calcolare ii perimetro del poligono C. [Prove INVAL5/ matematica 552 2015-2016, adattamento per/' informatica] 53.

Costruiamo l'algoritmo per

~ calcolare ii conto della spesa.

54. Per frequentare una palestra, Paolo deve pagare quest'anno una quota fissa di 60 € e 5 € per ogni ingresso. a. Modellizza ii problema attraverso una formula che esprima ii costo C de lla palestra in funzione del numero n di ingressi. b. Paolo ha a disposizione 200 €. Se si iscrive ii numero massimo di alla palestra, qual ingressi che potra effettuare quest'anno?

e

Scrivi i dati a disposizione, la soluzione da ricercare, i vinco li e le azioni da compiere per risolvere ii problema. [Prove INVAL5/ matematica 552 2013-2014, adattamento per /'informatica]

e al oritmi

55. Le persone, durante le attivita sportive, non dovrebbero superare una determinata frequenza del battito cardiaco, ii cui valore varia in funzione dell'eta. II numero massimo di battiti al minuto che non dovrebbe essere superato (frequenza cardiaca massima consigliata) si puo calcolare sottraendo a 220 l'eta x del soggetto. lnoltre, affinche un allenamento in palestra sia efficace, ii numero y dei battiti dovrebbe essere mantenuto in un intervallo compreso tra ii 70% e ii 90% della frequenza cardiaca massima consigliata. Scrivi un algoritmo che permetta di calcolare ii numero di battiti minimi e massimi da mantenere in un allenamento efficace. [Prove INVAL5/ matematica 552 2013-2014, adattamento per/' informatica] 56. Un parcheggio propane ai clienti tre tariffe. • Tariffa A: 15 € per tutta la giornata (24 ore) • Tariffa B: 1 € l'ora • Tariffa C: la prima ora gratis e 1,20 € per ogni ora successiva. a. Scrivi un algoritmo che, in base alle o re di parcheggio, calcoli la tariff a piu conveniente . b. Mario deve lasciare l'auto al parcheggio per 8 ore. Quale tariffa gli conv iene sceg liere? lnserisci ii va lore in input e veri fi ca la va lidi ta della soluzione proposta dal tuo algorit mo. [Prove INVAL5/ matematica 552 2013-2014, adattamento per l'informatica] Prato fiorito 57. Prato fiorito e un gioCO per compuDebug Partita ? Debug ter che usa una scacchiera. Cliccando sui riquadri delta scacchiera, a volte si puo scoprire un fiore nascosto. Per esempio, nella scacchiera di 9 x 9 riquadri rappresentata in figura sono nascosti 10 fiori. E possibile personalizzare ii gioco impostando le dimensioni della scacchiera (cioe ii numero di righe e di colonne) e ii numero di fiori nascosti. Scrivi un algoritmo che permetta di calcolare la probabilita (numero casi favorevole I numero casi possibili) di scoprire al prime tentative un fiore, accettando in input le dimensioni delta scacchiera e ii numero di fiori. [Prove INVAL5/ matematica 552 2013-2014, adattamento per /'informatica]

301

I

VERIFICHE DI FINE CAPITOLO

58. Scrivi un algoritmo che permetta di calcolare ii consumo energetico dovuto alla corsa o alla camminata in base alle formule seguenti:

CORSA

70.

Scriviamo ii testo de( problema risolto dall'algoritmo rappresentato dal flowchart in figura .

spesa energetica (KCal) = 0,9 x km percorsi x kg di peso corporeo

lnizio

CAMMINATA spesa energetica (KCal) = 0,5 x km

Input numeral

percorsi x kg di peso co rporeo cantatare = 4

59. II contratto con ('Internet Provider di Carlo prevede ogni mese un costo fisso Fe un co sto variabile, proporzionale al tempo td i connessione espresso in ore. II costo in euro per ogni ora d i connessione viene indicate conk. a. Scrivi l'algoritmo che permette a Carlo di esprimere ii costo C che deve sostenere ogni mese, in funzione delle ore di connessione. b. Di quali vincoli bisognerebbe tenere canto durante la risoluzione del problema? c. Riscrivi l'algoritmo inserendo i vincoli. [Pro ve INVAL5/ matematica 552 2015-2016, adattamento per /'informatica]

I

....__ Vero cantatare != 0 '~- - - - -

Falso

numeral = numeral * 2 contatore = contatare - 1

Output numero 1

Fine

60.

l!Mi-ii'l-ti

61.

liMi-ii'M1

@

Risolviamo un problema mediante un algoritmo.

Riscriviamo l'algoritmo in pseudocodice. Funzione lnizio

@

Risolviamo un problema mediante lo pseudolinguaggio.

Input numeral Assegna contatore = 4 Mentre contatore != 0

Algoritmi diversi

Assegna numero1 = numeral * 2

Scrivi un algoritmo che permetta di risolve re i problemi seguenti.

Assegna oontatore = contatore - 1

Fine

62. Dato in ingresso un numero n, stampa ii valore del fa ttoriale n! . (Suggerimento: ii fattoriale din ii p rodotto d i t utti i numeri compresi tra 1 e n.)

Output numero 1

e

Fine

63. Dat i in ingresso due numeri posit ivi med n, ca/cola ii massimo t ra i due uti lizzando pero solo gl i o perat ori sottrazione, assegnamento e uguagli an za a 0. No n potra i usare gli operatori < e >.

64. Dato in ing resso un intero n, converti lo in binario.

65. Dato un num ero intero positivo n, ca lco la la somma di tutti i numeri da 1 a n. 66. Dato un numero intero posit ivo n, ca/co la la somma di tutti i numeri da 1 an senza usare cicli.

Simuliamo l'esecuzione dando in input ii valore 2.

con ta tore

valore

valore

!= O?

numeral

con ta tore

2

4

s1

4

3

sl s1

8

2

16

1

32 va lo re in o utput

0

IN IZIO

s1

67. Dat i in ingresso due numeri int eri positivi me n, ca/cola ii loro p rodotto utilizzando l'add izione. Non potrai utilizzare l'operatore *·

68. Dati in ingresso due numeri interi positivi m e n, ca /cola la potenza n-esima dim utilizzando la mo ltiplicazione .

69. Dat i in ing resso due numeri interi m ed n, calcola mn_

302

NO

L'algoritmo inizializza un contatore a 4 e poi, partendo dall'input, raddoppia un numero e decrementa ii contatore di 1, finche ii contatore non si annulla .

e

II problema risolto dall'algoritmo di moltiplicare per 16 un numero data in input.

Problem solvin

71. Osserva ii flowchart in figura .

e al oritmi

In English 73. Use the following words to write sentences about algorithms.

Input a

Input b

• •

tmp =a

a=b

b = tmp



Output a

• •

Output b

Fine

a. Riscrivi l'algoritmo in pseudocodice. b. Simula l'esecuzione dell'algoritmo asse gnando ad a valore 5 e a 6 valore 6. Oual

e l'output?

c.

Scrivi ii testo del problema risolto dall'algoritmo.

72. Osserva ii flowchart in figura. lnizio risposta = True

t

f~IEN'D5Hlf>

Vero

7

AL&-Ofl\'TI-\M

~-

l)~ • .SHEL.l>oN

t numero1 % 2 == 1

75. The Big Bang Theory is an American television sitcom. In one episode, the protagonist, Dr. Sheldon Cooper, devised a hypothesis that may have revealed the formula of friendship. Watch the video clip tiny.cc/smj9yy and review the diagram of the friendship algorithm with your classmates and add new steps.

T+tt

Input numero1

Falso

74. Write the flowchart to solve t he following problems. a. Check whether two integers are equal or not . b. Read the value of an integer N and display 1 when N is larger than 0, 0 when N is O and - 1 when N is less than 0. c. Display the first Nodd natural numbers and their product. d. Display some values of the funct ion y = 3x + 1 using integer numbers for x, ranging from 0 to 10.

c.ooPEtt.. , P'n .P

BANG THflllY

risposta = False

Output risposta

'

Fine

.j

a. Riscr ivi l'algoritmo in pseudocodice . b. Simula l'esecuzione dell'algoritmo inserendo c.

due numeri significativi. Scrivi ii testo del problema che viene risolto dall'algoritmo.

k-_

_

..•

_, ,.

303

IN ENGLISH What is an algorithm? Watch the video from Khan Academy at the following link: tiny.cc/19j9yy.

Computing > Computer science > Algorithms > Intro

Listen to the text

to algorithms

t f t ti-0

What is an algorithm and why should you c.are?

A guessing game

Route-finding

r:,O Discuss: Algorithms ln yourlife

Next tutorial

Binary search

What is an algorithm and why should you care?



In the video, you can find two definitions of algorithm. What differences do you notice between them?

• The concept of algorithm is common in our lives. What are the examples proposed? Can you think of any others? •

What are some of the most popular algorithms? Fill the table below. Name of the application Google Hangouts

Purpose Real-time video streaming

• What features should a good algorithm have?

304



How do you measure the efficiency of an algorithm?



Complete the exercises below provided by Kahn Academy. a. A guessing game b. Route-finding c. Discuss: Algorithms in your life

Algorithm used

COMPITO DI REALTA Flowchart acili AlgoBu ild non e l'unico software che permette di realizzare dei flowchart. Un'alternativa e Flowgorithm, disponibile alla pagina tiny.cc/xnn9yy. lnstallalo e usalo per realizzare un diagramma di fl usso. flowgorithm

(l Tutti

X

c;;J lmmagini

G

Video

@ Notizie

~

Libri

: Altro

lmpostazioni

Strumenti

Circa 46.400 risultatl (0,42 secondi) \WIW.flowgorilnm.org

T

Traducl questa pagina

Flowgorithm - Flowchart Programming Language Flowgoritnm is a free beginne~s programming language tnat is based on simple grapnical flowcharts. Typically, when a student first learns to program, tney onen ..

II

Download

Manuale Flowgorithm

Download Color scnemes. LCARS Tne colors from Star Trek: The ...

Ma, se si vuole lmparare un llnguaggio di programmazione ...

Realizza un flowchart con Fl~wgorithm

' ·-

·

1

·

Considera ii seguente problema: Si vuole calcolare la somma degli incassi effettuati giornalmente in un negozio. II sistema permette l'inserimento dei valori finche l'operatore digita un importo uguale a zero.

e

Nell'immagine a fianco riprodotta una proposta di algoritmo risolutivo per questo problema, rappresentato tramite flowchart. Riscrivilo con Flowgorithm.

somma

~ - - - - - - --- do Input importo

• CE [i] @.I

lil

~

= 0.0

somma



= somma + importo

t T

importo != 0

Output importo

-

t Fine

Una volta terminate ii flowchart, clicca sulla freccia verde. Che cosa succede? Che cosa resti t uisce l'algoritmo in output? II risultato coerente con quanta richiesto? Motiva la tua risposta e, in caso negative, correggi l'algoritmo.

e

Riscrivi l'algoritmo utilizzando un ciclo pre-condizionale. Disegna ii nuovo flowchart.

Realizza ii flowchart dello stesso algoritmo utilizzando AlgoBuild. Quale dei due software ti sembra migliore e perche?

305

Dagli algoritmi alla • programmaz1one strutturata In questo Capitolo parleremo di: • linguaggi formali • paradigmi di programmazione • linguaggio C e linguaggio C++

11.1 DALLA SOLUZIONE TRADIZIONALE A QUELLA TECNOLOGICA La tecnologia permea ormai in profondita la nostra vita, tanto che sarebbe ormai piu faticoso fame a meno che sfruttarla a nostro vantaggio . Facciamo un esempio. Supponiamo di dover essere alla stazione Tiburtina di Roma entro le 8:30 partendo da Milano . Potremmo seguire due strade: • evitare il piu possibile la tecnologia: soluzione che chiameremo "tradizionale"; • abbracciare le opzioni che la tecnologia ci offre: soluzione "tecnologica". 11

11

Andiamo alla stazione di Milano Centrale per consultare l'orario ferroviario e scopriamo che l'unico treno utile per noi pane alle 5:00. Le biglietterie, pero, aprono alle 5:50, quindi dobbiamo acquistare il biglietto, al piu tardi , il giorno prima della partenza ( Fig. 1a). LA SOLUZIONE

TRADIZIONALE

La mattina della partenza dobbiamo chiamare la compagnia di taxi per farci venire a prendere, perche gli altri mezzi pubblici iniziano il servizio alle 5:30. Da sempre ii genere umano utilizza la tecnologia, che si evolve nel tempo. Prima dell'avvento dei sistemi informatizzati, le chiamate ai taxi erano gestite da centralini telefonici. E prima ancora? Come avresti fatto, agli inizi del Novecento, a organizzare un viaggio simile a quello descritto nel testo?

306

Arrivati in stazione dobbiamo esibire il biglietto al personale di controllo per accedere ai binari (e , a seconda del tipo di treno, obliterarlo) Una volta a bordo, teniamo pronto il biglietto per i controlli del personale di carrozza. No ta che , nonostante la nostra rinuncia a utilizzare la tecnologia , molte delle persone con cui siamo venuti a contatto non hanno potuto evitarla. Per esempio: • l'operatore della biglietteria utilizza esclusivamente sistemi informatici, che effettuano le prenotazioni ferroviarie e assegnano i posti in tempo reale; • il tassista riceve la chiamata, smistata da un sistema informatizzato, direttamente sul display montato sul cruscotto ; • il personale di carrozza impiega strumenti informatici per effettuare controlli sul biglietto, ad esempio per evitare le contraffazioni.

11

Tramite un computer o anche uno smartphone , consultiamo i siti web delle compagnie ferroviarie, dai quali confrontiamo le diverse offerte. LA SOLUZIONE

TECNOLOGICA"

Indipendentemente dall 'orario di partenza , acquistiamo il biglietto online (Fig. 1b), pagando con carta di credito o bancomat in qualsiasi momento, fino a poco prima della partenza del treno. Riceviamo, come SMS sullo smartphone o nella casella di posta elettronica, un messaggio di conferma dell 'acquisto, con il codice del biglietto: non abbiamo bisogno di stampare ne obliterare alcunche, perche ci bastera esibire il messaggio ricevuto.

N. 1 ADULT!

TRENO ORDINARIO DA CONVALI DARE UTILIZZABILE DAL 28/12/12 AL 27/02/13

FIRENZE

SIENA

KIi 97

TA RIFFA INTERA TAR . 39/01 VALE 6H DA CONVALIDA

EUR JllHH8 ,

51

P . IVA 05403151003

TOT.BIGL.N . 1 00220 0636

m

CAPITOLO

Dagli algoritmi alla programma zion e str utturat a

0749Jl7143884 281212 19 : 20 00682-201

SIENA

a

liiii

CN ClffllJ 0013• P-- -

U-TRENITAl/A

C....

oau,,o f'IDOYa OIU0 STAR> ffAUAHI

--

l"llgl91•1 ..O,IS1003

0..E--.CMA)1/2011 asM.P1NA TOURS SCOPR1 V1VERE & VIAGGIAAE (38(101) ""-'-oT-...IOIUl'l'11

PNR: DLEQW5

VlAGGIO eta Terontola-Cortona a Firenze S. M. Novella ii 09/07/2018 aJk! 0, + permette di visualizzare caratteri sul monitor

l. _____~ 6 . Q) #CLIP

la libreria contiene tutte le funzioni necessarie per le operazioni di input/output

;

tutte le istruzioni di una funzione devono terminare con ;

La parola #include e una parola riservata del linguaggio e va scritta ogni volta che il programma utilizza gruppi predefiniti di istruzioni (funzioni). •

Una funzione di istruzioni.

e un costrutto informatico che raggruppa un insieme

Alcune funzioni sono gia pronte e disponibili peril programmatore, che pub utilizzarle anche piu volte, in punti differenti del programma, senza dover riscrivere da capo il codice , ma semplicemente chiamandole, cioe scrivendone il name. Per comodita, le funzioni sono raccolte in librerie. •

e

Una libreria un file all'interno del quale sono contenute funzioni utilizzabili nel programma .

Come vediamo nel nostro programma, la libreria contiene le funzioni per effettuare operazioni di input e di output. Richiamandola all 'inizio, il programmatore non deve preoccuparsi di riscrivere ogni volta il codice per effettuare operazioni di lettura e scrittura . La funzione principale del programma si chiama sempre ma n ( ) : come per ogni funzione , il suo name e seguito da due parentesi tonde (le quali, quando una funzione lo richiede , ne contengono gli argomenti) e da due parentesi graffe, all'interno delle quali sono elencate le istruzioni da eseguire (il corpo della funzione). No tiamo che ogni istruzione deve sempre terminare con punto e virgola: si tratta di una caratteristica della sintassi del linguaggio ed e importante fare molta attenzione , perche soprattutto per i programmatori meno esperti e una delle cause di errore piu frequenti quando si scrive del codice.

318

Dagli algoritmi alla programmazione strutturata

CAPITOLO

m

Sottolineamo anche che questo linguaggio e case-sensitive, ovvero c'e differenza tra lettere m inuscole e maiuscole . La funzione print:f sarebbe du nque una funzione diversa da Pr int F (che non esiste). Osserviamo, infine, che il codice appena scritto esprime nel linguaggio C l'algoritmo rappresentato dal diagramma a blocchi e relativa pseudocodifica realizzati con AlgoBuild e riprodo tti di seguito: vi possiamo infatti riconoscere un inizio (START main) e un'istruzione di output, mentre la fine (E D) corrisponde alla parentesi graffa della riga 6 del codice (che chiude il corpo della fu nzio ne mai n (), la funzione principale del programma).

PROG RAM mai n OUTLN ·11 mio primo programma in C."

Proviamo insieme Scriviamo ii programma in C++ Riscriviamo in C++ ii programma che abbiamo appena visto in Ce cominciamo a osservare alcune differenze di sintassi tra i due linguaggi. l

#include using namespace std ; int main ()

4

{

6

}

cout numeroLati ; cout > lunghezzaLati ; switch (numeroLati ) { case 3 : k = 0.433 ; break ; case 4 : k

=

l ;

break ; case 5 : k = 1. 720 ; break ; default : k = O; break ; } if (k == 0 ) { cout numero2 ) { i r n t ( "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ " ) ;

( "Il primo numero inserito none maggiore del secondo" );

24. Completa ii codice seguente in modo che risulti un programma in linguaggio C++ che legge un numero e lo incrementa del 10% see superiore a 100.

#include _ _ _ ______________ std ; int c,

~---

()

double cout >numero ; if (_ _ _ _ _ _ __

{ numero =

- - - - - - -- - -

_ _ _ _ _ 2 ,·

Un nuovo linguaggio: C#

CAPITOLO

Questi tipi sono detti p ri mitivi, in quanta esistono nativamente nel linguaggio per rappresentare informazioni semplici. Oltre a questi , esistono altri tipi di dato, che esamineremo in dettaglio quando li incontreremo. Nel caso del nostro esempio, la base e l'altezza sono sicuramente numeri decimali e possiamo scegliere, quindi , tra float e double. Poiche non abbiamo problemi di spazio in memoria , utilizziamo per semplicita il double. Le costanti, per convenzione, hanno un nome tutto maiuscolo.

e



Una costante una variabile ii cui valore, una volta assegnato, non puo cambiare nel corso del programma.

Possiamo dichiarare le costanti in C# inserendo cons t davanti al tipo: canst double PI = 3.141592 ; Non si puo , pero , utilizzare la dichiarazione implicita delle costanti con la parola chiave var.

In Java le costanti vengono dichiarate con la parola chiave final : final double PI= 3.141592;

LE ITERAZIONI Dobbiamo ora ricevere in input il valore della base e controllare che sia un numero positivo. Si tratta di leggere il valore immesso finche non risulta un numero maggiore di zero: entriamo quindi in un ciclo.

In C# possiamo esprimerlo in un blocco che inizia con l'istruzione do (riga 10) e termina con la condizione da valutare nel while (riga 15). La condizione di permanenza e il controllo del valore della variabile (b O)

{ Console . WriteLine ( "Il numero inserito

e

e

positivo" ) ;

e

negativo" ) ;

} else

{ Console . WriteLine ( "Il numero inserito

verifica se un numero maggiore, minore oppure uguale a O; nei tre casi sta mpa un messaggio diverso

361

I

SEZIONE

D

Al go ritmi e pro grammaz ione

,--0

I TIPI DI ITERAZIONE Ricordi in quanti modi si rappresenta l'iterazione attraverso i diagrammi a blocchi (Capitolo 10)?

Nel Capitola 10 abbiamo individuato tre tipi di iterazioni: do ... while, fore while. Cominciamo da quest'ultima: while ( ) {

} 11 ciclo while esprime l'iterazione pre-condizionale: la condizione viene valutata prima di entrare nel blocco di istruzioni , che viene eseguito solo se e vera; see falsa il ciclo termina. Questa tipo di iterazione si utilizza quando none noto a priori quante volte il blocco deve essere eseguito. Seil blocco e costituito da un'istruzione singola , le parentesi graffe possono essere omesse. L'istruzione for , invece, ha la seguente sintassi: for (; ; ) {

} 11 ciclo for esprime l'iterazione pre-condizionale defini ta e si utilizza quando il numero di iterazioni da effettuare e noto a priori. Essa ha tre argomenti, che devono tutti essere definiti, se pure non necessariamente nella dichiarazione del ciclo, come si vede anche negli esempi che seguono. • lnizializzazione . E l'istruzione che viene eseguita prima di iniziare il ciclo,

utilizzata per esempio per inizializzare la variabile contatore: int i = 0 • Condizione . Euna condizione booleana , che viene valutata a ogni iterazio-

ne: se e vera il ciclo continua, se e falsa il ciclo termina. Se , per esempio, vogliamo eseguire il ciclo 10 volte , scriviamo:

i

< 10

• lncremento. Al termine di ogni iterazione viene eseguito per incrementare

la variabile contatore: i ++ Inizializzazione e incremento, come si e detto , possono anche essere inseriti non nella dichiarazione del ciclo for , ma in posizioni diverse del codice. Utilizziamo il ciclo for in tre modi diversi per stampare i primi 10 numeri : ciclo for completo di tutti gli argomenti

inizializzazione della variabile premessa al ciclo

362

) {or (int i •

O; i < 10 ; i ++)

Console . WriteLine ( $" { i} " ) ;

int i O; for ( ; i < 10 ; i ++)

{ Console . WriteLine ( $" { i} " ) ;

LJ

Un nuovo ling ua gg io: C#

CAPITOLO

for (int i = O; i < 10 ;)

{ Console . WriteLine ( $ 11 { i } 11 ) i ++ ;

;

J

incremento interno al blocco del ciclo

L'istruzione do ... while , infine, che abbiamo gia incontrato, permette di esprimere l'iterazione post-condiziona le, perche la condizione di permanenza viene valutata successivamente all 'esecuzione del blocco di istruzioni, ed e utilizzata quando quest'ultimo deve essere eseguito almeno una volta. La sua sintassi e: do { } while ();

Anche in questo caso , se il blocco e costituito da una singola istruzione le parentesi graffe possono essere omesse.

E importante notare che le tre tipologie di iterazione (pre-condizionale, postcondizionale e definita) sono spesso equivalenti tra lorn, nel senso che, se il numern di iterazioni e noto a priori, e possibile convertire qualsiasi ciclo for in un ciclo while (o do .. . while) e viceversa.

Converti ii ciclo for per la stampa dei primi numeri in un ciclo while equivalente.

10

GLI ARRAY Immaginiamo di dover affrnntare il seguente prnblema: letti 10 numeri da tastiera , dobbiamo stamparli in ordine crescente.

E un prnblema che potremmo gia risolvere con gli strumenti a nostra disposizione. Potremmo, per esempio, definire 10 variabili di tipo intern, leggere i valori inseriti da tastiera e, infine , ordinarli in qualche modo (sappiamo gia confrontare tra lorn due numeri per verificare se uno e maggiore dell'altrn). Questa soluzione, pen\ none ne efficiente ne generale. Che cosa succederebbe, infatti, se i numeri da leggere e ordinare fossern 10007 Dovremmo creare 1000 variabili all'interno del codice ed effettuare 1000 letture da tastiera!

E preferibile ricorrere a un array. •

e

Un array una struttura dati che permette di memorizzare in modo efficiente un numero qualsiasi, purche noto, di dati omogenei.

Possiamo vedere un array come un contenitore di variabili. Ha un nome, prnprio come una normale variabile, e una dimensione , specificata al momenta della sua creazione e non modificabile. Le variabili che comiene, cioe i suoi elementi , devono essere tutte dello stesso tipo e sono individuate da un indice. Consideriamo, per esempio, l'array nomeArray (Fig. 4). Ogni elemento di questo array e una variabile di tipo intern ed e accessibile tramite un indice, che si specifica tra parentesi quadre dopo il nome dell'array. lri C# gli indici degli array iniziano sempre da 0 . Quindi, il primo elemento nell'array e l'elemento in posizione O e si indica con nomeArray [ O] ; nel nostrn caso contiene il valore 1. L'elemento in posizione 2 e indicato con nomeArray [ 2 l e contiene il valore 6. L'ultimo elemento di un array di dimensione n e in posizione n - 1 e si indica con nomeArray [n - 1] .

~ 1141513101312191 nomeArray

Fig. 4 Un array.

363

SEZIONE

0

A lgoritmi e programmazione

LA DICHIARAZIONE E LA CREAZIONE DI UN ARRAY La dichiarazione di un array avviene come quella delle variabili: vanno indicati prima il tipo dell 'array e poi il suo name.

11 tipo di un array contenente variabili di tipo T e T [ J ; quindi, un array di interi sara di tipo int [ J , mentre un array di numeri decimali sara di tipo double [ J . Possiamo creare un array di qualunque tipo, sia primitivo che non. int [] numbers ; // array di interi di name numbers doub l e [] decimals ; // array di double di name decimals string [] strings ; // array di stringhe di name strings Un array, pero, none un tipo primitivo, ma un oggetto; dopa averlo dichiarato va quindi istanziato (creato), specificando la sua dimensione tra parentesi quadre. La creazione di un array avviene con l'utilizzo dell 'operatore new e la dimensione puo essere sia una costante sia una variabile di tipo intern. La sintassi e la seguente: = new [dimensione]; Ecco alcuni esempi di dichiarazione di array: numbers = new int [lO ]; decimals = new double [20 ]; int n = 5 ; strings = new string [n ]; In Java la dichiarazione e la creazione di un array avvengono come in C#.

Come abbiamo vista per le variabili, l'assegnazione puo avvenire contestualmente alla dichiarazione: int [] numbers = new int [lO ]; Dopa averlo istanziato, avremo creato in memoria un array contenente il numern di variabili specificato e ogni elemento dell 'array conterra il valore di default per quel tipo. Per i numeri, interi e decimali, il valore di default e sempre 0, mentre per le stringhe e gli altri oggetti il valore di default e il valore nullo, cioe assenza di un riferimento a un oggetto, rappresentato da lla parnla chiave nul 1. Parleremo di oggetti e riferimenti nei prnssimi anni, per adesso ci interessa sapere che un array appena istanziato non puo essere utilizzato perche non contiene nulla. Prima di pater leggere e utilizzare i singoli elementi di un array, dobbiamo associare un valore a ciascuno di essi. L'ACCESSO AGLI ELEMENT! DI UN ARRAY

Come potresti usare la proprieta Length per accedere al penultimo elemento di un array? E a quello in posizione centrale di un array con un numero dispari di elementi?

364

Gli indici di un array di dimensione 11 sono compresi tra O e 11 - 1: si tratta , quindi, per ognuno di essi, di assegnare un valore alla variabile nella posizione corrispondente. L'assegnamento dei valori agli elementi di un array viene anche chiamato popolamento dell'array. 11 modo piu semplice per farlo e utilizzare i cicli. Se la dimensione dell'array non e nota, puo essere ottenuta utilizzando una particolare prnprieta chiamata Length . La dimensione dell'array nomeArray si ottiene percio con l'espressione nomeArray. Length e restituisce un numern intern positivo.

CAPITOLO

Un nuovo linguaggio: C#

Proviamo insieme lnizializzaziamo un array Scriviamo un programma che inizializzi un array di 10 elementi con input di valori da tastiera. Creiamo un array numbers di interi, assegnando un valore numerico letto da tastiera a ciascun elemento dell'array utilizzando un ciclo for . L'indice va da O a numbers. Length escluso . Al termine del ciclo, !'array conterra 10 numeri int eri . int [] numbers = new int [ l0 ]; for ( int i = 0 ; i < numbers . Length ; i ++ )

{ Console . Write ( $"Inserisci i l numero in posizione {i} : numbers [ i ] = int . Parse (Console . ReadLine ()) ;

11

)

;

e

II codice che abbiamo scritto generico: se, infatti, avessimo voluto assegnare un valore a ciascuna delle variabili di un array di 1000 elementi, sarebbe bastato cambiare la dimensione dell'array. lnoltre, anche possibile creare array di dimensione a scelta dell'utente. lnfine, la visualizzazione sul monitor o la stampa di un array si effettua nello stesso modo, tramite un ciclo in cui si fa riferimento, per ogni indice, alla variabile che si trova nella posizione indicata:

e

for ( int i

= O; i

< numbers . Length ;

i ++ )

{ Console . WriteLine ($"Il numero in posizione {i}

e

{numbers[i] }" ) ;

Ora prova tu! Ordina e stampa gli elementi di un array •

Leggi da tastiera un numero n e crea un array di dimensione n, popolandolo con numeri decimali .



Utilizzando ii metodo Sort della classe Array (nella libreria System), ordina !'array letto prima di stamparlo e verifica che gli elementi siano in ordine crescente.



Come puoi modificare ii codice per stampare gli elementi dell'array in ordine decrescente?



Riesci a farlo anche in Java? (Suggerimento: usa ii metodo sort, classe Arrays, package j ava. util; tieni presente che, in Java, la funzione da utilizzare per determinare la lunghezza di un array si chiama length, con l'iniziale minuscola .)

G li array non sono tipi primitivi, quindi per loro non valgono le considerazioni fatte, per esempio, per la conversione dei tipi. Sebbene gli elementi di un array di tipo int siano tutti anche di tipo double, non vero che un array int_[] anche di tipo double[] e infatti le seguenti istruzioni non sono valide:

e

e

e

Per convertire correttamente un array int[] in uno double[], necessario creare un nuovo array double [ l dell a stessa dimensione e copiare ogni singolo elemento: double [] numbersDouble = new double [numbers . Length ]; for ( int i = O; i < numbers . Length ; i ++ )

{ numbersDouble [ i ] = numbers [ i ];

}

365

SEZIONE

e

Algoritmi e prog rammaz io ne

12.4 ESEMPI DI PROGRAMMAZIONE Vediamo alcuni esempi di programmazione in C#, per cercare di penetrarne piu a fondo il meccanismo.

Proviamo insieme Calcoliamo la somma di dieci numeri inseriti dall'utente Nel Capitola dieci abbiamo creato ii diagramma a blocchi di questo prob lema : traduciamolo in C#. using SysLem ; namespace Programmazione 4

{

S

class Conta

s static void ~ n (String [) args ) {

7 8

int sum 0; for (int count = l ; count mma e ii prodotto delle eventuali soluzioni.

49. Scrivi un codice C# per inserire numeri interi in un array di 5 elementi e calcolarne la somma. 50. Scrivi un codice C# per raddoppiare gli elementi di un array di lunghezza definita dall'utente. 51. Scrivi un codice C# che permetta di ricercare un nome in un array di 3 elementi.

• COMPETENZE 52.

Traduciamo in C# un flowchart. II flowcha rt in figura rappresenta una possibile soluzione del seguente problema: Data in input una misura di tempo in secondi, convertiamone ii valore in ore, minuti e secondi. (Per esempio, inserito in input 11 406 secondi, in output si dovra avere 3 ore, 10 minuti 6 secondi.) Traduciamo ii flowchart in linguaggio C#. START main

42. Scrivi un codice C# che permetta di generare una serie di numeri compresi tra 0 e 10 fino a quando la loro somma none maggiore di 100. 43. Scrivi un codice C# che visualizzi ii voto in in formatica p iu alto tra tutti quelli ottenuti nel corso dell'anno scolastico (ii numero totale dei voti e fornito in input). 44. La somma degli angoli interni di un poligono e pari al prodotto tra ii numero di lati diminuito di 2 e l'angolo piatto. Scrivi un codice C# che permetta di calcolare tale somma fornendo in input ii numero di lati. 45. Scrivi un codice C# per calcolare la risultante di un vettore conoscendo i valori dei moduli delle sue componenti (perpendicolari tra loro). 46. Per calcolare la densita di un blocco di rame e necessario conoscere la sua massa e ii suo volume. Scrivi un codice C# che permetta di effettuare questa operazione. 47. Scrivi un codice C# che permetta di calcolare la velocita media di un turista a Roma che percorre a piedi ii tragitto tra Piazza di Spagna e ii Colosseo (2,2 km) inserendo in input ii tempo impiegato (in minuti). 48. Scrivi un codice C# per caricare 10 nomi dei tuoi compagni di classe in un array e successivamente visualizzarne solo gli elementi di indice pari.

376

in secondi

i T

secondi < 0

ore

= secondi / 3600

minuti = (secondi - ore • 3600) I 60

secondi = secondi - ore • 3600 - minuti • 60

out ln

ore

i outln

mi nuti

outln

second i

+

l END

Un nuovo lin ua

io: C#

Vediamo ii cod ice che esprime ii flowchart in C#. class static void Ma

(string [] args)

// Dichiariarno le variabili necessarie per la scrittura del prograrnrna : int secondi ; int ore ; int rninuti ; // Scriviarno l'istruzione per inserire in input il nurnero di secondi da co~vertire . // Consideriarno il vincolo che il nurnero inserito deve essere rnaggiore o uguale a di zero: ,,._

Console . ("Inserisci il nurnero di secondi da convertire:") ; string line Console . () ; secondi = int . ~a (line) ; whi: (secondi < 0) ; // calcoliarno il nurnero di ore ore = secondi / 3600 ; / calcoliarno il nurnero di rninuti dividendo per 60 il resto della divisione precedente rninuti = ( secondi - ore * 3600 ) / 60 ; // calcoliarno il nurnero di secondi secondi = secondi - ore * 360 0 - rninuti * 60 // Scriviarno l'output: Console . 1te>~1 ($"Ore: {ore}") ; Console . 1~r:,1 ($"Minuti: {rninuti}") ; Console . 1teLi e ($"Secondi {secondi}") ; 0

53. II flowchart in figura rappresenta una possibile soluzione del seguente problema: Data in input la misura di un angolo compresa tra 0° e 180°, restituire in output se esso e nullo, acuto, ottuso, retto o piatto. Traduci ii flowchart in linguaggio C#.

START main do in

T

angolo

't

angolo < 0 IIangolo > 180

t F

F

F

F

"angolo piatto " outln

angolo < 180

angolo==90

angolo < 90

T

"angolo nullo " outln

T

"angolo acuto " outln

T

T

angolo==O

"angolo retto " outln

"angolo ottuso" outln

END

377

I

. .

VERIFICHE DI FINE CAPITOLO

SEZIONE

54. II flowchart della figura qui sotto rappresenta una possibile soluzione del seguente problema: Si deve piastrellare un pavimento rettangolare con base e altezza date in input . Le mattonelle sono quadrate, 30 cm di lato, in confezioni da 27. Considerando che ne occorre circa ii 20% in piu per lo sciupo, calcolare quante confezioni e necessario acquistarne. Traduci ii flowchart in linguaggio C# facendo attenzione ai tipi di dati e all'uso del casting.

START main

~ - - - - - - -- - - - --

1do y

in

base_rettangolo

in altezza_rettangolo

T

base_rettangolo today )

18 19 20

21 22 23 24

lc-;1

{

lblResult.Content= "Impossibile, non puoi essere nato nel fututo!" ;

25 26 27 28

}

else

lc-;1

var age = today .Year - birthDate .Year; var day s = (today - birthDate ) .TotalDays; lblResult . Content = $"Hai {age } anni e hai esattamente {days } giorni. ";

29 30

31 }

32 33

}

Possiamo osservare che, rispetto al programma console scritto nel paragrafo precedente , cambia solamente la modalita di acquisire dati in input (utilizzando NomeControllo.Text) e di visualizzare l'output (utilizzando NomeControlloContent). Per avviare il progetto , occorre impostarlo come progetto di avvio. La soluzione contiene due progetti, uno console e uno WPF, ed e possibile scegliere quale dei due far partire. Clicchiamo sul progetto WPF con il tasto destro e selezioniamo lmposta come progetto di avvio. Clicch iamo su Avvia e, se non abbiamo commesso errori, otterremo il risultato mostrato in figura.



11 Calcolo eta

.---+--

II tuo giorno di nascita

~

II tuo mese di nascita

[3

II tuo anno di nascita

[2003

- - - - - - - ---.·

X

J _j

I

7 Calcola

Hai 17 anni e hai esattamente 6412 giorni.

Quando il programma entra in esecuzione , viene visu alizzata la schermata creata nella fase di progettazione; inserendo la data di nascita e premendo Calcola si leggera l'eta.

Proviamo insieme Aggiungiamo un'immagine all'interfaccia Aggiungiamo un'immagine all'interfaccia.

II tuo giorno di nascita

j,o

Passo 1. Troviamo un'immagine adatta e salviamola sul desktop con ii nome, per esempio, image.jpg.

II tuo mese di nascita

2

Passo 2. Trasciniamo ii controllo Image nell'interfaccia.

II tuo anno di nascita

Passo 3. Selezioniamo ii controllo e accediamo alla Finestra Proprieta; alla voce Comuni > Source inseriamo ii percorso dell'immagine. Se abbiamo fatto tutto correttamente, ii risultato sara simile a quello in figura .

ra

...

Calcola

Hai 40 anni e hai esattamente 14843 giorni.

rova tu!

Correggi l'errore • •

Osserva l'immagine a fianco. Che cosa significa ii messaggio di errore visualizzato? Ci sono due modi per correggerlo. Sai dire qua Ii?

II nom• 't,rtOa' non esistt ntl cont,:sto corrtnl•

ew i

Oitn

pott,b' c r

n, ( LT - I

O oppure CTRL~.)

. Todey;

391

Program mare con Snap! e Scratch LAB 2.1 SNAP! E SCRATCH 3.0 Uno dei modi piu semplici per imparare a programmare e utilizzare la programmazione visuale, cioe apprendere un linguaggio che consente di scrivere codice manipolando graficamente degli elementi, detti blocchi , e non utilizzando linguaggi di programmazione dalla sintassi complessa. Gli ambienti di sviluppo piu diffusi che permettono di programmare a blocchi sono Snap! e Scratch . Entrambi sono open-source, eseguibili direttamente su qualsiasi browser. Nelle attivita di laboratorio che svolgeremo useremo Snap!, ma volendo possiamo utilizzare anche Scratch: i due linguaggi e i relativi ambienti di programmazione sono del tutto simili. Se disponiamo di una connessione a Internet, possiamo accedere a Snap' dal link https://snap.berkeley.edu/ poi clicchiamo, nella schermata principale, su Run Snap!. ). Snap! Build Your Own Blocks

x

0.

/

Snap!

Build your own blocks

avvia Snap!

Welcome to Snap/ Snap / is a broadly inviting programming language for kids and adults that's also a platform for serious study of computer science. Take a look at some examples or check out the reference manual to learn more about it, or head straight into the editor and start programming right away!

Allo stesso modo possiamo aprire Scratch dal link https://scratch.mit.edu/, quindi clicchiamo su Crea . Possiamo usare sia Snap! sia Scratch anche senza connessione alla rete. In questo caso dobbiamo installare l'editor offline, disponibile rispettivamente alle pagine: • https://snap .berkeleyedu/offline ; • https://scratch.mit.edu/download.

392

LABORATORIO

Programmare con Snap! e Scratch

-

+-

lnlzla a Creare

-

Quando apriamo Snap! l'ambiente e. in lingua inglese, ma possiamo personalizzare la configurazione cliccando sull'icona che rappresenta un ingranaggio: si apre la finestra delle impostazioni di base, nella quale possiamo selezionare Language e poi la voce Italiano. Possiamo cambiare l'aspetto dell'interfaccia grafica spuntando le impostazioni Aspetto piatto interfaccia. Negli esempi che svolgeremo utilizzeremo l'interfaccia predefinita (a sfondo nero), ma nulla impedisce di modificare l'aspetto a proprio piacimento. Ci sono altre due icone utili , una a forma di pagina e una a forma di nuvola: la prima serve per salvare i file creati, la seconda invece per gestire l 'account Snap! sul cloud.

A~

Gestione account

I

'__/

t Movimento Aspetto Suono



Penna

avv ia Scratch

Uniscitl

L'AMBIENTE DI SVILUPPO

Salva file

FJ

~

t Controllo 4 Sensori GOperatori t

Variabili

Anche in Scratch possiamo cambiare la lingua e impostare l'italiano, cliccando su ll'icona a forma di mondo.

• • •

Movlmento

Mo-,;monto

Suono

lmpostazioni di base

b

#

I

SenzaTitolo

tJ ++

~

--+

/

Script

Sprite I✓ trascinabile Costumi

Suoni

E importante imparare a gestire i propri progetti. Dobbiamo sempre tenere presente se i file che stiamo utilizzando si trovano nel cloud o sul computer. Ricordiamo anche che il salvataggio online richiede un indirizzo email. Se non ne abbiamo uno , occorre salvare in locale sul pc. La schermata dell 'ambiente di sviluppo e. suddivisa in parti, ciascuna delle quali ha una specifica funzione (Fig. 1, a pagina seguente). Control Palette : e. la parte in cui si trovano tutti i blocchi che Snapl mette a disposizione per creare gli script. Questi blocchi, colorati diversamente a seconda

della lorn funzione, sono le istruzioni che costiluiscono un programma. l blocchi si suddividono in otto gruppi.

393

LABORATORIO

D

Progra mmare con Snap ! e Scrat c h

Fig. 1 L'ambiente di programmazione di Snapl.

gruppi dei bl occhi

~

[stage ]

[ Co~trol Palette

• Movimento : permette di muovere lo sprite nello spazio. • Aspetto : consente di modificare l'aspetto grafico o di visualizzare dei mes-

saggi di output. • Suono : permette di riprodurre suoni. • Penna : consente di disegnare. • Controllo: raggruppa i blocchi relativi alle strutture condizionali, iterative

e agli hat block, cioe le istruzioni che consentono di mandare in esecuzione uno script. • Sensori : permette di utilizzare strumenti, come comandi di input, video, microfono, cronometro ecc. • Operatori : raggruppa i blocchi relativi agli operatori matematici e logici. • Variabili : consente la creazione e la gestione delle variabili. Sprite : si tratta di un oggetto grafico che puo muoversi. Lo sprite di default e una freccia , ma e possibile crearne uno nuovo utilizzando immagini e disegni . Ouando apriamo Scratch appare ii suo famoso sprite: ii gattino. In Scratch possiamo cambiare sprite o stage anche attingendo da una libreria di immagini predefinite.

394

Stage: e l'area in cui si muovono gli sprite e in cui viene visualizzata l'esecuzio-

ne del programma; nel nostro esempio (Fig. 1) e l'area in cui e stato disegnato il quadrato. Possiamo personalizzarlo caricando uno sfondo a nostro piacere o disegnandolo noi stessi. Area script : in quest'area viene realizzato lo script, cioe la sequenza di istru-

zioni che esprimono un algoritmo . Per creare uno script dobbiamo trascinare i blocchi colorati dalla Control Palette nell'area script. I blocchi si incastrano tra loro secondo determinate regale, come in un puzzle. Possiamo cancellare i blocchi cliccando su di essi con il tasto destro del mouse , oppure trascinandoli dall'area script nella Control Palette.

0----........~============

I

Programmare con Snap! e Scratch

LABORATORIO

LAB 2.2 PROGRAM MARE CON SNAP! (0 SCRATCH) Negli esempi che seguono utilizzeremo due strumenti di programmazione visuale: • AlgoBuild, un software per disegnare diagrammi di flusso (introdotto nel Capitola 10); • Snap' (o Scratch, a scelta) . Scopriremo cosi i principali blocchi di Snap' attraverso gli esempi proposti.

GLI OPERATOR! MATEMATICI E LOGICI Scrivere un algoritmo che permetta di esegu ire la seguente espressione:

✓[(3 + 7)- 2] : [2 · 4] Esprimiamo l'algoritmo con AlgoBuild . Abbiamo un inizio, degli operatori matematici e un comando di output per visualizzare il risultato: START main

espressi one = sqrt(((3 + 7)-2) /(2 * 4))

outln espressione

END

Affrontiamo adesso il problema con Snap' . La struttura logica dello script espressa dall 'algoritmo di AlgoBuild.

e

• Per prima cosa, dal gruppo Controllo selezioniamo e trasciniamo il blocco quando si clicca su

flll .

• Dal gruppo Aspetto selezioniamo e trasciniamo il blocco dire Ciao! , che utilizzeremo per visualizzare il risultato dell'espressione. • Dal gruppo Operatori selezioniamo e trasciniamo tutti gli operatori necessari per costruire l'espressione: radice quadrata , addizione , sottrazione , moltiplicazione, divisione. - - - - - - - ,

395

LABORATORIO

D

Programmare con Snap! e Scratch

Costruiamo lo script seguendo la struttura rappresentata a lato. Per realizzarlo trasciniamo i blocchi nell'area script e riempiamo gli spazi bianchi di un blocco verde (operatore addizione, sottrazione ecc.) con i numeri corretti . Nel blocco della addizione scriviamo 3 a sinistra e 7 a destra , quindi trasciniamolo nello spazio bianco dell 'operatore sottrazione. In quest'ultimo scriviamo a destra il numero 2 e trasciniamo il tutto nello spazio a sinistra del blocco sqrt (radice quadrata). Proseguiamo allo stesso modo con l'operatore moltiplicazione e cosi via, fino a ottenere lo script completo che risolve l'espressione matematica. Cliccando sulla bandierina verde mandiamo in esecuzione lo script e verifichiamo se funziona correttamente. Come si vede, la costruzione degli script in Snap 1 e veramente semplice. In modo del tutto analogo si procede per risolvere un problema come il seguente , che utilizza gli opera tori logici. Scrivere un algoritmo che stabilisca ii valore della seguente proposizione logica:

not (a and b) nel caso in cui a

e vera e b e falsa.

Lo script di Snap! dovra contenere i seguenti controlli:

Ecco l'algoritmo finale realizzato con Snap':

Esprimi l'algoritmo utilizzando AlgoBuild.

396

Prog rammare con Snap ! e Scratch

LABORATORIO

FJ

LE STRUTTURE CONDIZIONALI Scrivere un algoritmo che stabilisca se un numero intero N appartiene all'intervallo di estremi A e B.

Scriviamo un programma che riceve in input i due estremi di un intervallo numerico e un terzo numero di cui si deve stabilire se appartiene o meno a questo intervallo. Per risolvere questo problema, e necessario fare uso della struttura condizionale se ... altrimenti. Un numero intero N non appartiene all 'intervallo di estremi A e B se il suo valore e maggiore del valore dell'estremo destro B o e minore del valore dell'estremo sinistro A. I..:algoritmo espresso con AlgoBuild

e mostrato qui sotto.

IN

SCRATCH

In Scratch i blocchi e lo script sono identici. L'unica differenza che l'istruzione condizionale se .. . alt rimenti si trova nel gruppo Controllo, mentre i comandi quando si preme ii tasto o quando si clicca su sono nel gruppo Situazioni .

e

START main

' lnserlscl l'estremo slnistro dell'intervallo'

' lnserl scl l'estremo destro dell 'l ntervallo'

"II numero e contenuto nell 'l ntervallo'

' II numero none contenuto all' nell 'l ntervallo"

END

Vediamo anche il programma in Snap' (Fig. 2 , a pagina seguente). 11 problema prevede che siano inseriti in input tre numeri. Dal gruppo Sensori selezioniamo il blocco chi i:! di e modifichiamo tre volte la domanda con "Inserisci l'estremo sinistro dell 'intervallo", "Inserisci l'estremo destro dell 'intervallo" e "Inserisci il valore da verificare". Con questo comando il valore fornito in input viene automaticamente salvato nella variabile risposta gia presente di default. Abbiamo inoltre bisogno di tre variabili : • numero , che contiene il numero da verificare; • estremoA , che contiene il valore numerico dell'estremo sinistro dell'intervallo; • estremoB , che contiene il valore numerico dell'estremo destro dell'intervallo.

Per la struttura di selezione, Snap! mette a disposizione dei blocchi condizio- ~~;::i:lll nali nella sezione Controllo . ~ - - - - -- - - - - - - - - - - - - -- - - ,,. - _ _~ -~ - ... _ Per meglio visualizzare l'output , scegliamo dal gruppo Operatori il comando unione di cia 6 mondo, che permette di concatenare insieme variabili e messaggi►

397

I

LABORATORIO

D

Pro grammare con Snap! e Scratch

Fig. 2 II programma completo con Snap!.

"

Riscrivi l'algoritmo (con Snap! econ AlgoBuild) modificando cos] la condizione : ii numero intero N appartiene all'interva llo di estremi A e B se ii suo valo re minore o uguale del valore dell'estremo destro Be maggiore o uguale del valore dell'estremo sinistro A.

e

MISURARE GLI ANGOLI INTERNI DI UN POLIGONO Scrivere un algoritmo che calcoli la misura degli angoli interni di un poligono regolare.

Realizziamo un programma in cui, dato in input il numero dei lati di un poligono regolare, sia calcolata e restituita in output la misura degli angoli interni. Per risolvere il problema, dobbiamo ricordare come si calcola la misura degli angoli interni di un poligono regolare: ango Io =

La somma degli angoli interni

somma degli angoli interni numero d i lati

e data dalla seguente formula :

somma degli angoli interni = (numero di lati - 2) · 780

Pertanto il valore di ciascun angolo interno, noto il numero dei lati,

e:

2) ·

(numero di lati 180 angolo = ~ - - - - - - - - numero di lati

Cominciamo scrivendo l'algoritmo per la risoluzione del problema. Utilizziamo ancora AlgoBuild. Deve essere inserito in input il numero di lati. Occorre poi impostare la formula che calcola la misura degli angoli interni. e prevedere infine un output con il valore di ciascun angolo del poligono regolare (Fig. 3). Osserviamo che l'utente potrebbe inserire in input un numero di lati non corretto. Per esempio, 2. Inserendo in input 2, otteniamo in output 0. Infatti, dalla geometria sappiamo che qualsiasi poligono ha almeno 3 lati. Possiamo allora migliorare l'algoritmo imponendo un controllo sul numero in input: il valore sara accettato solo se maggiore o uguale a 3. Per introdurre questo controllo, utilizziamo un ciclo Do ... While. Nel ciclo Do .. While , finche la condizione rimane vera (nel nostro caso, finche il numero di lati inserito e minore di 3), l'algoritmo continua a chiedere all 'utente di inserire di nuovo un valore (Fig. 4). Risolviamo adesso il problema scrivendo il programma con Snap!, con il quale , oltre a effettuare il calcolo, possiamo anche disegnare il poligono in base al numero di lati inseriti in input e all 'ampiezza dell'angolo calcolata.

398

0----....,

Programmare con Snap! e Scratch

Fig. 3 II diagramma di flusso che restitu isce la misura di ciascun angolo interno. START main

Fig. 4 L'.algoritmo migliorato con un co ntrollo sul numero inserito in input. START main

angolo=(numero_l ati- 2)* 180/numero_lati

"ii valore dell 'angolo interno del po lig ono regolare e • angolo

END

angolo=(numero_lati - 2)*1 80/n umero_l ati

"i i valore dell'angolo interno del poligono regolare angolo

e•

END

Per disegnare, in Snap! si utilizzano i comandi del gruppo Penna , in particolare penna giu e usa penna d i colore.

-nlH:Fl·d

Per disegnare il poligono e necessario dare indicazioni allo sprite su come muoversi: lo sprite disegnera un lato muovendosi di un certo numero di passi, per poi ruotare di un valore pari al supplementare dell 'angolo interno. Queste due operazioni devono essere ripetute tame volte quanti sono i lati del poligono. Occorre utilizzare un nuovo blocco: ripeti 10 volte (il valore 10 e di default e va modificato in base al problema da risolvere).

Questo blocco rappresenta un ciclo, ovvero le istruzioni contenute al suo interno saranno ripetute un numero di volte fissato in partenza. Nel nostro problema questo numero dev'essere uguale al numero di lati del poligono da disegnare e le istruzioni sono quelle che permettono allo sprite di disegnare un lato. Procediamo con la scrittura dell'algoritmo unendo i blocchi (Fig. s, a pagina seguente). All 'avvio dello script lo sprite si muovera seguendo le istruzioni date. Mandando in esecuzione piu volte lo script e modificando ogni volta il numero di lati in input, lo sprite disegna diversi poligoni regolari (Fig. 6 , a pagina seguente). 11 colore di ciascun poligono cambia , in quanto prima di ogni avvio e stato modificato il colore della penna. A ogni avvio del programma i poligoni creati in precedenza rimangono nello stage. Per evitare che questo succeda , alla fine dell'algoritmo possiamo inserire il comando pulisci per cancellare il poligono appena disegnato.

399

I

LABORATORIO

D

Programmare con Snap ! e Scratc h

Fig. 5 L'algoritmo per calcolare la misura del l'angolo e disegnare ii poligono.

Fig. 6 L'esecuzione del programma con diversi po ligoni.



/

I '\ ,

\

VISUALIZZARE NUMERI PARI E DISPARI Scrivere un programma che permetta di visualizzare tutti i numeri pari e dispari compresi tra 1 e un numero dato N . lnserisci un nurnero :

6.0 1 2 3 4 5 6

400

e dispari e pari e dispari e pari e dispari e pari

Anche in questo programma il numero N e richiesto in input , mentre sono restituiti in output tutti i numeri fino a N , distinguendoli in numeri pari e numeri dispari. Per esempio, inserendo in input il numero 6 si deve ottenere l'output presentato qui a fianco . Per verificare se un numero e pari , occorre calcolare il resto della divisione trail numero stesso e 2: se il resto e uguale a zero il numero e pari , altrimenti e dispari. Scriviamo l'algoritmo prima con AlgoBuild. Utilizziamo un ciclo Do ... While , che richiede nuovamente l'inserimento in input del numero nel caso in cui il numero non sia positivo. Utilizziamo poi un ciclo For per analizzare , a partire dal numero 1, tutti i numeri inferiori al valore inserito in input. Ricordiamo dal Capitola 10 (§ 10.6) che il ciclo For e una struttura di controllo iterativa che permette di eseguire un'istruzione per un determinato numero di volte stabilito a priori dal programmatore ed e caratterizzata da tre parametri: inizializzazione , condizione e aggiornamento.

Pro g rammare con Snap! e Scratch

LABORATORIO

FJ

A differenza del ciclo Do ... While , che non richiede di specificare a priori il numero di iterazioni da eseguire , il ci.clo For stabilisce da subito il numero di volte in cui si deve ripetere una certa sequenza di istruzioni (in questo caso, tante volte quanta e il valore del numero inserito in input). File Modlflca Run Lingua Utonte Aiuto

~ 8 main

I'\

8

.

II ■

+

'='======= PROGRAM main

START main

OUTLN "lnserlscl un numero :" DO •

ln1lfillcl vffi1

END DO WHILE numeroIIIIIIO

a Orusttto

Pul11ntM

a

E1lch1n12

Cor1tv0

Pul11ntt5

'

Dlmen1loneT1110 11,0

s1.'Iproteggendo le !aide acquifere

C11r11t1r1Tlpogr1nco predellnlto •

Altl'ZZI

Si,I utilizzando detergenti sintetlci

A11mpl eonttnlto,1 ...

I

SI, evitando di produrre anidride . J carbonica

Lerghezz,

Scegll una rlspostal

lmm1;lnt

Alompl con1anhor1 ...

Nonun, ...

VIIUIIIZZII II rl1ult1to del IHI,

Rlnomln•

Ellmln•

Sngoma 1rrotond1t1 ...

Mo1traF1adbock