Pascalda qism bilan ishlash. Satriy kattaliklar bilan ishlash



Yüklə 29,42 Kb.
səhifə2/3
tarix25.09.2023
ölçüsü29,42 Kb.
#123654
1   2   3
16.Pascalda qism bilan ishlash. Satriy kattaliklar bilan ishlash.

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’

Yüklə 29,42 Kb.

Dostları ilə paylaş:
1   2   3




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə