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.