C++ լեզվում նախատեսված են 2 տեսակի ֆունկցիաներ`
1.Արժեքներ վերադաձնող ֆունկցիաներ - ֆունկցիաներ, որոնք կանչվում են արտահայտություններից և վերադարձնում են միայն մեկ արժեք:
2. void տեսակի ֆունկցիաներ(պրոցեդուրաներ) - ֆունկցիաներ, որոնք կանչվում են առանձին հրահանգների միջոցով և արժեքներ չեն վերա-դարձնում:
void ՏԻՊԻ ՖՈՒՆԿՑԻԱՆԵՐ
void տիպի ֆունկցիան արտաքնապես շատ նման է main() ֆունկցիային: Միայն թե այստեղ նրա վերնագրի մեջ int առանցքային բառի փոխարեն գրվում է void և քանի որ այն արժեքներ չի վերադարձնում կանչող ֆունկցիային, նա չի պարունակում
return 0;
տեսակի հրահանգ:
Դրտարկենք void ֆունկցիա օգտագործող ծրագիր: Գրենք ծրագիր, որը տպում է հետևյալ հաղորդագրությունըª
***************************
***************************
ԲԱՐԻ ԳԱԼՈՒՍՏ !
***************************
***************************
Ծրագիրը կունենա հետևյալ տեսքըª
#include <iostream>
using namespace std;
void Print2Lines(); // ֆունկցիայի նախատիպ
int main()
{
Print2Lines(); // ֆունկցիայի կանչում
cout << “ԲԱՐԻ ԳԱԼՈՒՍՏ !” << endl;
Print2Lines(); // ֆունկցիայի կանչում
return 0;
}
void Print2Lines(); // ֆունկցիայի վերնագիր
{
cout << “***************************” << endl;
cout << “***************************” << endl;
}
C++ լեզվում ֆունկցիաների նկարագրումները կարող են հան-դես գալ ցանկացած հաջորդականությամբ: Կարելի է main() ֆունկցիան գրել ծրագրի վերջում , բայց ընդունված է այն գրել ծրագրի սկզբում, իսկ մնացած ֆունկցիաները գրել նրանից հետո:
C++ լեզվում ցանկացած նույնարկող օգտագործումից առաջ պետք է անպայման հայտարարված լինի: Ֆունկցիաների հայտարարու- մը պետք է ֆիզիկապես նախորդի նրան դիմելու հրահանգներին:
Ֆունկցիայի հայտարարումը թարգմանիչին է հաղորդում նրա անունը, նրանով վերադաձվող արժեքի տեսակը (void , int, float և այլն) և նրա պարամետրերի տվյալների տիպերը: Վերևում բերված ծրագրում օգտագործված է ֆունկցիների երեք հայտարարումներ: Նրանցից առաջինը չի պարունակում ֆունկցիայի մարմին: Մնացած երկու հայ-տարարումները (main և Print2Lines ֆունկցիաների համար) պարունա-կում են ֆունկցիայի մարմին:
C++ լեզվում ֆունկցիաների այնպիսի հայտարարումը, երբ գրված չէ ֆունկցիայի մարմինը, անվանում են ֆունկցիայի նախատի-պեր, իսկ ֆունկցիայի մարմինը պարունակող հայտարարմներին ան-վանում են ֆունկցիայի նկարագրում:
Ֆունկցիայի նկարագրման ժամանակ նրա անունից հետո փակագծերի մեջ գրվում են ֆորմալ պարամետրերը, որոնք միմիյանցից առանձնացվում են ստորակետով: Օրինակª
void DoSam( int velocity, float angle);
Ֆունկցիաների նախատիպերում ֆորմալ պարամետրերի ցու-ցակը պետք է պարունակի տվյալների տեսակները և ցուցակում ֆոր- մալ պարամետրերի նույնարկողները կարելի է չգրել: Օրինակ, թույլա-տրվում է հետևյալ գրելաձևըª
void DoSam( int , float );
Ինֆորմացիա ստանալու տեսանկյունից նույնարկողների գրու- մը օգտակար է, սակայն թարգմանիչը այն անտեսում է:
Ֆունկցիայի նկարագրման ժամանակ որպես պարամետրեր կարող են հանդես գալ միայն փոփոխականները:
Void ֆունկցիաներին դիմելու համար նրանց անունները օգտա-գործվում են որպես հրահանգներ փակագծերի մեջ ցույց տալով փաս-տացի պարամետրերի ցուցակը: Որպես փաստացի պարամետրեր կա- րող են հանդես գալ փոփոխականները և արտահայտությունները: Հա-ճախակի Ֆորմալ պարամետրերի փոխարեն օգտագործում են նաև պա-րամետր տերմինը, իսկ փաստացի պարամետրերի փոխարեն արգու- մենտ տերմինը:
Ֆունկցիաներին դիմելու ժամանակ փաստացի պարամետրերը համապատասխանեցվում են ֆորմալ պարամետրերի հետ համաձայն իրենց գրաված դիրքերի ( ձախից աջ ) և ղեկավարումը փոխանցվում է ֆունկցիայի մարմնի մեջ գտնվող առաջին կատարվող հրահանգին: Վերջին հրահանգը կատարվելուց հետո, ղեկավարումը փոխանցվում է կանչման կետին:
C++ լեզվում նախատեսված են երկու տեսակի ֆորմալ պարա-մետրերª արժեքներով և հղումով փոխանցվող ֆորմալ պարամետրեր: Ըստ արժեքների փոխանցվող պարամետրերի դեպքում տվյալի տիպե- րը հայտարարվում են առանց ամպերսանդի(&): Այդ դեպքում ֆունկ- ցիան ստանում է փաստացի պարամետրերի պատճեն: Հղումով փո-խանցվող պարամետրերը հայտարարելու ժամանակ տվյալի տիպից հետո գրվում է ամպերսանդ: Այդ դեպքում ֆունկցիային է փոխանցվում փաստացի պարամետրերի հասցեները: Օրինակª
void Example ( int ¶m1, // հղումով փոխանցվող պարամետր
float param2) // արժեքով փոխանցվող պարամետր
Որպես ըստ արժեքների փոխանցվող պարամետրեր կարող են հանդես գալ որոշակի արժեքներ ունեցող ցանկացած տարրեր: Օրի- նակ, հաստատուն, փոփոխական, արտահայտություն և այլն: Քանի որ ըստ արժեքների փոխանցվող պարամետրերը չեն ստանում փաստացի պարամետրերի հասցեները, ապա նրանց փոփոխել կամ անմիջապես դիմել անհնարին է: Ֆունկցիայից դուրս գալու հետ միասին ըստ ար-ժեքների փոխանցվող պարամետրերը տեղական(լոկալ) փոփոխական-ների հետ միասին վերանում են, այդ իսկ պատճառով կանչող ֆունկ-ցիային ինֆորմացիա վերադաձնել նրանց միջոցով անհնարին է:
Հղումով փոխանցվող պարամետրերի դեպքում փաստացի և ֆոր-մալ պարամետրերը դառնում են հոմանիշներ և ցանկացած փոփոխություն միժամանակ վերաբերվում է երկուսին էլ: Որպես հղումով փոխանցվող պարամետրեր կարող են հանդես գալ միայն փոփոխականները:
Комментариев нет:
Отправить комментарий