Cosa significa programmare Cominciamo con il concetto di algoritmo: Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un problema risolvibile mediante un algoritmo si dice computabile. Un programma per calcolatore, o semplicemente programma, in informatica, è un insieme di istruzioni che, una volta eseguite su un computer, produce soluzioni per una data classe di problemi automatizzati. Tecnicamente esso è la codifica di un algoritmo in un certo linguaggio di programmazione realizzata da un programmatore nella rispettiva fase di programmazione, dando vita al codice sorgente. In altri termini è una sequenza ordinata di istruzioni (espresse secondo un insieme di regole noto a priori) che, a partire da dei dati in ingresso, restituisce dei risultati in uscita in seguito alla loro elaborazione o manipolazione da parte dell'hardware della macchina (processore). Facciamo un esempio per capire meglio: supponiamo di dover fare in modo che una persona che è in grado di eseguire solo addizioni e sottrazioni divenga capace di eseguire anche moltiplicazioni. Analizzando il problema ci viene l’idea di fargli effettuare la moltiplicazione mediante una serie di somme. Ad esempio 4X5 4+4=8 8+4=12 12+4=16 16+4=20 Facendo una serie di prove notiamo anzitutto che occorre effettuare un numero di somme pari al secondo numero meno 1. Proviamo a determinare le varie istruzioni che il nostro amico dovrà eseguire: innanzitutto deve acquisire i due numeri, per cui i primi due passaggi saranno Leggi il primo numero Leggi il secondo numero Adesso, guardando l’esempio, poniamo come istruzione successiva Somma il primo numero con se stesso Ma come facciamo a fargli ripetere le somme per un numero esatto di volte? Potremmo usare il secondo numero come contatore: lo scaliamo di 1 ogni volta che viene effettuata la somma, quando arriva a zero vuol dire che abbiamo terminato le somme. Potremmo scrivere, ad esempio, leggi il primo numero leggi il secondo numero punto 1 somma il primo numero con se stesso decrementa il secondo numero se non è arrivato a zero torna al punto 1 Ma in questo modo eseguiamo una somma di troppo, ad esempio per 4 X 5, eseguiremmo 5 somme e non 4 come avevamo scoperto all’inizio. Una soluzione è quella di decrementare il secondo numero fin dall’inizio. leggi il primo numero leggi il secondo numero decrementa il secondo numero punto 1 somma il primo numero con se stesso decrementa il secondo numero se non è arrivato a zero torna al punto 1 Il nostro programma funziona? Per esserne sicuri dobbiamo testarlo , cioè provare ad eseguire alcune moltiplicazioni per vedere se otteniamo il risultato atteso. Eseguiamo 4 X 5. Eseguita la prima istruzione avremo Primo numero 4 Eseguiamo la seconda istruzione Secondo numero Primo numero 4 Eseguiamo la terza istruzione di decremento Secondo numero 5 Primo numero 4 Secondo numero Ora effettuiamo la somma del primo numero con se stesso 4+4 4 Primo numero 8 Decrementiamo il secondo numero 4 Secondo numero Primo numero 8 Secondo numero 3 Per il momento tutto sembra procedere bene, poiché il secondo numero non si è azzerato torniamo ad eseguire la somma, ma poiché abbiamo scritto di sommare il primo numero con se stesso avremo 8+8=16 Primo numero 16 Decrementiamo il secondo numero Secondo numero 3 Primo numero 16 Secondo numero Ora dobbiamo ripetere la somma e avremo 16+16=32 2 Primo numero Decrementiamo Secondo numero 2 Secondo numero 1 32 Primo numero 32 Eseguiamo di nuovo la somma 32+32=64 Primo numero Decrementiamo 64 Secondo numero 1 Primo numero 64 Secondo numero 0 Poiché il secondo numero si azzera termina l’elaborazione ma scopriamo che , secondo il nostro programma 4 X 5 = 64. Nel nostro programma c’è un errore che viene anche chiamato bug in informatica. L’operazione di individuazione degli errori si chiama debug. Analizzando i vari passi eseguiti notiamo che il problema è aver scritto l’istruzione somma il primo numero con se stesso. Questo va bene solo la prima volta quando facciamo 4+4 ma non nei passaggi successivi. In realtà dovremmo dire al nostro computer umano di sommare i risultati della somma sempre con 4. Una possibile soluzione è la seguente, leggi il primo numero fai una copia del numero leggi il secondo numero decrementa il secondo numero punto 1 somma il primo numero con la copia decrementa il secondo numero se non è arrivato a zero torna al punto 1 Facciamo una prova. Leggiamo il primo numero Primo numero 4 Secondo numero 4 Secondo numero copia Facciamo la copia Primo numero copia 4 Leggiamo il secondo numero Primo numero 4 copia Decrementiamo 4 Primo numero 4 Secondo numero 5 Secondo numero 4 Secondo numero 4 copia 4 Facciamo la somma 4+4=8 Primo numero 8 copia 4 Decrementiamo il secondo numero Primo numero 8 Secondo numero 3 copia 4 Ripetiamo la somma e adesso, avendo corretto l’istruzione avremo 8+4=12 Primo numero 12 copia Decrementiamo 4 Primo numero 12 Secondo numero 3 Secondo numero 2 Secondo numero 2 Secondo numero 1 Secondo numero 1 Secondo numero 0 copia 4 Ripetiamo la somma 12+4=16 Primo numero 16 copia Decrementiamo 4 Primo numero 16 copia 4 Effettuiamo la somma 16+4=20 Primo numero 20 copia Decrementiamo 4 Primo numero 20 copia 4 Il programma si arresta e il risultato è corretto. Abbiamo effettuato il debug del programma. Un’ultima nota: la costruzione di algoritmi non ha necessariamente a che fare con il computer: nel nostro esempio è destinata ad un esecutore umano. Un computer sarà più efficiente, non si stancherà mai, sarà più veloce ma la creazione dell’algoritmo di esecuzione non ha concettualmente nulla a che fare con la scelta dell’esecutore materiale.