Процедуры и функции в языке Pascal — это последовательность операторов, обладающая именем и списком параметров, которая может быть вызвана из любых участков программы.
Введение
Язык программирования Pascal (Паскаль) был назван в честь знаменитого учёного из Франции Блеза Паскаля, жившего в семнадцатом веке. Он стал известен изобретением счётной машины, способной выполнять комплекс арифметических процедур. В шестидесятые годы прошлого века Международная Федерация по информационной обработке (IFIP) предложила передовым учёным с мировым именем в сфере информатики участвовать в проектировании нового программного языка.
В середине семидесятых годов двадцатого века этими специалистами была выпущена инструкция по применению первой версии языка Паскаль и его компилятора. Программные продукты, выполненные на Паскале, проходят при их реализации следующие этапы:
Сдай на права пока
учишься в ВУЗе
Вся теория в удобном приложении. Выбери инструктора и начни заниматься!
Pascal Урок 9. Функции (function)
- Ввод и коррекция программного текста.
- Трансляция программы.
- Отладка программного продукта.
Язык программирования Паскаль, аналогично большинству других языков программирования, предусматривает наличие средств, позволяющих представлять вспомогательные алгоритмы в формате подпрограмм. Это требуется в тех случаях, когда какая-либо часть общего алгоритма должна повторяться несколько раз или присутствует возможность использования отдельных фрагментов сформированных раньше алгоритмов. Помимо этого, подпрограммы используются с целью разделения больших программ на небольшие законченные по смыслу фрагменты согласно модульному принципу в программировании.
Чтобы использовать фрагмент общего алгоритма как подпрограмму, он должен обладать именем и описанием алгоритма в соответствии с правилами языка Паскаль. Далее, если возникает необходимость его вызова в программе, осуществляется обращение к подпрограмме, путём упоминания в требуемом месте её имени вместе с перечнем входных и выходных параметров и данных. Данное упоминание означает исполнение входящих в состав подпрограммы операторов, которые работают с заданным набором данных.
«Процедуры и функции в языке Pascal»
Готовые курсовые работы и рефераты
Решение учебных вопросов в 2 клика
Помощь в написании учебной работы
По завершению исполнения подпрограммы, действие продолжится с команды, следующей за вызовом подпрограммы.
Процедуры и функции в языке Pascal
В языке программирования Паскаль существуют следующие виды подпрограмм:
Функции и процедуры должны помещаться в подраздел описаний программы. Чтобы осуществлять информационный обмен среди процедур и функций, а также иными программными блоками, в Паскале имеется механизм входных и выходных параметров.
Входными параметрами являются значения, которые передаются из блоков, обращающихся к подпрограмме, в саму подпрограмму. Для подпрограммы они считаются исходными данными. Выходными параметрами являются значения, которые передаются из подпрограммы в блок, откуда пришло обращение к ней. По сути выходные параметры — это итоговые результаты работы подпрограммы.
Паскаль с нуля. Процедуры и функции.
Подпрограмма может быть вызвана много раз, исполняя одинаковые действия, но при разных входных данных. Параметры, которые применяются для записи текста подпрограммы в описательном разделе, именуются формальными, а которые применяются во время её вызова называются фактическими.
Структура представления процедур и функций в определённой мере аналогична структуре самой программы на языке Паскаль. Они тоже обладают заголовком, разделом описаний и исполняемой частью. Раздел описаний процедур и функций имеет такие же подразделы, как и раздел описаний программы на Паскале, а именно:
- Подраздел, где описаны константы.
- Подраздел типов данных.
- Подраздел меток.
- Подраздел процедур.
- Подраздел функций.
- Подраздел переменных.
В исполняемой части содержится весь набор операторов процедур. Описание процедуры может быть представлено в следующем виде:
procedure наименование процедуры (формальные параметры); раздел описаний процедуры begin исполняемая часть процедуры end;
Описание функции может быть представлено в следующем виде:
function наименование функции (формальные параметры): тип результата; раздел описаний функции begin исполняемая часть функции end;
Формальные параметры в заголовке процедур и функций должны быть представлены следующим образом:
var имя праметра: имя типа
Параметры должны отделяться друг от друга при помощи точки с запятой. Ключевое слово, которым является var, может не указываться. В случае однотипных параметров, их имена могут быть перечислены через запятую, с указанием общего для них имени типа.
Когда выполняется описание параметров, допускается использование только стандартных имён типов, или имён типов, которые определены при помощи команды type. Список формальных параметров допускается не указывать.
Вызвать процедуру можно при помощи оператора в следующем формате:
имя процедуры (список фактических параметров);
В списке фактических параметров перечисляются все эти параметры через запятую. Когда вызываются фактические параметры, то они как бы замещают формальные параметры, которые стоят в заголовке на этих же местах. Так осуществляется передача входных параметров, далее осуществляется выполнение операторов исполняемой части процедуры, а затем реализуется возврат в блок, вызвавший процедуру. Осуществление передачи выходных параметров реализуется прямо при работе исполняемой части.
Вызов функции в Паскале выполняется аналогичными методами, а помимо этого присутствует возможность сделать вызов из какого-нибудь выражения. Следует также отметить, что имя функции может располагаться в правой части оператора присваивания, в разделе, где задаются условия оператора if и так далее.
Чтобы передать в вызывающий блок выходное значение функции, в исполняемую часть функции до возврата в вызывающий блок следует указать такую команду: имя функции := результат;
Когда вызывается процедура или функция, следует выполнять следующие правила:
- Число фактических параметров обязано быть равным количеству формальных параметров.
- Наборы фактических и формальных параметров обязаны быть равными по очерёдности следования и типу.
Источник: spravochnick.ru
Урок 9 — Процедуры и функции
Как уже было сказано ранее, подпрограммы в Pascal представлены в лице функций и процедур, которые могут быть встроенными и пользовательскими. Первые, как правило, изначально присутствуют в системе, а вторые создаются программистом. Нас интересуют в первую очередь пользовательские подпрограммы, работа со встроенными вызывает меньше хлопот.
После описания, подпрограммой можно пользоваться посредством ее имени. При этом управление из места вызова передается соответствующей подпрограмме. Для передачи данных, после объявления имени подпрограммы, в круглых скобках необходимо указать параметры, которые в свою очередь можно разделить на передаваемые и возвращаемые.
Передаваемые параметры – это переменные, которые подпрограмма получает из главной части программы, а возвращаемые – отдает (возвращает) ей. Также различают формальные и фактические параметры. Те, что используются при вызове процедуры или функции называются фактическими, а формальные описываются в заголовке подпрограммы, и принимают значения фактических параметров. Формальные параметры должны совпадать типом и количеством с фактическими. Чтобы стало понятно, где находятся те или иные части подпрограмм, рассмотрим общую форму записи процедур и функций: Процедура:
Procedure (: ); Var Begin . . . End;
Вызов процедуры:
(); Функция:
Function (: ): ; Var Begin . . . :=; End;
Вызов функции:
:=(); В Pascal , также как и во многих других языках программирования, переменные по отношению к программе делятся на локальные и глобальные. Те, которые объявляются в основной части, называются глобальными, а в процедуре или функции – локальными. Локальные переменные в отличие от глобальных могут использоваться лишь внутри подпрограммы, к которой они принадлежат. Теперь более детально рассмотрим в отдельности каждый вид подпрограмм.
Пользовательские процедуры
Процедура – это независимая совокупность операторов, выполняющих заданную последовательность действий, и определенных отдельно от основной части программы. Она начинается со служебного слова Procedure , после которого идет имя и заголовок процедуры. Остальная часть аналогична основной программе. Напишем пример программы, показывающей принцип работы простой процедуры.
program proc; uses crt; var k, n, r: integer; procedure sum(pk, pn: integer; var rez: integer); var i: integer; begin rez:=0; for i:=pk to pn do rez:=rez+i; write(‘ сумма диапазона = ‘, rez:3); end; begin clrscr; write(‘ начальное значение = ‘); readln(k); write(‘ конечное значение = ‘); readln(n); sum(k, n, r); end.
Программа выводит сумму целых чисел заданного диапазона. Имя процедуры прописано после служебного слова, определяющего, что создана именно процедура.
Далее идет заголовок, где первые две переменные – это формальные параметры, в которые передается значение от фактических k и n . Переменная rez возвращает результат и называется параметром-переменной (определяются после слова Var ), а k и n – параметрами-значений. Локальная переменная – i , она описана сразу после заголовка процедуры.
Вызывая, в основной части программы процедуру sum , в качестве передаваемых параметров мы указали три целочисленных переменных. Заметьте, что их количество соответствует числу формальных параметров. Порядок также важен, т. е. в переменную pk передается значение переменной k , в pn значение n и т. д. В вышеизложенном примере было бы вполне уместным не использовать параметр-переменную rez , а определить ее локально. В этом состоит различие между процедурами и функциями в Pascal.
Пользовательские функции
В отличие от процедур, функции могут быть задействованы в основной программе, лишь в каком либо выражении. Также для обращения к функции необходимо знать тип данных результата, возвращаемого ей. Описание функций начинается со служебного слова function, вслед за которым идет ее заголовок, а дальше те же блоки, что и у процедуры.
Function (: ): ; Var Begin . . . :=; End;
В вызываемую часть результат работы функции должен быть возвращен посредством имени последней. Это предусматривает хотя бы одно присвоение ей значения. Допустим необходимо вычислить наибольший общий делитель двух целых чисел. Результатом решения данной задачи будет одно число, поэтому мы воспользуемся именно функцией.
program func; uses crt; var n, m, nod: integer; function nod_Evk(f_n, f_m: integer): integer; begin while n<>m do begin if m>n then m:=m-n else n:=n-m; end; nod_Evk:=n; end; begin clrscr; write(‘ N =: ‘); read(n); write(‘ M =: ‘); read(m); write(‘ Наибольший общий делитель ‘, n,’ и ‘, m, ‘ = ‘); nod:=nod_Evk(n, m); write(nod); end.
В конце описания функции, ее имени присваивается значение, которое впоследствии примет переменная nod . Как видите, в функцию из основной части передаются только два фактических параметра ( m и n ), что соответствует количеству формальных параметров. И если в заголовке процедуры после слова Var можно указать переменные, также относящиеся к числу формальных параметров, то в функции эта обязанность лежит на ее имени, принимающем после своей работы какое-то значение.
Предыдущий урок | Список уроков | Следующий урок |
Источник: pro-prof.com
Процедуры и функции Паскаля
Формальные параметры, объявленные в заголовке процедуры или функции, рассматриваются как расширение раздела описаний. Их можно использовать в теле подпрограммы как обычные переменные. При вызове процедуры или функции формальные параметры заменяются фактическими. Рассмотрим для примера простейшую функцию, определяющую минимум их двух чисел.
Program test; var a, b, c, d: integer; < описание функции, определяющей минимум >function min(x, y: integer) : integer; begin if x < y then min := x else min := y; end; < конец функцииmin>begin < начало основной программы >writeln(‘Введите первую пару целых чисел’); readln(a,b); writeln(‘Минимум равен ‘, min(a,b)); writeln(‘Введите вторую пару целых чисел’); readln(c,d); writeln(‘Минимум равен ‘, min(c,d)); readln; end. В данном примере вначале описана функция min, определяющая минимум из двух целых чиселxиy.
Нужное значение присваивается идентификатору – имени функции. Именно этот результат и будет возвращен как значение функции при выходе из нее. Затем в основной программе функцияminвызывается дважды: вначале для чиселaиb, затем для чиселcиd. Переменныеa,b,c,dявляются фактическими параметрами, переменныеxиy– формальными.
При вызове процедуры или функции на место формальных параметров подставляются фактические. Таким образом, механизм формальных параметров позволяет настраивать алгоритм на нужные данные. Паскаль следит за тем, чтобы количество и тип формальных параметров строго соответствовали количеству и типу фактических параметров в момент обращения к подпрограмме.
Порядок перечисления фактических параметров при вызове процедуры или функции должен соответствовать порядку следования формальных параметров в ее заголовке. За этим необходимо следить программисту. В Паскале различают параметры-значения, параметры-переменные и параметры-константы.
Если параметры определяются как параметры-переменные, перед ними необходимо ставить зарезервированное слово var, а если это параметры-константы, – словоconst, например: procedure Myproc: (var a: real; b: real; const c: string); Здесь a– параметр-переменная,b– параметр-значение,c– параметр-константа. Формальному параметру-переменной должен соответствовать фактический параметр в виде переменной соответствующего типа, параметру-значению и параметру-константе может соответствовать выражение совместимого типа.
За соблюдением этого правила следит компилятор Паскаля. Если параметр определен как параметр-значение, подпрограмме передается копия этого значения. Изменения в подпрограмме параметра-значения не изменяет данные в вызывающей программе. Если параметр определен как параметр-переменная, в подпрограмму передается адрес переменной.
Изменение параметра-переменной приводит к изменению самого фактического параметра в вызывающей программе. В случае параметра-константы в подпрограмму также передается адрес области памяти, в которой располагается переменная или вычисленное значение. Однако компилятор блокирует любые присваивания параметру-константе нового значения в теле подпрограммы. Выходные данные в процедурах должны быть параметрами-переменными. Перед ними должно обязательно указываться ключевое слово var.
Ограничение
Для продолжения скачивания необходимо пройти капчу:
Источник: studfile.net