Другие языки программирования и технологии

PascalABC. Когда применяются процедуры, вместо функций?

Просто мне кажется, что функция - это та же процедура, но с возможностью возвращения значения. То есть она может не возвращать (быть как процедура), а может и возвращать. Хочется узнать, какие особенности есть процедуры.
Процедура по сути та же функция, только для случая, когда через ее имя не надо возвращать значение. В принципе, отдельное название при этом совсем не обязательно, но автор Паскаля Вирт решил сделать так для большей понятности. В С и C++, например, процедур нет, в них только функции, которые могут и не возвращать значение через свое имя. если это не нужно.
Павел Ronaldo
Павел Ronaldo
62 878
Лучший ответ
"мне кажется". неужели сам догадался?
Применяется, когда это удобно, н-р
print (sin(x))
или
sin(x,y)
print (y)
Rein Liharadov
Rein Liharadov
91 451
Функция в паскале по своему предназначению соответствует математической функции - отображает множества значений аргументов на некое новое множество.
Процедура же - это просто поименованная подпрограмма.

Но!
Из-за некоторых ограничений на возвращаемые типы функций в классическом паскале процедуры иногда используются в качестве функций. Тот же прием иногда используется для всяческих оптимизаций быстродействия. Также паскаль позволяет вызывать функции на манер процедур - без обязательного возврата результата. Отсюда вся твоя путаница.
Waldemar Reichert
Waldemar Reichert
62 939
Нормальная функция в надёжном коде должна быть "чистой", т. е. не иметь побочных эффектов (не менять никаких значений, находящихся вне тела функции).
Тогда как процедура - это всегда побочные эффекты.

Другое дело, что PascalABC - это не Pascal, а загримированный C#. И авторы PascalABC сознательно нарушили практически все принципы, на которых построен оригинальный Pascal.
Rein Liharadov Почему обязательно "должна"?
Могут быть ф-ии с атрибутом pure, а могут без него
Ну если тебе надо возвращаемое значение то функцию используй, если не нужно то процедуру, хотя можешь просто функцией ничего не возвращать
Алексей Еременко а зачем нужна процедура?