ՀԱՅԱՍՏԱՆԻ ՀԱՆՐԱՊԵՏՈՒԹՅԱՆ ԿՐԹՈՒԹՅԱՆ ԵՎ ԳԻՏՈՒԹՅԱՆ
ՆԱԽԱՐԱՐՈՒԹՅՈՒՆ
ՀԱՅԱՍՏԱՆԻ ՊԵՏԱԿԱՆ ՕԱՐՏԱՐԱԳԻՏԱԿԱՆ ՀԱՄԱԼՍԱՐԱՆ
(ՊՈԼԻՏԵԽՆԻԿ)
Քոմթյութերային համակարգերի ն ինֆորմատիկայի դեպարտամենտ Ալգորիթմական լեզուների ն ծրագրավորման ամբիոն
ՔՃՏՇՃԼ ծրագրավորում
ՄԵԹՈԴԱԿԱՆ ՑՈՒՑՈՒՄՆԵՐ ԵՎ ՍՏՈՒԳՈՂԱԿԱՆ ԱՌԱՋԱԴՐԱՆՔՆԵՐ
Երնան 2007
ՀՏԴ 681.3.06 Ստորագրված է տպագրության 26.12.06թ.
Կազմողներ`
Ս.Ս.Ավետիսյան, Ռ.Վ. Աղգաշյան, Ս.Վ.Դանիելյան
Ք8ՏՇ8l ծրագրավորում: Մեթոդական ցուցումներ ն ստուգողական առաջադրանքներ: Եր., Հայաստանի պետական ճարտարագիտական համալսարան, 2007.132 էջ: Նախատեսված են ՀՊՕՀ բակալավրի կրթական ծրագրով սովորող բոլոր ուսանողների համար:
Գրախոս՝
Գ.Վ.Ադամյան
ԲՈՎԱՆԴԱԿՈՒԹՅՈՒՆ
1. ՀԱՇՎՈՂԱԿԱՆ ԳՈՐԾԸՆԹԱՑԻ ԱԼԳՈՐԻԹՄԱՑՈՒՄ ................................5 1.1. Հիմնական հասկացություններ .....................................................5 1.2. Գծային ալգորիթմներ ....................................................................6 1.3. Օյուղավորված ալգորիթմներ........................................................8 1.4. Ցիկլային ալգորիթմներ .................................................................9 1.5. Ներդրված ցիկլերով ալգորիթմներ .............................................14 1.6. Տիպային օրինակներ...................................................................15 1.7. Տնային առաջադրանքներ...........................................................29 2. ՕՅՈՒՂԱՎՈՐՎԱԾ ԾՐԱԳՐԵՐԻ ԿԱԶՄԱԿԵՐՊՈՒՄ .................................30 2.1. Հիմնական հասկացությունները ն օպերատորները...................30 2.2. Պարզ ծրագրերի տիպային օրինակներ .....................................38 2.3. Տնային առաջադրանքներ...........................................................47 3. ՑԻԿԼԱՅԻՆ ԾՐԱԳՐԵՐԻ ԿԱԶՄԱԿԵՐՊՈՒՄ...........................................48 3.1. Ցիկլային ծրագրեր .....................................................................48 3.2. Պարամետրով ցիկլի օպերատոր ................................................48 3.3. Նախապայմանով ցիկլի օպերատոր...........................................50 3.4. Հետպայմանով ցիկլի օպերատոր...............................................51 3.4. Հետպայմանով ցիկլի օպերատոր...............................................51 3.5. Ցիկլի օպերատորների կիրառման հիմնական կանոնները .......52 3.6. Պարզ ծրագրերի տիպային օրինակներ .....................................53 3.7. Տնային առաջադրանքներ...........................................................65 4. ԶԱՆԳՎԱԾՆԵՐ ......................................................................................66 4.1. Զանգվածներ .............................................................................66 4.2. Պարզ ծրագրերի տիպային օրինակներ .....................................68 4.3. Տնային առաջադրանքներ...........................................................79 5. ԵՆԹԱԾՐԱԳՐԵՐ ...................................................................................80 5.1. Հիմնական հասկացություններ................................................80 5.2. Ենթածրագրերի կիրառման օրինակներ ..................................87 5.3. Տնային առաջադրանքներ ........................................................94 6. «Տող» տիպի փոփոխականներ ..........................................................96 6.1. Հիմնական հասկացություններ ...................................................96 6.2. Պարզ ծրագրերի տիպային օրինակներ ...................................100 6.3. Տնային առաջադրանքներ.........................................................104
7. Գրառումներ .......................................................................................105 7.1. Ընդհանուր հասկացություններ.................................................105 7.2. Պարզ ծրագրերի տիպային օրինակներ ...................................107 7.3. Տնային առաջադրանքներ.........................................................113 8. ՖԱՅԼԵՐ ..............................................................................................114 8.1. Ընդհանուր հասկացություններ.................................................114 8.2. Ֆայլերին դիմելու հնարավորությունը......................................116 8.3. Ֆայլերի նախապատրաստումը աշխատանքի.........................117 8.4. Ֆայլերի փակումը......................................................................119 8.5. Տվյալների գրանցումը ն ընթերցումը .......................................119 8.6. Տիպայնացված ֆայլերի համար կիրառվող պրոցեդուրաներ ն ֆունկցիաներ .............................................124 8.7. Ֆայլերի կիրառման օրինակներ ...............................................126 8.8. Տնային առաջադրանքներ.........................................................130 ԳՐԱԿԱՆՈՒԹՅՈՒՆ...................................................................................131
1. ՀԱՇՎՈՂԱԿԱՆ ԳՈՐԾԸՆԹԱՑԻ ԱԼԳՈՐԻԹՄԱՑՈՒՄ
1.1. Հիմնական հասկացություններ Ալգորիթմը գործողությունների այնպիսի կարգավորված հաջորդականություն է, որը վերջավոր քայլերի ընթացքում հանգեցնում է դրված խնդրի լուծմանը: Ալգորիթմի ներկայացումը բլոկ-սխեմայի տեսքով ալգորիթմների ներկայացման ամենադիտողական եղանակն է: Այս դեպքում ալգորիթմը ներկայացվում է հատուկ բլոկների միջոցով, որտեղ յուրաքանչյուր բլոկ իրականացնում է խնդրի լուծման որոշակի փուլ: Աղյուսակ 1-ում տրված են որոշ բլոկների նկարագրությունները ն նրանց միջոցով իրականացվող գործողությունները: Բլոկի ներսում գրվում է ինֆորմացիա՝ կատարվող գործողության մասին: Ամեն մի բլոկ կարող է ունենալ իր համարը, որը դրվում է բլոկի եզրագծի ընդհատված վերին ձախ անկյունում: Ալգորիթմի սխեմայում հաշվողական պրոցեսի ընթացքը ցույց է տրվում բլոկների միջն եղած կապի գծերով, որոնց ուղղությունը անպայման ցույց է տրվում սլաքով այն դեպքում, երբ նրանք ուղղված են աջից ձախ կամ ներքնից վերն: Մնացած դեպքերում սլաքները կարելի է չդնել: Ալգորիթմի սխեմայում հոսքի ընդհատման դեպքում ընդհատված գծի ծայրերում պետք է դնել միացուցիչ, որի ներսում դրվում է որնէ պայմանանշան: Օրինակ՝
Ա Ա
Ըստ ալգորիթմում կատարվող գործողությունների կապերի բնույթի` տարբերակում են գծային, ճյուղավորված ն ցիկլային ալգորիթմներ:
Բլոկի անվանումը Պրոցես
Կանխորոշված պրոցես Լուծում
Մոդիֆիկացիա
Բլոկի նշանակումը
Աղյուսակ 1. Կատարվող ֆունկցիան Հաշվողական գործողություն կամ գործողությունների հաջորդականություն Նախապես ստեղծված ն առանձին նկարագրված ալգորիթմի օգտագործում Պայմանի ստուգում ն հաշվողական պրոցեսի շարունակության ընտրություն Ցիկլային պրոցեսի կազմակերպում
Մուտք-ելք
Տվյալների ներմուծում ն արտածում
Սկիզբ
Ալգորիթմի սկիզբ
Ավարտ
Ալգորիթմի ավարտ
Միացուցիչ
Հոսքի ընդհատված գծերի միջն կապի ցուցիչ
1.2. Գծային ալգորիթմներ Գծային ալգորիթմը իրար հաջորդող գործողությունների հաջորդականություն է, որոնք նախնական տվյալների բոլոր թույլատրելի արժեքների դեպքում կատարվում են խիստ միննույն բնական հաջորդական կարգով: Օրինակ 1.1: Կազմել բլոկ-սխեմա, որը կհաշվի տրված 8, Ե, ն Շ կողմերով եռանկյան մակերեսը: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ. 1.1-ում:
Սկիզբ
մուտք 8,Ե,Շ
ք-(8+Ե+Շ)/2
,
Տ = ք ( ք − 8 )( ք − Ե )( ք − Շ ) 5 Տպել Տ
Սկիզբ Նկ. 1.1
Տրված եռանկյան մակերեսը կարելի է հաշվել` օգտվելով Հերոնի բանաձնից: Նախ անհրաժեշտ է հաշվել տրված կողմերով եռանկյան կիսապարագիծը (ք), իսկ այնուհետն` մակերեսը.
p=
a+Ե+c , 5=
p ( p − a )( p − Ե)( p − c ) :
Բլոկ 2-ում ներմուծվել են եռանկյան կողմերի երկարությունները: Եռանկյան ք կիսապարագիծը հաշվվել է 3-րդ բլոկում, իսկ Տ մակերեսը՝ 4րդ բլոկում: Բլոկ 5-ում արտածվել է եռանկյան մակերեսի արժեքը:
1.3. Օյուղավորված ալգորիթմներ Օյուղավորված ալգորիթմը պարունակում է լուծման բլոկ, որի իսկությունից կախված` իրականացվում են գործողությունների տարբեր հաջորդականություններ, որոնք կոչվում են ճյուղեր (նկ. 1.2):
ոչ
Պայման այո Գործողության 1
Գործողության 2
Նկ. 1.2 Սկզբում ստուգվում է գրված պայմանը, եթե այն ստանում է ճշմարիտ արժեք, ապա կատարվում է գործողություն 1-ը ն բաց է թողնվում գործողություն 2-ը, իսկ եթե պայմանը ստանում է կեղծ արժեք, ապա ընդհակառակը՝ կատարվում է գործողություն 2-ը , բաց է թողնվում գործողություն 1-ը:
Օրինակ 1.2: Կազմել 8x2+Եx+Շ-0 հավասարման լուծման ալգորիթմի բլոկ-սխեման: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ. 1.3-ում: Բլոկում 2-ում ներմուծվում են 8, Ե, Շ փոփոխականների արժեքները: 3-րդ բլոկում հաշվվում է հավասարման տարբերիչը: 4-րդ բլոկում տարբերիչը համեմատվում է 0-ի հետ: Եթե այն մեծ կամ հավասար է 0-ից, ապա կատարվում են 5-րդ ն 6-րդ բլոկները, այսինքն` հաշվվում են հավասարման x1, x2 արմատները ն դրանց արժեքները տպելուց հետո (7րդ բլոկ) կառավարումը փոխանցվում է 9-րդ բլոկին, որն ավարտում է ալգորիթմը: Եթե 4-րդ բլոկում պարզվել է, որ տարբերիչը մեծ կամ հավասար չէ 0-ից, ապա նշանակում է հավասարումը իրական արմատներ չունի: Այդ դեպքում 8-րդ բլոկում տպվում է «լուծում չունի» հաղորդագրությունը ն ալգորիթմն ավարտվում է:
Սկիզբ
2 Մուտք 8,Ե,Շ
D-Ե2-48Շ
ոչ D≥0
,
այո
x1-(-Ե+
D
)/28
x1-(-Ե-
D
)/28
Տպել x1,x2
Տպել «լուծում
Նկ. 1.3 9 Ավարտ
1.4. Ցիկլային ալգորիթմներ Գործնական խնդիրների լուծման ժամանակ հաճախ հանդիպում են գործողությունների որոշակի հաջորդականություններ, որոնք անհրաժեշտ է լինում կրկնել մեկից ավելի անգամ` մուտքային որոշակի պարամետրերի տարբեր արժեքների դեպքում: Այդ նպատակով կիրառվում են ալգորիթմական հատուկ կառուցվածքներ, որոնք կոչվում են ցիկլային (շրջափուլային): Ցիկլում կատարվող գործողությունները (մեկ կամ ավելի) անվանում են ցիկլի մարմին: Ցիկլային կառուցվածքների դասակարգման համար կարնոր չափանիշը կրկնությունների թվի նախապես հայտնի կամ անհայտ լինելն է: Առաջին դեպքում, երբ հայտնի են մուտքային պարամետրերի
նախնական ն վերջնական արժեքները, գործ ունենք, այսպես կոչված, կառուցվածքային ցիկլի հետ, որի ներկայացման համար բլոկ-սխեմայում կիրառվում է վերը բերված մոդիֆիկացիայի բլոկը: Երկրորդ դեպքում, երբ հայտնի չէ ցիկլի պարամետրի վերջնական արժեքը, հետնաբար ն կրկնությունների թիվը, գործ ունենք, այսպես կոչված, իտերացիոն ցիկլային կառուցվածքի հետ: Այսպիսի կառուցվածքների ներկայացումը մոդիֆիկացիայի բլոկով, բնականաբար, անհնար է, քանի որ վերջինս պահանջում է ցիկլի պարամետրի ինչպես նախնական, այնպես էլ վերջնական արժեքների պարտադիր նշում: Ըստ իրագործման տեխնիկական միջոցների` կարելի է առանձնացնել երեք հիմնական տիպի մոտեցումներ: ա) պարամետրով ցիկլային կառուցվածք (նկ. 1.4. ա) ), բ) նախապայմանով ցիկլային կառուցվածք (նկ. 1.4. բ) ), գ) հետպայմանով ցիկլային կառուցվածք (նկ. 1.4. գ) ):
կրկնում
պայման
ցիկլի մարմին
ելք ցիկլից ա)
ցիկլի մարմին
ցիկլի մարմին
ելք ցիկլից բ)
պայման
ելք ցիկլից գ)
Նկ. 1.4 Պարամետրով ցիկլային ալգորիթմը կազմակերպում է մեկ կամ մի շարք գործողությունների ցիկլային կատարումը` նախապես հայտնի քանակությամբ անգամ: Սկզբում ցիկլի պարամետրին վերագրվում է նրա նախնական արժեքը, որի համար կատարվում են ցիկլի մարմնում գրված բոլոր գործողությունները: Այնուհետն ցիկլի պարամետրի արժեքը փոխվում է նշված քայլով, որի համար նույնպես կատարվում է ցիկլի
մարմինը: Կրկնումները շարունակվում են այնքան ժամանակ, քանի դեռ ցիկլի պարամետրը չի գերազանցել իր համար նշված վերջին արժեքը: Նախապայմանով ցիկլային ալգորիթմը կազմակերպում է ցիկլի մարմնում գրված գործողությունների կատարումը նան նախապես անհայտ քանակությամբ անգամ: Ցիկլի այս կառուցվածքի իմաստն այն է, որ քանի դեռ ճշմարիտ է առաջին բլոկում գրված պայմանը, ապա կատարվում է ցիկլի մարմինը: Ցիկլը ավարտվում է, եթե գրված պայմանը ստանում է կեղծ արժեք: Քանի որ ցիկլի մարմնի կատարումը կախված է առաջին բլոկում գրված պայմանից, ապա հնարավոր է, որ ցիկլի մարմնում գրված գործողությունները չկատարվեն ն ոչ մի անգամ: Հետպայմանով ցիկլային ալգորիթմը կազմակերպում է ցիկլի մարմնում գրված գործողությունների կատարումը նան նախապես անհայտ քանակությամբ անգամ: Հետպայմանով ցիկլային կառուցվածքներում կրկնումները շարունակվում են այնքան ժամանակ, քանի դեռ կեղծ է 2-րդ բլոկում գրված պայմանը: Քանի որ ցիկլի մարմնում գրված գործողությունների կատարումից հետո է միայն ստուգվում ցիկլի կրկնման պայմանը, ապա ցիկլի այս կառուցվածքը կոչվում է հետպայմանով, ն անկախ ցիկլի ավարտի պայմանի իսկությունից ցիկլի մարմինը կկատարվի գոնե մեկ անգամ:
Օրինակ 1.4: Կազմել 7-f(x) ֆունկցիայի արժեքների հաշվման ալգորիթմը, երբ x-ը փոխվում է սկզբնական x0 արժեքից մինչն վերջնական xk արժեքը հ հաստատուն քայլով: Խնդիրը կարելի է լուծել նշված երեք կառուցվածքներով: Դիտարկենք խնդրի լուծման ալգորիթմը նախապայմանով ցիկլային կառուցվածքի միջոցով: Ալգորիթմի բլոկ-սխեման բերված է նկ. 1.5-ում: 3-րդ բլոկում կատարվում է ցիկլի նախապատրաստումը՝ x փոփոխականին վերագրվում է սկզբնական x0 արժեքը: Բլոկ 4-ում ստուգվում է ցիկլի ավարտի պայմանը: Եթե x≤xk, ապա ցիկլը կրկնվում է, հակառակ դեպքում ցիկլն ավարտվում է: 5-ից 7-րդ բլոկները հանդիսանում են ցիկլի մարմինը: 5-րդ բլոկում x փոփոխականի ընթացիկ արժեքի համար 7 ֆունկցիայի արժեքի հաշվումից ն 6-րդ բլոկում x ն 7 փոփոխականների արժեքների արտածումից հետո բլոկ 7-ում x-ի ընթացիկ արժեքին վերագրվում է x+հ արժեքը, այսինքն՝ այն մեծացվում է հ քայլի արժեքով:
Սկիզբ
Մուտք
x0, xk, հ
x-x0 ոչ
,
x≤xայո
7-f(x)
Տպել
x,7
x-x+հ
Ավարտ Նկ. 1.5
Օրինակ 1.5: Կազմել զույգ երկնիշ թվերի գումարի հաշվման ալգորիթմի բլոկ-սխեման: Խնդրի լուծման երկու` հետպայմանով ն պարամետրով ցիկլային ալգորիթմների բլոկ-սխեմաները պատկերված են համապատասխանաբար նկ. 1.6-ում ն նկ.1.7-ում:
Տ-0
Տ-0
|-10 ,
,
|-|+2
ո-1,,5 )-10+2(|-1)
Տ-Տ+|
այո
Սկիզբ
Սկիզբ
|Հ98
Տ-Տ+)
ոչ
Տպել Տ
Տպել Տ Ավարտ
Ավարտ
Նկ. 1.6
Նկ. 1.7
Գումարը կազմակերպելու համար ալգորիթմում օգտագործվում է Տ փոփոխականը, որին 2-րդ բլոկում վերագրվել է 0 նախնական արժեքը: Ցիկլի պարամետրի ամեն մի արժեքի համար հերթական զույգ երկնիշ թիվը գումարվում է Տ փոփոխականին: Նկ. 7-ում պատկերված ալգորիթմը իրականացված է հետպայմանով ցիկլի միջոցով, իսկ նկ. 8-ում պատկերվածը՝ պարամետրով ցիկլի միջոցով: Քանի որ երկնիշ թվերի քանակը 90 է, իսկ զույգ երկնիշ թվերի քանակը` 45, ապա պարամետրով ցիկլի կրկնության թիվը վերցված է 45: Ցիկլի մարմնի 4-րդ բլոկում մտցված է նոր ) պարամետր, որը | պարամետրից կախված հաջորդաբար ընդունում է զույգ երկնիշ թվերին հավասար արժեքներ:
1.5. Ներդրված ցիկլերով ալգորիթմներ Ցանկացած ցիկլ իր մեջ կարող է ընդգրկել մեկ կամ մի քանի այլ ցիկլեր: Ցիկլերի այդպիսի կառուցվածքը կոչվում է ներդրված ցիկլերով կառուցվածք (նկ. 1.8):
Կրկնում Արտաքին ցիկլի տիրույթ
Գործողություն
Կրկնում Ներքին ցիկլի տիրույթ
, Գործողություն
Ելք ցիկլից Նկ. 1.8
Օրինակ 1.6: Կազմել 2-x+72 ֆունկցիայի արժեքների հաշվման ալգորիթմի բլոկ-սխեման, երբ x արգումենտը հx քայլով փոփոխվում է x0ից մինչն xk, իսկ 7 արգումենտը հ7 քայլով 70-ից մինչն 7k: Խնդրի լուծման ալգորիթմը կազմելու համար անհրաժեշտ է՝ արգումենտներից մեկի ֆիքսված արժեքի համար (օրինակ x) կազմակերպել մյուս (7) արգումենտի արժեքի փոփոխման ցիկլ ն հաշվել 2 ֆունկցիայի համապատասխան արժեքները: Այդ ցիկլի ավարտից հետո տրված քայլով պետք է փոփոխել ֆիքսված x արգումենտի արժեքը ն նորից անցնել մյուս 7 արգումենտի փոփոխման ցիկլին: Գործընթացը կրկնել այնքան, քանի դեռ x արգումենտը դուրս չի եկել տրված միջակայքից: Այստեղ 7 պարամետրով ցիկլը կլինի ներքին, իսկ x պարամետրով ցիկլի տիրույթը՝ արտաքին: Խնդրի լուծման ալգորիթմի բլոկ-սխեման բերված է նկ. 1.9-ում:
,
Սկիզբ Մուտք x0, 70, հx, xk, 7k, հ7,
x-x0,xk,հx
Տպել x
Սկիզբ
x-x0,xk,հx 2-x+7
Տպել x,2
Նկ. 1.9
1.6. Տիպային օրինակներ Օրինակ 1.7: Տրված են կետի x ն 7 կոորդինատները: D-ն նկարում ընդգծված տիրույթն է՝ եզրագծերով հանդերձ: Կազմել բլոկ-սխեմա, որը կհաշվի ն կտպի տրված ֆունկցիայի արժեքը ((x:7)∈D գրառումը նշանակում է, որ (x:7) կոորդինատներով կետը պատկանում է D տիրույթին): y 7--x+2
7-x+2
⎧⎪ x + 7 , ե թ ե ( x : 7 ) ∈ D 2 =⎨ ⎪⎩3 , հ ա կ ա ռ ա կ դե պքում
x x2+y2-1 Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.1.10-ում:
Սկիզբ Մուտք x2+72≥
ոչ
այո
7≤x+2
ոչ
այո
7≤-x+2
ոչ
այո
7≥0
ոչ
այո
2-x+7
2-3
Տպել 2 Ավարտ
Նկ. 1.10
Եթե տրված կոորդինատներով կետը ընկած է 7-kx+Ե ուղղից վերն, ապա տեղի կունենա 7» kx+Ե անհավասարությունը, հակառակ դեպքում՝ 7Հkx+Ե անհավասարությունը: Եթե տրված կոորդինատներով կետը ընկած է (x-8)2+(7-Ե)2 -r2 շրջանից դուրս, ապա տեղի կունենա (x-8)2+(7-Ե)2 »r2 անհավասարությունը, հակառակ դեպքում՝ (x-8)2+(7-Ե)2 Հr2 անհավասարությունը:
Քանի որ տրված օրինակում ընդգծված տիրույթը սահմանափակված է 4 գծերով, անհրաժեշտ է, որ կետը գտնվի ա) x2+72-1 շրջանից դուրս (x2+72≥1), բ) 7-x+2 ուղղից ներքն (7≤x+2), գ) 7--x+2 գծից ներքն (7≤-x+2), դ) 7-0 գծից վերն (7≥0): Նշված 4 պայմանների միաժամանակյա կատարման դեպքում 2 փոփոխականին վերագրվում է x+7 արժեքը, իսկ հակառակ դեպքում, այսինքն, երբ կետը չի պատկանում տրված միջակայքին, 2 փոփոխականին վերագրվում է 3 արժեքը:
Օրինակ 1.8: Տրված են եռանկյան կողմերի 8, Ե, Շ երկարությունները: Կազմել բլոկ-սխեմա, որը կտպի
⎧8 + Ե , եթե եռանկյունը սուրանկյուն է , 7 =⎨ ⎩Ե + Շ ,հակառակ դեպքում: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.11-ում: Եռանկյունը սուրանկյունի է, եթե 82ՀԵ2+Շ2 ն Ե2Հ82+Շ2 ն Շ2Հ82+Ե2: Եռանկյան կողմերի արժեքներ ներմուծումից հետո ստուգվում են նշված երեք պայմանները: Եթե ճշմարիտ են նշված երեք պայմանները, ապա եռանկյան երեք անկյուններն էլ սուր են, հետնաբար եռանկյունը սուրանկյուն է, այսինքն 7 փոփոխականին վերագրվում է 8+Ե արժեք: Եթե պայմաններից մեկը չի կատարվում, նշանակում է` եռանկյան մեջ կա սուր անկյունից տարբեր անկյուն, ն 7 փոփոխականին վերագրվում է Ե+Շ արժեք:
Սկիզբ Մուտք 8,Ե,Շ
ոչ
ոչ
Շ2Հ82+Ե2
ոչ
8 ՀԵ +Շ այո
Ե Հ8 +Շ այո
այո 7-8+Ե
7-Ե+Շ
Տպել 7
Ավարտ
Նկ. 1.11
Օրինակ 1.9: Տրված է եռանիշ թիվ: Կազմել բլոկ-սխեմա, որը t փոփոխականին կվերագրի 1 արժեք, եթե եռանիշ թվի հարյուրավորների թվանշանը հավասար է միավորների ն տասնավորների թվանշանների գումարին, հակառակ դեպքում՝ 2: Տպել t փոփոխականի արժեքը: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.1.12-ում: Տրված եռանիշ թիվը նշանակենք x- abc : թվանշանները կարելի է գտնել հետնյալ կերպ. 8 - [x/100], Ե - [(x-1008)/10], Շ - x-1008-10Ե,
Եռանիշ
թվի
որտեղ [ ] փակագծերը նշանակում են, որ վերցվում է նրանց մեջ առնված արտահայտության արժեքի ամբողջ մասը: Սկիզբ Մուտք x 8-[x/100] Ե-[(x-1008)/10] Շ-x-1008-10Ե
8-Ե+Շ
ոչ
այո
t-1
t-2
Տպել t Ավարտ Նկ.1.12
Օրինակ 1.10: Տրված է քառանիշ թիվ: Կազմել բլոկ-սխեմա, որը կհաշվի ն կտպի քառանիշ թվի միավորների ն տասնավորների թվանշանների գումարը, եթե թվի միավորների ն տասնավորների թվանշանների գումարը հավասար է հարյուրավորների ն հազավորների թվանշանների գումարին, հակառակ դեպքում՝ հարյուրավորների ն հազավորների թվանշանների գումարը:
Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.1.13-ում: Սկիզբ Մուտք x 8-[x/1000] Ե-[(x-10008)/100] Շ-[(x-10008-100Ե)/10] d-x-10008-100Ե-10Շ
Շ+d-8+Ե
ոչ
այո
7-Շ+d
7-8+Ե
Տպել 7 Ավարտ
Նկ.1.13
Տրված քառանիշ թիվը նշանակենք x- aԵcd : թվանշանները կարելի է գտնել հետնյալ կերպ. 8 - [x/1000], Ե - [(x-10008)/100], Շ - [(x-10008-100Ե)/10], d - x-10008-100Ե-10Շ,
Քառանիշ թվի
որտեղ [ ] փակագծերը նշանակում են, որ վերցվում է նրանց մեջ առնված արտահայտության արժեքի ամբողջ մասը:
Օրինակ 1.11: Կազմել բլոկ-սխեմա, որն օգտագործելով նախապայմանով ցիկլային կառուցվածք՝ x∈[0: 10] միջակայքում, ∆x-0,3 քայլով կհաշվի 7-Տ|ոx ֆունկցիայի արժեքները: Տպել x ն 7 փոփոխականների արժեքների աղյուսակը: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.1.14-ում: Սկիզբ x-0
ոչ
x≤10 այո
x-Տ|ոx
Ավարտ
Տպել x,7 7-x+0,5 Նկ. 1.14
x փոփոխականին վերագրված է միջակայքի սկզբնական 0 արժեքը, որը նախապայմանով ցիկլի մարմնի մեջ մեծացնում է իր արժեքը 0,5 քայլով: Ցիկլի մարմնում x-ի յուրաքանչյուր արժեքի համար հաշվվում է ֆունկցիայի արժեքը, արտածվում x-ի ն 7-ի արժեքները: Ցիկլի մարմինը կրկնվում է այնքան, քանի դեռ ճշմարիտ է x≤10 պայմանը:
Օրինակ
1.12:
Կազմել բլոկ-սխեմա, որը օգտագործելով հետպայմանով ցիկլային կառուցվածք՝ x∈[1: 16] միջակայքում, ∆x-0,4 քայլով կհաշվի 7-x2+4x ֆունկցիայի արժեքները: Տպել x ն 7 փոփոխականների արժեքների աղյուսակը:
Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.1.15-ում: Սկիզբ x-1
7-x2+4
Տպել x,7 x-x+0,4 ոչ
x»16 այո
Նկ. 1.15
Ավարտ x փոփոխականին վերագրված է միջակայքի սկզբնական 1 արժեքը, որը հետպայմանով ցիկլի մարմնի մեջ մեծացնում է իր արժեքը 0,4 քայլով: Ցիկլի մարմնում x-ի յուրաքանչյուր արժեքի համար հաշվվում է 7-ի արժեքը, արտածվում x-ի ն 7-ի արժեքները: Ցիկլը ավարտվում է x»16 պայմանի դեպքում:
Օրինակ 1.13: Կազմել բլոկ-սխեմա, որը տրված ո բնական թվի 2ո +1
համար կհաշվի ու կտպի
∑ xi արտահայտության արժեքը, որտեղ x -4: ո
i =ո
x|-x|-12 +1: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.1.16-ում:
Սկիզբ Մուտք ո
x-4
Տ-x
|-ո+1,2ո+1 x-x2+1
Տպել Տ
Տ-Տ+x
Ավարտ
Նկ.16 Առաջին xո գումարելիի արժեքը ցիկլից դուրս վերագրվում է գումարի համար նախատեսված Տ փոփոխականին: Մնացած գումարելիները հաշվվում ն նրանց քառակուսիների արժեքները ավելացվում են Տ փոփոխականին ցիկլի մարմնում: Այստեղ պետք է հիշել վերագրման օպերատորի կատարման կարգը, այն է՝ սկզբում հաշվվում է արտահայտության աջ մասի արժեքը ն այն վերագրվում ձախում գրված փոփոխականին: Խնդրի լուծման ժամանակ անհրաժեշտություն չկա x փոփոխականը պահելու որպես զանգված, քանի որ ցիկլում հաշվված x փոփոխականի ամեն մի արժեքի քառակուսին անմիջապես ավելացվում է գումարի համար նախատեսված Տ փոփոխականին:
Օրինակ 1.14: Կազմել բլոկ-սխեմա, որը տրված ո բնական թվի ո
համար կհաշվի ու կտպի
∑ ( xi − »i ) արտահայտության արժեքը, որտեղ i =1
7|-72|-1-4:
x1-1: x|-2x|-1-3: 71-2: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.1.17-ում:
Սկիզբ Մուտք ո
x-1
7-2
Տ-x-7
|-2,ո x-2x-3
Տպել Տ
7-72-4
Ավարտ
Տ-Տ+x-7
Նկ. 1.17 Առաջին x1 ն 71 գումարելիների գումարի քառակուսու արժեքը ցիկլից դուրս վերագրվում է գումարի համար նախատեսված Տ փոփոխականին: Մնացած գումարելիները հաշվվում ն նրանց գումարի քառակուսիների արժեքները ավելացվում են Տ փոփոխականին ցիկլի մարմնում: Այստեղ պետք է հիշել վերագրման օպերատորի կատարման կարգը, այն է՝ սկզբից հաշվվում է արտահայտության աջ մասի արժեքը ն այն վերագրվում ձախում գրված փոփոխականին: Խնդրի լուծման ժամանակ անհրաժեշտություն չկա x ն 7 փոփոխականները պահելու որպես զանգված, քանի որ ցիկլում հաշվված x ն 7 փոփոխականների ամեն մի արժեքների գումարի քառակուսին անմիջապես ավելացվում է գումարի համար նախատեսված Տ փոփոխականին:
Օրինակ 1.15: Կազմել բլոկ-սխեմա, որը կամայական x իրական ն ո բնական թվերի համար կհաշվի ն կտպի Տոn x +
Տոn 2 x Տոn ո x +L+ ո
արտահայտության արժեքը: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.1.18-ում: Սկիզբ Մուտք ո,x Տ-0 |-1,ո Տ-Տ+Տոnոx/ո
Տպել Տ Ավարտ Դժվար չէ նկատել, որ
Տոn i x ∑ i i =1
Նկ. 1.18
Տոn x +
Տոn 2 x Տոn ո x գումարը կարելի է +L+ ո
ո
ներկայացնել
տեսքով՝ ն այդպիսով՝ խնդիրը հանգեցնել
պարզագույն գումարի հաշվման:
Օրինակ 1.16: Կազմել բլոկ-սխեմա, որը կհաշվի ու կտպի տրված արտահայտության արժեքը.
∑ ( xi + »i ) , որտեղ
⎧i + 1 xi = ⎨ ⎩i + 2
,
⎧i + 3 »i = ⎨ ⎩i + ,
i =1
հակառակ
, եթե |-ն կենտ է, , հակառակ դեպքում: , եթե |-ն կենտ է, դեպքում:
Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.1.19-ում: Սկիզբ Տ-0
Տպել Տ
ո-1,n
| ոօd 2 -1
Ավարտ
ոչ
այ x-|+1
x-|+2
7-|+3
7-|+4
Տ-Տ+x+7
Նկ. 19 Կազմակերպվել է ցիկլ, որի մեջ հաշվվում են x ն 7 փոփոխականների արժեքները, որոնց գումարն անմիջապես ավելացվում է գումարի համար նախատեսված Տ փոփոխականին:
Օրինակ 1.17: Կամայական x իրական ն k պարամետրերի տրված արժեքների համար կազմել տրված ֆունկցիայի արժեքների հաշվման ն արտածման բլոկ-սխեման.
⎧x − k Y =⎨ ⎩x + k
, եթե x»0, , հակառակ դեպքում, որտեղ k∈[7:18], ∆k-1:
Խնդրի լուծման բլոկ-սխեման պատկերված է նկ. 1.20-ում: Սկիզբ Մուտք x k-7,18
x»0
ոչ
Սկիզբ
այո
7-x-k
7-x+k
Տպել k,7 Նկ. 1.20 Քանի որ ֆունկցիայի արժեքները պետք է հաշվել k-ի տարբեր արժեքների համար, ապա կազմակերպվել է k աճող պարամետրով ցիկլ, որի մեջ հաշվվում ն արտածվում են տրված ֆունկցիայի արժեքները:
Օրինակ 1.18: Կազմել բլոկ-սխեմա, որը տառային պարամետրերի կամայական թվային արժեքների համար կհաշվի ն կտպի տրված արտահայտության արժեքը. ո
ո
p = ∏∑ a i + ) : i =1 ) =1
Խնդրի լուծման բլոկ-սխեման պատկերված է նկ. 1.21-ում:
Սկիզբ Մուտք 8,ո ք-1 |-1,ո Տպել Ք
Տ-0
Ավարտ
)-1,ո Տ-Տ+8|+)
ք-ք Տ
Նկ. 1.21
Կազմակերպված են ներդրված երկու ցիկլեր, որոնցից ներքինում հաշվվում է հերթական գումարը (Տ), այնուհետն ստացված արժեքը արտաքին ցիկլի մեջ բազմապատկում է արտադրյալի կազմակերպման համար նախատեսված փոփոխականին (ք):
1.7. Տնային առաջադրանքներ Տնային առաջադրանքում ուսանողը պետք է կատարի աղյուսակ 2ի դասամատյանի` իր համարին համապատասխան տողում նշված խնդիրները` [2] խնդիրների ժողովածուից (Աղգաշյան Ռ., Առաքելյան Ա., Ավետիսյան Ս., Դանիելյան Ս. Քոմփյութերների կիրառում ն ծրագրավորում / խնդիրների ժողովածու / : ՀՊՕՀ, 1998թ.): Աղյուսակ 2. Մատյանի համարը
Առաջադրվող խնդիրների համարները 11, 22, 41, 70, 71, 89, 99, 103, 114, 122, 134 12, 21, 42, 61, 72, 88, 98, 107, 117, 123, 135 13, 25, 43, 62, 73, 90, 97, 105, 116, 124, 136 14, 26, 44, 63, 74, 84, 96, 106, 115, 125, 137 15, 27, 45, 64, 75, 85, 35, 108, 120, 126, 133 16, 28, 46, 65, 76, 83, 94, 109, 119, 121, 131 17, 29, 47, 66, 77, 82, 93, 101, 111, 127, 132 18, 30, 48, 67, 78, 81, 91, 104, 112, 128, 138 19, 31, 51, 68, 79, 86, 92, 110, 118, 129, 139 20, 32, 52, 69, 80, 87,100, 102, 113, 130, 114 11, 33, 53, 69, 73, 83, 95, 104, 113, 130, 140 12, 34, 54, 70, 72, 81, 94, 105, 112, 121, 131 13, 35, 55, 61, 71, 82, 96, 107, 116, 123, 131 14, 36, 56, 62, 74, 85, 93, 106, 111, 124, 134 15, 37, 57, 63, 75, 90, 97, 109, 115, 125, 133 16, 38, 58, 64, 76, 84, 92, 108, 114, 128, 135 17, 39, 59, 65, 77, 87, 98, 101, 120, 127, 136 18, 40, 60, 66, 78, 86, 100, 102, 119, 128, 138 19, 39, 41, 67, 79, 88, 99, 110, 118, 129, 140 20, 38, 42, 68, 80, 89, 91, 103, 117, 130, 139 11, 21, 43, 61, 80, 88, 96, 110, 120, 121, 132 12, 22, 44, 62, 79, 89, 97, 101, 111, 123, 133 13, 25, 45, 63, 78, 81, 98, 106, 119, 124, 140 14, 26, 46, 64, 77, 90, 91, 108, 118, 122, 131 15, 27, 47, 65, 76, 87, 99, 102, 117, 126, 139 16, 29, 48, 66, 75, 82, 100, 109, 112, 125, 138 17, 30, 51, 67, 74, 86, 92, 103, 116, 127, 134 18, 31, 52, 68, 73, 83, 94, 105, 115, 128, 137 19, 32, 53, 69, 72, 85, 93, 104, 114, 129, 135 20, 33, 54, 70, 71, 84, 95, 107, 113, 130, 136
2. ՕՅՈՒՂԱՎՈՐՎԱԾ ԾՐԱԳՐԵՐԻ ԿԱԶՄԱԿԵՐՊՈՒՄ
2.1. Հիմնական հասկացությունները ն օպերատորները Պարզ ծրագրի կառուցվածքը Պարզ ծրագրի կառուցվածքն ունի հետնյալ տեսքը՝ ՔԲՕՇԲՃM Հանուն»: Հնկարագրությունների բաժին»: 8ԷՇIN Հօպերատորների հաջորդականություն» ԷND. Առանձին օպերատորներն իրարից անջատվում են կետ-ստորակետ ( : ) նշանով: 8ԷՇIN ն ԷND բանալի բառերը օգտագործվում են ծրագրային միավորի ձնավորման համար: Յուրաքանչյուր ծրագրում բանալի բառերի այդ զույգը գոնե մեկ անգամ պետք է հանդիպի: Ամենավերջին ԷND-ից հետո դրվում է կետ: Նկարագրությունների բաժնում պետք է նկարագրել ծրագրում օգտագործված բոլոր հաստատունները ն փոփոխականները: Հաստատունները ծրագրի այնպիսի օբյեկտներ են, որոնք չեն կարող փոփոխել իրենց արժեքները ծրագրի կատարման ողջ ընթացքում: Հաստատունների հայտարարումը սկսվում է ՇՕNՏT հատուկ բառով: Հետո հաջորդում է հավասարության նշանը (-) ն այդ հաստատունի արժեքը: Օրինակ. ՇՕNՏT N-10: X-5.36: Փոփոխականները ծրագրում հայտարարվում են հաստատուններից առաջ: Փոփոխականների նկարագրման համար պետք է գրել ՄՃԲ հատուկ բառը, որից հետո, իրարից ստորակետով անջատելով ծրագրում
օգտագործված նույնատիպ փոփոխականները, վերջում երկու կետ (:) ն նշել այդ փոփոխականների տիպը: Օրինակ. ՄՃԲ Մ1, Մ2, ..., Մո : t: որտեղ Մ1, Մ2, ..., Մո-ը փոփոխականների անուներն են, իսկ t-ն նրանց տիպը: Իդենտիֆիկատոր Իդենտիֆիկատորները կիրառվում են փոփոխականների անվանման համար: Իդենտիֆիկատորները սկսվում են լատինական այբուբենի տառով, որին կարող են հաջորդել նույն այբուբենի այլ տառեր ն (կամ) թվանշաններ, ինչպես նան ընդգծման նշանը: Որնէ այլ սիմվոլի կամ նշանի առկայությունը իդենտիֆիկատորում արգելված է: ՊԱՍԿԱԼ լեզվում կան հատուկ բառեր, որոնք որպես իդենտիֆիկատոր չեն կարող գործածվել: Մուտքի ն ելքի օպերատորներ Տվյալների ներմուծման ն արտածման համար ծրագրավորման ՊԱՍԿԱԼ լեզվում նախատեսված են ԲԷՃD, ԲԷՃDԼN, ՄԲITԷ ն ՄԲITԷԼN մուտքի-ելքի պրոցեդուրաները: Հաճախ պարզության համար այդ պրոցեդուրաներն անվանում են օպերատորներ: Ներմուծման համար առայժմ կօգտագործենք ԲԷՃD պրոցեդուրան, որն ունի հետնյալ տեսքը. ԲԷՃD(Հմուտքի ցուցակ»): Մուտքի ցուցակում նշվում են այն իդենտիֆիկատորները, որոնց արժեքներն անհրաժեշտ է ներմուծել: Մուտքի օպերատորն իրականացնելիս քոմփյութերն անցնում է սպասողական վիճակի` պահանջելով, որ ներմուծվեն մուտքի ցուցակում նշված բոլոր փոփոխականների արժեքները: Տվյալների արտածման համար օգտագործում են ՄԲITԷ ն ՄԲITԷԼN պրոցեդուրաները, որոնք ունեն հետնյալ տեսքերը.
ՄԲITԷ(Հելքի ցուցակ»): ՄԲITԷԼN(Հելքի ցուցակ»):
ՄԲITԷԼN:
Սրանց տարբերությունն այն է, որ ելքի ցուցակում նշված տվյալներն արտածելուց հետո ՄԲITԷԼN-ը անցում է կատարում հաջորդ տողին, մինչդեռ ՄԲITԷ-ի դեպքում նշիչը մնում է ընթացիկ տողի վրա: Եթե ՄԲITԷԼN պրոցեդուրայում նշված չէ ելքի ցուցակ, ապա պրոցեդուրան բաց է թողնում մեկ տող: Վերագրման օպերատոր Վերագրման օպերատորները նախատեսված են փոփոխականներին արժեքներ տալու համար: Վերագրման օպերատորը կարելի է ներկայացնել հետնյալ ընդհանուր տեսքով. Մ:-Ճ, որտեղ Մ-ն փոփոխական է, Ճ-ն ՊԱՍԿԱԼ-ի կանոններով գրված ցանկացած արտահայտություն: Ճ արտահայտությունը կարող է պարունակել հաստատուն, փոփոխական, ֆունկցիայի անվանում, գործողությունների նշաններ ն փակագծեր: Գործողություններ ամբողջ թվերով Ամբողջ թվերով կարելի է կատարել գումարման (+), հանման (-), բազմապատկման (") ն բաժանման (/) գործողություններ: Առաջին երեք դեպքերում արդյունքը միշտ ստացվում է որպես ամբողջ թիվ, իսկ բաժանման դեպքում արդյունքը ստացվում է որպես իրական թիվ: 8 ն Ե ամբողջ թվերի բաժանումից ստացվող ամբողջ քանորդը ն ամբողջ մնացորդը կարելի է որոշել` օգտվելով DIՄ ն MՕD գործողություններից. 8 DIՄ Ե - 8 ամբողջ թիվը Ե ամբողջ թվին բաժանելիս ստացված ամբողջ քանորդն է: 8 MՕD Ե – 8 ամբողջ թիվը Ե ամբողջ թվին բաժանելիս ստացված ամբողջ մնացորդն է:
Իրական թվեր Գործնական խնդիրներում հաճախ կիրառվում են իրական թվեր: ՊԱՍԿԱԼ-ում իրական թվի ամբողջ մասը կոտորակայինից անջատվում է կետով: Իրական տիպի փոփոխականի նկարագրման համար օգտագործվում է ԲԷՃԼ (իրական) նկարագրիչը: Օրինակ՝ Մ8r 8,Ե:ԲԷՃԼ: Իրական թվերի ներկայացումը Իրական թվերի ներկայացման (գրառման) համար ՊԱՍԿԱԼ-ում կիրառվում են երկու ձներ: Առաջին դեպքում թվերը ներկայացվում են ինչպես մաթեմատիկայում՝ տասնորդական կոտորակի տեսքով` ստորակետը փոխարինելով տասնորդական կետով: Օրինակ՝
2. 36
+ 13. 1
0. 19
- 1. 234
56. 0
Դրական թվի ներկայացման համար + նշանի կիրառումը պարտադիր չէ, իսկ բացասական թվից առաջ - նշան է դրվում: Իրական թվի ներկայացման երկրորդ հնարավոր եղանակը, այսպես կոչված, էքսպոնենտային ձնն է: Այս դեպքում թիվը ներկայացվում է 10-ից փոքր արժեք ունեցող արտադրիչի տեսքով, որը կոչվում է մանտիս, բազմապատկած 10-ի անհրաժեշտ աստիճանով: Թվի ներկայացման էքսպոնենտային ձնում մանտիսը գրվում է սովորական տեսքով, իսկ 10-ի աստիճանի փոխարեն գրվում է Է տառը, որին հաջորդում է աստիճանացույցին հավասար թիվը` իր նշանով: Օրինակ՝ 365.42 թիվը կարելի է ներկայացնել 3.6542×102 տեսքով: Պարզ է, որ մանտիս է հանդիսանում 3.6542 թիվը, որը բազմապատկած է 10-ի քառակուսով, հետնաբար կարելի է գրել 365.42-3.6542Է2:
Ստանդարտ ֆունկցիաներ Հաշվարկային խնդիրներ լուծելիս որոշ մաթեմատիկական ֆունկցիաներ օգտագործվում են առավել հաճախ: Որպեսզի ծրագրավորողը դրանց հաշվարկման համար անհատական ծրագիր
չկազմի, ՊԱՍԿԱԼ լեզվում նախատեսված է, այսպես կոչված, ստանդարտ ֆունկցիաների հավաքածու: Աղյուսակ 2.1-ում բերված են որոշ ստանդարտ ֆունկցիաներ. Ֆունկցիայի անվանումը Սինուս
Մաթեմա- Ներկայատիկական ցումը գրառումը ՊԱՍԿԱԼ-ում Տ|ո x Տ|ո(x)
Կոսինուս
ՇօՏ x
ՇօՏ(x)
Արկտանգես
8rՇt» x
8rՇt8ո(x)
Բնական լոգարիթմ 6 հիմքով ցուցչային ֆունկցիա Քառակուսի արմատ X քառակուսի
lո x
lո(x)
6x
6xք(x)
մ
Տզrt(x)
x2
Տզr(x)
Բացարձակ արժեք
|x|
8ԵՏ(x)
Արգումենտի տիպը ամբողջ, իրական ամբողջ, իրական ամբողջ, իրական ամբողջ, իրական ամբողջ, իրական ամբողջ, իրական ամբողջ, իրական ամբողջ, իրական
Աղյուսակ 2.1 Ֆունկցիայի տիպը իրական իրական իրական իրական իրական
իրական ամբողջ իրական ամբողջ իրական
Ստանդարտ ֆունկցիաների գրության ժամանակ արգումենտը անպայման պետք է վերցնել փակագծերի մեջ: Որպես ՏIN ն ՇՕՏ ֆունկցիաների արգումենտ ընդունվում է ռադիաններով արտահայտված անկյան մեծությունը: Եթե անկյունը տրված է աստիճաններով, ապա անհրաժեշտ է այն վերածել ռադիանների՝ Xռադ.- Xաստ.• π/180 , որտեղ π թվին թվին համապատասխանում է Ք| ստանդարտ հաստատունը: Ստանդարտ ֆունկցիայի կիրառման համար բավական է արտահայտության մեջ նշել ֆունկցիայի անունը՝ փակագծերում գրելով արգումենտը:
Իրական թվերով աշխատելիս կիրառելի են TԲՍNՇ, ԲԲՃՇ ն ԲՕՍND ստանդարտ ֆունկցիաները: trսոՇ(x) - անտեսում է x իրական արգումենտի կոտորակային մասը` արդյունքում ստանալով ամբողջ թիվ, fr8Շ(x) - ամբողջ մասը փոխարինում է զրոյով անփոփոխ թողնելով կոտորակային մասը: Արդյունքը կոտորակային թիվ է: rօսոd(x) – կլորացնում է x արգումենտը մինչն մոտակա ամբողջը: Արդյունքը ամբողջ թիվ է: Թվաբանական արտահայտություն Թվաբանական արտահայտության արժեքը թիվ է: Թվաբանական արտահայտությունը կարող է ներառել հաստատուններ, փոփոխականներ ն ֆունկցիաներ, որոնք միմյանց հետ միացված են թվաբանական գործողությունների նշաններով: Մասնավոր դեպքում առանձին թիվը, փոփոխականը, հաստատունը, ֆունկցիան նույնպես թվաբանական արտահայտություններ են: Հաճախ դրանք կոչվում են պարզ թվաբանական արտահայտություններ: Արտահայտությունը պետք է միարժեքորեն որոշի հաշվման արդյունքը: Դրա համար սահմանված է գործողությունների կատարման հստակ առաջնահերթություն. 1). Բազմապատկում, բաժանում: 2). Գումարում, հանում: Հավասարազոր գործողությունները կատարվում են ձախից աջ: Փակագծերի կիրառումը ապահովում է գործողության առաջնայնություն: Թվաբանական արտահայտություններում չի թույլատրվում՝ 1). գրել 2 գործողության նշան իրար կողքի. Ճ/-8 կամ Ճ+-8: Նման դեպքերում անհրաժեշտ է կիրառել փակագծեր` Ճ/(-8) կամ Ճ+(-8): 2). Բաց թողնել բազմապատկման նշանը, օրինակ 3"Ճ – ի փոխարեն գրել 3Ճ: Տրամաբանական փոփոխականներ Գործնականում կարող են հանդիպել այնպիսի իրավիճակներ, երբ, կախված որոշակի պայմանից, օպերատորների որնէ խումբ կատարվում է,
կամ չի կատարվում: Որպես պայման կարող է լինել որոշակի պնդման (ասույթի) ճշմարիտ կամ կեղծ լինելը: Եթե պնդումը ճշմարիտ է (TԲՍԷ), ապա ասում են, որ պայմանը կատարվում է, հակառակ դեպքում՝ պայմանը չի կատարվում (ԲՃԼՏԷ): ՊԱՍԿԱԼ-ում տրամաբանական փոփոխականների հայտարարման համար օգտագործվում է 8ՕՕԼԷՃN հատուկ բառը (անգլիացի մաթեմատիկոս Ջորջ Բուլի անունով): Օրինակ.
ՄՃԲ 8,Ե:8ՕՕԼԷՃN:
Տրամաբանական արտահայտություն Տրամաբանական արտահայտության պարզագույն ձնը վերը դիտարկված համեմատման գործողությունն է: Այդպիսի տրամաբանական արտահայտության ընդհանուր տեսքը հետնյալն է. 61 Հառնչության նշան» 62 որտեղ, 61 ն 62 –թվաբանական արտահայտություններ են: ՊԱՍԿԱԼ-ում կիրառվում են առնչության հետնյալ նշանները՝ <(փոքր), Հ-(փոքր կամ հավասար), »(մեծ), »-(մեծ կամ հավասար), -(հավասար), Հ »(ոչ հավասար): Բերված տեսքի պարզ տրամաբանական արտահայտությունում հաշվվում են 61 ն 62 թվաբանական արտահայտությունների արժեքները ն համեմատվում միմյանց հետ: Կախված այդ արժեքներից ն առնչության կիրառված նշանից` տրամաբանական արտահայտությունը ստանում է TԲՍԷ կամ ԲՃԼՏԷ արժեքը: Պարզ տրամաբանական արտահայտությունները, իրենց հերթին, այլ տրամաբանական արտահայտության մեջ կարող են հանդես գալ որպես օպերանդներ, որոնք կարող են միավորվել ՕԲ (կամ), ՃND (ն), NՕT (ոչ) տրամաբանական գործողություններով: Օրինակ. (X »- Ճ) ՃND ( X Հ- 8) (X Հ Ճ) ՕԲ (X » 8):
Բացասման (ժխտման) NՕT («ոչ») գործողությունը իրական տրամաբանական արտահայտության ճշմարիտ արժեքը դարձնում է կեղծ կամ հակառակը: Ինչպես թվաբանական արտահայտություններում, այստեղ նս սահմանված է գործողությունների կատարման որոշակի առաջնահերթություն՝ • • • •
առնչության (համեմատման) գործողություն, բացասման NՕT գործողություն, տրամաբանական բազմապատկման ՃND գործողություն, տրամաբանական գումարման ՕԲ գործողություն:
Պայմանական օպերատոր Գործնական խնդիրներում հաճախ առաջանում է այնպիսի իրավիճակ, երբ կախված որոշակի պայմանի ճշմարիտ կամ կեղծ լինելուց, անհրաժեշտ է լինում իրականացնել այս կամ այն գործողությունը կամ գործողությունների շարքը: Պայմանական օպերատորի ընդհանուր տեսքը հետնյալն է.
IԲ Ե TԻԷN Տ1 ԷԼՏԷ Տ2 ,
որտեղ՝ Ե – ն տրամաբանական փոփոխական է կամ տրամաբանական արտահայտություն, Տ1, Տ2 – ը` ցանկացած օպերատորներ են (այդ թվում ն պայմանական օպերատոր): Պայմանական օպերատորն աշխատում է հետնյալ սկզբունքով. նախ հաշվվում է տրամաբանական արտահայտության արժեքը: Եթե այն ստանում է TԲՍԷ արժեք, ապա կատարվում է Տ1 օպերատորը, իսկ Տ2 օպերատորը բաց է թողնվում, իսկ եթե արդյունքը ստանում է ԲՃԼՏԷ արժեք, ապա ընդհակառակը՝ բաց է թողնվում Տ1 օպերատորը, կատարվում Տ2 օպերատորը: Ներկայացված ընդհանուր տեսքը հանդիսանում է պայմանական օպերատորի, այսպես կոչված, լրիվ ձնն է: Թույլատրվում է նան պայմանական օպերատորի կրճատ ձնը՝
IԲ Ե TԻԷN Տ :
Այս օպերատորն աշխատում է հետնյալ սկզբունքով: Սկզբում հաշվվում է Ե տրամաբանական արտահայտության արժեքը: Եթե այն
ստանում է TԲՍԷ արժեքը, ապա կատարվում է Տ օպերատորը, հակառակ դեպքում Տ օպերատորը չի կատարվում: Պայմանական օպերատորի` վերը բերված ընդհանուր տեսքերում Տ, Տ1 ն Տ2 նշանակումների տակ մինչ այժմ հասկացվում էին մեկական օպերատորներ: Հաճախ որոշակի պայմանի դեպքում կատարման ենթակա գործողությունը չի կարող ներկայացվել մեկ օպերատորով: Այդ դեպքում կիրառվում է ՊԱՍԿԱԼ-ում թույլատրված բաղադրյալ օպերատորը: Այն օպերատորների հաջորդականություն է, որոնք պարփակվում են 8ԷՇIN ն ԷND ծառայողական բառերի մեջ: Բաղադրյալ օպերատորի ընդհանուր տեսքը հետնյալն է՝ 8ԷՇIN Տ1, Տ2, ... , Տո ԷND որտեղ Տ1, Տ2, ... , Տո իրարից «:»-ով բաժանված օպերատորներ են: Այսպիսով, պայմանական օպերատորում կարող են կիրառվել ինչպես պարզ, այնպես էլ բաղադրյալ օպերատորներ: 8ԷՇIN ն ԷND ծառայողական բառերը ինչպես այստեղ, այնպես էլ ցանկացած ՊԱՍԿԱԼ-ծրագրում, փաստորեն օպերատորային փակագծերի դեր են խաղում (8ԷՇIN-ը բացող, իսկ ԷND-ը` փակող փակագծի):
2.2. Պարզ ծրագրերի տիպային օրինակներ Օրինակ 2.1. Տառային պարամետրերի կամայական թվային արժեքների համար կազմել տրված Y ֆունկցիայի արժեքի հաշվման ն տպման բլոկսխեման ու ծրագիրը
⎧eԵ + lշg 2 (a 2 + 3) ⎪⎪ Y = ⎨tg 6 ( a + Ե) ⎪ −7 ⎪⎩10
եթե 8+Ե»7 եթե 8+ԵՀ0 մնացած դեպքերում
Խնդրի լուծման բլոկսխեման պատկերված է նկ.2.1-ում, իսկ ծրագիրն ունի ԷXՃM2/1 անունը:
Սկիզբ Մուտք 8,Ե
8+Ե»7 ոչ
այ
7-6Ե+lօ»2(82+3)
այ
7-t»6(8+Ե)
8+ԵՀ0 ոչ 7-10-7
Տպել 7
Նկ.2.1
Ավարտ
ՔԲՕՇԲՃM ԷXՃM2/1:
ՄՃԲ Ճ,8,Y:ԲԷՃԼ:
8ԷՇIN ԲԷՃD(Ճ,8): IԲ Ճ+8»7 TԻԷN Y:-ԷXՔ(Ե)+ԼN(ՏՕԲ(Ճ)+3)/ԼN(2) ԷԼՏԷ IԲ Ճ+8Հ0 TԻԷN Y:-ԷXՔ(6"ԼN(ՏIN(Ճ+Ե)/ՇՕՏ(Ճ+8))) ԷԼՏԷ Y:-ԷXՔ(-7"ԼN(10)):
ՄԲITԷ(Y)
ԷND. Պասկալ լեզվի մեջ ստանդարտ ֆունկցիա կա միայն բնական հիմքով լոգարիթմի հաշվման համար, այդ պատճառով այլ հիմքով լոգարիթմական ֆունկցիայի հաշվման համար անհրաժեշտ է անցնել տրվածին համարժեք բնական հիմքով լոգարիթմի, կիրառելով ձնափոխման հետնյալ բանաձնը՝
lշg a Ե =
ln Ե : ln a
Տվյալ խնդրում`
(
)
lշg2 a 2 + 3 =
(
)
ln a 2 + 3 : ln 2
Քանի որ պասկալ լեզվում քառակուսուց բարձր աստիճանի հաշվման համար ստանդարտ ֆունկցիա չկա, ապա նպատակահարմար է օգտագործել
a ո = e ո ln(a ) ձնափոխությունը: Տվյալ խնդրում՝
tg (a + Ե) = e
6 ln
Տոn( a + Ե ) cշՏ( a + Ե )
:
Օրինակ 2.2.
Տրված են կետի x ն 7 կոորդինատները: D-ն նկարում ընդգծված տիրույթն է՝ եզրագծերով հանդերձ: Կազմել բլոկ-սխեմա ու ծրագիր, որոնք կհաշվեն ն կտպեն տրված ֆունկցիայի արժեքը ((x:7)∈D գրառումը նշանակում է, որ (x:7) կոորդինատներով կետը պատկանում է D տիրույթին): y
⎧⎪ x − 7 , ե թ ե ( x : 7 ) ∈ D ⎪⎩ x + 7 , հ ա կ ա ռ ա կ դե պքում
2 =⎨
7--x+2
7-x+2
x x2+y2-1 Խնդրի լուծման բլոկ-սխեման պատկերված է նկ. 2.2-ում, իսկ ծրագիրն ունի ԷXՃM2/2 անունը:
ՔԲՕՇԲՃM ԷXՃM2/2:
ՄՃԲ X,Y,2:ԲԷՃԼ:
8ԷՇIN
ԲԷՃD(X,Y):
IԲ (YՀ-X+2) ՃND (YՀ--X+2) ՃND (ՏՕԲ(X)+ՏՕԲ(Y)»-1) ՃND (Y»-0) TԻԷN 2:-X-Y ԷԼՏԷ 2:-X+Y:
ՄԲITԷ(2)
ԷND.
Սկիզբ Մուտք x,7
7≤x+2
ոչ
այո
7≤-x+2
ոչ
այո
x2+72≥1
ոչ
այո
7≥0
ոչ
այո
2-x-7
2-x+7
Ելք 2
Ավարտ Նկ. 2.2 Որպեսզի տրված կոորդինատներով կետը ընկած լինի շտրիխված միջակայքում, անհրաժեշտ է, որ այն գտնվի ա) 7-0 գծից վերն 7≥0, բ)x2+72-1 շրջանից դուրս (x2+72≥1) , գ) 7-x+2 ուղղից ներքն (7≤x+2), դ) 7--x+2 ուղղից ներքն (7≤-x+2): Նշված 4 պայմանների միաժամանակյա կատարման դեպքում 2 փոփոխականին վերագրվում է x-7 արժեքը, իսկ հակառակ դեպքում, այսինքն, երբ կետը չի պատկանում տրված միջակայքին, 2 փոփոխականին վերագրվում է x+7 արժեքը:
Օրինակ 2.3. Տրված են իրարից տարբեր 8, Ե, Շ թվերը: Կազմել բլոկսխեմա ն ծրագիր, որոնք կտպեն 7-1, եթե այդպիսի երկարություն ունեցող հատվածներով հնարավոր է կառուցել եռանկյունի, հակառակ դեպքում՝ 7-2: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ. 2.3-ում, իսկ ծրագիրն ունի ԷXՃM2/3 անունը: Սկիզբ Մուտք 8,Ե,Շ
8ՀԵ+Շ
ոչ
այո
ԵՀ8+Շ
ոչ
այո
ՇՀ8+Ե
ոչ
այո
y-1
y-2
Տպել 7
Ավարտ
Նկ.2.3
Տրված երեք հատվածներով (8,Ե,Շ) հնարավոր է կառուցել եռանկյունի, եթե 8ՀԵ+Շ ն ՇՀ8+Ե ն ԵՀ8+Շ:
ՔԲՕՇԲՃM ԷXՃM2/3:
ՄՃԲ Ճ,8,Շ:ԲԷՃԼ: Y:INTԷՇԷԲ:
8ԷՇIN ԲԷՃD(Ճ,8,Շ): IԲ(ՃՀ8+Շ) ՃND (8ՀՃ+Շ) ՃND (ՇՀՃ+8) TԻԷN Y:-1 ԷԼՏԷ Y:-2:
ՄԲITԷ(Y)
ԷND.
Օրինակ 2.4. Տրված են եռանկյան կողմերի x, 7, 2 երկարությունները: Կազմել բլոկ-սխեմա ն ծրագիր, որոնք կտպեն , եթե եռանկյունը սուրանկյուն է ,
⎧0 k =⎨ ⎩1
,հակառակ դեպքում:
Խնդրի լուծման բլոկ-սխեման պատկերված է նկ. 2.4-ում, իսկ ծրագիրն ունի ԷXՃM2/4 անունը:
ՔԲՕՇԲՃM ԷXՃM2/4:
ՄՃԲ X,Y,2:ԲԷՃԼ: K:INTԷՇԷԲ:
8ԷՇIN ԲԷՃD(X,Y,2): IԲ (ՏՕԲ(X)ՀՏՕԲ(Y)+ՏՕԲ(2)) ՃND (ՏՕԲ(8)ՀՏՕԲ(Ճ)+ՏՕԲ(Շ)) ՃND (ՏՕԲ(Շ)ՀՏՕԲ(Ճ)+ՏՕԲ(8)) TԻԷN K:-0 ԷԼՏԷ K:-1:
ՄԲITԷ(k)
ԷND. Եռանկյունը սուրանկյուն է, եթե 22Հx2+72 ն 72Հx2+22 ն x2Հ72+22: Սկիզբ Մուտք
x2Հ72
ո
ա
72Հx2
ո
ա
22Հx2
ո
ա
--0
--1
Տպել
Նկ. 2.4
Ավարտ
Օրինակ 2.5. Տրված է քառանիշ թիվ: Կազմել բլոկ-սխեմա ն ծրագիր, որոնք կհաշվեն ն կտպեն քառանիշ թվի միավորների ու տասնավորների թվանշանների գումարի ն քառանիշ թվի հարաբերությունը, եթե քառանիշ թիվը մեծ է 5000-ից, հակառակ դեպքում՝ հարյուրավորների ն հազավորների թվանշանների գումարի ն քառանիշ թվի հարաբերությունը: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ. 2.5-ում, իսկ ծրագիրն ունի ԷXՃM2/5 անունը:
ՔԲՕՇԲՃM ԷXՃM2/5:
ՄՃԲ X,Ճ,8,Շ,D:INTԷՇԷԲ:Y:ԲԷՃԼ:
8ԷՇIN
ԲԷՃD(X):
Ճ:-TԲՍNՇ(X/1000): 8:-TԲՍNՇ((X-1000"Ճ)/100): Շ:-TԲՍNՇ((X-1000"Ճ-100"8)/10): D-X-1000"Ճ-100"8-10"Շ: IԲ X»5000 TԻԷN Y:-(8+D)/X ԷԼՏԷ Y:-(Ճ+Շ)/X:
ՄԲITԷ(Y)
ԷND.
Սկիզբ Մուտք x 8-[x/1000] Ե-[(x-10008)/100] Շ-[(x-10008-100Ե)/10] d-x-10008-100Ե-10Շ ոչ
x»5000 այո
7-(Ե+d)/x
7-(8+Շ)/x
Տպել 7
Ավարտ
Նկ. 2.5
Տրված քառանիշ թիվը նշանակենք x- aԵcd : թվանշանները կարելի է գտնել հետնյալ կերպ.
Քառանիշ թվի
8 - [x/1000], Ե - [(x-10008)/100], Շ - [(x-10008-100Ե)/10], d - x-10008-100Ե-10Շ, որտեղ [ ] փակագծերը նշանակում են, որ վերցվում է նրանց մեջ առնված արտահայտության արժեքի ամբողջ մասը:
Ծրագրում քառանիշ թվի թվանշանները կարելի է գտնել նան d|Խ ն ոօd գործողությունների օգնությամբ. 8:-x d|Խ 1000: Ե:-(x ոօd 1000) d|Խ 100: Շ:-((x ոօd 1000) ոօd 100) d|Խ 10: d:-((x ոօd 1000) ոօd 100) ոօd 10:
2.3. Տնային առաջադրանքներ Տնային առաջադրանքում ուսանողը պետք է կատարի աղյուսակ 2ի դասամատյանի` իր համարին համապատասխան տողում նշված խնդիրները` [2] խնդիրների ժողովածուից (Աղգաշյան Ռ., Առաքելյան Ա., Ավետիսյան Ս., Դանիելյան Ս. Քոմփյութերների կիրառում ն ծրագրավորում / խնդիրների ժողովածու / : ՀՊՕՀ, 1998թ.): Աղյուսակ 2 Մատյանի համարը Առաջադրվող խնդիրների համարները
1, 20, 21, 41, 51 2, 19, 22, 43, 53 3, 18, 25, 44, 56 4, 17, 26, 48, 57 5, 16, 27, 46, 55 6, 15, 28, 42, 59 7, 14, 28, 45, 54 8, 13, 27, 47, 53 9, 12, 26, 42, 60 10, 11, 25, 47, 60 1, 11, 22, 48, 52 2, 12, 21, 41, 57 3, 13, 21, 48, 58 4, 14, 22,43, 51 5, 15, 25, 42, 54 6, 16, 26, 44, 59 7, 17, 27, 49, 53 8, 18, 28, 46, 58 9, 19, 21, 45, 56 10, 20, 22, 42, 59 1, 13, 25, 41, 52 2, 14, 26, 49, 58 3, 15, 27, 48, 55 4, 16, 28, 47, 57 5, 17, 27, 45, 54 6, 18, 26, 43, 56 7, 19, 28, 42, 51 8, 20, 25, 47, 60 9, 11, 22, 46, 52 10, 12, 21, 44, 55
3. ՑԻԿԼԱՅԻՆ ԾՐԱԳՐԵՐԻ ԿԱԶՄԱԿԵՐՊՈՒՄ
3.1. Ցիկլային ծրագրեր Հաճախ անհրաժեշտություն է առաջանում կրկնել գործողությունների որոշակի խումբ մեկից ավելի անգամներ: Այդպիսի պրոցեսներ նկարագրող ծրագիրը կոչվում է ցիկլային, իսկ գործողությունների կրկնվող հատվածները՝ ցիկլեր: Ցիկլի կազմակերպման համար անհրաժեշտ է ունենալ պրոցեսի նախնական տվյալները բնորոշող որոշակի փոփոխական (պարամետր) իր արժեքների ստացման հայտնի օրենքով: Ուստի անհրաժեշտ է նախատեսել օպերատորներ, որոնք տան պարամետր-փոփոխականի ինչպես նախնական արժեքը, այնպես էլ ամեն անգամ կրկնվելուց առաջ ապահովեն պարամետրի նոր արժեքի ստացումը: Բացի այդ, ցիկլը պետք է պարունակի պայմանական օպերատոր, որն ամեն անգամ ստուգի պարամետրի վերջնական արժեքին հասնելու պայմանը, եթե այդ արժեքը դեռնս չի նվաճվել, ապա ցիկլը կրկնվում է, հակառակ դեպքում ցիկլն ավարտվում է, ն կատարվում է անցում ցիկլային հատվածին հաջորդող օպերատորին: Ցիկլի ավարտի պայմանը կարող է նան անմիջականորեն կապված չլինել ցիկլի պարամետրի վերջնական արժեքի հետ: Այն կարող է պայմանավորված լինել ցիկլում ստացվող այլ փոփոխական մեծության արժեքով: Ցիկլային ձների կիրառումը, վերջին հաշվով, հնարավորություն է տալիս քոմփյութերում կատարվող բազմաթիվ գործողությունների հաջորդականությունը ներկայացնել սեղմ ձնով: ՊԱՍԿԱԼ-ում կիրառվում են ցիկլի երեք տիպի օպերատորներ՝ - պարամետրով ցիկլի օպերատոր, - նախապայմանով ցիկլի օպերատոր, - հետպայմանով ցիկլի օպերատոր:
3.2. Պարամետրով ցիկլի օպերատոր Շատ խնդիրներում նախօրոք հայտնի է, թե քանի անգամ պետք է կատարվի ցիկլում ընդգրկված գործողությունների հաջորդականությունը: Այդ տիպի խնդիրների լուծման ծրագիրը կազմելիս
նպատակահարմար է օգտագործել հատուկ տիպի ցիկլի օպերատոր, որի ներկայացման երկու հնարավոր ձները հետնյալներն են՝
ԲՕԲ |:-ո TՕ ո DՕ Տ
կամ
ԲՕԲ |:-ո DՕՄNTՕ ո DՕ Տ,
որտեղ՝ | - ցիկլի պարամետրն է, որը դիսկրետ տիպի (ամբողջ, սիմվոլային, տրամաբանական ն ալյն) փոփոխական է, ո, ո - ցիկլի պարամետրի նախնական ն վերջնական արժեքները որոշող արտահայտություններ են, որոնք ցիկլի պարամետրի հետ պետք է ունենան նույն տիպը, Տ -ը պարզ կամ բաղադրյալ օպերատոր է: Ցիկլի կատարման համար սկզբում հաշվվում ն հիշվում են ցիկլի պարամետրի սկզբնական ն վերջնական արժեքները: Այնուհետն ցիկլի | պարամետրին վերագրվում է նախնական արժեքը, որից հետո ցիկլի պարամետրի արժեքը համեմատվում է վերջնական արժեքի հետ: Քանի դեռ ցիկլի պարամետրի արժեքը փոքր է վերջնական արժեքից կամ հավասար (ցիկլի ԲՕԲ ... TՕ տիպի օպերատորում) կամ մեծ վերջնական արժեքից կամ հավասար (ցիկլի ԲՕԲ ... DՕՄNTՕ տիպի օպերատորում) կատարվում է ցիկլի հերթական կրկնումը, հակառակ դեպքում ցիկլն ավարտվում է: Ամեն մի հերթական կրկնման ժամանակ սկզբում կատարվում է Տ օպերատորը, իսկ հետո ցիկլի պարամետրին վերագրվում է հաջորդ մեծ արժեքը (ցիկլի ԲՕԲ ... TՕ տիպի օպերատորում) կամ հաջորդ փոքր արժեքը (ցիկլի ԲՕԲ ... DՕՄNTՕ տիպի օպերատորում): Ցիկլի աշխատանքը դիտարկենք մասնավոր դեպքում` ցիկլի պարամետրն ամբողջ տիպ է: Առաջին դեպքում (ԲՕԲ ... TՕ ձն) Տ օպերատորը սկզբում կատարվում է | պարամետրի ո արժեքի համար, որից հետո | պարամետրի արժեքը մեծացվում է մեկով ն նորից կատարվում է Տ օպերատորը, ապա | -ն մեծացվում է նս մեկով ն կատարվում է Տ-ը ն այսպես այնքան ժամանակ, քանի դեռ ճշմարիտ է |≤ո պայմանը: Երկրորդ դեպքում (ԲՕԲ ... DՕՄNTՕ ձն) Տ օպերատորը սկզբում կատարվում է | պարամետրի |-ո արժեքի համար, որից հետո նրա արժեքը փոքրացվում է 1-ով ն այն կատարվում է այնքան ժամանակ, քանի դեռ ճշմարիտ է |≥ն պայմանը: Այսպիսով, երկու դեպքում էլ ցիկլը ամբողջությամբ կառավարվում է | պարամետրով, որի արժեքները փոփոխվում են +1 կամ -1 քայլով:
Ցիկլի ԲՕԲ տիպի օպերատոր տրամաբանական կառուցվածքային սխեման, երբ ցիկլի պարամետրը ամբողջ տիպի է, բերված է նկ.3.1-ում: FOR I-ո,ո Տ
Նկ.3.1. Ցիկլի ԲՕԲ տիպի օպերատորի տրամաբանական սխեման
3.3. Նախապայմանով ցիկլի օպերատոր Նախապայմանով ցիկլի օպերատորը կազմակերպում է ինչպես կրկնությունների հայտնի, այնպես էլ անհայտ թվով ցիկլերի իրագործումը: Օպերատորի ընդհանուր տեսքը հետնյալն է՝
ՄԻIԼԷ Ե DՕ Տ,
որտեղ՝ Ե-ն տրամաբանական արտահայտություն է (մասնավոր դեպքում՝ պայման), Տ-ը ցանկացած օպերատոր է (պարզ կամ բաղադրյալ), որը կոչվում է ցիկլի մարմին: Ցիկլի այս տիպի օպերատորի իմաստը հետնյալն է. Տ օպերատորը կրկնվում է այնքան, քանի դեռ ճշմարիտ է Ե տրամաբանական արտահայտությունը: Ակնհայտ է, որ ամեն անգամ, նախքան Տ-ի կատարվելը, հաշվվում է Ե-ի արժեքը: Ցիկլն ավարտվում է, եթե Ե տրամաբանական արտահայտությունը ստանում է կեղծ արժեք: Քանի որ տրամաբանական արտահայտության ճշմարտացիությունը ստուգվում է յուրաքանչյուր կրկնման սկզբում, ապա ցիկլի մարմինը կարող է չկատարվել ոչ մի անգամ (եթե ի սկզբանե արտահայտության արժեքը կեղծ է): Ցիկլի մարմինը կարող է ընդգրկել միայն մեկ օպերատոր: Եթե ցիկլի մարմնում օպերատորների քանակը մեկից ավելի է, ապա
անհրաժեշտ է այդ օպերատորներից ձնավորել բաղադրյալ օպերատոր, այսինքն` այդ օպերատորները վերցնել 8ԷՇIN ն ԷND բառերի մեջ: ՄԻIԼԷ ցիկլի օպերատորի տրամաբանական սխեման բերված է նկ. 3.2-ում: WHILԷ
FALSԷ
Ե TRUԷ
Տ
Նկ.3.2. ՄԻIԼԷ- տիպի օպերատորի տրամաբանական սխեման
3.4. Հետպայմանով ցիկլի օպերատոր Հետպայմանով ցիկլի օպերատորը կազմակերպում է ինչպես կրկնությունների նախապես հայտնի, այնպես էլ անհայտ թվով ցիկլերի կատարումը: Օպերատորի ընդհանուր տեսքը հետնյալն է՝
ԲԷՔԷՃT Տ1: Տ2: ...: Տո ՍNTIԼ Ե,
որտեղ՝ Տ1: Տ2: ...: Տո -ը կատարվող օպերատորների հաջորդականություն է (ցիկլի մարմին), Ե -ն տրամաբանական արտահայտություն է (մասնավոր դեպքում պայման): Ներկայացված ցիկլի օպերատորում սկզբում կատարվում են ԲԷՔԷՃT ն ՍNTIԼ բառերի միջն ընդգրկված Տ1, Տ2, ..., Տո օպերատորները, որից հետո հաշվվում է Ե-ի արժեքը(մասնավոր դեպքում ստուգվում է պայմանը), ն եթե այն կեղծ է, նորից կատարվում են Տ1, Տ2, ..., Տո օպերատորները, հակառակ դեպքում ցիկլն ավարտվում է: Ի տարբերություն նախորդ կետում դիտարկված ՄԻIԼԷ օպերատորի, այս դեպքում պայմանը տրվում է վերջում: Այդ իսկ պատճառով ցիկլի մարմինը կատարվում է գոնե մեկ անգամ, հետնաբար կոնկրետ խնդրի
լուծման ժամանակ ցիկլի տեսքն ընտրելիս անհրաժեշտ է պարզել, թե ցիկլի մարմինը գոնե մեկ անգամ պետք է կատարվի, թե ոչ: Ցիկլի այս ձնում Տ1, Տ2, ..., Տո օպերատորների հաջորդականությունը չի միավորվում 8ԷՇIN ն ԷND «օպերատորային փակագծերով» որպես մեկ բաղադրյալ օպերատոր, քանի որ ցիկլի օպերատորի ԲԷՔԷՃT ... ՍNTIԼ գրառման պարփակ ձնը իր մեջ արդեն պարունակում է փակագծերի իմաստ: Այդ պատճառով է նան, որ ՍNTIԼ բառից առաջ կետստորակետ դնելը պարտադիր չէ: ԲԷՔԷՃT տիպի ցիկլի օպերատորի տրամաբանական սխեման ներկայացված է նկ.3.3-ում: ԲԷՔԷՃT
Տ1, Տ2, ..., Տո
FALSԷ
Ե TRUԷ
Նկ. 3.3. ԲԷՔԷՃT տիպի օպերատորի տրամաբանական սխեման
3.5. Ցիկլի օպերատորների կիրառման հիմնական կանոնները Խնդրի դրվածքից կախված` կարելի է կիրառել ցիկլի նշված ձներից որնէ մեկը: Ցիկլի օպերատորի բոլոր ձներում ցիկլի բնական ավարտից հետո, այսինքն, երբ ցիկլում նշված բոլոր կրկնումները կատարված են, ավտոմատ կերպով ցիկլը ավարտվում է, ն կատարում է անցնում ցիկլին անմիջապես հաջորդող օպերատորին: Սակայն հնարավոր է նան ցիկլի վաղաժամ ընդհատում, երբ ցիկլի ներսում տեղավորված որնէ անցման օպերատոր նախքան ցիկլի լրիվ ավարտը կառավարումը փոխանցվում է ցիկլից դուրս գտնվող այլ օպերատորի: Հակառակը, այսինքն` կառավարման փոխանցումը արտաքին օպերատորից ցիկլի ներսում գտնվող որնէ օպերատորի չի թույլատրվում: Դա բացատրվում է նրանով, որ այս դեպքում ցիկլի սկիզբը բաց է թողնվում, հետնաբար բացակայում է տեղեկությունը պարամետրի ընթացիկ արժեքի վերաբերյալ: Այսպիսով
ցիկլի մեջ մտնել հնարավոր է միայն անցնելով նրա սկզբով, իսկ դուրս գալ ցիկլից հնարավոր է նան` շրջանցելով նրա բնական ավարտը: ՏՈՒՐԲՈ ՊԱՍԿԱԼ-ի 7-րդ տարբերակում ԲՕԲ, ՄԻIԼԷ ն ԲԷՔԷՃT ցիկլերում կարելի է օգտագործել երկու նոր ստանդարտ պրոցեդուրաներ. 8ԲԷՃK ն ՇՕNTINՍԷ: 8ԲԷՃK պրոցեդուրան թույլատրում է վաղաժամ ընդհատել ցիկլը` դեռնս կատարված չլինելով ցիկլի ավարտի պայմանը: 8ԲԷՃK պրոցեդուրայի կատարումից հետո կառավարումը տրվում է ցիկլի օպերատորի հաջորդող օպերատորին: ՇՕNTINՍԷ պրոցեդուրան թույլատրում է վաղաժամկետ ավարտել հերթական շրջափուլը: ՇՕNTINՍԷ պրոցեդուրայի կատարումից հետո սկսվում է ցիկլի նոր շրջափուլ: Հնարավոր է ներդրված ցիկլերի կիրառումը, երբ ցիկլն իր մեջ պարունակում է այլ ցիկլ: Այդ դեպքում առաջանում են «ներքին ցիկլ» ն «արտաքին ցիկլ» հասկացությունները: Անհրաժեշտ է, ներքին ցիկլն ամբողջությամբ տեղավորվի արտաքին ցիկլի մեջ, այսինքն չի թույլատրվում տարբեր ցիկլերի տիրույթների հատումը: Ներդրված ցիկլերը պետք է ունենան տարբեր պարամետրեր: Արտաքին ցիկլի պարամետրի յուրաքանչյուր արժեքի համար ներքին ցիկլը իրագործվում է ամբողջությամբ, եթե ներքին ցիկլը չի պարունակում վաղաժամ ավարտի հանգեցնող անցման օպերատոր:
3.6. Պարզ ծրագրերի տիպային օրինակներ Օրինակ 3.1. Կազմել բլոկ-սխեմա ն ծրագիր, որոնք օգտագործելով ցիկլի ՄԻIԼԷ օպերատորը՝ x∈[-2,5: 4,5] միջակայքում, ∆x-0,3 քայլով կհաշվեն Y-x+3x2 ֆունկցիայի արժեքները: Տպել x ն 7 փոփոխականների արժեքների աղյուսակը: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.3.4-ում, իսկ ծրագիրն ունի ԷXՃM3/1 անունը:
Սկիզբ xՏ,xԽ,∆ x-xՏ ոչ
x≤xԽ այո
Ավարտ
7-x+3x2 x,7 x-x+∆x
Նկ. 3.4
ՔԲՕՇԲՃM ԷXՃM3/1:
ՇՕNՏT XՏ--2.5:XՄ-4.5:DX-0.3:
ՄՃԲ X,Y:ԲԷՃԼ:
8ԷՇIN X:-XՏ:
ՄԻIԼԷ XՀ-XՄ DՕ
8ԷՇIN Y:-X+3"ՏՕԲ(X):
ՄԲITԷԼN(X,Y):
X:-X+DX ԷND ԷND. x փոփոխականին վերագրված է միջակայքի սկզբնական -2,5 արժեքը, որը նախապայմանով ցիկլի մարմնի մեջ մեծացնում է իր արժեքը dx(∆x) քայլով: Ցիկլի մարմնում x-ի յուրաքանչյուր արժեքի համար հաշվվում է ֆունկցիայի արժեքը, արտածվում x-ի ն 7-ի արժեքները: Ցիկլի մարմինը կատարվում է այնքան, քանի դեռ ճշմարիտ է x≤4,5 պայմանը: Ծրագրում Ֆունկցիայի հաշվումը ն x ու 7 փոփոխականների արտածումը կազմակերպված է ցիկլի ՄԻIԼԷ օպերատորի օգնությամբ: Քանի որ ցիկլի մարմինը պարունակում է մեկից ավելի օպերատորներ, ապա այն
կազմակերպված է որպես բաղադրյալ օպերատոր, այսինքն վերցված է 8ԷՇIN ն ԷND հատուկ բառերի միջն:
Օրինակ 3.2. Կազմել բլոկ-սխեմա ն ծրագիր, որոնք օգտագործելով ցիկլի ԲԷՔԷՃT օպերատորը՝ x∈[-12: 12] միջակայքում, ∆x-2 քայլով կհաշվեն ֆունկցիայի արժեքները: Տպել x ն 7 փոփոխականների Y-lօ»4(x2+1) արժեքների աղյուսակը: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.3.5-ում, իսկ ծրագիրն ունի ԷXՃM3/2 անունը: Սկիզբ
xՏ,xԽ,∆x x-xՏ
7-lօ»4(x +1) x,7 x-x+∆x ոչ
x»xԽ այո Ավարտ
Նկ. 3.5
ՔԲՕՇԲՃM ԷXՃM3/2:
ՇՕNՏT XՏ--12:XՄ-12:DX-2:
ՄՃԲ X,Y:ԲԷՃԼ:
8ԷՇIN X:-XՏ: ԲԷՔԷՃT Y:-ԼN(ՏՕԲ(X)+1)/ԼN(4):
ՄԲITԷԼN(X,Y):
X:-X+DX
ՍNTIԼ X»XՄ
ԷND. x փոփոխականին վերագրված է միջակայքի սկզբնական -12 արժեքը, որը հետպայմանով ցիկլի մարմնի մեջ մեծացնում է իր արժեքը dx(∆x) քայլով: Ցիկլի մարմնում x-ի յուրաքանչյուր արժեքի համար հաշվվում է ֆունկցիայի արժեքը, արտածվում x-ի ն 7-ի արժեքները: Ցիկլն ավարտվում է x»12 պայմանի դեպքում: Ծրագրում Ֆունկցիայի հաշվումը ն x ու 7 փոփոխականների արտածումը կազմակերպված է ցիկլի ԲԷՔԷՃT օպերատորի օգնությամբ:
Օրինակ 3.3. Կազմել բլոկ-սխեմա ն ծրագիր, որոնք տրված ո բնական թվի համար կհաշվեն ու կտպեն տրված արտահայտության արժեքը. n
∑ մiո
, որտեղ x1-5: x|-2+Տ|ոx|-1
i =1
Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.3.6-ում, իսկ ծրագիրն ունի ԷXՃM3/3 անունը:
ՔԲՕՇԲՃM ԷXՃM3/3:
ՄՃԲ X,Տ:ԲԷՃԼ:I,N:INTԷՇԷԲ:
8ԷՇIN
ԲԷՃD(N):
X:-5: Տ:-0:
ԲՕԲ I:-1 TՕ N DՕ
8ԷՇIN Տ:-Տ+ՏՕԲ(X): X:-2+ՏIN(X): ԷND:
ՄԲITԷ(Տ)
ԷND.
Սկիզբ ո x-5 Տ-0 Նկ.3.6
|-1,ո Տ-Տ+x2
Տ
x-2+Տ|ոx
Ավարտ
Գումարի համար նախատեսված Տ փոփոխականին ցիկլից դուրս վերագրվում է 0 արժեք, իսկ x փոփոխականին` իր նախնական 5 արժեքը: Գումարի բոլոր գումարելիները հաշվվում ն դրանց քառակուսիների արժեքները ավելացվում են Տ փոփոխականին ցիկլի մարմնում: Այստեղ պետք է հիշել վերագրման օպերատորի կատարման կարգը, այն է՝ սկզբից հաշվվում է արտահայտության աջ մասի արժեքը, ն այն վերագրվում ձախում գրված փոփոխականին: Խնդրի լուծման ժամանակ անհրաժեշտություն չկա x փոփոխականը հայտարարել որպես զանգված, քանի որ ցիկլում հաշվված x փոփոխականի ամեն մի արժեքի քառակուսին անմիջապես ավելացվում է գումարի համար նախատեսված Տ փոփոխականին:
Օրինակ 3.4. Կազմել բլոկ-սխեմա ն ծրագիր, որոնք տրված ո բնական թվի համար կհաշվեն ու կտպեն տրված արտահայտության արժեքը.
∏ (xi 2 + » i 2 ) , որտեղ x1-2: x|-Տ|ոx|-1: 71-3: ո
7|-ՇօՏ7|-1:
i =1
Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.3.7-ում, իսկ ծրագիրն ունի ԷXՃM3/4 անունը:
Սկիզբ ո x-2 7-3
Նկ. 3.7
ք-1 |-1,ո ք-ք(x2+72)
ք
x-Տ|ոx
Ավարտ
7-ՇօՏ7
ՔԲՕՇԲՃM ԷXՃM3/4:
ՄՃԲ X,Y,Ք:ԲԷՃԼ:I,N:INTԷՇԷԲ:
8ԷՇIN ԲԷՃD(N): X:-2: Y:-3:Ք:-1:
ԲՕԲ I:-1 TՕ N DՕ
8ԷՇIN Ք:-Ք"(ՏՕԲ(X)+ՏՕԲ(Y)): X:-ՏIN(X): Y:-ՇՕՏ(Y) ԷND:
ՄԲITԷ(Ք)
ԷND. Արտադրյալի համար նախատեսված Ք փոփոխականին ցիկլից դուրս վերագրվում է 1 արժեք, իսկ x ն 7 փոփոխականներին իրենց նախնական` 2 ն 3 արժեքները: Բոլոր արտադրիչները հաշվվում ն նրանց քառակուսիների գումարի արժեքները բազմապատկվում են Ք փոփոխականով ցիկլի մարմնում: Այստեղ նս պետք է հիշել վերագրման օպերատորի կատարման կարգը, այն է՝ սկզբում հաշվվում է
արտահայտության աջ մասի արժեքը, ն այն վերագրվում ձախում գրված փոփոխականին: Խնդրի լուծման ժամանակ անհրաժեշտություն չկա x ն 7 փոփոխականները հայտարարելու որպես զանգված, քանի որ ցիկլում հաշվված x ն 7 փոփոխականների ամեն մի արժեքների քառակուսիների գումարը անմիջապես բազմապատկվում է արտադրյալի համար նախատեսված Ք փոփոխականով:
Օրինակ 3.5. Կազմել բլոկ-սխեմա ն ծրագիր, որոնք x դրական ն ո բնական թվերի համար կհաշվեն ն կտպեն
(x + 1) + (x + 1) + (x + 1)
−1
(
)
+ L + x2 +1
7 ո −1
արտահայտության արժեքը: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.3.8-ում, իսկ ծրագիրն ունի ԷXՃM3/5 անունը:
ՔԲՕՇԲՃM ԷXՃM3/5:
ՄՃԲ X,Տ:ԲԷՃԼ:I,N:INTԷՇԷԲ:
8ԷՇIN
ԲԷՃD(N,X):
Տ:-0:
ԲՕԲ I:-0 TՕ N DՕ
Տ:-Տ+ԷXՔ((7"I-1)"ԼN(ՏՕԲ(X)+1)):
ՄԲITԷ(Տ)
ԷND.
Սկիզբ ո,x Տ-0 |-0,ո Տ-Տ+(x2+1)7|-1
Տ
Ավարտ Նկ. 3.8 Դժվար չէ նկատել, որ
(
) + (x + 1) + (x + 1)
5 = x2 +1
−1
(
ո
i =0
Ծրագրում
(x + 1)
7i −1
խնդիրը
(x + 1)
=e
հանգեցնել
7i −1
(
(
7 ո−1
)
5 = ∑ x2 +1
գումարը կարելի է ներկայացնել այսպիսով՝
)
+ L+ x2 +1
պարզագույն
7i −1
գումարի
տեսքով ն, հաշվման:
արտահայտությունը հաշվված է հետնյալ կերպ.
):
(7i −1) ln x 2 +1
Օրինակ 3.6. Կազմել բլոկ-սխեմա ն ծրագիր, որոնք կհաշվեն ու կտպեն
∑ ( xi + »i ) արտահայտության արժեքը, i =1
որտեղ , եթե |-ն զույգ է, ⎧⎪i 2 xi = ⎨ ⎪⎩i − 1 , հակառակ դեպքում: ⎧i + 1 , եթե |-ն զույգ է, »i = ⎨ , հակառակ դեպքում: ⎩2i Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.3.9-ում, իսկ ծրագիրն ունի ԷXՃM3/6 անունը: Սկիզբ Տ-0 |-1,10
{|/2}-0
Տ
ոչ
այո
x-|2
x-|-1
7-|+1
7-2|
Ավարտ
Տ-Տ+x+7 Նկ. 3.9
ՔԲՕՇԲՃM ԷXՃM3/6:
ՄՃԲ X,Y,Տ:ԲԷՃԼ:I:INTԷՇԷԲ:
8ԷՇIN Տ:-0:
ԲՕԲ I:-1 TՕ 10 DՕ
8ԷՇIN
IԲ I MՕD 2-0 TԻԷN 8ԷՇIN X:-ՏՕԲ(I): Y:-I+1 ԷND
ԷԼՏԷ 8ԷՇIN X:-I-1: Y:-2"I ԷND: Տ:-Տ+X+Y ԷND:
ՄԲITԷ(Տ)
ԷND. Կազմակերպել է մեկ ցիկլ, որի մեջ հաշվվում են x ն 7 փոփոխականների արժեքները, որոնց գումարի արժեքը անմիջապես ավելացվում է գումարի համար նախատեսված Տ փոփոխականին: Քանի որ ՊԱՍԿԱԼ լեզվում պայմանի օպերատորը կարող է պարունակել միայն մեկ օպերատոր, իսկ մեր ծրագրում դրանք երկուսն են, այդ պատճառով յուրաքանչյուր ճյուղում x ն 7 փոփոխականների ստացումը կազմակերպված է բաղադրյալ օպերատորի միջն, այսինքն այդ օպերատորները վերցված են 8ԷՇIN ն ԷND հատուկ բառերի միջն:
Օրինակ 3.7. Կամայական x իրական ն k պարամետրերի տրված արժեքների համար կազմել տրված ֆունկցիայի արժեքների հաշվման ն արտածման բլոկ-սխեմաներն ու ծրագրերը. ⎧3 x + , , եթե x»2, Y =⎨ , հակառակ դեպքում, ⎩5 x որտեղ k-1, 2, ..., 10: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.3.10-ում, իսկ ծրագիրն ունի ԷXՃM3/7 անունը:
ՔԲՕՇԲՃM ԷXՃM7:
ՄՃԲ X,Y:ԲԷՃԼ:I,K:INTԷՇԷԲ:
8ԷՇIN
ԲԷՃD(X):
ԲՕԲ K:-1 TՕ 10 DՕ
8ԷՇIN IԲ X»2 TԻԷN Y:-3"x+4 ԷԼՏԷ Y:-5"X:
ՄԲITԷԼN(K,Y)
ԷND ԷND.
Սկիզբ x k-1,10
x»2
Ավարտ ոչ
այո
7-3x+4
7-5x
k,7 Նկ. 3.10 Քանի որ ֆունկցիայի արժեքները պետք է հաշվել k-ի տարբեր արժեքների համար, ապա կազմակերպվել է k աճող պարամետրով ցիկլ, որի մեջ հաշվվում ն արտածվում են տրված ֆունկցիայի արժեքները:
Օրինակ
3.8. Կազմել բլոկ-սխեմա ու ծրագիր, որոնք տառային պարամետրերի կամայական թվային արժեքների համար կհաշվեն ն կտպեն տրված արտահայտության արժեքը.
p = ∏ ∑ (ai + ) ) : i =1 ) =1
Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.3.11-ում, իսկ ծրագիրն ունի ԷXՃM3/8 անունը:
ՔԲՕՇԲՃM ԷXՃM3/8:
ՄՃԲ Ք,Տ,Ճ:ԲԷՃԼ: I,Ս:INTԷՇԷԲ:
8ԷՇIN ԲԷՃD(Ճ): Ք:-1:
ԲՕԲ I:-1 TՕ 7 DՕ
8ԷՇIN
Տ:-0: ԲՕԲ Ս:-1 TՕ 8 DՕ Տ:-Տ+Ճ"I+Ս: Ք:-Ք"Տ ԷND:
ՄԲITԷ(Ք)
ԷND. Սկիզբ ք-1 |-1,7 ք
Տ-0
Ավարտ
)-1,8 Տ-Տ+8|+)
ք-ք"Տ
Նկ.3.11 Կազմակերպված են ներդրված երկու ցիկլեր, որոնցից ներքինում հաշվվում է հերթական գումարը (Տ), այնուհետն ստացված արժեքը արտաքին ցիկլի մեջ բազմապատկվում է արտադրյալի կազմակերպման համար նախատեսված փոփոխականով (Ք):
3.7. Տնային առաջադրանքներ Տնային առաջադրանքում ուսանողը պետք է կատարի աղյուսակ 1ի դասամատյանի` իր համարին համապատասխան տողում նշված խնդիրները` [2] խնդիրների ժողովածուից (Աղգաշյան Ռ., Առաքելյան Ա., Ավետիսյան Ս., Դանիելյան Ս. Քոմփյութերների կիրառում ն ծրագրավորում / խնդիրների ժողովածու / : ՀՊՕՀ, 1998թ.): Մատյանի համարը
Առաջադրվող խնդիրների համարները
61, 71, 81, 91, 101, 111, 130, 133 62, 73, 86, 97, 103, 112, 129, 139 63, 77, 82, 93, 104, 113, 128, 132 64, 75, 85, 94, 105, 114, 127, 140 65, 72, 87, 95, 102, 115, 126, 138 66, 78, 83, 92, 107, 116, 125, 131 67, 76, 88, 96, 109, 117, 124, 137 68, 74, 84, 99, 108, 118, 123, 134 69, 80, 89, 98, 106, 119, 122, 135 70, 79, 90, 100, 110, 120, 121, 136 63, 76, 84, 97, 108, 111, 130, 131 64, 73, 82, 93, 101, 112, 129, 133 65, 75, 85, 99, 105, 113, 128, 135 66, 71, 83, 91, 102, 114, 127, 136 67, 74, 87, 94, 106, 115, 126, 138 68, 77, 86, 95, 103, 116, 125, 138 69, 72, 81, 92, 104, 117, 124, 139 70, 78, 88, 96, 107, 118, 123, 132 61, 79, 90, 98, 108, 119, 122, 137 62, 80, 83, 100, 109, 120, 121, 134 63, 73, 85, 97, 110, 120, 121, 140 64, 79, 89, 100, 102, 119, 122, 135 65, 75, 89, 93, 109, 118, 123, 137 66, 80, 84, 99, 110, 117, 124, 134 67, 71, 88, 98, 107, 116, 125, 139 68, 78, 90, 95, 105, 115, 126, 138 69, 76, 81, 91, 101, 114, 127, 131 70, 74, 86, 94, 106, 113, 128, 136 61, 77, 82, 96, 103, 112, 129, 132 62, 72, 87, 92, 104, 111, 130, 133
4. ԶԱՆԳՎԱԾՆԵՐ
4.1. Զանգվածներ Որոշ խնդիրների լուծման ժամանակ անհրաժեշտ է լինում օգտագործել բավական մեծ թվով նույնատիպ փոփոխականներ: Քանի որ այդպիսի փոփոխականների նկարագրումը ն կիրառումը սովորական ձներով հարմար չէ, ապա հնարավորություն է տրված դրանք սեղմ ձնով ներկայացնել որպես մեկ զանգված: Զանգվածը այնպիսի նույնատիպ տարրերի կարգավորված հավաքածու է, որոնք ներկայացվում են միննույն իդենտիֆիկատորով ն իրարից տարբերվում են ինդեքսի (համարի) արժեքով: Օրինակ, Ճ, 8, Շ, D փոփոխականները, նույնիսկ եթե նույնատիպ են, փոփոխականների զանգված չեն կազմում, իսկ x1, x2, ... , xո փոփոխականները կազմում են զանգված՝ X անունով: Այդ զանգվածի տարրերը իրարից տարբերվում են ինդեքսով: Զանգվածի առանձին տարրը որոշող ինդեքսների քանակը որոշում է զանգվածի չափողականությունը: Այսպես, վերը նշված X զանգվածն ունի մեկ ինդեքս, հետնաբար միաչափ զանգված է: Թույլատրվում է նան բազմաչափ զանգվածների կիրառում: Զանգվածի տարրը նշելու համար կիրառվում է ինդեքսով փոփոխական, որը ներկայացվում է զանգվածի անունով, հաջորդող ինդեքսների ցուցակով՝ վերցված քառակուսի փակագծերի մեջ: Ինդեքսները միմյանցից բաժանվում են ստորակետով: Օրինակ, X[N]: X[18]: 2[I,Ս]: Ճ[1,3,K]: Այսպիսով, առանձին տարրի տեղը զանգվածում միարժեքորեն որոշվում է ինդեքսների արժեքներով: Ինդեքսները կարող են տրվել անմիջականորեն ամբողջ թվերով, ինչպես նան փոփոխականով կամ արտահայտությամբ: Վերջին դեպքում, որպես ինդեքսի արժեք, պետք է վերցվի արտահայտության արժեքի ամբողջ մասը: Զանգվածներով աշխատելիս անհրաժեշտ է նախօրոք դրանք նկարագրել, ցույց տալով դրանց չափողականությունը, տարրերի թիվը ն տիպը: Դա հնարավորություն է տալիս քոմփյութերին հիշողության մեջ համապատասխան դաշտ հատկացնել զանգվածի բոլոր տարրերին: Զանգվածի հայտարարման համար կիրառվում է ՃԲԲՃY (զանգված) հատուկ բառ նկարագրիչը: Նկարագրումը կատարվում է պարզ տիպի փոփոխականների նկարագրման հետ (ՄՃԲ բաժնում): Օրինակ՝
ՄՃԲ X: ՃԲԲՃY[1..30] ՕԲ ԲԷՃԼ
նկարագրումը ցույց է տալիս, որ X-ը միաչափ զանգված է, որն ունի 30 իրական տիպի տարրեր: Այդ զանգվածի տարրեր են՝ X[1], X[2], ... , X[30] ինդեքսով փոփոխականները: Նկարագրման ժամանակ քառակուսի փակագծերում ներկայացված 1..30 գրառումը կոչվում է սահմանային զույգ՝ 1 ներքին ն 30 վերին սահմաններով: Հնարավոր է կիրառել նան զանգվածի հայտարարման հետնյալ ձները՝
TYՔԷ Y-ՃԲԲՃY[1..20] ՕԲ ԲԷՃԼ:
ՄՃԲ X:Y:
Առաջին տողում Y տիպը սահմանվում է որպես 20 տարրանոց միաչափ զանգված, որից հետո փոփոխականների ՄՃԲ բաժնում X փոփոխականին վերագրվում է Y տիպը: Այսպիսով, X փոփոխականը ունենում է ՃԲԲՃY[1..20] ՕԲ ԲԷՃԼ տիպը: Այս եղանակը գերադասելի է այն դեպքում, երբ հայտարարվում են նույնատիպ մի քանի զանգվածներ, որոնք ունեն նույն թվով տարրեր: Օրինակ, X,Y ն 2 նմանատիպ զանգվածների նկարագրումը՝
ՄՃԲ X:ՃԲԲՃY[1..50] ՕԲ ԲԷՃԼ:
Y:ՃԲԲՃY[1..50] ՕԲ ԲԷՃԼ: 2:ՃԲԲՃY[1..50] ՕԲ ԲԷՃԼ: կարող է փոխարինվել հետնյալ նկարագրությամբ՝
TYՔԷ Ճ-ՃԲԲՃY[1..50] ՕԲ ԲԷՃԼ:
ՄՃԲ X,Y,2:Ճ: Այստեղ առաջին տողում հայտարարվում է Ճ տիպը, որպես 50 տարրանոց իրական թվերի միաչափ զանգված: Երկրորդ տողում հայտարարվում է, որ X, Y ն 2 փոփոխականները Ճ տիպի են, այսինքն ունեն ՃԲԲՃY[1..50] ՕԲ ԲԷՃԼ տիպը: ՊԱՍԿԱԼ-ում թույլատրվում է նույնատիպ զանգվածների հետ վերագրումների կատարում: Օրինակ, եթե X ն Y նույնատիպ զանգվածներ են՝
TYՔԷ 8-ՃԲԲՃY[1..25] ՕԲ INTԷՇԷԲ:
ՄՃԲ X,Y:8:
ապա X:-Y գրառումով X զանգվածի բոլոր տարրերին վերագրվում են Y զանգվածի համապատասխան տարրերի արժեքները: Ինչպես արդեն նշվել է, թույլատրվում է նան բազմաչափ զանգվածների կիրառում: Այդ դեպքում ո-չափանի զանգվածի տարրերը որոշվում են ո հատ ինդեքսներով, որոնք միմյանցից բաժանվում են ստորակետերով: Բազմաչափ զանգվածների նկարագրությունում սահմանային զույգերը նշվում են բոլոր ինդեքսների համար առանձին-առանձին, իրարից բաժանելով ստորակետերով: Այսպես, երկչափ զանգվածի դեպքում կունենանք՝ ՄՃԲ Ճ:ՃԲԲՃY[1..6,1..8] ՕԲ INTԷՇԷԲ: Այս հայտարարումով ներկայացվում են հետնյալ փոփոխականները՝ Ճ[1,1] Ճ[1,1] Ճ[6,1]
Ճ[1,2] ... Ճ[1,8] Ճ[1,2] ... Ճ[1,8] Ճ[6,2] ... Ճ[6,8]
Բերված փոփոխականները այն երկչափ զանգվածի տարրերն են, որն ունի 1-ից 6 սահմանները առաջին ինդեքսով (չափումով) ն 1-ից 8՝ երկրորդ չափումով: Երկչափ զանգվածը փաստորեն ներկայացնում է ուղղանկյուն աղյուսակ (մատրից), իսկ Ճ[I,Ս] փոփոխականը` այն տարրը, որը գտնվում է I-րդ տողի ն Ս-րդ սյան հատման դիրքում: Զանգվածի չափողականությունը ն տարրերի թիվը ՊԱՍԿԱԼ-ում չեն սահմանափակվում: Իրականում դրանք սահմանափակվում են միայն քոմփյութերի հիշողության հնարավորություններով:
4.2. Պարզ ծրագրերի տիպային օրինակներ Օրինակ 4.1. Կազմել բլոկ-սխեմա ն ծրագիր, որոնք կհաշվեն ն կտպեն տրված ո տարրեր պարունակող միաչափ զանգվածի զույգ ինդեքս ունեցող տարրերի գումարը: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.4.1-ում, իսկ ծրագիրն ունի ԷXՃM4/1 անունը:
Սկիզբ Մուտք ո |-1,ո Մուտք x|
Տ-0 |-1,ո ոչ
Տպել Տ
{|/2}-0 այո
Տ-Տ+x|
Ավարտ Նկ. 4.1
ՔԲՕՇԲՃM ԷXՃM4/1:
ՇՕNՏT N-10:
ՄՃԲ X:ՃԲԲՃY[1..N]ՕԲ ԲԷՃԼ:
I:INTԷՇԷԲ: Տ:ԲԷՃԼ:
8ԷՇIN
ԲՕԲ I:-1 TՕ N DՕ ԲԷՃD(X[I]):
Տ:-0:
ԲՕԲ I:-1 TՕ N DՕ
IԲ I MՕD 2-0 TԻԷN Տ:-Տ+X[I]:
ՄԲITԷ(Տ)
ԷND. Տարրն ունի զույգ ինդեքս, եթե տարրի ինդեքսի արժեքը 2-ի բաժանելուց ստացված մնացորդը հավասար է 0-ի: Կազմակերպվել են երկու ցիկլեր, որոնցից առաջինում ներմուծվել են վեկտորի տարրերի արժեքները, իսկ երկրորդում հաշվվել է զույգ ինդեքս ունեցող տարրերի գումարը (Տ):
Ծրագրում զանգվածի x| տարրի զույգության ստուգումը համարժեք է X[I] MՕD 2-0 պայմանի կատարմանը: Խնդիրը կարելի է լուծել նան մեկ ցիկլի օգնությամբ:
Օրինակ 4.2. Կազմել բլոկ-սխեմա ն ծրագիր, որոնք կհաշվեն ն կտպեն տրված ո տարրեր պարունակող միաչափ զանգվածի տարրերի միջին թվաբանականը:
ոչ բացասական
Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.4.2-ում, իսկ ծրագիրն ունի ԷXՃM4/2 անունը: Սկիզբ Մուտք ո |-1,ո Մուտք x|
Տ-0 l-0 |-1,ո ոչ
x|≥0
l≠0
այո
այո
Տ-Տ+x|
Տպել Տ/l
l-l+1 Ավարտ Նկ.4.2
ոչ
‘NՕ’
ՔԲՕՇԲՃM ԷXՃM4/2:
ՇՕNՏT N-10:
ՄՃԲ X:ՃԲԲՃY[1..N]ՕԲ ԲԷՃԼ:
I,Լ:INTԷՇԷԲ: Տ:ԲԷՃԼ:
8ԷՇIN
ԲՕԲ I:-1 TՕ N DՕ ԲԷՃD(X[I]):
Տ:-0:Լ:-0:
ԲՕԲ I:-1 TՕ N DՕ
IԲ X[I]»-0 TԻԷN 8ԷՇIN Տ:-Տ+X[I]: Լ:-Լ+1 ԷND:
IԲ ԼՀ»0 TԻԷN ՄԲITԷ(Տ/Լ) ԷԼՏԷ ՄԲITԷ(‘NՕ’)
ԷND. Ծրագրում կազմակերպված են երկու ցիկլեր, որոնցից առաջինում ներմուծվել են վեկտորի տարրերի արժեքները, իսկ երկրորդում հաշվվել են վեկտորի ոչ բացասական տարրերի գումարը ն քանակը, որոնց քանորդը կտա դրական տարրերի միջին թվաբանականը: Եթե զանգվածում չկան բացասական տարրեր, ապա Լ-ի ն Տ-ի արժեքները չեն փոփոխվի ն կմնան հավասար զրոյի, ն գումարի բաժանումը զրոյի կբերի սխալի: Այդ դեպքում տպվում է ‘NՕ’ հաղորդագրությունը: Խնդիրը կարելի է լուծել նան մեկ ցիկլի օգնությամբ: Այդ դեպքում նույն ցիկլի մեջ պետք է ներմուծել զանգվածի տարրերի արժեքները ն հաշվել զանգվածի ոչ բացասական տարրերի գումարը ն քանակը: Ցիկլից դուրս հաշվել միջին թվաբանականը:
Օրինակ 4.3. Կազմել բլոկ-սխեմա ն ծրագիր, որոնք կհաշվեն ն կտպեն ո հատ ամբողջ տիպի տարրեր պարունակող միաչափ զանգվածի կենտ արժեք ունեցող տարրերի միջին քառակուսայինը: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.4.3-ում, իսկ ծրագիրն ունի ԷXՃM4/3 անունը: x1, x2, ... , xո տարրերի միջին քառակուսայինը հաշվվում է n
n
∑մiո
արտահայտությամբ:
i =1
Կազմակերպվել են երկու ցիկլեր, որոնցից առաջինում ներմուծվել է զանգվածի տարրերի արժեքները, իսկ երկրորդում հաշվվել է զանգվածի կենտ արժեք ունեցող տարրերի քառակուսիների գումարը ն քանակը: Եթե տարրի արժեքը կենտ է, այսինքն` 2-ի բաժանելիս տալիս է 1 մնացորդ, ապա գումարի հաշվման համար նախատեսված Տ փոփոխականին
գումարվում է հերթական տարրի քառակուսու արժեքը, իսկ քանակի հաշվման համար նախատեսված l փոփոխականի արժեքը մեծացվում է 1ով: Նախապես ցիկլից դուրս Տ ն l փոփոխականներին վերագրվել է 0 արժեք: Ցիկլից դուրս դրանց հարաբերության արժեքից հանելով քառակուսի արմատ կստանանք վեկտորի տարրերի միջին քառակուսայինը: Եթե զանգվածում չկան կենտ արժեք ունեցող տարրեր (l-0), ապա արտածվում է ‘NՕ’ հաղորդագրությունը: Խնդիրը կարելի է լուծել նան մեկ ցիկլի օգնությամբ: Սկիզբ Մուտք ո |-1,ո Մուտք x|
Տ-0 l-0 |-1,ո ոչ
{x|/2}-1 այո
Տ-Տ+x|2
l≠0
ոչ
այո
Տպել 5 l
l-l+1 Ավարտ Նկ. 4.3
ՔԲՕՇԲՃM ԷXՃM4/3:
ՇՕNՏT N-10:
ՄՃԲ X:ՃԲԲՃY[1..N]ՕԲ INTԷՇԷԲ:
‘NՕ’
I,Լ:INTԷՇԷԲ: Տ:ԲԷՃԼ:
8ԷՇIN
ԲՕԲ I:-1 TՕ N DՕ ԲԷՃD(X[I]):
Տ:-0:Լ:-0:
ԲՕԲ I:-1 TՕ N DՕ
IԲ X[I] MՕD 2-1 TԻԷN 8ԷՇIN Տ:-Տ+ՏՕԲ(X[I]): Լ:-Լ+1 ԷND:
IԲ ԼՀ»0 TԻԷN ՄԲITԷ(ՏՕԲT(Տ/l)) ԷԼՏԷ ՄԲITԷ(‘NՕ’)
ԷND.
Օրինակ 4.4. Կազմել բլոկ-սխեմա ն ծրագիր, որոնք կհաշվեն ն կտպեն ո հատ ամբողջ տիպի տարրեր պարունակող միաչափ զանգվածի այն տարրերի արտադրյալը, որոնք 7-ի բաժանելիս կմնա 3 մնացորդ: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.4.4-ում, իսկ ծրագիրն ունի ԷXՃM4/4 անունը: Սկիզբ Մուտք ո |-1,ո Մուտք x|
ք-1 |-1,ո ոչ
Տպել ք
{x|/7}-3 այո ք-քx|
Ավարտ
Նկ. 4.4
ՔԲՕՇԲՃM ԷXՃM4/4:
ՇՕNՏT N-10:
ՄՃԲ X:ՃԲԲՃY[1..N]ՕԲ INTԷՇԷԲ:
I:INTԷՇԷԲ: Ք:ԲԷՃԼ:
8ԷՇIN
ԲՕԲ I:-1 TՕ N DՕ ԲԷՃD(X[I]):
Ք:-1: ԲՕԲ I:-1 TՕ N DՕ
IԲ X[I] MՕD 7-3 TԻԷN Ք:-Ք"X[I]: ՄԲITԷ(Ք):
ԷND. Զանգվածի տարրերի ցիկլային ներմուծումից հետո կազմակերպվել է նոր ցիկլ, ուր հաշվվում է այն տարրերի արտադրյալը, որոնք 7-ի բաժանելիս կմնա 3 մնացորդ:
Օրինակ 4.5. Տրված են ո ամբողջ թիվը ն ո տարրեր պարունակող X ն Y միաչափ զանգվածները: Կազմել բլոկ-սխեմա ն ծրագիր, որոնք կհաշվեն ն կտպեն տրված զանգվածների տարրերի քառակուսայինների ընդհանուր գումարը: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.4.5-ում, իսկ ծրագիրն ունի ԷXՃM4/5 անունը: Սկիզբ Մուտք ո |-1,ո Մուտք x|,7|
Տ-0 |-1,ո Տ-Տ+x|2+7|2
Տպել Տ
Նկ. 4.5
Ավարտ
ՔԲՕՇԲՃM ԷXՃM4/5:
ՇՕNՏT N-10:
ՄՃԲ X,Y:ՃԲԲՃY[1..N] ՕԲ ԲԷՃԼ:
I:INTԷՇԷԲ: Տ:ԲԷՃԼ:
8ԷՇIN ԲՕԲ I:-1 TՕ N DՕ ԲԷՃD(X[I],Y[|]): Տ:-0: ԲՕԲ I:-1 TՕ N DՕ Տ:-Տ+ՏՕԲ(X[I])+ՏՕԲ(Y[I]):
ՄԲITԷ(Տ):
ԷND. Կազմակերպվել են երկու ցիկլեր, որոնցից առաջինում ներմուծվել են x ն 7 վեկտորների տարրերի արժեքները, իսկ երկրորդում հաշվվել է դրանց քառակուսիների ընդհանուր գումարը (Տ):
Օրինակ 4.6. Տրված են ո բնական թիվը ն ո տարր պարունակող X միաչափ զանգվածը: Կազմել բլոկ-սխեմա ու ծրագիր, որոնք կհաշվեն ն կտպեն զանգվածի առաջին մեծագույն տարրի արժեքը ն համարը: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.4.6-ում, իսկ ծրագիրն ունի ԷXՃM4/6 անունը: Մեծագույն տարրի համարը գտնելու համար ո8x փոփոխականին ցիկլից դուրս վերագրվել է զանգվածի առաջին տարրի արժեքը, իսկ մեծագույն տարրի համարը հիշվում է k փոփոխականի մեջ: Ցիկլի մարմնում ո8x-ը համեմատվում է զանգվածի մնացած բոլոր տարրերի արժեքների հետ: Եթե զանգվածի որնէ տարր մեծ է ո8x-ից, ապա ո8x-ին վերագրվում է այդ տարրի արժեքը, իսկ k-ին՝ նրա հերթական համարը: Քանի որ զանգվածում հնարավոր է լինեն մեկից ավելի մեծագույն, այսինքն` մեծագույն տարրին հավասար տարրեր, ապա առաջին մեծագույն տարրը գտնելու համար հերթական տարրը պետք է խիստ մեծ լինի ո8x փոփոխականից, իսկ վերջին մեծագույն տարրը գտնելիս` մեծ կամ հավասար: Այսպիսով, ցիկլի ավարտից հետո ո8x-ում պահված կլինի առաջին մեծագույն տարրը, իսկ k-ում նրա համարը:
Սկիզբ Մուտք ո |-1,ո Մուտք x|
Նկ. 4.6
ո8x-x1 k-1 |-2,ո ոչ
ո8x, k
x|»ո8xՆկ.4.6 այո
ո8x-x|
Ավարտ
k-|
ՔԲՕՇԲՃM ԷXՃM4/6:
ՇՕNՏT N-10:
ՄՃԲ X:ՃԲԲՃY[1..N] ՕԲ ԲԷՃԼ:
I,k:INTԷՇԷԲ: MՃX:ԲԷՃԼ:
8ԷՇIN
ԲՕԲ I:-1 TՕ N DՕ ԲԷՃD(X[I]):
MՃX:-X[1]: K:-1:
ԲՕԲ I:-2 TՕ N DՕ
IԲ X[I]»MՃX TԻԷN 8ԷՇIN MՃX:-X[I]: K:-I ԷND:
ՄԲITԷ(MՃX,K)
ԷND. Օրինակ 4.7. Տրված են ո բնական թիվը ն ո տարր պարունակող X միաչափ զանգվածը: Կազմել բլոկ-սխեմա ու ծրագիր, որոնք տրված զանգվածի կենտ արժեք ունեցող տարրերից կստանան նոր զանգված: Ենթադրվում է, որ զանգվածում կան այդպիսի տարրեր:
Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.4.7-ում, իսկ ծրագիրն ունի ԷXՃM4/7 անունը: Սկիզբ Մուտք ո |-1,ո Մուտք x|
Տ-0 |-1,ո ոչ
Ավարտ
x|ոօd 2-1 այո
)-)+1 7)-x| 7) Նկ.4.7
ՔԲՕՇԲՃM ԷXՃM4/7:
ՇՕNՏT N-10:
ՄՃԲ X,Y:ՃԲԲՃY[1..N]ՕԲ ԲԷՃԼ:
I,Ս:INTԷՇԷԲ:
8ԷՇIN
ԲՕԲ I:-1 TՕ N DՕ ԲԷՃD(X[I]):
Ս:-0:
ԲՕԲ I:-1 TՕ N DՕ
IԲ X[I] MՕD 2-1 TԻԷN
8ԷՇIN Ս:-Ս+1: Y[Ս]:-X[I]: ՄԲITԷ(Y[Ս]) ԷND ԷND. Ստացվող 7 զանգվածը կարող է ունենալ մինչն ո տարրեր: Նոր զանգվածի տարրերի ինդեքսները պահելու համար ծրագրում օգտագործվել է ) փոփոխականը, որը ցիկլից դուրս ընդունում է 0 արժեք: Կազմակերպվել է ցիկլ, ուր ստացվում ն արտածվում են 7 զանգվածի տարրերը: Եթե x զանգվածի հերթական տարրն ունի կենտ արժեք, ապա ) փոփոխականը մեծանում է մեկով, ն 7 զանգվածի )-րդ տարրին վերագրվում է x զանգվածի հերթական տարրի արժեքը:
4.3. Տնային առաջադրանքներ Տնային առաջադրանքում ուսանողը պետք է կատարի աղյուսակի դասամատյանի` իր համարին համապատասխան տողում նշված խնդիրները` [2] խնդիրների ժողովածուից (Աղգաշյան Ռ., Առաքելյան Ա., Ավետիսյան Ս., Դանիելյան Ս. Քոմփյութերների կիրառում ն ծրագրավորում / խնդիրների ժողովածու / : ՀՊՕՀ, 1998թ.): Մատյանի համարը Առաջադրվող խնդիրների համարները
1, 17, 21, 43, 54, 63, 73 2, 14, 24, 44, 51, 65, 71 3, 18, 27, 46, 56, 66, 74 4, 20, 25, 41, 58, 61, 80 5, 11, 28, 48, 57, 67, 72 6, 19, 23, 49, 55, 68, 79 7, 16, 30, 47, 59, 69, 75 8, 12, 29, 42, 53, 70, 78 9, 15, 26, 45, 60, 64, 77 10, 13, 22, 50, 52, 62, 76 10, 14, 22, 42, 51, 61, 73 9, 13, 25, 44, 52, 62, 74 8, 12, 23, 46, 53, 63, 76 7, 11, 26, 48, 54, 64, 77 6, 15, 30, 50, 55, 65, 71 5, 16, 29, 49, 56, 66, 79 4, 19, 21, 45, 57, 67, 80 3, 20, 24, 47, 58, 68, 72 2, 18, 27, 41, 59, 69, 78 1, 17, 28, 43, 60, 70, 75 1, 14, 23, 34, 59, 61, 72 2, 16, 24, 32, 60, 63, 73 3, 15, 27, 36, 58, 64, 75 4, 17, 28, 37, 57, 65, 78 5, 11, 21, 39, 56, 68, 76 6, 18, 29, 40, 55, 69, 71 7, 19, 30, 33, 54, 70, 77 8, 20, 26, 38, 53, 67, 79 9, 13, 22, 35, 52, 66, 74 10, 12, 25, 31, 51, 62, 80
5. ԵՆԹԱԾՐԱԳՐԵՐ
5.1. Հիմնական հասկացություններ Որնէ խնդրի լուծման ալգորիթմը մշակելիս լինում են իրավիճակներ, երբ մուտքային արժեքների տարբեր հավաքածուների համար օպերատորների որոշակի բլոկ կրկնվում է մի քանի անգամ: Որպեսզի այդպիսի բլոկը ծրագրում մի քանի անգամ չգրվի, այն կարելի է մեկ անգան ձնակերպել ն, անհրաժեշտության դեպքում, նրան դիմել աշխատանքից հետո ապահովելով վերադարձ դիմումի կետին: Նման անցումների կազմակերպման համար օգտագործվում են ենթածրագիր կառուցվածքները: Բարդ ն մեծածավալ ծրագրերը միանգամից ամբողջությամբ կազմելը, ստուգելը ն կարգաբերելը դժվար է: Այդպիսի ծրագրերի բաժանումը առանձին ինքնուրույն ծրագրային բլոկների՝ ենթածրագրերի հնարավորություն է տալիս հեշտությամբ կազմել ն կարգաբերել առանձին բլոկներ, որից հետո դրանք միավորել մեկ ընդհանուր ծրագրում: Մեկ անգամ արդեն կազմված ենթածրագրերը կարող են հաջողությամբ կիրառվել տարբեր խնդիրների ծրագրեր կազմելիս՝ որպես դրանց բաղադրիչ մասեր: Յուրաքանչյուր ենթածրագիր պետք է նախօրոք նկարագրված (ներկայացված) լինի փոփոխականների հայտարարումից անմիջապես հետո՝ մինչն հիմնական ծրագրի մարմնի սկիզբը: Կիրառվում են երկու տիպի ենթածրագրեր՝ - ենթածրագիր - պրոցեդուրա (ՔԲՕՇԷDՍԲԷ), - ենթածրագիր - ֆունկցիա (ԲՍNՇTIՕN): ՊԱՍԿԱԼ - ծրագրի կառուցվածքային սխեման ընդհանուր դեպքում կարելի է ներկայացնել հետնյալ կերպ. ՔԲՕՇԲՃM Հանուն»: ԼՃ8ԷԼ . . . . . . . . . . : ՇՕNՏT . . . . . . . . . : TYՔԷ . . . . . . . . . . . : ՄՃԲ . . . . . . . . . . . . :
ԵՆԹԱԾՐԱԳԻՐ 1:
ԵՆԹԱԾՐԱԳԻՐ 2:
ԵՆԹԱԾՐԱԳԻՐ N:
8ԷՇIN ԷND. Ինչպես հիմնական ծրագիրը, այնպես էլ ֆունկցիաները ն պրոցեդուրաները, ձնակերպվում են որոշակի կանոններով, որոնք դիտարկվում են ստորն:
Պրոցեդուրան ենթածրագիր է, որն իր աշխատանքի արդյունքում կարող է ստանալ ն փոխանցել արժեքների հավաքածու: Այն ունի հետնյալ կառուցվածքը. Հպրոցեդուրայի վերնագիր»: Հպրոցեդուրայի նկարագրությունների բաժին»: Հպրոցեդուրայի մարմին»: Պրոցեդուրայի վերնագիրն ունի հետնյալ տեսքը.. ՔԲՕՇԷDՍԲԷ N(ք1:t1: ք2:t2: ... : քո:tո: ՄՃԲ քո+1:tո+1: ... : քո:tո): որտեղ N- պրոցեդուրայի անունն է (ցանկացած թույլատրելի իդենտիֆիկատոր), ք1, ք2, ... , քո - ֆորմալ պարամետրեր են, t1, t2, ... , tո – համապատասխանաբար ֆորմալ պարամետրերի տիպերը: Պրոցեդուրայի վերնագրում հայտարարված բոլոր պարամետրերը ֆորմալ (ձնական) բնույթ են կրում: Պրոցեդուրայի կատարման ժամանակ նրանցից յուրաքանչյուրը փոխարինվում է պրոցեդուրայի կանչման օպերատորում նշված որոշակի (փաստացի) պարամետրով: Պրոցեդուրայի վերնագրում օգտագործված պարամետրերը կոչվում են
ձնական պարամետրեր: Ֆորմալ պարամետրերի ցուցակում հայտարարվում են պրոցեդուրային փոխանցվող (մուտքային) ն պրոցեդուրայից փոխանցվող (ելքային) պարամետրերը: Պրոցեդուրայի վերնագրի ընդհանուր տեսքից երնում է, որ ֆորմալ պարամետրերի մի մասը (ք1, ք2, . . . , քո) գրված է ՄՃԲ բաժնից դուրս, իսկ մյուս մասը (քո+1, . . . , քո)՝ ՄՃԲ բաժնում: ՄՃԲ բաժնից դուրս գրված պարամետրերը մուտքային պարամետրերն են, իսկ ՄՃԲ բաժնում գրված պարամետրերը՝ ելքային: Բերենք պրոցեդուրայի վերնագրի օրինակ`
ՔԲՕՇԷDՍԲԷ ՏՃ(Ճ:ԲԷՃԼ: 8:ԲԷՃԼ: Շ:INTԷՇԷԲ: ՄՃԲ
X:ԲԷՃԼ: ՄՃԲ Y:ԲԷՃԼ):
Եթե ենթածրագրի ֆորմալ պարամետրերի ցուցակում կան նույն տիպի մի քանի պարամետրեր, ապա դրանք կարելի է միավորել նույն խմբի մեջ՝ իրարից անջատելով ստորակետերով, իսկ հետո նշելով ընդհանուր տիպը: Օրինակ.
ՔԲՕՇԷDՍԲԷ ՏՃ(Ճ,8:ԲԷՃԼ: Շ:INTԷՇԷԲ: ՄՃԲ X,Y:ԲԷՃԼ):
Այս օրինակում Ճ, 8, X ն Y պարամետրերը իրական տիպի են, իսկ Շ պարամետրը` ամբողջ տիպի: Ճ, 8, Շ պարամետրերը մուտքային են, իսկ X ն Y պարամետրերը՝ ելքային: Պրոցեդուրայի նկարագրությունների բաժինը կարող է պարունակել ԼՃ8ԷԼ, ՇՕNՏT, TYՔԷ, ՄՃԲ բաժինները: Պրոցեդուրայի մարմինը բանալի-բառերի մեջ գրված օպերատորների հաջորդականությունն է, որը տեղադրված է պրոցեդուրայի նկարագրությունների բաժնից հետո:
Օրինակ 5.1: Տրված կողմերով եռանկյան մակերեսի հաշվումը ձնակերպել պրոցեդուրայով:
ՔԲՕՇԷDՍԲԷ MՃՇ(X,Y,2:ԲԷՃԼ:ՄՃԲ ՏՏ:ԲԷՃԼ):
ՄՃԲ Ք:ԲԷՃԼ:
8ԷՇIN Ք:-(X+Y+2)/2:
ՏՏ:-ՏՕԲT(Ք"(Ք-X)"(Ք-Y)"(Ք-2)) ԷND:
Տող 1-ում գրված է պրոցեդուրայի վերնագիրը` MՃՇ անվամբ: Պրոցեդուրան ունի չորս իրական տիպի ֆորմալ պարամետրեր, որոնցից երեքը (X, Y, 2) մուտքային պարամետրեր են (եռանկյան կողմերի մեծությունները), իսկ մեկը (ՏՏ) ելքային (եռանկյան մակերեսի արժեքը): Վերնագրին հաջորդում է պրոցեդուրայի նկարագրությունների բաժինը, որը պարունակում է միայն փոփոխականների նկարագրման ՄՃԲ բաժինը: Բաժնում նկարագրված է եռանկյան կիսապարագծի համար նախատեսված իրական տիպի Ք փոփոխականը (տող 2): Տողեր 3-6-ը կազմում են պրոցեդուրայի մարմինը, որտեղ հաշվվել են X, Y ն 2 կողմերով եռանկյան Ք կիսապարագիծը (տող 4) ն ՏՏ մակերեսը (տող 5): Պրոցեդուրայի կանչի համար անհրաժեշտ է գրել կանչի օպերատոր, որը բաղկացած է պրոցեդուրայի անունից ն փակագծերում գրված փաստացի պարամետրերից: Օրինակ. ՃՏՃ(M,N,Է,Բ,K,Մ): Փաստացի ն ֆորմալ պարամետրերը պետք է բավարարեն հետնյալ պահանջներին. • լինեն նույն քանակությամբ, • տեղերով իրար համապատասխանող պարամետրերը լինեն նույն տիպի: Ֆունկցիայի կատարման արդյունքում կարող է ստացվել մեկ արժեքից ոչ ավելի: Ստացված արժեքը ֆունկցիան վերադարձնում է իր անվան միջոցով: Դա ֆունկցիայի ն պրոցեդուրայի միջն եղած ամենաէական տարբերությունն է: Հաջորդ տարբերությունը վերնագրի մեջ է: Ֆունկցիայի վերնագիրը բաղկացած է ԲՍNՇTIՕN հատուկ բառից, որին հաջորդում են ֆունկցիայի անունը ն փակագծերի մեջ նկարագրված ֆորմալ պարամետրերը: Վերնագիրն ավարտվում է ֆունկցիայի անվան նկարագրությամբ: Ֆունկցիայի վերնագիրն ունի հետնյալ տեսքը..
ԲՍNՇTIՕN N(ք1:t1: ք2:t2: ... : քո:tո):t: որտեղ N- պրոցեդուրայի անունն է (ցանկացած թույլատրելի իդենտիֆիկատոր), ք1, ք2, ... , քո - ֆորմալ պարամետրեր են, t1, t2, ... , tո – համապատասխանաբար ֆորմալ պարամետրերի տիպերը, t - ֆունկցիայի հաշված արժեքի տիպը: Օրինակ.
ԲՍNՇTIՕN ՏՍM(X,Y,2:ԲԷՃԼ):ԲԷՃԼ:
Այստեղ ՏՍM-ը ֆունկցիայի անունն է, որը նկարագրված է որպես իրական տիպի փոփոխական: X, Y ն 2 փոփոխականները իրական տիպի ֆորմալ պարամետրեր են: Ինչպես ն պրոցեդուրան, ֆունկցիայի նկարագրությունների բաժինը նս կարող է պարունակել ԼՃ8ԷԼ, ՇՕNՏT, TYՔԷ, ՄՃԲ բաժինները: Ֆունկցիայի նկարագրությունների բաժնին հաջորդում է ֆունկցիայի մարմինը: Քանի որ ֆունկցիան ստացված արժեքը վերադարձնում է իր անվան միջոցով, ֆունկցիայում հաշվարկված վերջնական արդյունքը անհրաժեշտ է վերագրել ֆունկցիայի անվանը: Հետնաբար ֆունկցիայի անունը պետք է ունենա նույն տիպը, ինչ վերջնական արդյունքը:
Օրինակ 5.2: Կազմել ֆունկցիա, որը կհաշվի տրված X, Y ն 2 կողմերով եռանկյան մակերեսը:
ԲՍNՇTIՕN MՃՇ(X,Y,2:ԲԷՃԼ):ԲԷՃԼ:
ՄՃԲ Ք:ԲԷՃԼ:
8ԷՇIN Ք:-(X+Y+2)/2: MՃՇ:-ՏՕԲT(Ք"(Ք-X)"(Ք-Y)"(Ք-2)) ԷND:
Տող 1-ում գրվել է ֆունկցիայի վերնագիրը: Ֆունկցիան ունի MՃՇ անունը, որը իրական տիպի փոփոխական է: Ֆունկցիայում նկարագրված են երեք իրական տիպի ֆորմալ պարամետրեր (X, Y, 2): Վերնագրին հաջորդում է ֆունկցիայի նկարագրությունների բաժինը, որը պարունակում է միայն փոփոխականների նկարագրման ՄՃԲ բաժինը: Այստեղ նկարագրված է եռանկյան կիսապարագծի համար նախատեսված իրական տիպի Ք փոփոխականը (տող 2): Տողեր 3-6-ը կազմում են ֆունկցիայի մարմինը, որտեղ հաշվվել են X, Y ն 2 կողմերով եռանկյան Ք կիսապարագիծը (տող 4) ն մակերեսը (տող 5): Հաշվված մակերեսի արժեքը վերագրվել է ֆունկցիայի MՃՇ անվանը: Ֆունկցիայի կանչի համար անհրաժեշտ արտահայտությունում նշել ֆունկցիայի անունը՝ պարամետրերով: Օրինակ.
է իր
ցանկացած փաստացի
Y:-MՃՇ(4,4,4): Այստեղ Y փոփոխականին կվերագրվի 4 երկարությամբ հավասարակողմ եռանկյան մակերեսը, որի արժեքը կհաշվի MՃՇ անունով ֆունկցիան: Ենթածրագրերի կազմակերպման համար օգտագործվում են երկու տիպի պարամետրեր. պարամետր-արժեքներ ն պարամետրփոփոխականներ: Պարամետր-արժեքները այն պարամետրերն են, որոնք փոխանցվում են ենթածրագրին`որպես մուտքային մեծություններ: Ենթածրագրի կանչման մասից ենթածրագրին են փոխանցվում պարամետր-արժեքների պատճենները (սրանց հետ է փաստորեն աշխատում ենթածրագիրը), հետնաբար այս կերպ փոխանցված փաստացի պարամետրի արժեքը ենթածրագրի կողմից փոխվել չի կարող: Ֆունկցիայում հայտարարված բոլոր ֆորմալ պարամետրերը պարամետր-արժեքներ են: Պրոցեդուրայում պարամետր-արժեքները այն պարամետրերն են, որոնք պրոցեդուրայի վերնագրում գրված են ՄՃԲ բաժնից դուրս: Պարամետր փոփոխականները սահմանվում են միայն պրոցեդուրաների համար: Պարամետր-փոփոխականները այն պարամետրերն են, որոնց միջոցով պրոցեդուրայից դուրս արժեք է փոխանցվում: Այս դեպքում հնարավոր է, որ փաստացի պարամետրերը պրոցեդուրայում ենթարկվեն փոփոխության: Պրոցեդուրայի կանչման
մասից նրանց են փոխանցվում պարամետր-փոփոխականների հասցեները, հետնաբար ենթածրագիրը հնարավորություն ունի փոփոխելու այդ հասցեների պարունակությունը: Վերը բերված MՃՇԷԲԷՏ1 ն MՃՇԷԲԷՏ2 ծրագրերում X, Y ն 2 պարամետրերը պարամետր-արժեքներ են, իսկ MՃՇԷԲԷՏ21 ծրագրի MՃՇ անունով պրոցեդուրայում գրված ՏՏ պարամետրը՝ պարամետրփոփոխական: ՄՃԲ բառի ազդեցության տիրույթը տարածվում է մինչն մոտակա կետ ստորակոտը ( :), այսինքն` միայն մեկ խմբի սահմաններում: Օրինակ.
ՔԲՕՇԷDՍԲԷ ՃՏՃ( ՄՃԲ Ճ,8:ԲԷՃԼ: Շ,D:INTԷՇԷԲ):
Այստեղ Ճ ն 8 պարամետրերը պարամետր-փոփոխականներ են, իսկ Շ ն D պարամետրերը՝ պարամետր-արժեքներ: Եթե անհրաժեշտ է տարբեր տիպեր ունեցող պարամետրերը հայտարարել որպես պարամետր փոփոխական, ապա ամեն մի խմբի նկարագրությունից առաջ անհրաժեշտ է գրել ՄՃԲ բանալի բառը: Օրինակ.
ՔԲՕՇԷDՍԲԷ ՃՏՃ( ՄՃԲ Ճ,8:ԲԷՃԼ:ՄՃԲ Շ,D:INTԷՇԷԲ):
Այս դեպքում բոլոր պարամետրերը պարամետր-փոփոխականներ են: Ֆորմալ պարամետրերի ցուցակում հայտարարված կամայական պարամետրի տիպը կարող է լինել միայն ստանդարտ կամ նախապես հայտարարված տիպ: Օրինակ.
ՔԲՕՇԷDՍԲԷ ՃՏ(X:ՃԲԲՃY[1..10] ՕԲ ԲԷՃԼ):
պրոցեդուրայի վերնագիրը գրված է սխալ, քանի որ ֆորմալ պարամետրերի ցուցակում X պարամետրը հայտարարվել է որպես զանգված, որը ստանդարտ տիպ չէ: Այդպիսի դեպքերում անհրաժեշտ է նախապես նկարագրել ոչ ստանդարտ տիպը, ինչպես օրինակ, TYՔԷ
ՄԷՇ-ՃԲԲՃY[1..10]ՕԲ ԲԷՃԼ:
ՔԲՕՇԷDՍԲԷ ՃՏ(X:ՄԷՇ):
Այն փոփոխականները, որոնց նկարագրությունը կատարված է ենթածրագրերի նկարագրությունների բաժնում, կարող են կիրառվել (գործել) միայն այդ ենթածրագրերի ներսում: Այսպիսի փոփոխականները կոչվում են լոկալ (տեղային նշանակության) փոփոխականներ: Գլոբալ (ընդհանուր նշանակության) փոփոխականների նկարագրությունը կատարվում է հիմնական ծրագրի փոփոխականների նկարագրությունների բաժնում: Այդ փոփոխականները կարող են օգտագործվել ինչպես հիմնական ծրագրում, այնպես էլ ենթածրագրում: Հնարավոր է, որ գլոբալ ն լոկալ փոփոխականները նշանակված լինեն միննույն իդենտիֆիկատորներով: Այսպես, ենթադրենք, որ վերը բերված MՃՇԷԲԷՏ1 ծրագրի 2-րդ տողում Տ փոփոխականի փոխարեն կիրառված է Ք:ԲԷՃԼ գլոբալ փոփոխականը: Այդ դեպքում, պրոցեդուրայի ներսում գործում է իր մեջ հայտարարված Ք լոկալ փոփոխականը: Այսպիսով, յուրաքանչյուր իդենտիֆիկատոր լոկալացվում է այն ծրագրային միավորի սահմաններում, որում այն հայտարարված է: Դա հնարավորություն է տալիս առանձին ծրագրավորողներին ինքնուրույն կազմել իրենց պրոցեդուրաները ն վերջում դրանք միավորել մեկ ծրագրի մեջ՝ առանց մտահոգվելու իդենտիֆիկատորների համընկման մասին:
5.2. Ենթածրագրերի կիրառման օրինակներ Օրինակ 5.3: Տրված են 8, Ե ն Շ փոփոխականների արժեքները: Կազմել բլոկ-սխեմա ն ծրագիր, որոնք կհաշվեն ն կտպեն 7-ո8x(8,8Ե,Շ)+ո8x(2Ե,8,Շ-8)-ո8x(Շ,Շ+8,Շ+Ե) արտահայտության արժեքը: Մեծագույն արժեքների հաշվումը կազմակերպել ֆունկցիայի միջոցով: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.5.1-ում, իսկ ծրագիրն ունի ԷXՃM5/1 անունը:
Սկիզբ
MՃX(x,7,2)
8,Ե,Շ
x»7
ո-x
Տ1-MՃX(8,8Ե,Շ) ո-7 Տ2-MՃX(2Ե,8,Շ-8) Տ3-MՃX(Շ,Շ+8,Շ+Ե
2»ո
ո-2
7-Տ1+Տ2-Տ3 ո8x-ո
8,Ե,Շ
Ելք
Ավարտ Նկ.5.1
ՔԲՕՇԲՃM ԷXՃM5/1:
ՄՃԲ Ճ,8,Տ1,Տ2,Y:ԲԷՃԼ:
ԲՍNՇTIՕN MՃX(X,Y,2:ԲԷՃԼ):ԲԷՃԼ:
ՄՃԲ M:ԲԷՃԼ:
8ԷՇIN
IԲ X»Y TԻԷN M:-X ԷԼՏԷ M:-Y:
IԲ 2»M TԻԷN M:-2: MՃX:-M ԷND: 8ԷՇIN ԲԷՃD(Ճ,8,Շ): Տ1:-MՃX(Ճ,Ճ"8,Շ): Տ2:-MՃX(2"8,Ճ,Շ-Ճ): Տ3:-MՃX(Շ,Շ+Ճ,Շ+8): Y:-Տ1+Տ2-Տ3: ՄԲITԷ('Y-',Y:6:2) ԷND.
ՄՈՒՏՔ՝ Ճ-3
8-5 Շ-2
ԵԼՔ՝
Y-18
Ծրագրում կազմակերպել է MՃX անունով իրական տիպի ֆունկցիա (տողեր 3-9), որն ունի x, 7, 2 իրական տիպի 3 ֆորմալ
պարամետրեր: Ֆունկցիան x, 7, 2 պարամետրերից գտնում է մեծը (M, տողեր 6-7) ն քանի որ ֆունկցիան հիմնական ծրագրին իր միակ ելքային պարամետրը հիմնական ծրագրին է փոխանցում իր անվան միջոցով, ապա տող 8-ում երեք թվերից մեծագույնի արժեքը (M) վերագրվում է ֆունկցիայի MՃX անվանը: Ֆունկցիայի կանչման համար տողեր 12-14ում գրվել է ֆունկցիայի անունը, փակագծերում նշելով փաստացի պարամետրերը՝ (Ճ,Ճ"8,Շ ն 2"8,Ճ,Շ-Ճ ն Շ,Շ+Ճ,Շ+8):
Օրինակ 5.4: Տրված են ո բնական թիվը ն ո հատ իրական տարրեր պարունակող X վեկտորը: Կազմել բլոկ–սխեմա ն ծրագիր, որոնք կհաշվեն ն կարտածեն տրված վեկտորի դրական տարրերի արտադրյալը: Տարրերի արտադրյալի հաշվումը կազմակերպել ֆունկցիայի միջոցով, իսկ տրված վեկտորի տարրերի ներմուծումը` պրոցեդուրայի: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.5.2-ում, իսկ ծրագիրն ունի ԷXՃM5/2 անունը:
Սկիզբ ո MՍTՕ(ո,x) ք-ՃԲT(ո,x) ք Ավարտ
ՃԲT(ո2,x2)
MՍTՕ(ո1,x1) |-1,ո1
ք-1
x1|
|-1,ո2 ոչ
x2|»0 այո
Ելք
ք-ք"x2| Նկ.5.2
ՃԲT-ք Ելք
ՔԲՕՇԲՃM ԷXՃM5/2:
TYՔԷ ՄԷՇ-ՃԲԲՃY[1..10] ՕԲ ԲԷՃԼ:
ՄՃԲ X:ՄԷՇ:N:INTԷՇԷԲ:Ք:ԲԷՃԼ:
ՔԲՕՇԷDՍԲԷ MՍTՕ(N1:INTԷՇԷԲ:ՄՃԲ X1:ՄԷՇ):
ՄՃԲ I:INTԷՇԷԲ:
8ԷՇIN
ԲՕԲ I:-1 TՕ N1 DՕ ԲԷՃD(X1[I])
ԷND:
ԲՍNՇTIՕN ՃԲT(N2:INTԷՇԷԲ:X2:ՄԷՇ):ԲԷՃԼ:
ՄՃԲ Ք:ԲԷՃԼ: I:INTԷՇԷԲ:
8ԷՇIN Ք:-1:
ԲՕԲ I:-1 TՕ N2 DՕ
IԲ X2[I]»0 TԻԷN Ք:-Ք"X2[I]: ՃԲT:-Ք ԷND: 8ԷՇIN
ԲԷՃD(N):
MՍTՕ(N,X):
Ք:-ՃԲT(N,X):
ՄԲITԷ(Ք)
ԷND. ՄՈՒՏՔ՝ ո-10 -2, 5, 2, -6, 0, -7, 3, 2, -8, 3
ԵԼՔ՝ 180
Հիմանական ծրագրի սկզբում ներմուծվում են ո բնական թիվը (տող 18): Տող 19-ում դիմում է արվել MՍTՕ անունով պրոցեդուրային՝ նրան փոխանցելով X վեկտորի տարրերի քանակը: Պրոցեդուրայում ներմուծվում են X1 վեկտորի տարրերի արժեքները (տող 7), որոնք փոխանցվում են հիմնական ծրագրում նկարագրված X վեկտորին: Այնուհետն տող 20-ում դիմում է արվել ՃԲT անունով ֆունկցիային, նրան փոխանցելով վեկտորի տարրերի քանակը ն վեկտորի տարրերի արժեքները: Ֆունկցիայում հաշվվում է զանգվածի դրական տարրերի արտադրյալը (տողեր 12-14): Քանի որ ֆունկցիան հաշվված արտադրյալի արժեքը հիմնական ծրագրին է փոխանցում իր անվան միջոցով, այդ պատճառով ֆունկցիայի անվանը վերագրվել է արտադրյալի արժեքը (տող 15): Քանի որ պրոցեդուրայի ֆորմալ պարամետրերի ցուցակում որպես պարամետր-արժեք հանդես է գալիս X զանգվածը, դրա համար նախապես ստեղծվել է նոր ՄԷՇ տիպը: Պրոցեդուրայի ն ֆունկցիայի վերնագրերում ֆորմալ պարամետրերի ցուցակում X1 ն X2 պարամետրերը նկարագրվել են որպես ՄԷՇ տիպի: Հիմնական ծրագրի փոփոխականների նկարագրման բաժնում X վեկտորը նույնպես նկարագրվել են որպես ՄԷՇ տիպի փոփոխականներ: Օրինակ 5.5: Տրված են ո ն ո բնական թվերը ն Ճոxո իրական տարրերով մատրիցը: Կազմել բլոկ-սխեմա ն ծրագիր, որոնք կստանան Y վեկտորը, որի 7|-րդ տարրը հավասար է մատրիցի |-րդ տողի բացասական տարրերի գումարին: Յուրաքանչյուր տողի բացասական տարրերի գումարի հաշվումը կազմակերպել ֆունկցիայի միջոցով: Խնդրի լուծման բլոկ-սխեման պատկերված է նկ.5.3-ում, իսկ ծրագիրն ունի ԷXՃM5/3 անունը:
Սկիզբ ո,ո
ՇՍM(k,2)
|-1,ո )-1,ո
Տ-0
x|)
|-1,k ոչ
|-1,ո
2|Հ0 այ ո
Տ-Տ+ 2|
)-1,ո Շ)-x|)
ՇՍM-Տ 7|-ՇՍM(ո,
Ելք
7|
Ավարտ Նկ.5.3
ՔԲՕՇԲՃM ԷXՃM5/3:
TYՔԷ MՃT-ՃԲԲՃY[1..20,1..20] ՕԲ ԲԷՃԼ:
ՄԷՇ-ՃԲԲՃY[1..20] ՕԲ ԲԷՃԼ:
ՄՃԲ Ճ:MՃT: 8,Շ:ՄԷՇ: I,Ս,M,N:INTԷՇԷԲ:
ԲՍNՇTIՕN ՏՍM(K:INTԷՇԷԲ: 2:ՄԷՇ):ԲԷՃԼ:
ՄՃԲ I:INTԷՇԷԲ:Տ:ԲԷՃԼ:
8ԷՇIN Տ:-0:
ԲՕԲ I:-1 TՕ K DՕ
IԲ 2[I]Հ0 TԻԷN Տ:-Տ+X[I]: ՏՍM:-Տ ԷND: 8ԷՇIN
ԲԷՃD(M,N):
ԲՕԲ I:-1 TՕ M DՕ
ԲՕԲ Ս:-1 TՕ N DՕ ԲԷՃD(X[I,Ս]):
ԲՕԲ I:-1 TՕ M DՕ
8ԷՇIN ԲՕԲ Ս:-1 TՕ N DՕ Շ[)]:-Ճ[I,Ս]: Y[I]:-ՏՍM(N,Շ): ՄԲITԷԼN(Y[I]:6:2) ԷND. ԷND.
ՄՈՒՏՔ՝ ո-3 ո-4
2 –4 0 -3 -6 3 1 -3 2 4 0 -2
ԵԼՔ՝ -7.00 -9.00 -2.00
Մատրիցի չափի ն տարրերի ներմուծումից հետո (տողեր 14-16), բացվել է I պարամետրով ցիկլ, ուր նախ I-րդ տողի տարրերը պահվում են Շ վեկտորի մեջ (տող 19), որից հետո տող 2-ում դիմում է արվել ՏՍM անունով ֆունկցիային, նրան փոխանցելով մատրիցի տողում տարրերի N քանակը ն Շ վեկտորի տարրերը: Ինչպես նախորդ օրինակում, այստեղ նույնպես ստեղծվել է նոր ՄԷՇ տիպ, որպեսզի ֆունկցիայի վերնագրում X պարամետր-արժեքը, որը ներկայացնում է վեկտոր, հայտարարվի որպես այդ տիպի: Ֆունկցիան հաշվում է իրեն փոխանցված վեկտորի (մատրիցի |-րդ տողի) դրական տարրերի գումարը ն իր ՏՍM անվան միջոցով փոխանցում հիմնական ծրագրին: Հիմնական ծրագրի տող 20-ում I-րդ տողի տարրերի գումարը վերագրվում է Y վեկտորի I-րդ տարրին: Քանի
որ I պարամետրով ցիկլի մարմինը պարունակում է մեկից ավելի օպերատորներ, ապա այդ օպերատորները վերցվել են 8ԷՇIN ն ԷND հատուկ բառերի միջն, այսինքն այդ օպերատորներից ստեղծվել է մեկ բաղադրյալ օպերատոր: Ֆունկցիայում օգտագործվող Տ ն I փոփոխականները նկարագրված են ֆունկցիայում ն լոկալ փոփոխականներ են, իսկ պրոցեդուրայի համար լոկալ փոփոխական է միայն I փոփոխականը:
5.3. Տնային առաջադրանքներ Տնային առաջադրանքում ուսանողը պետք է կատարի աղյուսակի դասամատյանի` իր համարին համապատասխան տողում նշված խնդիրները` [2] խնդիրների ժողովածուից (Աղգաշյան Ռ., Առաքելյան Ա., Ավետիսյան Ս., Դանիելյան Ս. Քոմփյութերների կիրառում ն ծրագրավորում / խնդիրների ժողովածու / : ՀՊՕՀ, 1998թ.): Մատյանի համարը
Առաջադրվող խնդիրների համարները
461, 472, 481, 491, 501 462, 476, 482, 498, 504 463, 479, 483, 492, 506 464, 474, 484, 495, 503 465, 480, 485, 496, 508 466, 473, 486, 500, 507 467, 478, 487, 499, 502 468, 477, 488, 498, 504 469, 475, 489, 495, 505 470, 471, 490, 491, 509 463, 471, 485, 500, 503 466, 472, 483, 494, 510 469, 473, 481, 491, 509 464, 474, 488, 494, 510 468, 475, 490, 497, 501 470, 476, 484, 497, 505 462, 477, 487, 499, 507 467, 478, 489, 496, 502 465, 479, 486, 495, 510 461, 480, 482, 493, 506 463, 471, 490, 494, 502 466, 474, 489, 500, 510 469, 473, 488, 497, 505 464, 476, 487, 493, 507 468, 478, 486, 496, 508 470, 479, 485, 498, 501 462, 480, 484, 492, 509 467, 475, 483, 499, 504 465, 477, 482, 493, 506 461, 472, 481, 492, 503
6. «Տող» տիպի փոփոխականներ 6.1. Հիմնական հասկացություններ ՏՈՒՐԲՈ ՊԱՍԿԱԼ-ի տարբերակներում սիմվոլային տողերի (այսինքն սիմվոլների հաջորդականության) մշակման համար մտցված է հատուկ՝ ՏTԲINՇ («տող») տիպը, որը հեշտացնում է նկարագրումները ն գործողությունների արտահայտությունները: ՏTԲINՇ տիպը ՏՈՒՐԲՈ ՊԱՍԿԱԼ-ում լայնորեն կիրառվում է տեքստային ինֆորմացիայի մշակման ժամանակ: Տողը ներկայացվում է ապաթարցերի մեջ վերցված սիմվոլների հաջորդականության տեսքով: Օրինակ. Տ:-‘Ճ84 5»+».6)8’ : Փոփոխականների նկարագրման բաժնում ՏTԲINՇ տիպի փոփոխականների հայտարարման համար անհրաժեշտ է գրել փոփոխականների անունները, ՏTԲINՇ հատուկ բառը ն քառակուսի փակագծերում նշել տողի սիմվոլների հնարավոր մեծագույն քանակը (տողի երկարությունը). Հփոփոխականների ցուցակ»:ՏTԲINՇ[Հտողի երկարություն»]: Եթե նշված չէ տողի երկարությունը, ապա այն ընդունվում է հավասար 255-ի, որը տողի հնարավոր մեծագույն չափն է: Օրինակ. ՄՃԲ
X:ՏTԲINՇ:
Y:ՏTԲINՇ[15]: 2:ՏTԲINՇ[255]:
- կարող է պարունակել մինչն 255 սիմվոլ, - կարող է պարունակել մինչն 15 սիմվոլ, - կարող է պարունակել մինչն 255 սիմվոլ:
Տողի երկարության հետ կարելի է կատարել անրաժեշտ գործողություններ ն փոխել տողի երկարությունը, օրինակ տողից հեռացնել կամ ավելացնել որոշակի սիմվոլներ: Բոլոր դեպքերում տողի պայմանանշանների քանակը չի կարող գերազանցել տողի նկարագրման ժամանակ նշված N քանակը: Եթե տողի սիմվոլների քանակը ստացվում է ավելի մեծ քան N-ը, ապա վերջին ավելորդ սիմվոլներն անտեսվում են: Տողերը կարելի է ներմուծել ԲԷՃDԼN, իսկ արտածել ՄԲITԷԼN ստանդարտ պրոցեդուրաների օգնությամբ:
Գոյություն ունի ՏTԲINՇ տիպի փոփոխականի մշակման երկու տարբերակ: Առաջին տարբերակով տողը կարելի է մշակել որպես մեկ ամբողջություն: Երկրորդ տարբերակում տողը դիտարկվում է որպես բաղադրյալ օբյեկտ, բաղկացած առանձին սիմվոլներից: Մեկ սիմվոլից բաղկացած տողը կարելի է դիտել որպես ՇԻՃԲ ստանդարտ տիպի հաստատուն: Ընդհանուր դեպքում N սիմվոլներ պարունակող տողը ներկայացնում է N+1 սիմվոլով զանգված.
ՃԲԲՃY[0..N] ՕԲ ՇԻՃԲ:
Զրոյական սիմվոլը պարունակում է տողի ընթացիկ երկարությունը: Տողում ցանկացած սիմվոլի կարելի է դիմել նույն կերպ, ինչպես ՃԲԲՃY[0..N] ՕԲ ՇԻՃԲ միաչափ զանգվածի տարրին: Դրա համար պետք է նշել տողի անունը` քառակուսի փակագծերում նշելով տողի տվյալ տարրի դիրքի համարը: Այս դեպքում տողի տարրի հետ կարելի է կիրառել ՇԻՃԲ տիպի փոփոխականի հետ կիրառելի բոլոր գործողությունները: Տողերով ն նրանց սիմվոլներով կարելի է կատարել մի շարք գործողություններ՝ օգտվելով ստորն շարադրված ստանդարտ պրոցեդուրաներից ն ֆունկցիաներից: • ԼԷNՇTԻ(Տ) - ֆունկցիա է, որի արժեքը ամբողջ թիվ է, Տ-ը տող տիպի փոփոխական է կամ հաստատուն: Այս ֆունկցիայով որոշվում է տողի փաստացի երկարությունը: Այն կիրառվում է գործնական շատ դեպքերում: Մասնավորապես, երբ փոփոխականների նկարագրման բաժնում տողը հայտարարված է որոշակի երկարության, իսկ իրականում այն կարող է պարունակել ավելի քիչ սիմվոլներ: Օրինակ,
ՄՃԲ X:ՏTԲINՇ[10]: K:INTԷՇԷԲ:
X:-‘ՃDՃMYՃN’:
K:-ԼԷNՇTԻ(X):
ՄԲITԷ(°K-‘,K): ԵԼՔ՝ K-7
• ՇՕNՇՃT(Տ1, Տ2, ... , ՏN) - ֆունկցիա է, որի արժեքը տող է: Այն վերադարձնում է Տ1, Տ2, ... ՏN տողերի հաջորդական կցումից ստացված տողը, այսինքն` գումարում է այդ տողերը: Օրինակ, X:-‘TՍԲ8Օ’: Y:-‘ ՔՃՏՇՃԼ’: 2:-ՇՕNՇՃT(Տ1,Տ2): ՄԲITԷԼN(‘2-’,2):
ԵԼՔ` 2-’TՍԲ8ՕՔՃՏՇՃԼ’
Տողերի համար կիրառելի է նան “+” գործողությունը: Նախորդ դեպքի համար 2:-X+Y գործողության արդյունքը կլինի նույնը: Եթե անհրաժեշտ է TՍԲ8Օ ն ՔՃՏՇՃԼ բառերի միջն դնել բացատանիշ, ապա կարելի է գրել. 2:-ՇՕNՇՃT(X,’ ‘,Y):
ԵԼՔ` 2-’TՍԲ8Օ ՔՃՏՇՃԼ’
• ՇՕՔY(Տ,N,Լ) - ֆունկցիա է, որի արժեքը տող է: Այն Տ տողի N դիրքից սկսած պատճենահանում է Լ հատ սիմվոլ: Օրինակ,
X:-‘TՍԲ8Օ ՔՃՏՇՃԼ’:
Y:-ՇՕՔY(X,7,6):
ՄԲITԷԼN(‘Y-‘,Y)
ԵԼՔ՝ Y-’ՔՃՏՇՃԼ’
• DԷԼԷTԷ(Տ, N, Լ) - պրոցեդուրա է, որը Տ տողի N դիրքից սկսած` հեռացնում է Լ հատ սիմվոլ: Օրինակ,
X:-‘TՍԲ8Օ ՔՃՏՇՃԼ’:
DԷԼԷTԷ(X,1,6):
ՄԲITԷԼN(‘X-‘,X)
ԵԼՔ՝ X-’ՔՃՏՇՃԼ’
Տող 2-ում հայտարարվել է Տ տողը, որոնք կարող են ունենալ մինչն 255 սիմվոլ: Տող 4-ում Տ-ին վերագրվել է կոնկրետ արժեք: Տող 5-ում Տ փոփոխականի առաջին դիրքից սկսած հեռացվել է 6 հատ սիմվոլ (TՍԲ8Օ ): Տող 6-ում արտածվել է Տ-ի նոր արժեքը: • INՏԷԲT(Տ1, Տ2, N) - պրոցեդուրա է, որը Տ1 տողը տեղադրում է Տ2 տողի մեջ` սկսած N-րդ դիրքից: Օրինակ. X:-‘ՃՃՃ’: Y:-‘123456’: INՏԷԲT(X,Y,4):
ՄԲITԷԼN(‘Y-‘,Y)
ԵԼՔ՝ Y-’123ՃՃՃ456’ Տող 2-ում հայտարարվել են Տ1 ն Տ2 տողերը, որոնք կարող են ունենալ մինչն 255 սիմվոլ: Տողեր 4-ում ն 5-ում Տ1 ն Տ2 փոփոխականներին վերագրվել են կոնկրետ արժեքներ: Տող 6-ում INՏԷԲT պրոցեդուրայով Տ1 փոփոխականի արժեքը տեղադրվել է Տ2-ի մեջ` սկսած 4-րդ դիրքից: Տող 7-ում արտածվել է Տ2 փոփոխականի նոր արժեքը: Բերված օրինակում կարող էինք չօգտագործել X փոփոխականը ն ստանալ նույն արդյունքը՝ կիրառելով INՏԷԲT պրոցեդուրա` INՏԷԲT(‘ՃՃՃ’,Y,4): • ՔՕՏ(Տ1, Տ2) - ֆունկցիա է, որի արժեքը ամբողջ թիվ է: Այն վերադարձնում է Տ2 տողի այն դիրքի համարը, որտեղից սկսած` Տ1 ենթատողը առաջին անգամ մտել է Տ2-ի մեջ: Եթե ենթատողը տվյալ տողում չի պարունակվում, ապա ֆունկցիան վերադարձնում է 0 արժեք: Օրինակ. X:-‘12ՃՃՃ456ՃՃՃ65ՃՃՃ6’: Y:-‘ՃՃՃ’: K:-ՔՕՏ(Y,X):
ՄԲITԷԼN(‘K-‘,K)
ԵԼՔ՝ K-3
Բերված օրինակում կարող էինք չօգտագործել Y փոփոխականը, այդ դեպքում ՔՕՏ ֆունկցիայի կիրառման ժամանակ անհրաժեշտ էր գրել K:-ՔՕՏ(‘ՃՃՃ’,X): Երկու տողերի հետ համեմատման -, Հ, », Հ-, »-, Հ» գործողությունները կատարվում են առանձին սիմվոլներով` ձախից աջ հաջորդականությամբ: Եթե մեկ տողը պարունակում է ավելի քիչ սիմվոլներ քան մյուսը, ապա կարճ տողում թերի սիմվոլները փոխարինվում են ՇԻԲ(0) արժեքներով: Օրինակ, համեմատման հետնյալ գործողությունները տալիս են TԲՍԷ արժեք. ‘8’ »‘Ճ’, ‘8ՃԲՕN’Հ’8ՕԲ’, ‘8ՃԲ’Հ’8ՕԲ’,
‘TՍԲ8Օ’ Հ ‘TՍԲ8Օ ՔՃՏՇՃԼ’:
6.2. Պարզ ծրագրերի տիպային օրինակներ Օրինակ 6.1. Տրված տողի մեջ Ճ8 սիմվոլների հաջորդականությունը փոխարինել Շ սիմվոլով: Խնդրի լուծման ծրագիրն ունի ԷXՃM6/1 անունը:
ՔԲՕՇԲՃM ԷXՃM6/1:
ՄՃԲ Տ:ՏTԲINՇ:
I,K:INTԷՇԷԲ:
8ԷՇIN Տ:-‘0Ճ8Շ123Ճ84567Ճ8+-89Ճ85’:
ՄԻIԼԷ ՔՕՏ(‘Ճ8’,Տ)Հ»0 DՕ
8ԷՇIN K:-ՔՕՏ(‘Ճ8’,Տ): DԷԼԷTԷ(Տ,K,2):
INՏԷԲT(‘Շ’,Տ,K)
ԷND:
ՄԲITԷԼN(‘Տ-‘,Տ)
ԷND. ԵԼՔ` Տ-’0Շ123Շ4567Շ+-89Շ5’
Տող 2-ում հայտարարված Տ տողին տող 5-ում վերագրվել է որոշակի արժեք: Տողեր 6-ից 11-ում կազմակերպվել է նախապայմանով ցիկլ, որի մարմնում նախ K փոփոխականին վերագրվում է այն դիրքի համարը, որից սկսած Ճ8 սիմվոլների հաջորդականությունը առաջին անգամ մտել է Տ տողի մեջ (տող 8): Այնուհետն Տ տողի K-րդ դիրքից ջնջվում է 2 հատ սիմվոլ (տող 9) ն այդ նույն դիրքում INՏԷԲT պրոցեդուրայի օգնությամբ ավելացվում Շ սիմվոլները: Ցիկլը շարունակվում է այնքան ժամանակ, քանի դեռ տողում կա Ճ8 սիմվոլների հաջորդականություն, այսինքն` ՔՕՏ(‘Ճ8’,Տ)≠0: Տող 12-ում արտածվել է Տ տողի նոր արժեքը:
Օրինակ 6.2. Տրված է տող, որի մեջ կան միայն 2 հատ Ի սիմվոլներ: Կազմել ծրագիր, որը կհաշվի ն կտպի երկրորդ Ի սիմվոլի դիրքի համարը: Խնդրի լուծման ծրագիրն ունի ԷXՃM6/2 անունը:
ՔԲՕՇԲՃM ԷXՃM6/2:
ՄՃԲ X,Y:ՏTԲINՇ: K,K1,K2:INTԷՇԷԲ:
8ԷՇIN
ԲԷՃDԼN(X):
K1:-ՔՕՏ('Ի',X): Y:-ՇՕՔY(X,1,K1): DԷԼԷTԷ(Տ,1,K1): K2:-ՔՕՏ('Ի',X): K:-K1+K2: INՏԷԲT(Y,X,1): ՄԲITԷ('K-',K) ԷND.
ՄՈՒՏՔ՝ ՃՏDԻՏDԲՇՍԻՏDԲ
ԵԼՔ՝ 10
Տող 5-ում X տողի ներմուծումից հետո տող 6-ում ՔՕՏ ֆունկցիայի միջոցով գտնում ենք առաջին Ի սիմվոլի դիրքի համարը (K1): Մինչն K1րդ դիրքում գտնվող բոլոր K1 հատ սիմվոլները տող 7-ում պատճենահանում ենք Y տող տիպի փոփոխականի մեջ: Այնուհետն DԷԼԷTԷ պրոցեդուրայի միջոցով տրված X տողից հեռացնում ենք առաջին K1 հատ սիմվոլները, այսինքն` մինչն առաջին Ի սիմվոլը ներառյալ: Տող 9-ում նորից կիրառելով ՔՕՏ ֆունկցիան այս անգամ գտնում ենք հաջորդ Ի սիմվոլի դիրքի համարը (K2), որն արդեն առաջին
2 սիմվոլի դիրքի համարն է, քանի որ առաջին Ի-ը արդեն ջնջել ենք: Գտնված համարների գումարը (K) երկրորդ Ի սիմվոլի դիրքի համարն է:
Օրինակ 6.3. Տրված են երկու տողեր: Կազմել ծրագիր, որը առաջին տողից կհեռացնի այն սիմվոլները, որոնց հավասարը կա երկրորդ տողում: Խնդրի լուծման ծրագիրն ունի ԷXՃM6/3 անունը: Խնդրի լուծման ծրագիրն ունի ԷXՃM50 անունը:
ՔԲՕՇԲՃM ԷXՃM6/3:
ՄՃԲ X,Y:ՏTԲINՇ: N,I:INTԷՇԷԲ:
8ԷՇIN
ԲԷՃDԼN(X): ԲԷՃDԼN(Y):
N:-ԼԷNՇTԻ(X):
ԲՕԲ I:-1 TՕ N DՕ
IԲ ՔՕՏ(X[I],Y)-0 TԻԷN DԷԼԷTԷ(X,I,1)
ՄԲITԷԼN('X-',X)
ԷND.
ՄՈՒՏՔ՝ X-’Ճ23ՏD8ԲԲՇԻ’
Y-’Շ87ԲDՏ’
ԵԼՔ՝ X-’Ճ23Ի’
Տող 4-ում X ն Y տողերի ներմուծումից հետո տող 5-ում հաշվել ենք X տողի փաստացի երկարությունը: Տող 6-ում կազմակերպվել է ցիկլ, որի մարմնում (տող 7) ստուգվել է X տողի հերթական I-րդ սիմվոլի Y տողի մեջ լինելը: Եթե այդ տարրին հավասար տարր Y տողի մեջ չի հայտնաբերվել, այսինքն ՔՕՏ(X[I],Y)-0, ապա DԷԼԷTԷ պրոցեդուրայի օգնությամբ X տողի համապատասխան սիմվոլը հեռացվում է տողից: Տող 8-ում արտածվել է ստացված տողը:
Օրինակ 6.4. Տրված է ո բնական թիվը ն ո երկարությամբ տող: Հաշվել տողում առկա ‘Ճ’ սիմվոլների քանակը, եթե տողում կա գոնե մեկ հատ ‘2’ սիմվոլ, հակառակ դեպքում` հաշվել ‘8’ սիմվոլների քանակը: Խնդրի լուծման ծրագիրն ունի ԷXՃM6/4 անունը:
ՔԲՕՇԲՃM ԷXՃM6/4:
ՄՃԲ X:ՏTԲINՇ: N,Լ:INTԷՇԷԲ: Y:ՇԻՃԲ:
8ԷՇIN
ԲԷՃDԼN(X):
N:-ԼԷNՇTԻ(X):
IԲ ՔՕՏ(‘2’,X)Հ»0 TԻԷN Y:-’Ճ’ ԷԼՏԷ Y:-’8’: Լ:-0:
ԲՕԲ I:-1 TՕ N DՕ
IԲ X[I]-Y TԻԷN Լ:-Լ+1:
ՄԲITԷ(Լ)
ԷND.
Տող 4-ում X տողի տերմուծումից հետո տող 5-ում որոշել ենք նրա փաստացի երկարությունը (N): Սյնուհետն տող 6-ում կազմակերպվել է համեմատություն: Եթե տրված տողում կա ‘2’ սիմվոլ, ապա սիմվոլային տիպի Y փոփոխականին վերագրվում է ‘Ճ’ սիմվոլը, հակառակ դեպքում` ‘8’ սիմվոլը: Այս դեպքում խնդիրը բերվում է տրված տողում Y սիմվոլային փոփոխականին հավասար սիմվոլների քանակի որոշմանը, որն իրականացվել է տողեր 7-ից 9-ում:
6.3. Տնային առաջադրանքներ Տնային առաջադրանքում ուսանողը պետք է կատարի աղյուսակի դասամատյանի` իր համարին համապատասխան տողում նշված խնդիրները` [2] խնդիրների ժողովածուից (Աղգաշյան Ռ., Առաքելյան Ա., Ավետիսյան Ս., Դանիելյան Ս. Քոմփյութերների կիրառում ն ծրագրավորում / խնդիրների ժողովածու / : ՀՊՕՀ, 1998թ.): Մատյանի համարը
Առաջադրվող խնդիրների համարները
511, 517, 521, 525, 531, 536 514, 518, 523, 529, 533, 538 513, 516, 522, 526, 532, 539 515, 519, 524, 527, 534, 537 512, 520, 521, 528, 543, 540 515, 518, 524, 525, 534, 538 514, 520, 522, 530, 531, 536 511, 516, 522, 526, 534, 540 516, 520, 521, 528, 533, 539 513, 517, 524, 530, 532, 537 516, 520, 522, 525, 535, 538 512, 519, 524, 529, 531, 539 515, 518, 523, 528, 534, 537 514, 520, 524, 527, 533, 540 511, 518, 521, 530, 532, 536 512, 517, 524, 526, 535, 538 515, 520, 523, 530, 531, 540 513, 520, 522, 527, 533, 537 512, 516, 524, 528, 532, 539 515, 519, 523, 525, 535, 536 514, 516, 521, 527, 534, 537 515, 517, 524, 529, 531, 538 511, 520, 524, 526, 533, 539 512, 519, 524, 530, 535, 536 513, 518, 522, 525, 533, 540 515, 520, 523, 528, 531, 537 514, 516, 521, 527, 535, 538 515, 517, 524, 529, 534, 536 513, 519, 523, 526, 531, 539 511, 518, 522, 527, 532, 536
7. Գրառումներ 7.1. Ընդհանուր հասկացություններ Պասկալ լեզվում գրառումներով հնարավոր է միննույն համախմբության մեջ պահել տարբեր տիպի տվյալներ: Դրանք կարող են պարունակել տարբեր տիպի ֆիքսված թվով բաղադրիչներ, որոնք կոչվում են դաշտեր: Մեկ դաշտում տվյալները պետք է ունենան նույն տիպը, իսկ տարբեր դաշտերում՝ տարբեր տիպեր: Գրառում տիպը հայտարարվում է հետնյալ կերպ. TYՔԷ
8-ԲԷՇՕԲD
d11, d12, ... :t1: d21, d22, ... :t2: dK1, dk2, ... :tK ԷND: որտեղ 8 –ն տիպի անունն է, d|) –ն դաշտերի իդենտիֆիկատորներն են, t| -ն դաշտերի տիպը: Օրինակ. դիցուք անհրաժեշտ է նկարագրել երեք փոփոխականներ՝ Ճ, 8 ն Շ, որոնցից յուրաքանչյուրն ունի չորս բաղադրիչներ՝ անունը, օրը, ամիսը ն տարին:
ՄՃԲ Ճ,8,Շ:ԲԷՇՕԲD
NՃMԷ:ՏTԲINՇ:
DՃY,MՕNTԻ,YԷՃԲ:INTԷՇԷԲ
ԷND: Այստեղ Ճ,8 ն Շ փոփոխականները հայտարարված են որպես գրառումներ, որոնց համար բաղադրիչներ են NՃMԷ (անուն), DՃY (օր),
MՕNTԻ (ամիս) ն YԷՃԲ (տարի) դաշտերը: Ինչպես երնում է բերված օրինակից, դրանցից առաջինն ունի ՏTԲINՇ տիպ, իսկ մնացած երեքը՝ ամբողջ տիպ: Գրառումը կարող է հանդես գալ որպես այլ կառուցվածքային տիպի բաղադրիչ: Օրինակ, կարելի է կառուցել գրառումների զանգված: Դիցուք անհրաժեշտ է նկարագրել այնպիսի զանգված, ուր լինեն պահված խմբի բոլոր ուսանողների անունները, նրանց համարները դասամատյանում ն ծննդյան տարեթվերը: Ենթադրենք՝ խմբում կան N ուսանողներ: Այս դեպքում նկարագրությունը կարելի է ներկայացնել հետնյալ տեսքով. ՄՃԲ
X:ՃԲԲՃY[1..N] ՕԲ ԲԷՇՕԲD
NՃMԷ:ՏTԲINՇ:
NՍM8ԷԲ,YԷՃԲ:INTԷՇԷԲ
ԷND. այսինքն` X -ը N տարր պարունակող միաչափ զանգված է: Հայտարարված զանգվածի տարրերը գրառումներ են, որոնց համար բաղադրիչներ են ուսանողի անունը՝ NՃMԷ (ՏTԲINՇ տիպի), դասամատյանի համարը՝ NՍM8ԷԲ (INTԷՇԷԲ տիպի) ն ծննդյան տարեթիվը` YԷՃԲ (INTԷՇԷԲ տիպի): Գրառում տիպի փոփոխականին կարելի է վերագրել նույն տիպի ուրիշ գրառման արժեքը, օրինակ. Ճ:-8: Գրառման յուրաքանչյուր բաղադրիչի կարելի է դիմել՝ նշելով փոփոխականի անունը, այնուհետն կետ ն վերջում նշել դաշտի անունը, այսինքն՝ տալ գրառման լրիվ անունը, օրինակ.
Ճ.NՃMԷ:-‘ՇՕԻՃԲ’:
որտեղ Ճ-ն գրառման անունն է, NՃMԷ-ը՝ գրառման դաշտի անունը: Եթե գրառման բաղադրիչը ներկայացնում է նորից գրառում, ապա այն կոչվում է ներդրված դաշտերով գրառում: Այդ դեպքում անհրաժեշտ է
ստեղծել գրառում-տիպ, որը կօգտագործվի փոփոխականների նկարագրման բաժնում՝ գրառման բաղադրիչի տիպը նկարագրելիս: Ամեն անգամ գրառման բաղադրիչից օգտվելիս գրում ենք գրառման անունը, որից հետո կետով բաժանված` գրում դաշտի անունը: Որպեսզի ամեն անգամ չգրենք գրառման լրիվ անունը, կարելի է օգտվել ՄITԻ օպերատորից: Այն ունի հետնյալ տեսքը. ՄITԻ Հգրառման անուն» DՕ Հօպերատոր»: Այս դեպքում օպերատորի ներսում կարելի է նշել միայն գրառման դաշտը: Օրինակ, Ճ գրառումն ունի չորս՝ D1, D2, D3, D4 բաղադրիչները: Գրառումը կարելի է ներմուծել հետնյալ երկու տարբերակներով. ԲԷՃD(Ճ.D1,Ճ.D2,Ճ.D3,Ճ.D4): կամ
ՄITԻ Ճ DՕ ԲԷՃD(D1,D2,D3,D4):
7.2. Պարզ ծրագրերի տիպային օրինակներ Օրինակ 7.1. Տրված է ո ամբողջ թիվը ն ո տարր պարունակող զանգվածը: Զանգվածի տարրերը գրառումներ են, որոնց համար բաղադրիչներ են` խմբի յուրաքանչյուր ուսանողի ա)ազգանունը բ)մաթեմատիկա առարկայի ընթացիկ ռեյտինգային միավորը գ)մաթեմատիկա առարկայի եզրափակիչ քննության միավորը: Տպել այն ուսանողների ազգանունները, որոնք ստացել են գերազանց գնահատական (այսինքն` ռեյտինգային ն եզրափակիչ միավորների գումարը մեծ է 80-ից): Խնդրի լուծման ծրագիրն ունի ԷXՃM7/1 անունը:
ՔԲՕՇԲՃM ԷXՃM7/1:
ՄՃԲ X:ՃԲԲՃY[1..5] ՕԲ ԲԷՇՕԲD
Ճ2Շ:ՏTԲINՇ:
ԲԷY, Է2Բ:INTԷՇԷԲ:
ԷND:
N,I:INTԷՇԷԲ:
8ԷՇIN
ԲԷՃD(N):
ԲՕԲ I:-1 TՕ N DՕ ՄITԻ X[I] DՕ
8ԷՇIN
ԲԷՃDԼN(Ճ2Շ):
ԲԷՃDԼN(ԲԷY):
ԲԷՃDԼN(Է2Բ)
ԷND:
ԲՕԲ I:-1 TՕ N DՕ ՄITԻ X[I] DՕ
IԲ ԲԷY+Է2ԲՃ»80 TԻԷN ՄԲITԷԼN(Ճ2Շ):
ԷND.
Տողեր 2-ից 5-ում նկարագրվել է այն զանգվածը, որի տարրերը գրառում է Ճ2Շ, ԲԷY ն Է2Բ բաղադրիչներով: Տողեր 9-ից 14-ում ներմուծվել են զանգվածի տարրերի արժեքները: Տող 15-ում կազմակերված ցիկլում յուրաքանչյուր կրկնման ժամանակ ստուգվում է տվյալ ուսանողի ռեյտինգային ն եզրափակիչ միավորների գումարի 80-ից մեծ լինելը: Եթե այն Օշմարիտ է, ապա ցիկլի մարմնում արտածվում է այդ ուսանողի ազգանունը:
Օրինակ 7.2. Տրված է ո ամբողջ թիվը ն ո տարր պարունակող զանգվածը: Զանգվածի տարրերը գրառումներ են, որոնց համար բաղադրիչներ են տվյալ խմբի ուսանողների՝ ա) ազգանունը բ) մի առարկայի քննական միավորը: Տպել խմբի այն ուսանողների ազգանունները, որոնց գնահատականը մեծ է խմբի միջին գնահատականից: Խնդրի լուծման ծրագիրն ունի ԷXՃM7/2 անունը:
ՔԲՕՇԲՃM ԷXՃM7/2:
ՇՕNՏT N-4:
ՄՃԲ
X:ՃԲԲՃY[1..N] ՕԲ ԲԷՇՕԲD
Ճ2Շ:ՏTԲINՇ:
MIՃՄ:INTԷՇԷԲ
ԷND:
I:INTԷՇԷԲ: Տ:ԲԷՃԼ:
8ԷՇIN X[1].Ճ2Շ:-‘ՃՄՃՇYՃN’: X[1].MIՃՄ:-40: X[2].Ճ2Շ:-‘ՇՃՏՔՃԲYՃN’: X[2].MIՃՄ:-100: X[3].Ճ2Շ:-‘ՔԷTԲՕՏYՃN’: X[3].MIՃՄ:-80: X[4].Ճ2Շ:-‘ՃNTՕNYՃN’: X[4].MIՃՄ:-60: Տ:-0:
ԲՕԲ I:-1 TՕ N DՕ ՄITԻ X[I] DՕ Տ:-Տ+MIՃՄ:
Տ:-Տ/N:
ԲՕԲ I:-1 TՕ N DՕ ՄԻIT X[I] DՕ
IԲ MIՃՄ»Տ TԻԷN ՄԲITԷԼN(Ճ2Շ)
ԷND. ԵԼՔ՝
ՇՃՏՔՃԲYՃN
ՔԷTԲՕՏYՃN
Հաստատունների նկարագրման բաժնում N փոփոխականին վերագրվել է 4 արժեքը (տող 2): Տողեր 4-ից 7-ում նկարագրվել է զանգվածը, որի տարրերը գրառում է Ճ2Շ ն MIՃՄ բաղադրիչներով: Տողեր 10-ից 13-ում ներմուծվել են զանգվածի տարրերի արժեքները, որոնք են. յուրաքանչյուր ուսանողի ազգանունը (Ճ2Շ) ն քննական միավորը (MIՃՄ): Տողեր 14-ից 15-ում որոշվել է խմբի բոլոր ուսանողների միավորների գումարը (Տ), որի արժեքը բաժանելով խմբի ուսանողների քանակին (տող 16)` կստանանք խմբի միջին գնահատականը: Տողեր 17ից 18-ում կազմակերպվել է ցիկլ, որի մարմնում գտնվում ն արտածվում են այն ուսանողների ազգանունները, որոնց գնահատականը մեծ է խմբի միջին գնահատականից:
Օրինակ 7.3. Տրված է ո ամբողջ թիվը ն ո տարր պարունակող զանգվածը: Զանգվածի տարրերը գրառումներ են, որոնց համար բաղադրիչներ են ձայնասկավառակում ձայնագրված երգերի ա)անունները, բ)տնողությունները (րոպեներով): Տպել ձայնասկավառակի առաջին երգից սկսած բոլոր այն երգերի անունները, որոնց գումարային տնողությունը չի գերազանցում 25 րոպեն:
Խնդրի լուծման ծրագիրն ունի ԷXՃM7/3 անունը:
ՄՈՒՏՔ`
ՔԲՕՇԲՃM ԷXՃM7/3:
ՄՃԲ X:ՃԲԲՃY[1..5] ՕԲ ԲԷՇՕԲD
ՃNՍN:ՏTԲINՇ:
TԷՄ:INTԷՇԷԲ
ԷND:
N,I:INTԷՇԷԲ:
8ԷՇIN
ԲԷՃD(N):
ԲՕԲ I:-1 TՕ N DՕ ՄITԻ X[I] DՕ
8ԷՇIN
ԲԷՃDԼN(ՃNՍN):
ԲԷՃDԼN(TԷՄ)
ԷND: I:-1: Տ:-0:
ՄԻIԼԷ ՏՀ40 DՕ ՄITԻ X[I] DՕ
8ԷՇIN
ՄԲITԷԼN(ՃNՍN):
I:-I+1:
Տ:-Տ+TԷՄ
ԷND ԷND. N-5 ԷԲՇ1 ԷԲՇ2 ԷԲՇ3 ԷԲՇ4 ԷԲՇ5
ԵԼՔ՝
ԷԲՇ1 ԷԲՇ2 ԷԲՇ3
Տողեր 2-ից 5-ում նկարագրվել է զանգվածը, որի տարրերը գրառում է ՃNՍN ն TԷՄ բաղադրիչներով: Տողեր 9-ից 13-ում ներմուծվել են զանգվածի տարրերի արժեքները: Տող 12-ում կազմակերպվել է նախապայմանով ցիկլ, որը կրկնվում է այնքան ժամանակ, քանի դեռ
երգերի գումարային տնողությունը փոքր է 25-ից: Ցիկլի մարմնում յուրաքանչյուր կրկնման ժամանակ արտածվում է հերթական երգի տնողությունը: Գումարի համար նախատեսված Տ փոփոխականը մեծացվում է հերթական երգի տնողության չափով, իսկ երգի հերթական համարը` 1-ով: Մինչն ցիկլը տող 14-ում I փոփոխականին վերագրվել է 1 արժեք, իսկ տող 15-ում Տ փոփոխականին` 0 արժեք:
Օրինակ 7.4. Տրված է ո ամբողջ թիվը ն ո տարր պարունակող զանգվածը: Զանգվածի տարրերը գրառումներ են, որոնց համար բաղադրիչներ են աշխատակիցների ա)ազգանունները բ)նրանց ընտանիքի անդամների քանակը գ)ընտանիքի գումարային եկամուտը: Տպել այն աշխատակցի ազգանունը, ում ընտանիքի յուրաքանչյուր անդամին ընկնող միջին եկամուտն ամանամեծն է: Խնդրի լուծման ծրագիրն ունի ԷXՃM7/4 անունը:
ՔԲՕՇԲՃM ԷXՃM7/4:
ՄՃԲ X:ՃԲԲՃY[1..5] ՕԲ ԲԷՇՕԲD
Ճ2Շ:ՏTԲINՇ:
ՕՃNՃK, ԷKՃMՍT:INTԷՇԷԲ
ԷND:
N,I,K:INTԷՇԷԲ: MՃX, Ճ:ԲԷՃԼ:
8ԷՇIN
ԲԷՃD(N):
ԲՕԲ I:-1 TՕ N DՕ ՄITԻ X[I] DՕ
8ԷՇIN
ԲԷՃDԼN(Ճ2Շ): ԲԷՃDԼN(ՕՃNՃK): ԲԷՃDԼN(ԷKՃMՍT)
ԷND:
ՄITԻ X[1] DՕ 8ԷՇIN MՃX:-ԷKՃMՍT/ՕՃNՃK ԷND: K:-1:
ԲՕԲ I:-2 TՕ N DՕ ՄITԻ X[I] DՕ
8ԷՇIN
Ճ:-ԷKՃMՍT/ՕՃNՃK:
IԲ Ճ»MՃX TԻԷN 8ԷՇIN MՃX:-Ճ: K:-I ԷND:
ԷND:
ՄԲITԷ(X[K].Ճ2Շ)
ԷND.
ՄՈՒՏՔ` N-5
ՃՄՃՇYՃN
ՇԷՄՕԲՇYՃN
ՃԲՃMYՃN DՍԲYՃN ԷՇՕԲYՃN
ԵԼՔ՝
ԷՇՕԲYՃN
30000 140000 100000 80000 200000
Տողեր 2-ից 5-ում նկարագրվել է զանգվածը, որի տարրերը գրառում է Ճ2Շ, ՕՃNՃK ն ԷKՃMՍT բաղադրիչներով: Տողեր 9-ից 12-ում ներմուծվել են զանգվածի տարրերի արժեքները: Տող 13-ում մեծագույն տարրը գտնելու համար նախատեսված MՃX փոփոխականին վերագրվել է առաջին աշխատակցի ընտանիքի յուրաքանչյուր անդամին ընկնող միջին եկամուտը, այսինքն` գումարային եկամուտի ն ընտանիքի անդամների քանակի հարաբերությունը, իսկ K փոփոխականին` 1: Տող Տողեր 14-ից 18-ում գտնվել է այն աշխատակցի հերթական համարը, ում ընտանիքի յուրաքանչյուր անդամին ընկնող միջին եկամուտը ամենամեծն է (K): Տող 19-ում արտածվել է K-րդ աշխատակցի ազգանունը:
7.3. Տնային առաջադրանքներ Տնային առաջադրանքում ուսանողը պետք է կատարի աղյուսակի դասամատյանի` իր համարին համապատասխան տողում նշված խնդիրները` [2] խնդիրների ժողովածուից (Աղգաշյան Ռ., Առաքելյան Ա., Ավետիսյան Ս., Դանիելյան Ս. Քոմփյութերների կիրառում ն ծրագրավորում / խնդիրների ժողովածու / : ՀՊՕՀ, 1998թ.): Մատյանի համարը
Առաջադրվող խնդիրների համարները
541, 546, 551, 556, 561, 567 542, 547, 553, 557, 563, 568 545, 549, 552, 559, 565, 569 542, 548, 555, 558, 562, 566 544, 546, 553, 557, 564, 567 541, 550, 551, 556, 563, 568 543, 547, 554, 560, 561, 570 545, 548, 552, 558, 562, 567 542, 549, 553, 556, 565, 566 544, 547, 551, 560, 563, 569 543, 548, 555, 557, 562, 570 541, 550, 552, 559, 564, 567 543, 546, 553, 558, 563, 569 545, 549, 554, 560, 561, 568 542, 547, 551, 556, 562, 567 544, 550, 555, 557, 565, 566 543, 549, 552, 559, 564, 569 541, 546, 553, 560, 562, 570 545, 547, 554, 558, 563, 567 543, 548, 551, 559, 561, 569 545, 550, 555, 560, 565, 568 544, 549, 553, 556, 564, 567 541, 546, 552, 557, 562, 566 542, 547, 551, 558, 565, 569 543, 548, 554, 556, 561, 568 544, 549, 555, 559, 564, 567 543, 546, 553, 557, 563, 570 541, 547, 551, 558, 565, 569 545, 550, 554, 560, 561, 566 542, 546, 552, 556, 562, 568
8. ՖԱՅԼԵՐ
8.1. Ընդհանուր հասկացություններ Ֆայլը արտաքին հիշողության այն տիրույթն է, որն ունի անուն: Ցանկացած ֆայլում կարող են գրված լինել միննույն տիպի բաղադրիչներ: Նոր ստեղծվող ֆայլի հնարավոր ծավալը կախված է միայն համակարգչի այն արտաքին հիշող սարքի ծավալից, որտեղ պետք է գրվի տվյալ ֆայլը: Տարբերում են ֆայլերի երեք տեսակ. 1. Տիպայնացված ֆայլ: Այնպիսի տվյալների հաջորդականություն է, որոնց տիպը ֆիքսվել է ֆայլի հայտարարման պահին: Այս դեպքում ֆայլային փոփոխականը կարելի է նկարագրել հետնյալ կերպ. ՄՃԲ Հ անուն» : ԲIԼԷ ՕԲ Հտիպ»: 2. Տեքստային ֆայլ: Տողերում միավորված պայմանանշանների հավաքածու է: Այս դեպքում Ֆայլային փոփոխականը կարելի է նկարագրել հետնյալ կերպ. ՄՃԲ Հ անուն»: TԷXT: 3. Ոչ տիպայնացված ֆայլ: Այնպիսի տվյալների հաջորդականություն է, որոնց տիպը նախապես չի ֆիքսվել: Այս դեպքում Ֆայլային փոփոխականը կարելի է նկարագրել հետնյալ կերպ. ՄՃԲ Հ անուն» : ԲIԼԷ: Նշված երեք ձների մեջ Հանուն» -ը ֆայլային փոփոխականի անունն է (ցանկացած թույլատրելի իդենտիֆիկատոր), f|l6, օf, t6xt- բանալիբառեր են, իսկ Հտիպ»-ը ՏՈՒՐԲՈ ՊԱՍԿԱԼ-ում սահմանված որնէ տիպ է, բացի ֆայլայինից: Օրինակ,
Բ1: ԲIԼԷ ՕԲ ԲԷՃԼ:
Բ2: TԷXT:
Բ3: ԲIԼԷ:
Բերված օրինակում f1-ը տիպայնացված ֆայլ է, որի բաղադրիչները իրական տիպի թվեր են, f2-ը տեքստային ֆայլ է, իսկ f3-ը՝ ոչ տիպայնացված ֆայլ: Տվյալ աշխատանքի շրջանակներում մենք գործ ենք ունենալու միայն տիպայնացված ֆայլերի հետ: Ֆայլային փոփոխականների հետ չի կարելի կատարել ոչ մի գործողություն (վերագրում, համեմատում ն այլն): Դրանք կարելի է օգտագործել միայն ֆայլերի հետ կապված գործողությունների մեջ (ֆայլի ընթերցում, ձայնագրում, ոչնչացում ն այլն): Ֆայլում ինֆորմացիայի գրանցման կամ ֆայլից ինֆորմացիայի ընթերցման սկզբունքի նկարագրման լավ մոդել է մագնիսական ձայնագրիչի դեպքը, եթե պատկերացնենք, որ կարդացող կամ գրող սարքը (մագնիսական գլխիկը) շարժվում է անշարժ մագնիսական ժապավենի երկայնքով (իրականում հակառակն է): Դիցուք մագնիսական գլխիկը, որը պատկերված է սլաքով ( ), գտնվում է մագնիսական ժապավենի Ճ տիրույթի դիմաց. Ճ
Եթե ժապավենի վրա ձայնագրենք որնէ թիվ, օրինակ 256, ապա մագնիսական գլխիկի դիմաց կկանգնի ժապավենի հաջորդ 8 ազատ տիրույթը. Ճ
Ենթադրենք ժապավենի վրա արդեն գրվել են 256, 365, -564, 478, 894 հինգ թվերը, ն սրանով էլ ավարտվել է ֆայլի բաղադրիչների գրանցումը: Ճ
Շ D Է
Այս դեպքում ասում են, որ մագնիսական ժապավենի վրա գրվել է 5 երկարությամբ ֆայլ: Ֆայլի ձայնագրման վերջում մագնիսական գլխիկը գտնվում է ֆայլից դուրս: Ընդհանրացնելով ասվածը՝ նկատենք, որ եթե իրականացվել է ֆայլի ո-րդ տարրի ձայնագրումը, ապա ֆայլի ցուցիչը (մագնիսական գլխիկը) կանգնում է հաջորդ ազատ դիրքի վրա, որտեղ կարելի է գրանցել հաջորդ՝ ո+1-րդ տարրը: Ֆայլի երկարություն է կոչվում ֆայլում գրված բաղադրիչների քանակը: Ֆայլը կոչվում է դատարկ (զրոյական), եթե չի պարունակում ոչ մի բաղադրիչ: Ֆայլի մեջ տարրի ներմուծումը ն ընթերցումը կատարվում է բաղադրիչ առ բաղադրիչ:
8.2. Ֆայլերին դիմելու հնարավորությունը ՊԱՍԿԱԼ ծրագրում կամայական ֆայլի կարելի է դիմել՝ նախապես հայտարարված ֆայլային տիպի փոփոխականը կապելով գոյություն ունեցող կամ նոր ստեղծվող ֆայլի անվան հետ: Այդ իրականացվում է ՃՏՏIՇN ստանդարտ պրոցեդուրայի միջոցով, որն ունի հետնյալ տեսքը. ՃՏՏIՇN(f,ո8ո6): Այս պրոցեդուրան ֆայլային տիպի Բ փոփոխականը կապում է N8ո6 անունով արտաքին ֆայլի հետ: NՃMԷ-ը տեքստային (ՏTԲINՇ տիպի) արտահայտություն է, որը պարունակում է ֆայլի անվանումը:
Ֆայլի անունը գրվում է հետնյալ կանոններով. ա) անունը պետք է պարունակի մինչն 8 պայմանանշաններ (թույլատրելի պայմանանշաններն են լատինական այբուբենի տառերը, արաբական թվերը, հետնյալ պայմանանշանները՝ ! @ # $ % ^ & ( ) ‘ ~ - / ): բ) անվանը, կետով բաժանված, կարող է հաջորդել ընդլայնումը (եթե անունն ունի ընդլայնում), որը կարող է պարունակել մինչն երեք թույլատրելի պայմանանշաններ: գ) Ֆայլի անվանը կարող է նախորդել ֆայլը գտնելու ուղին, այսինքն՝ արտաքին հիշող սարքի անունը, ն սկսած հիմնային կատալոգից այն կատալոգների անունները, որոնց շղթայի վերջնական օղակում գտնվում է տվյալ ֆայլը: Եթե ֆայլը գտնվում է ընթացիկ կատալոգի մեջ, ապա ուղին կարող է սկսվել ընթացիկ կատալոգից: Եթե արտաքին հիշող սարքը կամ կատալոգը նշված չէ, ապա հասկացվում է ընթացիկ արտաքին հիշող սարքը, ընթացիկ կատալոգը: Օրինակ. ՃՏՏIՇN(X,’Շ:\8Ք\8IN\ՃՃ1.DՃT’)ֆայլային X փոփոխականը կապվում է Շ: կուտակիչի հիմնային կատալոգի 8Ք ենթակատալոգի 8IN ենթակատալոգի ՃՃ1.DՃT ֆայլի հետ: ՃՏՏIՇN(Y1,’ՃՃ2.DՃT’)- ֆայլային Y1 փոփոխականը կապվում է ընթացիկ կուտակիչի ընթացիկ կատալոգի ՃՃ2.DՃT ֆայլի հետ:
8.3. Ֆայլերի նախապատրաստումը աշխատանքի Ֆայլը նախապատրաստել աշխատանքի նշանակում է այդ ֆայլի համար նշել տվյալների փոխանակման ուղղությունը: ՏՈՒՐԲՈ ՊԱՍԿԱԼում ֆայլը կարելի է բացել տվյալներ կարդալու, գրելու, կամ կարդալու ու միննույն դեպքում գրելու համար:
Ֆայլից տվյալներ կարդալու նախապատրաստման համար կիրառում են ԲԷՏԷT ստանդարտ պրոցեդուրան, որն ունի հետնյալ տեսքը.
ԲԷՏԷT(Բ):
Այս պրոցեդուրայի օգնությամբ արդեն գոյություն ունեցող ֆայլը նախապատրաստվում է ընթերցման: ԲԷՏԷT-ին պետք է նախորդած լինի ՃՏՏIՇN պրոցեդուրան, որով Բ ֆայլային փոփոխականը պետք է կապակցվեր անհրաժեշտ ֆայլի հետ: ԲԷՏԷT պրոցեդուրայի կատարումից հետո ֆայլի ընթացիկ տարրը ցույց տվող ցուցիչը կանգնում է ֆայլի սկզբում (առաջին տարրի վրա): Օրինակ, ՃՏՏIՇN(Y1,’T1.DՃT’):
ԲԷՏԷT(Y1):
Բերված օրինակում ՃՏՏIՇN պրոցեդուրայի միջոցով Y1 ֆայլային փոփոխականը կապվել է T1.DՃT ֆայլի հետ, այնուհետն T1.DՃT ֆայլը բացվել է ընթերցման նպատակով: ՏՈՒՐԲՈ ՊԱՍԿԱԼ տարբերակում թույլատրվում է ԲԷՏԷT պրոցեդուրայի օգնությամբ բացած տիպայնացված ֆայլերում կատարել նոր տվյալների ձայնագրում: Ֆայլում տվյալներ գրելը նախապատրաստելու համար կիրառում են ԲԷՄԲITԷ ստանդարտ պրոցեդուրան, որն ունի հետնյալ տեսքը.
ԲԷՄԲITԷ(Բ):
Պրոցեդուրան բացում է ֆայլը, որի հետ նախապես ՃՏՏIՇN պրոցեդուրայով կապվել է Բ ֆայլային փոփոխականը: Եթե այդ անունով ֆայլ արդեն գոյություն ունի, ապա ԲԷՄԲITԷ-ը ջնջում է եղած տվյալները: Նոր ստեղծվող ֆայլում ցուցիչը կանգնում է ֆայլի սկզբում (առաջին տարրի վրա) ն սպասում է ինֆորմացիայի ընդունման: Օրինակ. ՃՏՏIՇN(Y2,’T2.DՃT’):
ԲԷՄԲITԷ(Y2):
Բերված օրինակում ՃՏՏIՇN պրոցեդուրայի միջոցով Y2 ֆայլային փոփոխականը կապվում է T2.DՃT ֆայլի հետ, իսկ ԲԷՄԲITԷ-ը նախապատրաստում է ֆայլը՝ տվյալների ձայնագրման համար:
8.4. Ֆայլերի փակումը ՇԼՕՏԷ(Բ) պրոցեդուրան փակում է նախապես բացած ֆայլը, որի հետ կապված է Բ ֆայլային փոփոխականը: Այդ դեպքում պրոցեդուրան ապահովում է բոլոր նոր կատարված փոփոխությունների գրանցումը արտաքին ֆայլում: Տվյալ ֆայլի հետ աշխատանքը շարունակելու համար պետք չէ նորից կիրառել ՃՏՏIՇN պրոցեդուրան, քանի որ ՇԼՕՏԷ(Բ) -ը չի խզում կապը ֆայլային փոփոխականի ն արտաքին ֆայլի միջն: Օրինակ.
ՇԼՕՏԷ(Y1):
Այս պրոցեդուրան փակում է այն բաց ֆայլը, որի հետ կապված է Y1 ֆայլային փոփոխականը: âի կարելի մեկ ՇԼՕՏԷ պրոցեդուրայի կիրառմամբ փակել մեկից ավելի ֆայլեր: Ավելորդ բարդություններից (ինֆորմացիայի կորուստ, ինֆորմացիայի ոչ ճիշտ ներմուծում) խուսափելու համար խորհուրդ է տրվում ծրագրի վերջում անպայման փակել բոլոր բացված ֆայլերը:
8.5. Տվյալների գրանցումը ն ընթերցումը Ֆայլի մեջ տվյալների ներմուծման համար օգտագործում են ԲԷՃD ն ԲԷՃDԼN, իսկ ֆայլից տվյալների ընթերցման համար` ՄԲITԷ ն ՄԲITԷԼN պրոցեդուրաները: ԲԷՃD(f, Հմուտքի ցուցակ»)պրոցեդուրան f ֆայլային փոփոխականի հետ կապված արդեն գոյություն ունեցող ֆայլից տվյալներ է կարդում ն վերագրում մուտքի ցուցակում նշված փոփոխականներին: Օրինակ,
ԲԷՃD(Բ1,Ճ): Բ1 ֆայլային ֆոփոխականի հետ կապված ֆայլից ընթերցում ն Ճ փոփոխականին է վերագրում ֆայլի հերթական բաղադրիչի արժեքը: Մուտքի ցուցակում փոփոխականների քանակը սահմանափակված չէ: ԲԷՃD(Բ,Ճ,8,Շ) պրոցեդուրայի կատարումը համարժեք է 8ԷՇIN
ԲԷՃD(Բ,Ճ):
ԲԷՃD(Բ,8):
ԲԷՃD(Բ,Շ)
ԷND: բաղադրյալ օպերատորի կատարմանը: Օրինակ, ԲԷՃD(Բ1,Ճ,8): Բ1 ֆայլային փոփոխականի հետ կապված ֆայլից ընթերցում է հերթական երկու բաղադրիչները, որոնցից առաջինի արժեքը վերագրում է Ճ փոփոխականին, իսկ երկրորդի արժեքը` 8 փոփոխականին: Օրինակ, դիցուք Բ ֆայլային փոփոխականի հետ կապված ֆայլում գրված են երկու տողեր, յուրաքանչյուրում՝ երեքական թիվ.
⊗
⊗
•
Աղյուսակում • -ով ցույց է տրված ֆայլի վերջը, իսկ ⊗- ով` «տողի վերջը» պայմանանշանը: ԲԷ2ԷT(Բ): ԲԷՃD(Բ,Ճ,8):
Ճ ն 8 փոփոխականները կընդունեն համապատասխանաբար 1 ն 6 արժեքները: ԲԷ2ԷT(Բ): ԲԷՃD(Բ,Ճ,8,Շ,D,Է): Ճ, 8 ն Շ փոփոխականները կընդունեն առաջին տողի երեք պայմանանշանները (1, 6 ն 4), որից հետո չորրորդ ն հինգերորդ դիմումների ժամանակ վերադարձվում է դատարկ տող, ն D ու Է փոփոխականները արժեքներ չեն ստանում: Տիպայնացված ֆայլերի համար մուտքի ցուցակում փոփոխականները պետք է ունենան ֆայլի բաղադրիչների տիպը:
նշված
Օրինակ. Գրել ծրագրի հատված, որը կստանա 10 տարրեր պարունակող X զանգվածը: Զանգվածի տարրերը նախորդ օրինակում բերված ֆայլի առաջին 10 բաղադրիչներն են:
ԲԷՏԷT(Բ1):
ԲՕԲ I:-1 TՕ 10 DՕ ԲԷՃD(Բ1,X[I]): ԲԷՏԷT(Բ1) պրոցեդուրայի օգնությամբ արդեն գոյություն ունեցող ֆայլը նախապատրաստվում է ընթերցման: ԲԷՏԷT-ին պետք է նախորդած լինի ՃՏՏIՇN պրոցեդուրան, որով Բ ֆայլային փոփոխականը պետք է կապակցվեր անհրաժեշտ ֆայլի հետ: ԲԷՏԷT պրոցեդուրայի կատարումից հետո ֆայլի ընթացիկ տարրը ցույց տվող ցուցիչը կանգնում է ֆայլի սկզբում: Ցիկլի մեջ I պարամետրի յուրաքանչյուր արժեքի համար ֆայլից ընթերցվում է նրա I -րդ բաղադրիչը (I-1,10) ն վերագրվում զանգվածի I -րդ տարրին: ԲԷՃDԼN(f, Հմուտքի ցուցակ»)- պրոցեդուրան f ֆայլային փոփոխականի հետ կապված արդեն գոյություն ունեցող ֆայլից կարդում ն մուտքի ցուցակում նշված փոփոխականներին է վերագրում արժեքներ: Այս պրոցեդուրան նման է ԲԷՃD պրոցեդուրային, միայն այն տարբերությամբ, որ տողի չկարդացված մասը ն տողի վերջի նշանը բաց է թողնվում ն հաջորդ ԲԷՃD կամ ԲԷՃDԼN պրոցեդուրաներից որնէ մեկին դիմելու դեպքում կկարդա սկսած նոր տողի առաջին սիմվոլից: ԲԷՃDԼN պրոցեդուրայում պարամետրեր:
կարելի
է
նշել
կամայական
թվով
ԲԷՃDԼN(Բ,Ճ,8,Շ,D) պրոցեդուրան համարժեք է 8ԷՇIN
ԲԷՃD(Բ,Ճ):
ԲԷՃD(Բ,8):
ԲԷՃD(Բ,Շ):
ԲԷՃD(Բ,D):
ԲԷՃDԼN: ԷND բաղադրյալ օպերատորի կատարմանը, որտեղ սկզբում իրականացվում է պրոցեդուրայի մուտքի ցուցակում նշված բոլոր փոփոխականների արժեքների ներմուծումը, որից հետո կատարում է անցում հաջորդ տողին: Օրինակ. դիցուք մուտքային տվյալները գրված են երեք տողերում, յուրաքանչյուրում՝ երեքական թիվ.
⊗
⊗
⊗
•
Եթե անհրաժեշտ է ծրագրի տարբեր հատվածներում ֆայլից կարդալ ն Ճ փոփոխականին վերագրել յուրաքանչյուր տողի առաջին թիվը, ապա այն կարելի է կազմակերպել ԲԷՃD պրոցեդուրայի միջոցով՝ ներմուծելով ավելորդ 8 ն Շ փոփոխականները, որոնք ծրագրում չեն օգտագործվում. ԲԷՃD(Բ,Ճ,8,Շ): Պրոցեդուրայի առաջին կատարման ժամանակ կկարդացվեն առաջին տողի երեք թվերը, երկրորդ կատարման ժամանակ՝ երկրորդ տողի երեք թվերը ն այլն: Նման իրավիճակներից խուսափելու համար հարմար է օգտվել ԲԷՃDԼN պրոցեդուրայից, որը մուտքային տվյալներից կարդալով մուտքի ցուցակում նշված փոփոխականների քանակին հավասար տվյալներ` կատարում է անցում հաջորդ տողի սկզբին: Նախորդ օրինակում ամեն անգամ գրելով
ԲԷՃDԼN(Բ,Ճ):
հերթական տողից կարդալով առաջին տվյալը՝ կանցնենք հաջորդ տողի առաջին տվյալին: Այսպիսով, առաջին կիրառման դեպքում Ճ փոփոխականին կվերագրվի 3 արժեքը, երկրորդ կիրառման արդյունքում` 4 արժեքը, իսկ երրորդ կիրառման դեպքում` 2 արժեքը: Եթե վերը բերված տվյալներից անհրաժեշտ է կարդալ առաջին տողի առաջին թիվը ն այնուհետն երրորդ տողի առաջին թիվը, ապա կարելի է գրել
ԲԷՃDԼN(Ճ):
ԲԷՃDԼN:
ԲԷՃDԼN(Ճ):
Առանց պարամետրի ԲԷՃDԼN պրոցեդուրան կատարում է անցում հաջորդ տողի սկզբին: ՄԲITԷ(f, Հելքի ցուցակ»)- պրոցեդուրան f ֆայլային փոփոխականի հետ կապված արդեն գոյություն ունեցող ֆայլում գրում է ելքի ցուցակում նշված փոփոխականների արժեքները: Ինչպես ԲԷՃD պրոցեդուրայի դեպքում, այստեղ նույնպես ելքի ցուցակում փոխականների քանակը սահմանափակված չէ, ն ՄԲITԷ(Բ,Ճ,8,Շ) պրոցեդուրայի կատարումը համարժեք է 8ԷՇIN
ՄԲITԷ(Բ,Ճ):
ՄԲITԷ(Բ,8):
ՄԲITԷ(Բ,Շ)
ԷND: բաղադրյալ օպերատորի կատարմանը: Տեքստային ֆայլերի համար ելքի ցուցակը կարող է բաղկացած լինել ՇԻՃԲ, ՏTԲINՇ, ինչպես նան ամբողջ կամ իրական տիպի մեկ կամ մի քանի փոփոխականներից: Տիպայնացված ֆայլերի համար ելքի ցուցակում նշված փոփոխականները ն ֆայլի բաղադրիչները պետք է ունենան նույն տիպը:
ՄԲITԷԼN(f,
Հելքի ցուցակ»)պրոցեդուրան f ֆայլային փոփոխականի հետ կապված արդեն գոյություն ունեցող ֆայլում գրում է ելքի ցուցակում նշված փոփոխականների արժեքները միայն այն տարբերությամբ, որ գրվող ինֆորմացիան ավարտվում է տողավերջի նշանով:
8.6. Տիպայնացված ֆայլերի համար կիրառվող պրոցեդուրաներ ն ֆունկցիաներ
ՊՐՈՑԵԴՈՒՐԱՆԵՐ
ՏԷԷK(f, ո) պրոցեդուրան ֆայլային f փոփոխականի հետ կապված ֆայլի ընթացիկ տարրի ցուցիչը տեղադրում է ֆայլի ո համարով բաղադրիչի վրա: Բաղադրիչների համարակալումը սկսվում է զրոյից: TԲՍNՇՃTԷ(f) պրոցեդուրան ֆայլային f փոփոխականի հետ կապված ֆայլից հեռացնում է, ընթացիկ բաղադրիչից սկսած, մինչն վերջին բոլոր բաղադրիչները:
ՖՈՒՆԿՑԻԱՆԵՐ
ԷՕԲ(f) ֆունկցիան ընդունում է TԲՍԷ արժեքը, եթե ընթացիկ տարրի ցուցիչը գտնվում է ֆայլի վերջին տարրից հետո (ցույց է տալիս ֆայլի վերջը), հակառակ դեպքում՝ ԲՃԼՏԷ: Օրինակ. 0,12
5,6
-4,8
•
ԷՕԲ(Բ)-ԲՃԼՏԷ
0,12
5,6
-4,8
•
ԷՕԲ(Բ)-TԲՍԷ
որտեղ - ֆայլի ցուցիչն է, իսկ աղյուսակում • -ով ցույց է տրված ֆայլի վերջը: Ակնհայտ է, որ եթե ֆայլը դատարկ է, ապա ԷՕԲ ֆունկցիան կընդունի TԲՍԷ արժեք. •
ԷՕԲ(Բ)-TԲՍԷ
ԲIԼԷՔՕՏ(f) ֆունկցիան վերադարձնում է f ֆայլային փոփոխականի հետ կապված ֆայլի այն ընթացիկ բաղադրիչի համարը, որը պետք է մշակվի մուտքի-ելքի հաջորդ գործողությամբ: Ֆայլի առաջին բաղադրիչն ունի 0 հերթական համարը: ԲIԼԷՏI2Է(f) ֆունկցիան վերադարձնում է f ֆայլային փոփոխականի հետ կապված ֆայլի բաղադրիչների քանակը:
8.7. Ֆայլերի կիրառման օրինակներ Օրինակ 8.1: Շ կուտակիչի հիմնային կատալոգում գրված է ամբողջ բաղադրիչներով DD1.DՃT ֆայլը: Դիցուք Բ1 ֆայլային փոփոխականի հետ կապված DD1.DՃT ֆայլում գրված են 10 ամբողջ թվեր: Գրել ծրագիր, որն ամբողջ բաղադրիչներով ֆայլից կընթերցի առաջին 8 բաղադրիչների արժեքները ն կհաշվի նրանց գումարը: Խնդրի լուծման ծրագիրն ունի ԷXՃM8/1 անունը:
ՔԲՕՇԲՃM ԷXՃM8/1:
ՄՃԲ Բ:ԲIԼԷ ՕԲ INTԷՇԷԲ:Տ,I,Ճ:INTԷՇԷԲ:
8ԷՇIN
ՃՏՏIՇN(Բ,'Շ:\DD1.DՃT'):
ԲԷՏԷT(Բ):
Տ:-0:
ԲՕԲ I:-1 TՕ 8 DՕ
8ԷՇIN
ԲԷՃD(Բ,Ճ):
Տ:-Տ+Ճ ԷND:
ՇԼՕՏԷ(Բ):
ՄԲITԷ(‘Տ-’,Տ) ԷND.
Մուտք` 1 2 3
ԵԼՔ՝
Տ-24
•
Տող 2-ում հայտարարվել է ամբողջ տիպի Բ ֆայլային փոփոխականը, որը տող 4-ում ՃՏՏIՇN պրոցեդուրայով կապվել է տրված ֆայլի հետ: Տող 5-ում կարդալու համար բացվել է ֆայլը: Պահանջվող գումարի հաշվման համար օգտագործվել է Տ փոփոխականը, որին նախապես վերագրվել է 0 արժեք (տող 6): Կազմակերպվել է I պարամետրով ցիկլ, որի յուրաքանչյուր արժեքի համար ֆայլից ընթերցվում ն Ճ փոփոխականին է վերագրվում ֆայլի հերթական տարրի արժեքը (տող 9): Ֆայլից ընթերցված արժեքը գումարվում է գումարի հաշվման համար նախատեսված Տ փոփոխականին (տող 10): Տող 12-ում փակվել է բացված ֆայլը:
Օրինակ 8.2: Շ կուտակիչի հիմնային կատալոգի ՃՃ ենթակատալոգում ստեղծել DD1.DՃT ֆայլը, որի մեջ գրված լինեն առաջին 12 բնական թվերը: Խնդրի լուծման ծրագիրն ունի ԷXՃM8/2 անունը:
ՔԲՕՇԲՃM ԷXՃM8/2:
ՄՃԲ Բ1:ԲIԼԷ ՕԲ INTԷՇԷԲ:
I:INTԷՇԷԲ:
8ԷՇIN ՃՏՏIՇN(Բ1,'Շ:\ՃՃ\DD1.DՃT'):
ԲԷՄԲITԷ(Բ1):
ԲՕԲ I:-1 TՕ 12 DՕ ՄԲITԷ(Բ1,I):
ՇԼՕՏԷ(Բ1):
ԷND. ԵԼՔ` 1 2
•
Տող 2-ում հայտարարվել է ամբողջ տիպի ֆայլային Բ1 փոփոխականը, որը տող 5-ում կապվել է Շ կուտակիչի հիմնային կատալոգի ՃՃ ենթակատալոգի DD1.DՃT ամբողջ բաղադրիչներով ֆայլի հետ: Տող 6-ում բացվել է Բ1 ֆայլային փոփոխականի հետ կապված DD1.DՃT ֆայլը՝ տվյալների ներմուծման համար: Տող 7-ում բացվել է ցիկլ, որտեղ ցիկլի պարամետրի ընդունած 1-ից մինչն 12 արժեքները գրվել են ստեղծված ֆայլի մեջ: Տող 8-ում փակվել է ստեղծված ֆայլը:
Օրինակ
8.3:
Շ: կուտակիչի հիմնային կատալոգի ենթակատալոգի 82 ենթակատալոգում ստեղծված է ո հատ ամբողջ տիպի բաղադրիչներով DD1.DՃT ֆայլը: Նույն ֆայլում գրել կենտ արժեք ունեցող տարրերը: Խնդրի լուծման ծրագիրն ունի ԷXՃM8/3 անունը:
ՔԲՕՇԲՃM ԷXՃM8/3:
ՄՃԲ Բ:ԲIԼԷ ՕԲ INTԷՇԷԲ:
I,N,INTԷՇԷԲ:
X:ՃԲԲՃY[1..100] ՕԲ INTԷՇԷԲ:
8ԷՇIN ՃՏՏIՇN(Բ,'Շ:\81\82\DD1.DՃT'):
ԲԷՃD(N):
ԲԷՏԷT(Բ):
ԲՕԲ I:-1 TՕ N DՕ ԲԷՃD(Բ,X[I]):
ԲԷՄԲITԷ(Բ):
ԲՕԲ I:-1 TՕ N DՕ
IԲ X[I] MՕD 2-1 TԻԷN ՄԲITԷ(Բ,X[I]):
ՇԼՕՏԷ(Բ)
ԷND.
ՄՈՒՏՔ՝ 3 4 6
N-10 6 7 8
•
ԵԼՔ` •
Տող 2-ում հայտարարվել է ամբողջ տիպի Բ ֆայլային փոփոխականը: Տող 6-ում Բ ֆայլային փոփոխականը կապվել է Շ կուտակիչի հիմնային կատալոգի 81 ենթակատալոգի 82 ենթակատալոգի DD1.DՃT ֆայլի հետ: Տող 7-ում ներմուծվել է ֆայլում բաղադրիչների քանակը (N): Տող 8-ում կարդալու համար բացվել է ֆայլը: Տող 9-ում ստեղծված ցիկլի մարմնում ֆայլից կարդացվել են ֆայլի բոլոր տարրերը ն պահվել X ամբողջ տիպի զանգվածի մեջ: Տող 10-ում տվյալների ներմուծման համար բացվել է Բ ֆայլային փոփոխականի հետ կապված ֆայլը: Տողեր 11-ից 12-ում զանգվածի կենտ արժեք ունեցող տարրերը գրվել են նույն ֆայլի մեջ: Այն իրականացվել է պարամետրով ցիկլի մարմնում: Տող 13-ում փակվել է ֆայլը:
Օրինակ 8.4: Շ կուտակիչի հիմնային կատալոգի 81 ենթակատալոգի 82 ենթակատալոգում ստեղծված են ո հատ իրական տիպի բաղադրիչներով DD1.DՃT ն DD2.DՃT ֆայլերը: Շ կուտակիչի հիմնային կատալոգում ստեղծել նոր DD3.DՃT ֆայլը, որում գրված լինեն DD1.DՃT ն DD2.DՃT ֆայլերի դրական բաղադրիչները: Խնդրի լուծման ծրագիրն ունի ԷXՃM8/4 անունը:
ՔԲՕՇԲՃM ԷXՃM8/4:
ՄՃԲ Բ1,Բ2,Բ3:ԲIԼԷ ՕԲ ԲԷՃԼ:
I,N,INTԷՇԷԲ: Ճ:ԲԷՃԼ:
8ԷՇIN ՃՏՏIՇN(Բ1,'Շ:\81\82\DD1.DՃT'): ՃՏՏIՇN(Բ2,'Շ:\81\82\DD2.DՃT'): ՃՏՏIՇN(Բ3,'Շ:\DD3.DՃT'):
ԲԷՃD(N):
ԲԷՏԷT(Բ1):
ԲԷՏԷT(Բ2):
ԲԷՄԲITԷ(Բ3):
ԲՕԲ I:-1 TՕ N DՕ
8ԷՇIN
ԲԷՃD(Բ1,Ճ]): IԲ Ճ»0 TԻԷN ՄԲITԷ(Բ3,Ճ):
ԲԷՃD(Բ2,Ճ]): IԲ Ճ»0 TԻԷN ՄԲITԷ(Բ3,Ճ):
ԷND:
ՇԼՕՏԷ(Բ1):
ՇԼՕՏԷ(Բ2):
ՇԼՕՏԷ(Բ3):
ԷND.
Տող 2-ում հայտարարվել են իրական տիպի Բ1, Բ2, Բ3 ֆայլային փոփոխականները: Տող 5-ում Բ1 ֆայլային փոփոխականը կապվել է Շ կուտակիչի հիմնային կատալոգի ենթակատալոգի ենթակատալոգի DD1.DՃT ֆայլի հետ, իսկ տող 6-ում Բ2 ֆայլային փոփոխականը` նույն կատալոգի DD2.DՃT ֆայլի հետ: Տող 7-ում Բ3 ֆայլային փոփոխականը կապվել է Շ կուտակիչի հիմնային կատալոգի DD3.DՃT ֆայլի հետ: Տող 8-ում ներմուծվել է ֆայլում բաղադրիչների քանակը (N): Տող 9-ում ն 10-ում կարդալու համար բացվել են համապատասխանաբար DD1.DՃT ն DD2.DՃT ֆայլերը: Տող 11-ում տվյալների ներմուծման համար բացվել է Բ ֆայլային փոփոխականի հետ կապված DD3.DՃT ֆայլը: Տող 12-ում բացվել է պարամետրով ցիկլ, որի մարմնում ֆայլերից Ճ փոփոխականի մեջ է բերվում հերթական տարրի արժեքը, ն եթե այն դրական է, ապա գրվում է DD3.DՃT ֆայլի մեջ: Տողեր 13-ից 19-ում փակվել են բոլոր ֆայլերը:
8.8. Տնային առաջադրանքներ Տնային առաջադրանքում ուսանողը պետք է կատարի աղյուսակի դասամատյանի` իր համարին համապատասխան տողում նշված խնդիրները, որոնք բերված են բաժին 8-ում: Մատյանի համարը
Առաջադրվող խնդիրների համարները 571, 581, 591 572, 586, 593 573, 587, 594 574, 584, 595 575, 590, 596 576, 585, 597 577, 589, 592 578, 583, 598
579, 588,599 580, 582, 600 571, 590, 593 572, 581, 594 573, 584, 591 574, 587, 595 575, 582, 596 576, 588, 597 577, 589, 592 578, 586, 598 579, 585, 599 580, 583, 600 571, 590, 592 572, 583, 591 573, 585, 595 574, 587, 593 575, 588, 596 576, 581, 597 577, 589, 598 578, 582, 599 579, 586, 600 580, 584, 594
Գրականություն 1. Աղգաշյան Ռ., Ավետիսյան Ս. ՔՃՏՇՃԼ ծրագրավորում: ՀՊՕՀ, 2001թ. 2. Աղգաշյան Ռ., Առաքելյան Ա., Ավետիսյան Ս., Դանիելյան Ս. Քոմփյութերների կիրառում ն ծրագրավորում / խնդիրների ժողովածու / : ՀՊՕՀ, 1998թ. 3. Առաքելյան Ա., Աղգաշյան Ռ., Ավետիսյան Ս., Դանիելյան Ս., Մանուկյան Լ. ՀՊՕՀ ընդհանուր կրթության պետական ամփոփիչ քննության քննահարցերի շտեմարանի խնդիրների լուծման ուղեցույց / ¾ՀՄ ն ծրագրավորում / : ՀՊՕՀ, 1996թ. 4. Աղգաշյան Ռ., Ղուկասյան Վ., Ծրագրավորում բոլորի համար. Մաս1, Ալգորիթմների կառուցում, ՀՊՕՀ, 2000թ.
Պատվեր՝ 636
Տպաùանակ՝ 100
ՏպագրվաÍ ¿ Հայաստանի Պետական Öարտարագիտական ՀամաÉսարանի տպարանáõմ ºր¨ան, Տերյան 105