Құрылымдық типтер және жолдық процедуралармен функциялар



Жоспар
I. Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3
II. Негізгі бөлім ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...4
2.1. Құрылымдық типтер және оларды Delphi.де ұйымдастыру ... ... ... ... ..4
2.2. Мәліметтерді енгізу.шығару. Кескіндеу және түзетү компоненттері ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 15
2.3. Жолдар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 16
2.4. Жолдық процедуралар мен функциялар ... ... ... ... ... ... ... ... ... ... ... ... .23
III. Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...24
IV. Пайдаланған әдебиеттер тізімі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...25

Қазақстан Республикасының Білім және Ғылым министірлігі

Ш.Есенов атындағы Каспий мемлекеттік техналогиялар және инжиниринг

университетінің колледжі

“Бағдарламалау – оқу тәжрибесі бойынша”.

Мамандығы: 1304000 – Электрондық есептеуіш техникасы және бағдарламалық
қамтамасыздандыру.

Такырыбы: “Құрылымдық типтер және жолдық процедуралармен функциялар”.

Орындаған: ВТ-10-01 тобының

студенті Баймухаммедов А. Т.

Тексерген: оқытушы Сабитова А.Н.

Ақтау-2011ж.

Жоспар

I.
Кіріспе ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ... ... ... ... .3
II. Негізгі
бөлім ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... .4
1. Құрылымдық типтер және оларды Delphi-де
ұйымдастыру ... ... ... ... ..4
2. Мәліметтерді енгізу-шығару. Кескіндеу және түзетү
компоненттері ... ... ... ... ... .. ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... .15
3.
Жолдар ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ... ... ... .16
4. Жолдық процедуралар мен
функциялар ... ... ... ... ... ... . ... ... ... ... ... ... 23
II.
Қорытынды ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ... ... ... 24
III. Пайдаланған әдебиеттер
тізімі ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ..
... .25

I. Кіріспе

Мен осы “ДЭЕМ операторы” – оқу танысу тәжрибесі бойынша “ ” атты
тақырыптарға есепті жаза отырып, бұл есепте Delphi бағдарламалау ортасында
құрылымдық типтер, компоненттер палитрасындагы меліметтерді енгізу-шығару
компоненттері мен Delphi-де жолдар және жолдық процедуралар мен функциялар
қарастырдым.

Қурылымдық типтер Delphi бағдарламалау тілінде оларды 4-ке белуге
болады: массивтер, жазулар, жиындар және файлдар.

Delphi-дің 4-нұсқасынан бастап динамикалық массивтер енгізілген.

Жазулар - бұл өріс деп аталатын шектеулі компонентгер мөлшерінен тұратын
мәліметтер құрылымы.

Жиындар - бір-бірімен логикалық байланысқан бір типті объектілер жиыны.
Объектілердің арасындағы байланыстардың сипатын программист көрсетеді, оны
Delphi бағдарламалаутілі ешқандай да бақыламайды. Жиынға кіретін элементтер
саны 0 мен 256 аралыгында өзгеруі мүмкін.

Файл деп дербес компьютердің сыртқы жадысының атау берілген бөлігін
түсінеміз. Кез келген файлдың өзіне тән үш ерекшелігі болады.

Ішкі орналасуындағы айырмашылыққа қарамастан қысқа ShortString және
ұзын String жолдарының қасиеттері программист үшін бірдей. Жолдың ағымдагы
ұзындығын Length функциясының көмегімен алуға болады.

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

II. Негізгі бөлім

1. Құрылымдық типтер және оларды Delphi-де ұйымдастыру.

Кез келген қурылымдық типтер осы элементтер типін құрайтын жиынмен
сипатталады. Delphi бағдарламалау тілінде оларды 4-ке белуге болады:
массивтер, жазулар, жиындар және файлдар.
Delphi бағдарламалау тілінде типтер бірінің ішінде бірі еркін орналаса
алады, олардың кез келгенінің ұзындығынын қосындысы 2 Гбайттан аспауы тиіс.

1. Массивтер.

Динамикалық массивтер. Delphi-дің 4-нұсқасынан бастап динамикалық
массивтер енгізілген. Программада мүндай массивтерді бейнелегенде индекстің
шекараларын көрсетудің қажеті жоқ:
Var
A: array of integer;
В: array of array of char;
C: array of array of array of real;
Бұл мысалдағы динамикалық A массивінің бір, В массивінің екі, С
массивінің үш елшемі бар. Жадыны белу мен динамнкалык массивтердің әрбір
елшемі бойынша индекстердің шекарасын керсету программаның орындалуы
барысында SetLength функциясының көмегімен массивті тагайындау жолымен
жұзеге асырылады, Мұндай оператордың орындалуы барысында:
SetLength(A,3);
бір өлшемді А динамикалық массиві тағайындалады, яғни үш бүтін санды
орналастыруға жететін жадыдан орын бөлінеді.
Динамикалық массивтің кез келген өлшемі бойынша индекстін төменгі шекарасы
0 (нольге) тең, сондықтан А массивінің индексінің жоғарғы шекарасы 2-ге тең
болады. Динамикалық массивтің идентификаторы жадының алғашқы байтының
адресінен тұратьш көрсеткішке сілтеме жасап, бөлінген орынға массивті
орналастырады. Сондықтан осы жадыны босату
үшін идентификаторға Nil мәнін меншіктеу жеткілікті (Баска тәсілмен
Finanalize процедурасын пайдалану болып табылады):
Var
А,В: array of integer:
Begin Жадыны үлестіреміз:
SetLength(A,10);
SetLength(B,20); Массивтерді пайдаланамыз:
A:=Nil;
Finanalize(B);
End;
Орнатылған динамикалық массивтің үзындыгын өзгертуге алдымен жаңа
массивті орналастыруға қажетті жады даярланады, одан кейін екі массивтің
элементтері жаңа орынға тасымалданады да, бұрынғы массивке бөлінген жады
босатылады. Үлкен динамикалық массивтің шекараларын өзгертуге байланысты
қосымша уақытты қысқарту үшін бірден ұзындығы үлкен массив құру қажет.
Көп өлшемді массивтерде алдымен оның алғашқы өлшемінің ұзыныдығы
тағайындалады, одан кей і н екінші, үшінші т.сс. мысалы,
Var
A:array of array of integer; Екі өлшемді динамикалық массив;
Begin Бірінші өлшемнің ұзындыгын тағайындаймыз
(багандар мелшері);
SetLength(A,3);
Әрбір бағанның ұзындығын береміз;
SetLength(A[0],3);
SetLength(A[10J,3);
SetLengthCAP]^);
end;
Динамикалык массивтің әдеттегі массивтен айырмашылығы оның екінші,
үшінші өдшемінде ұзындыктары эртурлі болуы мүмкіи. Алдыңғы мысалда өлшемі
3x3 жвадрат массив аныкталған. үшбұрыш массив құрып керейік:
SetLength(A,3);
Әрбір бағанның ұзындығын береміз.
SetLength(A[0]53);
SctLength(A[10],4);
SetLength(A[2],5);
Кепөлшемді динамикалык массивтерде N-1 елшемнің әрбір элементі
динамикалык массив болуы мүмкін, сондай- ақ, ол тагайындауды тал ал етеді.
Мысалы, 3x3x3 өлшемді нақты куб массивті тағайындау қажет болсын:
Var
A:array of array of array of real;
Ijunteger;
Begin
SetLength(A,3);
For i:=0 to 2 do
Begin
SetLength(A[i]?3);
Forj:=0to2 do
SetLength(A[iJ]93);
end;
end;
Енді Delphi ортасында массив элементтерімен жұмыс істеуге қажетті
компоненттерді қарастырайық. Delphi ортасында экранға массив элементтерін
енгізу және шығаруды компоненттер палитрасының Additional бетінде
орналасқан StringGrid компонентінің көмегімен ұиымдастырган ыңғайлы. Бұл
компонент ақпаратты кесте түрінде бейнелеу үшін пайдаланылады. Кесте
белгіленген жэне жұмыс аймағынан тұрады. Белгіленген аймақ жұмыс аймағының
жол және баған атауларын шығару және тышқанның көмегімен олардьщ өлшемін
басқару қызметін атқарады. Белгіленген аймақ басқа түспен ерекшеленген және
оған клавиатурадан ақпарат енгізуге болмайды. Белгіленген аймақтың жолдары
мен бағандар саны FixedRows жэне FixedCols касиетінде көрсетіледі. Ал,
жұмыс аймағы RowCount — жол және ColCount баған ақпараттарынан тұрады, оны
программалық жолмен де, тышқанның немесе клавиатураның да кемегімен
өзгертуге болады. Программадағы ақпаратпен қатынас
Cclls[Acol,AROW:integer] .string ; қасиетінің көмегімен жүзеге
асырылады. Мұндағы, Асоі - кестенің баған нөмірі, ал AROW - жол иомірі, ал
немірлеу нольден басталады. Сонымен қатар, косымша батырмаларсыз кестенің
өлшемін басқару үшін компоненттер палитрасының Samples бетінде орналасқан
SpinEdit редактор өрісін пайдалануға болады. Енді осы компоненттердің
кызметін пайдаланатын мысал қарастырайық.

2. Жазулар.

Жазулар - бұл өріс деп аталатын шектеулі компонентгер мөлшерінен
тұратын мәліметтер құрылымы. Массивтерден айырмашылығы жазудың
компоненттері (өрістері) әртүрлі типті болуы мүмкін. Жазудың қандай да бір
компонентіне сілтеме жасау үшін өріске атау беріледі.
Жазуларды сипаггаудың форматы төмендегідей:
тип аты=тесог(1
өрістер тізімі
end;
Мұндагы тип аты- жазудың атауы;
ecord, end;- қызметші сөздер (жазу соңы дегенді біддіреді);
өрістер тізімі - өрістер тізімі, ол нүктелі үтір арқылы
ажыратылып жазылған жазулар бөлімдерінің тізбегі.
Жазудың әрбір бөлімі бір немесе бірнеше өріс атауларьшан (идентификатор)
тұрады, олар бір-бірінен үтір арқылы ажыратыльт жазылады. Идентификатордан
кейін қос нүкте қойылып, өрістер типі сипатталады. Мысалы:
Type mm*j*
BirthDay=Tecord
Day, Month: Byte;
Year: Word;
End;
A, B: BirthDay
...
Бұл мысалда BirthDay типі, өрістері Day, Month, Year болып келген жазу;
А жэне В айнымалылары BirthDay типті жазудан тұрады.
Массивтегідей, жазу типті айнымалының мәнін типі дэл сондай басқа
айнымалыға меншіктеуге болады, мысалы:
a:=b;
Егер құрама атау пайдаланатын болса, жазудың әр компонентіне кіруге
мүмкіндік алуға болады. Яғни айнымалының атын көрсетіп, одан кейін нүкте
қойылып, өріс аты жазылады:
a.day:=27;
b.year:=1963;
Қабаттасқан өрістер үшін нақтылауды жалғастыра беруге болады:
type
BirthDay=record
Day, Month: Byte;
Year: Word;
end;
Var
C: record
Name: string;
Bd: BirthDay;
end:
begin
ifcJ3dYear=1963then...
end;
Жазудың өрісіне кіруді жеңілдету үшін Width жалғастыру операторы
пайдаланылады.
Width айнымалы do оператор;
Мұндағы Width, do - қызметші сөздер; айнымалы - жазу типті айнымалы,
мұнда бірінің ішіне бірі орналасқан ерістер тізімі жазылады; оператор -
Delphi бағдарламалаутілінің кез келген операторы.
c.MMonth:9;
Бұл төмендегі жазумен бара-бар:
Width c.Bd.do Month:=9; немесе
Width с do Width Bd do Month:=9; немесе
Width c,Bd do Month:=9;
Delphi бағдарламалаутіліқце бірнеше вариантты өрісі бар жазуларды
пайдалануға болады, мысалы:
Type , : g ¥ШШІ[
Forma=record
Name: String;
Case byte of
0:(BiidthPlace: String[40]);
l:(Country: String[20];
EntryPort: String[20];
EntryDate: 1„31;
EntryDate: 1..31)
end;
Бұл мысалда Forma типі бір шектеулі Name өрісімен жэне case ... оf
қызметші сөзі арқылы өзгермелі бөлігі берілетін жазуды анықгайды.
Өзгермелі бөлігі бірнеше варианттан тұрады. Әрбір вариант таңдау тұрақтысы
бойынша анықталады; таңдау тұрактысынан кейін қос нүкте қойылып, өрістер
тізімі жазылады. Кез келген жазуда өзгермелі белігі тек біреу ғана болады.
Өзгермелі бөлігінің бір ерекшелігі барлық берілген варианттар бір-біріне
қабаттасып орналасады, яғни олардың әрқайсысынан бөлінген бір жадыда ғана
орналасады. Бұл типтерді түрлендірудің қосымша мүмкіндіктерін алады,
мысалы:
var
Mem4:record
Case Byte of
0:(By: array[0..3] of byte);
l:(Wo: array[0..1] of word);
2:(lo; longlnt);
end;
Бұл мысалда Mem4 жазуының үш варианты бар, олардың әрқайсысы f жадыдан 4
байттың біреуін ғана алады. Біз программадағы жазудың қай орісіне
оралатынымызға байланысты сол белік массив ретінде қарастырылады. 4 байт -
by ерісі, Word тәрізді екі бүтін типтен құрылған массив (Wo-өрісі); longlnt
тәрізді бір бүтін типті сан (Lo-өрісі). Бұл мысалда алдымен ең ұзын бүтін
мәнді меншіктеп, одан кейін нәтижені байт немесе сөз бойынша талдауға
болады:
Var it
х: word;
Xb: byte;
XI: Longlnt;
Begin
width m do
begin
lo:=Trunc (2*Pi*x);
ifwo[l]=Othen
if by[l]=0 then
xb:=x[0]
else
x.^wofO]
else
xl:=lo
end;
end.
Өзгермелі бөлікті ашатын case ... of сөзі сыртқы түрі таңдау операторына
ұқсағанымен, бұл жерде тек өзгермелі боліктің басын көрсететін қызметші
сөзді ғана атқарып түр. Сондықтан өзгермелі бөліктің соңына case ... of
қызметші сөзінің жұбы ретінде end сезін жазбауга болады, (Өзгермелі бөлігі
барлық уақытта жазудың соңында болғандықтан end сөзі жазылады, бұл record
сөзінің жұбы),
Хабарланған жазудағы өрістердің атауы бірегей болуы тиіс. Егер жазу жазу
өрістерінен тұратын болса, олар бірінің ішіне бірі орналасқан болса, онда
олардың атаулары қабаттасудың әртүрлі деңгейлерінде қайталануы мүмкін.

3. Жиындар.

Жиындар - бір-бірімен логикалық байланысқан бір типті объектілер жиыны.
Объектілердің арасындағы байланыстардың сипатын программист көрсетеді, оны
Delphi бағдарламалаутілі ешқандай да бақыламайды. Жиынға кіретін элементтер
саны 0 мен 256 аралыгында өзгеруі мүмкін. Бірде бір элементі болмайтын жиын
бос жиын деп аталады. Элементтер санының тұрақты болмайтындығы арқылы
жиындарды массивтер мен жазулардан ажыратамыз.
Екі жиын эквивалента деп есептеледі, сонда тек сонда ғана олардың
элементтері тең болса (яғни бірдей болса), жиын элементтерінің орналасу
ретіне ешқандай мән берілмейді (қалай орналасса да бәрі бір). Енді
жиындардың берілуі мен анықталуына мысалдар келтірейік:
Type
DigitChar=set of 0e.9';
Digit=setof0..9;
Var
Begin
si, s2, s3: DigitChar;
s4, s5, s6: digit;
begin
si = [ ' 1 7 2 7 3 ' ] ;
s2 = [ ' 3 7 2 7 1 ' ] ;
s3 '=['273'];
s4 :=[0..3,6];
s5 :=[4,5];
s6 :=[3..9];
...
end.
Бұл мысалдағы si мен s2 жиындары эквивалентті, ал s3 жиыны s2 жиынының
ішіне кіреді.
Жиын типтерінің жазылу форматы төмендегідей:
тип аты = set of базалық тип;
Мұндағы тип аты- жиын типінің идентификаторы, set,
of - қызметші сөздер, базалық тип - жиын элементгерінің базалық типі
ретінде word, integer, Longlnt, Intb типтерінен басқа кез келген реттелген
тип алынады.
Жиын элементтерін беруде жиын конструкторы пайдаланылады: бір-бірінен
үтір арқылы ажыратылған жиын элементтерінің тізімі, тізім квадрат жақшаның
ішіне орналасады. Жиындарға төмендегідей операцияларды қолдануға болады:
1) жиындардың қиылысуы - (*); екі жиынның қиылысу нәтижесінде алынған
жиынға екі жиьганың ортақ элементтері де иреді. Мысалы, s4*s6- ның
нәтижесі [3] болады; s4*s5 –тың нэтижесі бос жиын болды.
2) жиындардың бірігуі (+). Екі жиынның бірігуі бір мезгілде ею жиынға да
кіретін ортақ элементтерден тұратын үшінші жиын болып табылады.
3) Жиындардың айырымы. Екі жиынның айырымы екінші жиын элементтері
кірмейтін, бірінші жиын элементтерінен тұратын үшінші жиын болып
табылады.
Жиындарга цолданылатын амалдар
Жиындық типтердің берілгендері үшін қиылыстыру,
біріктіру, айырымдық жэне in амалдары анықталған. Сондай-ақ,
"', '' '', ''='', ''='', ''='' жэне "'' қатынас белгілері
пайдаланылады.
"=" ңатынас белгісі. Егер А жэне В жиындары бірдей
элементтерден тұратын болса, онда бұл жиындар тең болып есептеледі.
Салыстырылатын жиындардағы элементтердің орналасу ретінін теңдік шартына
әсері болмайды.
А жиынының мәні В жиынының мэні Өрнек Нэтиже
[1,2,3,4] [1,2,3,4] А=В True
['a', 'b\ 'с'] ['с', 'а'] А = В False
[V..V] ['z'..'a'] А = В True
Тец емес цашынас белгісі (). А жэне В жиындарының кем дегенде бір
элементі өзгеше болатын болса, онда олар тең емес болып есептеледі.
А жиынының мэні В жиынының мэні Өрнек Нэтиже
[1,2,3] [3,1,2,4] АоВ True
['a'..'z'] ['b'..'z'] АоВ True
['c'..'t'] ['t'..'c'] AoВ False
Үлкен немесе тец цатынас белгісі (—). Егер В жиынының
барлық элементтері А жиынының құрамына кіретін болса, А=В
қатынасының нэтижесі ақиқат болады, ал керІ жағдайда жалган
болады.
А жиынының мэні В жиынының мәні Өрнек Нәтиже
[1,2, 3,4] [3, 2, 4] A=B True
['a'.z'] ['b'..'t'] A=B True
['с', 'х', 't'] [t','с'] A=B True

Кіші немесе тең (—) қатынас белгісі. Алдыңғы операцияда
пайдаланылғанындай, егер А жиынының барлық элементтері В жңьшының құрамына
кіретін болса, онда А = В өрнегінің нәтижесі ақиқат болады, кері жағдайда
жалған болады.
А жиынының мәні В жиынының мәні Өрнек Нәтиже
[1,2,3] [2,3,4] А=В Тruе
['d'..'h'] ['b'..'t'] А=В ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Turbo Pascal тілі туралы
Тілдің алфавиті
Паскаль тіліндегі негізгі элементтері тілдің алфавиті мен сөздігі
Енгізу және шығару функциялары мен процедуралары
Turbo pascal программалау жүйесі туралы ақпарат
SQL кестелеріндегі мәліметтердің модификациясы
Турбо Паскаль жүйесінде қосалқы программаларды ұйымдастыру технологиясы
Есептеу техникасынан дәрістер
Информатика пәнінен лекция тезистері
Орта мектепте программалау негіздерін оқыту
Пәндер