Для чего используются функции и процедуры

Процедуры и функции: обзор

Что такое процедуры и функции

Процедура или функция представляет собой последовательность операторов, которая имеет имя, список параметров и может быть вызвана из различных частей программы. Функции, в отличие от процедур, в результате своего выполнения возвращают значение, которое может быть использовано в выражении. Для единообразия функции и процедуры называются подпрограммами.

Описание процедур и функций

Любая используемая в программе процедура или функция должна быть предварительно описана в разделе описаний.

Описание процедуры имеет вид:

procedure имя ( список формальных параметров );
раздел описаний
begin
операторы
end;

Описание функции имеет вид:

function имя ( список формальных параметров ): тип возвращаемого значения ;
раздел описаний
begin
операторы
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

function MinElement(a: array of real): real;
begin
Result := real.MaxValue;
foreach var x in a do
if x

begin
var a := Seq(1,5,3);
writeln(MinElement(a) + Sum(2,3));
end.

Если внутри функции не присвоить переменной Result некоторое значение, то функция вернет в результате своего вызова непредсказуемое значение.

Упрощенный синтаксис описания подпрограмм

В PascalABC.NET имеется упрощенный синтаксис описания однооператорных процедур:

Аналогичный синтаксис имеется для функций, вычисляющих одно выражение:

При этом в ряде случаев для возвращаемого значения функции возможен автовывод типов:

Источник

Изучаем C++. Часть 5. Функции и процедуры

Разбираемся, как функции помогают сократить код и сделать программу полезнее.

Для чего используются функции и процедуры. Смотреть фото Для чего используются функции и процедуры. Смотреть картинку Для чего используются функции и процедуры. Картинка про Для чего используются функции и процедуры. Фото Для чего используются функции и процедуры

Для чего используются функции и процедуры. Смотреть фото Для чего используются функции и процедуры. Смотреть картинку Для чего используются функции и процедуры. Картинка про Для чего используются функции и процедуры. Фото Для чего используются функции и процедуры

Это пятая часть из серии статей «Глубокое погружение в C++». В прошлый раз мы узнали, как правильно использовать ввод данных и обрабатывать исключения. Сегодня займёмся функциями и процедурами.

Если код нужно использовать несколько раз, то лучше всего его вывести в подпрограмму — функцию или процедуру. Это позволит значительно сократить объём кода. Давайте рассмотрим вот такую программу:

Программа по очереди приветствует шесть человек. Это относительно небольшой код, но что, если понадобится заменить фразу «Hello, %name%!» на «Hello, %name%! How are you?»? Тогда придётся поменять код в шести местах. А такие сообщения могут выводиться сто или даже тысячу раз.

Подпрограммы как раз и нужны, чтобы избежать таких проблем.

Для чего используются функции и процедуры. Смотреть фото Для чего используются функции и процедуры. Смотреть картинку Для чего используются функции и процедуры. Картинка про Для чего используются функции и процедуры. Фото Для чего используются функции и процедуры

Пишет о программировании, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.

Как создать функцию в C++

Для удобства любые подпрограммы, в том числе и процедуры, называют функциями.

Одну функцию мы с вами уже создавали — main (). Она работает как точка входа в каждую программу. Другие функции создаются аналогичным образом:

Для чего используются функции и процедуры. Смотреть фото Для чего используются функции и процедуры. Смотреть картинку Для чего используются функции и процедуры. Картинка про Для чего используются функции и процедуры. Фото Для чего используются функции и процедуры

Вот так это выглядит в коде:

Функции могут принимать или не принимать аргументы. Но если вы указали, что аргументы всё же нужны, то попытка вызвать функцию без них приведёт к ошибке.

Если вы указываете какой-либо тип возвращаемых данных, то обязательно должен присутствовать оператор return. Если возвращать значение не нужно, создайте процедуру — укажите тип void.

Вот что выведет такая программа:

Для чего используются функции и процедуры. Смотреть фото Для чего используются функции и процедуры. Смотреть картинку Для чего используются функции и процедуры. Картинка про Для чего используются функции и процедуры. Фото Для чего используются функции и процедуры

Функция main () автоматически возвращает значение, поэтому отдельно прописывать return не обязательно. Программа вернёт 0, если она выполнилась успешно, или другое число в зависимости от ошибки.

Области видимости в C++

Всё, что происходит в функции, в ней же и остаётся. То есть функции могут работать только с теми значениями, которые в них передали:

Если переменная создаётся внутри какого-либо блока <>, то она будет доступна только в этом и во всех вложенных блоках; такие переменные называются локальными.

Если вы хотите, чтобы какая-нибудь переменная была доступна везде, то её нужно объявить за пределами каких-либо блоков; такие переменные называются глобальными:

Однако использовать глобальные переменные не рекомендуется, потому что вам будет сложно отслеживать изменения и влиять на результат работы программы. Единственное исключение — это константы, которые нужно делать глобальными, потому что они не меняются.

Как работают аргументы

Рассмотрим, что происходит, когда вы передаёте аргумент в функцию. Допустим, есть вот такой код:

Можно подумать, что в результате программы мы увидим число 505, но это неверно. Дело в том, что функции в качестве аргументов принимают не сами переменные, а их значения. То есть в sum () попала не ячейка памяти, а число 5, которое находилось в этой ячейке. Учитывайте это, когда пишете программы.

Для чего используются функции и процедуры. Смотреть фото Для чего используются функции и процедуры. Смотреть картинку Для чего используются функции и процедуры. Картинка про Для чего используются функции и процедуры. Фото Для чего используются функции и процедуры

Это касается только примитивных типов данных. Ссылочные типы ведут себя иначе.

Рекурсия C++

Рекурсия — это ситуация, когда объект является частью самого себя (не путать с фракталом). В программировании это проявляется в одной интересной особенности функций — они могут вызывать сами себя.

Для чего используются функции и процедуры. Смотреть фото Для чего используются функции и процедуры. Смотреть картинку Для чего используются функции и процедуры. Картинка про Для чего используются функции и процедуры. Фото Для чего используются функции и процедуры

Чтобы понять, что такое рекурсия, нужно понять, что такое рекурсия

Чаще всего рекурсия объясняется на примере факториалов (не путать с фракталами):

Вот факториалы чисел от 1 до 10:

Для чего используются функции и процедуры. Смотреть фото Для чего используются функции и процедуры. Смотреть картинку Для чего используются функции и процедуры. Картинка про Для чего используются функции и процедуры. Фото Для чего используются функции и процедуры

Важно! Прописывайте условия выхода из рекурсии, иначе программа попадёт в бесконечный цикл и сильно нагрузит компьютер.

На практике применение этой особенности можно увидеть при рекурсивном удалении папок. Функция удаления должна работать так:

Рекомендации по созданию функций

Разрабатывая программы, вы постоянно будете работать с функциями, поэтому важно научиться делать их максимально полезными. Вот несколько рекомендаций:

И старайтесь как можно больше практиковаться, чтобы закрепить новые знания. В этой серии статей описываются базовые возможности программирования, которые пригодятся вам на протяжении всей карьеры. В следующем материале мы разберёмся, как упростить повторяющийся код с помощью циклов.

Ну а если вы хотите углубить свои знания, набраться опыта на реальных проектах и получать обратную связь по своему коду от опытных разработчиков, то записывайтесь на наш курс по программированию на C++.

Источник

Для чего используются функции и процедуры

Процедуры и функции, написанные программистом, предназначены для оптимизации программ.

Основным их преимуществом является возможность многократного использования, более легкого и удобного тестирования и отладки независимо от других модулей.

В Паскале главная программа начинается с декларативной части, в которую, в частности, входят и описания всех процедур и функций. Обычно, в Паскале декларативная часть состоит из раздела определения констант, за которым следует раздел объявления переменных, а затем все процедуры и функции. Главное правило – любой объект должен быть описан до его первого использования.

Пример задачи: написать программу, которая определяет сумму квадратов n первых натуральных чисел. Сумма определяется в функции пользователя.

function powers (n: integer) : integer;

write (‘Сколько чисел нужно cложить?’);

writeln (‘сумма квадратов ‘,e,’ чисел’);

writeln (‘Число членов = ‘,e,’. Сумма = ‘,f);

Функции обычно применяются в расчетных задачах, когда необходимо выполнить ряд вычислений и передать их значения основной программе.

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

Например: function powers (n:integer):real;

Здесь имя функции – powers, у нее один формальный параметр – n, принадлежит типу integer. Функция возвращает результат типа integer.

За заголовком функции следует объявление локальных переменных подпрограммы.

Например: var i, sum:integer;

Локальные переменные, объявленные в подпрограмме, никак не связаны с объектами главной программы, даже если у них одинаковые имена.

За объявлениями, если они есть, следует пара ограничителей begin-end, окружающих набор предложений, составляющих саму функцию. При этом самым последним должно быть выполнено предложение, которым имени функции назначается некоторое значение, оно будет возвращено в главную программу.

Процедуры применяются, когда приходится решать задачи, в которых интересует не вычисление какого-то конкретного значения, а выполнение некоторой совокупности действий, например, отпечатать список чисел. Процедура обычно не возвращает в основную программу никакого значения. А если и передает данные, то только через глобальные переменные. Но существуют, так называемы, процедуры с параметрами, в которые (и даже из которых) можно передавать данные. В этой теме будут рассмотрены и примеры таких процедур. В Электронном задачнике даются задачи именно на такие процедуры.

Между функцией и процедурой имеется несколько различий. Наиболее существенное состоит в том, что функция всегда возвращает одно конкретное значение, тогда как процедура нет. Это различие отражается в особенности объявления процедур и функций.

Заголовок процедуры оформляется почти так же, как заголовок функции с той разницей, что в нем отсутствует указание о типе возвращаемого значения.

Пример: procedure test (a: real; var b: integer);

где test – заголовок процедуры, параметр – a типа real, параметр b типа integer.

Вызов процедуры из главной программы представляет собой просто имя процедуры со списком аргументов. Например: test (x,y). Процедуры вообще могут не иметь параметров.

Например, сумма n первых натуральных чисел:

program primer; // процедура без параметров

var a,k,sum : integer;

writeln(‘последовательное сложение натуральных чисел’);

write(‘сколько первых натуральных чисел сложить? ‘);

Пример решения задач из Электронного задачника:

Program Proc1; // процедура с параметрами

procedure powerA3(a:real;var b:real);

writeln(‘Вычисление 3-й степени числа:’);

writeln(3-я степень числа:’,c:2:1);

Program Proc3; // процедура с параметрами

procedure Mean(x,y:real;var AMean,GMean:real);

writeln(‘Введите числа a,b,c,d’);

program Proc16; // функция

writeln (‘sign(a)+sign(b) = ‘,sign(a)+sign(b));

program Proc17; // функция

if d=0 then RootsCount:=’один корень’;

if d>0 then RootsCount:=’два корня’;

writeln (‘введи коэффициенты квадратного уравнения a, b,c’);

Наберите и отладьте следующие программы, разберитесь в их работе:

1. Программа «Неповторяющиеся случайные числа» с использованием массива и процедуры без параметров.

q:array[1..15] of integer;

if a=b then continue;

if q[a]=q[b] then begin q[a]:=random(20); qw; end;

2. Проверка целого числа на четность (использование функции).

if (n mod 2)= 0 then Chet:=TRUE else Chet:=FALSE;

writeln(‘Введите целое число и нажмите Enter’);

writeln(‘Для завершения введите 100’);

3. Вычисление длины и площади окружности (использование процедуры с параметрами).

writeln(‘Вычисление длины окружности и площади круга:’);

write(‘Задайте радиус и нажмите Enter ‘);

writeln(‘Радиус окружности: ‘,t:3:1);

writeln(‘Длина окружности: ‘,l:3:1,’,площадь: ‘,s:3:1);

Выполните задания с Proc2 по Proc15 по электронному задачнику (стр.37) и с Proc18 по Proc22 по электронному задачнику (стр.39). Открыть его можно в режиме Помощь – Электронный задачник РТ.

Источник

9. Процедуры и функции

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

Верхняя строка процедуры называется заголовком процедуры и состоит из служебного слова procedure, названия функции, списка параметров и точки с запятой. Следом идут операторные скобки begin-end, называемые телом процедуры. После end обязательно ставится точка с запятой. Процедура может не иметь параметров, в этом случае ставить скобки необязательно.

Заголовок функции отличается тем, что вместо слова procedure пишется function, а после списка параметров или имени (если нет параметров) идет двоеточие и тип результата, который возвращает функция. Вызов встроенной или пользовательской подпрограммы имеет следующий синтаксис:

Если подпрограмма не имеет параметров, то скобки необязательны. Имя подпрограммы должно быть уникальным в пределах модуля и других подключаемых модулей и не должно совпадать с именами встроенных.

В подпрограмме могут быть объявлены локальные переменные, видимые только в теле подпрограммы. Раздел объявления переменных находится между заголовком и телом. Пример:

Имена локальных переменных могут совпадать с именами глобальных переменных. В этом случае использоваться будет локальная переменная.

Параметры процедур и функций

Синтаксис описания параметров разберем на примере:

Параметры в заголовке подпрограммы называются формальными параметрами. Параметры, передаваемые при вызове подпрограммы, называются фактическими.

Параметры одного типа отделяются запятой, после двоеточия указывается тип параметра. Параметры разных типов отделяются точкой с запятой. Список и тип формальных и фактических параметров должен совпадать. За этим следит компилятор.

Параметры, передаваемые в подпрограмму, делятся на:

Пример вызова функции:

В случае с параметрами-значениями и параметрами-константами тип формального и фактического параметра может быть совместимым. Если формальный определен как целое число, то фактический параметр может быть любого целого типа. Только нужно следить, чтобы формальный параметр мог «вместить» фактический параметр. В данном примере тип формального параметра Y «вмещает» переменную a, т. к. область допустимых значений больше. Целый формальный параметр несовместим с другими типами, в том числе с вещественными. А вот вещественный формальный параметр, совместим с целыми и вещественными.

В случае с параметрами-переменными требуется строгое соответствие типов, даже если формальный и фактический параметры являются родственными, например целыми. Т. е. если формальный параметр имеет тип Integer, то фактический параметр тоже должен иметь тип Integer, а не Byte, Word и т. д. Это касается и классов, даже если фактический параметр является потомком класса формального параметра.

Передача массивов в качестве параметров

Для передачи массива в подпрограмму должен быть определен пользовательский тип:

Фактический параметр должен быть переменной массива.

Компилятор не сообщит об ошибке, если объявить параметр-массив таким образом:

Однако во время выполнения вы получите ошибку «type mismatch».

В Паскале есть так называемые открытые массивы. Синтаксис формального параметра открытого массива следующий:

Открытый массив представляет собой одномерный массив. Нижняя граница массива всегда равна 0, даже если нижняя граница передаваемого массива отличается. Соответственно, верхняя граница равна длине массива минус 1. Для определения границ массива можно воспользоваться функциями Low и High. Пример:

Как видно из примера фактическим параметром может быть не только переменная, но и конструктор массива, который представляет собой перечисление элементов через запятую, заключенных в квадратные скобки.

В движке не поддерживаются вариантные открытые массивы, хотя некоторые встроенные подпрограммы имеют параметры такого типа (например, Format).

Возврат значения функции

Функция имеет предопределенную переменную Result, в которую сохраняется возвращаемое значение. Пример:

Выход из подпрограммы

В любой момент можно выйти из подпрограммы. Для этого предусмотрен оператор Exit.

В движке не поддерживается передача в EXIT возвращаемого значения.

Источник

Процедуры и функции (бесплатная статья по Программированию 1С)
из цикла статей «Первые шаги в разработке на 1С»

О чем эта статья

Эта статья продолжает цикл статей «Первые шаги в разработке на 1С». В ней будут рассмотрены следующие вопросы:

Применимость

Материал полностью актуален для платформы «1С:Предприятие 8» редакций 8.2. и 8.3.

Процедуры и функции

В отдельные процедуры и функции можно выносить общие алгоритмы. Одинаковый программный код из разных модулей (какой-то общий алгоритм) разумно выносить в процедуру или функцию какого-нибудь модуля и обращаться к ней.

При этом мы избавляемся от дублирования кода, заменив его вызовом процедуры (функции). Если возникает потребность внести изменения в алгоритм, то эти изменения будет достаточно внести в одном месте.

Кроме того, процедуры и функции повышают читаемость программного кода. Гораздо проще просмотреть, что выполняет данный код, особенно, если вызовы процедур имеют осмысленные названия.

В итоге облегчается сопровождение прикладного решения.

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

Зарезервированные слова использовать для этих целей нельзя, и, естественно, в этом случае система будет сообщать об ошибке.

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

Процедура, в отличии от функции, не может иметь возвращаемое значение. Она просто вызывается и выполняет какие-то действия.

Если функция не будет иметь ключевого слова Возврат, то она вернет несуществующее значение, т.е. значение типа данных Неопределено. Вместе с тем, ключевое слово Возврат можно использовать и в процедуре, но в этом случае возвращаемое значение не указывается, а само ключевое слово будет означать: прекратить выполнение процедуры.

Процедура или функция начинает описываться со слова Процедура (Функция). Далее следует Имя процедуры (функции). После имени обязательно указываются круглые скобки. Внутри скобок могут находиться описываемые параметры.

Данные параметры нужно будет передавать при вызове (при обращении к процедуре). После круглых скобок может стоять слово Экспорт (экспортная функция).

Потом следует тело процедуры (функции), т.е. последовательность из любого количества операторов.

В теле могут находиться вызовы других процедур и функций данного модуля или других модулей, которые доступны из текущего программного модуля. Обязательным является наличие заключительного слова КонецПроцедуры (КонецФункции).

После описания процедуры или функции точку с запятой ставить не нужно. При этом Платформа не считает ошибкой, если точка с запятой стоит после последней процедуры (функции) в модуле.

Однако со временем эта процедура (функция) в результате действий программиста может стать не последней, и тогда будет выдаваться сообщение об ошибке. Примерный вид процедуры и функции представлен на рисунке.

Для чего используются функции и процедуры. Смотреть фото Для чего используются функции и процедуры. Смотреть картинку Для чего используются функции и процедуры. Картинка про Для чего используются функции и процедуры. Фото Для чего используются функции и процедуры

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

При описании процедуры или функции мы можем указать, что для какого-либо параметра по умолчанию должно использоваться некоторое значение. Для этого справа от параметра через знак равенства указывается требуемое значение.

В том случае, если при вызове процедуры (функции) значение параметра будет не задано, то оно примет значение, используемое по умолчанию.

Таким образом, параметры, для которых указано значение по умолчанию, являются необязательными для указания при вызове. В описании процедуры(функции) вначале следуют обязательные параметры, а потом необязательные.

Кроме этого, существует передача параметров по ссылке и по значению. Внутри процедуры (функции) параметр может анализироваться, а также может изменяться. Все данные хранятся в оперативной памяти компьютера.

При передаче по ссылке система сообщает, что нужно обратиться к переменной, которая хранится в данной области памяти. В том случае, если значение параметра изменяется, оно меняется именно в указанной области памяти.

Т.е. при вызове процедуры (функции) мы передавали параметр с одним значением, а после отработки вызываемой процедуры (функции) значение параметра изменилось.

В случае передачи по значению указывается, что параметр нужно передавать по значению.

В этом случае вызывается новая область памяти, отличная от предыдущей, и меняется именно она. Исходное значение параметра не меняется.

По умолчанию все параметры передаются по ссылке. Чтобы передать параметр по значению, в описании процедуры перед параметром нужно поставить ключевое слово Знач.

Следует сказать, что в некоторые процедуры-обработчики передается такой параметр, как Отказ. Значение данного параметра по умолчанию – Ложь.

Если в теле процедуры-обработчика установить данному параметру значение Истина, то процедура не отработает.

Порядок следования процедур и функций в модуле 1С:Предприятие 8 значения не имеет. Из любой процедуры (функции) модуля можно вызывать любую другую процедуру или функцию данного модуля.

Чтобы обратиться к списку процедур текущего модуля в панели конфигуратора можно нажать на кнопку в виде лупы с надписью «PROC» или использовать горячие клавиши (Ctrl+Alt+P).

Откроется диалоговое окно, в котором описаны функции F(x) и процедуры P( ). К ним возможно обращаться.

Список может быть отсортирован в алфавитном порядке (для этого устанавливается галочка «Сортировка»).

При снятой галочке процедуры и функции в списке размещены в соответствии с их следованием в модуле.

Для чего используются функции и процедуры. Смотреть фото Для чего используются функции и процедуры. Смотреть картинку Для чего используются функции и процедуры. Картинка про Для чего используются функции и процедуры. Фото Для чего используются функции и процедуры

Кроме процедур и функций в списке для разных модулей будут доступны разные стандартные обработчики. При выборе обработчика двойным кликом мыши в модуле создается шаблон соответствующей процедуры (обработчика события).

Если в диалоговом окне «Процедуры и функции» выбрать процедуру и нажать на кнопку Перейти, то мы окажемся в начале выбранной процедуры (функции).

Справа от кнопки с надписью «PROC» располагается поле. В этом поле указано имя текущей процедуры (функции).

Первичное знакомство с процедурами и функциями будем считать завершенным. Однако отметим, что платформа содержит множество стандартных процедур и функций, логику которых вам не нужно писать самостоятельно. Достаточно только в случае необходимости вызвать их в нужном месте вашего программного кода. Изучением этих стандартных функций мы и займемся в нашей следующей статье 🙂

Для чего используются функции и процедуры. Смотреть фото Для чего используются функции и процедуры. Смотреть картинку Для чего используются функции и процедуры. Картинка про Для чего используются функции и процедуры. Фото Для чего используются функции и процедуры

PDF-версия статьи

Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.

Для чего используются функции и процедуры. Смотреть фото Для чего используются функции и процедуры. Смотреть картинку Для чего используются функции и процедуры. Картинка про Для чего используются функции и процедуры. Фото Для чего используются функции и процедуры

Статья в PDF-формате

Вы можете скачать эту статью в формате PDF по следующей ссылке:
Ссылка доступна для зарегистрированных пользователей)

Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)

Комментарии / обсуждение (4):

Все хорошо, можно бы добавить про передачу параметра Отказ.

Для чего используются функции и процедуры. Смотреть фото Для чего используются функции и процедуры. Смотреть картинку Для чего используются функции и процедуры. Картинка про Для чего используются функции и процедуры. Фото Для чего используются функции и процедуры

Для чего используются функции и процедуры. Смотреть фото Для чего используются функции и процедуры. Смотреть картинку Для чего используются функции и процедуры. Картинка про Для чего используются функции и процедуры. Фото Для чего используются функции и процедуры

Для новичков статья полезная. Многие делали ошибку изменяя значение входящего параметра, а потом удивляясь почему в вызываемом коде значение тоже изменилось.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *