чем отличается процедура от функции в паскале? procedure и function путаю
Учитель сказал переписать программу с процедурами и функциями, а я вообще не врубаюсь в чём между ними разница и когда что. Сделал функцию, которая складывает два числа, но она ничего не возвращает, выводит пусто.
function summa(a, b: integer);
begin
summa := a + b;
end;
begin
writeln(summa(3, 5));
end.
Что не так?
2 ответа
У функции обязательно надо указать тип того, что она возвращает — ты его забыл. После списка параметров ставится : 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.
по-простому: функция как калькулятор — ввёл, получил число обратно. процедура как кнопка — нажал, она что-то сделала и всё. в PascalABC ещё можно через Result := a + b результат задавать, тоже работает