/** Page structure tweaks for layout editor wireframe */ body#layout #main, body#layout #sidebar { padding: 0; } -->

понедельник, 19 декабря 2011 г.

ՖՈՒՆԿՑԻԱՆԵՐ, void ՏԻՊԻ ՖՈՒՆԿՑԻԱՆԵՐ


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 &param1,  //  հղումով  փոխանցվող պարամետր
  float   param2)    // արժեքով փոխանցվող պարամետր
Որպես ըստ  արժեքների փոխանցվող պարամետրեր կարող  են հանդես գալ որոշակի արժեքներ ունեցող ցանկացած տարրեր: Օրի-   նակ, հաստատուն, փոփոխական, արտահայտություն և այլն: Քանի որ ըստ  արժեքների փոխանցվող պարամետրերը չեն ստանում փաստացի պարամետրերի հասցեները, ապա նրանց փոփոխել կամ անմիջապես դիմել անհնարին է: Ֆունկցիայից դուրս գալու հետ միասին ըստ  ար-ժեքների փոխանցվող պարամետրերը տեղական(լոկալ)  փոփոխական-ների հետ միասին վերանում են, այդ իսկ պատճառով կանչող ֆունկ-ցիային ինֆորմացիա վերադաձնել նրանց միջոցով անհնարին է:
Հղումով փոխանցվող պարամետրերի դեպքում փաստացի և ֆոր-մալ պարամետրերը դառնում են հոմանիշներ և ցանկացած փոփոխություն միժամանակ վերաբերվում է երկուսին էլ: Որպես հղումով փոխանցվող պարամետրեր կարող են հանդես գալ միայն փոփոխականները:


Комментариев нет:

Отправить комментарий