А. А. Медатов, М. З. Носиров, М. К
Download 392.5 Kb.
|
Turbo Pascal услубий кулланма
рrоgram max1;
var x,y,u,v:real; a,b,s:real; begin read(x,y); a:=x+y; b:=x*y; if a>b then s:=a else s:=b; u:=s; a:=0. 5; b:=u; if a>b then s:=a else s:=b; v:=s; writeln(u,v) end. Юқоридаги дастурни процедуралар ёрдамида тузиб чиқайлик. рrоgram max2; var x,y,u,v:real; a,b,s:real; рrоcedure max; if a>b then s:=a else s:=b; end; begin read(x,y); a:=x+y; b:=x*y; max; u:=s; a:=0. 5 ; b:=u; max; v:=s; writeln(u,v) end. 3. Процедуралар билан ишлашда дастурлашнинг қулай усули бу - параметрли процедуралар ҳисобланади. Параметрлар икки хил бўлиши мумкин: параметр қийматли ва параметр ўзгарувчили. Параметр қийматлар ҳақидаги масалани кўрайлик. Юқоридаги ёзилган дастурда процедуранинг берилганлари ( a ва b ) олдиндан фиксирланмаган, бу чегаралашдан воз кечайлик. Бунинг учун процедурада бошқа мақсадларда ишлатилмайдиган қийматларни ажратиб рамзий равишда уларни r1 ва r2 деб белгилаймиз. Шу белгилашдан фойдаланиб процедурани қуйидаги кўринишда ёзамиз: рrоgram max3; var x,y,u,v: real; s:real; рrоcedure maxx(r1,r2:real); if r1>r2 then s:=r1 else s:=r2 end; begin read(x,y); maxx(x+y,x*y); u:=s; maxx(0. 5,u); v:=s; writeln(u,v) end. r1 ва r2 идентификаторлар процедуранинг рамзий параметрлари дейилади ва улар процедуранинг аниқ қийматлари эмас, балки умуман қийматлар сифатида қаралади. Процедурага ҳар бир мурожаат бўлганда, унинг рамзий параметрлари аниқлаштирилади, шунинг учун кейинги мурожаатлар осон бўлиши учун рамзий параметрлар процедуранинг сарлавхасида аниқ кўрсатилади. Программанинг ишончлилигини ошириш учун рамзий параметрларни билан бирга уларнинг тури ҳам кўрсатилади. Бундай процедураларга мурожаат қилишда унга мос процедура операторида унинг номидан кейин қавс ичида фактик параметрларнинг рўйхатини кўрсатиш керак. Процедурага мурожаат бўлганда рамзий параметрларнинг бу фактик параметрлар қийматлари билан алмаштирилади. Рамзий ва фактик параметрлар тури ва санаб ўтилиш тартиби бўйича бир-бирига мос келиши керак. Юқорида кўриб чиқилган процедуранинг рамзий параметрлари унинг параметр қийматлари дейилади, чунки бундай параметрлар процедурага мурожат қилингандаги унга мос фактик параметрларни қийматларини ифодалайди. Бундай ҳолда фактик параметрлар рамзий параметрларнинг турига мос келган ихтиёрий ифода бўлиши мумкин, хусусан унинг турига мос келувчи ўзгарувчи ёки ўзгармас бўлиши мумкин. Шуни қайд қилиш керакки фактик параметрлар процедуранинг рамзий параметрларига мос келувчи унинг ички ўзгарувчиларига қийматларни узатиш учунгина хизмат қилади. Уни бошқа мақсадларда ишлатиб бўлмайди. Юқорида кўрилган maxx процедура ҳисобланган қийматни хар доим s ўзгарувчига беради. Бу эса дастурни ишлатишни =ийинлаштиради,, чунки процедурани ишлатишдан мақсад бирор бир алгоритмни бир туркум берилганлар учун ҳисоблаб, натижани эса бошқа туркум ўзгарувчига узатади. Бу камчиликни йўқотиш учун натижа узатилаётган ўзгарувчини ҳам процедуранинг параметри сифатида киритиш керак. Аммо бу рамзий параметрнинг хусусияти юқорида кўрилган процедура параметр қийматидан фарқ қилади: у фақат процедурага узатилган қиймат сифатида эмас, балки процедурадан ташқарида мавжуд бўлган ўзгарувчини ифодалайди. Бу ўзгарувчига процедура ичида қиймат берилиши, яъни процедурани ичида бундай ўзгарувчига мурожат қилиш мумкин. Процедуранинг бундай рамзий параметрига параметр -ўзгарувчи дейилади. Параметр-ўзгарувчини параметр қийматдан фарқлаш учун процедуранинг сарлавхасида рамзий параметрлар рўйхатида параметр-ўзгарувчининг олдига var хизматчи сўз ёзилади. Рамзий параметр-ўзгарувчидан кейин унинг тури кўрсатилади. Параметр-ўзгарувчига мос келувчи фактик параметр фақат ўзгарувчи бўлиши мумкин. Ушбу ҳолда юқорида келтирилган дастурни қуйидаги кўринишда ёзиш мумкин: Download 392.5 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling