Prima di iniziare a programmare un computer, dobbiamo riuscire a immedesimarci nel suo modo di “ragionare”, nel suo modo di “agire” e di affrontare i problemi . I computer non sono umani e come tale non pensano come essi. Un calcolatore, qualsiasi sia il problema che deve affrontare , deve essere istruito nel farlo . Per esempio: Per un uomo è piuttosto naturale compiere l’azione “bevi un bicchiere d’acqua”.
Se chiediamo a una persona di farlo, svolgerà in modo semplice alcune azioni senza ragionare troppo: L’uomo si dirigerà verso la cucina, aprirà il frigorifero estraendo da esso la bottiglia fresca; poi prenderà un bicchiere, verserà l’acqua e infine la berrà portando il bicchiere alla bocca. Supponiamo di dover istruire un robot a compiere quest’azione: Le cose si complicano, e notevolmente. Perché? I computer lavorano in modo sequenziale processando una serie di “comandi” o “istruzioni” in sequenza; ciò significa che dovremo fornire al Robot la seguente programmazione:
Comando 1 : Dirigiti verso la Cucina
Il comando uno presuppone che il Robot (che supponiamo capace di muoversi autonomamente) conosca la posizione della cucina e sappia dirigersi verso di essa.
Comando due: Apri il frigorifero
Il comando due necessita per essere eseguito che il robot sappia “riconoscere” un frigorifero da un forno o da un altro oggetto.
Comando tre: Prendi la bottiglia
Il comando tre per essere eseguito presuppone che il Robot sappia riconoscere una bottiglia da una lattina di Coca Cola o da un altro oggetto presente all’interno .
Comando quattro: Prendi il bicchiere e versa l’acqua
Per eseguire il comando quattro il robot deve aver memorizzato la posizione dei bicchieri e deve essere in grado di mettere in relazione , con l’azione di “versare” , il bicchiere e la bottiglia .
Comando cinque: Bevi l’acqua .
Va bene, esposto in questi termini sembra facilissimo programmare un computer: Ma questa affermazione è assolutamente FALSA!!! Tutto questo perché il computer NON PUO’ gestire eventi che non conosce. Supponiamo per esempio che alla persona che vuole bere scivoli la bottiglia dalle mani , oppure che apra il frigorifero e non trovi alcuna bottiglia . In entrambi i casi l’essere umano , che dispone di un’intelligenza ricca e flessibile , è capace di affrontare i problemi ragionando e trovando una soluzione :
Nel primo caso riprenderà la bottiglia da terra , mentre nel secondo caso andrà a prendere altre bottiglie nella dispensa. Il computer NON E’ CAPACE DI QUESTO: se la macchina non è stata istruita ad affrontare situazioni impreviste, semplicemente non le affronterà. Il computer non è capace di “inventare” una soluzione o di “auto programmarsi “:
Esegue il programma principale, esegue le sub routine e tutto quello che NOI gli abbiamo comandato di eseguire. Un programma deve prevedere dei meccanismi CHIARI, ESAUSTIVI e NON AMBIGUI per affrontare un problema: Questi meccanismi prendono il nome di algoritmi . In modo più rigoroso possiamo definire un algoritmo come un insieme di passi semplici la cui esecuzione ottiene come risultato la risoluzione di un determinato problema per cui l’algoritmo è stato pensato. L’algoritmo, se ben strutturato e se composto da passi semplici , può poi essere trasformato in PROGRAMMA tramite un apposito linguaggio di programmazione.
Qualsiasi programma per computer utilizza una propria memoria, costituita dalle VARIABILI, per memorizzare le informazioni: Discuteremo più dettagliatamente nel seguito cosa sono e a che servono le variabili . Alcune caratteristiche fondamentali per un algoritmo sono:
1. La finitezza dello stesso: L’algoritmo deve terminare, non esistono programmi infiniti
2. Produzione di un risultato : Un algoritmo deve produrre un risultato in uscita , se non lo fa non può essere considerato tale
3. Semplicità dei passi: Ogni algoritmo che voglia essere trasformato in programma deve essere composto da passi semplici trasformabili tramite un linguaggio di programmazione in comandi per il computer
4. Chiarezza : Ogni passo dell’algoritmo deve avere un solo significato , non sono ammesse ambiguità in quanto il calcolatore non è capace di scegliere autonomamente e quindi non è capace di risolvere le ambiguità .
Nella prossima lezione studieremo la struttura di un algoritmo. Ciao
Lezioni tratte da Il linguaggio Java di Ignazio Barbagallo