Главная / Заметки / Способы описания формальных параметров и возвращаемых значений в схемах алгоритмов
7 апреля 2023 г.
На сегодняшний день схемы алгоритмов описываются стандартом ГОСТ 19.701-90, который действует и по сей день. Стандарт определяет все необходимые символы, из которых самыми основными являются:
Тем не менее, стандарт не предусматривает каких-либо точных указаний по оформлению формальных параметров алгоритма, а также результата его работы (выходных данных). Это порождает различные кривотолки, дискуссии и ожесточённые споры.
В этом плане существуют три основных способа описания формальных параметров и три основных способа записи выходных данных в схемах алгоритмов.
Первый способ почему-то игнорируется или признаётся неверным, а второй способ - единственно правильным. Тем не менее, не следует забывать, что в данном случае придётся учитывать детали синтаксиса конкретного языка программирования. Из общего между языками - только круглые скобки, потому что при разработке самых первых языков программирования высокого уровня (Фортран и Алгол-58) использовалась математическая нотация, а в ней аргументы в функцию передаются как раз в круглых скобках. В остальных же случаях могут быть определённые нюансы.
Кроме того, такой способ не учитывает возможности прямого возврата нескольких значений в некоторых языках программирования (например, Python 3 или Go): возвращаемые значения могут быть намертво причислены к формальным параметрам, когда они таковыми не являются.
Третий способ вообще оставляет такую важную вещь, как передаваемые в алгоритм данные, на совести программиста: разберись, мол, сам. Поскольку алгоритм предполагает не только последовательность действий, но и вход и выход, доверять такое решение программисту крайне опасно: он может неправильно убрать или добавить некоторые формальные параметры или вовсе принять их за переменные.
Выходные данные записываются тремя возможными способами:
Первый и второй способ ещё куда не шли (второй способ легко сводится к первому при помощи одного символа «данные»). Третий же способ зависим от синтаксиса конкретного языка программирования и не учитывает, что программист может или не может вернуть сразу несколько значений (в Python 3 это можно сделать через запятую, в Си же запятая - это оператор, вычисляющий всё и выдающий последнее значение).
К сожалению, стандарт ГОСТ 19.701-90 это всё допускает.
Если я где-то не прав, пишите.