Il 0% ha trovato utile questo documento (0 voti)
0 visualizzazioni29 pagine

Informatica in C++ e Java

Il documento è un testo didattico sull'informatica, focalizzato sulla programmazione in C++ e Java, destinato agli studenti del secondo biennio degli Istituti Tecnici Tecnologici. Copre vari argomenti, tra cui la programmazione imperativa, la programmazione ad oggetti, interfacce grafiche, e programmazione web. Include anche risorse online e materiali di supporto per facilitare l'apprendimento.

Caricato da

Valerio Santoro
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
0 visualizzazioni29 pagine

Informatica in C++ e Java

Il documento è un testo didattico sull'informatica, focalizzato sulla programmazione in C++ e Java, destinato agli studenti del secondo biennio degli Istituti Tecnici Tecnologici. Copre vari argomenti, tra cui la programmazione imperativa, la programmazione ad oggetti, interfacce grafiche, e programmazione web. Include anche risorse online e materiali di supporto per facilitare l'apprendimento.

Caricato da

Valerio Santoro
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd

PAOLO CAMAGNI

RICCARDO NIKOLASSY INFORMATICA


IN C++ E JAVA
Per il secondo biennio degli Istituti Tecnici
Tecnologici, articolazione Informatica
La programmazione imperativa in C, C++ e Java
La programmazione ad oggetti in C++ e Java
Le interfacce grafiche in C# e Java
La programmazione del web in HTML e Javascript

Edizione OPENSCHOOL
1 LIBRODITESTO
2 E-BOOK+
3
4
RISORSEONLINE
PIATTAFORMA HOEPLI
Informatica in C++ e Java
PAOLO CAMAGNI RICCARDO NIKOLASSY

Informatica in C++
e Java
La programmazione imperativa in C, C++ e Java
La programmazione ad oggetti in C++ e Java
Le interfacce grafiche in C# e Java
La programmazione del web in HTML e Javascript

EDITORE ULRICO HOEPLI MILANO


Copyright © Ulrico Hoepli Editore S.p.A. 2019
Via Hoepli 5, 20121 Milano (Italy)
tel. +39 02 864871 – fax +39 02 8052886
e-mail hoepli@[Link]

[Link]

Tutti i diritti sono riservati a norma di legge


e a norma delle convenzioni internazionali
Indice e presentazione

Indice
Codificare l’iterazione 47
Unità 1 Iterazione indefinita con Flowgorithm 48
Dal problema al programma Iterazione definita con Flowgorithm 55
Diagrammi di flusso e programmazione strutturata:
il teorema di Böhm e Jacopini 57
Verifica... le competenze 59
Verifica… i saperi essenziali 61
Simulazione guidata di compito in classe 62
Scuola–lavoro 63
CLIL 64

Area digitale
• Origini del problema del contadino, il lupo, la capra e il cavolo
• Da dove viene il termine algoritmo?
• Soluzione del problema dell’annaffiatoio
L 1 Dal problema all’algoritmo 2 • La torre di Hanoi e la fine del mondo
I problemi e la loro soluzione 2 • Esempio di composizione errata delle figure fondamentali
Un problema con la bilancia 5
Il concetto di algoritmo 7 • Esercizi interattivi
Algoritmi ed esecutori 8
Verifica... le conoscenze 10 • Esercizi per l’approfondimento
Verifica... le competenze 11

L 2 La codifica degli algoritmi:


pseudocodice e flow chart 12 Unità 2
I linguaggi per descrivere l’algoritmo 12 Programmare in C++ e Java
I diagrammi a blocchi o flow chart 15
Realizzare i primi diagrammi a blocchi 16
Le variabili e le costanti 19
Conclusione 21
Verifica... le conoscenze 22
Verifica... le competenze 23

L 3 Realizzare i flow chart


con Flowgorithm 24
Premessa 25
Ciao mondo! 25
Codifica in Flowgorithm dell’esercizio descritto
nella Lezione 2 28 L 1 I linguaggi per la programmazione
Verifica... le competenze 34 degli elaboratori 66
La comunicazione con l’elaboratore 66
L 4 L’istruzione di selezione
I linguaggi di programmazione o ad alto livello 69
e le condizioni logiche 36
Come sono fatti i linguaggi di programmazione? 70
Programmi con percorsi alternativi 36 La classificazione dei linguaggi in paradigmi 71
L’istruzione di selezione doppia 37 Dal codice sorgente all’esecuzione del programma 72
La selezione con Flowgorithm 40 Compilatori e interpreti 73
La selezione semplice 42 Da C a C# fino a Xamarin 76
Verifica... le competenze 44 Da C++ a Java 77
Struttura di un programma 00P 78
L 5 L’istruzione di iterazione (o ciclo) 46 Ambienti di sviluppo per C++ e Java 79
L’istruzione di iterazione o ciclo 46 Verifica... le conoscenze 80

V
Indice e presentazione

L 2 Il programma e le variabili 81 L 2 La selezione annidata e multipla 126


Struttura di un programma 81 La selezione annidata o nidificata 126
I dati e le variabili 82 La selezione multipla 133
Assegnare un valore a una variabile 84 Verifica... le competenze 138
Un programma che utilizza i dati 88
Scambiare il contenuto di due variabili 88 L 3 Gli operatori logici nella selezione 139
Le costanti 90 Variabili booleane e proposizioni logiche 139
Verifica... le conoscenze 92 I connettivi logici 140
Verifica... le competenze 93 Priorità degli operatori 146
Verifica... le conoscenze 148
L 3 L’input e l’output dei dati 94 Verifica... i saperi essenziali 149
La comunicazione con l’elaboratore 94 Simulazione guidata di compito in classe 150
L’input e l’ouput in C++ 95 Scuola-lavoro 151
L’input e l’ouput in Java 97 CLIL 152
Verifica... le competenze 102
Area digitale
L 4 Metodologia per la risoluzione
di un problema 103 • Altri due esempi con l’istruzione switch
Le istruzioni in sequenza 103 • Analogia elettrica degli operatori logici
Risolvere un problema 104
Un programma per il calcolo di una fattura 107 • Esercizi interattivi
Verifica... le competenze 110
Verifica... i saperi essenziali 111 • Esercizi per il recupero
Simulazione guidata di compito in classe 112
Scuola-lavoro 113
CLIL 114
Unità 4
L’iterazione indefinita e definita
Area digitale
• Cronologia dei linguaggi di programmazione
• Tipi e valori per le variabili
• Fare l’input senza la classe Scanner

• Esercizi interattivi

Unità 3
La selezione
L 1 L’istruzione di iterazione
precondizionata 154
Il ciclo a condizione iniziale: while … {...} 154
La trace table o tabella di traccia 157
Calcolo del massimo comun divisore (MCD)
con l’algoritmo di Euclide 161
Verifica... le conoscenze 163
Verifica... le competenze 164

L 2 L’istruzione di iterazione
postcondizionata 165
L 1 L’istruzione di selezione semplice Il ciclo a condizione finale: do {...} while 165
e doppia 116 Contatore e accumulatore 167
Percorsi alternativi nel programma 116 Generazione di numeri casuali 169
Verifica... le conoscenze 124 Verifica... le conoscenze 173
Verifica... le competenze 125 Verifica... le competenze 174

VI
Indice e presentazione

L 3 L’istruzione di iterazione definita 175 L 3 Le modalità di passaggio


Il ciclo a conteggio 175 dei parametri alle funzioni 215
Un ciclo dentro un ciclo: i cicli annidati 180 Passaggio per valore e per indirizzo 215
Equivalenza delle istruzioni di iterazione 182 Passaggio dei parametri in C++ 217
Verifica... le conoscenze 185 Passaggio dei parametri in Java 217
Verifica... le competenze 186 Un esempio con passaggio per riferimento 218
Verifica... i saperi essenziali 187 Conclusioni 219
Simulazione guidata di compito in classe 188 Verifica... le competenze 220
Scuola-lavoro 189
CLIL 190
L 4 Le funzioni ricorsive 221
Introduzione 221
Area digitale La ricorsione 222
Schema concettuale della funzione ricorsiva 224
• Euclide di Alessandria La versione ricorsiva dell’algoritmo di Euclide 227
Da iterazione a ricorsione “tail” 229
• Esercizi interattivi Verifica... le competenze 232
Verifica... le competenze 234
• Esercizi per l’apprendimento Simulazione guidata di compito in classe 236
• Esercizi per il recupero Scuola-lavoro 237
• Esercizi per l’approfondimento CLIL 238

Area digitale
Unità 5
• Esercizi interattivi
La scomposizione in
sottoprogrammi
Unità 6
Dati strutturati e algoritmi
classici

L 1 Funzioni e procedure 192


Introduzione 192
Sottoprogrammi e funzioni: schema
di funzionamento 194
Funzioni in linguaggio C++ 195 L 1 Dati strutturati semplici: gli array 240
Funzioni in linguaggio Java 198 Introduzione ai dati strutturati 240
Un esempio completo 201 Il vettore o array monodimensionale 241
Verifica... le conoscenze 205 I vettori in C++ 243
Verifica... le competenze 206 I vettori in Java 244
Utilizzare i vettori 245
L 2 La condivisione delle variabili Verifica... le competenze 250
nei sottoprogrammi 207
Modello cliente-servitore 207 L 2 Dati strutturati semplici: le stringhe 251
Ambiente locale e globale 208 Introduzione alle stringhe 251
Un esempio completo con le variabili globali 209 Le stringhe in C++ 252
Struttura di una applicazione software 212 Le stringhe in Java 258
Verifica... le competenze 214 Verifica... le competenze 262

VII
Indice e presentazione

L 3 La ricerca e la disposizione Unità 7


degli elementi in un vettore 263
Introduzione 263 I file
Ricerca sequenziale o lineare 264
Il passaggio del tipo array come parametro
alle funzioni 267
Analisi dei dati presenti in un vettore 268
Disposizione dei dati in un vettore 270
I vettori paralleli 275
Verifica... le competenze 278

L 4 L’ordinamento degli elementi


di un vettore 279
Introduzione 279 L 1 I file sequenziali 326
Ordinamento per scambio 280 Gli archivi 326
Bubble-sort parametrico 285 Organizzazione degli archivi 327
Ordinamento per inserzione 286 Rappresentazione dei dati negli archivi 328
Ordinamento per selezione 289 Le operazioni comuni sui file 329
Ordinamento di vettori paralleli 292 File in C++ e Java 330
Verifica... le competenze 294 Creazione, apertura e chiusura di file di testo
in Java 335
L 5 Due algoritmi evoluti: la ricerca Verifica... le competenze 339
dicotomica e l’ordinamento quicksort L2 I file binari 341
Tipologia di file binari 341
Puoi scaricare la Lezione 5 anche da
File ad accesso diretto (random) 343
Scrittura e lettura di record in un file random 346
L 6 Le matrici, array a due dimensioni 296 Ricerca diretta in un file random 350
Verifica... le competenze 353
Array a due dimensioni 297
Utilizzare le variabili di tipo matrice 297 Verifica... i saperi essenziali 355
Definizione di una matrice 299 Simulazione guidata di compito in classe 356
Utilizzare le matrici rettangolari 301 Scuola-lavoro 357
Un esempio completo: temperature estive 303 CLIL 358
Matrice quadrata 306
Verifica... le competenze 310
Area digitale

L 7 I record e le tabelle 312 • La classe File in Java: i suoi metodi e la sua gerarchia
Introduzione ai dati strutturati 312 • File binari in Java e serializzazione
I record e le tabelle in C++ 314
I record in Java 316
• Esercizi per il recupero e il rinforzo
Verifica... le competenze 320
Verifica... i saperi essenziali 321
Simulazione guidata di compito in classe 322
Unità 8
Scuola-lavoro 323 La programmazione a oggetti
CLIL 324 e le interfacce grafiche
Area digitale
• Un esempio con i vettori di caratteri in C++
• Cosa avviene quando si modifica una stringa

• Esercizi per l’approfondimento

• Proposte di compito in classe

VIII
Indice e presentazione

L 1 OOP: evoluzione o rivoluzione? 360 Simulazione guidata di compito in classe 442


Introduzione 360 Scuola-lavoro 443
Crisi del software e OOP 362 CLIL 444
Astrazione, oggetti e classi 363
Conclusione: che cos’è la programmazione Area digitale
a oggetti 364
Verifica... le conoscenze 367 • Leggi catastrofiche
• Naming delle classi
L 2 Classi e oggetti 368 • Metodi inline e offline in C++
• Installazione di NETBEANS
Programmazione modulare 368
Gli oggetti e le classi 369
• Esercizi interattivi
Rappresentazione in UML 370
Verifica... le conoscenze 375
• Esercizi per l’approfondimento
Verifica... le competenze 376

L 3 Metodi e creazioni di oggetti 377


La scrittura dei metodi 377 Unità 9
Creazione di oggetti in C++ 381
Creazione di oggetti in Java 383 Strutture dati dinamiche
Invocazione dei metodi 383
Un esempio completo 383
Un esempio con la classe di prova 385
Verifica... le conoscenze 388
Verifica... le competenze 389

L 4 Ereditarietà, polimorfismo
e relazioni tra le classi 390
Generalizzazione ed ereditarietà 390
Definizioni 393
Ereditarietà: modalità operative 395
Realizzazione di una gerarchia 399
Ereditarietà multipla 404 L 1 Le variabili dinamiche in C e C++ 446
Verifica... le competenze 407 Introduzione 446
Il tipo puntatore 447
L 5 Ambiente visuale e interfaccia Operazioni con i puntatori 451
grafica 408 Vettori e puntatori 452
L’interfaccia utente 408 Composizione di tipi puntatori 454
Elementi di una interfaccia grafica 410 Allocazione e deallocazione dinamica di memoria
L’interfaccia grafica in C# 411 in C++ 455
L’interfaccia grafica in Java 412 Verifica... le competenze 459
Realizzare il primo progetto visuale in C# 413
Realizzare il primo progetto visuale in Java 414 L 2 La gestione dinamica della memoria
Verifica... le competenze 419 con la classe Vector 461
Le strutture dati 461
L 6 I componenti dell’interfaccia grafica 420 Gli array dinamici 465
I controlli 420 Un’applicazione: la gestione delle collisioni
Il pulsante di conferma 421 in una hash table 469
La casella di controllo 423 Verifica... le competenze 472
I pulsanti di opzione 425
I combo box 428 L 3 Le liste concatenate in C++ 473
I list box 430 Le liste: strutture di record collegate
Le immagini in C# 433 con puntatori 473
Le immagini in Java 435 Implementazione delle liste con puntatori
Verifica... le competenze 437 espliciti 474
Verifica... i saperi essenziali 439 Implementazione delle liste con la classe List 482

IX
Indice e presentazione

Le liste bidirezionali e circolari 486


Verifica... le competenze 491
Unità 10
Android e i dispositivi mobili
L 4 Le liste concatenate in Java 494
Implementazione della lista in Java 494
La TDA LinkedList per realizzare liste semplici
e bidirezionali 497
Verifica... le competenze 501

L 5 Strutture dati ad accesso limitato:


pile e code 503
Liste con accesso limitato: pile e code 503
Pila o stack 504
La coda 507
Verifica... le competenze 510 L 1 Android: un sistema operativo
per applicazioni mobili 544
L 6 Gli alberi 511 I dispositivi mobili e la piattaforma Android 544
Introduzione agli alberi e ai grafi 511 La struttura di un’applicazione Android 547
Gli alberi binari 515 Il ciclo di vita di una Activity 549
Visite agli alberi binari 518 Il file APK 550
Alberi binari di ricerca (ABR) 521 Verifica... le conoscenze 552
Verifica... le competenze 525
L 2 L’ambiente per lo sviluppo
di applicazioni Android 553
L 7 I grafi 527
Android Studio 353
Introduzione 527 Creare un’applicazione 554
Definizione e terminologia 529 L’ambiente di lavoro 557
Rappresentazione dei grafi 531 Il Project Explorer 558
Visite dei grafi 532 Il collaudo della applicazione mediante
La ricerca del cammino ottimo 533 un emulatore 559
Grafi euleriani 534 Configurazione di un dispositivo fisico 562
Grafi hamiltoniani e problemi intrattabili 535 Mandare in esecuzione una app 563
Problemi classici 535 Effettuare il debug con Android Studio 564
Verifica... le competenze 537 Toast 565
Verifica... i saperi essenziali 538 Verifica... le conoscenze 567
Simulazione guidata di compito in classe 539 Verifica... le competenze 567
Scuola-lavoro 540
CLIL 542
L 3 Realizzare un’applicazione
utilizzando i widget 568
La modifica del layout 568
Area digitale Widget di base 571
Altri widget molto utilizzati 574
• Dangling reference Verifica... le competenze 576
• La funzione malloc() e free() del linguaggio C Verifica... i saperi essenziali 577
• Calcolo dei nodi e delle foglie di un albero completo Simulazione guidata di compito in classe 578
• Due applicazioni: la notazione polacca e la codifica di Huffman Scuola-lavoro 579
• Alberi in C++ con la classe set<T> della libreria STL
CLIL 580
• Visita in ampiezza e in profondità
• Soluzione del problema dei 4 colori L 4 Utilizzare i sensori nella app
• Esercizi interattivi L 5 Realizzare una app completa:
la calcolatrice
• Esercizi per il recupero e il rinforzo
• Compiti di realtà per l’approfondimento risolvibili con le liste
Puoi scaricare le Lezioni 4, 5 anche da

X
Indice e presentazione

Area digitale HTML 5 618


I form 618
• Versioni di Android Verifica... le competenze 623
• I diversi tipi di tocco su display touch
• Scaricare e installare Android Studio L 4 JavaScript 625
• Utilizzo dei listener JavaScript 626
• Il layout degli elementi grafici Gli oggetti riflessi del browser 627
• Esempio riepilogativo: riassumi la mia identità La manipolazione degli oggetti del browser 628
La convalida dei moduli 628
• Esercizi interattivi Verifica... le conoscenze 632
Verifica... le competenze 632
• Esercizi per il recupero e il rinforzo
Verifica... le competenze 634
Simulazione guidata di compito in classe 635
Scuola-lavoro 636
Unità 11 CLIL 638

HTML, CSS e JavaScript Area digitale


• Tipologie di siti Web
• Link a punti interni
• Riassunto TAG HTML
• Script da file esterni
• Il debugger di Internet Explorer per JavaScript

• Esercizi interattivi

• Esercizi per il recupero e il rinforzo

L 1 Il linguaggio HTML 582 Unità 12


Siti Web statici e dinamici 583
HTML 584 Analisi della complessità
La sintassi HTML 586 computazionale 639
Il corpo del documento 586
La formattazione del testo 587
Le liste numerate e puntate 590
L’inserimento di immagini 593
I link 594
Le tabelle HTML 596
Inserire file audio e video 599
Verifica... le conoscenze 601
Verifica... le competenze 602

L 2 I fogli di stile (CSS) 604


I CSS 605
Gli stili 605
L 1 Elementi di informatica teorica
L’applicazione degli stili 606
Definizione di regole per più selettori 608
L’applicazione degli stili in cascata 609
L 2 La qualità degli algoritmi: introduzione
Classi e pseudoclassi 609 alla complessità computazionale
Le strategie di layout 614
Verifica... le conoscenze 615 L 3 La complessità dei problemi
Verifica... le competenze 615
Puoi scaricare l’Unità 12 anche da
L 3 I form e HTML 5 617

XI
Indice e presentazione

Presentazione

Informatica in C++ e Java tratta la programmazione imperativa e a oggetti per il secondo


biennio del corso di Informatica per gli Istituti Tecnici Tecnologici, articolazione Informatica e
Telecomunicazioni.
La novità dell’opera, concepita secondo le recenti indicazioni ministeriali, tiene conto delle in-
dicazioni ricevute dai docenti che hanno in uso la precedente edizione: in particolare il percorso
del secondo biennio è stato organizzato in un volume unico in modo da favorire l’autonomia
dei docenti nell’organizzazione dei percorsi didattici per il terzo e quarto anno di corso.
In aggiunta, oltre al nuovo impianto grafico, la proposta didattica fornisce le basi teoriche e pra-
tiche della programmazione imperativa e della programmazione a oggetti proponendo paralle-
lamente le codifiche in due diversi linguaggi di programmazione: C++ e Java.

STRUTTURA DEL TESTO, METODOLOGIA E STRUMENTI DIDATTICI


Il volume si articola idealmente in otto sezioni strutturate in 12 Unità di apprendimento sud-
divise in brevi Lezioni presentate mediante una mappa concettuale funzionale per una didattica
inclusiva, che riguardano i seguenti argomenti:
• dal problema all’algoritmo;
• la codifica degli algoritmi in linguaggio C/C++ e Java, con particolare attenzione agli algoritmi
di ordinamento e ricerca;
• le strutture di dati dinamiche;
• la programmazione a oggetti in C++ e Java;
• la programmazione del Web, con un’unità didattica dedicata a HTML (con riferimenti a HTML
5) e CSS ed esempi di progettazione del layout web;
• la programmazione del Web, con due Unità dedicate a Javascript e alle sue applicazioni;
• la programmazione di app per dispositivi mobili mediante l’utilizzo di Android Studio;
• lo studio della complessità di calcolo degli algoritmi.

Tutti gli algoritmi sono presentati mediante la progettazione top-down, riportando più affinamenti
successivi fino a giungere alla codifica in pseudolinguaggio e alla sua rappresentazione con flow
chart: la codifica espressa in più di un linguaggio di programmazione, cioè proponendo in
parallelo il linguaggio C++/C# e Java, si pone come obiettivo di far sviluppare nello studente un
pensiero critico di analisi, secondo la teoria del pensiero computazionale.

Le reti di computer e il significato di Internet e del Web sono l’argomento che introduce il lin-
guaggio HTML. Vengono presentati i fogli di stile e HTML 5 per definire il layout dei siti Web.
La programmazione di app per dispositivi mobili viene esposta mediante l’utilizzo di Android
Studio.

Ogni Unità si conclude con una nuova sezione per la preparazione al compito in classe e una
simulazione operativa delle attività previste dai PCTO, Percorsi per le Competenze Trasversali e
per l’Orientamento (ex Alternanza Scuola-Lavoro), oltre a una scheda CLIL.

Le finalità e i contenuti dei diversi argomenti affrontati sono descritti dagli obiettivi generali e
dalle indicazioni In questa lezione impareremo; alla fine di ogni lezione per lo studente sono
presenti esercizi, anche interattivi, di valutazione delle conoscenze e delle competenze raggiunte
suddivisi in domande a risposta multipla, a completamento, esercizi con procedure guidate.

XII
Indice e presentazione

L’opera è funzionale a una didattica inclusiva grazie alla presenza di mappe concettuali e di
esercitazioni e verifiche per alunni DSA.

ESPANSIONI DIGITALI
La nuova edizione Openschool consente di:
– scaricare gratuitamente il libro digitale arricchito (eBook+); l’eBook+ permette in particolare di:
• eseguire tutte le esercitazioni a risposta chiusa in modo interattivo;
• scaricare gli approfondimenti tematici;
• scaricare lezioni e unità integrative;
– disporre di ulteriori esercitazioni online utilizzabili a discrezione del docente per classi virtuali
gestibili attraverso la piattaforma Open.

RISORSE ONLINE E PIATTAFORMA DIDATTICA


Sul sito [Link] ( ) sono disponibili numerosi materiali. In particolare,
per lo studente: approfondimenti, esercizi di recupero, rinforzo e approfondimento.
Inoltre, i file richiamati nelle lezioni e nelle esercitazioni contenuti nel CD-ROM allegato al vo-
lume sono scaricabili anche dal sito.

CD-ROM
Il CD-ROM allegato al volume contiene i file degli esempi nonché il materiale necessario per ese-
guire le procedure guidate passo passo degli esercizi svolti e da svolgere e le simulazioni informa-
tiche di fine lezione.

XIII
Indice e presentazione

Struttura del corso per immagini


APERTURA UNITÀ
L’Unità si apre con l’indice
delle lezioni sviluppate e
l’indicazione degli obiettivi
generali suddivisi in
conoscenze, competenze e
abilità.

APERTURA LEZIONE
La Lezione si apre con una
breve sintesi degli
argomenti trattati e con la
schematizzazione dei
contenuti attraverso una
MAPPA CONCETTUALE.

EVIDENZIAZIONE
Connota dei concetti
da ricordare.

WIKI
Specifica il significato di un
termine.

ATTENZIONE
Individua aspetti su cui
focalizzare l’attenzione.

PER SAPERNE DI PIÙ


ESEMPIO Schede di approfondimento degli
Gli esempi chiariscono i argomenti sviluppati nel volume.
concetti appena esposti e
svolgono la funzione di traccia
di svolgimento per lo studente.

XIV
Indice e presentazione

METTITI ALLA PROVA VERIFICA LE CONOSCENZE/COMPETENZE


Appendice esercitativa che prende Presenti a fine Lezione, propongono varie tipologie
spunto dal problema di partenza di test (quelli a risposta chiusa sono interattivi e
accrescendone le funzionalità e il autocorrettivi) e di esercizi, con l’indicazione dei
campo applicativo. problemi connessi ai compiti di realtà.

VERIFICA I SAPERI ESSENZIALI/


VERIFICA LE COMPETENZE
Al termine di ogni Unità è presente una
sezione che contiene esercizi sommativi
suddivisi in livelli di difficoltà per la
verifica dei saperi acquisiti, con indicati i
problemi connessi ai compiti di realtà.
SIMULAZIONE GUIDATA DI COMPITO
IN CLASSE
Presente alla fine di ogni Unità,
consente di testare la preparazione
prima della verifica in classe.

SCUOLA-LAVORO
Presente al termine di ogni Unità,
contiene proposte di attività
connesse con le esperienze di PCTO,
Percorsi per le Competenze
Trasversali e per l’Orientamento.
CLIL
Chiude ogni Unità una
scheda CLIL, che propone,
in inglese, i concetti chiave
dell’Unità e alcuni quesiti di
diverse tipologie.

XV
L’OFFERTA DIDATTICA HOEPLI
L’edizione Openschool Hoepli offre a docenti e studenti tutte le potenzialità
di Openschool Network (ON), il nuovo sistema integrato di contenuti e servizi
per l’apprendimento.

Edizione OPENSCHOOL

+ + +
LIBRO eBOOK+ RISORSE PIATTAFORMA
DI TESTO ONLINE DIDATTICA

Il libro di testo è L’eBook+ è la versione Il sito della casa editrice La piattaforma didattica
l’elemento cardine digitale e interattiva offre una ricca dotazione è un ambiente digitale
dell’offerta formativa, del libro di testo, di risorse digitali che può essere utilizzato
uno strumento didattico utilizzabile su tablet, per l’approfondimento in modo duttile, a misura
agile e completo, LIM e computer. e l’aggiornamento. delle esigenze della
utilizzabile Aiuta a comprendere Nella pagina web classe e degli studenti.
autonomamente e ad approfondire dedicata al testo è Permette in particolare
o in combinazione con i contenuti, rendendo disponibile MyBookBox, di condividere contenuti
il ricco corredo digitale l’apprendimento più il contenitore virtuale ed esercizi e di partecipare
offline e online. Secondo attivo e coinvolgente. che raccoglie i materiali a classi virtuali.
le più recenti indicazioni Consente di leggere, integrativi che Ogni attività svolta viene
ministeriali, volume annotare, sottolineare, accompagnano l’opera. salvata sul cloud e
cartaceo e apparati effettuare ricerche Per accedere rimane sempre
digitali sono integrati e accedere direttamente ai materiali è sufficiente disponibile e aggiornata.
in un unico percorso alle numerose registrarsi al sito La piattaforma consente
didattico. Le espansioni risorse digitali [Link] inoltre di consultare
accessibili attraverso integrative. e inserire il codice la versione online
l’eBook+ e i materiali Scaricare l’eBook+ coupon che si trova nella degli eBook+ presenti
integrativi disponibili è molto semplice. terza pagina di copertina. nella propria libreria.
nel sito dell’editore È sufficiente seguire Per il docente nel sito È possibile accedere
sono puntualmente le istruzioni riportate sono previste ulteriori alla piattaforma
richiamati nel testo nell’ultima pagina risorse didattiche attraverso il sito
tramite apposite icone. di questo volume. dedicate. [Link].
.
1

U N I T À
Dal problema
al programma
LEZIONE 1
Dal problema all’algoritmo
LEZIONE 2
La codifica degli algoritmi:
pseudocodice e flow chart
LEZIONE 3
Realizzare i flow chart
con Flowgorithm
LEZIONE 4
L’istruzione di selezione
e le condizioni logiche
LEZIONE 5
L’istruzione di iterazione
(o ciclo)

CONOSCENZE COMPETENZE ABILITÀ


 Conoscere la simbologia  Descrivere la soluzione  Formare il pensiero
dei diagrammi di flusso di semplici problemi mediante computazionale
 Conoscere la rappresentazione algoritmi  Affrontare in modo sistemico
delle figure strutturali  Utilizzare le tre figure il problema
 Acquisire la definizione fondamentali  Descrivere procedure mediante
e le caratteristiche della programmazione algoritmi
di un algoritmo  Acquisire il concetto di variabile  Rappresentare gli algoritmi
 Comprendere la relazione e di cella di memoria mediante flow-chart
tra algoritmo e programma  Utilizzare i diagrammi di flusso  Memorizzare le informazioni
 Acquisire il concetto per rappresentare gli algoritmi nelle variabili
di linguaggio di progetto  Codificare i diagrammi di flusso
e di pseudocodifica con AlgoBuild

II file relativi a esempi, esercizi e a eventuali soluzioni di questa unità sono contenuti nel CD-ROM e sono anche scaricabili
dal sito
.
L E Z I O N E 1

1
Dal problema
all’algoritmo

IN QUESTA LEZIONE IMPAREREMO...


 a riconoscere un problema e a saperlo affrontare
 a riconoscere un algoritmo e un programma

MAPPA CONCETTUALE
Situazione Altre
Fisica Matematica Economia Scienze
reale discipline

pongono un

Problema Soluzione Algoritmo


si ricerca si definisce
mediante lo si descrive con

Linguaggio
Analisi
di progetto

si individua la grafico testuale

che porta alla


Strategia
Flow-chart Pseudocodifica

I problemi e la loro soluzione


Problema
In ogni ambito e settore, dalle scienze all’economia, dalla biologia alla tec-
Il matematico e l’informatico identificano
con la parola problema una questione nologia, dallo sport alla vita quotidiana, ciascuno di noi deve giornalmente
(o quesito) che deve essere risolta, della affrontare dei problemi , eseguire dei compiti e prendere delle decisioni.
quale viene data una situazione con dei
dati iniziali noti e un obiettivo, che con- ESEMPIO
siste nella soluzione desiderata. La so-
luzione di un problema consiste nella Ci capita regolarmente di “ripartire il costo” di una pizzata tra amici, di scegliere un
definizione della procedura, ovvero delle film o un regalo da fare a un amico per un compleanno, di dover organizzare la
operazioni che devono essere eseguite serata, oppure tagliare l’erba in giardino, o mettere in ordine i nostri libri e gli
per raggiungere lo scopo desiderato. appunti scolastici.

2
Lezione 1 Dal problema all’algoritmo

Siamo in grado di risolvere la maggior parte dei problemi che affrontiamo perché o sono semplici,
oppure perché li abbiamo già “affrontati almeno una volta” in passato, e quindi ci basiamo sulla
nostra esperienza o sulla consulenza di qualche amico.
Per altri problemi, invece, la ricerca della soluzione a volte ci risulta difficile, se non impossibile,
soprattutto se ci mancano delle conoscenze o delle informazioni (dati), oppure se la difficoltà in-
trinseca della situazione lo rende un enigma.

ESEMPIO
Abbiamo sicuramente delle difficoltà per calcolare la distanza tra la Terra e il Sole, oppure per
mettere in ordine alfabetico i nomi degli abitanti di una città come Pechino o New York, oppure
semplicemente per determinare se “è nato prima l’uovo o la gallina!”

I problemi non sono tutti uguali tra loro, né per tipologia, né per complessità.

Per individuare la soluzione poterebbe essere necessario cercare di comprendere meglio il pro-
blema, cioè effettuare un’analisi approfondita della situazione e, nei casi più complessi, individuare
una strategia risolutiva.

Con strategia risolutiva si intende la modalità con cui si risolve il problema, cioè l’idea con la quale
il programmatore, sfruttando l’esperienza, l’intuito, la fantasia e, perché no, l’intelligenza, affronta il
processo creativo relativo e trova la “chiave di soluzione” del problema.

AREA DIGITALE
Origini del problema Per meglio comprendere cosa si intende per soluzione e per strategia riso-
del contadino, il lupo, lutiva riportiamo di seguito un famoso problema, noto come Il contadino, il
la capra e il cavolo lupo, la capra e il cavolo, con la relativa soluzione.

Il problema
Sulla riva di un fiume ci sono un contadino, un lupo, una capra e un cavolo che devono attraversare
un fiume con una piccola barca: su di essa è possibile portare solo due “cose” alla volta.
Come può il contadino attraversare indenne il fiume salvando “capra e cavoli” sapendo che se
vengono lasciati da soli il lupo con la capra, oppure la capra con il cavolo, i primi divorano i se-
condi?

Analisi della situazione


La situazione che ci viene proposta è sufficientemente chiara e definita e non necessita di
ulteriori delucidazioni.
Sinteticamente, analizziamo la nostra situazione e riformuliamo il problema:
– abbiamo un obiettivo (goal), che è quello di traghettare un contadino e le “tre cose” che ha
con sé tra due rive di un fiume;
– abbiamo un limite di cose che possiamo portare sulla barca (vincolo): due alla volta;
– dobbiamo stare attenti a cosa lasciamo incustodito sulla riva mentre il contadino sta remando
(vincolo) in quanto:
• se rimane il lupo con la capra… quest’ultima viene mangiata;
• se rimane la capra con il cavolo… quest’ultimo viene mangiato.

3
UNITÀ 1 - Dal problema al programma

La definizione della strategia risolutiva


Il nostro compito è quello di trovare la soluzione di questo problema, che consiste nel “suggerire”
al contadino “cosa deve fare”, cioè che tipo di operazione deve eseguire (chi portare sulla barca)
e “come deve farla”, vale a dire in che ordine. In altre parole, dobbiamo dargli le “istruzioni riso-
lutive” indicandogli la sequenza esatta.

La soluzione è la tecnica (o l’idea) che consente di risolvere il problema e nell’informatica prende il


nome di algoritmo risolutivo.

Naturalmente, per trovare la soluzione, dobbiamo riflettere e arrivare alla conclusione applicando
le regole prima analizzate.

Dopo qualche tentativo, individuiamo una possibile sequenza corretta delle operazioni:
1) prendiamo capra e cavolo dalla riva A e passiamo sulla riva B;
2) lasciamo il cavolo sulla riva B e riportiamo la capra sulla riva A;
3) lasciamo la capra sulla riva A, carichiamo il lupo sulla barca e lo portiamo sulla riva B;
4) torniamo a prendere la capra stando “tranquilli“ perché il lupo “non mangia il cavolo!”;
5) carichiamo la capra e la trasportiamo sulla riva B;
6) proseguiamo il nostro viaggio avendo salvato capra e cavolo.

La soluzione descritta per il problema precedente non è l’unica possibile: si potrebbe infatti so-
stituire, nella sequenza precedente, il cavolo con il lupo e il procedimento porterebbe al medesimo
risultato: quindi, generalmente, non c’è una sola soluzione che risolve un problema, ma un pro-
blema ammette sempre molte possibili soluzioni alternative, alcune migliori e più efficienti di
altre, ma comunque in grado di soddisfare alle richieste.

È anche possibile descrivere graficamente le operazioni che consentono di risolvere il problema.

A B

1 2

A B A B

3 4

A B A B

5 6

A B A B

4
Lezione 1 Dal problema all’algoritmo

Al contadino possiamo quindi dare la soluzione sia sotto forma di istruzioni


scritte in linguaggio naturale sia in formato grafico: abbiamo più modalità
Linguaggio naturale
di rappresentazione della soluzione e dobbiamo scegliere noi il formato
La formulazione di un algoritmo deve
più idoneo al nostro interlocutore: “chi deve eseguire” le istruzioni (esecu-
essere fatta in modo che sia comprensi-
bile dall’esecutore: se si tratta di esseri tore ) deve essere in grado di comprenderle.
umani viene utilizzata la lingua parlata, La soluzione viene descritta solitamente indicando l’insieme delle operazioni
cioè il linguaggio naturale. (passi) che devono essere effettuate riportandole nell’ordine in cui devono
essere eseguite (sequenza di operazioni).
Esecutore La scelta fatta nell’esempio precedente di indicare la soluzione mediante
L’esecutore è il soggetto che esegue l’al- disegni è sicuramente efficace, in quanto svincola da tante particolari situa-
goritmo, che può essere un essere umano zioni che potrebbero creare difficoltà, per esempio se il nostro contadino
oppure una macchina, come un calcola-
fosse analfabeta oppure di lingua straniera e noi avessimo scritto testual-
tore elettronico o un automa meccanico.
mente i singoli passaggi in italiano.

Gli esecutori devono essere in grado di comprendere ed eseguire le istruzioni che risolvono
il problema.

Un problema con la bilancia


Per illustrare ancor meglio il concetto di strategia risolutiva, riportiamo un secondo famoso pro-
blema e relativa soluzione, noto come L’orafo imbroglione e la moneta più leggera.

Il problema
A un orafo viene consegnato un certo quantitativo d’oro per preparare 18 monete uguali; ma
l’orafo “trafuga” parte dell’oro, producendo 17 monete uguali e una più leggera. Utilizzando
una bilancia a due bracci, com’è possibile individuare la moneta falsa in sole tre pesate?

Analisi della situazione


La situazione è chiaramente definita: un orafo deve produrre 18 monete d’oro e ne produce 17
uguali, mentre nell’ultima sottrae parte dell’oro e quindi una moneta risulta essere più leggera
delle altre.

Il nostro compito (obiettivo), cioè il goal, è quello di individuare la moneta più leggera.

La definizione della strategia risolutiva


La bilancia cha abbiamo a disposizione per smascherare l’imbroglione è quella a due bracci, che
non è in grado di indicare il valore numerico del peso ma solo:
– se i due bracci sono in equilibrio, il che significa che su di essi è presente la stessa quantità d’oro;
– se un piatto si abbassa più dell’altro, il che significa che in esso è presente più oro, che ci
permette di dedurre che nell’altro piatto è presente la moneta “tarocca”!

Il vincolo che abbiamo è quello di effettuare solo tre pesate!

5
UNITÀ 1 - Dal problema al programma

In questo caso, per trovare la soluzione non è sufficiente indicare in sequenza le operazioni da
compiere perché… innanzitutto è necessario “scoprire” come arrivare alla soluzione, cioè avere
un’idea di come procedere, quale strategia adottare.

Una prima idea consiste nel collocare una metà delle monete su un piatto e l’altra metà sull’altro:
in questo modo, individuiamo il “gruppo di 9” dove è presente la moneta falsa.
Se ripetiamo la stessa operazione per altre due volte riusciamo a ridurre il gruppo di 9 monete
dapprima a 4 e infine a 2, ma… ci manca una pesata per l’ultimo confronto!
Questo “tentativo” ci fornisce comunque un indizio: l’unica possibilità che abbiamo per risolvere
l’enigma è quello di avere come ultima pesata solo due monete da confrontare tra loro.
Anche se alla terza pesata ci arriviamo con tre monete possiamo comunque risolvere il problema:
pesando due monete a caso prese dal gruppo di tre, infatti, abbiamo due possibili situazioni:
– bilancia in equilibrio: la terza moneta, quella “non pesata”, è la più leggera;
– bilancia non in equilibrio: nel piatto ”più in alto” c’è la moneta più leggera.

Ripercorrendo il procedimento a ritroso, otteniamo che:


– l’ultima pesata prevede il confronto tra due monete scelte tra tre monete per trovare il risul-
tato;
– la pesata intermedia deve portare a individuare un gruppo di tre monete comprendente la mo-
neta tarocca: quindi, se alla seconda pesata abbiamo nove monete da confrontare, possiamo
successivamente raggiungere il nostro obiettivo, pesando due gruppi di tre monete:
• se i bracci sono in equilibrio la moneta falsa e nel terzo gruppo;
• altrimenti è in uno dei due gruppi sulla bilancia;
– la prima pesata deve individuare un gruppo composto al massimo di nove monete, che
sappiamo di poter “analizzare” con le pesate successive: dato che partiamo con 18 monete,
basta posizionarne metà sopra ogni braccio e... il gioco è fatto!

ULTIMA PESATA PESATA INTERMEDIA PRIMA PESATA

3 monete (3 gruppi da 1) 9 monete (3 gruppi da 3) 18 monete (2 gruppi da 9)

A questo punto, abbiamo individuato la strategia:


1 suddividiamo le 18 monete in 2 gruppi da 9 monete;
2 effettuiamo la prima pesata e individuiamo il gruppo comprendente la moneta più leggera;
3 effettuiamo la seconda pesata prendendo il gruppo con la moneta falsa e dividendolo in tre
gruppi da 3 monete: confrontiamo due gruppi presi a caso e otteniamo, come prima, che:
– la bilancia è sbilanciata, quindi in un piatto è presente la moneta falsa;
– la bilancia è in equilibrio, quindi la moneta falsa è nel terzo gruppo;

In entrambe le situazioni siamo quindi in grado di ridurre il numero delle monete da confrontare
a sole 3 monete!

4 effettuiamo la terza pesata prendendo due monete a caso tra quelle presenti nel gruppo di tre:
– se la bilancia è sbilanciata, in un piatto è presente la moneta falsa;
– se la bilancia è in equilibrio, la moneta falsa è la terza, quella esclusa dalla pesata.

In entrambi i casi abbiamo trovato la soluzione!

Possiamo osservare che la nostra strategia può essere utilizzata anche con un problema con dati
iniziali diversi (istanza), per esempio con 24 monete:
– prima pesata: suddividendo le monete in tre gruppi da 8 individuiamo il gruppo che contiene
la moneta tarocca;

6
Lezione 1 Dal problema all’algoritmo

– seconda pesata: suddividendo il gruppo di 8 così individuato in tre gruppi rispettivamente di


3-3-2 monete individuiamo il gruppo di 3 (o di 2) contenente quella falsa;
– terza pesata: siamo arrivati nella medesima situazione del primo esempio.

La strategia che risolve un problema permette di risolvere problemi simili, cioè quelli della stessa
“famiglia”, che si differenziano solo per il valore dei dati iniziali (istanze di un problema).

Possiamo facilmente constatare che con questo metodo e tre pesate al massimo è possibile individuare
una moneta tarocca nascosta tra 27 monete.

PRIMA PESATA PESATA INTERMEDIA ULTIMA PESATA

27 monete 9 monete 3 monete

Se aggiungiamo una pesata, con un totale di 4 pesate le monete “confrontabili” divengono 81: possiamo
dedurre la regola generale formulandola nel modo seguente: monete = 3nr pesate

Il concetto di algoritmo
Abbiamo visto che, partendo dal problema per arrivare alla soluzione, è necessario analizzare
dettagliatamente la situazione e individuare la strategia risolutiva, cioè “trovare” l’idea che
risolve la situazione.

L’IDEA LA SOLUZIONE
IL PROBLEMA L’ANALISI
(LA STRATEGIA) (L’ALGORITMO)

Quando la strategia risolutiva è stata definita, quindi quando si è “scoperto” il criterio risolutivo
del problema, bisogna “scrivere” le singole istruzioni che l’esecutore deve compiere, in sequenza,
una dopo l’altra.

L’insieme delle operazioni che permettono di risolvere un problema prende


Algoritmo il nome di algoritmo .
Il termine algoritmo è una “deforma-
zione” del nome del matematico arabo
al-Khwarizmi, vissuto nel IX secolo d.C., Si può anche definire più semplicemente un algoritmo come un “metodo
ritenuto l’ideatore del procedimento che di elaborazione da applicare a certi dati iniziali per ottenere dei dati finali o
consente di effettuare il calcolo della risultati”.
moltiplicazione tra due numeri mediante
la disposizione a cifre incolonnate (che ESEMPIO
è quella che usiamo ancora oggi).
Anche la ricetta per la preparazione della pizza o di un
qualunque piatto è a tutti gli effetti un algoritmo, dato
AREA DIGITALE che descrive a partire dagli ingredienti le operazioni che,
Da dove viene il termine in sequenza, devono essere eseguite passo passo, per
algoritmo? ottenere come risultato il piatto desiderato.

L’algoritmo è quindi una sequenza ordinata di passi semplici che hanno lo


scopo di portare a termine un compito a volte complesso.

7
UNITÀ 1 - Dal problema al programma

Affinché un esecutore possa eseguire un algoritmo, questo deve avere le seguenti caratteristiche:
– generalità, cioè risolvere tutti i problemi di una certa classe: per esempio, l’algoritmo che
effettua la somma di due numeri deve portare al risultato corretto indipendentemente dal
valore dei due numeri;
– finitezza: l’algoritmo deve essere composto da un numero finito di istruzioni ordinate e deve
terminare la sua elaborazione in un numero finito di passi in un tempo finito;
– realizzabilità: l’algoritmo deve essere comprensibile e realizzabile da chi lo deve eseguire, cioè
deve essere molto dettagliato e composto di istruzioni molto elementari non ulteriormente
scomponibili;
– non ambiguità: l’esecutore deve interpretare in modo univoco le istruzioni;
– completezza: significa che devono essere previste tutte le possibilità che possono verificarsi du-
rante l’esecuzione e per ognuna devono essere definite le azioni da svolgere;
– riproducibilità: ogni volta che viene eseguito l’algoritmo con gli stessi dati di partenza si
devono ottenere gli stessi risultati (determinismo).

ESEMPIO
È possibile scrivere un algoritmo che descrive le operazioni per “trasferire il Co-
losseo sulla luna”, in quanto esiste un esecutore in grado di compiere tutte le
operazioni necessarie alla sua realizzazione, e cioè:
– smontare il Colosseo;
– impacchettarlo;
– portarlo sulla luna, anche effettuando più viaggi;
– rimontarlo sulla luna.

Non sappiamo però in quanto tempo porteremo a termine le operazioni, ma possiamo essere certi
che finiranno in un tempo finito, anche se magari “occorrerà qualche anno!”
Non possiamo invece scrivere un algoritmo per colorare le nuvole, oppure per compilare la schedina
vincente al totocalcio.

Algoritmi ed esecutori
Oltre agli uomini, i principali esecutori di algoritmi sono le macchine: una macchina “non è in-
telligente”, ed è capace solo di eseguire istruzioni molto elementari e senza alcuna capacità
critica o di ragionamento autonomo, limitandosi a svolgere automaticamente dei compiti ripe-
titivi, sulla base delle istruzioni ricevute.
L’“istruzione delle macchine” avviene mediante il procedimento che prende il nome di pro-
grammazione: questa operazione consiste nel “trascrivere” l’algoritmo mediante un linguaggio
particolare che la macchina “è in grado di capire” e di inserirlo al suo interno in modo che lo
possa eseguire sotto forma di programma.

PROBLEMA ALGORITMO PROGRAMMA

Indichiamo con il termine programma l’insieme delle operazioni che vengono inserite nella mac-
china, che sono la traduzione dell’algoritmo (la sua codifica) in istruzioni semplici che la macchina
è in grado di eseguire.

Non tutte le macchine sono in grado di eseguire programmi, e inoltre ogni macchina è in grado
di eseguire solo un limitato gruppo di istruzioni.

8
Lezione 1 Dal problema all’algoritmo

ESEMPIO
Il distributore di caffè è una macchina automatica (automa ) in grado di ripetere
un programma con molteplici varianti.

Elenchiamo le operazioni che deve essere in grado di svolgere:


– acquisire delle monete e contarle;
– selezionare una bevanda;
– confrontare il costo con le monete inserite;
– se le monete inserite superano il costo del prodotto, predisporre e dare il resto;
– acquisire la quantità di zucchero desiderata;
– iniziare l’erogazione e attenderne la terminazione;
– segnalare la disponibilità del prodotto al cliente.

Non è però certo in grado di eseguire il semplice calcolo del prodotto di due nu-
Automa meri.
Un automa è una macchina capace di
svolgere in maniera automatica delle Anche la calcolatrice è una macchina programmata, che ha al suo interno un insieme
operazioni particolari più o meno com-
di programmi che ricevono dall’utente un insieme di informazioni in merito a:
plesse che portano a un preciso risultato
– tipo di operazione da eseguire;
per il quale è stata programmata.
– numeri (dati) da elaborare.

I dati forniti dall’utente alla macchina per essere elaborati si chiamano dati in ingresso (o in input).
Il programma esegue i calcoli e visualizza i risultati all’utente sul display, “ritornando” un risultato
in uscita, cioè in output.

Quello appena descritto è lo schema generale di funzionamento di un sistema di elaborazione.

Praticamente, tutti i programmi si basano su questo schema, composto da una fase di input, una
di elaborazione e una di output, che viene ripetuto più volte: pensiamo per esempio ai videogiochi
dove il giocatore sfida il computer a un solitario con le carte, o a uno “sparatutto”, oppure a un
gioco di ruolo o di strategia.

A ogni mossa del giocatore il calcolatore elabora una contromossa e la esegue visualizzando il ri-
sultato sullo schermo.

M E T T IT I A LL A P ROVA
 Esame di un problema  Strategia risolutiva  Scomposizione in istruzioni/passi
Un agricoltore deve diluire un sacco di fertilizzante in 20 litri d’acqua, ma ha a di-
AREA DIGITALE sposizione un annaffiatoio con capacità di 25 litri contenente 16 litri d’acqua e due
Soluzione del problema contenitori rispettivamente da 5 e 3 litri. Come può operare l’agricoltore?
dell’annaffiatoio Descrivi a parole le sequenza delle operazioni necessarie a ottenere esattamente
20 litri d’acqua nell’annaffiatoio.

9
UNITÀ 1 - Dal problema al programma

VERIFICA... le conoscenze
SCELTA MULTIPLA
1 Quale delle seguenti affermazioni è vera? 4 La comprensione del problema viene agevolata:
a Gli algoritmi sono problemi (2 risposte)
b I programmi sono problemi a dalla astrazione
c I problemi sono algoritmi b dalla lingua utilizzata
d Gli algoritmi sono programmi c dal linguaggio di programmazione
d dalla modellazione
2 Quale di queste affermazioni relative ai problemi
è vera? 5 Quale tra i seguenti non è uno strumento utile alla
a Il calcolatore risolve problemi definizione della strategia?
b L’analista studia il problema a L’utilizzo dell’esperienza passata
c Il programma risolve un problema b La scomposizione dei problemi in sottoproblemi
d La soluzione di un problema dipende dai dati c L’utilizzo di un personal computer
d Il procedimento per tentativi
3 Nella fase di analisi si devono eliminare:
(2 risposte) 6 Quale tra i seguenti non è una caratteristica del-
a i reali obiettivi del problema l’algoritmo?
b le regole da applicare a Deve essere generale, cioè risolvere un insieme di
c i dettagli inutili problemi
d i dati espliciti b Opera su dati in ingresso producendo un risultato
e i dati impliciti in uscita
f i dettagli ambigui c Deve avere un numero preciso di istruzioni
d Il risultato viene prodotto in un tempo finito
e Deve essere deterministico

VERO/FALSO

1 Gli algoritmi sono solo per i computer.


2 Gli algoritmi sono programmi.
3 I calcolatori eseguono i problemi.
Verifica di fine Lezione

4 Gli uomini possono eseguire algoritmi.

DOMANDE A RISPOSTA APERTA

1 Indica le differenze tra la fase di analisi e quella di definizione della strategia.


2 Cosa si intende per comprensione del problema?
3 Cosa si intende per strategia risolutiva?
4 Da dove deriva il termine algoritmo?
5 Quali sono le caratteristiche di un algoritmo?
6 Fornisci una definizione di programma.
7 Ricerca, utilizzando Internet, la storia degli automi e delle macchine automatiche.
8 Ricerca la storia della prima “truffa informatica” eseguita col “turco giocatore di scacchi”.

10
Lezione 1 Dal problema all’algoritmo

VERIFICA... le competenze AREA DIGITALE


Esercizi per
ESERCIZI l’approfondimento

Per ciascuna situazione individua un possibile algoritmo risolutivo.

1 I secchi d’acqua
Con l’arrivo della primavera il tuo compito è quello di togliere le erbe infestanti dal sentiero ciottolato:
invece che estirparle a mano, quest’anno hai comperato un diserbante che deve essere sciolto in 2 litri
d’acqua. Hai però a disposizione solo un primo secchio di 4 litri e un secondo di tre litri. Come puoi fare?

2 Il leopardo, la capra, il topo e il mais


Un pastore deve attraversare un fiume portando sull’altra riva un leopardo, una capra, un topo e un
sacco di mais. Ha a disposizione una barca a remi con la quale può traghettare un solo oggetto o
animale alla volta. Ma, attenzione! Non può lasciare da soli:
– il leopardo e la capra perché il leopardo mangia la capra;
– il leopardo e il topo perché il leopardo mangia il topo;
– il topo e il mais perché il topo mangia il mais;
– la capra e il mais perché la capra mangia il mais.
Quanti viaggi deve fare per portare sull’altra riva il leopardo, la capra, il topo e il mais?

3 I tre mariti gelosi


Tre mariti e le rispettive tre mogli devono attraversare un fiume su una barca che può trasportare al mas-
simo due persone alla volta. Poiché i mariti sono molto gelosi, nessuna donna deve trovarsi mai assieme
ad altri uomini se non in presenza del proprio marito. Come faranno le tre coppie ad attraversare il fiume?
(Pacioli, 1500, De 3 mariti et 3 mogli gelosi)

4 Fuga da Alcatraz
Tre innocenti ingiustamente condannati a vent’anni di prigione decidono di evadere calandosi dalla
finestra della loro cella, posta a molti metri di altezza. Il primo pesa 195 kg, il suo degno compare pesa
105 kg mentre il più magro pesa 90 kg. Essi dispongono inoltre di un blocco di cemento del peso di 75 kg.
Per fuggire devono utilizzare una corda che scorre su una puleggia. Ai due capi della corda sono fissate
due robuste ceste, in ciascuna delle quali può stare un uomo o il blocco di cemento.
Praticamente devono calarsi in varie fasi, facendosi da contrappeso l’uno con l’altro ed eventualmente
con il blocco di cemento. La differenza dei pesi nelle due ceste non deve superare i 15 kg, altrimenti la di-
scesa è troppo rapida. Verifica di fine Lezione
(Lemon, 1890, Lewis Carroll, 1899)

5 Due aerei uno contro l’altro


Un aereo parte da Londra con velocità di 700 km/ora diretto a Pechino. Contemporaneamente un aereo
parte da Pechino diretto a Londra alla velocità media di 800 km/ora. Le città distano tra loro circa 10.000 km
e hanno 8 ore di fuso orario di differenza. Qual è la distanza tra i due aerei un’ora prima che si incrocino?

LA SFIDA
IL GIOCO DEI FIAMMIFERI
N fiammiferi sono disposti su M file ed è possibile togliere quanti fiammiferi si vuole, ma solo da una
fila alla volta (non è quindi ammesso togliere contemporaneamente fiammiferi da due file). Perde chi
toglie l’ultimo fiammifero. Individua una strategia per vincere sempre.

11

Potrebbero piacerti anche