Shartli o‘tish operatorlari.
Bu operator ikkita turli xil ko‘rinishga ega: IF va CASE.
IF operatori.
Bu operator mantiqiy ifodalar qabul qilishi mumkin: TRUE (rost) yoki
FALSE (yolg‘on).
Oddiy mantiqiy ifodaga quyidagi ifodani olish mumkin:
A1 OR A2
Bu yerda, A1 va A2 lar -
ifodalar,
OR - munosabat amali;
Munosabat amallari
Paskal dasturlash tilida quyidagicha belgilanadi:
Misol:
=
>
<
>=
<=
<>
- teng;
- katta;
- kichik;
- katta yoki teng;
- kichik yoki teng;
- teng emas.
3<5; 18>2; 5<=6; A=V;
1
IF operatorining umumiy ko‘rinishi:
IF A THEN ST;
Bu yerda, A - mantiqiy ifoda; ST - operator (oddiy yoki birlashgan). Agar A - rost bo‘lsa, ST
operatori bajariladi. Agar A – yolg‘on
bo‘lsa, u
holda boshqaruv ST operatoridan
keyingi
operatorga uzatiladi.
Misol.
IF F<>0 THEN B:=X/A;
Agar A≠0 bo‘lsa, u holda V:=X/A;
operatori
bajariladi. Agar A=0
bo‘lsa,
u
holda bu
operator tashlab qoldiriladi va boshqaruv keyingi operatorga uzatiladi.
IF operatori quyidagi ko‘rinishga ham ega bo‘lishi mumkin:
IF A THEN ST1 ELSE ST2;
Bu yerda, A - mantiqiy ifodasi, ST1, ST2 operatorlar. Agar A - rost bo‘lsa, ST1 operatori -
bajariladi, agar A – yolg‘on bo‘lsa ST2 operatori bajariladi va ikkala holda ham boshqaruv
keyingi operatorga uzatiladi.
Eslatma 1:
ELSE dan oldin nuqta vergul (;) quyish mumkin emas.
Misol:
IF A<>0 THEN B: =1/A ELSE B:=0;
Agar A≠0 bo‘lsa, u
holda
V - o‘zgaruvchi 1/A ni
o‘zlashtiradi, agar
A=0 bo‘lsa, 0
qiymatini
o‘zlashtiradi.
Eslatma 2: Quyidagi operatorning:
IF A1 THEN IF A2 THEN ST1 ELSE ST2;
sintaksis bir xil emasligi quyidagicha yoziladi(tushuniladi):
IF A1 THEN
BEGIN
IF A2 THEN ST1 ELSE ST2
END;
Misol:
IF A<>0 THEN IF B<>0
THEN C:=A/B ELSE C:=0;
K:=-1;
Agar A≠0 bo‘lsa, u holda V≠0 uchun
S=A/V, V=0 uchun S=0
bo‘ladi va
undan
keyin K: =-1;
operatori bajariladi.
Agar A=0 bo‘lsa, u holda boshqaruv to‘g‘ridanto‘g‘ri K:=-1;
operatoriga uzatiladi.
Quyida IF operatoriga misollarni “Delphi” muhitida ko‘ramiz.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, MPlayer;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Label3: TLabel;
Label4: TLabel;
Button2: TButton;
Panel1: TPanel;
3
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Button3: TButton;
Button4: TButton;
MediaPlayer1:
TMediaPlayer;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var a, b, y: real;
begin
if Edit1.Text='' then Form2.ShowModal;
if Edit2.Text='' then Form2.ShowModal else
begin
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
if a>0 then y:=a+b else y:=a-b;
label4.caption:=FloatToStr(y);
end;
end;
4
procedure TForm1.Button2Click(Sender: TObject);
begin
if Panel1.Color= clBackground then Button1.Enabled:=false;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if Panel2.Color=clActiveCaption then
begin
Button1.Enabled:=true;
Panel3.Color:=clMoneyGreen;
Panel4.Color:=clRed;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if Panel4.Color=clTeal then
begin
Button1.Enabled:=true;
Panel3.Color:=clBlue;
end
else
begin
MediaPlayer1.Play;
Form1.Color:=clYellow;
end
end;
end.
3. CASE ko‘rsatmasidan foydalanib tarmoqlanuvchi
jarayonlarga doir
dasturlar tuzish va «Delphi» komponentlari bilan bog‘lash.
CASE - Variant tanlash operatori
Ayrim algoritmlarning hisoblash jarayonlari o‘zlarining ko‘p
tarmoqliligi
bilan
ajralib
turadi. Umuman olganda, tarmoqli jarayonlarni hisoblash uchun shartli
operatordan foydalanish yetarlidir. Lekin, tarmoqlar soni ko‘p bo‘lsa shartli operatordan
foylanish algoritmning ko‘rinishini murakkablashtirib yuboradi. Bunday hollarda shartli
operatorning umumlashmasi
bo‘lgan variant tanlash
operatoridan foydalanish
maqsadga
muvofiqdir. Variant tanlash operatorini sintaksis ko‘rinishi quyidagicha:
CASE ifoda OF
ro‘yxat 1: begin
{ko‘rsatmalar 1}
end;
ro‘yxat 2: begin
{ko‘rsatmalar 2}
end;
ro‘yxat N: begin
{ko‘rsatmalar N}
end; else
begin
{ko‘rsatmalar 3}
end;
END;
Ifoda -
ifodaning
qiymatiga qarab dasturning bajarilish
yo‘nalishi
o‘zgartiriladi. Ro‘yxat – bir-biri bilan vergul bilan ajralib turuvchi o‘zgarmaslar
ro‘yxatidir. Agar o‘zgarmaslar
sonlar diapazonidan tashkil
topgan
bo‘lsa, u
holda ro‘yxat
1
o‘rniga birinchi va oxirgi o‘zgarmaslarni yozib orasiga ikki nuqta (..) qo‘yish kerak bo‘ladi.
Masalan, 1, 2, 3, 4, 5, 6 ro‘yxati 1..6 diapozoni bilan almashtirilishi mumkin.
CASE ko‘rsatmasi quyidagicha ishlaydi:
1. Case so‘zidan keyin turgan ifoda qiymati hisoblanadi.
2. Ifodaning qiymati ro‘yxat(metka) qiymatlari bilan solishtiriladi.
3. Agar ifodaning qiymati ro‘yxat(metka)
qiymatlari bilan mos
kelsa, u
holda shu
ro‘yxat(metka)ga mos
keluvchi
ko‘rsatmalar ketma-ketligi
bajariladi, Case ko‘rsatmasi
bajarilishi to‘xtaydi va boshqaruv Case dan keyingi operatorga uzatiladi.
4. Agar ifodaning qiymati birorta ham ro‘yxat(metka) qiymatlari bilan mos kelmasa, u
holda Else xizmatchi so‘zidan
keyingi
ko‘rsatmalar ketma-ketligi bajariladi,
Case
ko‘rsatmasi bajarilishi to‘xtaydi va boshqaruv Case dan keyingi operatorga uzatiladi.
Shuni yodda tutish kerakki si bilan si bir xil
tushuncha
emas
va
variant metkasi metkalar
bo‘limida
ko‘rsatilmasligi kerak. Bundan
tashqari ular o‘tish operatoridan ishlatilishi mumkin emas.
Quyida Case ko‘rsatmasining blok sxemasi keltirilgan:
Ifoda
Misol 1:
Ko‘rsatmalar
ketma-
ketligi
Ko‘rsatmalar
ketma-
ketligi
Ko‘rsatmalar
ketma-
ketligi
1. Case i mod 3 of
0: m:= 0;
1: m:= -1;
2: m:= 1
end;
2
.
C
a
s
e
end;
'*', '+', '/', '-' : ;
'!' : k:= 2;
':', ';': k:= 3
3. Case kun of
dush, sesh, chor, pay, jum: writeln('ish kuni');
shan, yksh: writeln('dam olish kuni')
end;
Variant tanlash operatori ichiga kirish faqat CASE orqali amalga oshiriladi.
Endi shartli operatorni variant tanlash operatori orqali ifodasini ko‘rib
chiqaylik:
Misol 2:
(a
+
1. if B then S1 else S2
2. if B then S
=
b) x; x
2
Case B of
true: S1;
false: S2;
yend;
Case B of
true: S;
false:
yend;
y =
⎨⎧
−
= ; ni hisoblash lozim bo‘lsa,
Case
operatoridan quyidagicha
⎩( a b) x; x 3
foydalanish mumkin:
Case x of
2 : y := (a + b) * x;
3 : y := (a - b) * x;
end;
⎧( a +
=
=
Agar y
=
⎨
⎩
( a − b) x; x 2, x 5
=
=
b) x; x 3, x 7
; ni hisoblash lozim bo‘lsa,
Case
operatoridan
quyidagicha foydalanish mumkin:
3
Case x of
2, 5 : y := (a + b) * x;
3, 7 : y := (a - b) * x;
end;
Ya’ni, bir nechta
variantlar
mavjud bo‘lsa,
ularning orasiga (,)
vergul
qo‘yiladi.
Agarda qiymatlar ma’lum bir
oraliqga tegishli
bo‘lsa, ya’ni, misol uchun
⎧ +
< <
y =
⎨
⎩
( a b) x ; 2 x 10
−
< <
; ni hisoblash lozim bo‘lsa,
Case
operatoridan quyidagicha
(a b)x ;15 x 25
foydalanish mumkin:
Case x of
2..10 : y := (a + b) * x;
15..25 : y := (a - b) * x;
end;
Bundan
tashqari
Case
operatorida
Else
xizmatchi
so‘zidan ham foydalanish mumkin.
Masalan:
Case x of
2..10 : y := (a + b) * x;
15..25 : y := (a - b) * x;
=
else y : 0;
end;
Bu yerda
Else
xizmatchi
so‘zi
End
xizmatchi
so‘zidan oldin
ishlatiladi. Agar berilgan
variantda bir necha
amallar
bajarilishi
lozim
bo‘lsa, bu bajarilishi
lozim
bo‘lgan
amallarni
Begin
va
End
xizmatchi so‘zlari orasiga yozish mumkin.
Case ko‘rsatmasi
bilan
mos ishlaydigan “Delphi”
komponentlarga ListBox (ro‘yxat),
ComboBox (osiluvchi ro‘yxat), RadioGroup (tanlanuvchi ro‘yxat), ColorBox (rangli osiluvchi
ro‘yxat)larni misol qilib olish mumkin. Quyida ListBox, ComboBox, RadioGroup, ColorBox
komponentlarini xossalari keltiriladi:
№
Xossasi
Ta’rifi
ListBox – bu komponenti Windows uchun yaratilgan dasturlarda ko‘p qo‘llaniladi. U
ro‘yxatdan bir yoki bir
nechta qatorni tanlash imkonini beradi.
1 Items
2 ItemIndex
3 Font
4 BorderStyle
Ro‘yxat elementlari.
Ro‘yxat elementi raqami.
Ro‘yxat shriftiga oid xossalar.
Komponentko‘rinishi.
ComboBox – bu komponent qo‘shimcha maydon bilan bog‘langan ro‘yxat variantlarini aks
etadi. Tanlangan
ro‘yxat elementi shu maydonda ko‘rinib turadi. Bu maydon yordamida ro‘yxatda mavjud
elementlarni bosh
harflarini kiritib tez topish imkonini ham beradi. Qisqacha qilib “osilib chiquvchi” ro‘yxat
deb atasa ham
bo‘ladi.
1 Items
2 ItemIndex
Ro‘yxat elementlari.
Ro‘yxat elementi raqami.
4
3 Font
4 Text
Ro‘yxat shriftiga oid xossalar.
Qo‘shimcha maydonda ko‘rinib turadigan matn.
RadioGroup – bu komponent ko‘rinib turuvchi ro‘yxatdan tanlash (ro‘yxat oldiga nuqta
qo‘yish) orqali kerakli
ro‘yxat elementini tanlaydi.
1 Items
2 ItemIndex
3 Font
4 Caption
Ro‘yxat elementlari.
Ro‘yxat elementi raqami.
Ro‘yxat shriftiga oid xossalar.
Ro‘yxat sarlavhalari.
ColorBox – bu komponent osiluvchi ro‘yxat bo‘lib, ranglar ro‘yxatini saqlaydi.
Ro‘yxatdan kerakli rang
tanlanadi. Maydonda shu rang nomi va rang hosil bo‘ladi.
1 DropDownCount
2 Cursor
3 Font
4 Color
Osilib ko‘rinuvchi ro‘yxat elementlari soni.
Komponent ustida kursorni ko‘rinishi.
Ro‘yxat shriftiga oid xossalar.
Ro‘yxat foni rangi.
Quyida CASE ko‘rsatmasi bilan birga foydalanish mumkin bo‘lgan
bir nechta
komponentlar ishtirok etgan misol keltirilgan.
Muhitdagi ko‘rinishi.
Dastur ishga tushirilgan vaqtdagi ko‘rinishi. Dastur ishi
vaqtidagi ko‘rinishi.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, MPlayer;
type
TForm1 = class(TForm)
ListBox1: TListBox;
5
ComboBox1:
TComboBox;
Label1: TLabel;
Label2: TLabel;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
ColorBox1: TColorBox;
MediaPlayer1:
TMediaPlayer;
RadioGroup1:
TRadioGroup;
MediaPlayer2:
TMediaPlayer;
Panel5: TPanel;
procedure ListBox1Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ColorBox1Change(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ListBox1Click(Sender: TObject);
begin
case ListBox1.ItemIndex of
0: begin
Image1.visible:=false;
Panel1.Color:=clTeal;
Panel1.Caption:='Birichi';
end;
1: begin
Image2.visible:=false;
Panel2.Color:=clRed;
Panel2.Caption:='Ikkinchi';
end;
2: begin
Image3.visible:=false;
Panel3.Color:=clYellow;
Panel3.Caption:='Uchinchi';
end;
3: begin
Image4.visible:=false;
Panel4.Color:=clBlue;
Panel4.Caption:='Turtichi';
end;
end;
end
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
case ComboBox1.ItemIndex of
0: Image1.visible:=true;
1: Image2.visible:=true;
2: Image3.visible:=true;
3: Image4.visible:=true;
end;
end;
procedure TForm1.ColorBox1Change(Sender: TObject);
begin
case ColorBox1.ItemIndex of
0: Panel5.Color:=clBlack;
1: Panel5.Color:=clMaroon;
2: Panel5.Color:=clGreen;
3: Panel5.Color:=clOlive;
end;
end;
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
case RadioGroup1.ItemIndex of
0: begin
MediaPlayer2.Stop;
MediaPlayer1.Play;
end;
1: begin
MediaPlayer1.Stop;
MediaPlayer2.Play;
end;
end;
end;
end.
Do'stlaringiz bilan baham: |