Object Pascal тіліндегі қолданылатын берілгендерің түрлері


Object Pascal тiлiнде кез келген мәлiметтер – айнымалы шамалар, функцияның немесе өрнектiң мәндерi өзiнiң түрлерiмен сипатталады. Кез келген объектiнiң мәндерi және оларға қолданылатын операциялар жиыны объектiнiң түрлерi арқылы анықталады. Мәлiметтер түрлерi жай және құрылымды болып екi топқа бөлiнедi және түрлер құрылысы 4.1-суретте көрсетiлген.

4.1-сурет. Мәлiметтер түрлерiнiң жiктелуi

Жай түрлердiң негiзгi қасиеттерi болып олар мәндерiнiң бөлiнбеуi және реттелiп орналасуы есептеледi. Осы қасиеттерiне байланысты жай түрлердi скалярлық деп атайды. Егер бiзге бүтiн сандардың жиынымен немесе басқа да тiзбектеле орналасқан объектiлердiң мәндерiмен жұмыс iстеу керек болса, онда скалярлық түрлердi қолдануы жатпайды.

2.1 Берiлгендердiң жай түрлерi

Object Pascal тiлiндегi жай немесе стандартты деп нақты және бүтiн сандарды, логикалық және символдық шамаларды анықтайтын түрлердi атайды.

Жай түрлерiндегi нақты және күнделiк - уақытты (Date - Time) анықтайтын шамалардан басқалары реттелген түрге жатады. Сонымен, реттелген түрлерге бүтiн, символдық, логикалық, санаулы және шектелген шамаларды жатқызуға болады.

2.1.1 Реттелген шамалар

Реттелген шамалардың ерекшелiгi - әрбiр реттелген түрге жататын шамалардың қабылдай алатын мәндерiнiң саны шектеулi болғандығы. Оларды белгiлi бiр заңдылықпен реттеуге және әрбiр мәнге бiр бүтiн санды - реттегi нөмiрiн сәйкестеуге болады.

Реттелген шамаларға мәннiң реттегi нөмiрiн қайтаратын ORD(X) функциясын қолдануға болады. Бүтiн шамалардың ORD функциясы шаманы өз мәнiн қайтарады. Мысалы, ORD(10)=10, ORD(-10)= -10.

Реттелген шамаларға PRED(X) функциясы реттегi Х шаманың алдында орналасқан яғни (ORD(X) -1) мәндi қайтарады және SUCC(X)= (ORD(X)+1) - реттегi Х шамадан кейiн орналасқан мәндi анықтайтын функцияларын қолдануға болады.

Мысалы,

Var  c: integer;

  Begin

   C:= 5;   write (c, pred (C) , succ (C)); end.

Келтiрiлген үзiндi бойынша баспаға келесi мәндер шығарылады: 5 4 6

Сонымен қатар, реттелген шамаларға төменгi кестеде көрсетiлген функцияларды қолдануға болады (8-шi кесте).

8-кесте. Реттелген шамаларға қолданылатын стандартты функциялар

Операция Қолданылуы
Low (T) Т реттiк түрдiң ең кiшi шамасын анықтайды
High(T) Т реттiк түрдiң ең үлкен  шамасын анықтайды
Ord(X) Х шаманың реттегi нөмiрiн анықтайды
Pred(X) Реттегi Х шаманының алдында турған мәнiн анықтайды
Succ(X) Реттегi Х шаманының соңында турған мәнiн анықтайды
Dec(X,[i]) Х шаманың мәнiн i-ге азайтады, егер i көрсетiлмесе, онда I=1 деп саналады
Inc(X,[i]) Х шаманың мәнiн i-ге үлкейтедi, егер i көрсетiлмесе, онда I=1 деп саналады

2.1.2 Бүтiн шамалар

Бүтiн түрлер қатарына бүтiн сандар жиыны жатады. Есептеу техникасының (компьютердiң) сандарды iшкi өрнектеуiне байланысты (сандардың бiр, екi, төрт немесе сегiз байтпен өрнектелуi) бүтiн түрлер 9 топқа бөлiнедi.

Олар 9-шы кестеде көрсетiлген. Бүтiн сандар реттелген шамалар түрiне жатады, оның реттегi нөмiрi шаманың өз мәнiмен бiрдей деп саналады және оларға ord, pred, succ, inc, dec, low, high функцияларын қолдануға болады.

9-кесте. Бүтiн шамалардың түрлерi

Түрi Диапазоны (аралығы) өлшемi, байт
Byte 0 … 255 1
Shortint -128 … 127 1
Smallint -32768 … 32767 2
Word 0 … 65535 2
Integer -2 147483648 …2 147483647 4
Longint -2 147483648 …2 147483647 4
LongWord 0… 4 294 967 295 4
Int64 -9*1018…+ -9*1018 8
Cardinal 0 …  2 147483647 8

Бүтiн сандарға төменгi амалдар қолданылады:

+       қосу амалы;

-        айыру амалы;

*       көбейту амалы;

div – бөлiндiнiң бүтiнiн анықтау;

mod – бөлiндiнiң қалдығын анықтау.

Мысалы,

Var x,y: integer;

  Begin x:=5 div 2;                   // x=2

          у:=5 mod 2;                //  y=1

          lbOutput.Caption:= IntToStr(x,)+’ ‘+InToStr(y);

 // x,y  мәндерi жолдық түрге айланып баспаға шығарылады

 End.

Сонымен қатар, бүтiн сандарға салыстыру амалдарын қолдануға болады (нәтижесi логикалық шама). Бүтiн сандарға 8-шi кестеде көрсетiлген фунциялардан басқа төмендегі амалдар және стандартты функцияларды қолдануға болады (10-шы кесте).

10-кесте. Бүтiн шамаларға қолданылатын амалдар және стандартты функциялар

Операция Қолданылуы Нәтиженiңтүрi
Abs(y) У-тің абсолютті мәнін қайтарады X
X div Y Х, У екі санның бөліндісінің бүтіні Параметрдің түрімен бірдей
X mod Y Х, У екі санның бөліндісінің қалдығы Параметрдің түрімен бірдей
Odd(X) Тақ сан екендігін анықтайды Boolean
Sqr(X) Х-тің квадраты X
Chr(B) Коды бойынша символды қайтарады Char
Hi(W) Аргументтің алдыңғы байтын қайтарады Byte
Hi(I) Аргументтің үшінші байтын қайтарады Byte
Low(W) Аргументтің соңғы байтын қайтарады Byte
Low(I) Аргументтің соңғы байтын қайтарады Byte
Random(N) 0- мен N-1 аралықтағы кездейсоқ бүтін сан Аргументтің түрімен бірдей
Swap(W) Байттардың орнын ауыстырады Word
Swap(I) Байттардың орнын ауыстырады Integer

Кестеде Х – бүтiн Byte, ShortInt, Word, Integer, LongInt форматтарын көрсететiн белгi.

Бүтiн сандарды өңдеудегi нәтижелерiнiң түрi операндылардың түрiмен бiрдей болады, ал егер операндтары әртүрлi бүтiн форматтарда анықталған болса, онда нәтиженiң форматы осы операндтардың ортақ форматына жатады. Мысалы, ShortInt және Word түрiндегi операндтар бiрге өңделгендегі нәтижесiнiң түрi Integer болады

2.1.3 Логикалық шамалар

Логикалық шамалар екiлiк сандар жүйесi сияқты екi ғана мәндi қабылдайды. Мұндағы белгiлi бiр шарттың орындалатыны, яғни нәтижесiнiң “ақиқаттығы” немесе оның орындалмайтыны, яғни тұжырымның “жалған” екендiгi тексерiледi. Бұл екi мән ағылшын тiлiнде айтылуына сәйкес “true” (ақиқат) және “false” (жалған) болып жазылады.

Логикалық шамалардың бiрнеше түрiн ажыратады (11-шi кесте):

11-кесте. Логикалық шамалардың түрлерi

Түрi өлшемi, байт
Boolean     1 байт
ByteBool 1 байт
WordBool 2 байт (Word сияқты)
LongBool 4 байт (Longint сияқты)

Стандартты Pascal тiлiнде тек қана Boolean түрi анықталған, ал Object Pascal құрамына кіретін логикалық шамалардың басқа түрлерi Windows ортасымен тiркесуiн қамтамасыз ету үшiн енгiзiлген.

Айнымалы шамаларды анықтау бөлiгiнде арнаулы var сөзiнен кейiн логикалық шаманың атауы және логикалық шама екенiн анықтайтын Boolean, ByteBool, WordBool, Bool, LongBool арнайы сөзi жазылады.

Мысалы: Var L : bool;

Логикалық шамаларға бірнеше логикалық амалдар қолданылады, олардың арасындағы маңыздылары: not – логикалық терiстеу, and – конъюнкция (логикалық көбейту), or – дизъюнкция (логикалық қосу). Амалдар орындалуының ережелерi 12-шi кестеде көрсетiлген.

2.1.4 Символдық шамалар

Символдық шамалар апострофқа алынған бiр символды ғана мән ретiнде қабылдай алады, мысалы, ‘R’, ‘Л’, ‘%’, т.с.с. Бiрақ әрбiр таңбаны оның iшкi көрiнiс кестесiндегi кодына байланысты реттелген бүтiн сандармен де өрнектеу мүмкiндiгi бар. Айнымалы шамаларды анықтау бөлiгiнде арнаулы var сөзiнен кейiн символдық шаманың атауы және оның түрiн анықтайтын char арнайы сөз жазылады. Символдық  шамаларға келесi арнаулы функциялар қолданылады: ord, chr, pred, succ, upcase. Ord және chr функциялары символды оның реттiк нөмiрiмен байланыстырады және символдың берілген реттік нөмірі бойынша мәнін анықтайды. Ал pred, succ функциялары кестедегi символдың алдында немесе символдан кейiн тұрған символды анықтау үшiн қолданылады. Upcase функциясы латын алфавитiнiң кiшi әріпiн бас әрiпке айналдырады. Сонымен қатар, символдық шамаларға қатынас амалдарын қолдануға болады, мысалы, ‘A’ <’C’,  ‘b’>’a’.

Келесi программа бойынша енгiзу жолында көрсетiлген жолдық шаманың құрамындағы кез келген латын және орыс алфавитiнiң (‘a’-дан ‘z’-ке және ‘а’-дан ‘я’-ке дейiнгi) кiшi әрiптерi бас әрiптерге түрлендiрiледi. Программада fmExample формасы қолданылған.

2.1.5 Санаулы түрлер

Берiлгендердiң санаулы мәндерiмен анықталатын түрлердi санаулы немесе түгелденген деп атайды. Санаулы түрлердiң әрқайсысы идентификатор арқылы аталады, ал оның қабылдайтын мәндерiнiң тiзiмi жақшаға алынады. Санаулы түрлердi анықтау форматы:

Type < санаулы түрдiң аты > = (санаулы түрдiң мәндерi);

Берiлгендердiң түгелденген түрiн құрастырғанда программалаушы түрдiң мәнi ретiнде бiрнеше шамаларды көрсетедi. Мысалы,

Type Күн= (дүйсенбi, сейсенбi, сәрсенбi, бейсенбi, жұма, сенбi, жексенбi);

       Түс = (қара, ақ, жасыл, көк, сары, қызыл);

       Day= (mon, tue, wed, thu, fri, sat, sun);

Программада бiр санаулы түрге қатысты бiр немесе бiрнеше айнымалыларды көрсетуге болады:

Var d1,d2 : Day; 

      colour : Түс;

      апта : Күн;

Түгелденген түрдегi айнымалыларды бірден айнымалылар бөлімінде анықтауға болады:

         Var  d1,d2 : (mon, tue, wed, thu, fri, sat, sun);

              colour : (қара, ақ, жасыл, көк, сары, қызыл);

              апта: (дүйсенбi, сейсенбi, сәрсенбi, бейсенбi, жұма, сенбi, жексенбi);

Сонымен, түгелденген шамалармен жұмыс атқарғанда келесi ережелердi есте сақтау керек:

  1. Санаулы түрлердiң мәндерi рет ретiмен орналасады.
  2. Санаулы түрлердiң қатарға жазылған тiзiмдiк нөмiрлерi болады. Реттiк нөмiрi нөлден басталады.
  3. Санаулы түрлердi перне арқылы енгiзуге немесе бiрден басып шығаруға болмайды.
  4. Санаулы түрлерге қолданылатын функциялар және операторлар:

 Ord, Succ, Pred

  • Ord (қара)=0 санаулы түрлердiң реттiк нөмiрiн көрсетедi.
  • Succқ)=жасыл келесi мәнiн алады.
  • Predқ)=қара алдынғы мәнiн алады;

Салыстыру операторлары қолданылады =,<,>,<=,>=,<>

Цикл операторларын қолдануға болады:

For i:= қара to қызыл do      ... ;

Меншiктеу операторларын қолдануға болады: ( := );

  • Санаулы айнымалы шама санаулы түрдiң тек бiр мәнiн қабылдайды.
  • Санаулы түрдегi мәндердiң саны 65536-дан аспау керек, сондықтан санаулы түрдi бүтiн сандардың Word форматының iшкi жиыны және бүтiн сандар тұрақтыларының қысқартылған анықтамасы (0,1,2,…,65535) ретiнде қарастыруға болады.

Санаулы шамалардың жиi кездесетiн түрiне шектелген түрлер жатады. Шектелген түрлер деп - санаулы түрдiң қысқартып жазылуын айтамыз. Шектелген түрлер шаманың екi ғана мәнiмен анықталады, олар “..” таңбасымен ажыратылған ең кiшi және ең үлкен мәндерi.

Мысалы :

      Type  Digit= ’0’..’9’;                 Nou = 10 .. 25; 

              Sss = ’A’ ..’Z’;               Date = 1 .. 31;   

Шектелген түрлердi анықтағанда келесi жайттар есте болу керек:

  • ..” таңбасы бiр символ деп саналады, сондықтан нүктелер арасында бос орынды қалдыруға болмайды;
  • Сол жақ шегi оң жақ шегiнен артпауы тиiс.

Мысалы, егер айнымалы келесi түрде анықталса

Type Color =(red, blue, black, green, white); { санаулы түр}

     HColor= green .. white;   // санаулы түрдiң iшкi түрi

Var cl : HColor;

      { cl айнымалы тек green, white мәндерiн қабылдайды}    

Begin

     …………………..

      cl :=green; { …  } end;

Ендi осындай түрдегi анықталған cl айнымалыға Ord (cl) функциясын қолданағандағы нәтижесi тең 4-ке, ал Pred (cl) – қате бередi. Себебi HСolor түрi Color түрiнiң туындысы ретiнде анықталған, сондықтан ол алғы буынның барлық қасиеттерiн иемденедi, бiрақ iшкi жиынға қойылған шектеулерiне бағынады.

Object Pascal құрамында шектелген шамалармен жұмыс атқаратын екi стандартты функциясы бар, олар:

High(X) – X айнымалысы жататын шектелген түрдiң ең үлкен шамасын анықтайды;

Low(X) – X айнымалысы жататын шектелген түрдiң ең кiшi шамасын анықтайды.

2.1.6 Нақты шамалар

Нақты шамалар кәдiмгi табиғи аралас сандар сияқты санның бүтін және бөліктерін нүктемен бөлген күйде жазылады. Мысалы: 2.65, 0.5, -1.862, - 6.0. Ал өте үлкен немесе  өте кiшi нақты шамалар көрсеткiшi бар экспоненциал сандар түрiнде жазылады. Мысалы, 2.65Е6 =>(2.65*106), 15Е05=> (15*105), 0.25Е-4 =>(0.25*10-4).

Object Pascal тiлiндегi қолданылатын нақты сандардың түрлерi 13-шi кестеде көрсетiлген.

13-кесте. Нақты сандар түрлері

Түрi Диапазоны (аралығы) Мәндi   разрядтар саны өлшемi байт

Real

Single

Double

Extended

Comp

Currency

5,0*10-324... 1.7*10308

1,5*10-45... 3.4*1038

5,0*10-324... 1.7*10308

3,4*10-4932... 1.1*104932

-263   ...   + 263-1

+-922  337 203 685 477,5807

15...16

7...8

15...16

19...20

19...20

19…20

8

4

8

1

0

8

Сонымен, нақты сандар жадта 4-тен 10-ға дейін байт орын алуы мүмкiн және олардың iшкi көрiнiсi келесi:

S e m

Мұнда, S – санның таңбасы, e – експонента бөлiгi, m – санның мантиссасы. M мантиссасы 23-тен (Single форматы) 63-ке дейiнгi (Extended форматы) екiлiк разрядтардан тұрады. Single форматындағы нақты санның дәлдiгi 7-8 разряд, ал Extended форматындағы санның дәлдiгi 19-20 разряд.

Ондық нүкте (математикада – үтiр) мантиссаның сол жақтағы алғашқы разрядының алдында тұрады деп саналады, бiрақ осы санды өңдегенде экспоненциал бөлiгiнде сақталған санның дәрежесiне байланысты нүкте сол немесе оң жаққа жылжуы мүмкiн. Сондықтан, нақты сандарды өңдеудегi әрекеттердi жылжымалы нүктенiң арифметикасы деп атайды.

Айтып кететiн бiр жайт, жалпы компьютердiң көмекшi процессоры (сопроцессоры) әдетте нақты сандарды Extended форматында өңдейдi, ал нәтиженi басқа форматта шығару Extended форматындағы нәтиженi қажеттi мөлшерге қысқарту арқылы келтiрiледi.

Жалпы дискреттiк машиналық арифметикада Х саны ( 0< X < Eps, мұнда Eps - өте кiшi шама) 1,0+X = 1,0 шартына бағынышты Real форматындағы санның маңызды разрядтар саны 19 деп саналады. Сондықтан нақты сандардың шегi жоқ үздiксiз жиынын олардың iшкi көрiнiсiмен сәйкестегенде (аппроксимациялағанда) “машиналық нөл” ұғымының пайда болуына алып келедi.

Сонымен қатар, бұл форматтар нақты сандардың басқа түрлерiмен тiркеседi және оларға жалпы нақты сандарға қолданылатын барлық амалдарды, стандартты функцияларды пайдалануға болады. Әдетте Comp және Currency форматтары бухгалтерлiк есептеулерде қолданылады.

Төмендегi 14-ші кестеде нақты шамаларға қолданылатын стандартты функциялар келтiрiлген.

14-кесте. Нақты шамаларға қолданылатын стандартты функциялар

Функция Іайтарылатын мәнi
Abs (x) Х-тiң абсолютты мәнiн қайтарады
АгсТаn(х) Х-тiң арктангенсын  анықтайды
Cos (х) Х-тiң косинусын (х – радиан өлшемiнде) анықтайды
Ехр (х) ех  функциясын есептейдi
Frac(x) Х нақты санның бөлшегiн анықтайды
Int (х) Х нақты санның бүтiн бөлігін анықтайды. Нәтижесiнде нақты сан қайтарылады, тек бөлшек бөлiгiнде нөл тұрады.
Ln (х) Х-тiң натуралды логарифмын анықтайды
Pi π саны  (3.1416...)
Random 0…1 аралықтағы кездейсоқ нақты мәндi анықтайды
Round (х) Х нақты санның мәнiн жуықтау арқылы бүтiнге түрлендiредi
Sin(x) Х-тiң синусын анықтайды
Sqr(x) Х-тiң квадратын есептейдi, яғни X*X
Sqrt (х) Х-тiң квадратты түбiрiн анықтайды, яғни ÖХ
Тrunc (х) Х нақты санның бүтiн бөлiгiн анықтайды, Int-тен айырмашылығы Trunc – бүтiн санды қайтарады

Object Pascal құрамында әртүрлі функциялар мен процедуралар анықталған бірнеше стандартты модульдер бар. Осы модульдер программаға қосылғанда, оларда анықталған ішкі программаларды қолдануға мүмкіндік туғызады. Төмендегі 15-17-ші кестелерде бүтін және нақты шамалармен орындалатын бірнеше математикалық функциялар көрсетілген. Оларды қолдану үшін Uses бөлігінде міндетті түрде стандартты Math модулін көрсету керек.

15-кесте. Тригонометриялық функциялар

Функция Қайтарылатын мәні
Arccos (x) Арккосинус мәнін қайтарады
Arcsin(x) Арксинус мәнін қайтарады
ArcTan2(x) Арктангенс мәнін есептейді және оны дұрыс квадрантқа сәйкес қайтарады
Cotan(x) Аргументтің котангенсін қайтарады
Hypot(x,y) Тік үшбұрыштың гипотенузасын берілген екі катеті бойынша есептейді
SinCos(x,sin,cos) Х-тың синусын және косинусын есептейді, нәтижелері sin және cos айнымалыларында қайтарылады.
Tan(x) Аргументтің  тангенсын қайтарады

16-кесте. Логарифмдық және экспоненциялдық функциялар

Функция Қайтарылатын мәні
Arccosh (x) Гиперболық арккосинус мәнін қайтарады

Arcsinh(x)

Гиперболық арксинус мәнін қайтарады

ArcTanh(x) Гиперболық арктангенс мәнін есептейді
Cosh(x) Аргументтің гиперболық косинусын қайтарады
Sinh(x) Аргументтің гиперболық синусын қайтарады
Tanh(x) Гиперболық тангенс мәнін есептейді
LnXP1(x)  Егер Х мәні нөлге жақын болса, онда Х+1 шамасының натуралды логарифмын есептейді
Log10(x)

Ондық логарифмын есептейді

Log2(x)

Екілік логарифмын есептейді

LogN(b,x)

Х-тың логарифмын b – табаны бойынша есептейді

17-кесте. Статистикалық ішкі программалар

Функция Қайтарылатын мәні
Max(a,b) Екі санның үлкенін анықтайды
MaxIntValue ( ) Бүтін сандар тізбегінің ең үлкенін анықтайды
MaxValue ( ) Нақты сандар тізбегінің ең үлкенін анықтайды
Mean ( ) Нақты сандар тізбегінің орташа шамасын есептейді
MeanAndStDev ( ) Нақты сандар тізбегінің орташа шамасын және стандартты ауытқуын есептейді
Min(a,b) Екі санның кішісін анықтайды
MinIntValue ( ) Бүтін сандар тізбегінің ең кішісін анықтайды
MinValue ( ) Нақты сандар тізбегінің ең кішісін анықтайды
MomentSkewKurtorsis ( ) Берілгендер тізбегінің математикалық күтілімін, ауытқуларын, ассиметриясын және эксцессын есептейді
Norm ( ) Квадраттар қосындысының квадратты түбірін табады
PopnStDev ( ) Сандар тізбегінің таңдамалы стандартты ауытқуын есептейді
PopnVariance( ) Сандар тізбегінің таңдамалы дисперсиясын есептейді
RandG ( ) Берілген орташа шама және стандарты ауытқуы бойынша дұрыс таралған сандар тізбегін құрастырады
StDev ( ) Берілгендер тізбегінің орташа квадраттық ауытқуын есептейді
Sum () Берілген сандар тізбегінің қосындысын есептейді
SumAnSquares ( ) Берілген сандар тізбегінің қосындысын және  олардың Квадраттарының қосындысын есептейді
SumInt ( ) Бүтін сандар тізбегінің қосындысын есептейді
SumOfSquares ( ) Берілген сандар квадраттарының қосындысын есептейді
TotalVariance ( ) Берілген сандар және олардың орташасының ара қашықтықтарының квадраттар қосындысын есептейді

Бақылау сұрақтары:

  1. Object Pascal-да қолданылатын берілгендердің негізгі түрлерін атап шығыңыз.
  2. Жай түрлерге қандай шамалар жатады?
  3. Құрылымды түрлерге жататын шамаларды атап шығыңыз.
  4. Реттелген шамалар деп қандай түрдегі берілгендерді айтады? Олардың түрлерін келтіріңіз.
  5. Бүтін шамалар түрлері және оларға қандай амалдар мен стандартты функцияларды қолдануға болады?
  6. Кез келген объектіне оқиғаны туындату әрекетін (мысалы OnClick) қалай орындауға болады?