Rambler's Top100

Билет 6. Вопрос 1 .

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

 

При решении объемных задач по программированию рекомендуется всю задачу разбивать на подзадачи. Решая каждую подзадачу в отдельности, их после объединяют в одну общую задачу. Такой способ решения задач называется МЕТОДОМ СТРУКТУРИРОВАННОГО ПРОГРАММИРОВАНИЯ.

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

Выделенные подзадачи называют подпрограммами. Подпрограммы иначе называют ВСПОМОГАТЕЛЬНЫМИ АЛГОРИТМАМИ.

 

ПОДПРОГРАММЫ - это набор команд, объединенных одним именем, которые можно выполнить в любом месте головной программы, где есть вызов по имени.

 

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

Любая подпрограмма должна быть описана до того, как она будет вызвана в основной программе или в другой подпрограмме. (Но в любом случае - ДО ТЕЛА ГОЛОВНОЙ ПРОГРАММЫ !!!).

Подпрограммы представляют собой автономные блоки, имеющие имена, к которым можно обращаться в нужном месте. Их можно вкладывать друг в друга. ЛЮБАЯ ПОДПРОГРАММА обладает той же структурой, которой обладает и вся программа, т.е. ИМЕЕТ ЗАГОЛОВОК, ОПИСАТЕЛЬНУЮ ЧАСТЬ И СОБСТВЕННО ТЕЛО.

В языке PASCAL существует 2 вида подпрограмм:

1) ПРОЦЕДУРЫ;

2) ФУНКЦИИ.

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

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

Все данные, которые используются в подпрограмме, могут быть:

- либо ГЛОБАЛЬНЫМИ;

- либо ЛОКАЛЬНЫМИ.

 

ГЛОБАЛЬНЫЕ ДАННЫЕ описываются в основной программе и являются доступными не только ей, но и всем ее подпрограммам.

 

Например:

program имя;

 

объявление глобальных данных

 

определение процедур и функций

begin

....

end.

 

ЛОКАЛЬНЫЕ ДАННЫЕ

 

описываются только внутри конкретной подпрограммы и доступны только ей самой.

 

Например:

 

procedure имя;

 

объявление локальных данных

 

определение процедур и функций, используемых внутри данной процедуры

 

begin

....

end;

 

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

 

ПОЛЬЗОВАТЕЛЬСКИЕ ПРОЦЕДУРЫ.

 

Общий вид описания процедур:

 

PROCEDURE имя_процедуры (список формальных параметров);

 

label ...;

const ...;

type ....;

var .....;

BEGIN

.......

END;

 

Любая процедура начинается с заголовка, который является обязательным. Он состоит из зарезервированного слова PROCEDURE, за которым следует идентификатор имени процедуры, а далее в круглых скобках - список ФОРМАЛЬНЫХ ПАРАМЕТРОВ. За заголовком следуют такие же разделы, что и в основной программе. Завершается процедура точкой с запятой. Досрочный выход из подпрограмм возможен только с помощью команды EXIT.

 

ФОРМАЛЬНЫЕ ПАРАМЕТРЫ - это имена переменных и констант, которым в команде вызова процедуры присвоятся фактические значения.

 

Формальные параметры бывают ВХОДНЫМИ И ВЫХОДНЫМИ.

 

ВХОДНЫЕ ПАРАМЕТРЫ - это те параметры, значения которых передаются в данную процедуру.

 

ВЫХОДНЫЕ ПАРАМЕТРЫ - это те параметры, значения которых возвращаются в ту часть программы, которая вызывала данную процедуру.

 

Например : PROCEDURE mmm (a,b,c,d: тип ; var f,g: тип );

Здесь формальные параметры a,b,c,d являются входными, а f,g - выходными.

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

Входные параметры иначе называют АРГУМЕНТАМИ процедуры, а выходные параметры называют РЕЗУЛЬТАТАМИ процедуры.

ДЛЯ ВЫЗОВА ПРОЦЕДУРЫ в тексте программы указывается ее имя, а в скобках через запятую перечисляются имена или значения ФАКТИЧЕСКИХ ПАРАМЕТРОВ.

ФАКТИЧЕСКИЕ ПАРАМЕТРЫ - это конкретные значения переменных и констант, используемых в данной процедуре и получаемых в результате ее выполнения.

 

Например:

mmm (m,n,i,j,k,l); - вызов процедуры с именем mmm.

 

Здесь конкретные значения m, n, i, j передаются в процедуру, т.е. являются фактическими входными параметрами. Их значения используются в данной процедуре и не возвращаются в вызывающую часть программы.

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

 

ПРАВИЛА РАБОТЫ С ФОРМАЛЬНЫМИ И ФАКТИЧЕСКИМИ ПАРАМЕТРАМИ :

 

•  Типы, количество и порядок следования формальных и фактических параметров должны совпадать.

•  На месте фактических входных параметров можно использовать арифметические выражения, константы и переменные.

•  На месте фактических выходных параметров можно указывать только имена отдельных переменных.

 

ПРИМЕР 1.

procedure swap (var x,y:real);

var t:real;

begin

t:=x; x:=y; y:=t;

end;

 

Здесь переменные х и y являются и входными и выходными формальными параметрами. Переменная t является локальной.

 

Пример.

program vv;

var x,y:real;

procedure swap (var x,y:real);

var t:real;

begin

t:=x; x:=y; y:=t;

end;

begin

x:=5; y:=2.3;

swap (x,y);

writeln(x,y)

end.

 

Ответ : x=2.3; y=5.

 

Здесь переменные х и y являются глобальными. Они же являются фактическими входными и выходными параметрами процедуры swap.

Процедура может и не содержать параметров. В этом случае заголовок имеет вид:

 

procedure имя_процедуры;

Оператор вызова такой процедуры имеет вид:

имя_процедуры;

 

ПРИМЕР 2.

 

program delo;

var a,b,g,r: integer;

procedure ostatok;

begin

g:=a div b;

r:=a mod b;

end;

begin

a:=12; b:=5;

ostatok;

writeln(g,r)

end.

 

Ответ: g=2 , r=2. Здесь переменные a, b, g, r являются глобальными.

В результате выполнения процедуры ostatok находятся значения переменных g и r (целой части и остатка от деления целого числа a на b). При этом, конечно, переменные a, b, g, r должны быть описаны в программе, содержащей описание этой процедуры, а значения переменных a и b должны быть заданы до выполнения операторов процедуры.

 

ОТЛИЧИЯ ПРОЦЕДУР ОТ ФУНКЦИЙ:

 

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

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

 

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

 

Вверх

Белорусский рейтинг MyMinsk.com Сайты беларуси Регистр "ЗУБР" Каталог на TIGA.BY, а также  новости, работа, объявления, фото и многое другое Рейтинг@Mail.ru Rambler's Top100 Белорусский каталог программ Faststart - рейтинг сайтов, каталог интернет ресурсов, счетчик посещаемос­ти Яндекс.Метрика
Hosted by uCoz