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

Регистрация
24 Ноя 2012
Сообщения
76
Репутация
0
Спасибо
0
Монет
0
Просто мне кажется, что функция - это та же процедура, но с возможностью возвращения значения. То есть она может не возвращать (быть как процедура), а может и возвращать. Хочется узнать, какие особенности есть процедуры.
 
Ну если тебе надо возвращаемое значение то функцию используй, если не нужно то процедуру, хотя можешь просто функцией ничего не возвращать
 
Процедура по сути та же функция, только для случая, когда через ее имя не надо возвращать значение. В принципе, отдельное название при этом совсем не обязательно, но автор Паскаля Вирт решил сделать так для большей понятности. В С и C++, например, процедур нет, в них только функции, которые могут и не возвращать значение через свое имя. если это не нужно.
 
Функция в паскале по своему предназначению соответствует математической функции - отображает множества значений аргументов на некое новое множество. Процедура же - это просто поименованная подпрограмма. Но! Из-за некоторых ограничений на возвращаемые типы функций в классическом паскале процедуры иногда используются в качестве функций. Тот же прием иногда используется для всяческих оптимизаций быстродействия. Также паскаль позволяет вызывать функции на манер процедур - без обязательного возврата результата. Отсюда вся твоя путаница.
 
"мне кажется". неужели сам догадался? Применяется, когда это удобно, н-р print (sin(x)) или sin(x,y) print (y)
 
Нормальная функция в надёжном коде должна быть "чистой", т. е. не иметь побочных эффектов (не менять никаких значений, находящихся вне тела функции). Тогда как процедура - это всегда побочные эффекты. Другое дело, что PascalABC - это не Pascal, а загримированный C#. И авторы PascalABC сознательно нарушили практически все принципы, на которых построен оригинальный Pascal.
 
Назад
Сверху