Utente:Sabato nunzia/Algoritmi
Questa è la pagina di prova dove Nunzia Sabato, Maria Chiara Calviello, Francesca Rocco, Lucia Romaniello e Donatella D'Anzi approfondiranno il seguente argomento: problemi e algoritmi (introduzione generale e confronto tra Visual Basic e C++).
Il termine Algoritmo deriva dal nome di un matematico arabo del IX secolo: Abu Ja'far Mohammed ibn Musa al-Kowarizm (in arabo significa "padre di Ja'far,Maometto,figlio di Mosè). Nell'anno 825 questo personaggio pubblicò due opere:una di aritmetica e una intitolata Kitab Al-jabr Wal Muqabala. Dalla parte centrale di quest'ultimo ebbe origine la parola inglese algebra, mentre il termine algoritmo deriva da modifiche e adattamenti del nome del matematico.
Leonardo da Pisa, un altro grandissimo matematico vissuto intorno agli inizi del XIII secolo e noto con il soprannome di Fibonacci, riferendosi alle scoperte del matematico arabo era solito semplificare il suo nome in :"Algoritmo diceva che...". Considerato che Abu Ja'far Mohammed ibn Musa al-Kowarizm si era sempre interessato allo studio dei procedimenti aritmetici di calcolo necessari per risolvere i problemi, il termine algoritmo venne utilizzato per indicare questo tipo di procedimento. Un procedimento risolutivo è un algoritmo quando, fissato l'insieme finito delle azioni elementari univocamente interpretabili e definite, è possibile descrivere passo per passo il procedimento che risolve un problema costruendo una successione ordinata e finita di istruzioni da cui esecuzione si arresta per fornire i risultati di un problema a partire da ogni valore assunto dai dati iniziali.
Un algoritmo deve essere:
- finito:la strategia risolutiva descritta dall'algoritmo deve essere composta da un numero finito di azioni elementari.L'algoritmo, inoltre, deve prevedere un solo inizio e una sola fine;
 - univoco o non ambiguo o preciso:ogni azione deve essere definita nei suoi effetti rigorosamente e senza ambiguità per l'esecutore;
 - generale:deve essere valido non solo per un particolare problema, ma per tutti i problemi di una stessa classe;
 - completo:deve considerare tutti i casi possibili che si possono verificare durante l'esecuzione e, per ogni caso, indicare la soluzione da seguire;
 - osservabile nei risultati:deve esserci riscontro oggettivo del risultato.
 - deterministico: a ogni unità finita di tempo l' esecutore deve scegliere e compiere una e una sola azione. Si dice anche che, partendo dagli stessi dati iniziali, l' esecuzione dell'algoritmo deve fornire sempre gli stessi risultati finali.
 
Fonte: ...