L'informatica è quella scienza che riguarda gli aspetti del trattamento dell'informazione tramite procedure automatizzabili e ripetibili nel tempo. Ad esempio "si fa informatica" quando si creano programmi o quando si creano archivi elettronici.
L'obbiettivo principe dell'informatica è individuare le strategie risolutive dei problemi (algoritmi).
Un problema è un quesito in cui è richiesto di trovare uno o più elementi ignoti (ovvero la soluzione), partendo dai dati da esso forniti.
Una strategia risolutiva è l'insieme dei passi necessari per raggiungere la soluzione di un problema. Si ottiene mediante il processo di risoluzione, che è suddiviso in varie fasi:
individuare l'obbiettivo
stabilire la situazione di partenza;
per individuare con efficacia una strategia risolutiva, si possono prendere varie strade:
conoscere il tema trattato,
procedere per tentativi,
usare l'esperienza,
sfruttare il backtracking (individuato un problema, ripercorrere il cammino all'indietro per individuare l'azione che non permetti di arrivare alla soluzione),
suddividere il problema in sottoproblemi;
applicare la strategia risolutiva individuata;
verificare la soluzione.
I tre passaggi sopra elencati vanno ripetuti fino ad ottenere una verifica della soluzione positiva.
Il termine problem solving indica l'insieme dei processi per analizzare e individuare un metodo opportuno utile per il raggiungimento della soluzione. Si basa su un concetto fondamentale, il "Divide et impera".
Esplicitare l'incognita per individuare correttamente gli obbiettivi;
eliminare i dettagli inutili e/o ambigui individuati durante la lettura dell'enunciato del problema;
individuare il criterio di verifica della soluzione, ovvero il modo con cui verificare che la soluzione ottenuta sia effettivamente quella cercata;
astrarre il problema:
l'astrazione è un procedimento mentale attraverso il quale si sostituiscono un insieme di oggetti con un conetto più generale;
individuare i vincoli:
conoscere i vincoli di un problema (ovvero le "specifiche") proposte dal problema.
Un Modello è una rappresentazione semplificata sella situazione analizzata, che evidenzi tutti gli elementi fondamentali e utili alla risoluzione del problema. Per creare un modello occorre:
studiare il fenomeno nella realtà;
costruire il modello e farlo funzionare;
verificare se e quanto i risultati corrispondono con la realtà.
I modelli sono divisibili in varie categorie in base a criteri diversi. Se vogliamo suddividere i tipi di modello in base alla loro funzione allora avremo:
modelli descrittivi: riproducono la realtà;
modelli predittivi: forniscono gli elementi necessari per prevedere l'evolversi di una situazione a seguito di una scelta;
modelli prescrittivi: impongono un determinato comportamento per raggiungere l'obbiettivo.
Se invece dividiamo i modelli in base alla loro natura, avremo:
modelli analogici: riproducono la realtà in una scala ridotta;
simbolici o matematici: forniscono una rappresentazione astratta della realtà mediante equazioni;
modelli logici: forniscono un insieme di regole logico-funzionali che permettono di emulare integralmente la realtà interessata.
Noi ci concentreremo solo sui modelli logici (ad esempio gli algoritmi) in quanto fondamentali per la programmazione.
Dato un problema si raggiunge la soluzione grazie a due "elementi":
risolutore: colui che individua la strategia risolutiva;
esecutore: colui che esegue la strategia risolutiva, è un'entità generica che può eseguire solo le azioni previste dalla strategia risolutiva.
Bisogna ricordare sempre tre cose quando si prepara una strategia risolutiva per un esecutore:
la macchina non sa quello che sta facendo ne tantomeno perché lo sta facendo;
noi utilizziamo un linguaggio complesso nel nostro quotidiano, le macchine no;
occorre fare attenzione al linguaggio che si utilizza, non è detto che la macchina lo possa leggere.