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:
<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 ishlatiladi. 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