Процедуры и функции: обзор
Процедура или функция представляет собой последовательность операторов, которая имеет имя, список параметров и может быть вызвана из различных частей программы. Функции, в отличие от процедур, в результате своего выполнения возвращают значение, которое может быть использовано в выражении. Для единообразия функции и процедуры называются подпрограммами.
Описание процедур и функций
Любая используемая в программе процедура или функция должна быть предварительно описана в разделе описаний.
Описание процедуры имеет вид:
procedure имя ( список формальных параметров );
раздел описаний
begin
операторы
end;
Описание функции имеет вид:
function имя ( список формальных параметров ): тип возвращаемого значения ;
раздел описаний
begin
операторы
end;
Операторы подпрограммы, окаймленные операторными скобками begin / end , называются телом этой подпрограммы.
Список формальных параметров вместе с окружающими скобками может отсутствовать. Он состоит из одной или нескольких секций, разделенных символом » ; «. Каждая секция состоит из списка переменных, перечисляемых через запятую, после которого следуют двоеточие и тип. Каждая секция может предваряться ключевым словом var или const , что указывает на то, что параметры передаются по ссылке (см.п. Параметры процедур и функций). Тип формального параметра должен быть либо именем, либо динамическим массивом, либо множеством, либо процедурной переменной (для последних трех типов имеет место структурная эквивалентность типов).
Раздел описаний процедуры или функции устроен так же, как и раздел описаний основной программы. Здесь описываются так называемые локальные переменные и константы, типы (за исключением классов — классы можно описывать только глобально) а также вложенные процедуры и функции. Все такие локальные объекты доступны лишь внутри данной подпрограммы и не видны извне.
В разделе описаний подпрограммы можно описывать другие подпрограммы. Исключение составляют методы класса, описываемые непосредственно в теле класса: в них нельзя описывать вложенные подпрограммы ввиду синтаксической неоднозначности.
procedure DoAdd(a,b: real; var res: real);
begin
res := a + b;
end;
Вызов подпрограммы
Подпрограмма один раз описывается и может быть многократно вызвана. Для вызова процедуры используется оператор вызова процедуры:
begin
var x := ReadInteger;
var y := ReadInteger;
var res: integer;
DoAdd(x,y,res);
Print(res);
DoAdd(2*x,y,res);
Print(res);
end;
Для вызова функции используется выражение вызова функции.
Переменная Result
Внутри тела любой функции определена специальная переменная с именем Result , которая хранит результат вычисления функции. Ее тип совпадает с типом возвращаемого значения функции. Например:
function Sum(a,b: real): real;
begin
Result := a + b;
end;function MinElement(a: array of real): real;
begin
Result := real.MaxValue;
foreach var x in a do
if x < Result then
Result := x;
end;begin
var a := Seq(1,5,3);
writeln(MinElement(a) + Sum(2,3));
end.
Если внутри функции не присвоить переменной Result некоторое значение, то функция вернет в результате своего вызова непредсказуемое значение.
Упрощенный синтаксис описания подпрограмм
В PascalABC.NET имеется упрощенный синтаксис описания однооператорных процедур:
Аналогичный синтаксис имеется для функций, вычисляющих одно выражение:
При этом в ряде случаев для возвращаемого значения функции возможен автовывод типов:
В чем основное различие процедур и функций
©Reshak.ru — сборник решебников для учеников старших и средних классов. Здесь можно найти решебники, ГДЗ, переводы текстов по школьной программе. Практически весь материал, собранный на сайте — авторский с подробными пояснениями профильными специалистами. Вы сможете скачать гдз, решебники, улучшить школьные оценки, повысить знания, получить намного больше свободного времени.
Главная задача сайта: помогать школьникам и родителям в решении домашнего задания. Кроме того, весь материал совершенствуется, добавляются новые сборники решений.
Разница между процедурой и функцией в программировании
Пользователи, далекие от программирования в принципе, сталкиваются с понятиями функции и процедуры редко, и ассоциируются они с чем-то математическим и бюрократическо-медицинским. В программировании же этими понятиями оперирует множество языков, правда, даже специалисты порой не могут четко осознать разницу между функцией и процедурой. Как с тем сусликом: он есть, но его никто не видит. Посмотрим, настолько ли невидимы отличия.
Определение
Функция в программировании — подпрограмма, вызываемая из других подпрограмм необходимое число раз.
Процедура — поименованная часть программы (подпрограмма), многократно вызываемая из последующих частей программы необходимое число раз.
Сравнение
Основная разница между функцией и процедурой — в возвращаемом результате. По сути, и функции, и процедуры представляют собой логически неделимые блоки, из которых складывается код программы. Функция возвращает значение, процедура в большинстве языков программирования — нет, либо (в Си, например) возвращает пустое значение. В последнем случае (в Си) процедура считается подчиненной разновидностью функции.
Заголовок функции содержит слово “function”, идентификатор (собственное имя функции), вариативно список параметров и обязательно — тип результата. В теле функции обязательно прописывается оператор, присваивающий значение имени функции, которое она вернет в качестве результата. Заголовок процедуры содержит слово “procedure”, идентификатор (имя процедуры) и вариативно список параметров. Вызов функции осуществляется в составе выражений там, где эти выражения применяются, вызов процедуры требует отдельного оператора. Вызов процедуры осуществляется только по имени, имя функции же связано с ее значением. На схемах алгоритмов вызов функции изображается в блоке вывода или в блоке процесса, вызов процедуры — в специальном блоке “предопределенный процесс”.
Выводы TheDifference.ru
- Функция возвращает значение, процедура — нет.
- Заголовок функции обязательно содержит тип результата.
- В теле функции обязательно наличие оператора, присваивающего значение имени функции.
- Вызов процедуры требует отдельного оператора, вызов функции возможен в составе выражений.
- Имя процедуры необходимо для вызова, имя функции — для присвоения значения.
- На схемах алгоритмов вызов процедуры изображается в отдельном блоке, вызов функции — в блоке процесса или вывода.
Похожие статьи
/rating_on.png)
/rating_on.png)
/rating_on.png)
(7 оценок, среднее: 4,71 из 5)
ИНФОРМАТИКА 1.1.
Процедуры и функции в общем случае называются подпрограммами и применяются для упрощения структуры программы.
Подпрограмма-функция обрабатывает данные, переданные ей из главной программы, и затем возвращает полученный результат (в отличие от процедуры). В языке Паскаль есть стандартные функции, которые описаны в модулях. Ими можно пользоваться. Для использования некоторых стандартных функций требуется объявление соответствующего модуля в секции uses раздела описаний. Наиболее часто используемые математические функции приведены в табл. 1.6.
Часто возникает необходимость описать свою функцию и многократно использовать её в программе. Описываются функции в разделе описаний программы, а используются – в основной части.
Функция, определенная пользователем, состоит из заголовка, своего раздела описаний и тела функции. Заголовок содержит зарезервированное слово function, имя, список формальных параметров (заключенный в скобки) и тип возвращаемого функцией значения. Раздел описаний аналогичен разделу описаний программы и может содержать те же секции, включая описание собственных функций и процедур. Раздел описаний может и отсутствовать, если в нём нет необходимости. Тело функции представляет собой локальный блок, по структуре сходный с программой.
Общий вид описания функции:
const … ;
var … ;
begin
end;
В скобках после имени функции описываются формальные параметры. Параметры одного типа можно перечислять через запятую, затем ставится двоеточие и указывается их тип. Далее через точку с запятой могут описываться параметры других типов. Порядок следования параметров имеет значение!
В собственном разделе описания могут быть описаны локальные константы, переменные и т. д. Область их действия ограничена локальным блоком функции.
В разделе операторов должен находиться хотя бы один оператор, присваивающий имени функции значение. Обращение к функции осуществляется по имени с указанием списка аргументов. Каждый аргумент должен соответствовать формальным параметрам и иметь тот же тип. Механизм передачи параметров будет подробнее описан ниже.
Описанную функцию можно использовать в основной части программы. Функция используется в выражениях по имени с фактическими параметрами.
Пример 3.1. Найти значение следующего выражения:
program prf;
var t,c,r:real;
function F(x:real):real;
begin
F:=sqrt(x)+2*sqr(x)+3*x;
end;
begin
Writeln(‘Введите числа’);
Write(‘t=’); Readln(t);
Write(‘c=’); Readln(c);
writeln(‘результат = ’, r:8:3);
