8.5-listing. Uchburchak yasash protsedurasi
procedure uchburchak(a, b, c : real);
{z- ma`lumotlarni ekranga chiqarishga tayyorgarlik}
var
ok : boolean; // ok=True - mavjud, ok = False - mavjud emas
p : real; // yarim perimetr
begin
yuza:=0;
z := ' ';
z:=floattostr(a)+ ' ' +floattostr(b)+ ' ' +floattostr(c);
if (a+b>c) and (a+c>b) and (b+c>a)
then begin
ok := true;
p:=(a+b+c)/2;
yuza:=sqrt(p * (p - a) * (p - b) * (p - c));
end
else ok:=false;
if ok then
z:=z+' '+'uchburchak mavjud. Uning yuzasi='+floattostr(yuza)
else z:=z+ ' ' +'uchburchak mavjud emas';
s2:=s2+z+#13;
um_yuza:=um_yuza+yuza;
end;
Protseduralar implementation bo`limida undan foydalanuvchi dasturdan avval ko`rsatilishi lozim. Protseduraga murojaat qilish buyrug’i quyidagicha yoziladi:
Nom (Parametrlar ro`yxati);
bu yerda Nom – chaqirilayotgan protsedura nomi; (Parametrlar ro`yxati) –joriy o`zgaruvchilar.
Protseduraga murojaat qilganda joriy o`zgaruvchi sifatida o`zgaruvchi, konstanta yoki ifoda kelishi mumkin. Masalan, kvadrat tenglamaga murojaat qilinganda
uchburchak(StrToFloat(Edit1.Text), StrToFloat(Edit2.Text),
StrToFloat(Edit3.Text), k1, k2, nat);
yoki
uchburchak (a, b, c);
yoki
uchburchak (2.5, b, 3.45);
ko`rinishidagi yozuvlardan foydalanish mumkin.
2-masala: To`rtta p, q, r, t haqiqiy sonlar berilgan. Ulardan hosil qilingan uchliklar orasidan uchburchak yasash mumkin bo’lganlarini toping. Agar uchburchak yasash mumkin bo`lsa, bu uchburchaklarning umumiy yuzini toping.
Yechish g’oyasi: Berilgan to`rtliklardan (p, q, r), (p, q, t), (q, r, t) va (p, r, t) uchliklarni hosil qilish mumkin. Ixtiyoriy uchlikdan uchburchak yasash mumkinligi yuqoridagi protsedura yordamida tekshiriladi.
8.6-listing. Uchburchak yasash mumkinligi haqida dastur
procedure TForm1.Button1Click(Sender: TObject);
var um_yuza, p,q,r,t:real;
s1,s2 : string;
procedure uchburchak(a, b, c : real);
{z- ma`lumotlarni ekranga chiqarishga tayyorgarlik}
var
ok : boolean; // ok=True - mavjud, ok = False - mavjud emas
p : real; // yarim perimetr
begin
yuza:=0;
z := ' ';
z:=floattostr(a)+ ' ' +floattostr(b)+ ' ' +floattostr(c);
if (a+b>=c) and (a+b>=c) and (b+c>=a)
then begin
ok := true;
p:=(a+b+c)/2;
yuza:=sqrt(p * (p - a) * (p - b) * (p - c));
end
else ok:=false;
if ok then
z:=z+' '+'uchburchak mavjud. Uning yuzasi='+floattostr(yuza)
else z:=z+ ' ' +'uchburchak mavjud emas';
s2:=s2+z+#13;
um_yuza:=um_yuza+yuza;
end;
begin
s2 : '';
p : strtofloat(edit1.text);
q : strtofloat(edit2.text);
r : strtofloat(edit3.text);
t : strtofloat(edit4.text);
uchburchak(p, q, r);
uchburchak(p, q, t);
uchburchak(p, r, t);
uchburchak(q, r, t);
s : s #13 'Umumiy yuza ' floattostr(um_yuza);
label6.caption : s;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
um_yuza : 0;
s2 : '';
end;
end.
Bu yerda asosiy dasturdan protseduraga tushadigan formal o`zgaruvchilar protsedura sarlavhasida ko’rsatilgan. Ammo, protseduradan asosiy dasturga qaytishi kerak bo`lgan o`zgaruvchilar yozilmagan. Ular dastur matnida, Button1Click protsedurasi matnida keltirilgan. Bu yuza, um_yuza, s2 o`zgaruvchilari global bo`lib, boshlang’ich qiymatlarini FormCreate protsedurasidan oladi. Bu dasturining dialog oynasi 8.4-rasmda tasvirlangan.
Do'stlaringiz bilan baham: |