Paskal dasturlash tilining asosiy tushunchalari

Ma'lumki, har qanday tilni o'rganish uning alifbosini o'rganishdan boshlanadi. Tilning alifbosi — shu tilgagina tegishli bo'lgan asosiy belgilar va tushunchalar to'plamidan iborat bo'ladi. Paskal tilining alifbosini tashkil etuvchi asosiy belgilar majmuasini uch guruhga ajratish mumkin: harflar, raqamlar va maxsus belgilar.
Harf sifatida katta va kichik lotin harflari ishlatiladi. Lekin, matnlar va dasturga izohlar yozish uchun kirill alifbosining bosh va kichik harflari ham alifboga kiritilgan.
Raqamlar sifatida oddiy arab raqamlari olingan:
<raqam>::=0|l |2|3|4|...|9
Maxsus belgilar ko'p sonli va bir jinslimas bo'lganligi uchun ularni o'z navbatida to'rtta guruhga ajratamiz:
<maxsus belgi>::=<ariimetik amal belgisi>| <solishtirish amali belgisi> | <ajratgich> |<xizmatchi so'z>.
<arifmetik amal belgisi>::= * |  /  | + | —
Bu amallar mos ravishda ko'paytirish, bo'lish, qo'shish va ayirish belgilari hisoblanadi.
Solishtirish amallarining belgilari, ularning matematik ifodasi va amallarning ma'nosi 2-jadvalda o'z ifodasini topgan. Bu yerda shu narsaga ahamiyat berish kerakki, ba'zi bir amallar ikkita belgi orqali ifodalangan.Ajratkichlar guruhini quyidagi belgilar tashkil qiladi: <ajratkich>::=. |,| :|; |( | ) | [ | ] | { | } | ‘ |:= Ajratkichlarning vazifalarini tilni o'rganish davomida aniqlab boramiz.
Xizmatchi so'zlar guruhi juda keng, shuning uchun bu so'zlarning hammasini birdaniga yodlab, eslab qolish shart emas, bil aks ulardan foydalanish davomida ketma-ket eslab qolinaveradi:
<xizmatchi so'zlar>::=and | array const | div | do | downto | else | end
oto | if | in | label | mod | nil | not | of | or | packed program | procedure | record | repeat | set | then | to type | until | var | while | with
Operatorlar
Operator tushunchasi tilning eng asosiy tushunchalaridan biri bo'lib, har bir operator tilning yakunlangan jumlasi hisoblanadi va ma'lumotlar tahlilining tugallangan bosqichini ifodalaydi.
Operatorlarni ikki guruhga ajratish mumkin.
1-guruh operatorlarining tarkibida boshqa operatorlar qatnashmaydi va bu operatorlar asosiy operatorlar deb ataladi. Asosiy operatorlar jumlasiga quyidagi operatorlar kiradi: o'zlashtirish operatori, protsedura operatori, o'tish operatori, bo'sh operator.
2-guruh operatorlarining tarkibida esa boshqa operatorlar ham qatnashib, ular tarkibiy operatorlar deb ataladi. Ular jumlasiga quyidagi operatorlar kiradi: tashkiliy operator, tanlov operatori, takrorlash operatori, ulash operatori.
Masalani yechish algoritmida yuqoridagi ikki guruh operatorlarning ketma-ketligi cheklanmagan miqdorda qat-nashishi mumkin. Bu ketma-ketlikdagi operatorlar o'zaro «;» ajratish belgisi orqali ajratiladi, ya'ni dastur matnining yozuvi alohida operatorlarga bo'linadi. Shunday qilib, S orqali ixtiyoriy yozish mumkin bo'lgan operatorni belgilasak, masala yechilishining algoritmi quyidagi ketma-ketlik bo'yicha ifodalanishi mumkin:
S; S; ….S.
Operatorlarning bu ketma-ketligi ularning dasturda yozilish tartibi bo'yicha bajariladi. Shunday qilib, operatorning izdoshi undan keyin yozilgan operator hisoblanadi. Operatorlar bajarilishining bu tabiiy ketma-ketligini faqat o'tish operatori yordamida buzish mumkin. Tarkibiy operatorlarda esa operatorlarning bajarilish tartibi o'ziga xos qoidalar bilan aniqlanadi.
Ismlar va identifikatorlar
Ma'lumki, ma'lumotlarning tahlili jarayonini ifodalovchi algoritm turli xil ob'ektlar (o'zgarmaslar, o'zgaruvchi miqdorlar, funksiyalar va hokazo) ustida ish olib boradi. Bu ob'ektlarga ularning vazifasi va qabul qiladigan qiymatlariga qarab maxsus ismlar beriladi. Shu ismlarni odatda, identifikatorlar deb ataladi. Identiiikator deb harf yoki «_» belgisidan boshlanuvchi harf, raqam va «_» belgisining ixtiyoriy ketma-ketligiga aytiladi:
<identifikator>::=<harf> | <identifikator> <harf> | <identifikator> <raqam>
Agar quyidagi oraliq tushunchani kiritsak:
<harf yoki raqam>::= <harf>|<raqam>
Yuqoridagi aniqlashni quyidagicha ham yozish mum-kin:
<identifikator>::= <harf> {<harf yoki raqam>}.
Xizmatchi so'zlardan identifikator sifatida foydalanish mumkin emas. Odatda identifikator so'zining o'rniga qulayroq va qisqaroq qilib ism deyish mumkin. Dasturda qatnashuvchi ob'ektlarga ismlarni dasturchi o'z ixtiyoriga ko'ra tanlab olishi mumkin. Bir xil ism bilan bir necha xil ob'ektlarni nomlash mutlaqo mumkin emas. Turbo Paskal muhitida ismda qatnashuvchi belgilar soni (ism uzunligi) 63 ta belgidan oshmasligi kerak.
Ismlarga misollar:
_Burchak, _A1, Ahmad_Berdiev, C, Summa, Time, A, SI, ...
E'lonlar
Paskal tilining asosiy tushunchalaridan biri e'lon qilish hisoblanadi. Dasturda qatnashuvchi barcha ob'ektlarning ismlari rnos ravishda d'asturning bosh qismida, ularning qanday tipdagi qiymatlar qabul qilishi mumkinligiga qarab, e'lon qilinib qo'yilishi kerak. Paskal tilida e’lon qilishning 5 xil turi mavjud:
metkalar e'loni;
o'zgarmaslar e'loni;
tip aniqlash uchun e'lon;
o'zgaruvchilar e'loni;
protsedura va funksiyalar e'loni.
Umuman olganda, yuqorida sanab o'tilgan e'lonlar-ning vazifalari ularning nomlaridan ham sezilib turibdi, e'lonning vazifalari esa keyinroq to'la ochib beriladi.
O'zgaruvchilar
O'zgaruvchi dastur ob'ekti bo'lib, turli xil qiymatlarni xotirada ma'lum nom bilan saqlab turish uchun ishlatiladi. O'zgaruvchi o'z qiymatini dasturning bajarilish davomida o'zlashtirish operatori yordamida qabul qiladi. Qabul qilingan qiymat o'zgaruvchiga boshqa yangi qiymat berilmaguncha saqlanib turiladi va yangi qiymat berilishi bilan eski qiymat butunlay o'chib, yo'q bo'lib ketadi. Har bir o'zgaruvchiga ma'lum bir tipga tegishli qiymatlarnigina qabul qilish huquqi beriladi. Boshqa tipdagi qiymatlarni o'zlashtirishga urinish dasturning xatoligini ta'minlaydi.
O'zgaruvchi — bu identifikatordir. Uning ismi o'zgaruvchining qiymatiga murojaat qilishda ishlatiladi. Boshqacha aytganda, dastur matnidagi ism shu o'zgaruvchining qiymatini ifodalaydi.
Funksiyalar va protseduralar
O'rta maktab kursidan funksiya tushunchasi bizga yaxshi ma'lum. Algoritmik tillarda faqat qiymatini hisoblash algoritmlari ma'lum bo'lgan funksiyalargina ishlati­ladi. Dastur tuzuvchi dastur uchun lozim bo'lgan keraklicha funksiyalarni o'z dasturiga kiritishi mumkin.
Xuddi funksiyalar kabi hal qilinayotgan masalaning ma'­lum bir tugallangan bosqichlarini hisoblash vazifasini protseduralar zimmasiga yuklasa ham bo'ladi. Funksiyani hisoblash natijasida faqat, yagona natijaviy qiymat-ga erishiladi, protseduradan foydalanganda esa, natijaviy qiymatlar soni yetarlicha ko'p bo'lishi mumkin.
Dasturda aniqlangan funksiya va protseduralar o'zgaruvchilarning e'loni bo'limida e'lon qilinib qo'yilishi kerak. Bunda har bir funksiya va protseduraga ularning bajaradi-gan vazifasiga mos ismlar berib qo'yiladi. Ularni aniqlashda formal parametrlardan foydalaniladi. Bu parametrlarning tiplari o'z navbatida, funksiya va protseduraning ichida aniqlanilib, e'lon qilinadi.
Dasturda aniqlangan funksiya va protseduralardan foy-dalanish uchun dastur matnida ularning ismlari va formal parametrlarga mos bo'lgan faktik parametrlari berilishi kerak.
Ma'lumki, matematika kursidagi elementar funksiya-lardan dastur tuzishda juda ko'p foydalanishga to'g'ri keladi (masalan sin x, cjs x, In*, e* va hokazo). Bunday funk-siyalarni standart funksiyalar deb ataladi va standart iunksiyalarning ismlaridan boshqa maqsadda foydalanish maqsadga muvofiq emas.
Dastur matnini yozish qoidalari
Har bir algoritmik tilning dastur matnini yozish qoida-lari turlicha bo'ladi. Dasturlash tillaridan eng soddasi Beysik tilining ma'lum versiyalarida dasturning bar bir operatori qat'iy aniqlangan qator raqamlari orqali yoziladi. Paskal tilida esa operatorlar ketma-ket yozilib, o'zaro «;» belgisi bilan ajratib boriladi. Bundan tashqari, yozilgan dasturning o'qishga oson va undan foydalanish qulay bo'lishi uchun dasturda «matnni ajratish» tushunchasi (bo'sh joy, qatorning tugashi va izohlar) dan foydalaniladi.
Bo'sh joy (probel) grafik tasvirga ega bo'lmagan belgi bo'lib, qatordagi bo'sh joyni anglatadi. Lekin, bo'sh joy belgisi o'zining sonli kodiga ega va dastur matnidagi boshqa belgilar kabi komputerga kiritiladi.
Qator oxiri (tugashi) boshqaruvchi belgi bo'lib, u ham grafik tasvirga ega emas. Ma'lumki, dastur matnini yozish davomida uni tabiiy ravishda yangi qatorlarga ajratilib yoziladi. Chunki, shu matn yozilmoqchi bo'lgan qog'ozning ham, komputer ekranining ham o'lchamlari cheklangan. Dastur matnini alohida qatorlarga ajratmay yozish ham mumkin, lekin bir satrga 256 tadan ortiq belgi sig'maydi. Dastur matnini alohida qatorlarga ajratish dastur tuzuvchining xohishiga qarab bajariladi. Ma'lum bir qator tugamay turib, yangi qatorga o'tish uchun «qator oxiri» tugmachasi bosiladi. Bu tugmacha ham o'zining maxsus sonli kodiga ega.
Izohlar dasturni o'qishga oson bo'lishi, uni qiynalmay tekshirib, yo'l qo'yilgan xatolarni to'g'rilash va dasturda bajarilayotgan ishlarni tushuntirib borish uchun qo'yiladi. Izohsiz yozilgan dasturni hujjat sifatida qabul qilinmaydi. Muvaffaqiyatli qo'yilgan izoh dasturning va dasturchining katta yutug'i hisoblanadi.
Izohlar ixtiyoriy vaqtda dastur matniga kiritilishi yoki olib tashlanishi mumkin.
Bu bilan dasturning ishi o'zgarib qolmaydi. Izohlarni «{» va «}» qavslari ichiga olinib yoziladi.
Dastur «matn ajratgich»laridan foydalanishning quyi-dagi qoidalariga amal qilish lozim:
tilning ketma-ket yozilgan ikkita konstruksiyasi orasiga albatta bo'sh joy yozilishi kerak;
ajratgichlarni xizmatchi so'zlar, sonlar va ismlar orasiga qo'yish maqsadga muvofiq emas.
Quyida yuqoridagi qoidalar asosida yozilgan dasturga doir misol keltirilgan.
Misol. Quyidagi berilgan funksiyalarning qiymatlarini
[a,b] oralig'idagi x=a+ih, h =b-a/n  lar uchun (n-berilgan son) hisoblash dasturini tuzing: fl(x)=x2, /2(д;)=3-x, f3U)=0,5—sinx
Program P1;
{ ll(x)=x*x; f2(x)=3-x; f3(x)=0,5—sin(x) funksiyalar qiymatini [a,b]  oralig'ida nisoblash dasturi }
const
n=lO; {[a,b] oraliqni 10 ta bo'lakchalarga ajratdik}
Var
a,b:real; i:integer;
x,h,y1,y2,y3:real;
Begin
read(a,b); {[a,b] oraliqning chegaralarini ajratish}
h:=(b—a)/n;    я:=а;    i:=0;    {Boshlang'ich ma'lumotlar hisoblandi}
Repeat
yl:=x*x.', y2:=3—x; г/3:=0.5—sinU);

Writeln (x, y\, yl, г/3); {Funksiyalar hisoblanib, natijalar chop etilmoqda}
x:=x+h;   i:=i+\\ Until i=n+\
{Hisob ishlari yakunlandi} end.


0 Comments