Parametrli sikl operatori. Bu operator parametrli takrorlash operatori ham deyiladi. Uni ishlatish uchun takrorlash jarayoni quyidagi qoidalarga ega bo‘lishi kerak: jarayonining takrorlanish soni uning bajarilishidan oldin ma’lum bo‘lish kerak; takrorlash jarayonini skalyar turdagi o‘zgaruvchi boshharadi. Bu o‘zgaruvchi berilgan boshlang‘ich qiymatdan berilgan oxirgi qiymatgacha ketma-ket qiymatlarni qabul qiladi. Ko‘pincha quyidagi takrorlash operatori ishlatiladi:
for V: =E1 to E2 do S;
bu yerda for (uchun) , to (o‘sib boradi) va do (bajarish) - xizmatchi so‘zlar, V - skalyar turdagi o‘zgaruvchi (haqiqiydan tashhari) - takrorlash parametri, E1 va E2 - V turdagi ifodalar, S - operator - takrorlash tanasi.
Bu operatorni ishlash tamoyilini tushintiramiz: V takrorlash parametriga E1 boshlang‘ich qiymatidan boshlab, E2 oxirgi qiymatigacha ketma-ket qiymatlar beriladi va har bittasi uchun S operatori bajariladi. E1 va E2 qiymatlari takrorlash jarayoni boshlanishidan oldin faqat bir marta hisoblanadi, S operatori V qiymatini o‘zgartirishi mumkin emas. Agar E2
Shunday qilib, arifmetik takrorlash operatorini quyidagi operatorlar ketma-ketligi yordamida yozish mumkin (vn va vk - V turdagi yordamchi o‘zgaruvchilar):
vn: = E1;
vk: =E2;
if vn<=vk then
begin
V: =vn; S; V: =succ(V); S; V: =succ(V); S; . . . ; V: =vk; S
end;
Paskalda takrorlash tugaganidan keyin V-ning qiymati noaniq hisoblanadi. Arifmetik takrorlash operatorini ishlatib, berilgan n uchun y=1+2+3+. . . +n quyidagcha yechish mumkin:
y: =0; for i: =1 to n do y: =y+i;
Ba’zida takrorlash parametrini kamayib borish tartibida o‘zgarishi kerak bo‘ladi. Bunday hollarda Paskalda takrorlash operatorining quyidagi shakli mavjud:
for V:E1 downto E2 do S;
bu yerda downto (kamayib borish) - xizmatchi so‘z. Bu ko‘rinishidagi takrorlash operatori quyidagi operatorlar ketma-ketligiga ekvivalent:
vn: =E1; vk: =E2;
if vn>=vk then
begin
V: =vn; S; V: =pred(V); S; V: =pred(V); S;. . . ;V: =vk; S
end;
Yuqorida keltirilgan masalani bu operator yordamida quyidagicha yechish mumkin:
y: =0; for i: =n downto 1 do y: =y+i;
1-misol:
Program Sum;
Var i: integer;
S: real;
Begin read(n);
S:0;
For i:1 to n do s:s1/sqr(x);
Write(s)
end.
2-misol:
Lotin alfavitidagi kichik harflar chop etilsin.
Program chart;
Var c: char;
Begin
For c:a to z do write (s)
end.
3-misol:
Program F1;
var n, i: integer,
b: boolean;
c: char;
begin read(n);
For i:1 to n do write (i);
For i:10 downto 10 do write(i);
For c:z downto a do write(s);
For b: False to true do write(b)
end.
Do'stlaringiz bilan baham: |