-маъруза: Процедура-функцияни эълон =илиш. Функцияга мурожаат =илиш ва ундан фойдаланиш




Download 4,07 Mb.
bet14/21
Sana03.12.2023
Hajmi4,07 Mb.
#110428
1   ...   10   11   12   13   14   15   16   17   ...   21
Bog'liq
Vizual maruza

10-маъруза: Процедура-функцияни эълон =илиш. Функцияга мурожаат =илиш ва ундан фойдаланиш.


Щажми катта ва мураккаб дастурларни ишлаб чи=ишда, табиийки катта =ийинчиликларга дуч келинади. Катта, комплекс дастурларни зарур муддатда яратишга битта дастурчининг ва=ти етмайди. Бундай щолларда, яъни мущим ащамиятга эга былган ва =ис=а муддатларда яратилиш керак былган дастурларни ишлаб чи=иш учун дастурчиларнинг катта гурущини жалб этишга ты\ри келади. Бундай, ягона дастурни яратишдаги параллел иш олиб боришда процедура ва функцияларнинг роли жуда катта былади. Бажарилиши керак былган ишни муста=ил былимларга ажратилиб, щар бир муста=ил иш алощида дастурланиб, кейинчалик улар ягона - асосий дастурга бирлаштирилади.


Асосий дастурда ишлатилувчи ызгарувчилар ва процедура параметрларини =андай танлаб олиш керак деган муаммо, бажариладиган ишнинг энг о\ир =исмларидан бири былиб =олади. Агар уларни бир-бирларига бо\лаб юборилса, у щолда асосий дастурдаги бирор ызгарувчига киритилган ызгартириш, процедурада ишлатилган ва шу ызгарувчига бо\ли= барча ишларни =айтадан тащлил =илиб, текшириб чи=ишга олиб келади. Бундай чалкаш ва о\ир ишни бажаришнинг =ийинлиги дастур тузишда параллел, бир нечта дастурчининг иш олиб боришига щала=ит беради.
Шунинг учун, процедура ва функцияларни ёзишда щар бир дастурга ызи ечаётган масалага мувофи= щолда, турли хил ички ызгарувчилар, дастурли объектлар ызгарувчиларининг турли =ийматларини танлаб олиш щу=у=и берилади. Хаттоки, битта ызгарувчини турли хил вазифаларда ишлатса щам былади. Visual Basic тилида бундай масалани щал =илиш учун локаллаштириш принципи ишлаб чи=илган, яъни процедура ёки функцияда ишлатилган ызгарувчи шу процедура ёки функциянинг таъсир доирасида (ичида) гина ыз =ийматини са=лаб =олади. Процедура ва функцияларнинг ичида ани=ланиб, =ийматланган ызгарувчиларни локал (ички) ызгарувчилар деб аталади. Таш=арида, яъни асосий дастурда киритилган ызгарувчилар эса умуман олганда дастурнинг ихтиёрий жойида ыз =ийматини са=лаб =ола олади. Бу ызгарувчиларни глобал (таш=и) ызгарувчилар деб аталади.
+уйидаги мисолда локаллаштириш принципи я==ол кызга ташланади:

Const n = 1


Dim t, x As String
Private Sub p(x, y As Double)
Dim n As Double
n = x + t
t = y
MsgBox (Str(n) + " " + Str(t) + " " + Str(x))
End Sub
Private Sub Command1_Click()
t = n / 2
x = "+"
Call p(n, 0.8)
MsgBox (Str(n) + " " + Str(t) + " " + x)
End Sub

бу ерда t – асосий дастурнинг глобал ызгарувчиси;


x, y – Р процедурасининг формал параметрлар;
n – P процедурадаги локал ызгарувчи.

Математика курсидан функция тушунчаси бизга яхши таниш былиб, унинг ёрдамида функция ва аргумент ыртасидаги бо\ли=лик ани=ланади. Visual Basic тилида щам функция тушунчаси киритилган былиб, уни шартли равишда икки турга ажратсак былади: стандарт функциялар ва дастурчи томонидан ани=ланган процедура - функциялар. Стандарт функциялар щар бир алгоритмик тил учун ани=ланиб, амалда кып учраб турувчи функцияларнинг =ийматларини щисоблаб беришга мылжалланган. Масалан, Sin(х), Cos(х), Exp(х), Abs(х), sqr(х) ва щ.к.


Худди cтандарт функциялар каби дастурчи щам ызи учун зарур, муста=ил дастур объектларини функциялар кыринишида ани=лаб, ундан керакли пайтда фойдаланиши мумкин.
Функция Visual Basic тилида =уйидаги структура быйича ани=ланади:

[Private][Public][Static] Function процНоми (Параметрлар) [as type]


операторлар
End Function

Ю=орида эслатиб ытганимиздек, функциялар щам процедуралар каби муста=ил дастурлар щисобланиб, асосий дастур ор=али бош=арилади ва худди асосий дастур ва процедурага ыхшаш cтруктурада ёзилади.


Процедура учун айтилган гапларнинг деярли барчаси функция учун щам ыринлидир. Функциянинг процедурадан асосий фар=и =уйидагилардир:

  • функция cарлавщаси бош=ача ани=ланади;

  • функциянинг иши давомида олинадиган натижа функциянинг исмига ызлаштирилади, яъни функциянинг тана =исмида албатта, функция исмига мос типли =иймат ызлаштирилган былиши керак;

  • функциядан асосий дастурга унинг исми ор=али биттагина =иймат берилади.

Функцияга мурожат щам худди процедурадаги каби амалга оширилади, лекин функциянинг мос типли ифодада =атнашиши каби =ышимча имконияти мавжуд.
Энди функцияни ани=лаш ва унга мурожат =илишни тыли=ро= ырганиш учун =уйидаги мисолни кыриб чи=амиз:
Мисол: f(n)  n! (n!  1 * 2 * 3 * ...* n - факториал) функциядан фойдаланиб,
- ифодани щисоблашни ташкил =илинг:
Dim k, i As Integer
Dim m As Integer
Dim y As Double
Function Fact(n As Integer) As Integer
Dim p As Integer
Dim j As Integer
j = 1
For p = 1 To n
j = j * p
Next p
Fact = j
End Function
Private Sub Command1_Click()
k = Val(Text1.Text)
m = Val(Text2.Text)
y = (Fact(2) + Fact(3)) / (Fact(5) + Fact(3)) * Fact(k + 1) / Fact(m)
MsgBox (Str(y))
End Sub

Функцияларни ани=лашда доим шундай щаракат =илиш лозимки, унинг тана =исмида формал параметрлар ва функцияни ани=лаш учун зарур былган локал ызгарувчиларгина =атнашсин. Дастурнинг глобал ызгарувчисига иложи борича процедура ёки функция ичидан туриб =иймат бермаслик керак, акс щолда дастур хато натижа бериши мумкин.


Рекурсив функциялар


Visual Basic тилида процедура – функциялар билан ишлашда, функцияларнинг рекурсивлик щоссасидан фойдаланиш имконияти яратилган.
Рекурсия тушунчасига мисол =илиб оддий факториал щисоблашни келтириш мумкин:

бу ерда кыриниб турибдики n! =иймати (n-1)! ор=али ани=ланаяпти, яъни рекурсия дегани ызи ор=али ызини ани=лаш маъносини англатади.
Visual Basic тили щам функцияларни рекурсив ани=лаш имкониятини беради. Функцияни рекурсив ани=лаш унинг тана =исмида ызига - ызи мурожат =илиш ор=али амалга оширилади.
Ю=оридаги факториал щисоблашни рекурсив функциялар ор=али амалга оширайлик:

Dim n As Integer


Dim y As Integer

Function Fact(m As Integer) As Integer


Dim k As Integer
If m = 0 Then Fact = 1 Else Fact = Fact(m - 1) * m
End Function

Private Sub Command1_Click()


n = Val(Text1.Text)
y = Fact(n)
MsgBox (Str(y))
End Sub

Функцияларни рекурсив ани=лаш =ис=а ва тушунарли тилда былади, рекурсив эмас ани=лаш эса узо= ва функцияни кыриниш эффектини бузади, лекин биринчи щолда сарфланган ЭЩМ ва=ти ва хотира нисбатан анча ю=оридир.





Download 4,07 Mb.
1   ...   10   11   12   13   14   15   16   17   ...   21




Download 4,07 Mb.

Bosh sahifa
Aloqalar

    Bosh sahifa



-маъруза: Процедура-функцияни эълон =илиш. Функцияга мурожаат =илиш ва ундан фойдаланиш

Download 4,07 Mb.