Transcript Cikli. Mainīgo redzamības apgabali
Programmēšana I
Praktiskie darbi
Cikli
Doc. Dr. Sc. Comp. Edgars Rencis, Latvijas Universitāte, Datorikas fakultāte, 25. septembris, 2014.
Cikli
Iespēja izpildīt noteiktas darbības atkārtoti Trīs veidu cikli ar skaitītāju ja precīzi zināms, cik reizes cikls jāizpilda ar priekšnosacījumu ja nav zināms, cik reizes cikls jāizpilda ar pēcnosacījumu ja nav zināms, cik reizes cikls jāizpilda, bet ir zināms, ka tas jāizpilda vismaz vienu reizi
Cikls ar skaitītāju
for (
<1>; <2>; <3>
) {
<4> – cikla darbības
}
<1> – sākuma stāvokļa uzstādīšana <2> – cikla nosacījums <3> – cikla solis Jebkurš no <1>, <2>, <3>, <4> drīkst būt tukšs Figūriekavas blokam obligātas gadījumā, ja tas satur vairāk par vienu komandu
Cikla ar skaitītāju piemērs
Izdrukāt vienā stabiņā ciparus no 0 līdz 9
for (int i=0; i<10; i++) { cout <
for (int i=0; i<10; i++) cout << i << endl;
Kas ir kas?
for (int i=0;
sākuma vērtību uzstādīšana
i<10;
loģiska (vai aritmētiska) izteiksme, kuras vērtība tiek pārbaudīta pirms katras cikla iterācijas
i++)
iterācijas darbības, kas jāveic pēc katras cikla Var lietot arī vairākas darbības vienuviet
for (i=0,j=0; i<10 && j<10; i++,j++) cout << i*j << endl;
0 1 4 9 16 25 36 49 64 81
Piemērs for ciklam ar tukšu ķermeni
Lietotājs ievada veselu pozitīvu skaitli. Izvadīt lielāko veselo skaitli, kas mazāks par dotā skaitļa pozitīvo kvadrātsakni.
#include
for(i=0;i*i
cout << i-1; return 0; }
Uzdevums 1
Lietotājs ievada 2 naturālus skaitļus a un b, kur a<=b. Izvadīt visus naturālos skaitļus, kas atrodas intervālā [a,b],
izmantojot for ciklu
.
#include
Cikls ar priekšnosacījumu
while (
) { ...
}
Sākuma vērtības jāpiešķir pirms cikla Cikla mainīgā izmaiņas jāveic cikla ķermenī Loģiskās izteiksmes vietā drīkst būt arī aritmētiska izteiksme Figūriekavas blokam obligātas gadījumā, ja tas satur vairāk par vienu komandu
Cikla ar priekšnosacījumu piemērs
Izdrukāt vienā stabiņā ciparus no 0 līdz 9
int i=0 ; while (i<10) { cout << i << endl; i++;
} int i=0; while (i<10) cout << i++ << endl;
Uzdevums 2
Lietotājs ievada 2 naturālus skaitļus a un b, kur a<=b. Izvadīt visus naturālos skaitļus, kas atrodas intervālā [a,b],
izmantojot while ciklu
.
#include
Cikls ar pēcnosacījumu
do { ...
} while (
)
Sākuma vērtības jāpiešķir pirms cikla Cikla mainīgā izmaiņas jāveic cikla ķermenī Loģiskās izteiksmes vietā drīkst būt arī aritmētiska izteiksme Figūriekavas blokam obligātas gadījumā, ja tas satur vairāk par vienu komandu Šāds cikls izpildās vismaz vienu reizi!
Cikla ar pēcnosacījumu piemērs
Izdrukāt vienā stabiņā ciparus no 0 līdz 9
int i=0; do { cout << i << endl; i++;
} while (i<10); int i=0; do cout <
Uzdevums 3
Lietotājs ievada 2 naturālus skaitļus a un b, kur a<=b. Izvadīt visus naturālos skaitļus, kas atrodas intervālā [a,b],
izmantojot do ciklu
.
#include
cout << a++ << endl; } while (a<=b); return 0;
Vadības nodošanas komandas
Komandu izpildes secība pamatā atbilst fiziskajai komandu secībai
main
funkcijā ir stingri definēta atsevišķām komandām (zarošanās, cikliem, ...) atsevišķos gadījumos ir koriģējama Vadības nodošanas komandas break nodod vadību laukā no cikla nākamajai komandai continue nodod vadību nākamajai cikla iterācijai (for cikla gadījumā izpildot arī pēc-iterācijas darbību (-as)) goto nodod vadību citai patvaļīgai komandai (nav ieteicams izmantot, jo padara kodu nelasāmu)
break un continue
for (int i=0; i<10; i++) { if (i>6) break;
Ja i>6, iet laukā no cikla (beigt darbu)
} if (i%2) continue; cout << i << endl;
Nepāra skaitļiem pārejam pie nākamās iterācijas, izlaižot drukāšanas komandu
2 4 6
Līdz šejienei nokļūstam tikai, ja i ir pāra skaitlis, kas nav lielāks par 6:
0
Uzdevums 4
Lietotājs ievada naturālu skaitli. Noskaidrot, vai tas ir pirmskaitlis!
katram pirmskaitlim ir tieši 2 pozitīvi dalītāji #include
Uzdevums 4 – alternatīvs risinājums
#include Mainīgais redzams (eksistē) no tās vietas, kur tas deklarēts, līdz tā bloka beigām, kurā tas deklarēts deklarācija funkcijas ķermenī – redzami visā funkcijā deklarācija iekšējā blokā (piemēram, cikla vai zarošanās ķermenī) – redzami līdz šī bloka beigām Dažādos redzamības apgabalos drīkst deklarēt mainīgos ar vienādiem vārdiem tie tiks uzskatīti par dažādiem mainīgajiem Diviem vienāda vārda mainīgajiem nedrīkst būt vienādi redzamības apgabali Ja divu vienāda vārda mainīgo redzamības apgabali šķeļas, šķēlumā redzams ir tuvāk deklarētais mainīgais int i=11; if (i>10) { int x=5; cout << x; //5 } cout << x; //Kļūda – mainīgais x nav deklarēts int i=11, x=7; if (i>10) { int x=5; cout << x; //5 } cout << x; //7 int i=11, x=7; if (i>10) { x=5; cout << x; } cout << x; int i=11, x=7; if (i>10) { x=5; cout << x; //5 } cout << x; //5 int x; cin >> x; for (int i=0; i*i int x; cin >> x; for (int i=0; i*i Izdrukāt uz ekrāna reizrēķina tabulu skaitļiem no 1 līdz 10. #include #include Mainīgo redzamības apgabali
Mainīgo redzamības apgabali – piemēri
Mainīgo redzamības apgabali – piemēri
Mainīgo redzamības apgabali – piemēri
Mainīgo redzamības apgabali – piemēri
Mainīgo redzamības apgabali – piemēri
Mainīgo redzamības apgabali – piemēri
Uzdevums 5
Uzdevums 5 – alternatīvs risinājums