Қоршаған ортаны модельдеуде сапалы мүмкіндіктерге ие, сезімдік тұрғыдан түсініктіұғымдар жиынтығы негізінде құрылады, алдын ала жазылып қойған программа кодын көп рет қолдануға мүкіндік береді



бет26/35
Дата25.08.2017
өлшемі8,61 Mb.
#27256
1   ...   22   23   24   25   26   27   28   29   ...   35
Зертханалық жұмыс №6

Тақырыбы: Мәліметтер типі
Мақсаты Delphi ортасының жұмысына жалпы сипаттама
Қолданылатын материалдар мен құрал- жабдықтар:

Компьютер, Delphi программалау ортасы
Теориялық түсініктеме:

Object Pascal тілінде кез келген мәліметтер өзінің типімен сипатталады. Мәліметтер типі объект қабылдай алатын мүмкін мәндер жиынтығын анықтайды. Сонымен қатар, мәліметтер типі дербес комьютердің жадындағы мәліметтердің ішкі берілуі форматын да анықтайды. Object Pascal тілі мәліметтердің тармақталған құрылымымен сипатталады.

Енді барлық типтерге қысқаша сипаттама берейік.

Қарапайым типтер

Қарапайым типке реттелген, нақты типтер және мерзім-уақыт типтері жатады. Реттелген типтер мүмкін болатын болатын мәндерінің шектелгендігімен ажыратылады. Бұл мәндерді белгілі бір ретпен реттеуге болады, сонымен қатар, мәнін реттік номерін бүтін санмен беруге болады.

Нақты типтердің де, нақты санның ішкі берілу форматы мен анықталатын мәндерінің мөлшері көрсетіледі. Бірақ нақты типтердің мүмкін мәндерінің мөлшерінің көптігі соншалық, оны олардың әрқайсысын бүтін санмен белгілеу мүмкін емес.

Мерзім және уақыт типі мерзім мен уақытты белгілеуге арналған. Дәлірек айтсақ, оны сақтау үщін нақты формат пайдаланылады.



Реттелген типтер.

Реттелген типке: бүтін, логикалық, символдық, саналатын және аралық тип жактады. Аталған типтердің әрқайсысы х өрнегінің мәнінің реттік номерін беретін ORD(x) функциясын қолдануға болады.

Бүтін типтер үшін ORD(x) функциясы х тің мәнінің өзін береді. ORD (x) функциясын логикалық, символдық және саналатын типтерге қолданып: логикалық тип үшін 0 мен 1 аралығындағы бүтін оң санды, символдық тип үшін 0 мен 255 аралығындағы сандарды, ал саналатын типтер үшін: 0 мен 65535 аралығындағы садарды береді. Аралық тип негізгі реттік типтің барлық қасиеттерін сақтайды, сондықтан оған ORD(x) функциясын қолдану сол типтің қасиетіне тәуелді болады.

Сондай-ақ, реттелген типтерге төмендегідей функцияларды қолдануға болады:

PRED(X)П функциясы реттелген типтің алдынғы мәнін береді, яғни ORD(x-1) –дің реттік номеріне сәйкес мән немесе ORD(Pred(x))= ORD(x)-1;

SUCC(X) функциясы ORD(X)+1-дің реттік номеріне сәйкес келетін реттелген типтің келесі мәнін берді, яғни ORD(Succ(x))= ORD(x)+1.

Мысалы, егер прораммада төмендегшідей айнымалылар анықталған болса,

Var C:Char;

Begin

C:=’5’;


End;

Онда PRED(C) функциясы ‘4’ символын, ал SUCC(C) п функциясы ‘6’ символын береді.

Егер кез келген реттелген типті сандық осьтің қандай да бір кесіндісінен орын алатын солдан оңға қарай өсетін реттелген мәндер жиыны ретінде қарастыратын болсақ, онда PRED(X) функциясы осы кесіндінің сол жақ ұшына дейін, ал SUCC(X) функциясы оң жақ ұшына дейін анықталмаған.

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

Атауы

Ұзындығы (байт)

Мәндер аралығы

Byte

1

0..255

ShortInt

1

-128..+128

SmallInt

2

-32768..+32767

Word

2

0..65535

Integer

4

-2147483648..+2147483647

LongInt

4

-2147483648..+2147483647

Long-Word

4

0..4294967295

Int64

8

-9*1018..9*1018

Cardinal

4

0..2147483647

B, s, w, I, l-әріптерімен сәйкес Byte, ShortInt, Word, Integer, LongInt

типтері белгіленеді; ал vb, vs, vw, vi, vl әріптерімен осы типтердің айнымалы екені көрсетіледі. Квадрат жақшада міндетті емес параметр көрсетіледі.

Бүтін типтерге қолданылатын стандартты процедуралар мен функциялардың типтері төмендегі кестеде келтірілген.



жазылуы

Нәтиже типі

әрекет

Abs(x)

x

х-тің модулін береді

Chr(x)

Char

Кодына сәйкес символды береді

Dec(vx[,i])

-

Vx-тің мәнін i –ге азайтады, ал i болмаса 1-ге азайтады

Inc (vx[,i])

-

Vx-тің мәнінi–ге арттырады, ал i болмаса 1-ге арттырады

Hi(w)

byte

Аргументтің үлкен байтын береді

HI(l)




Есеп бойынша үшінші байтты береді

Lo(i)




Аргументтің кіші байтын береді

Lo(w)




Бұл да сондай

Odd(l)

boolean

Егер тақ сан болса, True мәнін береді

Random(w)




0..( п-1) аралығындағы псевдокездейсоқ санды береді

Sqr(x)




Аргументтің квадратын береді

Swap(i)

integer

Сөздегі байттардың орнын алмастырады

Swap(w)

word

Бұл да сондай


Логикалық типтер. Логикалық типтерге: Boolean, ByteBool, Bool, WordBool және LongBool жатады. Стандартты Паскальда тек Boolean типі анықталған, ал қалған логикалық типтер Windows жүйесімен үйлесетін Object Pascal тілінде енгізілген: Boolean және ByteBool типтерінің әрқайсысы бір байт, Bool және WordBool-2 байт, LongBool-4 байт орын алады. Логикалық типтің мәні ретінде алдын-ала хабарланған False (жалған) немесе True (ақиқат) мәндерінің бірі алынады. Логикалық типтер үшін төмендегі ереже орындалады:

Ord (False)=0;

Ord(True)<>0;

Succ(False)= True;

Pred(True)=False;

Логикалық тип реттелген типке жататын болғандықтан қайталану операторында есептеу үшін пайдалануға болады, мысалы,

Var

L:Boolean;



Begin

For L:=False to True do ..

Delphi 32 жүйесінде Boolean типі үшін алынатын мән Ord(True)=+1, ал Bool WordBool және т.б. типтер үшін Ord(True)= Ord(True)+1, екенін естен шығармау керек. Сондықтан программа құру барысында бұл типтерді пайдаланғанда мұқият болу керек. Мысалы, Delphi –дің 6-нұсқасында төмендегі For қайталануындағы орындалатын оператор ShowMessage(

‘-----‘) бірде бір рет орындалмайды:

Var

L:Bool;


K:integer;

Begin


For L:=False to True do…

ShowMessage(‘____’)

End;

Егер L циклінің параметрінің типін Boolean типіне алмастырса, қайталану орындалып, хабарлама экранда екі рет пайда болады.



Символдық тип. Символдық титің мәні ретінде дербес компьютердегі барлық символдардың жиынтығы алынады. Әрбір символға 0..255 аралығындағы аралығындағы кез келген бүтін сан сәйкес келеді.Бұл сан символдың ішкі берілу коды деп аталады, оны Ord функциясы береді.

Коды 0..31 аралығындағы символдар қызметші кодқа жатады. Егер бұл кодтар программаның символдық мәтінінде кездесетін болса, онда олар бос орын болып есептеледі.

Char типіне қатынас операциялары, сондай-ақ, орнатылған функциялар қолданылады:

Chr(B) типті функция; Byte типті өрнекті символға түрлендіріледі;

Upcase(CH)-char типті функция; егер СН латынның кіші әріпі болса, онда бас әріпті береді, кері жағдайда СН символының өзін береді.

Саналатын тип. Саналатын тип өзі қабылдайтын мәндердің саналуымен беріледі. Әрбір мән қандай да бір идентфикаторлармен аталып, тізімде дөңгелек жақшаның ішінде орналасады, мысалы,

Type

Tuster=(ak, kyzul, jasul)


Саналатын тип программаның көрнектілігін арттырады. Егер пргораммада жыл ішіндегі айларға байланысты мәліметтер пайдаланылса, ондай программа үзіндісін былай келтіруге болады.

type Type Month=(jan,feb,mar,apr,may,jun,jul,aug,sep,okt,nov,dec);

Var

Month: TypeMonth;



begin

if month= “тамаша демалыс!”;



end.


Саналатын типтердің мәндері мен олардың реттік нөмірлерінің арасындағы реттілік нөмірі-0, екіншісі-1 және т.с.с.

Саналатын типтердің ең жоғарғы мәні-65536, сондықтан саналатын тип Word бүтін типінің ішкі жиыны тәрізді және мәндері 0,1 және т.б. болатын бүтін тұрақтылар тобы ретінде қарастырылуы мүмкін. Саналатын типке бүтін санды меншіктеуге болмайды.

Кез келген саналатын типтің айнымалысын алдын-ала сипаттамай-ақ хабарлауға болады, мысалы:

Var


Col (black, white, green);

Аралық тип. Аралық тип өзінің базалық типінің ішкі жиыны болып табылады. Базалық тип ретінде аралық типтен басқа кез келген реттелген тип алынады.

Аралық тип барлық типтің өзінің ішкі мәндерінің шекаралары арқылы беріледі:

<ең кіші мән >... <ең үлкен мән >

Мұндағы, <ең кіші мән > - аралық типтің ең кіші мәні;



<ең үлкен мән > - оның ең үлкен мәні.

Мысалы,


Type

digit =’0’..’9’;

dig2 = 48..59;

Аралық типті Type бөлімінде сипаттау міндетті емес, айнымалыларды хабарлауда тікелей көрсетуге болады.Мысалы:

Var

date: 1..31



month: 1..12

ichr: ’A’..’Z’;

Аралық типтерді анықтауда төмендегідей ережелерді ескерген дұрыс:


  • “..” екі символ бір символ ретінде қарастырылады, сондықтан олардың арасына бос орын қалдыруға болмайды;

  • Аралықтың сол жақ шегінен аспауы тиіс.

Аралық типке барлық типтің қасиеті тән, бірақ аздаған шектеулері бар.

Мысалы, егер айнымалы анықталған болса,

type

days= (mo, tu, we, th, fr, sa, su);



weekend;

begin


w: = sa;


end.


онда Ord(w) функциясы 5 мәнін береді, ал Pred(w) функциясы қате жөнінде хабарлайды.

Object Pascal –дың стандартты кітапханасында аралық типтердің жұмысын сүйемелдейтін екі функция бар:

Hight (x) – х айнымалысы жататын аралық типтің ең үлкен мәнін береді;

Low (x)-аралық типтің ең кіші мәнін береді.


Нақты типтер


Мәндері бүтін типтермен салыстырылатын реттелген типтерден нақты типтердің ерекшелігі нақты санның ішкі форматына тәуелді қандай да бір дәлдікпен еркін алынған санды анықтайды.

Ұзындығы байт

Атауы

Мәнді цифрлар мөлшері

Мәндер аралығы

8

Real

15...16

5,0*10324- …1,7*10308

4

Single

7...8

1,5*10-45 …3,4*1038

8

Double

15...16

5,0*10-324 … 1,7*10308

10

Extended

19...20

3,4*10-4951 …1,1*104932

8

Comp

19...20

-263…+263-1

8

Currency

19...20

922 337 203 685 477,5807

Кестеде көрсетілгендей, Object Pascal тілінде нақты сандар 4-тен 10 аралығындағы аралас байтқа дейін орын алады.

Арифметикалық сопроцессор барлық уақытта сандарды Extended форматында өңдейді; ал қалған үш нақты тип қажетті мөлшерге дейін нәтижені қарапайым қысқартылған күйінде беру болып табылады және олар жадыны үнемдеу үшін қолданылады.

Мысалы, «машиналық эпсилонды» мынадай программа көмегімен есептеуге болады:

typeRealType=Real;

Var Epsilon, Eps 1: RealType;

Epsilon:=Epsilon/2;

Eps1:=1+ Epsilon;

Until Eps=1;

LBOutput.Caption:=FloatToStr(2* Epsilon)

End.

Object Pascal тілінде Comp және Currency типтері ерекше орын алады, бөлшек бөлігінің ұзындығы шектеулі нақты сан ретінде қарастырылады: Comp типінің бөлшек бөлігінің ұзыдығы 0 (ноль) разряд, яғни болмайды, ал Currency типінің бөлшек бөлігінің ұзындығы 4 ондық разряд. Бұл аталған екі типке 19...20 мәнді ондық цифрды сақтайтын үлкен бүтін санды анықтайды. Бұл типтерді бухгалтерлік есептеуде қолданған өте ыңғайлы.



Нақты мәліметтермен жұмыс істеу үшін орнатылған математикалық функцияларды пайдалануға болады: abs(x), arctan(x), cos(x), frac(x) –санның бөлшек бөлігі; int(x)–санның бүтін бөлігі; ln(x) –натурал логорифм, Random-0..1 аралығындағы псевдокездейсоқ сан; Randomize - псевдокездейсоқ сандар генераторын орнату; sqr(x)-x – тің квадраты; sqrt(x) – тің квадрат түбірі.

Псевдо кездейсоқ сандар генераторы – базалық деп аталатын қандай да бір бүтін санды алып, оның разрядын белгілі бір анықталған алгоритм бойынша өзгертіп, нәтиже ретінде жаңа санды береді. Сонымен бірге, функцияға оралғанда жаңа сан базалық болады және т.с.с. (Сөйтіп процедура алгоритмі жұмыс барысында өзгермейтін сандар деп аталады). System жүйелік модулінде кез келген программада автоматты түрде кіруі мүмкін болатын базалық сан RandSeek айнымалысында сақталады және оның барлық уақытта бастапқы мәні 0-ге тең. Бұл Random функциясына әр түрлі программамен оралғанда бірдей кездейсоқ сандар тізбегінің шығатынын көрсетеді. Мысалы, төмендегі оқу программасынның BbRunClick терезесіне 300 кездейсоқ сан шығарылады, олар 20 саннан жолға топтастырылып, егер сан үш цифрдан кем болса, нольмен толықтырылады. Егер программаны қайтадан орындайтын болсаңыз, дәл сондай сандар тізбегін аласыз.

Procedure TfmExample.bbRunClick(Sender:TObject);

Var k:integer; s, ss:string;

Begin

S:=’’;


For k:=1 to 300 do

Begin


Ss:=intToStr(Random(1000));

While Length(ss)<3 do

Ss:=’0’+ss;

S:=s+ss+’’;

If k mod 20=0 then

Begin


mmOutput.Lines.Add(9);

s:=’’


end

end


end.
Randomize процедурасының көмегімен RandSeek айымалысына сандардың басқа тізбегін шығаратын жүйелік уақыттың сандық мәні орналасады.


Достарыңызбен бөлісу:
1   ...   22   23   24   25   26   27   28   29   ...   35




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет