Cosa significa programmare Cominciamo con il concetto di

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.