Структура описания процедур и функций до некоторой степени похожа на структуру Паскаль-программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, переменных. Исполняемая часть содержит собственно операторы процедур.
Формат описания процедуры имеет вид:
procedure имя процедуры (формальные параметры);
раздел описаний процедуры
исполняемая часть процедуры
Формат описания функции:
function имя функции (формальные параметры):тип результата;
раздел описаний функции
исполняемая часть функции
Формальные параметры в заголовке процедур и функций записываются в виде:
var имя параметра: имя типа
и отделяются друг от друга точкой с запятой. Ключевое слово var может отсутствовать (об этом далее). Если параметры однотипны, то их имена можно перечислять через запятую, указывая общее для них имя типа. При описании параметров можно использовать только стандартные имена типов, либо имена типов, определенные с помощью команды TYPE. Список формальных параметров может отсутствовать.
#6. Процедуры и Функции на PascalABC.net
Вызов процедуры производится оператором, имеющим следующий формат:
имя процедуры(список фактических параметров);
Формат описания процедуры:
Список фактических параметров — это их перечисление через запятую. При вызове фактические параметры как бы подставляются вместо формальных, стоящих на тех же местах в заголовке. Таким образом происходит передача входных параметров, затем выполняются операторы исполняемой части процедуры, после чего происходит возврат в вызывающий блок. Передача выходных параметров происходит непосредственно во время работы исполняемой части.
Вызов функции в Турбо Паскаль может производиться аналогичным способом, кроме того имеется возможность осуществить вызов внутри какого-либо выражения. В частности имя функции может стоять в правой части оператора присваивания, в разделе условий оператора IF и т.д.
Формат описания функции:
Для передачи в вызывающий блок выходного значения функции в исполняемой части функции перед возвратом в вызывающий блок необходимо поместить следующую команду:
имя функции:= результат;
При вызове процедур и функций необходимо соблюдать следующие правила:
· количество фактических параметров должно совпадать с количеством формальных;
· соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.
Заметим, что имена формальных и фактических параметров могут совпадать. Это не приводит к проблемам, так как соответствующие им переменные все равно будут различны из-за того, что хранятся в разных областях памяти. Кроме того, все формальные параметры являются временными переменными — они создаются в момент вызова подпрограммы и уничтожаются в момент выхода из нее.
Рассмотрим использование процедуры на примере программы поиска максимума из двух целых чисел.
Функции c++ примеры. Синтаксис. Объявление, реализация функции. Параметры, аргументы. C++ #33
var x,y,m,n: integer;
procedure MaxNumber(a,b: integer; var max: integer);
if a>b then max:=a else max:=b;
Аналогичную задачу, но уже с использованием функций, можно решить так:
var x,y,m,n: integer;
function MaxNumber(a,b: integer): integer;
var max: integer;
if a>b then max:=a else max:=b;
Задача: «Найти максимальное из трех введенных чисел». Для решения воспользуемся описанием функции, принимающей значение максимального из двух чисел, которые передаются в нее в виде параметров.
If A>B Then Max:=A
Writeln(‘Введите три числа’);
Writeln(‘Максимальным из всех является ‘, Max(Max(A,B),C))
Функции — это процедуры особого характера, результатом работы которых является некоторое значение, подобное переменной. Функция, как и процедура, может иметь список параметров, следующих за именем функции в круглых скобках. Но если имя процедуры используется только для ее вызова, то с именем функции связывается ее значение. На примере сложения двух целых чисел проиллюстрируем возможности Турбо Паскаля 7.0 по оформлению программ при помощи процедур и функций, а также рассмотрим различия между этими двумя подходами.
a, b, SumNumbers: integer;
Procedure Summa1(Var Sum: integer; a, b: integer);
Function Sum(a, b: integer): integer;
Summa1(SumNumbers, a, b);
writeln (‘С помощью процедуры сумма чисел равна ‘,SumNumbers);
writeln (‘С помощью функции сумма чисел равна ‘,Sum(a, b));
Вызов процедуры производится по ее имени. Наряду с параметрами-значениями a и b, которые подлежат сложению, в списке параметров присутствует параметр-переменная Sum, который содержит возвращаемое процедурой значение — сумму. Функция же имеет только два параметра.
Это связано с тем, что само имя функции представляет собой идентификатор параметра, значение которого после окончания работы функции равно результату вычисления. Этот параметр соответствует параметру-переменной Sum процедуры. При объявлении функции ей в соответствие ставят определенный тип данных — тип возвращаемого функцией значения.
Function Sum(a, b: integer): integer;
внешне похоже на объявление переменной Sum типа integer. Тип функции объявляется следом за списком параметров — после закрывающейся скобки этого списка и двоеточия.
Процедуры и функции в Турбо Паскале отличаются не только описанием, но и способом их вызова. Так вызов функции Sum можно произвести в следующей форме
Если не обращать внимания на наличие списка параметров, то этот оператор выглядит как присвоение переменной SumNumbers значения переменной Sum. Компилятор, кончно же, знает, что Sum — это имя функции (т.к. определение предшествует использованию) и организует вычисления соответствующим образом.
Точно так же, как константа или переменная, вызов функций может использоваться в списках параметров оператора write (см. программу), что для процедур невозможно. Последнее отличие процедур от функций заключается в необходимости присваивания результата вычисления в теле функции переменной, имя которой совпадает с именем функции.
Если такое присваивание в теле функции не выполнено, то функция не возвратит никакого результата (точнее возвратит произвольный результат). Итак, из вышесказанного возьмите на заметку следующее. Оформлять подпрограмму как функцию целесообразно только в том случае, если ожидается результат работы подпрограммы. Если же последовательность команд ориентирована на выполнение некоторого действия (выдача информации на экран и т.п.), целесообразно оформлять ее как процедуру.
В теле функции обязательно должен быть хотя бы один оператор присваивания, где в левой части стоит имя функции, а в правой — ее значение. Иначе значение функции не будет определено.
Источник: studopedia.su
Процедуры в Visual Basic
Процедура — это блок операторов Visual Basic, заключенных в оператор объявления ( Function , Sub , Operator , Get ) Set и соответствующее End объявление. Все исполняемые инструкции в Visual Basic должны находиться в некоторых процедурах.
Вызов процедуры
Процедура вызывается из другого места в коде. Это называется вызовом процедуры. После завершения процедуры она возвращает управление в код, из которого она была вызвана (вызывающий код). Вызывающий код — это оператор или выражение в составе оператора, в которых указывается имя процедуры и передается управление процедуре.
Возврат из процедуры
После завершения процедуры она возвращает управление вызывающему коду. Для этого он может использовать оператор Return, соответствующий оператор exit для процедуры или оператор конечного процедуры. Затем управление передается в вызывающий код, следующий за точкой вызова процедуры.
- При использовании оператора Return управление немедленно возвращается в вызывающий код. Операторы, следующие за оператором Return , не выполняются. В одной и той же процедуре можно использовать несколько операторов Return .
- При использовании операторов Exit Sub или Exit Function управление немедленно возвращается в вызывающий код. Операторы, следующие за оператором Exit , не выполняются. В одной и той же процедуре можно использовать несколько операторов Exit и одновременно использовать операторы Return и Exit .
- Если процедура не содержит операторов Return или Exit , она завершается оператором End Sub , End Function , End Get или End Set , который следует за последним оператором в составе процедуры. При использовании оператора End управление немедленно возвращается в вызывающий код. В процедуре можно использовать только один оператор End .
Параметры и аргументы
В большинстве случаев процедура должна работать с разными данными при каждом вызове. Эти данные можно передать в процедуру при ее вызове. В процедуре можно определить параметры (ноль или более), каждый из которых представляет одно из передаваемых значений. Каждому параметру в определении процедуры соответствует аргумент при вызове процедуры. Аргумент представляет значение, которое передается в соответствующий параметр для заданного вызова процедуры.
Типы процедур
Visual Basic использует несколько типов процедур:
- Подпрограммы выполняют действия, но не возвращают значение в вызывающий код.
- Процедуры обработки событий — это процедуры Sub , которые выполняются в ответ на событие, вызванное действием пользователя или наступлением определенных условий в программе.
- Функции возвращают значение в вызывающий код. Они могут выполнять другие действия перед возвратом. Некоторые функции, написанные на C#, возвращают значение по ссылке. Вызывающие функции могут изменять возвращаемое значение, и это изменение отражается в состоянии вызываемого объекта. Начиная с Visual Basic 2017, в коде можно использовать значения, возвращаемые по ссылке, но нельзя возвращать значения по ссылке. Дополнительные сведения см. в разделе Значения, возвращаемые по ссылке.
- Процедуры свойств возвращают и задают значения свойств для объектов или модулей.
- Процедуры операторов определяют поведение стандартного оператора, если один или оба операнда представляют собой недавно определенный класс или структуру.
- В универсальных процедурах в Visual Basic определяются параметры типа в дополнение к обычным параметрам процедуры. Это позволяет передавать параметры определенного типа из вызывающего кода при каждом вызове.
Процедуры и структурированный код
Каждая строка исполняемого кода в приложении должна находиться внутри некоторой процедуры, такой как Main , calculate или Button1_Click . Если разделить большие процедуры на более мелкие, код будет более удобным для чтения.
Процедуры можно использовать для реализации повторяющихся или общих задач, таких как часто используемые вычисления, операции с текстом и элементами управления и операции с базами данных. Процедуры можно вызывать из различных мест в коде; таким образом, их можно использовать в качестве стандартных блоков для создания приложения.
Структурирование кода с помощью процедур предоставляет следующие преимущества.
- Процедуры позволяют разбить программу на отдельные логические блоки. Отлаживать такие отдельные блоки легче, чем всю программу целиком.
- После разработки процедур для использования в одной программе их можно использовать в других программах без изменений или с небольшими изменениями. Это помогает избежать дублирования кода.
См. также раздел
- Практическое руководство. Создание процедуры
- Подпрограммы
- Процедуры функций
- Процедуры свойств
- Процедуры операторов
- Параметры и аргументы процедуры
- Рекурсивные процедуры
- Перегрузка процедур
- Generic Procedures in Visual Basic
- Объекты и классы
Источник: learn.microsoft.com
Процедуры и функции в Turbo Pfscal V.7.0
В Turbo Pascal существуют 2 вида подпрограмм, которыми являются процедуры и функции. Применение процедур и функций позволяет использовать различные фрагменты алгоритмов, которые уже встречались раньше в программах. Кроме того, подпрограммы разбивают крупные программы на отдельные смысловые части.
Определение 1
Процедура — это ничто иное, как часть программы, которая является не зависимой и вызывается она для выполнения конкретной последовательности действий по имени. Процедура задает совокупность действий, которые направлены на изменение внешней по отношению к ней программной обстановки. Поэтому, процедуры делают шире понятие оператора в Turbo Pascal.
Отличительной особенностью функции от процедуры является то, что она возвращает результат указанного при её описании типа. Вызывают функции, как правило, из выражения, в котором ее имя используют как оператор.
Сдай на права пока
учишься в ВУЗе
Вся теория в удобном приложении. Выбери инструктора и начни заниматься!
Определение 2
Функция – это, несомненно, частный случай процедуры, обязательно возвращающий в точку вызова результат как значение имени этой функции.
В ходе использования функции обязательно нужно учитывать совместимость типов данных в выражениях. Давайте подробнее остановимся на моментах описания процедур и функций, а также разберем, как правильно их нужно вызывать в программах.
Описание процедуры
Замечание 1
По своей сути описание структуры процедуры схожи с описанием структуры самой программы. Как видим, они обе имеют: заголовок, раздел описаний и исполняемую часть. В разделе описаний процедуры имеются такие же подразделы, как и в разделе описаний программы, а именно сюда относятся описания констант, типов, меток, процедур, функций, переменных. Процедура так же, как и сама программа, имеет тело, которое, в свою очередь, состоит из операторов.
«Процедуры и функции в Turbo Pfscal V.7.0»
Готовые курсовые работы и рефераты
Решение учебных вопросов в 2 клика
Помощь в написании учебной работы
Процедуру описать можно очень просто. В заголовке указываем имя процедуры и формальные параметры в случае их использования. После заголовка прописываем тело процедуры, состоящее из раздела описаний и раздела исполняемых операторов. В разделе, содержащем описание процедур, можно также использовать описания процедур более низкого уровня, в которых, в свою очередь, используются описания других процедур и т.д
Синтаксис процедуры выглядит:
procedure имя процедуры ( параметры);
uses имена модулей;
label имена меток;
const имена констант;
type имена типов;
var имена локальных переменных;
Begin
Синтаксис функции выглядит:
function имя функции ( параметры) : тип результата;
uses имена модулей;
label имена меток;
const имена констант;
type имена типов;
var имена локальных переменных;
begin
Объявление функции отличается от любой константы и переменной тем, что, как правило, стоит далеко от ее описания, образно говоря, оно оторвано от нее. В этой ситуации после объявления функции указываем служебное слово forward:
function имя функции (список параметров) : тип результата; forward;
Аналогичным образом поступаем с процедурой, если ее объявление оторвано от описания, то ставим после него служебное слово forward:
procedure имя процедуры (список параметров); forward;
Самым простым способом описания можно считать использование дополнительной строки, в которой будем указывать только имя процедуры (функции):
function имя функции;
procedure имя процедуры;
Как вызвать процедуру и функцию
Чтобы выполнить одну процедуру или функцию, ее нужно вызвать. Для этого прописываем имя данной процедуры (или функции) в теле программы. За вызов отвечает оператор, имеющий вид:
имя процедуры (список x параметров);
Функцию вызываем аналогичным образом, помимо этого, можно вызвать ее внутри выражения. В частности имя функции может находиться в правой части оператора присваивания, в разделе условий оператора if и т.д.
Чтобы в вызывающий блок передавалось выходное значение функции в исполняемой части функции перед возвратом в вызывающий блок поместим команду:
имя функции: = результат;
Приведем правила, которые необходимы при вызове процедур и функций:
- количество параметров на входе должно совпадать с количеством параметров, указанных в описании процедуры (функции);
- соответствующие параметры на входе и в описании должны совпадать по порядку следования и по типу.
Основным различием функций и процедур является количество возвращаемых ими значений.
Любая функция после того, как завершила свою работу, должна вернуть основной программе (или другой вызвавшей ее подпрограмме) 1 значение, причем его тип нужно указать при объявлении функции.
Для возвращения результата применяют специальную переменную, которая имеет имя, совпадающее с именем самой функции. Оператор присваивания значения этой переменной обязательно должен встречаться в теле функции хотя бы один раз.
function min(a,b: integer): integer
begin
if a >b then
В отличие от функций, процедуры не возвращают никаких значений.
Параметры
Замечание 2
При использовании процедур (функций) в среде Turbo Pascal — программа всегда содержит текст процедуры (функции) и обращается к ней. Тексты процедур и функций находятся в разделе описаний. Сами же они находятся в разделе описаний программы. Чтобы выполнить процесс обмена информацией между процедурами и функциями и другими блоками программы, используем механизм входных и выходных параметров.
Определение 3
Входной параметр – это величина, которая передается из вызывающего блока в процедуру (функцию), а выходной параметр – это величина, передающаяся из процедуры в вызывающий блок (результаты работы процедуры).
Одну и ту же процедуру (функцию) можно вызывать несколько раз, при этом будут выполняться одни и те же действия, но только с разными входными данными. Параметры, которые используем, записывая текст процедуры (функции) в разделе описаний, называются формальными, а те, что используем при ее вызове — фактическими.
Синтаксис записи формального параметра:
var имя праметра : имя типа ;
Служебное слово var может и не использоваться. Если у параметров одинаковый тип, то их имена перечисляем через запятую, при этом указываем одно имя типа для них. Для описания параметра используются лишь стандартные имена типов, или те, которые определены командой type. Список формальных параметров может не использоваться.
В списке фактических параметров последние перечисляются в программе через запятую. Когда нужно вызвать фактический параметр, его подставляют в место формального параметра, причем на то же самое место в заголовке. Т.е., передаются входные параметры, после чего выполняются операторы исполняемой части процедуры, а затем уже происходит возврат в вызывающий блок. Выходные параметры передаются непосредственно в ходе выполнения исполняемой части.
По способу передачи фактических значений в процедуру (функцию) в Turbo Pascal 7.0 применяют:
- переменные;
- значения;
- константы;
- массивы и строки;
- функции;
- процедуры;
- нетипизированные параметры.
Область видимости
Определение 4
Область видимости — это область, в которой действуют имена, а именно это конкретный текст программы, в котором каждое введенное имя обозначает объект, заданный данным описанием.
Глобальные объекты представляют типы данных, константы и переменные, которые объявляются в начале программы до момента объявления процедур. Эти объекты, образно говоря, будут «видны» во всей программе, в том числе и во всех процедурах, которые в ней прописаны. Глобальные объекты существуют на протяжении всего времени, пока работает программа.
Локальные объекты, как правило, объявляются внутри какой-нибудь процедуры и «видит» их только она, да еще ее внутренние процедуры. Локальные объекты не существуют, пока не будет вызвана процедура, в которой они были объявлены, а также после завершения ее работы.
Источник: spravochnick.ru