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

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

Регистрация
24 Ноя 2012
Сообщения
89
Репутация
0
Спасибо
0
Монет
0
Просто мне кажется, что функция - это та же процедура, но с возможностью возвращения значения. То есть она может не возвращать (быть как процедура), а может и возвращать. Хочется узнать, какие особенности есть процедуры.
 
Регистрация
8 Дек 2013
Сообщения
95
Репутация
0
Спасибо
1
Монет
0
Процедура по сути та же функция, только для случая, когда через ее имя не надо возвращать значение. В принципе, отдельное название при этом совсем не обязательно, но автор Паскаля Вирт решил сделать так для большей понятности. В С и C++, например, процедур нет, в них только функции, которые могут и не возвращать значение через свое имя. если это не нужно.
 
Регистрация
22 Авг 2013
Сообщения
89
Репутация
0
Спасибо
2
Монет
0
Функция в паскале по своему предназначению соответствует математической функции - отображает множества значений аргументов на некое новое множество. Процедура же - это просто поименованная подпрограмма. Но! Из-за некоторых ограничений на возвращаемые типы функций в классическом паскале процедуры иногда используются в качестве функций. Тот же прием иногда используется для всяческих оптимизаций быстродействия. Также паскаль позволяет вызывать функции на манер процедур - без обязательного возврата результата. Отсюда вся твоя путаница.
 
Регистрация
23 Авг 2013
Сообщения
93
Репутация
0
Спасибо
0
Монет
0
Нормальная функция в надёжном коде должна быть "чистой", т. е. не иметь побочных эффектов (не менять никаких значений, находящихся вне тела функции). Тогда как процедура - это всегда побочные эффекты. Другое дело, что PascalABC - это не Pascal, а загримированный C#. И авторы PascalABC сознательно нарушили практически все принципы, на которых построен оригинальный Pascal.
 
Сверху Снизу