Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

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

Реттелген типке: бүтін, логикалық, символдық, саналатын және аралық тип жактады. Аталған типтердің әрқайсысы х өрнегінің мәнінің реттік номерін беретін 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 айымалысына сандардың басқа тізбегін шығаратын жүйелік уақыттың сандық мәні орналасады.

 

Күн және уақыт типі
Күн, уақыт типі TdataTime стандартты идентификаторымен анықталады, ол уақытты және күнді бір мезгілде сақтауға арналған. Жадыдағы ішкі орналасуы бойынша 8 байт орын алады, Currency типіне ұқсас, шектеулі бөлшек бөлігі бар нақты сан: санның бүтін бөлігінде күн, бөлшек бөлігінде уақыт сақталады.
Күнмен және уақытпен жұмыс істеу төмендегідей қосалқы программалар пайдаланылады:
Function Date:TDateTime; –ағымдағы күнді береді;
Function DateToStr (D:TDateTime):String;-күнді символдар жолына түрлендіреді;
Function DateTimeToStr (D:TDateTime)- күн мен уақытты символдар жолына түрлендіреді;
Function FormatDateTime(Format:String; Value:TDateTime):String;П – күн мен уақыт Format параметрінің спецификаторына сәйкес Value параметрін символдар жолына түрлендіреді;
Function Now:TDateTime; – ағымдағы күн мен уақытты береді;
Function Time:TDateTime – ағымдағы уақытты береді;
Function TimeToStr – уақытты жолға айналдырады.
Төмендегі BbRunClick өңдеуші оқу программасының көмегімен енгізу жолына кез келген нақты санды енгізіп, оны TDateTime типінің мәні ретінде көруге болады:
Procedure TfmExample.bbRunClick(Sender:TObject);
Var k:double;
Begin
Try
K:=StrToFloat(edinput.text);
Except
ShowMessage; (“Нақты санның жазылуында қате бар”);

Edinput.SelectAll;
Exit
End;//Нәтижені күн-уақыт ретінде көрсетеміз LBOutput.Caption:=FormatDateTime(‘dd.mm.yyyy.hh:mm:ss,k’);
//енгізу жолын Edinput-қа айналдыру
Edinput.SetFocus;
End;




Дата добавления: 2015-09-12; просмотров: 112 | Поможем написать вашу работу | Нарушение авторских прав

<== предыдущая лекция | следующая лекция ==>
Жиындармен (массивтермен) жұмыс| Harry Potter And The Order Of The Phoenix

lektsii.net - Лекции.Нет - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав