← Все вопросы

чем отличается процедура от функции в паскале? procedure и function путаю

Задан 4 месяца назад986 просмотров2 ответа
5

Учитель сказал переписать программу с процедурами и функциями, а я вообще не врубаюсь в чём между ними разница и когда что. Сделал функцию, которая складывает два числа, но она ничего не возвращает, выводит пусто.

function summa(a, b: integer);
begin
  summa := a + b;
end;

begin
  writeln(summa(3, 5));
end.

Что не так?

2 ответа

11
✓ Принятый ответ — помог автору

У функции обязательно надо указать тип того, что она возвращает — ты его забыл. После списка параметров ставится : integer (или другой тип результата):

function summa(a, b: integer): integer;
begin
  summa := a + b;
end;

begin
  writeln(summa(3, 5));
end.

Видишь : integer после скобок — это и есть тип результата.

Теперь сама разница:

  • function (функция) — что-то вычисляет и ВОЗВРАЩАЕТ результат. Её можно засунуть прямо в writeln или присвоить переменной: x := summa(3, 5). Результат отдаёшь, присвоив имени функции (summa := ...).
  • procedure (процедура) — просто делает действие (например печатает), но ничего не возвращает. Её вызывают отдельной строкой.

Правило: нужен ответ-значение для дальнейших вычислений → function. Просто выполнить действие → procedure.

4

по-простому: функция как калькулятор — ввёл, получил число обратно. процедура как кнопка — нажал, она что-то сделала и всё. в PascalABC ещё можно через Result := a + b результат задавать, тоже работает

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект