10. Ciklas for


Kartojamiems veiksmams užrašyti Pascal programavimo kalboje yra galimybė naudoti kelių rūšių konstrukcijas. Vienose situacijose geriau tinka viena iš jų, kitose kita. Kurią ciklų konstrukciją vartoti - pasirenka programuotojas. Ciklą while mes jau taikome programose, panagrinėsime ciklo for konstrukciją ir išmoksime ją naudoti programose.

Ciklas for užrašomas:

for i := m to n do {i yra ciklo kintamasis, m ciklo kintamojo pradinė reikšmė}
  begin {n yra ciklo kintamojo galinė reikšmė}
    sakinys1
    sakinys2
    sakinys3
    . . .
    sakinysp {paskutinis sakinys}
  end

Kompiuteris, kiekvieną kartą atlikęs sakinius, padidina vienetu i reikšmę ir tai daro tol kol ji tampa lygi galinei reikšmei. Tada sakiniai atliekami paskutinį kartą ir vykdomi tolimesni programoje nurodyti veiksmai. Ciklas for atliekamas n – m + 1 kartą (t.y. sakiniai tarp begin ir end bus atliekami tiek kartų). Iš čia galima matyti, kad jei m lygu n, tai ciklas atliekamas tik vieną kartą, o jei m > n, tai neatliekamas nei karto. Konstrukcija for yra vadinama žinomo kartojimų skaičiaus ciklu. Ciklo kintamojo reikšmė keičiama automatiškai. Jį galima naudoti kartojamuose sakiniuose, bet negalima jam priskirti kitos reikšmės.


Pvz. 10.1

Duotas natūraliųjų skaičių intervalas [m, n]. Parašykime programą, kuri rastų intervalo skaičių sumą.

 


1 tikrinamasis darbas

Pvz. 10.2

Duotas natūraliųjų skaičių intervalas [m, n]. Parašykime programą, kuri rastų intervalo skaičių kvadratų sumą, suskaičiuotų kiek yra skaičių dalių iš a arba iš b bei juos visus atspausdintų vienoje eilutėje.

 

Užduotys

Nr.1

Naudodami ciklą for parašykite programą, kuri apskaičiuotų:

a) intervalo [m; n] skaičių sumą ir jų kvadratų sumą;

b) intervalo [m; n] skaičių sumą ir sandaugą;

c) intervalo [m; n] lyginių skaičių sumą ir sandaugą;

d) intervalo [m; n] nelyginių skaičių sumą ir lyginių skaičių sandaugą;

e) kiek intervalo [m; n] skaičių baigiasi 0.

Nr. 2

Programuotojui moka a litų atlyginimą. Darbdavys pažadėjo kiekvieną mėnesį padidinti atlyginimą x litų, parašykite programą (būtinai naudodami ciklą for), kuri surastų:

a) koks atlyginimas bus po metų;

b) koks atlyginimas bus po n mėnesių;

c) koks atlyginimas bus po m metų.

Nr. 3

Parašyta programa, kuri turi rasti sumą n dėmenų sudarytų iš vienetų (paskutinis dėmuo sudarytas iš n vienetų).

1 + 11 + 111 + … + 11…1;

Programoje vietoje tritaškių įrašykite trūkstamas dalis.
program suma;
var d, sum: longint;
    n, ... : integer;
begin
  writeln('Įveskite n');
  read(...);
  d := 0; sum := 0;
  for i := 1 to ... do
    begin
      d := d * ... + ...;
      sum := ... + d
    end;
  writeln('... = ', ...)
end.

Nr. 4

Parašykite programą sumai rasti:
1*3 + 3*5 + 5*7 + … + n*(n + 2).