Параметры-значения передаются основной программой в подпрограмму через стек в виде их копий. Сам параметр программы подпрограммой измениться не может.
Стр 1 из 7Следующая ⇒ Процедуры и функции В языке Паскаль существуют подпрограммы двух видов: процедуры и функции. Структура подпрограммы аналогична структуре всей программы. Имя подпрограммы обязательно. Заканчивается подпрограмма end;. Подпрограмма должна быть описана (объявлена) до того, как она будет вызвана (использована) в программе или другой подпрограмме. Все параметры, используемые в подпрограмме, делятся на локальные и глобальные. Первые объявлены внутри подпрограммы и доступны только ей самой. Вторые объявлены в программе и доступны как программе, так и всем её подпрограммам. Обмен информацией между основной программой и подпрограммой может осуществляться только с помощью глобальных параметров. Глобальные параметры могут использоваться в подпрограмме двояким образом: - непосредственное обращение к глобальным параметрам (по имени, идентификатору); - использование механизмов формальных параметров.
Процедуры Процедура предназначена для выполнения некоторой законченной последовательности действий. Начинается с заголовка, он обязателен. Состоит из зарезервированного слова procedure, за ним следует имя процедуры, далее в круглых скобках - список формальных параметров. procedure <имя процедуры> (<список формальных параметров>); Пример type tarr=array [1..100] of integer; procedure InpInt(var mas:tarr; n:integer); var i: integer; { локальный параметр} begin writeln(‘введите ’,n,’ целых чисел’); for i:=1 to n do read(mas[i]); end; Для вызова процедуры из основной программы или другой подпрограммы следует записать оператор, состоящий из имени процедуры и списка фактических параметров. Они должны совпадать по количеству и типам с формальными параметрами процедуры.
Пример Вызов процедуры InpInt для ввода k целых чисел в массив m. InpInt(m, k); k-параметр целого типа, m-массив типа tarr.
Функции Функции предназначены для вычисления какого-либо параметра. Отметим два основных отличия от процедуры - заголовок состоит из зарезервированного слова function, за ним в круглых скобках – список формальных параметров, затем через двоеточие записывается тип функции - тип возвращаемого параметра; функция может возвращать параметры следующих типов: любого порядкового, любого вещественного, стандартного string, любого указателя, в том числе тип Pchar. - в теле функции хотя бы раз имени функции должно быть присвоено значение. Пример Функция вычисления факториала числа n. function factorial (n: Byte): longint; var fact:longint; i:byte; begin fact:=n; for i:=n-1 downto 2 do fact:=fact*i; factorial:=fact; end; Для вызова функции из основной программы или другой подпрограммы следует в выражении, где необходимо использовать значение функции, указать имя функции со списком фактических параметров, которые должны совпадать по количеству и типам с формальными параметрами функции. Пример Part: =sqr (t)/factorial (i), где sqr (t) – вызов стандартной функции возведения в квадрат с фактическим параметром t; factorial (i) - вызов функции, вычисляющей факториал с фактическим параметром i.
Формальные и фактические параметры Формальные параметры указывают, с какими параметрами следует обращаться к этой подпрограмме (количество, их последовательность, типы). Они задаются в заголовке подпрограммы в виде списка формальных параметров. Список разбит на группы, разделенные точками с запятыми. В группу вкладываются однотипные параметры одной категории. Все формальные параметры разбиты на 4 категории: - параметры-значения (в основной программе эти параметры подпрограммой не меняются); - параметры-переменные (эти параметры подпрограмма может изменить в основной программе);
- параметры-константы (только в Borland Pascal 7.0); - параметры-процедуры и параметры-функции (процедурного типа). Для каждого формального параметра следует указать имя и, как правило, тип. Для параметра-переменной или параметра-константы – его категории. Имена параметров могут быть любыми, они могут совпадать с именами объектов программы. В этом случае параметр основной программы с таким именем становится недоступным для непосредственного использования подпрограммой. Тип формального параметра может быть любым, но в заголовке подпрограммы нельзя вводить новый тип. Пример Неправильно: function max (a: array [1..00] of real):real; Правильно: type tArr = array [1..100] of real; function max(a:tArr):real; При обращении к подпрограмме формальные параметры заменяются на соответствующие им фактические параметры программы или подпрограммы.
Параметры-значения Параметры-значения передаются основной программой в подпрограмму через стек в виде их копий. Сам параметр программы подпрограммой измениться не может. Параметр-значение указывается в заголовке подпрограммы своим именем и - через двоеточие – типом. Значение его может быть любым, кроме файлового типа. Если значений одного типа несколько, то их можно объединить в одну группу, перечислив их имена через запятую, а затем указать их общий тип. Отдельные группы отделяются друг от друга точкой с запятой. Пример procedure inp(max, min:real; n:word); function mult(x,y:integer)real; В качестве фактического параметра на месте параметра-значения при вызове подпрограммы может выступать любое выражение совместимого для присваивания типа, не содержащее файловую компоненту. Пример inp(abs(7),-abs(t), 2*k); m:=mult(x+y, x-y); Пример Функция вычисления максимального элемента массива. В основной программе определен тип-массив, переменная этого типа и переменная целого типа. type tArr = array[1..100] of integer; var massiv: tArr; maxim:integer; function max(mas:tArr; n: byte): integer; {Описание функции} var ma:integer; i:byte; begin ma:=mas[1]; for i:=2 to N do if ma<mas[i] then ma:=mas[i]; max:=ma end; Тогда возможно maxim:=max(massiv, 5); Будет определено максимальное число из пяти первых чисел массива massiv и записано в переменную maxim. Подпрограмма может работать только с массивами типа tArr. Для массива другого типа требуется создать аналогичную подпрограмму. При работе подпрограммы в стеке будет создана копия исходного массива, что ведёт к уменьшению быстродействия.
Читайте также: II. ЗНАКОМСТВО с программой Windows Movie Maker Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|