Pascalda qism bilan ishlash. Satriy kattaliklar bilan ishlash


Download 35.33 Kb.
bet2/3
Sana18.10.2023
Hajmi35.33 Kb.
#1708108
1   2   3
Bog'liq
PASCALDA QISM BILAN ISHLASH. SATRIY KATTALIKLAR BILAN ISHLASH

Var h,z: Real;
Begin
h:=h1/z1+h2/z2; z:=z1/z2; x:=(h+z)/2;
End;
Bu protsedurada h1,z1,h2,z2 parametrlar qiymati protseduraga murojat qilinganda aniqlangan bo‘lishi kerak. Natijani esa x- parametr uzatadi. h va z o‘zgaruvchilar ichki o‘zgaruvchilardir. Bu protseduraga dasturdan quyidagicha murojaat qilinadi Dr(x,h1,h2,z1,z2). Protseduraga murojaat qilinganda mos parametrlar qiymati bir biriga uzatiladi. Beriladigan formal va faktik parametrlar soni teng va ular turlari bir xil bo‘lishi shart. Lekin parametrlar nomlari har xil bo‘lishi mumkin.
3.Funksiyalar
Funksiyalardan foydalanish va ularni tashkil qilish xuddi protsedura kabi bo‘lib, u quyidagicha bo‘ladi:
Function ():;

Begin

End;
Funksiyaning protseduradan farqi, unga murojat qilinganda natija faqat bitta bo‘lib, u shu funksiya nomiga uzatiladi.
Misol 1. Quyidagi hisoblashni funksiyani ishlatgan holda dasturini tuzing.

Program Kol;
Var ncm:Real; n,m,i: Integer;
Function Fact (k: Integer): Integer;
Var P,i: Integer;
Begin
P:=1; For i:=1 to k do P:=P*i;
Fact:=P;
End;
Begin
Read(n,m); l:=n-m; ncm:=Fact(n)/Fact(m)/Fact(i); 
Write(‘ncm=’,ncm);
End.
Misol 2. Quyidagi hisoblashni protsedurani ishlatgan holda dastursini tuzing.

Program Fun1;
Var a,b,z,c,d,t1,t2,t3: Real;
Procedure Th(Var x,r: Real);
Var c: Real;
Begin c:=exp(2.0*x); r:=(c-1)/(c+1); End;
Begin
Read(a,b);
th(a,t1); c:=a-b; th(c,t2);
d:=Sqr(a)-Sqr(b); th(d,t3);
z:=(t1+Sqr(t2))/Sqrt(t3);
Write(‘z=’,z:10:3);
End.
4.Ayrim nostandart protsedura va funksiyalar
Paskalь tilida bir qancha maxsus protsedura va funksiyalar mavjud bo‘lib, ular quyidagi guruhlarga bo‘linadi:

  • qatorni qayta ishlash;

  • fayllar bilan ishlash;

  • dinamik o‘zgaruvchilar uchun xotirani boshqarish;

  • arifmetik funksiyalar;

  • ekran bilan ishlash.

Ularning ayrimlarini ko‘rib chiqamiz:
Halt- dasturni bajarishdan to‘xtatish;
Odd(i)- I-toq bo‘lsa “True” aks holda “False” qiymat oladi;
Edit- bajarilayotgan blokdan chiqish;
Random- 0 dan 1 gacha bo‘lgan sonni tasoddifan olish;
GotoXY(x,y)- kursorni ko‘rsatilgan joyga qo‘yish;
ClrScr- ekranni tozalab, kursorni ekran boshiga qo‘yish;
Takrorlanuvchi Chiziqli algoritmlar asosida tuzilgan dasturlar takrorlanuvchi dasturlar deyiladi. Quyida chiziqli dasturlar tuzishga misollar ko‘rib chiqamiz.
Masala-1. 1 dan 100 gacha butun sonlar yig‘indisini hisoblovchi dastur tuzing.
Yechish: 1+2+3+…+100 yig‘indida har bir qo‘shiluvchi o‘zidan oldingisigan bittaga ko‘p. Bu qonuniyatdan foydalanamiz. Yig‘indini s deb olib, avval uning qiymatini 0 ga tenglaymiz. Qo‘shiluvchini i deb olamiz, unga 1 qiymat berib, so‘ngra har safar bittaga orttirib boramiz. i=100 bo‘lganda hisoblashni to‘xtatamiz.
1-dastur:
Program Masala_1;
Var i, s: Integer;
Begin
i:=0; s:=0;
While i<100 Do
begin
Inc(i); s:=s+I;
end;
Writeln(‘S=’,s);
End.

2-dastur:


Program Masala_1;
Var i, s: Integer;
Begin
i:=0; s:=0;
Repeat
Inc(i); s:=s+i;
Until i=100;
Writeln(‘S=’,s);
End.

3-dastur:


Program Masala_1;
Var i, s: Integer;
Begin
For i:=1 To 100 do s:=s+i;
Writeln(‘S=’,s);
End.

Bu yerda takrorlanishlar soni avvaldan ma’lum bo‘lgani uchun 3-dastur eng sodda ko‘rinishga ega bo‘ldi.


Masala-2. 1 dan 500 gacha bo‘lgan toq sonlar yig‘indisini topish dasturini tuzing.


Yechish: s=1+3+5+…499 yig‘indini hisoblash kerak. Bu yerda birinchi qo‘shiluvchi 1 ga teng va qolganlari o‘zidan oldingisidan 2 taga ko‘p. 1-misol dasturini bir oz o‘zgartiramiz.

Program Masala_2;


Var i, s: Integer;
Begin
i:=-1; s:=0;
Repeat
i:=i+2; s:=s+i;
Until i=499;
Writeln(‘S=’,s);
End.

Aslida 1- va 2- masalalarni takrorlash operatoridan foydalanmasdan, chiziqli dastur tuzib yechsa ham bo‘ladi. Mustaqil o‘ylab ko‘ring.


Masala-3. Kiritilgan so‘zda nechta “a” harfi borligini aniqlang. Agar kiritilgan so‘zda “a” harfi bo‘lmasa, “yo‘q” degan javob chiqsin.


Yechish: Bu misol oldingi mavzuda berilgandi. Uni tarmoqlanish operatoridan foydalanib yechgandik. Endi takrorlanish operatoridan foydalanamiz.


Program Masala_3;


Var satr: String;
i,s: Integer;
Begin
Write(‘so‘z kiriting:’);
ReadLn(satr);
L:=Length(satr);
s:=0;
For i:=1 To L Do If satr[i]=’a’ Then Inc(s);
If s=0 Then WriteLn(‘yo‘q’) Else WriteLn(‘Kiritilgan so‘zda “a” harfi ’, s, ‘ ta’);
End.

Masala-4. 1 dan 100 gacha bo‘lgan 11 ga karrali sonlar ko‘paytmasini topish dasturini tuzing.


Yechish: Ko‘paytmani p bilan belgilaymiz va uning qiymatini avval 1 ga teng deb olamiz. 1 dan 100 gacha sonlarni birma-bir 11 ga bo‘lib chiqamiz va qoldiqsiz bo‘linganlarini p ga ko‘paytirib boraveramiz. Sonni 11 ga qoldiqsiz bo‘linishini mod funksiyasi yordamida aniqlaymiz.

Program Masala_4;


Var i, p: Integer;
Begin
p:=1;
For i:=1 To 100 Do If i mod 11=0 Then p:=p*i;
Writeln(‘P=’,p);
End.

Bu dastur to‘g‘ri ishlaydi, ammo ortiqcha amallar bajaradi. Masala shartida 11 ga karrali sonlar aytilgan. Birinchi bunday son albatta 11. Keyingilari 22, 33, 44, … va hokazo. Demak biz p=11*22*33*…*99 ko‘paytmani hisoblashimiz kerak. Bu yerda birinchi ko‘paytuvch 11 ga teng va qolganlari o‘zidan oldingisidan 11 taga ko‘p. 3-misol dasturini bir oz o‘zgartiramiz.


Program Masala_4;


Var i, p: Integer;
Begin
i:=0; p:=1;
Repeat
i:=i+11; p:=p*i;
Until i=99;
Writeln(‘S=’,s);
End.

Bu dastur avvalgisidan bir oz “uzunroq” bo‘lsa ham takrorlanishlar soni 11 barobar kam, yani 11 barobar tezroq ishlaydi.


Masala-5. n natural son berilgan. ko‘paytmani hisoblash dasturini tuzing.


Yechish: Bu masala 4-masala kabi yechiladi.
Program Masala_5;
Var i,n,p: Integer;
Begin
Write(‘n=’); ReadLn(n);
i:=1; p:=1;
Repeat
i:=i+1; p:=p*(1/i);
Until i=n;
Writeln(‘p=’,p);
End.

Dasturda Repeat o‘rniga For dan foydalanish mumkin.


Program Masala_5;


Var i,n,p: Integer;
Begin
Write(‘n=’); ReadLn(n);
p:=1;
For i:=2 to n Do p:=p*(1/i);
Writeln(‘p=’,p);
End.
Masala-6. n natural toq son berilgan. ko‘paytmani hisoblash dasturini tuzing.
Yechish: Ko‘paytuvchilar suratida 1 da n gacha toq sonlar, maxrajdagi son esa suratdan bitta ortiq.
Program Masala_6;
Var i,n,p: Integer;
Begin
Write(‘n=’); ReadLn(n);
i:=-1; p:=1;
Repeat
i:=i+2; p:=p*(i/(i+1));
Until i=n;
Writeln(‘p=’,p);
End.
Masala-7. ifodani qiymatini hisoblash dasturini tuzing.
Yechish: Qo‘shiluvchilarni juft-juft qilib ajratsak (birinchi va ikkinchi, uchunchi va to‘rtinchi va hokazo) i=1,3,5,…,99 bo‘lganda, har safar s ga (1/i)-(1/(i+1)) qo‘shilib boradi.
Program Masala_7;
Var i,n,s: Integer;
Begin
i:=-1; s:=0;
Repeat
i:=i+2; s:=s+(1/i)-(1/(i+1));
Until i=99;
Writeln(‘s=’,s);

Trunc- argumentning butun qismi:


Str(I;Var S:String)- raqamni simvolga o‘tkazish (I-ifoda yoki o‘zgaruvchi);
Val(S:String; Var P;ko:Integer)- simvolni raqamga o‘tkazish (P-o‘zgaruvchi);
Length (S:String)- qator uzunligini aniqlash.
Pos(st1,st) - qatordagi qator qismi holatini aniqlash.
Misol: st:=’Toshkent’; st1:=’kent’; p:=pos(st1,st); Javob: p=4. Agar izlanayotgan qator qism qatorda yo‘q bo‘lsa qiymat nulga teng bo‘ladi.
Copy(st,m,n) - qatordan fragment kesib oladi.
Misol: st:=’Toshkent’; p:=Copy(st,4,4); Javob: p=’kent’.
Delete(st,m,n) - qatordan fragment kesib olib tashlaydi.
Misol: st:=’Toshkent’; p:=Delete(st,4,4); Javob: p=’Tosh’


Download 35.33 Kb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling