Այստեղ կդիտակենք C++ համակարգում ներկառուցված հա-ճախակի օգտագործվող հետևյալ տեսակի գործողությունները`
- թվաբանական
- համեմատման կամ բաղդատման
- տրամաբանական
- վերագրման
- ինկրեմենտ և դեկրեմենտ
- բիթային
- ձևափոխման գործողություններ
- sizeof
- ստորակետ
Թվաբանական գործողությունները հետևյալն են.
+ մեկտեղանի գումարում
- մեկտեղանի հանում
+ երկտեղանի գումարում
- երկտեղանի հանում
* բազմապատկում
/ բաժանում
% ամբողջթվային բաժանման մնացորդ
Մեկտեղանի գործողությունը այն գործողությունն է, որը օգտա-գործում է մեկ օպերանդ: Երկտեղանի գործողությունը այն գործողութ-յունն է, որը օգտագործում է երկու օպերանդներ: Օրինակ`
-2+5
արտահայտությունում ունենք մեկտեղանի հանում և երկտեղանի գու-մարում:
Եթե բաժանման գործողության երկու օպերանդները ամբողջ-թվային տիպի տվյալներ են, ապա այդ գործողությանը անվանում են ամբողջթվային բաժանում: Ամբողջթվային բաժանման գործողության արդյունքում ստացվում է ամբողջ թիվ, իսկ մնացած բոլոր դեպքերում ստացվում է սահող ստորակետով թիվ: Օրինակներª
9/2 // ամբողջթվային բաժանում է և ստացվում է 4
8/9 // ամբողջթվային բաժանում է և ստացվում է 0
8/8 // ամբողջթվային բաժանում է և ստացվում է 1
9.0/2.0 // ամբողջթվային բաժանում չէ և ստացվում է 4.5
18/4.0 // ամբողջթվային բաժանում չէ և ստացվում է 4.5
18.0/4 // ամբողջթվային բաժանում չէ և ստացվում է 4.5
Ամբողջթվային բաժանման մնացորդի ստացման գործողութ- յունը վերադարձնում է առաջին օպերանդը երկրորդի վրա բաժանման մնացորդը: Գործողության երկու օպերանդները պետք է լինեն միայն ամբողջթվային տիպի (char, short, int, long): Օրինակներª
7%3 // ստացվում է 1
8%9 // ստացվում է 8
8%8 // ստացվում է 0
8%5.2 // սխալ է, երկրորդ օպերանդը ամբողջթվային չէ
Համեմատման գործողությունները հետևյալն են`
== նույնաբար հավասար
!= հավասար չէ
> մեծ
< փոքր
>= մեծ կամ հավասար
<= փոքր կամ հավասար
Համեմատման գործողության արդյունքի արժեքը bool տիպի մեծություն է, այլ կերպ ասած այն կարող է ունենալ true կամ false արժեքներ: Եթե այդ արժեքները հանդիպում են այն տիպի ենթատեքս-տում, որտեղ պահանջվում է ամբողջ արժեքներ, ապա true-ն ինքնըստինքյան ձևափոխվում է 1-ի, իսկ false-ը` 0-ի: Օրինակներª
10 > 5 // ստացվում է true կամ 1
10 < 5 // ստացվում է false կամ 0
Տրամաբանական գործողությունները հետևյալն են`
&& տրամաբանական ԵՎ
I I տրամաբանական ԿԱՄ
! տրամաբանական ՈՉ
Տրամաբանական գործողության արդյունքի արժեքը bool տիպի մեծություն է:
Վերագրման գործողությունները հետևյալն են`
= վերագրել
+= գումարել և վերագրել
-= հանել և վերագրել
*= բազմապատկել և վերագրել
/= բաժանել և վերագրել
%= հաշվել մնացորդը և վերագրել
Վերագրման գործողության արդյունքում օբյեկտը ստանում է նոր արժեք, իսկ հին արժեքը վերանում է: Օրինակ, եթե տրված էª
int i1=25, i2=128;
float f1=0.125;
char ch=’A’;
ապա կատարելով հետևյալ վերագրումներըª
i1=2856;
f1=0.36;
ch=’B’;
i2=i1;
i1, i2, f1 և ch փոփոխականներն կտրվեն նոր արժեքներ: Ինչպես երևում է բերված օրինակներից, բոլոր գործողություններում վերագրվող արժեքների տիպերը համընկնում են օբյեկտների տիպերին:
Եթե օբյեկտի և արժեքի տիպերը չեն համընկնում, ապա կոմպիլյատորը փորձում է արժեքի տիպը ձևափոխել օբյեկտի տիպի և եթե այդպիսի ձևափոխություն հնարավոր է, ապա կոմպիլյատորը անբացահայտորեն կատարում է այն: Ընդ որում, արժեքի ճշտության կորուստի դեպքում ոչ էական սխալի վերաբերյալ հաղորդագրություն է տրվում: Օրինակ`
i1=5.715;
հրահանգի կատարման ժամանակ սահող ստորակետով 5.715 արժեքը ձևափոխում է ամբողջթվային 5 արժեքի և այդ արժեքը վերագրում է i1 փոփոխականին:
Եթե տիպերի անբացահայտ համապատասխանեցում հնարավոր չէ, ապա կոմպիլյատորը սխալի մասին հաղորդագրություն է տալիս: Օրինակ, սխալ է հետևյալ վերագրումը ª
ch=’Hello’;
Սխալներից խուսափելու և ծրագիրը հասկանալի դարձնելու համար օգտագործում են տվյալների տիպերի բացահայտ ձևափոխություն (տես տիպերի ձևափոխման գործողություններ կետը):
Վերագրման գործողությունը դա հրահանգավորում է և այն կարելի է օգտագործել բոլոր այն տեղերում, որտեղ կարելի է օգտագործել հրահանգավորում: Օրինակª
a1 = (a2 = (a3 = 20) + 10 ) +5;
արտահայտությունը a3 փոփոխականի մեջ պահում է 20 արժեքը, a2 փոփոխականի մեջª 30 արժեքը, իսկ a1 փոփոխականի մեջ` 35 արժեքը:
i+=5;
a1*=n+3;
արտահայտությունները համապատասխանաբար համարժեք են հետևյալ արտահայտություններինª
i=i+5;
a1=a1*(n+3);
Վերագրման գործողությունը չի կարելի օգտագործել == գործո- ղության փոխարեն: Օրինակª if (a1=10) սխալ կլինի:
ինկրեմենտ և դեկրեմենտը մեկտեղանի գործողություններ են, որոնց դեպ-քում ամբողջ կամ իրական արգումենտները համապատասխանաբար աճում կամ նվազում են մեկ միավորով: Այս գործողությունները լինում ենª
++ նախդիրային ինկրեմենտ // օրինակª ++a1
++ վերջդիրային ինկրեմենտ // օրինակª a1++
- - նախդիրային դեկրեմենտ // օրինակª - -a1
- - վերջդիրային դեկրեմենտ // օրինակª a1- -
Օրինակներª
Եթե num փոփոխականի արժեքը 8 է, ապա
num++; կամ ++num;
հրահանգները նրա արժեքը կդարձնեն 9: Ընդ որում, նրանք համարժեք են հետևյալ վերագրման հրահանգինª
num= num+1;
Նախդիրային և վերջդիրային ինկրեմենտների միջև եղած տարբերութ-յունները կարելի է պարզել հետևյալ օրինակների միջոցովª
a1=14;
// a1-ը ստանում է 15 արժեքը, իսկ հետո այն վերագրում է a2-ին
a2=++a1;
// a3-ին վերագրում է 14 , իսկ հետո a1-ը ստանում է 15 արժեքը
a3=a1++;
Բիթային գործողությունները հետևյալն են`
~ բիթային ՈՉ
<< ձախ տեղաշարժ
>> աջ տեղաշարժ
& բիթային ԵՎ
^ բիթային ԲԱՑԱՌՈՂ ԿԱՄ
| բիթային ԿԱՄ
&= բիթային ԵՎ վերագրումով
^= բիթային ԲԱՑԱՌՈՂ ԿԱՄ վերագրումով
|= բիթային ԿԱՄ վերագրումով
<<= ձախ տեղաշարժ վերագրումով
>>= աջ տեղաշարժ վերագրումով
Բիթային գործողությունների կատարման ժամանակ օպերանդ-ները դիտարկվում են որպես բիթերի կանոնակարգված համախումբ: Այդ բիթերից յուրաքանչյուրը կարող է ունենալ 0 կամ 1 արժեք: Բիթերից կազմավորված օբյեկտին անվանում են բիթային վեկտոր:
Բիթային ՈՉ(~)գործողությունը փոխում է օպերանդում պարունակ- վող բոլոր բիթերի արժեքները: 0 արժեքը դարձնում է 1, իսկ 1 արժեքը` 0:
Ձախ և աջ ( << և >>) տեղաշարժերի ժամանակ ձախ օպերանդի բիթերը տեղաշարժվում են համապատասխան ուղղությամբ աջ օպերանդում ցույց տրված քանակի դիրքով: Դուրս հրված բիթերի արժեքները կորչում են, ազատված բիթերը լրացվում են զերոներով:
Բիթային ԵՎ ( & ) գործողության կատարման ժամանակ համեմատվում են ձախ և աջ օպերանդների միևնույն դրիքերում գտնվող բիթերի արժեքները: Եթե համեմատվող երկու բիթերի արժեքները հավասար են մեկի, ապա այդ դիրքում գտնվող բիթին տրվում է մեկ արժեք, իսկ մնացած բոլար դեպքերում - զերո արժեք:
Բիթային ԲԱՑԱՌՈՂ ԿԱՄ ( ^ ) գործողության կատարման ժամանակ համեմատվում են ձախ և աջ օպերանդների միևնույն դրիքերում գտնվող բիթերի արժեքները: Եթե համեմատվող երկու բիթերի արժեքները տարբեր են, ապա այդ դիրքում գտնվող բիթին տրվում է մեկ արժեք, իսկ եթե հավասար են` տրվում է զերո արժեք:
Բիթային ԿԱՄ ( | ) գործողության կատարման ժամանակ կատարվում է տրամաբանական գումարման գործողություն: Եթե համեմատվող երկու բիթերի արժեքները հավասար են զերոյի, ապա այդ դիրքում գտնվող բիթին տրվում է զերո արժեք, իսկ մնացած բոլոր դեպքերում - մեկ արժեք:
Եթե && կամ II գործողությունների փոխարեն սխալմամբ օգ-տագործվեն & կամ I, ապա ծրագրի կոմպիլյացիայի ժամանակ սխալի մասին ոչ մի հաղորդագրություն չի տրվի և խնդրի լուծման արդյունքը կլինի սխալ:
Տիպերի ձևափոխման գործողությունները C++ լեզվում իրականաց- նում են երկու եղանակովª ֆունկցիոնալ և նախդիրային:
Եթե f1 փոփոխականը float տիպի է, ապա նրա արժեքը int տիպի ձևափոխելու և int տիպի i1 փոփոխականին վերագրելու համար պետք է գրել հետևյալ հրահանգները`
i1 = int(f1); // ֆունկցիոնալ ձևափոխություն
i1 =(int)f1; // նախդիրային ձևափոխություն
Եթե տվյալի տեսակը տրված է մեկից ավելի բառերով, ապա կա-րելի է օգտագործել միայն նախդիրային ձևափոխություններ: Օրինակª
i2 =(unsigned int) f1;
Տվյալների հետ աշխատելիս խորհուրդ է տրվում կատարել նրանց տիպերի բացահայտ ձևափոխությունները: Այդ դեպքում կերևա, որ այդ գործողությունները կատարվել են իմացությամբ և կոմպիլյատո- րի կողմից չի տրվի ոչ էական սխալի վերաբերյալ հաղորդագրություն:
sizeof գործողությունը մեկտեղանի գործողություն է, որը հաշ- վում է իր օպերանդի չափը բայթերով: Այն ունի հետևյալ ընդհանուր գրելաձևերը`
sizeof օբյեկտ ;
sizeof ( օբյեկտ ) ;
sizeof (տվյալի տեսակ ) ;
Ինչպես երևում է այդ գրելաձևերից, sizeof գործողության համար որպես օպերանդ կարող են հանդես գալ փոփոխականները կամ տվյալների տեսակները: Վերջիններս միայն փակագծերի մեջ են գրվում: Օրինակª
sizeof f1;
sizeof ( f1 );
sizeof(double),
Հետևյալ ծրագրային տողով կարելի է որոշել սեփական համակարգիչում օգտագործվող տվյալի տեսակի չափըª
cout << “double տվյալի չափը”
<< sizeof(double) << “ բայթ” << endl;
Ստորակետ : Արտահայտությունը կարող է բաղկացած լինել մի քանի ենթաարտահայտություններից, որոնք իրարից բաժանված են ստորա-կետներով: Այդ ենթաարտահայտությունները հաշվարկվում են ձախից աջ: Վերջնական արդյունքը կլինի հավասար նրանցից ամենաաջի արդ-յունքին: Հետևյալ պայմանական գործողության մեջ յուրաքանչյուր պայմանին համապատասխան արդյունքը տրված է ցուցակով
(ia < ib) ? i1=1, d1=0.25, c1='a' : i1=2; d1=1.2,c1='b' ;
Այս գործողության կատարման արդյունքում , եթե ia < ib համե-մատման արդյունքը իրական է (true), օգտագործված փոփոխական- ները կունենան հետևյալ արժեքները`
i1=1, d1=0.25, c1='a' ,
հակառակ դեպքում, եթե ia < ib համեմատման արդյունքը կեղծ է (false), նրանց արժեքները կլինեն`
i1=2; d1=1.2,c1='b':
Комментариев нет:
Отправить комментарий