Процедуралар және түрлерімен сипаты
Мазмұны
Кіріспе
1. Процедуралар және түрлерімен сипаты
2. Процедураға мысал
3. Функциялар және олардың түрлерімен сипаты
4. Функцияларға мысал
5. Процедуралар мен функциялардың бір . бірімен айырмашылығы
6. мысалдар
Қорытынды
Процедуралармен функциялардың қолданылуы
Қолданылған әдебиеттер
Кіріспе
1. Процедуралар және түрлерімен сипаты
2. Процедураға мысал
3. Функциялар және олардың түрлерімен сипаты
4. Функцияларға мысал
5. Процедуралар мен функциялардың бір . бірімен айырмашылығы
6. мысалдар
Қорытынды
Процедуралармен функциялардың қолданылуы
Қолданылған әдебиеттер
КІРІСПЕ
Паскаль тілінде подпрограмманың екі түрі бар - процедура және функция анықталған. Кез – келген паскаль тілінде подпрограмма жалпы программа сияқтя құрылымға ие.
Паскаль тіліндегі подпрограмманы шақырғанда негізгі программныңорындалуы уақытша тоқтайды да, орындалу реті паскаль тіліндегі подпрограмма беріледі. Паскаль тіліндегі подпрограмма орындалып болған соң басқару негізгі программаға қайта оралады.
Кез – келген программа, негізігі программада немесе басқа паскаль тіліндегі подпрограмма шақырылмай тұрып, алдын – ала сипатталуы тиіс. Паскаль тіліндегі подпрограммалар пайдаланылатын барлық айнымалылар не глобальды, яғни олар негізгі программада сипатталып сол программада және барлық Паскаль тіліндегі подпрограммаларды қолдануға болады; не локальды, яғни паскаль тіліндегі подпрограмма ғана қолданылады.
Негізгі программа мен Паскаль тіліндегі подпрограмма арасында ақпарат алмасу глобальды айнымалылардың көмегімен орындалады.
Паскаль тіліндегі подпрограмма өзінің локальды айнымалылармен аттас емес кез – келген глобальды айнымалыларды тікелей пайдалануға болады.
Паскаль тілінде подпрограмманың екі түрі бар - процедура және функция анықталған. Кез – келген паскаль тілінде подпрограмма жалпы программа сияқтя құрылымға ие.
Паскаль тіліндегі подпрограмманы шақырғанда негізгі программныңорындалуы уақытша тоқтайды да, орындалу реті паскаль тіліндегі подпрограмма беріледі. Паскаль тіліндегі подпрограмма орындалып болған соң басқару негізгі программаға қайта оралады.
Кез – келген программа, негізігі программада немесе басқа паскаль тіліндегі подпрограмма шақырылмай тұрып, алдын – ала сипатталуы тиіс. Паскаль тіліндегі подпрограммалар пайдаланылатын барлық айнымалылар не глобальды, яғни олар негізгі программада сипатталып сол программада және барлық Паскаль тіліндегі подпрограммаларды қолдануға болады; не локальды, яғни паскаль тіліндегі подпрограмма ғана қолданылады.
Негізгі программа мен Паскаль тіліндегі подпрограмма арасында ақпарат алмасу глобальды айнымалылардың көмегімен орындалады.
Паскаль тіліндегі подпрограмма өзінің локальды айнымалылармен аттас емес кез – келген глобальды айнымалыларды тікелей пайдалануға болады.
Қолданылған әдебиеттер
1, Қ. Сарбасов Программалау курсы – Алматы «Мектеп» 1989
2, М. Қ. Байжуманов, Л.Қ. Жансарбаев Информатика -- Астана 2004
3 , Б. Бөрібаев Ингформатика және компьютер -- Алматы «Білім» 1995
1, Қ. Сарбасов Программалау курсы – Алматы «Мектеп» 1989
2, М. Қ. Байжуманов, Л.Қ. Жансарбаев Информатика -- Астана 2004
3 , Б. Бөрібаев Ингформатика және компьютер -- Алматы «Білім» 1995
Пән: Информатика, Программалау, Мәліметтер қоры
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 30 бет
Таңдаулыға:
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 30 бет
Таңдаулыға:
Мазмұны
Кіріспе
1. Процедуралар және түрлерімен сипаты
2. Процедураға мысал
3. Функциялар және олардың түрлерімен сипаты
4. Функцияларға мысал
5. Процедуралар мен функциялардың бір – бірімен айырмашылығы
6. мысалдар
Қорытынды
Процедуралармен функциялардың қолданылуы
Қолданылған әдебиеттер
КІРІСПЕ
Паскаль тілінде подпрограмманың екі түрі бар - процедура және
функция анықталған. Кез – келген паскаль тілінде подпрограмма
жалпы программа сияқтя құрылымға ие.
Паскаль тіліндегі подпрограмманы шақырғанда негізгі
программныңорындалуы уақытша тоқтайды да, орындалу реті паскаль
тіліндегі подпрограмма беріледі. Паскаль тіліндегі подпрограмма
орындалып болған соң басқару негізгі программаға қайта оралады.
Кез – келген программа, негізігі программада немесе басқа
паскаль тіліндегі подпрограмма шақырылмай тұрып, алдын – ала
сипатталуы тиіс. Паскаль тіліндегі подпрограммалар пайдаланылатын
барлық айнымалылар не глобальды, яғни олар негізгі программада
сипатталып сол программада және барлық Паскаль тіліндегі
подпрограммаларды қолдануға болады; не локальды, яғни паскаль
тіліндегі подпрограмма ғана қолданылады.
Негізгі программа мен Паскаль тіліндегі подпрограмма арасында
ақпарат алмасу глобальды айнымалылардың көмегімен орындалады.
Паскаль тіліндегі подпрограмма өзінің локальды айнымалылармен
аттас емес кез – келген глобальды айнымалыларды тікелей пайдалануға
болады.
1. Процедура және олардың түрлері мен сипаты.
Кез – келген программалық бірліктен оператор арқылы шақырып
пайдалануға болатын жеке программалық бөлікті - процедура деп
айтады.
Кейбір есептеу процестерінде оның белгілі бір бөлігін рет әр
түрлі мәндерге сәйкес қайталап есептеуге тура келеді. Мәселен ,
х2 + рх + q = 0 теңдеуің p және q айнымалылардың әр түрлі мәнджері
үшін шешу қажет болсын. Мұнда біз теңдеу дискриминантының түріне
қарап нақты немесе комплекс түбірлерін анықтайтын екі мәнді
табамыз. Әрине бұл мәндер p және q айнымалыларды қандай болса
да белгілі бір формуламен анықтайды. Егер осындай теңдеулерді шешу
күрделі есептеу процестерінде бірнеше рет кездесетін болса, онда
программаның көлемін ұлғайтпау жәнге трансляцияға кететін уақытты
үнемдеу, сондай – ақ трансляцмядан алынған жұмыс программасы
көлемінің шағын болуы үшін теңдеуі шешудің бөлек ішкі программасын,
яғни процедурасын құрайды.
Параметрсіз процедура. Біз процедура сипатында бірнеше
формальды параметрлердің кейбіреулері нақты мәндер қабылдауы
мүмкіндігін айтқан болатынбыз. Ал кейбір жағдайларда процедураны
шақыру тек бір ғана өздерінің сандық мәндерін өзгертіп отыратын
нақты параметрлер арқылы жүргізіледі. Міне, мұндай жағдайда формальды
параметрлерді пайдаланудың құндылығы кемиді. Сондықтан да АЛГОЛ
тілінде параметрсіз процедураны пайдалану ұғымы пайда болған.
Параметрсіз процедураның тақырыбы.
Procedure p
деп жазылады. Мұндағы Р – идентификатор.Процедураны шақыру қажет жерге
тек осы идентификаторды келтіру болып табылады, яғни нақты
параметрлері болмайды.
Параметрсіз процедура денесінде глобальды және локальданған
объектілер ғана болады. Ал бастапқы шамалардың мәндерін процедура
денесіне беру глобальды аынымалылардың идентификаторлары атқарады.
Параметрсіз процедураны шақыру алдыңда бастапқы шамалардың ролін
атқаратын глобальды идентификаторларға мәндер қабылданған болуы тиіс.
Процедураның орындалуы нәтижесінде табылған мәндер глобальды
параметрлерге қабылданады да, сонан соң келесі жазылған
операторларда пайдаланады.
Б і р і н ш і м ы с а л . ЭВМ – ге I, m, n үш оң сандар
жиыны енгізілген. Осы үш санға сәйкес кесінділер арқылы үшбұрыштар
тұрғызу мүмкіндігін анықтау керек.
Бұл есепті шешу үшбұрыштың кез – келген екі қабырғасының
қасындысы үшінші қабырғасынан үлкен деген қағиданы тексерудің
процедурасын бір рет жасап, сонан соң қажетті жерге оны пайдалана
беруге болады. Тек процедураны шақырар алдыңда жаңа үш мән
енгізілуі керек . Осы есепті шешудің 50 түрлі үш сан жиынтықтарына
арналаған программасына жасайық:
Begin real l, m, n; Boolean R;
Procedure YBR; R : =l m + n ^ m l + n ^ m l +m;
Integer I, N; N:=50; for:=1 step 1 unfil N
do
Begin енгізу (l, m, n); YBR қырытындылау (R)
end
End
Параметрсіз процедуралар үшін де локальды және глобальды
объектілер байланысты процедура денесінің модификациялануы және
процедура операторының орындалуы туралы ережелер түгелімен
сақөталған. Параметрсіз функциялық процедурада сәйкес түрде
анықталады. Негізгі айырмашылығы : көрсеткіші идентификатор түрде
келтіріледі және өрнектерге қарапайым айнымалы сияқтя болып
қатысады.
Е к і н ш і м ы с а л . Екі материалдық нүктенің қозғалысын
сипаттайтын прорамманың әр жерінде екі нүктенің ара қашықтығын r
= (x1-x2)2+(y1-y2)2+(z1-z2)2 формыласы арқылы есептеу керек
болсын.
Ш е ш у і . Ол үшін программаының басында real procedure d;
d:= SQRT (X1+X2)2+(Y1-Y2)2+(Z1-Z2)2 сипатын орналастырып, сонан соң
арифметикалық өрнектердің әр жерінде d идентификаторын әзір
есептелген мән ретінде пайдалана беруге болады. Мысалы:
U:=2*d+3; Y2:=Y2+n; v:= d-5
операторлары орындалғанда d мәні пайдаланып тұр.
Рекурсивті процедуралар . АЛГОЛ тілінде ашық түрде процедура
денесінде осы процедураның өзің шақырауға, сондай – ақ процедура
идентификаторын осы процедураны шақырғанда нақты параметр ретінде
пайдалануға болады. Мұндай мүмкіндіктер процедураның рекурсивтенуің
туғызады.
Рекурсивті процедуралар деп - процедура денесінде осы
процедураның өзі тікелей немесе басқа процедура арқалы шақырылуын
айтады. Рекурсивті процедура мысалы ретінде n санының факториал
есептеуге арналған өте ықшам жазылған функциялық процедураны алуға
болады:
Integer procedure factorial(n); value n;
Integer n; factorial := if n=1 then 1 else
n X factorial (n-1)
Егер n=1 болса, онда процедура денесінде осы процедура шақырылады.
Егер n=2 болса, онда factorial (2) алгоритмінің жазылуына сәйкес
2Хfaktorial(1)болып, яғни 2Х1!=2!ретінде анықталады. Ал n! есептеу
үшін factorial(n) функциялық процедура n рет шақырылады. Өйткені
есептеу процесі ең сонынан басталады., яғни n санына faktorial (n-2)
көбейтілуі тиіс, ал factorial(n-1) табу үшін N-1 саны faktorial(n-
2)көбейтілуі тиіс, тағы сол сияқты, ең ақырында factorial (1) – ге
дейін халғаса береді.
Бірақ факториалды осылай есептеу тиімсіз. Сондықтан жоғарыдағы
процедураны цикл операторын енгізіп жасаған қолайла.
Integer procedure factorial(n); value n;
Integer n; begin I, N; N:=1
for:=1 step 1 unfil N do
N:=NX1; factorial:=N
End
Бұл процедурада рекурсивті түрле шақыру жоқ, тек факториал
итеритивті түрде есептелген. Соңғы процедураға сәйкес табылатын
машиналық жұмысшы программаның көлемі рекурсивті процедураға сәйкес
қарағанда анағұрлым шағын. Алайда рекурсивті процедураларды пайдалану
тиімсіз деген қорытынды тумайды. Өйткені кейбір есептеу
процестерінде , әсіресе бір тілдеаудару сияқты есептеулерде
рекурсивті процедураларды пайдалану арқылы тиімді жұмыс
программалары құрылады.
Рекурсивті процедуралар мен процедураны рекурсивті шақыру
АЛГОЛ – да программаны тұжырымды және қысқа түрде жазуға мүмкіндік
береді.
Процедураның сипатталуы.
Процедураны сипаттау оның тақырыбынан басталады:
Procedure аты( параметрлері);
Мұнда
Аты – процедураға берілетін ат (идентификатор),
Параметрлері – тпитері көрсетілген формальды параметрлер
(айнымалылар) тізімі.
Процедура тақырыбынана кейін сипаттаулар бөлімі , сонан кейін
операторлар бөлімі жазылып , ең сонынан end қызметші сөзінен кейін
нүлтелі үтір қойылады. Процедураның сипаттаулар бөлімінде оған
қажет басқа ішлі программалар сипатталуы мүмкін. Процедураны шақыру
процедура операторының көмегімен жүзеге асады.
Процедураны шақыру . Процедура денесіндегі операторлар
процедура шақылырған жерде орындалады. Процедураның шақыру формальды
параметрлерді нақты параметрлермен ауыстырууболып
табылады.Бұлконструкцияны процедура операторы деп атайды. Процедура
сипатындағы формальды параметрлер саны процедура операторындағы нақты
параметрлер сонымен бірдей болуы тиіс. Жоғарыдағы мысалда келтірілген
процедура.
SIMP (A, B, H, EPS, S1)
Түрінде шақырылады. Мұнда A, B, H, EPS, S1 – нақты параметрлер және
олар A, B, H, EPS, S1 – формальды парамерлерге сәйкес алынған. Нақты
параметрлердің мәндері процедура денесіндегі есептеулерге қатысатын
бастапқы мәндер немесе сол есептеулер нәтижесінде пайда болатын нақты
деректер.
Әрбір формальды параметр идентификатор, ол нақты параметрсіз өрнек,
жол, сол блок ішінде шақырылған басқа бір процедура, массив немесе
ауыстырғыш идентификаторының бірі бола алады. Нақты параметрлер тізімі
араларына үтір қойылып, бірінің соңына бірі жазылған нақты параметрлерден
тұрады. Енді х2 + рх + q = 0 квадрат теңдеуінің түбірлерін есептеудің
процедурасын келтірейік
Procedure КВТ (а, в, с. х1,х2);
Begin х1:=(-b + sqrt (b2-4*a*c)(2*a);
X2:= (-b + sqrt (b2-4*a*c)(2*a);
End;
Егер екә рет есептелетін квадрат түбірдіжкек айнымалымен
белгілесек , ондап пролцедура денесіне құрамды оператор емес блок
болып шығады.
Procedure КВТ (а, в, с. х1,х2);
Begin real d; d:= sqrt (b2-4*a*c)(2*a);
х1:=(-b +d)(2*a);
X2:= (-b –d)(2*a);
End;
Процедураға мысалдар.
1 – есеп . Т матрицасының элементтерін енгізетін процедура
жазыңдар .
Процедураны сипаттауды былай құрастыруға болады:
PROCEDURE TAB (VAR L, K: INTEGER);
VAR I,J:INTEGER;
BEGIN
FOR I:=1 TO L DO BEGIN
FOR I:=1 TO K DO BEGIN
WRITE(T[‘,I,’,’,J,’]=’);
READ(T[I,J]) END;
WRITELN END;
END
Бұл сипаттауда L мен K - INTEGER типіндегі фармальды
параметрлер ,ал I мен J – локальдіпараметрлер, олар сол процедураның
ішінде ғана қолданылады.
PROGRAM PG9_1;
CONST U=100;
VAR N, M: INTEGER;
T:FRRFY [1...U,1...U]OF INTEGER ;
PROCEDURE TAB (VAR L, K: INTEGER);
VAR I,J:INTEGER;
BEGIN
FOR I:=1 TO L DO BEGIN
FOR I:=1 TO K DO BEGIN
WRITE(T[‘,I,’,’,J,’]=’);
READ(T[I,J]) END;
WRITELN END;
END
BEGIN
WRITELN(‘матрица өлшемін енгіз N x M’);
WRITE (‘N=’); READ(N);
WRITE (‘M=’); READ(M);
TAB(N, M)
END
Есепті шешу алгоритмі:
1. Программа денесін айнымалыларды сипаттаудан бастаймыз.
2. ТАВ процедурасын сипаттаймыз.
3. Матрицаның жолдарымен бағандарын анықтайтын N мен M натурал
сандарын енгіземіз.
4. Фактілі параметрлі N және M болатын TAB(N, M) процедурасын
шақырамыз.
5. Программа жұмысын анықтаймыз.
Айнымалылар:
1. ТАВ процедурасында:
Т – енгізілетінматрица (глобалды айнымалы);
I, J – матрица өлшемі (глобалды айнымалы);
2. Негізгі программа :
Т – енгізілетінматрица (глобалды айнымалы);
N, M – матрица өлшемі (глобалды айнымалы);
2 – есеп . Т матрицасының элементтерін енгізетінжәне жауапқа
шығаратын процедура жазыңдар.
PROGRAM PROG2;
CONST U=100;
VAR N, M: INTEGER;
T:АRRAY [1...U,1...U]OF INTEGER ;
PROCEDURE TAB_OUT (VAR L, K: INTEGER);
VAR I,J:INTEGER;
BEGIN
FOR I:=1 TO L DO BEGIN
FOR I:=1 ... жалғасы
Кіріспе
1. Процедуралар және түрлерімен сипаты
2. Процедураға мысал
3. Функциялар және олардың түрлерімен сипаты
4. Функцияларға мысал
5. Процедуралар мен функциялардың бір – бірімен айырмашылығы
6. мысалдар
Қорытынды
Процедуралармен функциялардың қолданылуы
Қолданылған әдебиеттер
КІРІСПЕ
Паскаль тілінде подпрограмманың екі түрі бар - процедура және
функция анықталған. Кез – келген паскаль тілінде подпрограмма
жалпы программа сияқтя құрылымға ие.
Паскаль тіліндегі подпрограмманы шақырғанда негізгі
программныңорындалуы уақытша тоқтайды да, орындалу реті паскаль
тіліндегі подпрограмма беріледі. Паскаль тіліндегі подпрограмма
орындалып болған соң басқару негізгі программаға қайта оралады.
Кез – келген программа, негізігі программада немесе басқа
паскаль тіліндегі подпрограмма шақырылмай тұрып, алдын – ала
сипатталуы тиіс. Паскаль тіліндегі подпрограммалар пайдаланылатын
барлық айнымалылар не глобальды, яғни олар негізгі программада
сипатталып сол программада және барлық Паскаль тіліндегі
подпрограммаларды қолдануға болады; не локальды, яғни паскаль
тіліндегі подпрограмма ғана қолданылады.
Негізгі программа мен Паскаль тіліндегі подпрограмма арасында
ақпарат алмасу глобальды айнымалылардың көмегімен орындалады.
Паскаль тіліндегі подпрограмма өзінің локальды айнымалылармен
аттас емес кез – келген глобальды айнымалыларды тікелей пайдалануға
болады.
1. Процедура және олардың түрлері мен сипаты.
Кез – келген программалық бірліктен оператор арқылы шақырып
пайдалануға болатын жеке программалық бөлікті - процедура деп
айтады.
Кейбір есептеу процестерінде оның белгілі бір бөлігін рет әр
түрлі мәндерге сәйкес қайталап есептеуге тура келеді. Мәселен ,
х2 + рх + q = 0 теңдеуің p және q айнымалылардың әр түрлі мәнджері
үшін шешу қажет болсын. Мұнда біз теңдеу дискриминантының түріне
қарап нақты немесе комплекс түбірлерін анықтайтын екі мәнді
табамыз. Әрине бұл мәндер p және q айнымалыларды қандай болса
да белгілі бір формуламен анықтайды. Егер осындай теңдеулерді шешу
күрделі есептеу процестерінде бірнеше рет кездесетін болса, онда
программаның көлемін ұлғайтпау жәнге трансляцияға кететін уақытты
үнемдеу, сондай – ақ трансляцмядан алынған жұмыс программасы
көлемінің шағын болуы үшін теңдеуі шешудің бөлек ішкі программасын,
яғни процедурасын құрайды.
Параметрсіз процедура. Біз процедура сипатында бірнеше
формальды параметрлердің кейбіреулері нақты мәндер қабылдауы
мүмкіндігін айтқан болатынбыз. Ал кейбір жағдайларда процедураны
шақыру тек бір ғана өздерінің сандық мәндерін өзгертіп отыратын
нақты параметрлер арқылы жүргізіледі. Міне, мұндай жағдайда формальды
параметрлерді пайдаланудың құндылығы кемиді. Сондықтан да АЛГОЛ
тілінде параметрсіз процедураны пайдалану ұғымы пайда болған.
Параметрсіз процедураның тақырыбы.
Procedure p
деп жазылады. Мұндағы Р – идентификатор.Процедураны шақыру қажет жерге
тек осы идентификаторды келтіру болып табылады, яғни нақты
параметрлері болмайды.
Параметрсіз процедура денесінде глобальды және локальданған
объектілер ғана болады. Ал бастапқы шамалардың мәндерін процедура
денесіне беру глобальды аынымалылардың идентификаторлары атқарады.
Параметрсіз процедураны шақыру алдыңда бастапқы шамалардың ролін
атқаратын глобальды идентификаторларға мәндер қабылданған болуы тиіс.
Процедураның орындалуы нәтижесінде табылған мәндер глобальды
параметрлерге қабылданады да, сонан соң келесі жазылған
операторларда пайдаланады.
Б і р і н ш і м ы с а л . ЭВМ – ге I, m, n үш оң сандар
жиыны енгізілген. Осы үш санға сәйкес кесінділер арқылы үшбұрыштар
тұрғызу мүмкіндігін анықтау керек.
Бұл есепті шешу үшбұрыштың кез – келген екі қабырғасының
қасындысы үшінші қабырғасынан үлкен деген қағиданы тексерудің
процедурасын бір рет жасап, сонан соң қажетті жерге оны пайдалана
беруге болады. Тек процедураны шақырар алдыңда жаңа үш мән
енгізілуі керек . Осы есепті шешудің 50 түрлі үш сан жиынтықтарына
арналаған программасына жасайық:
Begin real l, m, n; Boolean R;
Procedure YBR; R : =l m + n ^ m l + n ^ m l +m;
Integer I, N; N:=50; for:=1 step 1 unfil N
do
Begin енгізу (l, m, n); YBR қырытындылау (R)
end
End
Параметрсіз процедуралар үшін де локальды және глобальды
объектілер байланысты процедура денесінің модификациялануы және
процедура операторының орындалуы туралы ережелер түгелімен
сақөталған. Параметрсіз функциялық процедурада сәйкес түрде
анықталады. Негізгі айырмашылығы : көрсеткіші идентификатор түрде
келтіріледі және өрнектерге қарапайым айнымалы сияқтя болып
қатысады.
Е к і н ш і м ы с а л . Екі материалдық нүктенің қозғалысын
сипаттайтын прорамманың әр жерінде екі нүктенің ара қашықтығын r
= (x1-x2)2+(y1-y2)2+(z1-z2)2 формыласы арқылы есептеу керек
болсын.
Ш е ш у і . Ол үшін программаының басында real procedure d;
d:= SQRT (X1+X2)2+(Y1-Y2)2+(Z1-Z2)2 сипатын орналастырып, сонан соң
арифметикалық өрнектердің әр жерінде d идентификаторын әзір
есептелген мән ретінде пайдалана беруге болады. Мысалы:
U:=2*d+3; Y2:=Y2+n; v:= d-5
операторлары орындалғанда d мәні пайдаланып тұр.
Рекурсивті процедуралар . АЛГОЛ тілінде ашық түрде процедура
денесінде осы процедураның өзің шақырауға, сондай – ақ процедура
идентификаторын осы процедураны шақырғанда нақты параметр ретінде
пайдалануға болады. Мұндай мүмкіндіктер процедураның рекурсивтенуің
туғызады.
Рекурсивті процедуралар деп - процедура денесінде осы
процедураның өзі тікелей немесе басқа процедура арқалы шақырылуын
айтады. Рекурсивті процедура мысалы ретінде n санының факториал
есептеуге арналған өте ықшам жазылған функциялық процедураны алуға
болады:
Integer procedure factorial(n); value n;
Integer n; factorial := if n=1 then 1 else
n X factorial (n-1)
Егер n=1 болса, онда процедура денесінде осы процедура шақырылады.
Егер n=2 болса, онда factorial (2) алгоритмінің жазылуына сәйкес
2Хfaktorial(1)болып, яғни 2Х1!=2!ретінде анықталады. Ал n! есептеу
үшін factorial(n) функциялық процедура n рет шақырылады. Өйткені
есептеу процесі ең сонынан басталады., яғни n санына faktorial (n-2)
көбейтілуі тиіс, ал factorial(n-1) табу үшін N-1 саны faktorial(n-
2)көбейтілуі тиіс, тағы сол сияқты, ең ақырында factorial (1) – ге
дейін халғаса береді.
Бірақ факториалды осылай есептеу тиімсіз. Сондықтан жоғарыдағы
процедураны цикл операторын енгізіп жасаған қолайла.
Integer procedure factorial(n); value n;
Integer n; begin I, N; N:=1
for:=1 step 1 unfil N do
N:=NX1; factorial:=N
End
Бұл процедурада рекурсивті түрле шақыру жоқ, тек факториал
итеритивті түрде есептелген. Соңғы процедураға сәйкес табылатын
машиналық жұмысшы программаның көлемі рекурсивті процедураға сәйкес
қарағанда анағұрлым шағын. Алайда рекурсивті процедураларды пайдалану
тиімсіз деген қорытынды тумайды. Өйткені кейбір есептеу
процестерінде , әсіресе бір тілдеаудару сияқты есептеулерде
рекурсивті процедураларды пайдалану арқылы тиімді жұмыс
программалары құрылады.
Рекурсивті процедуралар мен процедураны рекурсивті шақыру
АЛГОЛ – да программаны тұжырымды және қысқа түрде жазуға мүмкіндік
береді.
Процедураның сипатталуы.
Процедураны сипаттау оның тақырыбынан басталады:
Procedure аты( параметрлері);
Мұнда
Аты – процедураға берілетін ат (идентификатор),
Параметрлері – тпитері көрсетілген формальды параметрлер
(айнымалылар) тізімі.
Процедура тақырыбынана кейін сипаттаулар бөлімі , сонан кейін
операторлар бөлімі жазылып , ең сонынан end қызметші сөзінен кейін
нүлтелі үтір қойылады. Процедураның сипаттаулар бөлімінде оған
қажет басқа ішлі программалар сипатталуы мүмкін. Процедураны шақыру
процедура операторының көмегімен жүзеге асады.
Процедураны шақыру . Процедура денесіндегі операторлар
процедура шақылырған жерде орындалады. Процедураның шақыру формальды
параметрлерді нақты параметрлермен ауыстырууболып
табылады.Бұлконструкцияны процедура операторы деп атайды. Процедура
сипатындағы формальды параметрлер саны процедура операторындағы нақты
параметрлер сонымен бірдей болуы тиіс. Жоғарыдағы мысалда келтірілген
процедура.
SIMP (A, B, H, EPS, S1)
Түрінде шақырылады. Мұнда A, B, H, EPS, S1 – нақты параметрлер және
олар A, B, H, EPS, S1 – формальды парамерлерге сәйкес алынған. Нақты
параметрлердің мәндері процедура денесіндегі есептеулерге қатысатын
бастапқы мәндер немесе сол есептеулер нәтижесінде пайда болатын нақты
деректер.
Әрбір формальды параметр идентификатор, ол нақты параметрсіз өрнек,
жол, сол блок ішінде шақырылған басқа бір процедура, массив немесе
ауыстырғыш идентификаторының бірі бола алады. Нақты параметрлер тізімі
араларына үтір қойылып, бірінің соңына бірі жазылған нақты параметрлерден
тұрады. Енді х2 + рх + q = 0 квадрат теңдеуінің түбірлерін есептеудің
процедурасын келтірейік
Procedure КВТ (а, в, с. х1,х2);
Begin х1:=(-b + sqrt (b2-4*a*c)(2*a);
X2:= (-b + sqrt (b2-4*a*c)(2*a);
End;
Егер екә рет есептелетін квадрат түбірдіжкек айнымалымен
белгілесек , ондап пролцедура денесіне құрамды оператор емес блок
болып шығады.
Procedure КВТ (а, в, с. х1,х2);
Begin real d; d:= sqrt (b2-4*a*c)(2*a);
х1:=(-b +d)(2*a);
X2:= (-b –d)(2*a);
End;
Процедураға мысалдар.
1 – есеп . Т матрицасының элементтерін енгізетін процедура
жазыңдар .
Процедураны сипаттауды былай құрастыруға болады:
PROCEDURE TAB (VAR L, K: INTEGER);
VAR I,J:INTEGER;
BEGIN
FOR I:=1 TO L DO BEGIN
FOR I:=1 TO K DO BEGIN
WRITE(T[‘,I,’,’,J,’]=’);
READ(T[I,J]) END;
WRITELN END;
END
Бұл сипаттауда L мен K - INTEGER типіндегі фармальды
параметрлер ,ал I мен J – локальдіпараметрлер, олар сол процедураның
ішінде ғана қолданылады.
PROGRAM PG9_1;
CONST U=100;
VAR N, M: INTEGER;
T:FRRFY [1...U,1...U]OF INTEGER ;
PROCEDURE TAB (VAR L, K: INTEGER);
VAR I,J:INTEGER;
BEGIN
FOR I:=1 TO L DO BEGIN
FOR I:=1 TO K DO BEGIN
WRITE(T[‘,I,’,’,J,’]=’);
READ(T[I,J]) END;
WRITELN END;
END
BEGIN
WRITELN(‘матрица өлшемін енгіз N x M’);
WRITE (‘N=’); READ(N);
WRITE (‘M=’); READ(M);
TAB(N, M)
END
Есепті шешу алгоритмі:
1. Программа денесін айнымалыларды сипаттаудан бастаймыз.
2. ТАВ процедурасын сипаттаймыз.
3. Матрицаның жолдарымен бағандарын анықтайтын N мен M натурал
сандарын енгіземіз.
4. Фактілі параметрлі N және M болатын TAB(N, M) процедурасын
шақырамыз.
5. Программа жұмысын анықтаймыз.
Айнымалылар:
1. ТАВ процедурасында:
Т – енгізілетінматрица (глобалды айнымалы);
I, J – матрица өлшемі (глобалды айнымалы);
2. Негізгі программа :
Т – енгізілетінматрица (глобалды айнымалы);
N, M – матрица өлшемі (глобалды айнымалы);
2 – есеп . Т матрицасының элементтерін енгізетінжәне жауапқа
шығаратын процедура жазыңдар.
PROGRAM PROG2;
CONST U=100;
VAR N, M: INTEGER;
T:АRRAY [1...U,1...U]OF INTEGER ;
PROCEDURE TAB_OUT (VAR L, K: INTEGER);
VAR I,J:INTEGER;
BEGIN
FOR I:=1 TO L DO BEGIN
FOR I:=1 ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz