1) за конечное число шагов алгоритм должен либо приводить к решению задачи, либо останавливаться из-за невозможности получить решение
2) каждая его команда должна пониматься исполнителем однозначно, не должно быть двоякого толкования команды
3) каждая его команда должна входить в систему команд исполнителя
4) он разбивается на ряд отдельных законченных команд (шагов), каждая из которых должна быть выполнена прежде, чем исполнитель перейдет к выполнению следующей (+)