Paskal tili ilmiy texnik, muhandislik masalalarini yechishda keng ko`lamda foydalanadigan algoritmik tildir. Mazkur algoritmik tilni 1971 yilda Shveysiyalik professor Virt Niklaus yaratdi. Paskal algoritmik tili, jamlovchi mashinani yaratgan fransuz fizigi Blez Paskal xotirasiga qo`yilgan. Paskalda ko`pgina tillarning yaxshi xususiyatlari mujassamlashgan. Paskal tilidan ilmiy texnik, muhandislik masalalarini yechishda keng ko`lamda foydalaniladi. O`zining soddaligi, mantiqiyligi va samaraligi bilan bu til butun dunyoga tez tarqaldi. Hozirgi paytda barcha hisoblash mashinalari, xususan, kompyuterlar ham shu tilda ishlash imkoniyatiga ega.paskalda tuzilgan dasturlar matnining to`g`riligini osonlik bilan tekshirish mumkinligini, ularning ma`nosi yaqqol ko`zga tashlanishi va oddiyligi bilan ajralib turadi. Paskal tilida operatorlar soni minimal darajada kamaytirilgan. Shuning uchun Paskal yuqori darajadagi til hisoblanadi. Barcha tillar kabi Paskal ham bir necha ko`rinishlarga ega bo`lib, bu ko`rinishlar turli xil kompyuterlarning imkoniyatlarini to`laroq va samaraliroq ishlatish istagida kelib chiqqan. Paskal kompilasiya qilinadigan bir butunligicha tarjima qilinadigan tillar guruhiga kiradi, ya`ni Paskalda tuzilgan dasturni mashina bajarishda o`zining mashina kodlariga so`zma-so`z emas, balki to`laligicha tarjima qiladi. Shunday tarjima qiluvchi qiluvchi dasturlar kompilyatorlar deyiladi. Paskal tili birnecha kompilyatorlarga ega. 1981 yilda Paskal tilining Xalqaro standarti qabul qilingan. IBM PC kompyuterlarida Paskal tilining Turbo Paskal ko`rinishi keng qo`llaniladi. [15,16,24,30].
Bu til rivojlantirilib Turbo Pascal, Borland Pascal va keyinchalik esa Object Pascal nomini oldi. Hozirgi kunda Object Pascal tili asosi bo’lgan Windows muhitida ishlovchi Delphi dasturiy vositasida murakkab professional dasturlar ishlab chiqilmoqda[38].
II BOB. PASKAL DASTURLASH TILINI MATEMATIK VA FIZIK MASALALARIGA TADBIQI HAQIDA.
-
Paskal dasturlash tilini matematik masalalarga tadbiqi.
1-masala. Agar 1 – kombayn hosilni x soatda, 2 – kombayn y soatda, ikkala kombayn birgalikda hosilni z soatda yig`ib olsa, u holda
bo`ladi. Bir kombayn daladagi hosilni 15 soatda, boshqasi esa shu hosilni 10 soatda yig`ib olishi mumkin. Ikkala kombayn birgalikda hosilni qancha soatda yig`ib olishi mumkin?
Yechish: yuqoridagi tenglikka x=15, y=10 ni qo`yib z ni topamiz:
Javob: z=6
Dastur kodini umumiy ko`rinishini keltiramiz:
program ish;
var
x,y,z:real;
begin
write('x='); read(x);
write('y='); read(y);
z:=x*y/(x y);
write('z=',z);
end.
2-masala. Agar to’g’ri to’rtburchakning eni ga, bo’yi ga kattalashtirilsa to’g’ri to’rtburchakning yuzi necha foizga o’zgaradi.
Yechish. To’g’ri to’rtburchkning bo’yi b, enini esa a deb belgilasak, va bu kattaliklarni mos ravishda va oshirsak:
ga o’zgarishini topish qiyin emas. Odatda to’g’ri to’rtburchakning yuzi formula yordamida hisoblanadi. Tomonlari o’zgartirilgandan so’ng yuza
ko’rinishda bo’ladi.
Dastlabki yuzani, keyingi yuzadan ayiramiz va natijada quyidagini hosil qilamiz:
Bu toifadagi masalalarni yechish uchun quyidagicha proporsiya tuzamiz:
Hosil bo’lgan proporsiyadan noma’lumni topsak, u holda quyidagi tenglik kelib chiqadi:
(1)
Keltirilgan formula yordamida to’g’ri to’rtburchakning tomonlari m’lum foizga kattalashtirilganda yuzalarining necha foizga oshganligini hisoblash mumkin.
Masalan: To’g’ri to’rtburchakning bo’yi 40% ga, eni 50% uzaytirildi. To’g’ri to’rtburchakning yuzi necha foizga ortadi.
Yechish: Masalani shartiga ko’ra Bu kattaliklarni (1) formulaga qo’yib so’ralgan kattalikni
topamiz.
Xuddi shu kabi to’g’ri to’rtburchakning bo’yi ga eni ga kichiklashtirilganda ham, to’g’ri to’rtburchakning yuzasi necha foizga kamayishini hisoblash mumkin, buning uchun berilgan yuzadan, kichiklashtirishdan hosil bo’lgan yuzani ayiramiz va
(2) formulani hosil qilamiz.[45566]
Dastur kodini umumiy ko`rinishini keltiramiz:
program ish;
var
q,p,x:real;
begin
write('q='); read(q);
write('p='); read(p);
x:=q p q*p/100;
write('x=',x); end.
3-masala. Massasi m, konsentrasiyasi x% bo`lgan eritma massasi n, konsentrasiyasi y% bo`lgan eritma bilan aralashtirilsa, massasi m n, konsentratsiyasi bo`lgan eritma hosil bo`ladi.
Yechish: 300 gli eritmada konsentratsiyasi 15 % bo`lgan modda miqdori ga, 500 g li eritmada konsentrasiysini 9% bo`lgan modda miqdori g ga teng. Shuning uchun aralashmada bu moddaning miqdori 45 45=90 ga teng. Aralashma 300g 500g=800g bo`lgani uchun 90g uning ini tashkil qiladi.
Javob: 11,25%
Dastur kodini umumiy ko`rinishini keltiramiz:
program ish;
var
z,m,x,y,n:real;
begin
write('m='); read(m);
write('x='); read(x);
write('y='); read(y);
write('n='); read(n);
z:=(m*x n*y)/(m n);
write('z=',z);
end.
4-masala. Agar bankka Z yig`indini x foizga va y muddatga quyilgan bo`lsin, y muddatdan keyin olinadigan yig`indi hamda sof daromadni hisoblovchi dasturni tuzish talab qilinsin. Quyidagi formula yordamida hisoblang: (1)
Bu yerda x-bank foyzi. Yer - Quyosh sistemasidagi Quyoshdan uzoqligi jihatdan uchinchi (Merkuriy, Venera sayyoralaridan keyin) sayyora. U oʻz oʻqi atrofida va aylanaga juda yaqin boʻlgan elliptik orbita boʻyicha Quyosh atrofida aylanib turadi. y-bankka quyilgan muddat, z – bankka quyiladigan yig`indi.
Formula (1) murakkab foizni hisoblovchi ifoda.
Dastur kodini umumiy ko`rinishini kiritamiz:
Uses CRT;
var
x,y,z: integer;
n, m: real;
begin
//cls;
write('Foizni kiriting:');read(x);
write('Muddatni kiriting:');read(y);
write('Qoyiladigan yigindini kiriting:');read(z);
n:=power((1 x/100),y)*z;
//m:=exp(y*ln(1 x/100))*z;
m:=n-z;
writeln('Olinadigan yigindi=', n:5:2);
writeln('Sof daromad=', m:5:2);
end.
5-masala. Sinfdagi 25 ta o`quvchi bir-biri bilan qo`l berib ko`rishdi. Jami bunday ko`rishganlar soni nechta.
Yechish: Bizga ma`lumki, birinchi o`quvchi 24 kishi bilan qo`l berib ko`rishadi, ikkinchi o`quvchi esa 23 kishi bilan qo`l berib ko`rishadi v.k. shu tariqa oxirgi o`quvchi hech kim bilan ko`rishmaydi. Masalani yechish uchun quyidagi umumiy formulani keltiramiz: .
Dastur kodini umumiy ko`rinishga keltiramiz:
program ish;
var
y,n:real;
begin
write('n='); read(n);
y:=n*(n-1)/2;
write('y=',y);
end.
6-masala. Xodimning oylik maoshi ketma-ket ikki marta bir xil foizga oshirilgandan so`ng dastlabki maoshdan 69% ga oshgan bo`lsa, maosh har gal necha foizdan oshgan?
Yechish: Xodimning maoshi har gal bir xil x foizga oshirilgan bo`lsin. Masalaning yechilishi tushunarli bo`lishi uchun xodimning dastlabki maoshini a deb qo`shimcha o`zgaruvchi kiritishdan foydalanamiz (shartli ravishda 1 birlik deb olsak ham bo`ladi). Birinchi galda x foizga oshirilgan maoshning miqdori
so`m bo`ladi. Ikkinchi galda yana x foizga oshirilgandan so`ng maosh
So`mni tashkil qiladi. Masalaning shartidan bu 1,69 a so`mga teng bo`lishi kerak. Shunday qilib,
tenglamani yechib, x=30% bo`lishini topamiz.
7-masala. Kommersant a=5 ta kostumni b=10000 so`mga sotib oldi va ularning har birini bir xil bahoga sotdi. Natijada u c=45 so`m foyda qildi. Kommersant kostumlarni necha so`mdan sotgan?
Yechish: masalaning shartidan ma`lumki, kommersant a ta kostumni jami ab so`mga sotib olgan. U har bir kostumni x so`mdan sotib, jami c so`m foyda qilgan bo`lsa, buni ushbu tenglik bilan ifodalaymiz:
Bu yerdan bo`lib, kommersant har bir kostumni
so`mdan sotgani kelib chiqadi[554545].
Dastur kodini umumiy ko`rinishga keltiramiz:
program ish;
var
x,a,b,c:real;
begin
write('a=');read(a);
write('b=');read(b);
write('c=');read(c);
x:=(a*b c)/a;
write('x=',x);
end.
8-masala. «Rukzak». Berilgan n predmetdan shundaylarini tanlab olish kerakki, ularning jami og'irligi 30 kg.dan kichik, qiymatlari esa eng katta bo'lsin. Tanlangan predmetlarning jami qiymati chop etilsin.
Aniqrog'i - 2 ta musbat sonli A(n) va B(n) massivlar berilgan. Shunday har xil juftli i1, i2,...,ik sonlarni tanlash kerakki, natijada
bo'lsin, faqat max miqdorini chop eting.
Izoh: predmellami ai - og'irlik. bi — qiymat, bi /ai — baho yoki yana qandaydir bir boshqa belgiga ko'ra o'sib borish yoki kamayib borish tartibida joylashtirilgan, deb hisoblash mumkin.
Yechish: Algorirm. «Rukzak» 30 kg.dan og'ir bo'lgan predmetlar olib tashlanib. qolganlari ma'lum bir tartibda joylashtirilgach, variantlar shajarasini quyidagicha aniqlaymiz. Navbatdagi I=I,2,...,n yo'lda raqamli predmetni qaraymiz, i yo'lning j varianllari esa hamma vaqt ikkita bo'ladi: j=0 predmetni olish, j=1 predmeyni olmaslikni bildiradi. Tarmoqlari n uzunlikka teng ikkilamchi daraxt hosil bo'ladi.
Berilgan A[1:n] va B[1:n] massivlardan tashqari P[1:n] massiv va bir nechta o'zgaruvchi kiritamiz:
i - navbatdagi predmet raqami;
T — rukzakdagi prcdmellar og'irligi;
z - rukzakdagi predmetlarning jami qiymati;
ZM - ko'rilgan variantlarning maksimal qiymati;
к ≤ i predmet nikzak olinsa. P[k]=0;
к ≤i predmet mikzakka olinmasa. P[k]=1.
Boshda i,S,Z,ZM nolga tenglashtirib olinadi. Variantlami ko'zdan kechirishda predmetning (va uning hamma davomi) qiziqish tug'dirmashgi aniq bo'lishi bilan ko`rib chiqishni to`xtalish muhimdir. Oldinga harakat qilishda (agar S A[i]<30 bo'lsa). Harakat - borliqnint ajralmas xususiyati boʻlgan oʻzgaruvchanlikni (q. Barqarorlik va oʻzgaruvchanlik) ifodalovchi falsafiy kategoriya. H. tushunchasi imkoniyatlarning voqelikka aylanishini, roʻy berayotgan hodisalarni, olamning betoʻxtov yangilanib borishini aks ettiradi. Predmetni ruk-zakka qo'yishga intilamiz. Bu holda biz chap (tarmoq bo'yicha boramiz: S=S A[i] : Z=Z B[i] : Р[i]=0.
Agar predmeni qo'shish mumkin bo'lmasa, uni olamiz (ya'ni chapga keluvchi variant tarmoqlarini tashlab borib. o'ng tarmoq bo'yicha harakallanamiz) va P[i]=1 deb olamiz. Ikkala holda ham eng oxirgi predmet ko'rilmaguncha oldinga harakatni davom ettiramiz.
Agar hamma variantlar ko'zdan kechirilgan bo'lsa, variant hosil qilindi. U ZM bilan taqqoslanadi:
if ZM
va oxiriga qarab harakat boshlanadi.
Oldinga harakat qilishda olingan ketma-ket keluvchi predmetlarning hamma guruhi o'tkazib yuboriladi (ularda P[i]=0), chunki bitta shu guruhdagi o'zgarish rukzakdagi predmetlarning jami qiymatini tushiradi, xolos. Ko'rilgan predmetlar rukzakdan yo'l-yo'lakay olib tashlanadi:
if P[i]=0 then S=S-A[i]: Z=Z-B[i].
Shundan keyin, oldin olinmagan predmetlarning butun guruhi o'tkazib yuboriladi (ularda P[r]=1), chunki bu guruhdagi o'zgarish oldin baholanishi kerak bo'lgan chap tarmoqqa olib keladi.
Qisqa qilib aylganda, biz P[i]=0 va P[i 1]=1 ni hosil qiladigan shunday raqamga erishgunimizcha, oxiriga qarab harakat qilamiz. Bunday harakatda rukzakdan unda mavjud bo'lgan predmetlar olib tashlanadi. Agar kerakli i bo'lmasa, ish tugatiladi.
Dastur kodini umumiy ko`rinishga keltiramiz:
Program mat;
Rukzak; const NN=100;
T=30;
label 1;
var
i, s, z, zm, n : integer;
A,B : array [1..NN] of integer;
P: array [1..NN] of boolean;
begin
writeln ('N:=');
readln (n);
for i:=1 to n do begin
writeln ('A[', i,']:='); readln (A[i]);
writeln ('B[',i,']:='); readln (B[i]); end;
S:=0; Z:=0; ZM:=0; i:=0;
1: for i:=i 1 to n do
if S A[i]>=T then P[i]:=false else
begin
S:=S A[i];
Z:=Z B[i];
P[i]:=TRUE
end;
if zm
if P[i 1] then begin S:=S-A[i 1]; Z:=Z-B[i 10]; end;
if P[i] and not P[i 1] then begin S:=S-A[i]; Z:=Z-B[i];
P[i]:=False; Goto 1 end; end;
writeln (ZM) end
9-masala. Shanba va yakshanba kungi telefon orqali so'zlashuvlarning 20 % arzonligini hisobga olgan holda so'zlashuvlar qiymatini aniqlovchi dastur tuzing.
Yechish: Quyida dastur ishlash vaqtida tavsiya qilinadigan ekran ko'rinishi berilgan.
Telefon orqali so'zlashuvlar qiymati.
Boshlang'ich qiymatlarni kiriting:
So'zlashuv vaqti (butun son. Minut) -> 3
Hafta kuni (1-dushanba. .... 7-yakshanba) -> 6
-
% arzonlashtiriladi. So'zlashuvlar qiymati: 55.2 so'm.
Shanba va yakshanba kunlari beriladigan imtiyozni hisobga olgan holda telefondan so 'zlashuv qiymatini hisoblash
Dastur kodini umumiy ko`rinishga keltiramiz:
program mat;
var
Time: integer; {so`zlashuv uzunligi}
Day: integer; {hafta kuni}
Summa: real; {suzlashuv qiymati}
begin
writeln ('Telefonda suzlashuv qiymatini hisoblash.');
writeln ('Boshlangich qiymatlami kiriting:');
write ('Suzlashuv uzunligi');
write ('(minutlarning butun miqdori)->');
readln (Time);
write ('Hafta kuni');
write ('(l-dushanba.....7-yakshanba)->');
readln (Day);
Summa:= 20.3 * Time; {1 minut bahosi 20.3 so`m.}
if (Day = 6) or (Day =7) then begin
writeLn ('20 % li imtiyoz beriladi.');
Summa:=Summa * 0.8;
end;
writeln ('Suzlashuv qiymati:', Summa: 8:2, 'sum.');
readln; end.
10-masala. Foydalanuvchining oplimal vaznini hisoblovchi. uni real vazn bilan taqqoslovchi va foydalanuvchiga semirish yoki ozish zaruriyati to'g'risida tavsiyalar beruvchi dastur tuzing. Optimal vazn bo'y uzunligidan (sm) 100 ni ayirish natijasiga teng. Quyida dastur ishlash vaqtida tavsiya qilinadigan ekran ko'rinishi berilgan.
Yechish: Bitta satrdan bo'shliq (probel) orqali bo'y (sm) va vazn (kg) qiymatlarini kiriting va >ni bosing -> 170 68
Siz 2 kg semirishingiz kerak.
Dastur kodini umumiy ko`rinishga keltiramiz:
Program mat;
var
w:real; {vazn}
h: real; {bo'y}
opt: real; {optimal vazn}
d: real; {optimal vazndan farqlanish}
begin
writeln ('Bir satrdan bushliq tashlab kiriting');
writeln ('buó (sm) va vazn (kg), keyin ni bosing');
write ('->');
readln (h,w);
opt:=h - 100;
if w=Opt
then
writeln ('Sizning vazningiz optimal!')
else
if w
then begin
d:=opt-w;
writeln ('Sizga', d:5:2, 'kg.ga semirish kerak');
end
else
begin
d:=w-opt;
writeln ('Siz', d:5:2, 'kg.ga ozishingiz kerak'); end; readln;
end.
11-masala. Foydalanuvchidan oy raqamini so'rovchi va bu oy yilning qaysi mavsumiga tegishli ekanligi to`g'risida javob beruvchi dastur tuzing. Agar foydalanuvchi mumkin bo'lmagan son kiritsa, dastur xato son berilganligi to'g'risida axborot chiqarsin.
Yechish: Quyida dastur ishlash vaqtida tavsiya qilinadigan ekran ko'rinishi berilgan.
Oy raqamini kiriting (1 dan 12 gacha) va ni bosing -» 11 Qish.
Program mat;
var
oy: integer; {oy raqami}
begin
writeln ('Oy raqamini kiriting (1 dan 12 gacha bulgan sonlar)va ni bosing');
write ('->');
readln (oy); case oy of
1,2,12: writeln ('Qish');
3.. 5: writeln ('Bahor');
6.. 8: writeln ('Yoz');
9.. 11: writeln ('Kuz');
else writeln ('Son 1 dan 12 gacha bulishi kerak');
end; readln;
end.
12- masala. Shaharlararo telefon orqali so'zlashuv qiymatini hisoblovchi dastur tuzing (u minut bahosi — abonentning shahargacha bo'lgan masofasi — uzunligi bilan aniqlanadi). Dastur uchun shahar kodi va so'zlashuv vaqti boshlang'ich qiymatlar bo'lib xizmat qiladi.
Yechish: Quyida dastur ishlash vaqtida tavsiya qilinadigan ekran ko'rinishi berilgan. Telefon orqali so'zlashuvni hisoblash.
Boshlang'ich qiymatlarni kiriting: Shahar kodi -> 371
So'zlashuv vaqti (butun son minut) -> 3
Shahar Toshkent. Toshkent - Markaziy Osiyoning eng yirik qadimiy shaharlaridan biri - O‘zbekiston Respublikasining poytaxtidir. Oʻrta Osiyoning yirik sanoat-transport chorraxasi va madaniyat markazlaridan biri. Mamlakatning shimoli-sharqiy qismida, Tyanshan togʻlari etaklarida, 440–480 m teppalikda, Chirchiq daryosi vodiysida joylashgan. Minut bahosi: 150 so'm. So'zlashuv bahosi: 450 so'm.
Dastur kodini umumiy ko`rinishga keltiramiz:
program mat;
var
kod: integer; {shahar kodi}
baho: real; {minui bahosi}
uzun: integer; {so'zlashuv uzunligi}
summ: real; {so'zlashuv qiymati}
begin
writeln ('Telefonda suzlashuv qiymatini hisoblash.');
writeln ('Boshlangich qiymatlarni kiriting:');
write ('Shahar kodi ->');
readln (kod);
write ('Suzlashuv uzunligi (minutning butun miqdori) - >');
readln (uzun);
write ('Shahar');
case kod of
371: begin
writeln ('Toshkent');
baho:= 150; end;
366: begin
writeln ('Samarqand'); baho:=120; end;
315: begin
writeln ('Qarshi'); baho:=100; end;
365: begin
writeln ('Buxoro'); baho:=130; end;
end;
summ := baho * uzun;
writeln ('Minut bahosi:', baho: 6:2,'sum.');
writeln ('Suzlashuv qiymati:', summ: 6:2,'sum.');
readln;
end .
-
30>
|