Paolo Camagni
Riccardo Nikolassy
1
InfoSIA
INFORMATICA PER SISTEMI
INFORMATIVI AZIENDALI
Algoritmi, sistemi operativi
e programmazione Visual Basic
Edizione OPENSCHOOL
1
LIBRODITESTO
2
E-BOOK+
3
RISORSEONLINE
4
PIATTAFORMA
HOEPLI
InfoSIA
PAOLO CAMAGNI
RICCARDO NIKOLASSY
InfoSIA
Informatica per
Sistemi Informativi Aziendali
VOLUME 1
Algoritmi, sistemi operativi
e programmazione Visual Basic
EDITORE ULRICO HOEPLI MILANO
Copyright © Ulrico Hoepli Editore S.p.A. 2015
Via Hoepli 5, 20121 Milano (Italy)
tel. +39 02 864871 – fax +39 02 8052886
e-mail [email protected]
www.hoepli.it
Tutti i diritti sono riservati a norma di legge
e a norma delle convenzioni internazionali
Presentazione
Il testo è destinato all’insegnamento dell’Informatica, previsto dal nuovo ordinamento per
l’articolazione Sistemi Informativi Aziendali degli Istituti Tecnici settore Economico.
La novità dell’opera, concepita secondo le recenti indicazioni ministeriali, è l’integrazione
tra testo cartaceo e risorse digitali, con materiali multimediali che completano l’esposizione e stimolano l’interesse degli studenti. Il testo cartaceo è snello ed essenziale ed è
in stretta sinergia con la parte digitale, con il sito www.hoepliscuola.it e, a discrezione del
docente, con la piattaforma didattica.
L’opera è una novità, che si compone di un volume per ogni singolo anno. Comprende le basi
della progettazione degli algoritmi e presenta la programmazione Visual Basic con esercizi
di difficoltà crescente. L’unità di apprendimento concernente il linguaggio HTML è ricca di
contenuti. Conclude il volume della classe III l’unità dedicata ai Sistemi Operativi.
Le interfacce grafiche, il progetto di database e il linguaggio SQL costituiscono gli argomenti del volume per la classe IV.
Il volume si articola in unità, ognuna suddivisa in più lezioni. Ciascuna lezione ha una
struttura innovativa e cerca di essere una reale guida per l’apprendimento; essa, infatti,
risulta essenziale nei contenuti ma ricca di esempi e di procedure guidate: per ogni
esempio vengono proposte soluzioni guidate passo passo.
Metodologia e strumenti didattici
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.
Caratteristiche dell’opera
L’opera, in quanto Edizione Openschool, consente di:
◗◗ scaricare gratuitamente il libro digitale arricchito (eBook+) che permette in particolare
di:
eseguire tutte le esercitazioni a risposta chiusa in modo interattivo;
accedere ai diversi video tutorial;
accedere alle gallerie di immagini;
scaricare gli approfondimenti tematici, le lezioni e le unità integrative.
◗◗ disporre di ulteriori esercitazioni online utilizzabili a discrezione del docente per classi virtuali
gestibili attraverso la piattaforma didattica.
Aspetti caratterizzanti
◗◗ Testo pienamente in linea con le recenti indicazioni ministeriali in merito alle nuove caratteristiche tecniche e tecnologiche dei libri misti e digitali e al loro stretto coordinamento con
la piattaforma didattica.
◗◗ Totale duttilità di utilizzo in funzione delle scelte didattiche o dotazioni tecnologiche:
• il libro cartaceo + CD-ROM consente di svolgere lezioni complete e attività di laboratorio
con l’apparato offline presente nel CD-ROM;
• l’eBook+, le risorse online e la piattaforma offrono il pieno supporto per una didattica
multimediale, a discrezione delle scelte del docente.
◗◗ Lezioni autoconclusive ricche di esempi ed esercizi, adatte a essere svolte in una lezione o
al massimo due.
◗◗ Teoria ridotta al minimo per privilegiare l’aspetto pratico.
Materiali online
Sul sito www.hoepliscuola.it sono disponibili numerose risorse online. In particolare, per lo
studente: approfondimenti, utili integrazioni del testo e un numero elevato di esercizi sia per
il recupero e il rinforzo sia per l’approfondimento degli argomenti trattati. Per il docente,
una sezione riservata presenta alcune unità didattiche per l’approfondimento delle tematiche affrontate e un insieme di schede aggiuntive per la verifica dei livelli di apprendimento
degli studenti, nonché lezioni (sotto forma di presentazioni in PowerPoint), utilizzabili efficacemente anche con le LIM. Materiali ed esercizi possono essere usati anche per creare attività
didattiche fruibili tramite la piattaforma didattica accessibile dal sito.
CD-ROM per lo studente
Il CD-ROM per lo studente allegato al volume contiene i file degli esempi, nonché il materiale necessario per eseguire le procedure guidate passo passo degli esercizi svolti e da
svolgere e le simulazioni informatiche di fine lezione e di fine unità. Contiene gli esempi dei
codici presenti nel libro di testo.
Struttura dell’opera
ZOOM SU...
Piccole sezioni
di approfondimento
PROVA ADESSO!
Per mettere in pratica,
in itinere, quanto appreso
nella lezione
OSSERVAZIONI
Un aiuto per comprendere
e approfondire
PROCEDURE
STEP BY STEP
Esposizioni semplici
ed essenziali mediante
procedimenti passo-passo
ESERCIZI
Ampia sezione di
esercizi
per la verifica delle
conoscenze e delle
competenze
VII
L’eBook+ riproduce le pagine del libro di testo in versione digitale e interattiva. È utilizzabile su tablet, LIM
e computer e consente di annotare, sottolineare ed
evidenziare il testo, salvando il proprio lavoro per poterlo
consultare e sincronizzare sui diversi dispositivi. Apposite
icone attivano i contributi digitali integrativi.
APPROFONDIMENTI
Contenuti, lezioni
e unità integrative
eBook+
ESERCIZI AGGIUNTIVI
Esercizi per il recupero
e l’approfondimento
VIDEO
Video tutorial
per esemplificare
azioni e procedimenti
ESERCIZI
Esercizi interattivi di varia
tipologia con funzione
di autocorrezione
IMMAGINI
E GALLERIE DI IMMAGINI
Per esemplificare e rappresentare
visivamente i contenuti
LINK
Rimandi interni
al volume per navigare
agevolmente
tra i contenuti
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
DI TESTO
Il libro di testo
è l’elemento cardine
dell’offerta formativa, uno
strumento didattico agile
e completo, utilizzabile
autonomamente
o in combinazione con
il ricco corredo digitale
offine e online. Secondo
le più recenti indicazioni
ministeriali, volume
cartaceo e apparati
digitali sono integrati
in un unico percorso
didattico. Le espansioni
accessibili attraverso
l’eBook+ e i materiali
integrativi disponibili
nel sito dell’editore
sono puntualmente
richiamati nel testo
tramite apposite icone.
+
+
eBOOK+
RISORSE
OnLInE
PIATTAFORMA
DIDATTICA
L’eBook+ è la versione
digitale e interattiva
del libro di testo,
utilizzabile su tablet,
LIM e computer.
Aiuta a comprendere
e ad approfondire
i contenuti, rendendo
l’apprendimento più attivo
e coinvolgente. Consente
di leggere, annotare,
sottolineare, effettuare
ricerche e accedere
direttamente alle
numerose risorse
digitali integrative.
Scaricare l’eBook+
è molto semplice.
È suffciente seguire
le istruzioni riportate
nell’ultima pagina
di questo volume.
Il sito della casa editrice
offre una ricca dotazione
di risorse digitali
per l’approfondimento
e l’aggiornamento.
Nella pagina web dedicata
al testo è disponibile
MyBookBox,
il contenitore virtuale
che raccoglie i materiali
integrativi che
accompagnano l’opera.
Per accedere
ai materiali è suffciente
registrarsi al sito
www.hoepliscuola.it
e inserire il codice coupon
che si trova nella terza
pagina di copertina.
Per il docente nel sito
sono previste ulteriori
risorse didattiche dedicate.
La piattaforma didattica
è un ambiente digitale
che può essere utilizzato
in modo duttile, a misura
delle esigenze della classe
e degli studenti.
Permette in particolare di
condividere contenuti ed
esercizi e di partecipare
a classi virtuali.
Ogni attività svolta viene
salvata sul cloud e rimane
sempre disponibile
e aggiornata.
La piattaforma consente
inoltre di consultare
la versione online
degli eBook+ presenti
nella propria libreria.
È possibile accedere
alla piattaforma attraverso
il sito www.hoepliscuola.it.
Indice
UNITÀ DI APPRENDIMENTO 1
Progettazione di
algoritmi
L1 Problemi e algoritmi
Il calcolatore, i problemi, i programmi
e i linguaggi di programmazione.......................... 2
I problemi e la loro soluzione .................................. 3
Analisi e comprensione del problema ......... 4
Astrazione, modellizzazione
e definizione della strategia ........................................ 5
L’algoritmo............................................................................................. 6
Verifichiamo le conoscenze.......................................... 8
Verifichiamo le competenze ....................................... 8
L2 Conosciamo i linguaggi
di programmazione
Linguaggi informatici ............................................................ 9
Linguaggi ad alto livello................................................. 11
Compilatori e interpreti................................................ 14
La classificazione dei linguaggi
in paradigmi .................................................................................... 17
Conclusioni ...................................................................................... 18
Verifichiamo le conoscenze...................................... 19
Verifichiamo le competenze ................................... 19
L3 Ambienti visuali per la codifica di
programmi: Scratch e BYOB
Cos’è Scratch................................................................................. 20
Installazione di BYOB ...................................................... 22
L’ambiente di lavoro ........................................................... 23
Gli elementi di un programma ........................... 25
Primo programma in BYOB .................................... 27
Conclusioni ...................................................................................... 30
Verifichiamo le competenze ................................... 31
L4 Diagrammi a blocchi e top-down
Introduzione ................................................................................... 34
Prima rappresentazione degli algoritmi ..... 35
Seconda rappresentazione
degli algoritmi............................................................................... 39
Tecnica top-down ................................................................... 42
Equivalenza con i blocchi BYOB .................... 48
Codifica in BYOB degli esempi
della lezione .................................................................................... 50
Verifichiamo le competenze ................................... 55
L5 AlgoBuild: un programma
per realizzare i flow chart
Premessa .............................................................................................. 56
Ciao mondo!................................................................................... 57
Il maggiore tra due numeri
ovvero l’istruzione if........................................................... 59
Il numero pari o dispari,
ovvero il ciclo a condizione .................................... 62
Conclusioni ...................................................................................... 65
Verifichiamo le competenze ................................... 66
L6 Tecniche e strumenti per lo
sviluppo di un programma
Scrivere un programma
Elementi di qualità del software
Gli ambienti di sviluppo
Il ciclo di vita del software
Conclusioni
Verifichiamo le conoscenze
L7 Le applicazioni dell’informatica
Le mille facce dell’informatica
Software programmi e applicazioni
La filiera produttiva informatica
Verifichiamo le conoscenze
Puoi scaricare le lezioni 6 e 7 anche da
hoepliscuola.it
AREA digitale
◗◗ Esercizi
◗◗ Astrazione, modello e soluzione
◗◗ Caratteristiche di un algoritmo
◗◗ Perché usare Scratch e BYOB
XI
UNITÀ DI APPRENDIMENTO 2
Programmare
con Visual Basic
L1 Conosciamo Visual Studio
Visual Studio .................................................................................. 68
La creazione di un nuovo progetto.............. 69
Verifichiamo le conoscenze...................................... 75
L2 Le variabili e il dialogo con
l’utente
Le variabili e le costanti ............................................... 76
Il colloquio con l’utente ................................................ 78
Input e output da linea di comando .......... 79
L’output tramite finestra ............................................ 83
Scambiare il contenuto di due variabili ... 84
L’input tramite finestra ................................................ 85
Verifichiamo le conoscenze...................................... 87
Verifichiamo le competenze ................................... 88
L3 Gli operatori matematici
e le conversioni
Istruzioni in sequenza ..................................................... 89
Gli operatori matematici ............................................. 89
La somma di frazioni ........................................................ 91
Le conversioni tra tipi diversi ............................. 93
Verifichiamo le conoscenze...................................... 95
Verifichiamo le competenze ................................... 96
L4 La selezione semplice
e la selezione doppia
La struttura della selezione semplice ...... 97
Il costrutto Try... Catch ............................................. 100
Verifichiamo le conoscenze.................................. 107
Verifichiamo le competenze ............................... 109
L5 La selezione annidata e multipla
Le variabili boolean ......................................................... 110
Gli operatori logici ............................................................ 111
Blocchi annidati nell’istruzione
di selezione................................................................................... 114
La selezione nidificata ................................................ 114
La selezione multipla .................................................... 117
XII
L6 Il debugging dei programmi
La messa a punto dei programmi....... 123
Gli errori logici ................................... 124
Verifichiamo le conoscenze.................................. 128
Verifichiamo le competenze ............................... 128
AREA digitale
◗◗ Esercizi
◗◗ Come distribuire il programma
◗◗ La notazione scientifica
◗◗ Le diverse finestre di MsgBox
◗◗ Considerazioni sugli operatori booleani
◗◗ Esercizi per il recupero e
l’approfondimento
UNITÀ DI APPRENDIMENTO 3
I cicli, gli array
e le routine
L1 Le strutture di ripetizione
per vero e per falso
La struttura di ripetizione per vero ........ 130
Il concetto di accumulatore
e contatore .................................................................................... 131
La struttura di ripetizione per falso ....... 135
Verifichiamo le conoscenze.................................. 140
Verifichiamo le competenze ............................... 141
L2 Le strutture di ripetizione
con contatore
Introduzione ....................................... 143
Un ciclo dentro un ciclo:
i cicli annidati .................................... 146
Verifichiamo le conoscenze.................................. 149
Verifichiamo le competenze ............................... 150
L3 Le routine: procedure e funzioni
I sottoprogrammi................................ 153
Le procedure: Sub .............................. 154
Le funzioni: Function ......................... 159
Le funzioni predefinite ....................... 161
La ricorsione ...................................... 164
Verifichiamo le conoscenze.................................. 166
Verifichiamo le competenze ............................... 168
L4 Gli array monodimensionali:
i vettori
I vettori............................................... 170
Verifichiamo le competenze ............................... 177
L5 Gli array bidimensionali:
le matrici
Array bidimensionali: le matrici ........ 179
Il calcolo della prima nota ................. 181
Verifichiamo le conoscenze.................................. 187
Verifichiamo le competenze ............................... 188
L6 Gli array: ordinamenti e ricerche
Gli ordinamenti .................................. 191
Ordinamento per scambio
(bubble-sort) ...................................... 192
La ricerca sequenziale ....................... 196
La ricerca binaria o dicotomica ......... 198
Verifichiamo le competenze ............................... 200
L7 Le applicazioni Windows Form
I progetti di Visual Studio .................. 201
Creare un’applicazione
Windows Form ................................... 203
Associare un evento a un controllo .. 208
Gestione degli eventi del Form .......... 211
Eventi pilotati ..................................... 213
Verifichiamo le conoscenze.................................. 214
Verifichiamo le competenze ............................... 215
AREA digitale
◗◗ Esercizi
◗◗ Il teorema di Jacopini-Böhm
◗◗ Le funzioni matematiche
◗◗ Le funzioni per le stringhe
◗◗ Le costanti predefinite
◗◗ Esercizi per il recupero e
l’approfondimento
UNITÀ DI APPRENDIMENTO 4
Il sistema operativo
L1 Generalità sui sistemi operativi
Accendiamo il PC ............................................................... 218
Il sistema operativo ......................................................... 220
Kernel.................................................................................................... 223
Shell......................................................................................................... 223
I sistemi operativi in commercio................ 225
Verifichiamo le conoscenze.................................. 226
L2 Evoluzione dei sistemi operativi
Cenni storici
Sistemi dedicati
Gestione a lotti (1955-1965)
Sistemi interattivi (1965-1980)
Home computing (anni Settanta)
Sistemi dedicati (anni Ottanta)
Sistemi odierni e sviluppi futuri
Verifichiamo le conoscenze
L3 La gestione del processore
Introduzione al multitasking ............................. 227
I processi.......................................................................................... 228
Stato dei processi................................................................ 230
La schedulazione dei processi ........................ 231
User mode e kernel mode ...................................... 233
I criteri di scheduling ................................................... 233
Scheduling a confronto tra sistemi
operativi ............................................................................................ 241
Cenni alle problematiche di
sincronizzazione .................................................................. 241
Verifichiamo le conoscenze.................................. 243
L4 La gestione della memoria
Introduzione ............................................................................... 244
Caricamento del programma ............................ 245
Allocazione della memoria: il
partizionamento.................................................................... 248
Memoria virtuale: introduzione .................... 251
Memoria virtuale: paginazione ....................... 252
Memoria virtuale: segmentazione .............. 255
Verifichiamo le conoscenze.................................. 259
XIII
L5 La memoria secondaria: il file
system
Introduzione ............................................................................... 260
Il concetto di file.................................................................. 261
Struttura della directory .......................................... 264
File nei sistemi multiutente................................ 266
Diritti e protezione dei file ................................. 267
Verifichiamo le conoscenze.................................. 268
L6 Struttura e realizzazione
di un file system
Struttura del file system
Il disco fisso
Allocazione di un file
Realizzazione del file system
Verifichiamo le conoscenze
L7 La sicurezza del file system
La sicurezza del file system
Struttura di memoria terziaria
Verifichiamo le conoscenze
L8 La gestione della I/O
Introduzione
L’hardware di I/O
Trasferimento dati
Il sottosistema di I/O del kernel
Verifichiamo le conoscenze
Puoi scaricare le lezioni 2, 6, 7, 8 anche da
Reti di computer e
programmazione statica
nel Web
L1 Reti di computer e reti
di comunicazione
Le reti di computer.......................................................... 270
Le topologie di rete .......................................................... 272
Il modello ISO/OSI e Internet ......................... 272
I dispositivi di rete ............................................................ 274
Gli indirizzi IP ......................................................................... 275
I protocolli e il routing................................................ 277
La rete Internet ..................................................................... 278
L’architettura del Web ................................................. 279
I servizi di Internet .......................................................... 280
I domini, il DNS e la registrazione
di siti ...................................................................................................... 282
Proxy ...................................................................................................... 283
Verifichiamo le conoscenze.................................. 284
Verifichiamo le competenze ............................... 284
L2 Introduzione all’HTML
hoepliscuola.it
AREA digitale
◗◗ Esercizi
◗◗ Immagini
◗◗ Process control block
◗◗ Cambio di contesto
◗◗ Esempio di schedulazione di un progetto
con Gantt
◗◗ Highest Response Ratio Next scheduling
◗◗ Periodo dell’RTC
◗◗ Il primo calcolatore con disco magnetico
◗◗ Condivisione di file
◗◗ Accesso indicizzato
◗◗ Flag dei diritti nei file Unix
XIV
UNITÀ DI APPRENDIMENTO 5
Il Web .................................................................................................... 285
L’HTML ............................................................................................... 286
La creazione di una pagina ............................... 290
La sintassi HTML ................................................................ 291
L’intestazione di un documento ................... 292
Il corpo del documento (tag <body>).... 294
I paragrafi e la formattazione
del testo ............................................................................................. 296
La definizione del carattere ................................ 300
Verifichiamo le conoscenze.................................. 302
Verifichiamo le competenze ............................... 302
L3 Inseriamo immagini
ed elenchi nella pagina
Le immagini ................................................................................ 304
Le liste ................................................................................................. 307
Verifichiamo le conoscenze.................................. 310
Verifichiamo le competenze ............................... 310
L4 Le tabelle e gli hyperlink
Le tabelle ......................................................................................... 313
I collegamenti ipertestuali (link) ................ 317
Le mappe sensibili ............................................................ 319
Verifichiamo le conoscenze.................................. 322
Verifichiamo le competenze ............................... 323
L5 Multimedialità e moduli nelle
pagine Web
Gli oggetti multimediali ............................................ 325
Inserire applet Java ......................................................... 328
Moduli e server Web ....................................................... 329
Il modulo di immissione form ......................... 329
Gli elementi che compongono i moduli
(campi) ............................................................................................... 331
Come disabilitare i controlli ............................ 335
Verifichiamo le conoscenze.................................. 337
Verifichiamo le competenze ............................... 338
L6 Introduzione ad HTML 5
Novità di HTML 5 rispetto al passato..... 340
La struttura di un documento
HTML 5.0 ........................................................................................ 341
Immagini e oggetti multimediali.................. 348
Verifichiamo le conoscenze.................................. 351
Verifichiamo le competenze ............................... 352
L7 Introduzione ai fogli di stile
I fogli di stile............................................................................... 354
Gli stili ................................................................................................. 355
L’applicazione degli stili............................................ 357
L’applicazione degli stili in cascata ......... 361
Classi e psudoclassi ......................................................... 361
Il selettore id.............................................................................. 366
Verifichiamo le conoscenze.................................. 367
Verifichiamo le competenze ............................... 367
L8 Il box model CSS
Il box model ................................................................................ 369
La proprietà overflow ................................................... 373
Il posizionamento dei box ..................................... 375
Verifichiamo le competenze ............................... 381
L9 Il layout con i fogli di stile
L’impaginazione dei siti Web
Le strategie di layout
Layout multicolonna
Verifichiamo le competenze
Puoi scaricare la lezione 9 anche da
hoepliscuola.it
AREA digitale
◗◗ Esercizi
◗◗ Immagini
◗◗ Video
◗◗ Usare i frame
◗◗ Il fuoco dei campi modulo
◗◗ Le versioni di CSS
◗◗ Creare box con bordi tondi
Come utilizzare il coupon per scaricare
la versione digitale del libro (eBook+)...... 384
XV
UNITÀ DI APPRENDIMENTO
Progettazione
di algoritmi
1
L1 Problemi e algoritmi
L2 Conosciamo i linguaggi di programmazione
L3 Ambienti visuali per la codifica di programmi:
L4
L5
L6
L7
Scratch e BYOB
Diagrammi a blocchi e top-down
AlgoBuild: un programma
per realizzare i flow chart
Tecniche e strumenti per lo sviluppo di un
programma
Le applicazioni dell’informatica
Conoscenze
•
•
•
•
•
•
•
Acquisire la definizione e le caratteristiche di un algoritmo
Comprendere la relazione tra algoritmo e programma
Acquisire il concetto di linguaggio di programmazione
Comprendere la differenza tra compilatore e interprete
Acquisire il concetto di paradigma
Conoscere la simbologia dei diagrammi di flusso
Individuare le diverse fasi di realizzazione di un programma
AREA digitale
◗◗ Esercizi
◗◗ Astrazione, modello e soluzione
◗◗Caratteristiche di un algoritmo
◗◗Perché usare Scratch e BYOB
Competenze
•
•
•
•
•
Distinguere i linguaggi di programmazione
Utilizzare la terminologia informatica
Distinguere le fasi della compilazione
Distinguere le fasi del ciclo di vita di un programma
Descrivere la soluzione di semplici problemi mediante
algoritmi
• Utilizzare la tecnica top-down per descrivere gli algoritmi
• Utilizzare uno strumento di editing visuale
Abilità
•
•
•
•
•
Saper catalogare un linguaggio
Riconoscere un errore sintattico o semantico
Individuare il software nelle diverse attività
Utilizzare la tecnica top-down per codificare gli algoritmi
Utilizzare i diagrammi di flusso per rappresentare gli
algoritmi
• Utilizzare BYOB e Algobuild per codificare gli algoritmi
Esempi proposti
Consulta il CD-ROM in allegato al volume
Soluzioni (esercizi, verifiche)
Puoi scaricare il file anche da
hoepliscuola.it
LEZIONE 1
Problemi
e algoritmi
In questa lezione impareremo...
◗◗ che◗cos’è◗un◗problema◗e◗come◗affrontarlo
◗◗ che◗cosa◗sono◗un◗algoritmo◗e◗un◗programma
◗◗ che◗cosa◗sono◗un◗linguaggio◗di◗programmazione◗e◗un◗linguaggio◗macchina
■■ Il calcolatore, i problemi, i programmi e i linguaggi
di programmazione
Come abbiamo già detto, il PC è una macchina complessa in grado di eseguire milioni di
istruzioni al secondo, dotata di una memoria capace di contenere enormi quantità di dati,
siano essi documenti, suoni, filmati o semplici numeri.
Queste sue caratteristiche ci consentono di utilizzarlo per svolgere compiti molto complicati, anche se, per far sì che ciò sia possibile, dobbiamo indicargli le operazioni da
compiere attraverso una serie di istruzioni (programma) che consentono alla macchina di
elaborare i dati in maniera appropriata.
dati iniziali
programma
dati finali
Il compito che deve essere svolto dal calcolatore è generalmente la soluzione di un problema, che può essere di diversa natura: matematica, scientifica, economica, finanziaria ecc.
Il programmatore o, meglio, l’analista studia il problema e ne individua un algoritmo risolutivo, cioè l’insieme delle operazioni (istruzioni) che devono essere eseguite per raggiungere il risultato.
2
Problemi e algoritmi
Lezione 1
L’insieme di queste istruzioni prende il nome di programma, e ogni singola istruzione deve
essere scritta secondo rigorose regole (sintassi) affinché l’elaboratore possa comprenderla
correttamente.
problema
algoritmo
programma
Il programma, dunque, viene scritto in un linguaggio di programmazione costituito da
un insieme di regole sintattiche che forniscono al calcolatore le istruzioni necessarie per
portare a termine un determinato compito.
Il linguaggio di programmazione usato dal programmatore (noto anche come linguaggio ad
alto livello) è, di fatto, molto lontano dal codice binario (linguaggio a basso livello), cioè dal
formato dei comandi che un PC è in grado di eseguire. Affinché l’elaboratore sia in grado di
comprenderlo, è necessario che venga effettuata una traduzione da un linguaggio all’altro.
Questa operazione viene eseguita da particolari programmi, detti compilatori o traduttori,
che trasformano il codice sorgente, scritto dal programmatore, in codice macchina, eseguibile dal calcolatore.
linguaggio ad alto livello
compilatore
linguaggio a basso
livello (binario)
■■ I problemi e la loro soluzione
Alla base della scrittura di un programma c’è quindi l’esigenza di risolvere un problema.
Il significato del termine “problema”, che deriva dal greco probléma (“questione proposta”, da probállein, “gettare davanti”), può essere ben illustrato dalla seguente definizione:
“Situazione difficile che si deve affrontare e risolvere e che presenta soluzioni alternative”.
Per essere risolto, un problema deve essere innanzitutto compreso.
La comprensione passa attraverso una fase di analisi, detta “studio della situazione reale”
o, appunto, fase di analisi.
Si parte quindi dal problema per arrivare al programma individuando la soluzione: questo
è il principale compito del programmatore, cioè la ricerca della soluzione.
Ed è anche il principale problema: come si fa ad arrivare alla risoluzione di un dato problema?
Se consideriamo il problema come “una questione da risolvere partendo da elementi noti
mediante il ragionamento” ne deriva che il programmatore dapprima si pone una serie di
domande necessarie proprio per avere gli elementi della conoscenza del problema e solo
successivamente può iniziare il lavoro di progetto per l’“individuazione di un algoritmo”
risolutivo.
Ma molte domande attendono una risposta.
◗■ In che cosa consiste il problema?
3
UdA 1
Progettazione di algoritmi
◗■ Come si costruisce la soluzione di un problema?
◗■ Qual è il giusto punto di partenza?
◗■ Quali metodologie o tecniche utilizzare?
Il primo problema è proprio quello di “capire il problema”! Questo non è solo di aritmetica, di geometria, di algebra ma generalmente è “una questione, situazione difficile o
complessa di cui si cerca la soluzione”: quindi il primo passo è quello di capire che cosa
si deve risolvere (analisi del problema).
Il secondo problema inizia quando finisce il primo: una volta individuato che cosa si deve
risolvere (e come si vedrà già questo non sempre è semplice!) “arriva il bello”, poiché
occorre ricercare la soluzione individuando come risolvere il problema (individuazione
della strategia risolutiva).
il problema
l’idea
il programma
Un “indizio che ci illumina” sul lavoro del programmatore lo possiamo trovare nella differenza
tra problema e mistero: “il mistero è una porta chiusa, di cui non si ha la chiave; il problema è
una porta da aprire, di cui si deve cercare la chiave, la serratura, il sistema di apertura”.
Il programmatore è quindi dapprima un investigatore e successivamente uno stratega che
con esperienza, intuito, fantasia e, perché no, intelligenza affronta il processo creativo relativo
alla ricerca della “chiave di soluzione” del problema.
■■ Analisi e comprensione del problema
Analisi del problema
Quindi l’analisi consiste nell’affrontare in modo sistematico il problema, studiando i vari
aspetti della sua formulazione: mediante l’analisi scomponiamo situazioni complesse e
piene di incognite in elementi riconoscibili e accessibili.
La comprensione del problema è necessaria per poter ricavare dalla realtà tutte quelle
informazioni che risultano essenziali al fine di risolvere il problema in oggetto.
Occorre preliminarmente delimitare con precisione l’area di interesse, ricordando che più
ampia è la portata del problema da risolvere, maggiori diventano le complessità da affrontare sul piano concettuale, progettistico e operativo.
Quindi bisogna individuare con precisione l’insieme dei dati ai quali si intende estendere i risultati e specificarne esattamente le condizioni di eleggibilità, ovvero le caratteristiche che ne determinano l’inclusione o l’esclusione (casi particolari e casi limite di
funzionamento).
Comprensione del problema
Sovente un problema è espresso in modo confuso o fuorviante e una prima naturale esigenza consiste nell’eliminare ogni tipo di ambiguità dalla sua formulazione.
4
Problemi e algoritmi
Lezione 1
Per ottenere tale risultato è indispensabile eseguire un’operazione di “maquillage” del
testo intervenendo con il duplice scopo di:
◗■ evidenziare
– i reali obiettivi del problema;
– le regole;
– i dati espliciti e impliciti;
◗■ eliminare
– i dettagli inutili e ambigui.
Per agevolare le operazioni di comprensione del problema il programmatore utilizza due
strumenti fondamentali: l’astrazione e la creazione del modello.
■■ Astrazione, modellizzazione e definizione della strategia
Astrazione
L’◀ astrazione ▶ è il primo importante
strumento di lavoro nella fase di progettazione di un programma.
◀ é il risultato di un processo secondo il
quale assegnato un sistema, complesso
quanto si voglia, si possono tenerne nascosti alcuni particolari evidenziando quelli che si ritengono essenziali ai fini della
corretta comprensione del sistema. ▶
Con l’astrazione il problema viene
semplificato, ne vengono individuate
le caratteristiche principali e contemporaneamente viene “scollegato dalla sua natura fisica” mediante il processo di modellizzazione.
Modellizzazione
Il ◀ modello ▶ è una rappresentazione
◀ Definiamo modello una rappresentaziodel problema sotto una forma diversa
ne semplificata della situazione in esame
che esplicita gli elementi presenti, le loro
da quella fisica. A seconda del progetproprietà e le relazioni tra essi. Il processo
tista o delle esigenze e dell’ambito in
di modellazione porta sempre a una astracui si opera, è possibile che uno stesso
zione del modello reale. ▶
problema possa essere associato a:
◗■ un modello grafico;
◗■ un modello tabellare;
◗■ un modello simbolico (per esempio mediante formule matematiche).
Tutte e tre le modellizzazioni possono anche essere usate contemporaneamente per
descrivere lo stesso problema.
Definizione della strategia
I modelli rappresentano lo strumento attraverso il quale viene concretizzato il concetto di
astrazione fornendo la base del processo di risoluzione del problema.
Il processo di ricerca della soluzione applica su tale modello un insieme di conoscenze
e la soggettiva capacità di utilizzarle per elaborare una strategia risolutiva, ma la ricerca
della soluzione non è guidata da un insieme di regole generali che consentano di trovare
automaticamente la soluzione.
5
UdA 1
Progettazione di algoritmi
La ricerca può essere svolta in direzioni diverse: esistono tecniche che, partendo dai
dati iniziali, cercano di arrivare alla soluzione applicando delle regole o degli operatori
(metodi diretti), e tecniche che partendo dalle possibili soluzioni, applicando opportuni
operatori, cercano di ottenere i dati di partenza (metodi inversi).
I metodi si basano su:
◗■ l’utilizzo dell’esperienza passata:
– somiglianza con altri problemi noti;
– analogia con altri problemi risolti;
◗■ la scomposizione dei problemi in sottoproblemi;
◗■ la conoscenza dell’argomento;
◗■ il procedimento per tentativi.
AREA
digitale
Astrazione, modello e soluzione
Gli strumenti a disposizione del progettista sono molteplici, tutti di medesima importanza
e tutti da utilizzarsi in contemporanea, ma ogni strumento deve sempre essere integrato
e confrontato con l’esperienza e le abilità creative proprie del progettista per vincere la
sfida creativa-intellettuale di riuscire a dare vita alla soluzione del problema e quindi al
progetto software.
Tra gli strumenti ricordiamo:
◗■ le conoscenze di matematica e algebra;
◗■ l’intuito;
◗■ la logica e il ragionamento deduttivo/induttivo;
◗■ la fantasia e l’ingegno.
Ricapitolando, per arrivare al progetto di programmi:
◗■si inizia dallo studio di problemi molto semplici, come ad esempio il calcolo della spesa in
euro per una settimana di viaggi di andata e ritorno da casa a scuola, oppure il calcolo dei
giorni che mancano alla fine delle lezioni. In questi casi specifici, dato che la situazione è
nota, siamo facilmente in grado di risolverla;
◗■si passa poi ad affrontare problemi sempre più complessi ma, anche di fronte a questi, è tuttavia sempre la fase di analisi e di comprensione che ci consente di giungere alla soluzione;
◗■quando si è trovata la soluzione possiamo passare alla scrittura del programma vero e
proprio.
■■ L’algoritmo
Una volta individuata la strategia risolutiva, quindi quando
si è “scoperto” il criterio risolutivo del problema, si scrivono
le singole istruzioni da compiere, una dopo l’altra. L’insieme
delle operazioni che permettono di risolvere un problema
prende il nome di algoritmo, dal nome del matematico arabo
Al Khwarismi, vissuto nell’800 d.C., ritenuto l’ideatore del
procedimento che consente di effettuare il calcolo della moltiplicazione tra due numeri mediante la disposizione a cifre
incolonnate (che è quella che usiamo ancora oggi).
L’algoritmo è quindi una sequenza ordinata di passi semplici
che hanno lo scopo di portare a termine un compito comples6
Problemi e algoritmi
Lezione 1
so. Ricorrendo a un esempio culinario, la ricetta per la preparazione di un piatto può
essere considerata come un algoritmo che, partendo da un insieme di singoli ingredienti
ed eseguendo una sequenza di passi, porta come risultato finale al piatto in questione.
L’algoritmo deve avere le seguenti caratteristiche:
◗■ deve essere generale, cioè risolvere un insieme di problemi;
◗■ opera su dati in ingresso producendo un risultato in uscita;
◗■ le istruzioni sono ordinate e in numero finito;
◗■ le istruzioni sono chiare e interpretate in modo univoco da chi le esegue;
◗■ il risultato viene prodotto in un tempo finito;
◗■ ogni volta che viene eseguito con gli stessi dati produce gli stessi risultati.
Durante la fase di progetto vengono usate due modalità per descrivere gli algoritmi (e saranno quelle che anche noi utilizzeremo):
◗■ il diagramma a blocchi (o flow chart), che è un metodo grafico che bene si presta a rappresentare gli algoritmi:
◗■ il linguaggio di progetto (o pseudocodifica), che è composto dalla scrittura ordinata delle
istruzioni dell’algoritmo in un formato molto vicino al linguaggio di programmazione, ma
è molto semplificato e utilizza come lingua l’italiano.
AREA
digitale
Caratteristiche di un algoritmo
7
UdA 1
Progettazione di algoritmi
Verifichiamo le conoscenze
1. Risposta multipla
1 Quale di queste affermazioni è vera?
a. gli algoritmi sono problemi
b. i programmi sono problemi
c. i problemi sono algoritmi
d. gli algoritmi sono programmi
2 Quale di queste affermazioni relative ai problemi è
vera?
a. il calcolatore risolve problemi
b. l’analista studia il problema
c. il programma risolve un problema
d. la soluzione di un problema dipende dai dati
3 Quale di queste affermazioni è vera?
(2 risposte)
a. gli algoritmi sono solo per i computer
b. gli algoritmi sono programmi
c. i calcolatori eseguono i problemi
d. gli uomini possono eseguire algoritmi
e. il calcolatore interpreta i dati
AREA digitale
4 Nella fase di analisi si devono eliminare:
(2 risposte)
a. i reali obiettivi del problema
b. le regole da applicare
c. i dettagli inutili
d. i dati espliciti
e. i dati impliciti
f. i dettagli ambigui
8
5 La comprensione del problema viene agevolata
(2 risposte)
a. dalla astrazione
b. dalla lingua utilizzata
c. dal linguaggio di programmazione
d. dalla modellizzazione
6 Quale tra i seguenti non è un tipo di modello?
a. grafico
b. simbolico
c. iconografico
d. tabellare
7 Quale tra i seguenti non è uno strumento utile alla
definizione della strategia?
a. l’utilizzo dell’esperienza passata
b. la scomposizione dei problemi in sottoproblemi
c. l’utilizzo di un personal computer
d. il procedimento per tentativi
8 Quale tra i seguenti non è una caratteristica
dell’algoritmo?
a. deve essere generale, cioè risolvere un insieme di
problemi
b. opera su dati in ingresso producendo un risultato
in uscita
c. deve avere un numero preciso di istruzioni
d. il risultato viene prodotto in un tempo finito
e. deve essere deterministico
Verifichiamo le competenze
1. Risposta aperta
1 Descrivi i passi da effettuare per passare dal problema all’algoritmo.
2 Indica le differenze tra la fase di analisi e quella di progetto.
3 Cosa si intende per comprensione del problema?
4 In cosa consiste l’astrazione?
5 Quali sono i modelli più utilizzati in informatica?
6 Cosa si intende per strategia risolutiva?
7 Descrivi i metodi utilizzati nella definizione della strategia.
8 Da cosa deriva il termine algoritmo?
9 Quali sono le caratteristiche di un algoritmo.
10 Indica le due modalità a disposizione nella fase di progetto per descrivere gli algoritmi.