|
Mübariz Xəlilov, Nazlı HəsənovaINFORMATIKA KITAB BUTOV-1if
<
şərt
>
then
<
operator 1
>
else
>
;
Burada
if
,
then
,
else
operatorun
işçi sözləridir,
<
şərt
>
-
məntiqi tipli
ixtiyari
ifadədir,
<
operator 1
>
və
<
operator 2
>
isə Turbo Pascal dilinin ixtiyari
344
operatorlarıdır.
Bu operator
yerinə yetirilərkən, əvvəlcə
<
şərt
>
məntiqi ifa-dəsi
hesablanır. Əgər ifadənin nəticəsi
true
(
doğru) qiymətini alarsa,
<
operator1
>
yerinə yetirilir,
<
operator2
>
isə nəzərə alın mır, qiymət
false
(yalan) olarsa,
əksinə
<
operator1
>
nəzərə alınmır və
<
operator2
>
yerinə yetirilir.
Məsələn
,
if x<0 then y:=x+1 else y:=2*x;
if (n>15) and (n<25) then a:=n+4 else
b:= n-5;
Misal, x
və y ədədlərindən ən böyüyünü tapmalı.
program p1;
var x,y,max:integer;
begin read(x,y);
if x>y then max:=x else max:=y;
write(max)
end.
Şərt operatorunun
else
<
operator 2
>
hissəsi verilməyə də bilər, yəni
operator
aşağıdakı şəklə düşər:
if <
şərt
>
then <
operator 1
>;
Bu zaman
<
şərt
>
true
qiymətini aldıqda
<
operator 1
>
yerinə yetirilir, əks
halda
isə operator yerinə yetirilmədən proqramın növbəti sətrinə keçid yerinə
yetirilir.
Misal
.
x
,
y
,
z
ədədlərindən ən kiçiyini tapmalı.
program p2;
var x,y,z,min:integer;
begin read(x,y,z);min:=x;
if min>y then min:=y;
if min>z then min:=z;
write(min)
end.
Buradakı və - dən ixtiyari biri, ixtiyari tipli, o
cümlədən digər şərt operatoru da ola bilər və operatorda
else
hissəsi verilməyə də bilər. Bu zaman yarana bilən qeyri-müəyyənlik Turbo
Pascal
dilində aşağıdakı qaydada həll olunur: proqram mətnində rast gəlinən
ixtiyari
else
hissəsi ona proqramda ən yaxın olan
THEN
hissəsinə uyğun
gətirilir.
Misal
. Kvadrat
tənliyin həllini tapmalı.
program kv;
var a,b,c,d,x1,x2:real;
begin read(a,b,c);d:=sqr(b)-4*a*c;
345
if d>=0 then begin x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
write(’x1=’,x1,’x2=’,x2)
end
else write(’
helli yoxdur
’);
end.
Seçki operatoru
proqramın bir neçə mümkün davam variantlarından hər
hansı birini seçməyə imkan verir. Seçkinin aparıldığı parametr
real
və
string
tipləri istisna olmaqla ixtiyari tip ifadədir. Seçki operatorunun
ümumi strukturu
aşağıdakı kimidir:
case
<
seçki
açarı
>
of
<
seçki
siyahısı
>
else
<
operatorlar
>
end;
burada
case
,
of
,
else
,
end
işçi sözlərdir, < seçki açarı > - seçki açarı,
siyahısı> - : formalı bir və ya daha çox
konstruksiyalar; -
isə ifadəsi ilə eyni tipli sabitdir,
- Turbo Pascal dilinin ixtiyari
operatorlarıdır.
Seçki operatoru
aşağıdakı qaydada işləyir: əvvəlcə ifadəsi
hesablanır, sonra operatorları ardıcıllığında qarşısında
hesablanmış ifadənin aldığı qiymətə bərabər olan sabit gələn operator seçilir.
Tapılmış operator yerinə yetirilir və seçki operatorunun işi sona çatır. Əgər
seçki
siyahısında seçki açarının hesablanmış qiymətinə uyğun gələn sabit
tapılmazsa, on-da idarəetmə
else
sözündən sonra gələn operatorlara verilir.
Qeyd
edək ki, operatorda
else
hissəsini verməmək də olar. Bu
halda seçki
siyahısında lazım olan sabit tapılma-dıqda heç bir hadisə baş
verməyəcəkdir və seçki operatoru sadəcə olaraq öz işini sona çatdıracaqdır.
Misal
. Toplama,
çıxma, vurma və ya bölmə əməliyyat-larından hər hansı
birinin
seçilməsi ilə ixtiyari
x
,
y
ədədləri üçün bu əməlin yerinə yetirilməsi.
program p3;
var c:char; x,y,z:real; s:boolean;
begin s:=false;
repeat read(x,’ ’, y); read(c);
case c of
’+’: z:=x+y;
’-’: z:=x-y;
’*’: z:=x*y;
’/’: z:=x/y;
else s:=true;
end;
if not s then writeln(’z =’,z)
until s
346
end.
Burada seçki
siyahısındakı ixtiyari operatorun qarşısında bir deyil, bir-
birindən vergüllə ayrılan bir neçə seçki sabiti dura bilər.
Məsələn
,
var c:char;
begin read(c);
case c of
’n’,’N’: wrieln (’No’);
’y’,’Y’: writeln (’Yes’)
end
end.
11.7. Dövr
operatorları
Turbo Pascal
dilində üç müxtəlif dövr operatoru mövcuddur:
1) Hesabi dövr operatoru
FOR
aşağıdakı struktura malikdir:
for
:=
<
başlanğıc qiymət>
to
mət>
do
;
Burada
for
,
to
,
do
– operatorun
işçi sözləridir, –
integer
(daha
doğrusu ixtiyari nizam tipli) tipli dəyişəndir,
- dövr parametrinin
başlanğıc qiymətidir və onunla eyni tiplidir,
– dövr parametrinin
aldığı son qiymətdir və onunla eyni tiplidir, < operator > –
Turbo Pascal dilinin ixtiyari operatorudur.
Bu operator
yerinə yetirilərkən əvvəlcə ifadəsi
hesablanır və
:=
<
başlanğıc qiymət> mənimsədilməsi yerinə
yetirilir. Sonra
<=
qiymət> şərti yoxlanılır, əgər şərt
ödənilmirsə
for
operatorunun
işi sona çatır, şərt ödənildikdə isə
yerinə yetirilir və dəyişəni bir vahid artırılır: ri>
:=
+1
Bundan sonra
təsvir etdiyimiz proses şərt
ödənilməyənədək təkrarlanır.
Misal
. Birinci N natural
ədədin cəmini tapmalı.
program p4;
var i,n,s:integer;
begin readln(n);s:=0;
for i:=1 to n do s:=s+i;
writeln(s)
end.
Qeyd
edək ki,
for
operatorunun
işini idarə edən şərt - un
yerinə yetirilməsindən əvvəl yoxlanılır, əgər şərt
for
operatorunun
işinin
əvvəlində yerinə yetirilmirsə, onda operator bir dəfə də olsun yerinə
347
yetirilməyəcəkdir.
for
operatorunda dövr parametrinin
artım addımı sabitdir və
(+1)-
ə bərabərdir. Lakin
for
operatorunun
aşağıdakı forması da mövcuddur:
for
:=
<
başlanğıc qiymət>
downto
qiymət>
do
Burada
to
sözünün
downto
sözü
ilə əvəz edilməsi dövr pa-rametrinin
artım addımının (-1)-ə bərabər olduğunu və idarəedici şərtin
>=
qiymət> olduğunu göstərir. Məsələn, yuxarıda baxdığımız misal üçün
proqramı elə dəyişdirmək olar ki, proqram həm müsbət, həm də mənfi
ədədlərin cəmi-ni tapa bilsin:
program p5;
var i,n,s:integer;
begin readln(n); s:=0;
if n>=0 then for i:=1 to n do s:=s+i
else for i:=-1 downto n do s:=s+i;
writeln(s)
end.
2)
Şərt qabaqcadan yoxlanılan
while
dövr operatorunun ümumi
şəkli
aşağıdakı kimidir:
while
<
şərt>
do
Burada
while
,
do
– operatorun
işçi sözləridir, <şərt> - məntiqi tipli ifadə,
isə Turbo Pascal dilinin ixtiyari operatorudur.
Bu operator
yerinə yetirilərkən əvvəlcə <şərt> ifadəsi hesab-lanır, əgər o,
true
qiymətini alırsa, yəni şərt ödənilərsə yerinə yetirilir və <şərt>
ifadəsinin hesablanıb, yoxlanılması davam etdirilir. Bu <şərt>
false
qiyməti
alana
qədər təkrar-lanır, <şərt> bu qiyməti alan kimi
while
operatoru
işini sona
çatdırır. Əgər elə birinci yoxlamada < şərt >
false
qiymətini alırsa
bir
dəfə də yerinə yetirilmədən
while
opera-toru
işini başa çatdırır.
Misal
.
x
x
f
2
cos
)
(
=
funksiyasının [0,1] parçasında
05
,
0
=
h
addımı ilə
qiymətlər cədvəlini almalı.
program p6;
const x0=0; h=0.05; xs=1;
var x,y:real;
begin x:=x0;
while x
begin y:=cos(2*x); writeln(x:5:2,y:6:4);
x:=x+h
end
end.
3)
Şərt sonradan yoxlanılan
repeat
-
until
dövr opera-torunun ümumi
şəkli aşağıdakı kimidir:
348
repeat
gövdəsi>
until
<
şərt>
;
burada
repeat
,
until
-dövr
operatorunun
işçi sözləridir, -Turbo Pascal dilinin
operatorlarının ixtiyari ardıcıllığıdır, <şərt> - məntiqi ifadədir.
Operator
yerinə yetirilərkən, operatorları ən azı bir dəfə
yerinə yetirilir və bundan sonra <şərt> məntiqi ifa-dəsi hesablanır. Əgər bu
ifadə
false
qiymətini alırsa, yəni şərt ödənilmirsə,
operatorları təkrarən yerinə yetirilir və bu prosses <şərt>
true
qiymətini alana
qədər davam etdi-rilir. Bu halda dövr operatorunun işi sona çatır.
Misal
.
Müsbət
a
tam
ədədi verilib (
1
a
>
).
a
n!
>
şərtini ödəyən ən kiçik
n
ədədini tapmalı.
program p7;
var p,n,a:integer;
begin read(a); p:=1; n:=1;
repeat n:=n+1; p:=p*n
until p>a;
writeln(n)
end.
Burada gördüyümüz kimi
repeat
–
until
cütü
begin
–
end
operator
mötərizələrinə oxşardır, ona görə də
until
-
dən əvvəl «
;
» qoymaq
məcburi
deyildir.
Qeyd
edək ki, dövrlər bir-birinin daxilində də verilə bilər. Bu zaman
daxildəki dövr xaricdəki dövrün hər bir qiyməti üçün tam yerinə yetirilir.
Misal
.
n
2k
y
+
=
-nin
n=1,2,3
və
k=2,4,6
hallarında qiymətlərini
tapmalı.
0>
Dostları ilə paylaş: |
|
|