Oggi vorrei affrontare un argomento un po’ particolare e sopratutto difficile da spiegare perchè in continua evoluzione e le scienze con cui si interfaccia sono molteplici. Cerco di partire dall’inizio…
L’informatica è una scienza che si occupa del trattamento dell’informazione mediante l’utilizzo di procedure automatizzabili. I computer sono macchine elettroniche programmabili, in pratica avendo in ingresso un programma e dei dati, un computer produce dei risultati secondo il procedimento di trasformazione descritto dal programma. Questo è ovviamente in linea generale.
Veniamo però al nocciolo dell’articolo di oggi.. Cos’è un algoritmo?
Un ALGORITMO è un procedimento che permette di risolvere un dato problema attraverso una serie di passi eseguiti in una sequenza specificata, è quindi un metodo preciso e sistematico per produrre un determinato risultato. In particolare in informatica un algoritmo viene definito come un insieme ordinato di istruzioni eseguibili e non ambigue che definiscono un processo che termina. Vi elenco alcune proprietà fondamentali di un algoritmo:
- input (dati in ingresso) specificato
- output (dati in uscita) specificato
- sequenzialità –> l’algoritmo deve specificare in modo preciso la sequenza, cioè l’ordine di operazioni da eseguire
- eseguibilità –> l’algoritmo deve poter essere eseguito con operazioni non impossibili da eseguire
- determinatezza: ogni istruzione deve essere univocamente determinata e avere una sola possibile interpretazione
- terminazione: il processo deve condurre alla soluzione in un numero finito di passi
Ora è possibile dire che un programma è un algoritmo espresso in un particolare linguaggio di programmazione (ad alto livello). Quindi si può vedere un algoritmo come un oggetto astratto, concettuale, mentre un programma come un’espressione concreta dell’algoritmo.
Per capire la logica adatta per risolvere un dato problema sono importanti e
utili i diagrammi di flusso (flow chart), ossia una rappresentazione grafica del processo mentale che poi porta all’algoritmo. Nell’immagine qui sotto un esempio molto semplice ma facile da capire di flow chart.
Dato un problema è possibile definire più algoritmi per trovare una soluzione, è importante ricordare che algoritmi differenti possono risolvere lo stesso problema in modo diverso, quindi in tempi diversi.
In linea generale, si può dire che tra diversi algoritmi si sceglie quello che, a parità di memoria occupata, calcola più velocemente la soluzione. Si considera però il tempo di calcolo, ossia un tempo di quale tempo determinato dal numero di istruzioni eseguite, dato un certo input.
Spero di avervi incuriosito con questa piccola introduzione riguardo gli algoritmi.