7. Sąlyginis sakinys | |||||
Labai dažnai tenka išskirti duomenis pagal tam tikrus požymius. Tam naudojama Pascal konstrukcija, vadinama sąlyginiu sakiniu. Sąlyginiu sakiniu parenkamas vienas veiksmas iš dviejų. Pasirinkimas vyksta, atsižvelgiant į sąlygą:
if sąlyga then sakinys1 else sakinys2 Atliekamas tik vienas iš dviejų sakinių. Jeigu sąlyga tenkinama (yra teisinga), kompiuteris vykdo sakinį, einantį po žodžio then, tai yra sakinys1, jeigu sąlyga netenkinama (yra neteisinga), kompiuteris vykdo sakinį, einantį po žodžio else, tai yra sakinys2. Pvz. 7.1 Duota skaičių seka. Sekos pabaigos požymis 0. Parašykime programą, kuri rastų teigiamų ir neigiamų sekos narių sumas.
program sekossumos;
var n, ns, ts : integer; begin read(n); ns := 0; ts := 0; while n <> 0 do begin if n > 0 then ts := ts + n else ns := ns + n; read(n) end; writeln ('ns = ', ns, ', ts = ', ts) end. Kartais, kai sąlyga teisinga, veiksmas atliekamas, o jeigu sąlyga neteisinga - neatliekamas. Tai užrašoma sutrumpintu sąlyginiu sakiniu:
if sąlyga then sakinys
Pvz. 7.2 Duota skaičių seka. Sekos pabaigos požymis 0. Parašykime programą, kuri suskaičiuotų, kiek sekoje yra lyginių narių.
program sekoslygn;
var n, kl : integer; begin read(n); kl := 0; while n <> 0 do begin if n mod 2 = 0 then kl := kl + 1; read(n) end; writeln ('kl = ', kl) end. Kartais, atsižvelgiant į sąlygą, nuėjus viena ar kita šaka, reikia atlikti po kelis veiksmus (tai vadinama sudėtiniu sakiniu). Tai nurodoma tuos veiksmus apgaubiant begin ir end, panašiai kaip ir cikle while:
if sąlyga then begin sakiniai1 end else begin sakiniai2 end Pvz. 7.3 Duota skaičių seka. Sekos pabaigos požymis nulis. Parašykite programą, kuri suskaičiuotų, kiek yra teigiamų ir neigiamų sekos narių, rastų teigiamų narių sumą, o neigiamų narių - sandaugą ir kvadratų sumą.
program sekostn;
var n, kn, kt, nsand, nks, ts : integer; begin read(n); kn := 0; kt := 0;nks := 0; nsand := 1; ts := 0; while n <> 0 do begin if n > 0 then begin kt := kt + 1; ts := ts + n end else begin kn := kn + 1; nks := nks + n * n; nsand := nsand * n; end; read(n) end; writeln ('kt = ', kt, ', ts = ', ts); writeln ('kn = ', kn, ', nsand = ', nsand, ', nks = ', nks) end. Užduotys 1 tikrinamasis darbas Nr. 1 Duota skaičių seka, jos pabaigos požymis nulis. Parašykite programą, kuri suskaičiuotų, kiek seka turi lyginių ir kiek nelyginių narių. Nr. 2 Duota skaičių seka, jos pabaigos požymis nulis. Parašykite programą, kuri rastų lyginių skaičių sumą ir nelyginių skaičių sandaugą. Nr. 3 Duota natūraliųjų skaičių seka. Sekos pabaigos požymis nulis. Parašykite programą, kuri :
Duota natūraliųjų skaičių seka. Sekos pabaigos požymis nulis. Parašyta programa, kuri turi rasti kiek sekoje yra skaičių, lygių duotam skaičiui a. Užbaikite ją ir patikrinkite su duomenimis:
25
123 25 14 45 25 56 789 25 1597 25 0
program kieka;
Turite gauti tokį rezultatą:
var n, ..., ka : integer; begin writeln ('Įveskite skaičių a'); read(...); writeln('Įveskite skaičių sekos narius'); read(...); ka := 0; while n <> ... do begin if ... = a then ka := ... + 1; read(n) end; writeln ('ka = ', ...) end.
ka = 4
Nr. 5 Duota natūraliųjų skaičių seka. Sekos pabaigos požymis nulis Parašykite programą, kuri :
Prašykite programą, kuri rastų skaičiaus didžiausią ir mažiausią skaitmenis. Nr. 7 Duotas natūralusis skaičius, kurio paskutinis skaitmuo ne nulis. Parašykite programą, kuri :
Duotas natūralusis skaičius, kurio paskutinis skaitmuo ne nulis. Parašykite programą, kuri :
Duotas natūralusis skaičius, kurio paskutinis skaitmuo ne nulis. Parašykite programą, kuri :
Duotas natūralusis skaičius, kurio paskutinis skaitmuo ne nulis. Parašykite programą, kuri :
Duotas natūralusis skaičius. Parašykite programą, kuri rastų mažiausią skaičiaus skaitmenį ir nustatytų, kiek kartų jis sutinkamas skaičiuje. Nr. 13 Duota natūraliųjų skaičių seka. Sekos pabaigos simbolis 0. Parašykite programą, kuri :
Duotas skaičių intervalas [m, n]. Parašykite programą, kuri surastų:
|
|||||