Ìfadə
Dəyərì
Ìfadə
Dəyərì
not true
false
not false
true
true and true
true
true or true
true
true and false
false
true or false
true
false and true
false
false or true
true
false and false
false
false or false
false
Məs. a= -17 və b= 3 qìymətlərì üçün aşaõıdakı məntìgì ìfadələrì yaza
bìlərìk:
Sadə ìfadə
Qìymətì
Mürəkkəb ìfadə
Qìymətì
a < 0
true
not(b > 4)
true
b > a
true
(a > -1) or (b > 5)
false
a div 5 = 3
false
(5 div b=1) and (a=3)
false
a mod b = 1
true
(a * b = -51) or (1>0)
true
Qeyd edək kì, mürəkkəb ìfadənì təşkìl eləyən hər bìr sadə ìfadə adì
mötərìzədə yazılır. Məntìqì ìfadələrdə a<=b
(a<=b) and (b < c) kìmì, a < b; b >c ìsə (a < b) or (b > c) formada ìfadə
edìlìr.
2. Budaqlanma əmrì –ìf –bütöv və qısa formada ìşlədìlə bìlìr.
Bütöv forma:
ìf then <1 –cì əmr>
else <2 –cì əmr>;
Bu əmrdə –məntìqì ìfadə doõru olarsa 1 –cì, əks halda ìsə 2 –cì əmr
yerìnə yetìrìlìr. Həmìn əmrlərdən hər bìrì ìsə, əlbəttə –sadə və ya yıõma
əmrlər ola bìlər.
Məs(sadə hal). Əgər a = 16 olarsa, onda
ìf a < 1 then x := sqr(a) else x := a dìv7;
ìf a >=16 then y : exp(a) else y :=-4;
əmrlərìndən sonra x və y dəyìşənlərì uyõun olaraq 2 və e
16
qìymətlərìnì
alar.
Başqa bìr mìsal(mürəkkəb hal). Əgər p = -3.5 olarsa, onda
if p < -4 then
begin
q := p – 2.5;
g := 1 + 2 * p;
end
else
begin
q := 0.5 + 3 * p;
g := 2 – 3*(p+2.5);
end;
əmrlərìndən sonra q və g kəmìyyətlərì uyõun olaraq -10 və 5 qìymətlərì
alar.
Ìndì ìsə ìf əmrìnìn ìkìqat (və ya ìç - ìçə) tətbìq üsulunu göstərmək üçün
növbətì məsələyə baxaq:
Məsələ 3. x arqumentìnìn dìaloqla verìlmìş qìymətìnə görə
1
,
cos
1
1
,
sin
1
,
ln
x
x
x
x
x
x
y
funksìyasının qìymətìnì hesablayaraq ekrana çıxaran proqram tərtìb
etməlì.
Program ikiqat_if;
uses Crt;
var x, y: real;
begin
clrscr;
write(‘x-i daxil edin: ’);
readln(x);
if x<-1 then
y:=ln(abs(x))
else
if (x>=-1)and(x<1) then
y:=sin(x)
else
y:=cos(x);
writeln(‘x = ’, x:5:2, ‘ y = ’, y:5:2);
readln;
end.
! -
yadda saxlamaq lazımdır kì, ìf əmrì altında olan else xìdmətì sözündən əvvəl ; ìşarəsì
qoymuq olmaz.
Çalışma 3. x arqumentìnə ekrandan verìlən qìymətə görə
y = |x –1| - |x - 3|
funksìyasının müvafìq qìymətìnì ekrana çıxaran proqram yazın.
ìf əmrìnìn qısa forması ìsə aşaõıdakı kìmì yazılır:
ìf then <əmr>;
Bu əmrdə məntìqì ìfadə doõru ìsə qeyd olunmuş əmr ìşə başlayır, əks
halda ìsə ìdarə növbətì (; sìmvolundan sonrakı) əmrə verìlìr.
Məs. a =4.5 olarsa, onda
ìf a >5 then x := sqr(a);
ìf a< 5 then x := sqrt(2*a);
əmrlərìndən sonra x =3 qìymətìnì alar.
3. Şərtsìz keçìd əmrì –goto əmrlərìn növbəsìnì, lazımı nìşanlar üzrə
dəyìşdìrmək üçün ìşlədìlìr. Bu əmr aşaõıdakı formada yazılır:
goto ;
Nìşan proqramda ìstənìlən əmrìn qarşısında qoyula bìlìr və əmrdən “:”
sìmvolu ìlə aşaõıdakı kìmì ayrılır.
: <əmr>;
Proqramda ìşlənəcək nìşanlar ìsə əvvəlcədən label bölməsìndə:
label ;
formada sadalanmalıdır:
Nìşanlar -adla və ya 10000 dən kìçìk natural ədədlə (nömrə ìlə) ìfadə
oluna bìlər:
Məsələ 4. Verìlmìş əmsallara görə kvadrat tənlìyì həll etmək üçün
proqram yazmalı.
program Kvadrat_T;
uses Crt;
label 01, 02, son;
var a, b, c, s, d, x1, x2 : real;
begin
clrscr;
01: writeln(‘a,b,c verilsin’);
readln(a, b, c);
if a = 0 then goto son;
d := sqr(b) – 4*a*c;
if d >=0 then goto 02
else
begin
writeln(‘Cavab yoxdur’);
goto 01;
end;
02 : if d >0 then
begin
x1 := (-b –sqrt(d)) (2*a);
x2 := (-b +sqrt(d)) (2*a);
writeln(‘x1
=’, x1:3:1);
writeln(’x2 =’, x2 :3:1);
end
else
begin
x1 := - b (2*a);
x2 := x
1
;
writeln(‘x1 = ‘,x1 : 3: 1, ‘x2 =’, x2 : 3 :1);
son : readln;
end;
end.
! -
yıõma əmr tərkìbìndə və ya ìçproqram daxìlìndə olan əmrlərə kənardan növbə
ötürmək olmaz.
Çalışma 4. Verìlmìş əmsallara görə ìkìdəyìşənlì xəttì tənlìklər sìstemìnì
həll etmək üçün proqram yazın.
5. Seçmə əmrì case –aşaõıdakı formada yazılır:
case <ìfadə> of
<1 –cì qìymətlər sìyahısı> : <1 –cì əmr>;
……………………………………………
: ;
else
end;
Burada ìfadə:
-yalnız tam, sìmvollu, sadalanan, və ya məntìqì tìplì dəyìşənlərdən ìbarət
ola bìlər.
Qìymətlər sìyahısı –ìfadənìn tìpìnə uyõun sabìtlər və ya dìapazonlardan
ìbarət olub elementlərì bìr-bìrìndən vergüllə ayrılır.
else -köməkçì hìssədìr və buraxıla da bìlər.
case əmrìndə –ìfadənìn qìymətì hansı nömrəlì sìyahıda olursa, fəalìyyət
növbəsì həmìn nömrəlì əmrə keçìr. Əgər ìfadənìn qìymətì heç bìr sìyahıda
tapılmazsa onda növbə n+1 –cì əmrə, bu əmr olmadıqda ìsə “;” sìmvolundan
sonrakı əmrə keçìr.
Məsələ 5. Tutaq kì, «Məktəblì» -dükanındakı mal çeşìdlərì üçrəqəmlì
ədədlərlə nömrələnərək ayrı-ayrı qìymətlər üzrə
Çeşìdlər
Qìymətlər(manatla)
1, 2, … , 23 _____ 12 000
24, 25, … , 51____ 9 500
52, 53, … , 167____7 200
168, 169,….,741____500
742, 743, …,980____250
kìmì qruplara bölünmüşdür. Alıcının ìstədìyì m -cì çeşìddən olan n sayda
malın hesabını ekrana verə bìlən proqram yazmalı.
program Hesab;
uses Crt;
var m, n, hesab: integer;
begin
clrscr;
writeln(‘Buyurun: ’);
readln(m, n);
case m of
1..23 : hesab := 12000;
24..51 : hesab := 9500;
52..167 : hesab := 7200;
168..741 : hesab := 500;
else hesab := 250;
end;
write(‘Sizin hesab ’);
writeln(n*hesab, ‘ manat oldu.’);
readln;
end.
Məs. m =86 və n =7 ədədlərì üçün bu proqram ekrana:
Sizin hesab 50400 manat oldu
.
cavabını çıxarmalıdır.
Çalışma 5. Məlumat bürosunda, 20 adda məntəqə üçün bìlet ìstəyən
sərnìşìnlərə xìdmət edəcək sadə bìr proqram nümunəsì tərtìb edìn.
§5. Dövrlər.
Dövr –Proqram fəalìyyətìndə müəyyən əməlìyyatın sonlu sayda
təkrarlanmasıdır. Dövrü –məqsədəuyõun ardıcıllıqda düzülmüş əmrlər
dəstìnìn tətbìqìlə yaratmaq mümkündür. Bu sahədə
ıf,
goto
və xüsusì dövr
əmrlərì tətbìq olunur. Tətbìq formasına görə dövr əmrlərì :
-
for
- parametrlə
-
while
-şərtönü
-
repeat
-şərtsonu varìantlarına bölünürlər.
1. Parametrlì
for
əmrì –ìkì ìstìqamətdə tətbìq olunur:
-
a) Ìrəlìyə addımla:
for
:= <1 –ci ìfadə> to <2 –cì ìfadə> do <ìç əmr>;
-formada verìlìr və parametr –tam, sìmvollu, məntìqì və sadalanan
tìplərdən bìrìnə aìd dəyìşən olub ìlk və son qìymətlərì 1 –cì və 2 –cì ìfadələrlə
verìlìr.
Bu əmrdə –parametr 1 –cì qìymətì 2 –cìdən kìçìk(və ya bərabər) olarsa
ìç əmr ìşləyìr və 1 –cì qìymət 1 vahìd artaraq proses təkrarlanır. Nəhayət 1 –cì
qìymət 2 –cìdən böyük olunca ìdarə for əmrìndən sonrakı əmrə keçìr. Məs.
Əgər x = 2 olarsa, onda
for i := 5 to 8 do begin x := x+ i; y := 4 * i end;
əmrìndə x dəyìşənì 2+5+6+7+8 =28 və y ìsə 4* ì =32 qìymətìnì alaraq
ìdarə for əmrìndən sonraya keçìr.
- b) Gerìyə addımla:
for
:= <1 –ci ìfadə> downto <2 –cì ìfadə> do <ìç əmr>;
-formada, analojì prìnsìplə verìlìr.
Burada -a) bəndìndən fərqlì olaraq, parametrìn 1 –cì qìymətì 2 –cìdən
böyük(və ya bərabər) olarsa ìç əmr ìşləyìr və 1 –cì qìymət 1 vahìd azalaraq
proses təkrarlanır. Nəhayət 1 –cì qìymət 2 –cìdən kìçìk olunca ìdarə
for
əmrìndən sonrakı əmrə keçìr. Məs. Əgər x = 2 olarsa, onda
for i := 8 downto 5 do begin x := x + i; y := 4 * i end;
əmrìndə x dəyìşənì 2+8+7+6+5 =28 və y ìsə 4* ì =20 qìymətìnì alaraq
ìdarə for əmrìndən sonraya keçìr.
Məsələ 6. Müəyyən natural sırayla verìlmìş unsìya ölçülü kəmìyyətlərìn
qramla ìfadəsìnì əks etdìrən cədvəl tərtìb etmək üçün proqram yazmalı.
25
1
2
25
1
2
!
5
í
í
í
í
í
y
Unsìya ölçülü kəmìyyətì -
unsiya,
qramla ìfadə olunmuş qìymətì
qram,
sıranın dəyìşmə addımı
-h
və dəyìşmə sayını -
k
ìlə ìşarə etsək, tələb olunan
proqramı aşaõıdakı kìmì tərtìb edə bìlərìk:
program Unsiya_Qram;
uses Crt;
const line = ‘------------------------’;
var
unsiya, qram, h: real;
k: integer;
begin
clrscr;
write(‘Ilkin unsiya, h verilsin, ’);
writeln(‘k verilsin’);
readln(unsiya, h, k);
writeln;
writeln(line);
writeln(‘Unsiya Qram’);
writeln(line);
for i:=1 to k do {Cavab ekrana verilir}
begin
qram:=28.353495*unsiya;
writeln(unsiya:5:2, ‘ ’, qram:10:6);
unsiya:=unsiya+h;
end;
writeln(line);
readln;
end.
Çalışma 6. 6 –cı məsələnì
for
əmrìnìn
downto
(gerìyə addım) varìantını
tətbìq etməklə həll edìn.
Məsələ 7. Cəm və hasìldən ìbarət olan
ìfadəsìnìn qìymətìnì hesablamaq üçün proqram tərtìb etməlì.
Bìz cəm ìfadəsìnì –
c,
hasìl ìfadəsìnì
-h
və faktorìal ìfadəsìnì
-f
ìlə ìşarə
etsək, tələb olunan proqramı aşaõıdakı kìmì rərtìb etmək olar.
program Topla_Vur;
uses Crt;
var
i: integer;
c, h, y: real;
f: longint;
begin
clrscr;
20
5
20
5
3
!
3
í
í
i
i
y
c:=0;
h:=1;
f:=1;
for i:=1 to 25 do
begin
f:=f*i;
c:=c+5*sqr(i)/f;
h:=h*i*i;
end;
y:=c+h;
writeln(‘y = ’, y:7:2);
readln;
end.
Çalışma 7. 7–cı məsələnì
for
əmrìnìn
dovnto
varìantını tətbìq etməklə
ìfadəsì üçün həll edìn.
2. Şərtönü –while əmrì, aşaõıdakı formada tərtìb olunur:
while do <ìç əmr>;
while
–əmrì məntìqì ìfadə doõru olana qədər proqramı ìç əmrìn
ìdarəsìndə saxlayır və yalana çevrìləndə ìsə özündən sonraya ötürür.
Məs.
- Əgər a= 3 və b = 7 olarsa onda:
while a<=6 do begin b := b + a; a := a + 1 end;
əmrìndən sonra a və b kəmìyyətlərì uyõun olaraq a = 7 və
b = (7+3)+(7+4)+(7+5)+(7+6) = 46 qìymətlərìnì alar.
20 –dən 30 –a qədər ədədlər, onların kvadratları və kubları cədvəlìnì
ekrana çıxarmaq üçün while əmrì:
i:=20;
while i<=30 do
begin
writeln(i:4, i*i:6, i*i*i:8);
i:=i+1;
end;
kìmì ìşlənə bìlər
- real tìpì üçün aşaõı sərhəddìn ìkìqatını tapmaq üçün while əmrì:
program Kiçik_real;
uses Crt;
var a:real;
begin
clrscr;
a := 1;
while a / 2 > 0 do a := a / 2;
writeln(‘a =’, a);
readln;
end.
kìmì tətbìq olunaraq cavabda a =2.9E-39
alarıq.
! -
kompüter hesabına görə həqìqì ədəd tìpìnìn ən kìçìk müsbət qìymətì sıfır sayılır.
Məsələ 8. Arqumentìnìn [0;3.1] parçasında h = 0.1 addımla dəyìşməsìnə
uyõun y =Sìn(x) funksìyasının müvafìq qìymətlər cədvəlìnì tərtìb etməklə,
(0.1;0.6) ìntervalında y üçün ortalama qìymət tapın.
Məsələnì, müvafìq dəyìşənlər qəbul edərək aşaõıdakı kìmì həll etmək
olar:
program Orta_Sin
;
uses Crt;
var x, y, s, s1, h, xk: real;
n: integer;
begin
clrscr;
x:=0;
xk:=3.1;
h:=0.1;
s:=0;
n:=0;
while x<=xk+h/2 do
begin
y:=sin(x);
writeln(x:3:1, y:6:2);
if (y>0.1) and (y<0.6) then
begin
s:=s+y;
n:=n+1;
end;
x:=x+h;
end;
if n>0 then
begin
s1:=s/n;
writeln(‘Ortalama = ’, s1);
end
else
writeln(‘Ortalama yoxdur n=0’);
readln;
end.
Çalışma 14. x və y dəyìşənlərì üçün seçìlmìş ìntervalları dəyìşərək 8 –cì
məsələnì həll edìn.
Məsələ 9. Ìstənìlən x ədədì və e =0.001 olmaqla, n –cì həddì
a
n
=(-1)
n
(2x)
n
n! kìmì ìfadə olunan {a
n
}-ədədì ardıcıllıõının
| a
n
| > e şərtìnì ödəyən hədlərìnìn cəmìnì tapmaq üçün proqram yazmalı.
n! –kəmìyyətìnì
fact
, cəmı
toplam
və s. kìmì ìşarə edərək məsələnì həll
etmək üçün proqramı aşaõıdakı kìkì tərtìb etmək olar.
program Toplama;
uses crt;
const e=0.001;
var toplam, x, a: real;
fact, n, z: integer;
begin
clrscr;
writeln(‘x-i daxil edin: ’);
readln(x);
toplam:=0;
n:=1;
fact:=1;
a:=-2*x;
z:=-1;
while abs(a)>e do
begin
toplam := toplam+1;
n:=n+1;
z:=-z;
fact:=fact*n;
a:=z*exp(n*ln(2*x))/fact;
end;
writeln(‘toplam = ’, toplam :5:2);
writeln(‘toplananlar = ’, n-1);
end.
Çalışma 9. 9 –cu məssələnì, e = 0.0001 ədədì üçün, daha cəmərəlì yolla
həll etməyə çalışın.
3. Şərtsonu varìantda tətbìq oıunan
– repeat
aşaõıdakı formada tərtìb
olunur:
repeat <ìç əmrlər> until ;
repeat
əmrì -məntìqì ìfadə doõru oluncayadək ìdarənì ìç əmrlərdə
saxlayır və sonra ìsə özündən sonrakı əmrə ötürür.
Məs. x =16, y = -3 -ìlkìn qìymətlərì üçün:
repeat
y := y + x;
x := 1
2 * x;
z := x – 3
until x <= 5;
əmrìndən sonra x=4, y= -3+16 +8 =21, z =4 - 3
=1
qìymətlərìnì alar.
Məsələ 10. Arqumentìn - [-,] parçasında, h = 5 addımla
dəyìşməsìnə görə, y =Sìn(x) funksìyasının müvafìq qìymətlər cədvəlìnì
tərtìb edìn. Bu cədvəldən mìn(y) və max(y) kəmìyyətlərìnì tapıb nətìcələrì
ekrana çıxaran proqram yazın.
program MinMaxSin;
uses Crt;
var h, x, y, max, min: real;
begin
clrscr;
h:=pi/5;
x:=-pi;
max:=sin(x);
min:=sin(x);
writeln(‘ x y’);
repeat
y:=sin(x);
writeln(x:7:2, y:7:2);
if y>max then max:=y;
if ythen min:=y;
x:=x+h;
until x>pi+h/2;
writeln(‘max = ’, max:5:2, ‘min = ’, min:5:2);
end.
Çalışma 10. Arqumentə aìd aralıõı dəyìşməklə, sonuncu məsələnì
y=Cos(x) funksìyası üçün həll edìn.
2>1>2>1>1>1>2>1> Dostları ilə paylaş: |