Sąlygos ir ciklinės operacijos C++ kalboje  (0)

Dokumente pateikiama sąlygos sakinių (if ir switch) bei ciklo struktūrų (for, while ir do while) programavimas C++ kalboje. Nurodyta sintaksės struktūra ir kiekvienu atveju pateikti paprasti iliustruojantys pavyzdžiai.


Prisijunk prie technologijos.lt komandos!

Laisvas grafikas, uždarbis, daug įdomių veiklų. Patirtis nebūtina, reikia tik entuziazmo.

Sudomino? Užpildyk šią anketą!

Sąlyginės valdymo struktūros C++ kalboje

Loginiai dydžiai ir loginės išraiškos vartojami sąlyginėse valdymo struktūrose, kuriu sintaksė yra tokia: 

if     (<Loginė sąlyga>)  

<Šaka TAIP>;  

[else <Šaka NE>];

Sąlyginė valdymo struktūra nurodo, kad turi būti patikrinta joje įrašyta loginė sąlyga ir, priklausomai nuo patikrinimo rezultatu, parenkama vykdymui struktūros šaka TAIP arba NE. Kadangi tokia valdymo struktūra aprašo, kaip vykdymui parenkama viena iš dviejų galimų alternatyvų, ji dar yra vadinama sąlyginiu dvivariantiniu alternatyvu parinkimo operatoriumi.

Loginės sąlygos C++ kalboje apibrėžiamos taip:

==   tikrinama ar kintamieji lygus

!=     tikrinama ar kintamieji nelygūs

<      tikrinama ar pirmas kintamasis mažesnis už antrą

>      tikrinama ar pirmas kintamasis didesnis už antrą

<=    tikrinama ar pirmas kintamasis mažesnis už antrą arba lygus jam

>=    tikrinama ar pirmas kintamasis didesnis už antrą arba lygus jam

||      tikrinama ar bent vienas iš kintamųjų tinka pagal sąlygą (loginis ARBA)

&&     tikrinama ar visi kintamieji tinka pagal sąlygą (loginis IR)

if (k==0)
     cout << "lygu nuliui";
else
     cout << "nelygu nuliui";

Struktūroje šaka else gali būti praleidžiama, tuomet ji aprašo jau ne alternatyvu parinkimą, o vieno operatoriaus vykdymo sąlygas.

 if (k==0)
     cout << "lygu nuliui";

Valdančiose struktūrose vartojama paprasčiausia programų struktūrizavimo priemonė - blokai, kurie dar vadinami sudėtiniais sakiniais. Tai tarp figūriniu skliaustu { ir } įrašyta programos sakiniu grupė. Su tokia grupe transliatorius elgiasi taip, lyg tai būtu vienas sakinys (operatorius), todėl figūriniai skliaustai dar vadinami operatoriniais skliaustais. Jei kiekvienoje pasirinkimo šakoje (true ir false) yra daugiau nei viena vykdoma operacija, būtina naudoti figūrinius skliaustus – priešingu atveju kompiliatorius įvykdys tik pirmą sakinį šakoje arba rodys klaidą.

 if (k==0)
    {
     cout << "kintamasis k";
     cout << "lygu nuliui";
    }
 else
    {
     cout << "kintamasis k";
     cout << "nelygu nuliui";
    }

Aprašant variantinį nauju reikšmių skaičiavimą, galima vartoti specialu sąlyginį operatorių ?, kurio sintaksė:

<i1> ? <i2> : <i3>

Šiame operatoriuje išraiška i1 aprašo tikrinamą loginę sąlygą, o išraiškos i2 ir i3 - rezultatui parenkamas reikšmes. Jei išraiškos i1 reikšmė nelygi nuliui (true), operatoriui suteikiama išraiškos i2 reikšmė, o kitu atveju - i3 reikšmė. Pavyzdžiui, sąlyginį operatorių

if (k==0)
     cout << "lygu nuliui";
else
     cout << "nelygu nuliui";

 galima pakeisti į tokį sakinį

 (k==0)? cout << "lygu nuliui":cout <<"nelygu nuliui";

  Kai parenkamu alternatyvu skaičius didesnis už 2, galima vartoti struktūrų if grandines, tačiau vaizdesnės ir patogesnės yra daugiavariantiniu alternatyvu aprašymo struktūros switch. Jų sintaksė:

 switch (<Raktas>)  

{

case <l-ji rakto reikšmė>: <l-ji alternatyva>; break;

case <2-ji rakto reikšmė>: <2-ji alternatyva>; break;

case <n-ji rakto reikšmė>: <n-ji alternatyva>; break;

[default: <Alternatyva visoms kitoms rakto reikšmėms>; break;   ]

}          // Struktūros pabaigos    žymė

 

Raktas - tai diskretinio tipo kintamasis, kurio reikšmės valdo alternatyvu parinkimą. Kiekvienos altern atyvos aprašymo pabaigą žymi nutraukimo operatorius break, kuris nurodo, kad likusiu operatoriaus switch šakų nagrinėti nebereikia.

 cin >> z;
 switch (z)
 {
 case 1: cout<<"vienetas"; break;
 case 2: cout<<"dvejetas"; break;
 case 3: cout<<"trejetas"; break;
 case 4: cout<<"ketvertas"; break;
 case 5: cout<<"penketas"; break;
 default: cout <<"daugiau uz penkis"; break;
 }

Žemiau pateikta programa konvertuoja įvestus metrus į milimetrus, centimetrus, decimetrus arba kilometrus:

#include <iostream.h>
main()
{
 char s;
 float k, sk;
 cout <<"Ilgio vienetu kovertavimo programa"<< '\n';
 cout << "Kiek metru?" << '\n' << "l=";
 cin >> k;
 cout << '\n';
 cout <<"Metrus paversti i:"<< '\n';
 cout << "'m'-milimetrus" << '\n';
 cout << "'c'-centimetrus" << '\n';
 cout << "'d'-decimetrus" << '\n' ;
 cout << "'k'-kilometrus" << '\n';
 cout << "--";
 cin >> s;
 switch (s)
 {
 case 'm':
           sk=k*1000;
           cout <<k<<" metru" <<" turi " << sk <<" milimetru" <<'\n';
           break;
 case 'c':
           sk=k*100;
           cout <<k<<" metru" <<" turi " << sk <<" centimetru" <<'\n';
           break;
 case 'd':
           sk=k*10;
           cout <<k<<" metru" <<" turi " << sk <<" decimetru" <<'\n';
           break;
 case 'k':
           sk=k/1000;
           cout <<k<<" metru" <<" turi " << sk <<" kilometru" <<'\n';
           break;
 default:
           cout <<"Tokio pasirinkimo nera!" << '\n';
           break;
 }
 cout << '\n';
 cout << "noredami iseiti iveskite bet koki simboli" << "\n";
 cin >> k;
}

Ciklo struktūros C++ kalboje

Kartojami veiksmai aprašomi ciklinėmis valdymo struktūromis. Vartojamos trys tokios struktūros, kurios pagal jas žyminčius pagrindinius žodžius vadinamos ciklais:

while,

do-while ,

for.

 

Ciklo while sintaksė:

while (<Kartojimo sąlyga>) <Kartojamas operatorius>

Valdymo struktūroje už kartojimo sąlygos įrašytas operatorius kartojamas tol, kol tenkinama kartojimo sąlyga. Kartojimo sąlygą būtina aprašyti taip, kad jos tikrinimo rezultatas priklausytų nuo kartojamų veiksmų. Neišpildžius šios sąlygos, ciklas būna begalinis.

 int i=0;    //apibreziamas ciklo skaitliukas
 while (i<10)
 {
 cout << "i=" << i <<'\n';
 i=i+1;   //ciklo skaitliuko didinimas vienetu
 }

Ciklasdo - while nuo ciklo while skiriasi tuo, kad jame ciklo kartojimo sąlyga tikrinama ne prieš ciklą, o po jo, įvykdžius kartojamas komandas. Todėl šis ciklasvisuomet įvykdomas bent vieną kartą. Ciklas while prie tam tikrų sąlygų gali būti ir nevykdomas. Ciklo do-while aprašymo sintaksė:

 do

<kartojamas operatorius>

while (<Kartojimo sąlyga>);

int d=0;
 do
 {
 cout << "d=" << d <<'\n';
 d=d+1;
 }
 while (d<10);

Kai ciklo kartojimų skaičius žinomas iš anksto arba kai ciklo kartojimo metu tenka pagal duotą dėsnį keisti kintamojo reikšmes, patogiau vartoti ciklą for. Jo sintaksė

for (<Pradinės ciklo kintamojo reikšmės aprašymas>;

<Kartojimo sąlyga>; <Kintamojo reikšmės keitimas>)

<Kartojimo operatorius (ciklo darbo dalis)>

Ciklo kintamuoju (skaitliuku)   vadinamas   specialus   kintamasis,   kurio   reikšmė   keičiama kiekviename cikle. Prieš pradedant vykdyti pirmąjį ciklą, skaičiuojama jo pradinė reikšmė. Ciklo kintamojo reikšmės keitimo dėsnį aprašo trečiasis ciklo antraštės, antrasargumentas aprašo ciklo kartojimo sąlygą. Ši sąlyga turi kontroliuoti ribinęciklo kintamojo reikšmę. Kartojimo   sąlyga   yra   tikrinama kiekvieno ciklo pradžioje, o kintamojo reikšmė keičiama ciklo gale, jau atlikus darbo dalyje aprašytus veiksmus.

 for (int j=0; j<10; j++)
 {
 cout << "j=" << j <<'\n';
 }

 Jei ciklas gavosi amžinas, programos vykdymą galima nutraukti klavišų kombinacija ‚CTRL+C‘

Išvedant didelį kiekį duomenų į ekraną dažnai prireikia jį išvalyti. Tam galima naudoti bibliotekoje conio.h aprašytą funkciją clrscr().

#include <conio.h>
main()
{
 clrscr();
}

 Žemiau pateikta pavyzdinė programa, parodanti visų klaviatūros simbolių kodus:

 #include <iostream.h>
main()
{
 char simbolis;
 int k;
 for (k=0; k<256; k++)
 {
 cout << simbolis << " kodas= " << k << '\n';
 simbolis++;
 }
cout <<  "noredami iseiti iveskite simboli" << '\n';
cin >> k;
}

 

Pasidalinkite su draugais
Aut. teisės: www.technologijos.lt
(14)
(4)
(7)

Komentarai (0)

Susijusios žymos: