2.7 Ішкі бағдарламалар
Функция құрылымы:
Function атау(ф_п_т : типі) : типi;
Сипаттама бөлiмi;
begin
операторлар бөлiмi;
end;
Мұндағы,
ф_п_т - типтерi анықталған формальды параметрлер тiзiмi.
Мысалы, n! – санының
факториалын есептейтiн функция құрылымы.
Function fakt(n: integer): integer;
Var
I,f : integer;
begin
f:=1;
for i:=1 to n do
f:=f*i;
fakt:=f;
end;
Осындай iшкi программаны негiзгi
программадан немесе басқа да iшкi программалардан шақыру үшiн
функцияға
қатынау командасын пайдаланады:
Функция_атауы(н_п_т);
Мұндағы,
н_п_т -
типтерi анықталған нақты параметрлер тiзiмi.
Мысалы,
fakt(6);
Ескерту
Нақты
параметрлер типі формальды параметрлер типiмен сәйкес
болу керек.
Мысалы,
кез келген аn есептейтiн программа бөлiгi:
Function stepen(a,n :
integer) : integer;
Var
Aa, i : integer;
Begin
Aa:=1;
For i:=1 to n do
Aa:=aa*a;
Stepen:=aa
End;
Осы программаны шақыру командалары: Stepen(2,4); Stepen(х+1,3);
Функциямен жұмыс жасағанда мыналарды ескеру қажет:
- Функция орындалғанда
бiр ғана нәтиже болады(бiрнеше мән берiлсе де)
- Нәтиже функцияның
атына меншiктеледi, функция программасында мiндеттi түрде меншiктеу
операторы болу қажет, сол жағына функцияның аты меншiктелген.
- Функция тақырыбында
функция нәтижесінің типi көрсетiлуi керек.
- Программалардан функцияны шақыру командасын өрнектiң
тiкелей iшiне орналастыруға болады.
Процедура құрылымы:
procedure атау(ф_п_т : типі);
сипаттама бөлiмi;
begin
операторлар бөлiмi;
end;
Мұндағы, ф_п_т - типтерi анықталған формальды параметрлер тiзiмi, яғни процедураның енгiзу-шығару
параметрлерi.
Осындай iшкi
программаны, негiзгi программадан немесе басқа да iшкi программалардан шақыру
үшiн процедураға қатынау командасын
пайдаланады:
Процедура_атауы(н_п_т);
Мұндағы, н_п_т -
типтерi анықталған нақты параметрлер тiзiмi, яғни процедураның енгiзу-шығару
параметрлерi.
Мысалы, m натурал санының цифрларының қосындысын
есептейтiн программа бөлiгi(m=2346, нәтижесі s=2+3+4+6=15 )
Procedure sum(n: integer; var s : integer);
{ параметрлi – мәнді процедура }
Var
р : integer;
Begin
S:=o;
While (n<>0) do
Begin
P:=n mod 10;
S:=s+p;
N:= n div 10;
End;
End;
Бұл процедураға қатынау үшін:
Sum(m, z); Мұндағы, m-енгiзу, z-шығару параметрлерi.
Процедура үш
топқа бөлiнедi: параметрсiз процедура, параметрлi процедура, параметрлi – мәнді процедура.
Бір бағдарламада бірнеше ішкі бағдарламалар
болу мүмкін, оларға негiзгi бағадрламалардан немесе басқада да iшкi програмалардан қатынауға
болады. Кейде, процедура немесе функция өзiн-өзi шақыруы да мүмкiн.
Мұны рекурсия дейдi, ал ішкі бағдарламалар: рекурсивтi процедура немесе рекурсивтi функция деп аталады.
Мысалы, рекурсивтi процедура құрылымына
procedure recur;
{ параметрcіз процедура }
begin
writeln(' procedure');
recur;
writeln(' f'unction’)
end;
Бұл параметрсiз процедураға жатады, оған қатынау
үшiн процедураның аты ғана жазылады: recur; мұнда шығару операторлары ғана
орындала бередi, яғни процедурадан шығу жолы қарастырылмаған.
Ескерту
Міндетті
түрде ішкі бағдарламалардан шығу жолын қарастыру керек,
әйтпесе программа жұмысы тоқтап қалады.
Мысалы, рекурсивтi процедура құрылымына
procedure recur(n : integer); ); { параметрлi процедура }
begin
write(' pocedure');
if n>1 then recur(n-1);
end;
Бұл параметрлі процедураға қатынау үшiн, процедураның аты және
жақшаға оның параметрiнiң мәнi жазылады: recur(5);
Мысалы, Eвклид алгоритмi бойынша екі санның ЕҮОБ(n,m) табуға арналған, рекурсивтi функция құрылымы:
Function nod(n,m) : integer;
Var
D : integer;
Begin
D:=n mod m;
If d=0 then nod:=m
else nod:=nod(m,d);
End;
Iшкi программаның сипаттама бөлiмiнде
iшкi айнымалылар(локальді немесе жергілікті) сипатталады, олар тек iшкi
программаға ғана тиiстi болады. Ал, негiзгi программада сипатталған
айнымалылар программаның барлық бөлігіне қатыса алады,
оларды сыртқы(глобальды немесе ауқымды)
деп атаймыз.
Программалау өнерiнде iшкi программалар маңызды
роль атқарады. Программа көлемiн азайтады және компьютер жадысында аз орын алады. Жақсы ойластырылған
iшкi программалардан жеке бағдарламалар кітапханасын дайындауға болады. Осындай мақсатпен есептеу орталықтарында
процедуралар және функциялар кітапханалары құрылады,
олар машина жадысында, дискiлерде саяқталады.