Главная / Заметки / Способы описания формальных параметров и возвращаемых значений в схемах алгоритмов


Способы описания формальных параметров и возвращаемых значений в схемах алгоритмов

7 апреля 2023 г.

На сегодняшний день схемы алгоритмов описываются стандартом ГОСТ 19.701-90, который действует и по сей день. Стандарт определяет все необходимые символы, из которых самыми основными являются:

Тем не менее, стандарт не предусматривает каких-либо точных указаний по оформлению формальных параметров алгоритма, а также результата его работы (выходных данных). Это порождает различные кривотолки, дискуссии и ожесточённые споры.

В этом плане существуют три основных способа описания формальных параметров и три основных способа записи выходных данных в схемах алгоритмов.

Формальные параметры

Формальные параметры записывают двумя способами.
  1. Самый очевидный и следующий из стандарта способ - с использованием символа «Данные» после терминатора в начале алгоритма. В символе указываются наименования формальных параметров без каких-либо дополнительных пометок, которые в дальнейшем используются в других символах.
  2. Другой способ - запись формальных параметров в круглых скобках после названия алгоритма.
  3. Можно также вообще их не указывать. Такое тоже бывает.

Первый способ почему-то игнорируется или признаётся неверным, а второй способ - единственно правильным. Тем не менее, не следует забывать, что в данном случае придётся учитывать детали синтаксиса конкретного языка программирования. Из общего между языками - только круглые скобки, потому что при разработке самых первых языков программирования высокого уровня (Фортран и Алгол-58) использовалась математическая нотация, а в ней аргументы в функцию передаются как раз в круглых скобках. В остальных же случаях могут быть определённые нюансы.

Кроме того, такой способ не учитывает возможности прямого возврата нескольких значений в некоторых языках программирования (например, Python 3 или Go): возвращаемые значения могут быть намертво причислены к формальным параметрам, когда они таковыми не являются.

Третий способ вообще оставляет такую важную вещь, как передаваемые в алгоритм данные, на совести программиста: разберись, мол, сам. Поскольку алгоритм предполагает не только последовательность действий, но и вход и выход, доверять такое решение программисту крайне опасно: он может неправильно убрать или добавить некоторые формальные параметры или вовсе принять их за переменные.

Выходные данные

Выходные данные записываются тремя возможными способами:

  1. С использованием символа «данные» перед терминатором в конце алгоритма. В символе указываются названия переменных, которые необходимо вернуть из функции. Способ возврата определяет программист при реализации.
  2. При помощи записи результата в переменную с названием функции (как в Паскале).
  3. При помощи символа «процесс» и слова return (как в Си).

Первый и второй способ ещё куда не шли (второй способ легко сводится к первому при помощи одного символа «данные»). Третий же способ зависим от синтаксиса конкретного языка программирования и не учитывает, что программист может или не может вернуть сразу несколько значений (в Python 3 это можно сделать через запятую, в Си же запятая - это оператор, вычисляющий всё и выдающий последнее значение).

К сожалению, стандарт ГОСТ 19.701-90 это всё допускает.

Если я где-то не прав, пишите.