Presentation is loading. Please wait.

Presentation is loading. Please wait.

Darbības - sazarojuma operatori

Similar presentations


Presentation on theme: "Darbības - sazarojuma operatori"— Presentation transcript:

1 Darbības - sazarojuma operatori
Programmēšanas valodas Lekt. M. Lukjanska

2 Kāpēc nepieciešami sazarojuma operatori? Nosacījuma jēdziens
Darbības - sazarojuma operatori Kopsavilkums Kāpēc nepieciešami sazarojuma operatori? Nosacījuma jēdziens Sazarojuma operatoru veidi: Nosacījuma Cikla Pārejas Programmēšanas valodas

3 Kāpēc nepieciešami sazarojuma operatori?
Darbības - sazarojuma operatori Kāpēc nepieciešami sazarojuma operatori? Jāmaina programmas gaita atkarībā no uzdotā nosacījuma Noteikti operatori ir jāizpilda vairākas reizes pie noteiktiem nosacījumiem Piemēri: funkciju vērtību aprēķināšana, piemēram, ievaddatu pārbaude ja nepieciešams izpildīt dalīšanu diviem mainīgajiem, jāpārbauda, lai dalītājs nav 0 funkciju vērtību aprēķināšana noteiktam argumentu intervālam utt. Programmēšanas valodas

4 Kāpēc nepieciešami sazarojuma operatori? Nosacījuma jēdziens
Darbības - sazarojuma operatori Kopsavilkums Kāpēc nepieciešami sazarojuma operatori? Nosacījuma jēdziens Sazarojuma operatoru veidi: Nosacījuma Cikla Pārejas Programmēšanas valodas

5 Iespējamās operācijas:
Darbības - sazarojuma operatori Nosacījuma jēdziens Definīcija: nosacījums ir loģiskā (būla) izteiksme, kuras rezultāts ir vērtība: patiess (TRUE) vai aplams (FALSE) Sintakse: <identifikators/izteiksme/vērtība> operācija <identifikators/izteiksme/vērtība> Iespējamās operācijas: loģiskās (būla): AND, OR, NOT, XOR relāciju: =, <, >, <=, >=, <> Piemēri: a > b ((x – 10) > 6) AND (x <= 100) Programmēšanas valodas

6 Nosacījuma jēdziens (turpinājums)
Darbības - sazarojuma operatori Nosacījuma jēdziens (turpinājums) Svarīgi: jālieto iekavas ‘()’, jo loģiskajām izteiksmēm ir augstāka prioritāte: 3 > 5 or 50 < > (5 or 50) < 1 kam nav semantiskas jēgas, jo loģiskās operācijas strādā ar loģiskajiem mainīgajiem, un rezultātā ir kompilēšanas laika kļūda pareizi: (3 > 5) or (50 < 1) pēc iespējas divu reālo skaitļu salīdzināšanai nelietojiet ‘=’, nelielas noapaļošanas kļūdas dēļ divas ekvivalentas izteiksmes var atšķirties Atkārtojumam: Lekcija 3: Programmēšanas valodu pamati Programmēšanas valodas

7 Kāpēc nepieciešami sazarojumu operatori? Nosacījuma jēdziens
Darbības - sazarojuma operatori Kopsavilkums Kāpēc nepieciešami sazarojumu operatori? Nosacījuma jēdziens Sazarojuma operatoru veidi: Nosacījuma Cikla Pārejas Programmēšanas valodas

8 apraksta pamatlīdzekļi
Darbības - sazarojuma operatori No 2. lekcijas ‘Ievads par programmēšanas valodām’ Atcerēsimies! Programmēšanas valodas semantikas uzdošana Izteiksmes Ievades/Izvades operatori Piešķires operatori Sazarojuma operatori Bloki Apakšprogrammas Pakotnes Pārejas operators Nosacījuma operatori Cikla operatori Darbību apraksta pamatlīdzekļi Procedūras Funkcijas Programmēšanas valodas

9 Apraksts: Sintakse: Svarīgi: Nosacījuma operators
Darbības - sazarojuma operatori Nosacījuma operators Apraksts: vispirms notiek uzdotā nosacījuma analīze: ja nosacījums ir patiess (izpildās), tad sākas bloka izpilde aiz vārda THEN ja nosacījums nav patiess (neizpildās), tad sākas bloka izpilde aiz vārda ELSE, ja ELSE nav definēts, tad turpinās pēc nosacījuma tālāk sekojošu operatoru izpilde Sintakse: IF <nosacījums> THEN <operatoru bloks>; IF <nosacījums> THEN <operatoru bloks1> ELSE <operatoru bloks2>; Svarīgi: sazarošanos var veidot no vairākiem nosacījumiem ja operatoru bloks satur vairāk nekā vienu operatoru, tad tie jāraksta starp operatoru iekavām BEGIN un END Programmēšanas valodas

10 Nosacījuma operatora grafiskais attēls
Darbības - sazarojuma operatori Nosacījuma operatora grafiskais attēls Vai nosacījums izpildās? IF (nosacījums) Var nebūt definēts THEN operatoru bloks 1 ELSE operatoru bloks 2 THEN BEGIN operators1; operators2; ... END ELSE BEGIN operators1; operators2; ... END; THEN operators ELSE operators; Programmēšanas valodas

11 Nosacījuma uzdošana Darbība Operācija Piemērs Lielāks >
Darbības - sazarojuma operatori Nosacījuma uzdošana Darbība Operācija Piemērs Lielāks > IF a > b THEN y = a - b; Mazāks < IF x < 10 THEN y = x + 10; Lielāks vai vienāds >= IF x >= 0 THEN y = sqrt(x); Mazāks vai vienāds <= IF x <= 0 THEN y = x*(-1); Vienadības pārbaude = IF x = 2 THEN y = x*x; Nevienadība <> IF x <> 3 THEN Writeln (‘Pareiza vērtība’); Loģiskais UN AND IF ((x<>3) AND (x>2)) THEN y = 6*x; Loģiskais VAI OR IF ((x = 2) OR (x = 4)) THEN y = 12/x; Loģiskais NE NOT IF NOT ( x<>3 ) THEN y = 6*x; Programmēšanas valodas

12 1. piemērs: Nosacījuma operators
Darbības - sazarojuma operatori 1. piemērs: Nosacījuma operators (*Programma nosaka, vai lietotaja ievaditais skaitlis ir para vai nepara *) PROGRAM L4_P1_Nosacijuma_operators; VAR (* Mainigo deklaresana *) sk : integer; BEGIN (* Pamatbloks *) Write('Ievadiet skaitli: '); Readln(sk); IF sk MOD 2 = 0 THEN Writeln ('Ievadits ir para skaitlis.') ELSE Writeln ('Ievadits ir nepara skaitlis.'); Readln; (* Gaida lietotaja ievadu *) END. (* Pamatbloks *) Programmēšanas valodas

13 2. piemērs: Vairāku nosacījuma operators
Darbības - sazarojuma operatori 2. piemērs: Vairāku nosacījuma operators (*Pircejam tiek pieskirta 5% atlaide par pirkuma summu no 100 – 200 Ls, 10% atlaide par pirkuma summu virs 200Ls. Ievadot apmaksajamo summu, programma izvada, vai pieskirta atlaide un cik liela, ka ari, cik ir atlikusi summa apmaksai *) PROGRAM L4_P2_Vairaki_Nosacijuma_operatori; VAR (* Mainigo deklaresana *) summa : real; BEGIN (* Pamatbloks *) Write('Ievadiet pirkuma summu: '); Readln(summa); IF summa < 100 THEN Writeln ('Atlaide nav pieskirta. Jamaksa:', summa:6:2, 'Ls.'); IF (summa >= 100) AND (summa <= 200) THEN Writeln ('Pieskirta 5% atlaide. Jamaksa:', summa*0.95:6:2, 'Ls.'); IF summa > 200 THEN Writeln ('Pieskirta 10% atlaide. Jamaksa:', summa*0.9:6:2, 'Ls.'); Readln; (* Gaida lietotaja ievadu *) END. (* Pamatbloks *) Programmēšanas valodas

14 3. piemērs: Vairāku nosacījuma operators
Darbības - sazarojuma operatori 3. piemērs: Vairāku nosacījuma operators (*Pircejam tiek pieskirta 5% atlaide par pirkuma summu no 100 – 200 Ls, 10% atlaide par pirkuma summu virs 200Ls. Ievadot apmaksajamo summu, programma izvada, vai pieskirta atlaide un cik liela, ka ari, cik ir atlikusi summa apmaksai *) PROGRAM L4_P3_Vairaki_Nosacijuma_operatori; VAR (* Mainigo deklaresana *) summa : real; BEGIN (* Pamatbloks *) Write('Ievadiet pirkuma summu: '); Readln(summa); IF summa < 100 THEN Writeln ('Atlaide nav pieskirta. Jamaksa:', summa:6:2, 'Ls.') ELSE IF (summa >= 100) AND (summa <= 200) THEN Writeln ('Pieskirta 5% atlaide. Jamaksa:', summa*0.95:6:2, 'Ls.') ELSE Writeln ('Pieskirta 10% atlaide. Jamaksa:', summa*0.9:6:2, 'Ls.'); Readln; (* Gaida lietotaja ievadu *) END. (* Pamatbloks *) Programmēšanas valodas

15 4. piemērs: Vairāku nosacījuma operators
Darbības - sazarojuma operatori 4. piemērs: Vairāku nosacījuma operators (*Pircejam tiek pieskirta 5% atlaide par pirkuma summu no 100 – 200 Ls, 10% atlaide par pirkuma summu virs 200Ls. Ievadot apmaksajamo summu, programma izvada, vai pieskirta atlaide un cik liela, ka ari, cik ir atlikusi summa apmaksai *) PROGRAM L4_P4_Vairaki_Nosacijuma_operatori; VAR (* Mainigo deklaresana *) summa : real; BEGIN (* Pamatbloks *) Write('Ievadiet pirkuma summu: '); Readln(summa); IF summa < 100 THEN Writeln ('Atlaide nav pieskirta. Jamaksa:', summa:6:2, 'Ls.') ELSE IF (summa >= 100) AND (summa <= 200) THEN BEGIN Writeln ('Pieskirta 5% atlaide. Jamaksa:', summa*0.95:6:2, 'Ls.'); Writeln ('APSVEICAM!'); END ELSE Writeln ('Pieskirta 10% atlaide. Jamaksa:', summa*0.9:6:2, 'Ls.'); Readln; (* Gaida lietotaja ievadu *) END. (* Pamatbloks *) Programmēšanas valodas

16 Kāpēc nepieciešami sazarojumu operatori? Nosacījuma jēdziens
Darbības - sazarojuma operatori Kopsavilkums Kāpēc nepieciešami sazarojumu operatori? Nosacījuma jēdziens Sazarojuma operatoru veidi: Nosacījuma Cikla Pārejas Programmēšanas valodas

17 Apraksts: Cikla operatori Svarīgi:
Darbības - sazarojuma operatori Cikla operatori Apraksts: programmēšanas pamatelementi, kuru rezultātā pie noteikta nosacījuma tiek atkārtoti izpildīts operators vai operatoru bloks Svarīgi: Cikli jāizmanto uzmanīgi, lai neizveidotu situāciju, kad programma nevar iziet no cikla jeb ieciklējas Priekšlaicīgai izejai no cikla var izmantot operatoru BREAK Cikla nosacījums ir loģiska izteiksme, bet cikla uzdošanas mainīgie tiek saukti par cikla mainīgajiem Cikla mainīgie ir jādeklarē deklarēšanas blokā Programmēšanas valodas

18 Cikla operatori (turpinājums)
Darbības - sazarojuma operatori Cikla operatori (turpinājums) Veidi Ar nosacījumu Kontrolējamie fiksēts operatoru bloka izpildes skaits iepriekš nezināms operatoru bloka izpildes skaits (ir atkarīgs no nosacījuma) Programmēšanas valodas

19 Apraksts: Sintakse: Svarīgi: Kontrolējamie cikla operatori
operatoru bloks tiek izpildīts fiksētu reižu skaitu Sintakse: FOR <cikla mainīgais> := <sākuma vērtība> TO/DOWNTO <beigu vērtība> DO <operatoru bloks>; Svarīgi: sazarošanos var veidot no vairākiem nosacījumiem ja operatoru bloks satur vairāk nekā vienu operatoru, tad tie jāraksta starp operatoru iekavām BEGIN un END Programmēšanas valodas

20 cikla mainīgais := sākuma vērtība TO/DOWNTO beigu vērtība
Darbības - sazarojuma operatori Kontrolējamo cikla operatoru grafiskais attēls FOR cikla mainīgais := sākuma vērtība TO/DOWNTO beigu vērtība DO operatoru bloks; DO BEGIN operators1; operators2; ... END; DO operators Programmēšanas valodas

21 5. piemērs: Kontrolējamais cikla operators
Cikla operatori 5. piemērs: Kontrolējamais cikla operators PROGRAM L4_P5_Kontrolejams_cikla_operators; VAR (* Mainigo deklaresana *) i : integer; (* Cikla mainigais *) sk : integer; (* Lietotaja ievadam *) BEGIN (* Pamatbloks *) Write('Ievadiet skaitli: '); Readln(sk); FOR i := 1 TO sk DO Writeln ('Cikls izpildaas ', i, '. reizi.'); Readln; (* Gaida lietotaja ievadu *) END. (* Pamatbloks *) Programmēšanas valodas

22 6. piemērs: Kontrolējamais cikla operators
Cikla operatori 6. piemērs: Kontrolējamais cikla operators PROGRAM L4_P6_Kontrolejams_cikla_operators; VAR (* Mainigo deklaresana *) i, j : integer; (* cikla mainigie *) sk : integer; (* ievadam no lietotaja *) BEGIN (* Pamatbloks *) Write('Ievadiet skaitli: '); Readln(sk); FOR i := 1 TO sk DO BEGIN Writeln ('Cikls1 izpildaas ', i, '. reizi.'); FOR j := 1 TO sk DO Writeln (' Cikls2 izpildaas ', i, '. reizi.'); END; Readln; (* Gaida lietotaja ievadu *) END. (* Pamatbloks *) Programmēšanas valodas

23 Cikla operatori Veidi Ar nosacījumu Kontrolējamie
Darbības - sazarojuma operatori Cikla operatori Veidi Ar nosacījumu Kontrolējamie fiksēts operatoru bloka izpildes skaits iepriekš nezināms operatoru bloka izpildes skaits (ir atkarīgs no nosacījuma) Programmēšanas valodas

24 Ar nosacījumu Apraksts: Sintakse: Svarīgi:
Cikla operatori Ar nosacījumu Apraksts: operatoru bloks tiek izpildīts iepriekš nezināmu reižu skaitu un ir atkarīgs no uzdotā nosacījuma Sintakse: REPEAT <operatoru bloks> UNTIL <nosacījums>; WHILE <nosacījums> DO <operatoru bloks>; Svarīgi: REPEAT .. UNTIL konstrukcija (turpina, kamēr nosacījums nepatiess ...) vispirms izpilda operatoru bloku un pēc tam pārbauda nosacījumu ja nosacījums ir nepatiess, tad cikls tiek turpināts cikla mainīgā vērtība ir jāizmaina operatoru blokā, pretējā gadījumā cikls izpildīsies bezgalīgi WHILE .. DO konstrukcija (kamēr nosacījums patiess, turpina) vispirms pārbauda nosacījumu un pēc tam izpilda operatoru bloku ja nosacījums ir patiess, tad cikls tiek turpināts ja jau no sākuma nosacījums ir nepatiess, tad operatoru bloks netiek izpildīts vispār cikla mainīgajam jāpiešķir vērtība pirms cikla izpildes, un tā jāizmaina cikla izpildes laikā – pretējā gadījumā cikls izpildīsies bezgalīgi (ieciklosies) Programmēšanas valodas

25 Ar nosacījumu grafiskais attēls
Cikla operatori Ar nosacījumu grafiskais attēls WHILE (nosacījums) REPEAT operatoru bloks UNTIL (nosacījums) DO operatoru bloks Programmēšanas valodas

26 7. piemērs: ar nosacījumu REPEAT..UNTIL
Cikla operatori 7. piemērs: ar nosacījumu REPEAT..UNTIL (* Programma izvada visus veselos skaitļus, kas nepārsniedz 150 un kas dalās ar 7 *) PROGRAM L4_P7_Cikla_operators_ar_nosacijumu_REPEAT_UNTIL; VAR (* Mainigo deklaresana *) sk : integer; BEGIN (* Pamatbloks *) sk := 0; Writeln ('Skaitli, kas dalas ar 7 un ir mazaki par 150: '); REPEAT (* Sakas cikla izpilde *) sk := sk + 7; Write(sk, ', '); UNTIL sk > ; (* Ciklu izpilda lidz sk klust lielaks par pedejo skaitli, kas dalas ar 7 un ir mazaks par 150 *) Writeln; Writeln ('Programma darbu pabeidza.'); Readln; (* Gaida lietotaja ievadu *) END. Programmēšanas valodas

27 8. piemērs: ar nosacījumu WHILE..DO
Cikla operatori 8. piemērs: ar nosacījumu WHILE..DO (* Programma nosaka naturalo skaitli k, pie kuras izteiksmes x^k/k vertiba klust lielaka par uzdoto skaitli A *) PROGRAM L4_P8_Cikla_operators_ar_nosacijumu_WHILE_DO; VAR (* Mainigo deklaresana *) x, A, y : integer; k : integer; BEGIN (* Pamatbloks *) Write ('Ievadiet x un A: '); Readln (x, A); (* Mainigo inicializesana *) k := 1; y := x; WHILE y/k <= A (* Cikla nosacijuma uzdosana *) DO BEGIN k := k + 1; y := y * x; Writeln ('k un x: ', k, ' ', y); END; Writeln; Writeln ('Izteiksmes ', x,'^k/k vertiba klust lielaka par ', A, ' pie k=', k,'.'); Writeln ('Programma darbu pabeidza.'); Readln; (* Gaida lietotaja ievadu *) END. (* Pamatbloks *) Programmēšanas valodas

28 Kāpēc nepieciešami sazarojumu operatori? Nosacījuma jēdziens
Darbības - sazarojuma operatori Kopsavilkums Kāpēc nepieciešami sazarojumu operatori? Nosacījuma jēdziens Sazarojuma operatoru veidi: Nosacījuma Cikla Pārejas Programmēšanas valodas

29 Apraksts: Sintakse: Svarīgi: Pārejas operators
Darbības - sazarojuma operatori Pārejas operators Apraksts: beznosacījuma operators, ar kura palīdzību var mainīt programmas izpildes gaitu Sintakse: LABEL <label_nosaukums>; GOTO <label_nosaukums>; Svarīgi: <label> tiek definēts programmas deklarēšanas blokā GOTO neatbilst labam programmēšanas stilam, un to lielākajā daļā gadījumu var aizvietot ar citiem sazarojuma operatoriem Programmēšanas valodas

30 9. piemērs: pārejas operators
Cikla operatori 9. piemērs: pārejas operators (* Programma nosaka, vai ievaditais skaitlis ir nepara un paredz skaitla parbaudes atkartosanu, ja lietotajs izvelas turpinat darbu *) PROGRAM L4_P9_Parejas_operators; LABEL TURPINASANA; (* <label_nosaukums> - iezimes deklaresana *) VAR (* Mainigo deklaresana *) sk : integer; key : char; (* Lietotaja ievadam *) BEGIN (* Pamatbloks *) TURPINASANA: Write('Ievadiet skaitli: '); Readln(sk); IF (odd(sk)) THEN Writeln ('Ievaditais skaitlis ir nepara.') ELSE Writeln ('Ievaditais skaitlis ir nepara.'); Writeln ('Vai turpinat programmas darbu? (J/N): '); Readln(key); (* Gaida lietotaja ievadu *) IF ((key = 'J') OR (key = 'j')) THEN GOTO TURPINASANA; END. (* Pamatbloks *) No [3] Programmēšanas valodas

31 10. piemērs: pārejas operators pārrakstīts uz REPEAT .. UNTIL
Cikla operatori 10. piemērs: pārejas operators pārrakstīts uz REPEAT .. UNTIL (* Programma nosaka, vai ievaditais skaitlis ir nepara un paredz skaitla parbaudes atkartosanu, ja lietotajs izvelas turpinat darbu *) PROGRAM L4_P10_Parejas_operators_uz_REPEAT_UNTIL; VAR (* Mainigo deklaresana *) sk : integer; key : char; (* Lietotaja ievadam *) BEGIN (* Pamatbloks *) REPEAT BEGIN Write('Ievadiet skaitli: '); Readln(sk); IF (odd(sk)) THEN Writeln ('Ievaditais skaitlis ir nepara.') ELSE Writeln ('Ievaditais skaitlis ir nepara.'); Writeln ('Vai turpinat programmas darbu? (J/N): '); Readln(key); (* Gaida lietotaja ievadu *) END UNTIL ((key <> 'J') AND (key <> 'j')); END. (* Pamatbloks *) Programmēšanas valodas

32 Tālāk – Datu tipi - masīvi Paldies par uzmanību! Jautājumi?
Darbības - sazarojuma operatori Tālāk – Datu tipi - masīvi Paldies par uzmanību! Jautājumi? Programmēšanas valodas

33 Darbības - sazarojuma operatori
Izmantotie resursi R. Zaks, Introduction to Pascal: Including Turbo Pascal, 2nd ed., Sybex, 1986, p. 464. A. Balode, Programmēšanas pamati. Valoda Turbo Pascal, Zvaigzne ABC, 2009, p.232. Programmēšanas pamati Pascal vidē, RTU Būvmehānikas katedra, Rīga, RTU, 2005 J. Bule, RTK kursa “Programmēšanas valodas" lekciju materiāli, RTK, 2010. Programmēšanas valodas


Download ppt "Darbības - sazarojuma operatori"

Similar presentations


Ads by Google