> -- Александр Ильин писал(а):
> Я как-то не определился для себя, в каком случае использовать функцию, а в каком процедуру. Если есть возвращаемый результат, то это как-то более однозначно: вот он, можно функцию использовать в выражении или в условии цикла. Значит, переменная заводится только в процедуре, а не в каждом клиенте. Кроме того, с VAR-параметрами не понятно, когда они in, когда out, а когда in-out. При чтении это вносит неоднозначность, в отличие от функции. В этой связи для простых результатов использую функции.А у вас есть какие-то общие соображения на этот счёт? Было бы любопытно.Самые общие, пожалуй, базируются на принципе "чистоты функций".
1) Если цель алгоритма что-то вычислить, то это функция (если язык позволяет).
2) Если цель алгоритма что-то сделать, то процедура.
Наличие побочного результата в виде успешности действия игнорирую, т.к. действия привык видеть/записывать только как ProcedureCall. Требование отсутствия доп. переменной-результата в клиентах считаю оптимизацией. "Если есть возвращаемый результат, то" сделать функцию чтобы можно было "функцию использовать в выражении или в условии цикла" - тоже; плюс, имхо, нелогичность - выражение (мат. смысл - выч-е зн-я) вычисляется прежде всего для вып. дей-я.
Использую КП/ББ, а не Оберон-2. Там параметры результаты явно помечены OUT.