Збекистон миллий университети


§ 3.5. Pascal да берилганларнинг асосий турлари



Download 1,98 Mb.
bet25/56
Sana23.06.2022
Hajmi1,98 Mb.
#694633
TuriПрограмма
1   ...   21   22   23   24   25   26   27   28   ...   56
Bog'liq
inf va dast-oquv-qollanma

§ 3.5. Pascal да берилганларнинг асосий турлари.

Берилганлар икки хил бўлиши мумкин: ўзгармаслар (улар программани ичида фиксирланган ва ўзгармас бўлиши керак); ўзгарувчилар (улар программани ичида ўзгариши мумкин). Берилганлар ҳар хил турдаги компоненталарга эга структураларга бирлашиши мумкин. Структурани ягона қиймат ёки қандайдир объектни қиймати сифатида кўришимиз мумкин. Паскал тилида қуйидагича келишилган:


- ихтиёрий берилган қиймат қандайдир берилганлар структурасига киради ва алоҳида берилган қиймат оддий берилганлар структураси деб номланади (оддий структура);
- берилганлар структурасини элементи оддий ёки муракккаб берилганлар структураси (мураккаб структура) бўлиши мумкин;
- бир хил структуралар ҳар хил турларга эга бўлган берилганлардан иборат бўлиши мумкин.
Паскал тилидаги турлардан фойдаланиб, программа тузувчи берилганларни хотирада сақланишига аҳамият бермаган ҳолда, улар билан амаллар бажаради.
Турлар ҳақида гапирганимизда, бу турлардаги ўзгарувчи ва ўзгармасларни қандай қиймат қабул қилиши ва улар устида қандай амаллар ва стандарт функциялар ишлатилишини кўрсатишимиз етарли.
Паскал тилидаги турлар асосий ва ҳосилавий турларга бўлинади.
Асосий турлар оддий структуралардан ташкил топган қийматлардан, ҳосилавий турлар эса мураккаб структуралардан иборат.
Асосий турлардан кўрсаткич тури алоҳида ажратилган, қолган турлар эса скаляр турлар деб номланади. Скаляр турлар стандарт ва программа тузувчи яратган турларга бўлинади. Стандарт турларга бутун, ҳақиқий, мантиқий ва белгили турлар киради.

Бутун (integer) тур. Бутун турига бутун сонлар тўпламидаги қийматлар (амалга оширишга боғлиқ) киради. Улар устида 5 та асосий амаллар бажарилади: қўшиш (), айириш (-), кўпайтириш (*), бутунни бутунга бўлиш ва бутун қисмини олиш (div), бутунни бутунга бўлиш ва қолдиқ қисмини олиш (mod). Бу амаллар бутун натижа беради. Биринчи тўртта амаллар оддийгина, бешинчиси эса қуйидаги қоида бўйича бажарилади: фақат n>0 бўлганда ишлатилади,


агар m>0 бўлса m mod n  m - ((m div n) * n);
агар m<0 бўлса m mod n  m-((m div n) * n)  n.
Ифодада чапдан ўнга қараб div, mod, * амаллари биринчи бўлиб, кейин - ва  амаллари бажарилади. Бутун қийматларни таққослаш ва қиймат бериш операторида ишлатиш мумкин.
Қуйидаги стандарт функциялар бутун натижа беради:
abs(x)- х-ни абсолют қиймати,
sqr(x)- х-ни квадрати,
trunc(x)- х-ни бутун қисми,
round(x)- х-ни бутунгача яхлитлаш.
Бутун тур тартибланган бўлгани учун, қуйидаги стандарт функцияларини қўллашимиз мумкин:
succ(x)- х-дан кейинги бутун қийматини,
pred(x)- х-дан олдинги қийматини,
ord(x)- тартиб номерини беради.
Масалан, 76, -234, +56.
Бутун турдаги ўзгарувчиларни эълон қилиш учун қуйидаги калит сўзлар мавжуд: integer, shortint, byte, longint ва word.
Ҳар бир бутун ўзгарувчиларни эълон қилиш учун алоҳида ҳолларга боғлиқ равишда шу калит сўзлардан бири ишлатилади.
Қуйидаги жадвалда бутун сонларни ҳамма турлари келтирилган:



Тур

Қийматлар
оралиқлари

Хотирада эгаллаган ўрни

Shortint

-128..127

1 байт

Integer

-32768..32767

2 байт

Longint

-2147483648..2147483647

4 байт

Byte

0..255

1 байт

Word

0..65535

2 байт

Жадвалнинг чап устунида бутун сонли турдаги ўзгарувчиларни эълон қилиш учун ишлатиладиган Туpбо-Паскаль тилининг калит сўзлари келтирилган. Иккинчи устунда ҳар бир турдаги ўзгарувчиларни қабул қилиши мумкин бўлган қийматлар оралиқлари келтирилган.


Жадвалнинг ўнг томонидаги устунида ҳар бир турдаги ўзгарувчининг сон қийматининг хотирада эгаллаган жойини узунлиги келтирилган.
Агар ўзгарувчиларни сон қийматлари ўзгариш оралиқлари катта бўлса, уни хотирада эгаллаган ўрни ҳам узун бўлади. Иккинчи томондан, сон қийматлари кичик оралиқларда ўзгарадиган ўзгаpувчилаp LONGINT турлари билан эълон қилиш маънога эга эмас.
Ҳақиқий (real) тур. Ҳақиқий турига ҳақиқий сонлар тўпламидаги қийматлар (амалга оширишга боғлиқ) киради. Real тури тартибланмаганлиги учун succ, pred, ord функцияларини қўллаш мумкин эмас. ЭҲМда ҳар бир ҳақиқий сон қандайдир хатолик билан сақланади, шунинг учун уларни устида тенгликка таққослаш амаллари бажарилганда, тўғри натижа бермаслиги мумкин. Улар устида 4 асосий амаллар бажарилади: қўшиш (), айириш (-), кўпайтириш (*), бўлиш (/). Бўлиш амаллини бажарганда иккита операнд бутун бўлганда ҳам, натижа ҳақиқий бўлади.
Қуйидаги функцияларни аргументи real ёки integer бўлганда ҳам натижаси ҳақиқий бўлади: sin(x)-синус, cos(x)-косинус, arctan(x)-арктангенс, ln(x)-натурал логарифм, exp(x)-экспонента, sqrt(x)-х-ни квадрат илдизи. abs ва sqr функциялари эса аргументи ҳақиқий бўлгандагина ҳақиқий натижа беради.
Ҳақиқий ўзгармаслар ўнли саноқ системасида берилади. Улар фиксирланган нуқта ва сузувчи нуқта кўринишида ёзилади. Биринчи кўринишида сонни бутун ва каср қисмлари нуқта билан ажратилади. Иккинчисида эса сон қуйидагича ёзилади:
<сузувчи нуқта билан ёзилган сон >::=< ишорасиз бутун сон>E< бутун сон > ёки
< фиксирланган нуқта билан ёзилган сон >E< бутун сон >
<фиксирланган нукта билан ёзилган сон>::=<бутун сон> ёки <бутун сон>Е<бутун сон>
Масалан : 0. 002; 3.14; 22.0; 0.2Е-5; 6Е3; 29.; 839Е-09; 24Е+03 .
Ҳақиқий турдаги ўзгарувчиларни эълон қилиш учун қуйидаги калит сўзлар ишлатилади: REAL, SINGLE, DOUBLE, EXTENDED, COMP.
Агар математик сопроцессордан, яъни сон қийматлар доирасини кенгайтирадиган ва ҳисоблаш тезлигини оширадиган қўшимча қурилмадан, фойдаланилса, у ҳолда қуйидаги жадвалда келтирилган турларни ҳаммасини Турбо-Паскаль қўллайди:



Тур

Сон қиймат оралиқлари

Хотирада эгаллаган ўрни

Real

2.9E-39..1.7E+38

6 байт

Single

1.5E-45..3.4E+38

4 байт

Double

5.0E-324..1.7E+308

8 байт

Extended

3.4E-4932..1.1E+4932

10 байт

Comp

9.2E-18..9.2E+18

8 байт

Агар математик сопроцессордан фойдаланилмаса, ҳақиқий турдаги ўзгарувчилар учун фақат REAL калит сўзи ишлатилади.


Ҳақиқий соннинг "Е-формат"даги "mEp" кўринишида ифодаланаётган соннинг қиймати m сонини 10 сонининг p даражасига кўпайтириш билан аниқланади.

Белги (char) ва сатр (string) турлари. Туpбо-Паскал тилининг асосий ташкил қилувчи элементлари, яъни ҳарфлаp, рақамлар ва ажратувчи белгиларнинг иккита ‘ ’ белги ичида ёзилиши (масалан, 'A','4','ғ') белги туридаги қиймат ҳисобланади. Ўзгаpувчилаpни белги туpида эълон қилиш учун СHAR калит сўзи ишлатилади ва улар хотирадан бир байт эгаллайди:


VAR CH : CHAR;
...
CH : 'a';
Белги турига маълум бир тўпламидаги белгилар киради. Масалан, Турбо-Паскалда бу тўплам-256 элементдан иборат бўлган ASCII жадвали бўлиб, ҳар бир компьютер хотирасида доимий равишда бу жадвалга эга бўлади. Ҳар бир белги жадвалдаги тартиб ўрнини аниқловчи сон (коди) билан аниқланади. Шу сабабли белги ЭҲМ хотирасида унинг коди кўринишида сақланади ва у бир байт (8 бит - иккилик разряд) жой олади.
Белги турида бўлган қийматлар қуйидаги қоидаларни қаноатлантиради: 
1) шу тўпламга 0 дан 9 гача рақамлар киради, улар ўсиб бориш бўйича тартибланган ва улар тўпламда кетма-кет жойлашган;
2) ишлаётган версияда тўпламга кичкина лотин ҳарфлари киритилган бўлса, улар ва уларнинг тўпламда тартиб номерлари ўсиб бориш тартибида бўлиши шарт; 
3) иккинчи қоида катта лотин ҳарфлари учун ҳам ўринли;
4) агар a ва b - белгилар бўлса, ва a>b бўлса, у ҳолда ord(a)>ord(b), агар aБелги ўзгармасларга қуйидаги мисол бўлади:’р’, ‘_’, '1'
Char тури тартибланган тур бўлгани учун, қуйидаги стандарт функцияларини қўллашимиз мумкин: succ(x)- х белгидан кейинги белги, pred(x)- х белгидан олдинги белги, ord(x)- х белгининг тартиб номерини беради. Chr(n)- n- тартиб номерли белгини беради. Белгили турдаги қийматлар учун таққослаш ва қиймат бериш амаллари ишлатилиши мумкин.
Белгиларнинг қўштирноқ ичига олинган кетма-кетлиги сатр дейилади (қўштирноқнинг ўзи кирмайди). Масалан, 'АБВ','', 'adidas' ифодалар сатр ҳисобланади. Бу турдаги ўзгарувчиларни эълон қилиш учун STRING[N]- калит сўзи ишлатилади. Бу ерда N- сатр ўзгарувчисининг узунлиги бўлиб, BYTE туридаги сон қиймат. Сатр бўш бўлиши ёки 255 гача белгидан ташкил топган бўлиши ҳам мумкин. Бўш сатр нол узуликка эга дейилади ва '' деб белгиланади. Энг узун сатр 255 белгидан ташкил топган бўлади ва хотирадан 256 байт жой эгаллайди.
Агар берилган сатр ўзгарувчисини қиймати 50 тадан ортиқ белги қабул қилмаслиги аниқ бўлса, бу ўзгарувчини STRING[50] деб эълон қилиш мақсадга мувофиқ. Ушбу кўринишда эълон қилиш натижасида хотирадан беpилган ўзгаpувчига ажpатилган жой беш маpта қисқаpади. Сатр ўзгарувчисини хотирадан қанча жой эгаллаганини аниқлаш учун, унинг узунлигига бир байт қўшиш зарур. Ушбу қўшилган байт сатpнинг нолинчи элементи бўлиб, унда сатp узунлиги сақланади. Сатр тури устида қўшиш (конкатенация) ва сатрларни таққослаш амаллари аниқланган. қўшиш амалини қуйидаги мисолда кўриб чиқамиз.
Prоgram Satr;
Var S1, S2, S3: string;
begin
S1:  - Pascal;
S2:  Turbо;
S3:  S2 + S1;
Write (S3); { Turbо Pascal }
End.
Бу программа S1 ва S2 сатр ўзгарувчиларининг қийматлари йиғиндиси-конкатенацияси S3 ни топишга ва чоп етишга мўлжалланган.
Одатда String туридаги сатрларни таққослаш бирма-бир биринчи белгидан бошлаб ASCII кодлари бўйича олиб борилади.
А) Агар икки сатрнинг узунликлари тенг ва бир хил бўлса, улар тенг дейилади.

Abcd= abcd


Abcs <> abcd
Abcd <> abcd

В) Символларни кетма-кет таққослаш пайтида, қайси символнинг ASCII коди катта бўлса, ўша символ қатнашган сатр катта ҳисобланади:


Abcd > abcd чунки a < b< … >г
Absd > abоb чунки b> B>
Сатрларни қайта ишлашга имкон берадиган функция ва процедураларни мисолларда кўриб ўтамиз бунинг учун бизга S1, S2, S3. Сатр ўзгарувчилари берилган бўлсин:
Var S1, S2, S3: String
K: byte;
- - - - - - -
S1:  12345
S2:  67890;
Берилган сатр турига кирувчи ўзгарувчидаги символлар сонини аниқлашга имкон берадиган функциянинг умумий кўриниши қуйидагича.
Length (s: string): byte ва юқоридаги киритилган сатрларга қўллаш мумкин.
K:Length (S1):
Write (k); {S}
Write (Length(S2)); {S}
Cоncat (S1, S2, SN : string): string функцияси сатрларни бирлаштириш (қўшиш) учун хизмат қилади, Масалан:
S3 :Соncat (S1, S2)
Writeln (S3); {1234567890}
Pоs (Subs S: string): byte функцияси Subs сатрининг S сатрининг ичида нечанчи белгидан бошлаб жойлашганлигини кўрсатади.
Масалан. S3: 1234567890;
K:  Pоs( S1, S3);
Writeln ( K); {1}
Write (Pоs(S2, S3)); {6}
Ҳақиқатдан ҳам S1:12345 сатри S3 нинг ичида К1 номердан бошлаб жойлашган, S267890 эса 6 - символдан бошлаб жойлашган. Агар Sub S қисм сатр S нинг ичида бўлмаса, Pоs функциясига 0 қиймати берилади.
Cоpy ( S: string; n, m: integer): string; функцияси S сатрдан n- номерли символидан бошлаб m та белгини ажратиб олади.
Масалан:
S3:Cоpy (S1,2,3);
Writeln (S3);{234}
Writeln Cоpy (S2,3,3);{890}

Delete (var S: string; n, m: integer); процедураси S сатрининг n-белгисидан бошлаб m та символни ўчириб ташлайди.


Масалан:
S3:S1+S2: {1234567890}
Delete {S3,5,4}
Writeln (S3):{123490}
Insert (Subs: string; var s: string; N: integer); процедураси Subs сатрини S сатрининг орасига унинг N-символидан бошлаб жойлаштириш учун хизмат қилади.
Масалан:
S1: “Familasi-sharifi”;
Insert (“Ismi-“ ,10, 5);
Writeln (S1); {Familasi-Ismi-sharifi}
Str (х, w, d: word; var S: string);
Процедураси бутун ёки ҳақиқий турдаги Х нинг қийматини сатр турига айлантиради. Бу ерда W, Х-сони учун ажратилган позицияларнинг умумий сони, d-эса каср қисми учун позициялар сони.
Val (s: string; Var Х: <тури>;Var I: integer); процедураси рақамлардан ташкил топган string туридаги S сатрини, integer ёки real туридаги сонли қийматга ўзгартиради. Агар алмаштириш тўғри бўлса, I=0 бўлади, акс ҳолда I ўзгаручи ўзгартиришга халақит берган символнинг номерини ифодалайди.
Var X:real;
S:string;
I:integer;
...
X:=3.1415926; Str(X:8:4,S);
S:=’X=‘+S;
Writeln(S); {X= 3.1416}
Delete(S,1,2); { 3.1416}
Val(S,X,I);
if I=0 then Writeln(X:10:4) { 3.1416}
else
Writeln(‘Сатрда хато бор’, S, ‘ символ’ S[I]);

Мантиқий (Boolean) тур. Бу турга фақат иккита мантиқий ўзгармас киради: false (ёлғон) ва true(рост), шунинг учун мантиқий турининг қийматлар тўплами тартибланган ва false-нинг тартиб номери 0, true - 1.


Мантиқий ўзгарувчиларни программада эълон қилиш учун BOOLEAN калит сўзи ишлатилади:
Var X_Bool : BOOLEAN;
Мантиқий қийматлар устида инкор (not), конъюнкция (and), дизъюнкция (or), таққослаш, қиймат бериш амаллари бажариш мумкин ва уларнинг бажарилиш тартиби юқоридагидек.
Мантиқий ўзгаpувчилаpга қиймати pост ёки ёлғон бўладиган ҳаp қандай содда ифодалаp, ҳамда AND (ва), OR (ёки), NOT (инкоp) мантиқий амаллаp оpқали ҳосил бўлган ифодалаp қийматини беpиш мумкин:
X_Bool : = (y>10) and (NOT z=y);
Энди мантиқий ифодаларни қийматини ҳисоблашга ва уларни программада ифода этишга доир мисоллар кўрамиз.
1. Берилган шартни Турбо-Паскаль тилида ифодаланг.
а) X ўзгарувчининг қиймати (0,1) га тегишли;
б) X ўзгарувчининг қиймати (0,1) га тегишли эмас;
в) X,Y,Z ўзгарувчиларнинг ҳар бири мусбат;
г) X,Y,Z ўзгарувчиларнинг фақат биттаси мусбат;
д) X ўзгарувчининг қиймати (2,5) ёки (-1,1) га тегишли;
2. Агар ATrue ва X1 бўлса, қуйидаги операторлар бажарилгандан сўнг D-мантиқий ўзгарувчиларни қийматини аниқланг.
а) D:X<2;
б) D:(X>0) AND NOT A;
в) D:NOT A OR (X2);
г) D:(X>2) OR A;
д) D:(X>0) AND (X<2);
е) D:NOT((X>0) AND (X<2));
ж) D:A AND NOT((X<0) AND (X>2));

Қуйидаги функциялар ишлатилади:


odd(x) - рост қиймат беради агар х-тоқ сон, акс ҳолда ёлғон;
eoln(x) - рост қиймат беради агар х-номли матнли файлнинг кўрсаткичи сатрнинг охирида турган бўлса, акс ҳолда ёлғон;
eof(x) - рост қиймат беради агар х-номли кетма-кет файлнинг кўрсаткичи охирида турган бўлса, акс ҳолда ёлғон.



Download 1,98 Mb.

Do'stlaringiz bilan baham:
1   ...   21   22   23   24   25   26   27   28   ...   56




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish