Ողջո՜ւյն, այդ ես եմ, քո առաջին ծրագիրը։
» տողը։Գործարկենք տեքստային խմբագրիչը և նրա օգնությամբ ստեղծենք
ex01.cpp
ֆայլը՝ հետևյալ պարունակությամբ․
// Առաջին C++ ծրագիրը #include <iostream> int main() { std::cout << "Ողջո՜ւյն, այդ ես եմ, քո առաջին ծրագիրը:\n"; }Շրագրի տեքստը ֆայլու գրառելուց հետո այն պետք է կոմպիլյատորի օգնությամբ թարգմանել մեքենայական հրամանների և կատարել։ Բայց մի փոքր առաջ անցնենք ու ծրագրի ամեն մի տողի համար տանք համառոտ մեկնաբանություն։
Առաջին տողը «
//
» նիշերով սկսվող և մինչև տողի վերջը շարունակվող մեկնաբանություն է։ Մեկնաբանությունները, որոնք կարող են պարունակել կամայական տեքստ, ծրագրի իմաստի վրա չեն ազդում և ամբողջովին անտեսվում են կոմպիլյատորի կողմից։ Դրանց նպատակն է ծրագում բացատրություններ թողնել մարդու համար։Երկրորդ տողում գրված
#include
հրահանգը նախապրոցեսորից պահանջում է ծրագրին կցենլ iostream
գրադարանային ֆայլը։ Այս ֆայլում են սահմանված ստանդարտ ներմուծման ու արտածման հոսքերի հետ աշխատող գործողություններն ու օբյեկտները։ Ի թիվս զանազան ֆունկցիաների ու օբյեկտների, iostream
ֆայլը պարունակում է ստանդարտ արտածման հոսքի հետ կապված cout
օբյեկտը և իր աջ արգումենտը ձախ արգումենտի մեջ գրող <<
գործողությունը։C++ լեզվով գրված ամեն մի ծրագիր պետք է պարունակի
main
անունով միակ ֆունկցիա։ Այս ֆունկցիան հանդիսանում է ծրագրի մուտքի կետը, այսինքն՝ ծրագրիրը սկսում է կատարվել main
ֆունկցիայից։ Ավելի պատկերավոր ասած՝ ծրագիրը կատարելու համար օպերացիոն համակարգը կանչում է main
ֆունկցիան։ Տվյալ դեպքում main
ֆունկցիան արգումենտներ չի սպասում և վերադարձնում է int
(integer, ամբողջ թիվ) տիպի արժեք։ Օպերացիոն համակարգն այս ֆունկցիայի արժեքը մեկնաբանում է որպես ծրագրի հաջող կամ անհաջող ավարտի ազդանշան։ Ըստ պայմանավորվածության, 0
արժեքը համարվում է հաջող ավարտ, իսկ 0
-ից տարբեր դրական ամբողջ թվերը՝ անհաջող ավարտ։ C++ ֆունկցիայից որևէ արժեք է վերադարձվում է return
հրամանով։ Սակայն միայն main
ֆունկցիայի համար կա բացառություն, որ, եթե բացահայտորեն նշված չէ return
հրամանը, ապա վերադարձվող արժեքը համարվում է 0
։main
ֆունկցիայի մարմինը, որ պարփակված է «{
» և «}
» փակագծերի մեջ, պարունակում է միակ արտահայտություն, որտեղ <<
գործողության օգնությամբ «Ողջո՜ւյն, աշխարհ։» տողն ուղարկվում է ստանդարտ արտածման հոսքի հետ կապված cout
(cconsole output) օբյեկտին։ cout
անունից առաջ գրված std::
նախդիրը ցույց է տալիս, որ այդ երկու անունները պատկանում են լեզվի Կաղապարների ստանդարտ գրադարանին (Standard template library, STL)։
Պետք է հիշել, որՀիմա այս ծրագիրը թարգմանենք (կոմպիլյացնենք) մեքենայական կոդի և աշխատեցնենք։ C++ լեզվով գրված ծրագրերը թարգմանության ժամանակ անցնում է երեք հիմնական փուլ. i) նախնական մշակում - preprocessing -- այս փուլում մշակվում ենcout
-ը C++ լեզվի ծառայողական բառ չէ։ Այն ընդամենըiostream
գրադարանում հայտարարված ավտոմատ օբյեկտ է։
#
նիշով սկսվող հրահանգները, որոնք ծրագրի տեքստի հետ կատարվում են զուտ տեքստային գործողություններ։ Օրինակմ ֆայլերի կցում, անունների փոփոխում արժեքներով և այլն, ii) թարգմանություն - compilation -- այս փուլում ծրագրավորողի գրած տեքստը թարգմանվում է մեքենայական կոդի և ստեղծվում են այսպես կոչված օբյեկտային ֆայլեր, iii) կապակցում - linking -- այս փուլում նոր ստեղծված օբյեկտային ֆայլերը կապակցվում են գրադարանային (կամ այլ) օբյեկտային ֆայլերի հետ և ստեղծվում է կատարվող մոդուլ։Սովորաբար ծրագրի տեքստից կատարվող մոդուլի ստացման այս երեք փուլերը թաքնված են օգտագործողից և, պարզ ծրագերի դեպքում, կատարվում են մեկ հրամանով։ Օրինակ, Bash ինտերպրետատորի հրամանային տողում ներմուծենք հետևյալը, որտեղ
-std=c++11
պարամետրով կոմպիլյատորից պահանջում ենք միացնել C++11 ստանդարտի հատկությունները.
$ g++ -std=c++11 ex01.cppկամ, եթե ուզում ենք օգտագործել
clang++
կոմպիլյատորը, ապա.
$ clang++ -std=c++11 ex01.cppԵթե կոմպիլյատորը որևէ սխալ չի հայտնաբերել, ապա ընթացիկ պանակում ստեղծվում է
a.out
անունով կատարվող մոդուլը։ Երբ հարկավոր է կատարվող մոդուլին այլ անուն տալ, ապա կարող ենք օգտագործել կոմպիլյատորի -o
պարամետրը։ Օրինակ.
$ clang++ -std=c++11 -o ex01 ex01.cppայս հրամանի կատարման արդյունքում կատարվող մոդուլը
a.out
-ի փոխարեն կունենա ex01
անունը։ex01
մոդուլն աշխատեցնելու համար պետք է Bash—ի հրամանային տողում ներմուծել.
$ ./ex01 Ողջո՜ւյն, աշխարհ։Ծրագրի կատարման արդյունքում տեսնում ենք արտածված տողը. սա հենց այն է, ինչ ակնկալում էինք առաջին ծրագրից։
Որպեսզի համոզվենք, որ իսկապես
main
ֆունկցիայի վերադարձրած արժեքը փոխանցվում է օպերացիոն համակարգին, կարող ենք ծրագրի կատարումից հետո Bash ինտերպրետատորի echo
հրամանով դուրս բերել $?
փսևդոփոփոխականի արժեքը։
$ echo $? 0Հիմա վերը բերված օրինակի
ex01.cpp
ֆայլը պատճենենք ex02.cpp
անունով, և main
ֆունկցիայի մարմինն ավարտող «}
» փակագծից առաջ ավելացնենք «return 0;
» հրամանը։
#includeԱպա նորից կոմպիլյացնենք ծրագիրը, աշխատեցնենք ու արտածենքint main() { std::cout << "Ողջո՜ւյն, աշխարհ։" << std::endl; return 7; }
$?
փսևդոփոփոխականի արժեքը։ Հրամանների հաջորդականությունը և արտածված արդյունքները հետևյալ տեսքն ունեն.
$ g++ -std=c++11 -o ex02 ex02.cpp $ ./ex02 Ողջո՜ւյն, աշխարհ։ $ echo $? 7
No comments:
Post a Comment