Подпрограмма – это самостоятельная часть программы, реализующая определенный алгоритм
Подпрограммы удобно использовать, когда в программе приходится выполнять одни и те же действия, но с разными данными.
Использование подпрограмм имеет следующие преимущества: – облегчение разработки больших и сложных программ; – экономия памяти: память для переменных выделяется только на время работы подпрограммы.
Различают два вида подпрограмм: процедуры и функции.
Основные отличия: - функция возвращает значение и может быть использована в выражении; - процедура может быть вызвана на выполнение.
Виды переменных
Глобальные переменные – это переменные, описанные в разделе описаний главной программы
Локальные переменные – это переменные, описанные в разделе описаний подпрограммы. Локальные переменные могут использоваться и меняться только операторами данной подпрограммы
Параметры Формальные параметры – это параметры, описываемые в заголовке процедуры. Фактические параметры – это значения, указываемые в вызове процедуры
Функции – это разновидность подпрограммы. Для использования функции в программе ее необходимо описать в разделе описаний главной программы.
Описание функции начинается с заголовка function и заканчивается типом данных возвращаемого значения: Function ( ): ;
Задача. Вычислить значение выражения:
Решение. Вычисление модуля оформим в виде пользовательской функции Modul: Program P1; Var x, y: real; Function Modul (x: real): real; begin if x
Задача. Вычислить значение выражения:
Решение. Вычисление модуля оформим в виде пользовательской функции Deg: Program Degree; Var z, f: real; m: integer; Function Deg (n: integer; x: real): real; Var I: integer; y: real; begin I:=1; y:=1; while I
Задача Задача Найти значение выражения. Величины а и b вводятся с клавиатуры.
Решение задачи Решение задачи Program FFF; Var a,b,y:real; Function SB(s,n:real):real; Var s,n,z:real; Begin z:=sin(s)/cos(n); SB:=z; End; Begin Readln(a,b); y:=SB(a,b)/sqr(SB(a,b))-sqrt(SB(a,b))+(sqr(SB(a,b))*SB(a,b)); Writeln(y:3:2); Readkey; End. Подпрограмма-функция Вычисления с помощью функции
Процедура это подпрограмма, которая имеет любое количество входных и выходных данных. Процедура может быть описана без параметров и с параметрами. Параметры в заголовке процедуры используются для обмена информацией между процедурой и вызывающей программой. Они определяют данные, передаваемые для обработки в процедуру, и данные, получаемые в виде результатов.
Описание процедуры имеет такой вид: procedure ; {описание локальных переменных} begin {операторы} end;
Процедура без параметров может реализовывать любой алгоритм. Все переменные, с которыми проводят действия операторы процедуры, определяются в вызывающей программе, им присваиваются необходимые для выполнения процедуры значения. Для вызова процедуры без параметров просто указывается ее имя.
Рассмотрим пример вычисления наименьшего общего кратного двух натуральных чисел НОК(Х, У), которое можно найти, используя наибольший общий делитель (НОД) этих чисел, по формуле НОК(Х, У)=Х-У/НОД(Х, У).
Программа имеет вид: program NOK; const c:array[1..5]of integer=(36,54,72,18,15); var x,у,i,m:integer; procedure NSD; {заголовок процедуры} var a,b:integer; {описание локальных переменных} begin a:=x; b:=у;{сохранение начальных данных} while ab do if a>b then a:=a-b else b:=b-a; m:=а {результат работы процедуры присваивается глобальной переменной} end; {конец процедуры} begin {начало главной программы} х:=с[1]; for i:=2 to 5 do begin у:=с[i]; NSD; {вызов процедуры без параметров} х:=х*у div m {div - деление нацело для целочисленных данных} end; writeln('HOK=',x) end.
Оформим в виде процедуры программу приветствия Program HelloAll; Procedure Hello (name: string); Begin writeln (Привет,, name, !); writeln (name,, как дела?); Readln; End; Begin Hello (Катя); Hello (Андрей); Hello (Лена) End.