for ցիկլերը
C++ում բացի while ցիկլերից կան նաև for ցիկլեր, որոնք ավելի շատ հնարավորություններ են տալիս հենց ցիկլի տողի մեջ գործողություններ անելու։ Եթե while-ը ուղղակի ստուգում էր պայմանը և պայմանի կատարման դեպքում կատարվում էր ձևավոր փակագծերի մեջինը, ապա for-ի միջոցով հնարավոր է որոշ գործողություններ անել հենց ցիկլի տողի մեջ։
for-ի ու while-ի տարբերությունը հասկանալու համար կարող ենք դիտարկել երկու ծրագիր, որոնք անում են լրիվ նույն բանը՝
#include <iostream>
using namespace std;
int main() {
cout << "Before the cycle! ";
int n = 0;
while (n < 10) {
cout << n << endl;
n++; // նույնն է ինչ n += 1
}
cout << endl;
cout << "After the cycle!";
return 0;
}#include <iostream>
using namespace std;
int main() {
cout << "Before the cycle! ";
for (int n = 0; n < 10; n++) {
cout << n << endl;
}
cout << endl;
cout << "After the cycle!";
return 0;
}Երկու ծրագիրն էլ տպում են
Before the cycle! 0 1 2 3 4 5 6 7 8 9
After the cycle!Երկուսն էլ հայտարարում են int տիպի n փոփոխական և վերագրում դրան 0, որից հետո մտնում ցիկլի մեջ և ամեն անգամ տպում n-ը ու մեծացնում n-ի արժեքը 1-ով։
for ցիկլը ունի 3 մաս՝ for (ցիկլից առաջ կատարվող գործողություն; պայման որը ստուգում է ամեն ցիկլի սկզբից առաջ; ամեն ցիկլի վերջում կատարվող գործողություն) բոլոր 3 մասերը բաժանվում են իրարից ;ով։
Ցիկլից առաջ կատարվող գործողությունը կարող է լինել ցանկացած բան - փոփոխականի հայտարարում, կամ փոփոխականին արժեքի վերագրում, կամ նման ցանկացած գործողություն։
Պայման, որը ստուգում է ամեն ցիկլի սկզբից առաջ լրիվ
while-ի կամifնման է ու կարող է ունենալ տարբեր քանակի ստուգումներ||կամ&&-ով իրարից բաժանված։Ամեն ցիկլի վերջում կատարվող գործողությունը կրկին կարող է լինել ցանկացած գործողություն - օրինակ՝ փոփոխականին արժեքի վերագրում, կամ արժեքի մեծացում, կամ բաժանում մեկ այլ թվի վրա և այլն։
Իսկ ձևավոր փակագծերից ներս կարող ենք կատարել ցանկացած տիպի գործողություն (լրիվ while-ի նման)։
Վարժություն՝
Մուտքում տրված է 2 թիվ՝ a և b։ Անհրաժեշտ է իրարից բացատով բաժանված տպել [a; b] միջակայքում ընկած բոլոր զույգ թվերը։
Մուտք | Ելք |
|---|---|
3 6 | 4 6 |
Constraints
Time limit: 0.2 seconds
Memory limit: 512 MB
Output limit: 1 MB