PROBLEMA: «Stabilire se un numero è pari o dispari ?» 1 COSTRUZIONE DI UN ALGORITMO Il problema potrebbe essere schematizzato semplicemente così: PARI O DISPARI ? Questo è il dilemma! 1 -ACQUISISCO PARI! 2 COSTRUZIONE DI UN ALGORITMO Analizzando con maggior dettaglio i singoli step: INIZIO 1) INPUT Acquisisco il dato da analizzare (un numero) e lo tengo a mente. Acquisisco N 2) ALGORITMO Valuto, in base alla mia esperienza, se il numero è pari o dispari. Nel flowchart il rombo indica una decisione (SE). E’ pari ? NO SI Soluzione=«Dispari» Soluzione=«Pari» 3) OUTPUT Espongo il risultato (soluzione) della mia analisi Espongo la soluzione FINE 3 COSTRUZIONE DI UN ALGORITMO 1 – INPUT: ACQUISIZIONE DEI DATI (A) Dammi un numero: (C) (B) 12 La fase di acquisizione dei dati può corrispondere ad una esplicita richiesta (A) seguita dalla corrispondente risposta (B). Ricevuto il dato lo tengo a mente (C) per la successiva fase di analisi Acquisisco N 4 COSTRUZIONE DI UN ALGORITMO 2 – ALGORITMO: METODO PER OTTENERE LA SOLUZIONE «E’ PARI ?» è un concetto generale. Devo trasformarlo in una sequenza di istruzioni elementari che posso eseguire. Tale sequenza deve definire una corretta «procedura» per risolvere il problema. Questa «procedura» corrisponde all’ALGORITMO. Il risultato, ottenuto eseguendo l’algoritmo, deve essere «ricordato» per poi essere utilizzato nella fase successiva. DATO Il rombo indica una decisione effettuata sulla base della condizione scritta al suo interno. E’ pari ? SI NO DATO SI Soluzione=«Pari» E’ divisibile per 2 ? E’ multiplo di 2 ? Il resto della divisione per 2 è zero ? NO Soluzione=«Dispari» 5 COSTRUZIONE DI UN ALGORITMO 3 – OUTPUT: ESPOSIZIONE DEI RISULTATI La fase di esposizione dei risultati corrisponde con la loro enunciazione. Signori: il numero è pari! Espongo la soluzione 6 COSTRUZIONE DI UN ALGORITMO Il flusso delle attività svolto per risolvere il problema iniziale viene schematizzato in questo flowchart : 1 - INPUT N 2 - ALGORITMO: N è divisibile per 2 ? N è multiplo di 2 ? N Diviso per 2 da resto zero ? NO Soluzione=«dispari» SI Soluzione=«pari» Soluzione 3 - OUTPUT 7 COSTRUZIONE DI UN ALGORITMO Generalizzando un algoritmo (costruito sfruttando le nostre conoscenze {esperienza}) risolve un problema rispetto a dei dati in ingresso e produce dei risultati in uscita. PROBLEMA DA RISOLVERE ESPERIENZA + ANALISI ALGORITMO DISPOSITIVI DI INPUT DISPOSITIVI DI OUTPUT 8 COSTRUZIONE DI UN PROGRAMMA L’attività umana, volta a risolvere un problema, trasposta nel calcolatore potrebbe essere così schematizzata: PROBLEMA DA RISOLVERE ISTRUZIONI + ALGORITMO PROGRAMMA DA ESEGUIRE DISPOSITIVI DI INPUT DISPOSITIVI DI OUTPUT 9 COSTRUZIONE DI UN PROGRAMMA (XLS) Vediamo come trasformare l’algoritmo in un programma: INIZIO Acquisisco N E’ pari ? NO SI Soluzione=«Pari» PARI O DISPARI ? Questo è l’algoritmo! Soluzione=«Dispari» Espongo la soluzione FINE PARI O DISPARI ? Questo è il programma! 10 COSTRUZIONE DI UN PROGRAMMA Prima di tutto occorre avere a disposizione un set di comandi che il computer sia in grado di comprendere ed eseguire: ad esempio le macro di Excel/opencalc. L’algoritmo utilizza «istruzioni umane» elementari (comprensibili ed eseguibili da una persona) per risolvere un determinato problema. Per creare un programma, comprensibile ed eseguibile sul calcolatore, occorre tradurre le «istruzioni umane» in comandi riconosciuti dal computer. 1 - INPUT Leggo, Ascolto, … 1 - INPUT Uso una cella (esempio B3) 2 - ALGORITMO: SE N … o E’ divisibile per 2 ? o E’ multiplo di 2 ? o Diviso per 2 da resto zero ? Allora Memorizzo come soluzione … Altrimenti Memorizzo come soluzione … 2 - ALGORITMO: =SE( Non traducibile Non traducibile RESTO(B3;2) = 0 ; Mostro "Pari" ; Mostro "Dispari" ) 3 - OUTPUT Scrivo, Dico, … TRADUCO 3 - OUTPUT 11 Decido di mettere in B6 la formula COSTRUZIONE DI UN PROGRAMMA 1 – INPUT: ACQUISIZIONE DEI DATI La fase di acquisizione dei dati inizia con l’esplicita richiesta … dispari … seguita dalla digitazione del dato desiderato. Dobbiamo anche tradurre l’azione di «ricordare» il dato appena letto: B3 = 11 COSTRUZIONE DI UN PROGRAMMA 2 – PROGRAMMA: TRADUCO L’ALGORITMO USANDO UN LINGUAGGIO DI PROGRAMMAZIONE E’ pari ? Dobbiamo trasformare la condizione «E’ pari ?» in una sequenza di istruzioni elementari che possiamo «umanamente» eseguire. Devo vedere se il linguaggio di programmazione utilizzato dispone di istruzioni analoghe che consentano al computer di eseguire la stessa valutazione svolta dalla persona E’ divisibile per 2 ? NON ESISTE E’ multiplo di 2 ? NON ESISTE Il resto della divisione per 2 è zero ? ESISTE RESTO(B3;2) = 0 13 COSTRUZIONE DI UN PROGRAMMA 2 – PROGRAMMA: TRADUCO L’ALGORITMO USANDO UN LINGUAGGIO DI PROGRAMMAZIONE Dobbiamo ora tradurre l’«istruzione umana» che consente di prendere una decisione partendo da una condizione con una istruzione equivalente del linguaggio di programmazione scelto. ESISTE CONDIZIONE VERA SE(RESTO(B3;2)= 0 ; … ; …) FALSA … … Dobbiamo anche tradurre l’azione di «ricordare» il risultato del nostro ragionamento Metto la formula in B6 14 COSTRUZIONE DI UN PROGRAMMA 3 – OUTPUT: ESPOSIZIONE DEI RISULTATI L’esposizione dei risultati corrisponde alla visualizzazione a video della soluzione. 15 COSTRUZIONE DI UN PROGRAMMA Possiamo ora comporre il programma nel linguaggio scelto: Predispongo l’aspetto grafico della pagina di Excel/Calc INIZIO 1) INPUT Acquisisco N Acquisisco i dati Decido che la cella B3 sia la cella di input 2) ALGORITMO E’ pari ? Elaboro e valuto … =SE(RESTO(B3;2)=0;»Pari»;»Dispari») NO SI Soluzione=«Dispari» Soluzione=«Pari» 3) OUTPUT Espongo la soluzione FINE Espongo il risultato Scrivo la formula nella Cella B6 16