E' un procedimento per raggiungere un determinato scopo attraverso un numero finito di passi elementari, chiari e non ambigui.
Proprietà fondamentali degli algoritmi:
i passi costituenti devono essere "elementari", ovvero non ulteriormente scomponibili (atomicità);
i passi costituenti devono essere interpretabili in modo diretto e univoco dall'esecutore, sia esso umano o artificiale (non ambiguità);
l'algoritmo deve essere composto da un numero finito di passi e richiedere una quantità finita di dati in ingresso (finitezza)
l'esecuzione deve avere termine dopo un tempo finito (terminazione), a meno che non si tratti di un programma per il controllo continuo di una variabile;
l'esecuzione deve portare a un risultato univoco (effettività).
Qualunque algoritmo può essere implementato utilizzando tre sole strutture:
la sequenza (esempio: apri la porta --> entra --> chiudi la porta)
la selezione: (esempio: la porta è aperta? Se SI' --> entra; se NO --> suona il campanello)
il ciclo o iterazione: (esempio: RIPETI 10 VOLTE [attraversa la porta --> ruota a destra di 180°]
E' una rappresentazione grafica delle operazioni da eseguire per l'esecuzione di un algoritmo.
Condizioni di validità:
dal blocco iniziale deve essere possibile raggiungere ogni blocco
da ogni blocco dev'essere possibile raggiungere il blocco finale (se esiste questo blocco)
blocco I/O (Input/Output) e blocco di elaborazione: ogni blocco di questi due tipi ha una sola freccia uscente
blocco decisonale o test: ogni blocco di questo genere ha una sola freccia entrante e due frecce uscenti
ogni freccia deve entrare in un blocco