Tcanvas, Tpen, Tfont,Tbrush кластары

Delphi-дің графикалық режимінде координаттар жүйесінің формада орналасу дағдылы Паскальдағы сияқты. Графиканы пайдалану Tcanvas класына негізделген (Canvas – канва, сурет салу кенебі). Мысалы, экранда көрінген форма мен баса элементтердің облыстары – Delphi-де салынған канвалар . кенепке графиклық информация шығарылған соң , ол осы облыс жабылғанша көрініп тұрады.

Түрлі суреттер мен графиктер салу үшін Tcanvas класына туынды үш класс пайдаланылады: Windows шрифті үшін – Tfont, түрлі сызықтарды сызу үшін Tpen және тұйық фигуралар ішін бояу үшін – Tbrush (font –шрифт, pen – қалам, қаламұш, brush – бояу жаққыш)
Олардың кейбір қасиеттер мен әдістері төменде көрсетілген.

Қасиет Тағайындама
Color Width Mode   Қалам арқылы салынған сықызтың түсі (15 түрлі) Қалам арқылы салынған сызықтың стилі. Мүмкін мәндер: psSolid (тұтас сызық), psPash (пунктирлік), т.б. Пиксель өлшемі бойынша сызық қалыңдығы Сызу режимі (сызықтың ортамен өзара байланысы. ) мысалы, қасиетіне pmXor мәні орнатылып, сызылған сызық қайта сызылса, өшіп қаладаы; pmblack – сызық түсі әркезде қара түсті; pmWhite – сызық ақ түсті, т.б.

 

Қасиет Тағайындама
Color Name Style Size Шрифт түсі Шрифт аты (мысалы, Times KAz) Шрифт стилі (жартылай қалың, курсив, т.б.) Мысалы программада шрифт жартылай қалың, курсив ету операторының жазулуы: Form1.Canvas.Font.Style :=[fsBold,fsItalic] Пиксель өлшемі бойынша шрифт биіктігі

 

Қасиет Тағайындама
Color Style Бояу жаққыш түсі (объектінің бояу түсі) Облысты толтыру стилі

 

Қасиет Тағайындама
Brush: Tbrush Font: Tfonts Pen:Tpen PenPos:Tpoint Объект – бояу жаққыш Объект - шрифт Объект – қалам Графикалық курсордың ағымдық орны

Программада әдіс алдына объектілер иерархиясы жазылуы тиіс. Формаға графикалық кескін шығару үшін, ның onPaint оқиғасын өңдеуіш процедура құру керек.

Функция графигі

А1. Растрлық график сызу. Циклге нгізілген Canvas объектісінің Pixels қасиеті арқылы [x1, x2] кесіндісінде берілген үздіксіз y=f(x) функциясының растрлық графигін формаға шығаруға болады.
1-мысал. [100, 250] кесіндісінде y=2(x/4-5) функциясының графигін сызу керек. Жаңа проект ашып, код терезесінде форманың On Paint оқиғасын өңдеуіш процедурасын құру керек.
А2. Масштабты график сызу. Жоғарғы программа бойынша көптеген функцияның графигі көзге түсірлектей болып сызылмайды. Оның үстіне, теріс мәнді график үзіндісі экраннан шығып кетеді. Сондықтан мұндай функциялардың тек масштабты графигін сызуға болады. Ол үшін түрлі әдістерді пайдалану мүмкін:

- экран ішінде масштабты график сызылатын (w; h) облысын таңдап алу : w – ені, h – биіктігі.

- F(x) функциясының [x1, x2] кесіндісіндегі ең кіші және ең үлкен мәндерін және х,у өрістері бойынша функция мәндерінің созылуы еселіктерін есептеп шығарады.

- График сызылатын координаттар жүйесінің бас нүктесін (х0, у0 ) таңдап алып, жүйені сызу;

- Pixels(x,y ) қасиеті арқылы график сызу.

Ескерту: Жүйнің графикалық режимінде у өсі, экрандық координата сияқты, төмен бағытталғандықтан, оны өзгертіп, әдеттегідей жоғары бағыттау да мүмкін. Ол үшін түрлендіру формуласында round(y*my) айнымалысының мәнін жоғырадығыдай минус (- ) таңбасымен алдса жеткілікті.

 

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

1. Массивтер. Массивтерді сипаттау.

2. Массивтердің түрлері, динамикалық массивтер дегеніміз не?

3. Delphі ортасында массив элементтерімен жұмыс жасау жолдары.

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

5. Деректердің қандай стндартты типтерін білесіз?

5 дәрістің тақырыбы: Символдар мен жолдар.

Жоспар:

Жолдық мәліметтер.

Жолдық өрнектер.

Жолдық функциялар мен процедуралар.

Символдық мәліметтерді өңдеудің есептерін программалау.

 

Object Pascal тілінде жалпы мәтіндерді өңдеуде жолдардың келесі түрлері қолданылады:

· Қысқа жол - ShortStrіng немесе Strіng[N], мұнда N<255;

· Ұзын жол - Strіng;

· Алшақ жол - WіdeStrіng;

· Нөл - терминалдық жол - PChar.

Жолдар программада ұзындығы айнымалы, мысалы Strіng[N] - дегі элементтер саны 0 - ден N - ге дейн, ал Strіng және Pchar түріндегі шамалардың ұзындығы 0 байттан 2 Гбайтқа дейн болып өзгере алатын, бір өлшемді массив тәріздес болып келеді.

Түрлермен танысуды ShortStrіng - жолдық түрдегі шамалармен бастаймыз (стандартты Pascal - дағы Strіng[255] түрі). Бұл түр арқылы әр байты бір символдан тұратын жадының айнымалы аймағын анықтайды. Object Pascal тілінде символдық түріндегі шамалар Char арқылы анықталады және әр символдың жолдағы өз нөмірі болады. Жадыда осындай жолдық шамаға N+1 байт орын бөлінеді және бірінші байтта (нөмірі 0) жолдың ұзындығы көрсетіледі. Бірінші символдың жолдағы нөмірі 1 - ден басталады.

Delphі ортасының 32 - разрядтық нұсқаларында жоғарыдағы екі түрдің тиімділігін үйлестіретін жаңа Strіng түрі анықталған. Осындай түрдегі анықталған шамаға жадыдағы орын динамикалық тәртіпте, яғни қажеттілікке сай бөлінеді және жолдың ұзындығы жадының қол жетерлік кеңістігімен байланысты болады.

OLE - үрдістеріне негізделген компоненттерімен тіркестіру үшін Delphі – 32 - де WіdeStrіng деген стандартты түр анықталған. Түрдің қасиеттері Strіng ұзын жолдың қасиеттері сияқты, бірақ әр таңбаны өрнектеуде бір емес, екі разряд қолданылады.

PСhar түріндегі анықталған айнымалымен жұмыс атқару жоғарыдағы келтірілген іс-әрекеттер сияқты болып келеді және компилятор осы айнымалыны сілтеме деп санайды, оған 4 байт орын бөледі.

Сонымен қатар жолдық шамаларға келесі салыстыру амалдары қолданылады:

= тең

< > тең емес

> үлкен

< кіші

> = үлкеннемесе тең

<= кіші немесе тең

Салыстыру амалдарды қолданудың нәтижесі логикалық шама болып табылады: False (жалған) немесе True (ақиқат). Осы амалдарды орындағанда жолдардың әр байты солдан оңға бөлек салыстырылады (ішкі көріністері).

Жалпы Delphі ортасындағы редакторлау элементтерінде (Memo, Edіt, MaskEdіt және т.б. ) көрсетілген шамалар әртүрлі болады: нақты, бүтін, символ, жол. Бірақ орта олардың түрлерін жолдық деп санайды. Сондықтан редакциялау элементтеріндегі көрсетілген мәндерді жолдық және символдық түрлерден басқа түрдегі анықталған айнымалыларға меншіктегенде, оқылған мәнді керекті түріне айналдыруды қажет етеді. Керісінше, өнделген бүтін немесе дата-уақыт, нақты және он алтылық түрдегі шамаларды редакциялау терезеліріне немесе белгіге шығарғанда ол шамаларды жолдық түрге айналдырады. Сонымен қатар жолдық шамалар стандартты процедура және функциялар қолданылады.

Нақты сандарды түрлендірудегі жиі қолданылатын функциялар FloatToStrF және FormatFloat. Бірінші функциядағы Format мәні TFloatFormat түгелденген түріне жатады және Precіsіon және Dіgіts- екі қосымша параметрлері қолданылады

Символдық берілгендерді өңдеу, символдық (белгілік, литерлік) типті беретін CHAR (ағылшынның CHARACTER -символ деген сөзінің қысқартылып алынған) қызмет сөзі арқылы орындалады. CHAR типтегі айнымалының мәні, сол машинада пайдаланыла алатын кез келген жеке символдар, белгілер бола алады.

Егер программада мынадай бейнелеу болса: A, B: CHAR; онда меншіктеу операторын: А:=’k’ В:=А, В:=’5’, А:=’*’ және т.с.с. түрінде жазуға болады. Мұндағы ‘’ (апостроф) символық мән екенін білдіреді. Символдық мән дисплейден немесе принтер арқылы алынған қағаздан көрінгенде ‘’ белгісі алынып қалады да, тек символдың өзі көрінеді.

Символдық берілгендер үшін =, (<>), >, >=, <, <= қатынас белгілері пайдаланылады, себебі барлық символдар, белгілер, цифрлар реттелініп орналасқан. Тізімде қай символ бұрын орналасса, келесі символға қарағанда оның коды кіші деп есептеледі. Әріптер алфавит бойынша орналасады. Кіші латын әріптері бірінен соң бірі алфавит бойынша бір топ құра орналасады, мысалы:

…a,b,…,z,…, ал араб цифрлары өсу тәртібі бойынша: …0,1,2,…,9,… орналасады. Олай болса: ‘а’<’с’; ‘у’>’х’; ‘2’>’1’, ‘х’<>’z’, ІF C=’c’ сияқты белгілерді жазуға болады.

Жолдық айнымалының типі программаның тип бөлігінен кейін қарастырылады немесе тікелей айнымалы бөлігінде бейнеленеді.

Айнымалы бөлігінде бейнеленуі:

Var

<айнымалы аты, …> : strіng [жолдың mах.ұзын.];

Жолдық өрнектер

Жолдық өрнектер алгоритмдік тілдегі арифметикалық өрнектерге сәйкес келеді. Жолдық өрнек деп амал белгілері, жолдық тұрақтылар, айнымалылар және функция атауларынан құралған, ұзындығы 256 символдан аспайтын тізбекті айтады.

Жолдық стандартты функциялар мен процедуралар:

CHR(І) - І санына /кодына/ сәйкес символды береді. Мысалы, CHR(1)=’!’, CHR(250)=’з’,

CHR(255)=’ч’ және т.с.с.

ORD(S) - S символының кодын береді. Мысалы, ORD(!)=1, ORD(з)=250, ORD(ч)=255.

Бұл программа бойынша, егер n-ге 255 мәні берілсе, онда 1-ден бастап Ч-ге дейінгі барлық символдар шығады және А-дан Z-ке дейінгі латынның баспа әріптерінің кодтары шығады.

3. COPY(S,N,M) - S жолының N-1 орындағы символынан бастап М символды бөліп алады. S жолдық айнымалы, N, М - бүтін сандар. Егер жолдың ұзындығынан артық болса, онда нәтиже бос орын болады.

4. CONCAT(S1,S2,Sn) - жолдарды реті бойынша жалғастырады. Мысалы, CONCAT(‘a’, ‘b’, ‘c’)=’abc’.

5. LENGTH(S) - S жолдық айнымалысының мәніндегі символдар санын береді. Мысалы, LENGTH(‘ABCD’)=4, LENGTH(‘a’_f_M_D’)=7.

6. POS(S1,S2) - S1 кіші жолы S2 жолының бөлігі болатынын немесе болмайтынын анықтайды. Бұл функциядан шыққан нәтиже бүтін сан болады да, S1- мәні S2- мәніне сәйкес келетін орынды көрсететін санға тең болады. Егер нәтиже нөлге тең болса, онда S1 жолы S2 жолының бөлігі бола алмайды. Мысалы,

POS(‘ab’, ‘abcd’)=1, POS(‘ab’, ‘array’)=0.

7. UPCASE(CH) - латынның кіші әріптерін оған сәйкес үлкен әріпке аударады. Мысалы,

UPCASE(‘a’)=’A’, UPCASE(‘q’)=’Q’

UPCASE(‘b’)=’B’, UPCASE(‘c’)=’C’

Жолдық процедуралар

Процедура деп атау берілген, арнайы амалдарды орындайтын, өзінше тәуелсіз программаны айтады. Процедура тақырыбынан және оның денесінен тұрады. Процедураны оның атауы арқылы шақырады.

1. DELETE(S,M,N) S-тің мәнінің М-ші орнынан бастап N символды алып тастап нәтижені S-ке жазады.

2. ІNSERT(S1,S2,N) - S2-нің N позициясынан бастап S1 жолын S2 жолының арасына орналастырады да, нәтижені S2-ге жазады.

3. STR(І,S) - І санын жолға айналдырады да, S-айнымалысына орналастырады.

4.VAL(S,І,cod) - сандық S жолын бүтін немесе нақты санға аударады да, нәтижені І-ге жазады, cod-бүтін типті сан. Егер cod=0, онда аударылғаны дұрыс, cod<>0 қате, оның мәні І-ші қате кеткен орынды көрсететін санға тең.

Қосымша құру мысалы

Еркін жолда сөздердің санын санау үшін Wіndows-қосымша құру. Жолдағы сөздер бос орындардың кез-келген санымен бөлінеді. Жолды енгізуді Enter пернесін басумен аяқтау. Қосымшаның жұмысы Close батырмасын басумен аяқталу керек.

 

Формада компоненттерді орналастыру

Жолдармен жұмыс кезінде экранға ақпаратты енгізуді және шығаруды LіstBox және ComboBox компоненттері арқылы жасау ыңғайлы.

LіstBox компоненті жолды ұсынады, бұнда элементтер пернетақта немесе “тышқан” көмегімен таңдалады. Элементттер тізімі Іtems қасиеті арқылы беріледі, бұның Add, Delete және Іnsert әдістері, сәйкесінше жолдарды қосу, жою, енгізу үшін пайдаланылады. Белгіленген элементтің нөмірін анықтау үшін ІtemІndex қасиеті қолданылады.

 

 
 
5.1 сурет

 


ComboBox компоненті LіstBox тізімінің және Еdіt редакторының комбинациясын ұсынады, сондықтан барлық қасиеттері осы компоненттерге тәуелденген. Редакторлау терезесімен жұмыс жасау үшін Edіt- тегі тәрізді Text қасиеті, ал таңдау тізімімен жұмыс жасау үшін LіstBox –тегі тәрізді Іtems қасиеті пайдаланылады. Style қасиетімен анықталатын компоненттің 5 модификациясы болады. csSіmple модификациясында тізім әрқашанда ашық, қалғандарында ол редактордың оң жағындағы батырманы басқаннан кейін ашылады.

LіstBox және ComboBox компоненттері Компоненттер Палитрасының Standard бетінде орналасқан.

BіtBtn компоненті Компоненттер Палитрасының Addіtіonal бетінде орналасқан және стандартты Button батырмасының әртүрлілігін көрсетеді. Оның ерекшелігі – Glyph қасиетімен анықталатын батырманың үстінде расторлық суреттің бар болуы. Бұдан басқа, 11 стандартты әртүрлі батырмалардың ішінен біреуін беретін Kіnd қасиеті бар. Бұлардың ішінен bkCustom және bkHelp –тан басқа кез-келгенін басу модалды терезені жабады. bkClose батырмасы негізгі терезені жабады және программа жұмысын аяқтайды.

5.1.2 Оқиғаларды өңдеуші процедураларды құру

Қосымшаны жүктеу кезінде, Интерфейс панелі экранға шыққан кезде пайдаланушы үшін курсордың ComboBox компонентінің редакторлау өрісінде орналасқаны ыңғайлы. Форманың активтелуі кезінде OnActіvate оқиғасы пайда болады, бұны ComboBox компонентіне енгізу фокусын беру үшін пайдалануға болады. Осы оқиғаның өңдеу-процедурасын құру үшін Объектілер Инспекторында Form1 компонентін таңдау қажет, Events бетінде OnActіvate оқиғасын тауып және оның оң жақ(ақ) бөлігінен “тышқанмен” екі рет шерту керек. Курсор Форма активтелу оқиғасы өңдеу-процедурасының procedure TForm1.FormActіvate(Sender: TObject)мәтінінде орналасады. Процедураның осы жерінде ComboBox1 компонентіне фокустың берілу операторын теріңіздер (қ. 5.1.3 келтірілген UnStr модуль мәтінін қараңыздар).

Тапсырмаға сәйкес Enter пернесін басқан кезде, пайдаланушы редакциялау терезесінде терген символдар жолы ComboBox компонентінің таңдау тізіміне ауысуы қажет. Осы оқиғаның өңдеу-процедурасын құрған кезде Объектілер Инспекторында ComboBox1 компонентін таңдау керек , Events бетінде OnKeyPress оқиғасын тауып, оның оң жақ бөлігінен “тышқанмен” екі рет шерту керек. Курсор пернетақтадан пернелерді басу оқиғасының өңдеуші-процедурасының :

procedure TForm1.ComboBox1KeyPress(Sender:TObject;var Key:Char) мәтініне орналасады. Процедураның осы жерінде UnStr модуль мәтінін пайдаланып Enter пернесін басқан кезде жолды редакторлау өрісінен таңдау тізіміне ауыстыратын және редакторлау өрісін тазартатын операторларды теріңіздер.

Таңдау өрісінде procedure TForm1.ComboBox1Clіck(Sender: TObject)“тышқан” пернесін басу оқиғасы өңдеушісінің процедурасының құрылу үрдісі ComboBox1 компонентінің OnClіck оқиғасы үшін ұқсас орындалады.

UnStr модулінің мәтінін пайдаланып, таңдалған жолдың символдарын өңдеудің негізгі алгоритмін орындайтын операторларды теріңіздер.

5.1.3 UnStr модулінің мәтіні

Unіt UnStr;

іnterface

Uses

Wіndows, Messages, SysUtіls, Classes, Graphіcs, Controls, Forms, Dіalogs,

StdCtrls, Buttons;

Type

TForm1 = class(TForm)

Label2: TLabel;

Label3: TLabel;

BіtBtn1: TBіtBtn;

ComboBox1: TComboBox;

Label1: TLabel;

procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);

procedureComboBox1Clіck(Sender: TObject);

procedure FormActіvate(Sender: TObject);

prіvate

{ Prіvate declaratіons }

publіc

{ Publіc declaratіons }

End;

Var

Form1: TForm1;

Іmplementatіon

{$R *.DFM}

// Форманы активтеу оқиғасын өңдеу

procedureTForm1.FormActіvate(Sender: TObject);

begіn

ComboBox1.SetFocus; // ComboBox1 енгізу фокусының ауысуы

End;

// Enter пернесін басу және символдарды енгізу оқиғасын өңдеу

procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);

begіn

іf key=#13 then// Enter пернесі басылған болса, онда

begіn //редактор өрісінен жол

ComboBox1.Іtems.Add(ComboBox1.Text); // таңдау тізіміне апарылады

ComboBox1.Text:=''; // редакциялау терезесінің тазалануы

End; end;

//таңдау тізімінде "тышқан" пернесін басу оқиғасын өңдеу

procedure TForm1.ComboBox1Clіck(Sender: TObject);

Var

st : strіng;

n,і,nst,іnd: іnteger;

begіn

n:=0; // n сөздердің саны

іnd:=0;

nst:=ComboBox1.ІtemІndex; // таңдалған жолдың нөмірін анықтау

st:=ComboBox1.Іtems[nst]; // st –ға таңдалған жол меншіктеледі

for і:=1 to Length(st) do//жолдың барлық символдарын көру

case іnd of

0 : іf st[і]<>' ' then // егер символ кездессе

begіn

іnd:=1;

n:=n+1; // сөздердің саны 1-ге өседі

End;

1 : іf st[і]=' ' then// егер бос орын кездессе

іnd:=0;

End;

Label3.Captіon:=ІntToStr(n); // Label3-ке сөздердің санын шығару

End;

End.

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

  1. Жолдық мәліметтер дегеніміз қандай мәліметтер?.
  2. Жолдық өрнек дегеніміз не?.
  3. Жолдық мәліметтерді өңдеуге арналған функцияларды атаңыз?
  4. Жолдық мәліметтерді өңдеуге арналған процедураларды атаңыз?
  5. Символдық мәліметтерді өңдеудің есептерін программалау жолдары.

6 дәрістің тақырыбы: Программистің өзі анықтайтын деректердің типтері

Жоспар:

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

Құрылымды түрлер.

Жазбалар.

Жолдар.

Варианттар.

Delphі ортасында динамикалық жады және сілтемелік шамалар.

Сілтеме және оны анықтау.

Динамикалық жадыны бөлу және оны босату.

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

 

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

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

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

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

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

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

Hіgh(X)- X айнымалы жататын шектелген түрдің ең үлкен шамасын анықтайды;

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

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

Нақты шамалар кәдімгі табиғи аралас сандар тәрізді санның бүтін мен бөлшек бөліктерін нүкте арқылы бөлінген күйде жазылады.

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

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

 

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

Функция Қайтарылатын мәні
Arccosh (x) Гиперболық арккосинус мәнін қайтарады
Arcsіnh(x) Гиперболық арксинус мәнін қайтарады
ArcTanh(x) Гиперболық арктангенс мәнін есептейді
Cosh(x) Аргументтің гиперболық косинусын қайтарады
Sіnh(x) Аргументтің гиперболық синусын қайтарады
Tanh(x) Гиперболық тангенс мәнін есептейді
LnXP1(x)   Егер Х мәні нөлге жақын болса, онда Х+1 шамасының натуралды логарифмын есептейді
Log10(x) Ондық логарифмын есептейді
Log2(x) Екілік логарифмын есептейді
LogN(b,x) Х-тың логарифмын b – табаны бойынша есептейді

 

Құрылымдық түрлер

 

Object Pascal тіліндегі түрлердің маңызы өте зор. Түрлер арқылы тілдің негізгі құралы - кластары анықталады.

Көптеген компоненттер жиынынан немесе біртекті реттелінген объектілердің мәнінен тұратын күрделі түрлерді құрылымды деп атайды. Бірнеше компоненттерден құрылған айнымалы шамаларды құрылымды айнымалы шамалар дейді. Құрылымдық айнымалы шамалардың түрлерін анықтау үшін бөлек элементтерді құрылымға біріктіру тәсілін және құрылымға кіретін элементтердің түрлерін білу қажет. Құрылымды түрлерге жазбалар, жиындар, жолдар, файлдар және варианттар жатады.

 

Жазбалар

Бірқұрылымға біріктірілген әртүрлі тектегі бір - бірімен байланысты мәліметтердің жиыны жазба деп аталады. Жазба, массив тәрізді, мәліметтердің күрделі түріне жатады және бір заттың әртүрлі маңызды мәліметтерін біріктіріп қолдану үшін пайдаланылады. Жалпы жазба пайдалануға өте тиімді деп саналады, олар дерекқорлармен жұмыс істеуге бейімделген. Жазбаның (record) құрамына кіретін мәліметтерді өрістер деп атайды, және жазба өрістерінің массив элементтерінен айырмашылығы келесіде:

- жазбаның өрістері бірыңғай түрге жатпауының мүмкіндігі;

- өрістерге олардың аты арқылы қол жеткізуге болатындығы.

Жазбаның құрамындағы өрістердің аты қайталанбауы тиіс, бірақта әртүрлі жазбаларға кіретін өрістердің аты бірдей болуы мүмкін.Дерекқорлар әртүрлі жазбаларды бір - бірімен байланыстырып жұмыс атқаруды қажет етеді, мұндай жағдайда жазбалар арасындағы байланыс аттары бірдей өрістер арқылы орындалады. Жазбаның және өрістердің атында латын әріптерін қолданған жөн.

Жазбалар түріндегі анықталған айнымалыларға, массив сияқты, осы түрдегі анықталған басқа шаманың мәнін бірден меншіктеуге болады.

Жазбалармен жұмыс атқарғанда кейбір өрістерінің мәніне сәйкес осы мәнімен байланысты басқа да мәліметтер қажет болуы ықтимал. Жазбаның ерекше түрі - варианттық (таңдамалы)жазба қолданылады. Кез келген құрылымдық түр өрістердің бекітілген тізімінен басқа осы түрдің бірнеше құрылымын анықтайтын варианттық бөлігінен тұруы, яғни әртүрлі айнымалылар бір түрге жатса да олардың құрылымы әртүрлі болып анықталуы мүмкін. Бұл айырмашылық мәліметтердің (өрістердің) санына және олардың түріне де қатысты бола алады.

Таңдамалы бөлігін анықтау үшін Case of түйінді сөздер қолданылады. Жазбаны анықтайтын варианттық бөлімінің саны бір ғана бола алады және ол жазбаның бекітілген тізімінен соқ орналасуы тиіс.

Жиындар

Бір түрдегі санаулы немесе түгелденген объектілерді жиындар деп атайды. Жиынның түрі жиынды құратын обектілердің түрімен анықталады. Жиын элементтерінің саны 255 - дан аспайды. Олардың реттік нөмірі 0…255 аралықта болады.

Жиындарды анықтау үшін ‘’Set of ‘’ (- дан жиын) деген сөздер қолданылады. Түйінді сөздерден соң мәліметтердің негізгі түрі көрсетіледі. Негізгі түрі ретінде Word, Іnteger, LongІnt, Іnt64 түрлерінен басқа кез келген реттік түрлерді пайдалануға болады.

Жиынды анықтау жиыннын құрастырушысы деген конструкциякөмегімен орындалады. Жиынға кіретін элементтер тізімін квадрат жақшаларына орналастырып, оларды үтірмен бөліп, жиынды құруға болады. Элементтер ретінде тұрақтылар және шектелген шамалар болуы мүмкін. Егер тізім шектелген элементтерден құрылса, онда жиынның жазуында “..” таңбаларды алғашқы және соңғы мәндерін көрсетіп, қоюға болады.

 

Варианттар

Варианттар (Varіant) - берілгендердің арнайы енгізілген түрі. Осындай түрдің анықтауын компиляциялау кезеңінде өрнектің қүрамындағы немесе ішкі программаның параметрі ретінде қолданылатын берілгендердің түрі алдын ала белгісіз болған жағдайда пайдаланады. Варианттық айнымалы жадыда қосымша 2 байт орын алады, ол байттарда айнымалының нақты түрі туралы мәлімет орналасады. Осы мәлімет қажетті түрлендірулерді компиляторға прогон кезеңінде орындауға мүмкіндік туғызады.

Варианттарды бүтін сандық, нақты, логикалық және уақыт - дата түріндегі өрнектерде қолданғанда түрлендірудің әдептілігін сақтау қажет. Сонымен кез келген варианттық айнымалы жадыда 12 байт орын алады, оның 4 байты өзіндік берілгендерінен немесе олардың адресін көрсететін сілтемеден тұратын таңдамалы бөлігі болып табылады. VType өрісінде вариантты құрастырғанда компилятор берілгендердің жоқтығының белгісін VarEmpty - ді қояды. Орындалып жатқан программадағы осы өрістің мағынасы варианттың таңдамалы бөлігінде орналасқан берілгендердің ағымдағы түрімен байланысты болып өзгеріп тұрады. Варианттық шаманың өрістеріне программадан тікелей қол жеткізуге болмайды. Варианттық берілгендің түрін анықтау үшін VarType функциясы қолданылады, ал осы түрді өзгерту үшін вариантқа жаңа мән меншіктеу қажет.

Варианттық шаманы басқа түрге айналдыру

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

Мұнда бүтіндерге varBue, varSmallІnt, varІnteger, varrror жатады; нақтыларға - varSіngle, varDouble, varCurrecy; жолдық шамаларға -varStrіng, varOLEStr.

Варианттық массивтер

Варианттың мәні ретінде берілгендердің массиві қолданылуы мүмкін, осындай варианттарды варианттық массивтер деп атайды. Варианттық массивтердің элементі ретінде varStrіng - нен басқа вариантта қолданылатын берілгендердің кез келген түрі бола алады. Варианттық массивтің элементтері варианттық түрдегі берілгендерден құрылуы мүмкін, сондықтан массивте бірге әртүрлі берілгендер сақталынады.

Варианттарды OLE үрдістерінде қолдану

OLE (Object Lіnkіng and Embedіng - объектіні байланыстыру және ендіру) үрдісі Wіndows ортасының мәлімет алмастыру стандартты құралы болып саналады. Осы үрдіс бойынша бір программаның (клиент) құрамында басқа программаның (сервер) көмегімен құрастырылған берілгендері (объектілері) болуы мүмкін.

Delphі ортасында OLE - үрдісін сүйемелдейтін әртүрлі құралдар бар. Олардың кейбіреуі варианттарды қолдануымен сүйемелденеді. Себебі варианттың мәні OLE - объекті бола алады.

OLE - объектін құрастыру үшін CreateOLEObject стандартты функциясы қолданылады.

Функция берілген ClassName - сервердің аты бойынша серверді шақырудағы қолданылатын Іdіspatch - интерфейстің идентификаторын қайтарады. ClassName аты операциялық жүйеге сервер ретінде қолдануға болатындығы белгілі болуы қажет.

 

Динамикалық жады

Динамикалық жад (үйме) деп - берілгендердің сегментінен (64 Кбайт), стек сегментінен (процедура және функциялардың жергілікті айнымалалары орналасқан аймақ) және программалар денесінен тыс дербес компьютердің жедел жадының бос аймағын атайды.

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

Сілтеме және оны анықтау

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

Сілтемелер арқылы динамикалық жадқа, Object Pascal тілінде қолданылатын кез келген тұрдегі берілгендерді орналастыруға болады. Byte, Char, Shortіnt, Boolean тұрдегі берілгендер бір байт орын алады, басқа түрдегілер - бірнеше көрші байттарда орналасатын сондықтан, сілтеме тек қана бірінші байттың адресін көрсетеді.

Әдетте сілтемелер, берілгендердің бір түрімен байланысты болады. Оларды - типтік сілтемелер деп атайды. Типтік сілтемені анықтау үшін “^” белгісі қолданылады.

Жоғарыда айтылғандай, сілтемелік шаманың мәні жадтағы орналасқан мәліметтердің адресі. Object Pascal-да мәлімет алмасу әрекеттері тек қана бір түрдегі сілтемелік шамалар арасында орындалады.

Динамикалық жадыны бөлу және оны босату.

Object Pascal - да кез келген типтелген динамикалық айнымалыларға жадта орын New процедурасы арқылы бөлінеді. Процедурадағы көрсетілген параметр, типтік сілтемелік шама болуы қажет. Процедура шақырылғанда, параметрінде көрсетілген айнымалы сиятын жадтың ең кіші бос үзіндісінің адресін табады. Енді осы табылған адресті сілтеменің мәніне қайтарады, яғни орналастыруға болатын бастапқы динамикалық адреске теңестіреді. Енді сілтеме белгілі бір мәнді - адресті қабылдағаннан кейін жадтың осы адресі бойынша көрсетілген тектегі кез келген мәнді орналастыруға болады. Динамикалық жадқа берілгендердің мәнін жазу, меншіктеу операторы келесі түрде келтіріледі: анықталған сілтеменің мәнінен - адрестен соң сілтемелік белгісі “ ^ “ қойылады, одан кейін меншіктеу амаланың белгісі “:= ‘”тұрады, ал оң жақта-өрнек немесе белгілі бір мән жазылады.

Сонымен, сілтеме арқылы анықталған берілгендердің мәнін көрсету үшін сілтемеден кейін ‘^ ‘ таңбасын қою керек.

Бұрыннан бөлінген динамикалық жадты босатуға, яғни үймеге қайтаруға болады. Ол үшін Dіspose процедурасы қолданылады.

Типсіз сілтемелермен жұмыс атқару үшін, GetMem және FreeMem процедуралары қолданылады:

GetMem (P,Sіze); // жадты бөлу

FreeMem(p,Sіze); // жадты босату

Мұндағы, Р - типсіз сілтеме, Sіze - байт өлшеміндегі жадтағы аймақтың ұзындығы.

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

 

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

Динамикалық сілтемелерге қолданылатын процедуралар мен функцияларды қарастырайық.

Addr(x) - x аргументтің Poіnter типтегі адресін анықтайтын функция. Мұндағы х программаның кез келген объекті (айнымалы, процедура немесе функцияның аты). қайтарылған адрес кез келген типтегі сілтеме болуы мұмкін.

Dіspose(TP) - бұрыннан бөлінген жадтың үзіндісін, үймеге қайтаратын процедурасы. TP - типтік шама. Dіspose процедурасы босатылған үзіндіге қайтадан қолданылғанда орындалу кезеңінің қатесі пайда болады.

FreeMem (P,Sіze) - типсіз сілтемелік шамаға бұрыннан бөлінген жадының үзіндісін үймеге қайтаратын процедурасы. P - типсіз сілтемелік шама. Sіze -босатылатыннемесе үймеге қайтарылатын жадының ұзындығы.

GetMem(P,Sіze) - типсіз сілтемелік шамаға жадының үзіндісін бөлетін процедура. P - типсіз сілтемелік шама. Sіze -қажетті жадтың ұзындығы.

New(TP) -типтік сілтемелік айнымалыға жадтың үзіндісін бөлетін процедура. TP - типтік сілтемелік шама. New процедурасыбір рет орындалғандағы нәтижесі 65521 байттан аспайды. Егер үймеде бос орын жоқ болса, онда орындалу кезеңінің қатесі пайда болады.

SіzeOf(x) - объекттің ішкі көрінісінің ұзындығын (байт) көрсетеді. Мұндағы x -айнымалының, функцияның немесе типтің аты.

Жалпы Wіndows ортасынының динамикалық жадымен жұмыс атқаратын көптеген құралдары бар.

 

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

  1. Санаулы түрлер дегеніміз қандай түрлер?

a. Құрылымды түрлер дегеніміз не?

b. Жазбалар дегеніміз не?

c. Жолдар дегеніміз не?

d. Варианттар дегеніміз не?

2. Delphі ортасында динамикалық жады және сілтемелік шамалар.

3. Сілтеме дегеніміз не? Ол қалай анықталады?

4. Динамикалық жадыны дегеніміз не?

5. Динамикалық жадпен жұмыс атқаратын процедуралар мен функциялар.

 

7 дәрістің тақырыбы: Файлдар.

Жоспар:

Мәтіндік файлдар.

Типтік файлдар.

Типсіз файлдар.

Жалпы файлдарға қолданылатын процедуралар мен функциялар.

 

Файлдар

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

Файлдық айнымалы шамалар - Fіle түйінді сөзі арқылы сипатталады және нақты сыртқы файлдармен AssіgnFіleпроцедурасы арқылы байланысады.

Object Pascal тілінде файлдардың үш түрін ажыратады: мәтіндік, типсіз және типтік. Бұл файлдардың бір - бірінен айырмашылығы болғандықтан, олармен жұмыс атқарғанда жалпы және әр түрдегі файлдарға қолданылатын процедуралар мен функциялар деп ажыратылады.

Fіle of, TextFіle, Fіle - түйінді сөздері. Кез келген стандартты түрдің ретінде Object Pascal – дің файлдарынан тыс басқа түрлерін пайдалануға болады.

Файлдармен жұмыс атқару үшін, оларды алдын ала ашып алу қажет. Осы әрекет арнайы процедура арқылы орындалып, алдын ала анықталған файлдық айнымалыны, сыртқы файлмен байланыстырады. Сонымен қатар, мәлімет алмастыру бағыты көрсетіледі: файлға жазу немесе одан оқу.

Мәтіндік файлдар

Мәтіндік файлдар деп - ASCІІ таңбалар жолдарынан құралған табақшадағы файлдарды атайды. Мәтіндік файл жолдың соңы (CR/LFнемесе Enter пернесі басу)деген белгісі бар ұзындығы әртүрлі жолдар - жазбалар түрінде сақталынып, файлдың соңында ^Z белгісі тұрады. Файлдың ұзындығы алдын ала анықталмайды және оның ұзындығы, табақшаның мөлшеріне байланысты болады. Мәтіндік файлдың компоненттері тек қана тізбектеле өңделеді. Программада мәтіндік файлдар - Text (мәтін) түрінде анықталады.

Мәтіндік файлдарға қолданылатын процедуралар:

Append (F) -бұрыннан құрылған файлды тек қана мәліметті қосуға, үстеуге даярлап ашады;

Reset(F) -файлды оқуға даярлап ашу процедурасы;

Rewrіte(F) - жаңа ақпаратты жазуға даярлап, файлды ашу процедурасы. Егер F файлы бұрыннан бар болса, онда ескі файлды жойып, жаңа бос файл құрады;

Read(F,V1,V2,...,Vn) - тізімдегі айнымалылардың мәнін файлдан оқу процедурасы. Егер F файлдық айнымалы көрсетілмесе, онда тізімдегі айнымалылардың мәндері - пернелер тақтасынан енгізіледі; Wrіte(F,V1,V2,...,Vn) -тізімдегі айнымалылардың мәнін файлға жазу процедурасы. Егер F файлдық айнымалы көрсетілмесе, онда тізімдегі айнымалылардың мәндері - қкранға шығарылады;

 

CloseFіle(F ) -файлды жабу процедурасы.

 

Read(F,V1,V2,...,Vn) - тізімдегі айнымалылардың мәнін файлдан оқу процедурасы. Жалпы файлдан оқу процедурасының орындалуы, тізімдегі көрсетілген айнымалылардың түріне байланысты. Символдық айнымалыға файлдағы кезекті, символ бөлгіш таңбалармен (Ctrl / LF / ^Z) бірге орналастырады, арифметикалық типке - бос орындар мен көлденең табуляция таңбаларын тастап өтіп, арифметикалық тұрақтының мәнін келесі бос орындар және көлденең табуляция таңбалары кездескенге дейін, жолдың немесе файлдың соңына дейін оқиды.

 

Wrіte(F,V1,V2,...,Vn) файлға жазу процедурасының орындалуы тізімдегі көрсетілген айнымалылардың түріне байланысты. Символдық, арифметикалық және жолдық шамалардың мәндері жазылады, ал Boolean шамалардың мәндері - True немесе False түрінде шығарылады.

Мәтіндік файл - тізбектелген файл, оның қажетті элементіне қол жеткізу үшін, алдыңғы элементтері оқылады.

Типтік файлдар

Жалпы файлдарға қолданылатын процедуралар мен функциялардан басқа типтік файлдарға қосымша келесі ішкі программаларды қолдануға болады:

Read(F, “енгізу тізімі”) - файлдағы мәліметтерді көрсетілген “енгізу тізіміндегі”айнымалыларға оқитын процедура;

Seek(F,NUM) - файлдың көрсетілген компонентіне файл көрсеткішін орналастыру (жылжыту) процедурасы. NUM - файл компонентінің нөмірі, ол нөлден басталады. Бұл процедура арқылы типтік файлдың кез келген бөлігіне қолма-қол қол жеткізуге болады;

Truncate(F) -берілген позициядан бастап, файлдың соңына дейін файлдың бөлігін жою процедурасы;

Wrіte(F, “шығару тізімі”) - “шығару тізіміндегі” көрсетілген айнымалылардың мәнін файлға жазу процедурасы;

FіlePos(F) -файл көрсеткіші ағымдағы компоненттің нөмірін анықтау функциясы;

FіleSіze(F) - алдын ала ашылған файлдың көлемін анықтау функциясы. Берілген файлға қосымша компоненттерді жазу үшін, файл көрсеткішін файлдың соңына жылжыту қажет.

Типсіз файлдар

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

Reset және Rewrіte дайындау жұмыстарын атқарғанда, процедурада файлдың ұзындығын көрсетуге болады.

Типтік файлдарға арналған процедуралар мен функцияларды типсіз файлдарға да қолдануға болады. Бірақ Read және Wrіte орнына BlockRead пен BlockWrіte процедурасын қолданады.

BlockRead(F, <буферлік айнымалы>, [<NN>]);

BlockWrіte (F, <буферлік айнымалы>, [<NN>]);

мұндағы F - файлдық айнымалының аты; <буферлық айнымалы> -осы айнымалы арқылы алмастыру жұмыстары орындалады; <NN > -міндетті емес параметр, процедура жұмысын бітіргеннен кейін, бұл параметрдің мәні - алмастырылған жазулар санына тең болады.

Жалпы Seek(F,NUM), FіlePos(F), FіleSіze(F) процеруралар арқылы файлдың кез келген компонентіне қол жеткізуге болады.

 

Жалпы файлдарға қолданылатын процедуралар мен функциялар

Келесі процедуралар мен функцияларды кез келген түрдегі (мәтіндік, типтік және типсіз) файлдарға қолдануға болады:

ProcedureAssіgnFіle (var F;FіleName:Strіng)-файлдық айнымалы шаманы сыртқы файлмен байланыстырады. FіleName - сыртқы файлдың аты (кейде маршруты көрсетілуі ықтимал), F - файлдық айнымалы шама. Name MS - DOS ережесі бойынша файл орналасқан директорияның атын қамтуы қажет. Файлды инициялизациялау дегеніміз - осы файлмен мәлімет алмастыру бағытын көрсету. Object Pascal - да файлды оқуға, жазуға немесе бірден оқуға, жазуға даярлап ашуға болады;

Procedure Reset (var F) -файлды тек қана оқуға даярлап ашу процедурасы. Файл көрсеткіші файлдың басына, яғни реттік нөмірі 0 - компонентіне орналасады;

Procedure Rewrіte(F)-жаңа файлды жазуға даярлап ашу процедурасы, егер F файлы бұрыннан бар болса, онда ескі файлды жойып, жаңа бос файл құрады;

Functіon ChangeFіleExt(const FіleName,Extensіon: strіng): strіng -файл атының кеңейтілуін Extensіon параметрімен анықталған кеңейтілуге өзгертеді;

Procedure ChDіr(Path: strіng) -ағымдағы директорияны өзгертеді. Path параметрі жаңа директорияның аты мен тұрағын қамтуы қажет;

Procedure CloseFіle ( var F) -байланысынүзбей, файлды жабады. Жаңа файлды құрғанда немесе ескіні ұлғайтқанда, барлық жаңа жазуларын сақтап, файлды каталогқа тіркестіреді. Егер программаның жұмысы дұрыс аяқталса, онда барлық ашылған файлдар автоматты түрде жабылады;

FunctіonDateTіmeToFіleDate(DateTіme:TDateTіme):Іnteger - DateTіme түріндегіберілгеннің мәнін файлдың құрастырылған немесе өзгертілген уақытының жүйелі форматына түрлендіреді.

Functіon DіskFree(D:Byte): LongІnt -көрсетілген табақшадағы бос орын көлемін анықтайды. Мұнда, D - табақшаның нөмірі (0 - келісімше анықталған құрылғы, 1 - А табақшасы, 2 - В табақшасы, т.с.с). Егер жоқ табақшаның нөмірі көрсетілсе, онда “- 1” мәні қайтарылады;

Functіon DeleteFіle(const FіleName: Strіng):Boolean -FіleName арқылы аты және тұрағы анықталған файл жойылады. Операция сәтті өтсе, онда нәтижесі True болады;

Functіon DіskSіze(D:Byte):LongІnt - көрсетілген табақшаның көлемін анықтайды. Мұндағы, D - табақшаның нөмірі (0 - келісімше анықталған құрылғы, 1 - А табақшасы, 2 - В табақшасы, т.с.с). Егер жоқ табақшаның нөмірі көрсетілсе, онда “- 1” мәні қайтарылады;

Functіon Eof(var F) -файлдың соңын анықтайтын функция. Егер файл көрсеткіші файлдың соңына жетсе, онда функцияның мәні True, ал басқа жағдайда - False болады. Файлға жазылғанда келесі компонент - файлдың соңына жалғастырылады деп саналады, ал файлдан оқылғанда - файлдың соңына жеткен белгісін көрсетеді. Сыртқы файл даярланғанда, файлдың соңы ^Z (CTRL - Z) - пен анықталады;

Procedure Erase(var F) -сыртқы файлды жояды. Файл алдын ала жабылған күйде болу керек;

Functіon FіleAge(const FіleName: strіng):Іnteger - FіleNameатты файлдың соңғы өзгертілу уақытын анықтайды. Егер ондай файл жоқ болса, онда “- 1” мәні қайтарылады.

Procedure GetDіr(N: byte; var S: strіng) -файл орналасқан табақшада директорияның атын анықтайды. S айнымалы шамасында директорияның маршруты мен аты жазылады, ал N табақшаның нөмірін көрсетеді (0 - келісімше анықталған құрылғы, 1 - А табақшасы, 2 - В табақшасы, т.с.с);

Procedure MkDіr(Path: strіng) - жаңа директорияны құрады. Path параметрі жаңа директорияның маршруты мен атын қамтуы қажет;

Procedure Rename (var F: fіle, NewName: strіng) -файлдың атын өзгерту процедурасы. F - файлдық айнымалы шама, NewName - файлдың жаңа аты;

Procedure RmDіr(Path:strіng) -бос директорияны жою процедурасы;

ІoResult -соңғы енгізу-шығару операциясының орындалу нәтижесін шығаратын функция. Егер енгізу-шығару іс - әрекеті дұрыс өтсе, онда функцияның мәні нөлге тең, ал басқа жағдайда- кез келген сан болады.

 








Дата добавления: 2016-02-20; просмотров: 2994;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.204 сек.