Главная / Информатика / DELPHI визуалды программалау жүйесі

DELPHI визуалды программалау жүйесі

hello_html_3e437e97.gifБексарыұлы Мұратбек










DELPHI ВИЗУАЛДЫ

БАҒДАРЛАМАЛАУ

ЖҮЙЕСІ



әдістемелік оқу құралы











2013 жыл


Қызылорда облысы бойынша педагогикалық қызметкерлердің біліктілігін арттыру институты Ғылыми Кеңесінің 2012 жылғы 26 желтоқсандағы шешімімен (№ 4 хаттама) мақұлданып, облыс мектептерінде пайдалану үшін таратылуға ұсынылған.


Дайындаған:

Бексарыұлы Мұратбек – жоғары санатты информатика пәні мұғалімі.


Пікір жазғандар:

С.С.Үсенов – педагогика ғылымдарының докторы, академиялық профессор, Қорқыт Ата Қызылорда мемлекеттік университеті, «Информатика» кафедрасының меңгерушісі.

О.А.Орманов – «Өрлеу» біліктілікті арттыру ұлттық орталығы АҚ филиалының Қызылорда облысы бойынша педагогикалық қызметкерлердің біліктілігін арттыру институтының аға оқытушысы.



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

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

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








Мазмұны


Автордан .........................................................................................4

I. Delphi визуалды бағдарламалау жүйесі. Кіріспе .....................5

1. Delphi-дің басты терезелері ...................................................5

2. Delphi компоненттері палитрасының беттері ......................9

3. Delphi компоненттері – визуалды жобалаудың негізі ........17

4. Delphi оқиғалары ....................................................................20

5. Delphi тілі. Айнымалылар, тұрақтылар және

олардың типтері ......................................................................22

6. Мәліметтердің өздік және құрылымдық типтері .................26

7. Өрнектер және операторлар ..................................................32

8. Файлдармен жұмыс істеуге арналған компоненттер ..........37

9. Файлдармен тікелей жұмыс ..................................................40

10. Файлдарды ашудың және сақтаудың диалогтары .............45

11. Қосымша пішіндермен жұмыс ............................................48

12. Ішкі бағдарламаларды құру және оларды қолдану ...........53

13. Delphi-дегі ерекше жағдайлар .............................................57

14. Delphi-дегі жолмен жұмыс ..................................................58


II. Бағдарлама құрып үйрену. Практикалық жұмыстар .............63

1 «Менің алғашқы бағдарламам» ..........................................63

2 Консольдық қолданба құру ................................................65

3 «Сәлемдесу» .................................... ....................................67

4 Пішіннің тақырыбын өзгерту .............................................69

5 «Қозғалмалы батырма» .......................................................72

6 «Альбом» ..............................................................................74

7 Мәзірмен жұмыс ..................................................................77

8 Сөйлем құраушы ..................................................................82

9 Көбейту кестесі ....................................................................85

10 Фигураларды қозғалту .......................................................89

11 Пайызды есептеу ................................................................93

12 Ллойд басқатырғышы ........................................................95

13 Калькулятор ........................................................................98

14 Жиымдағы кездейсоқ сандардың индексін табу ............102

15 Уақыт есептеуіш ................................................................105

16 Оятқыш сағат .....................................................................107

17 Олимпиада жалауы ............................................................110

18 Функция графигін салу .....................................................111

Мазмұны


19 Еске сақтау тесті ................................................................116

20 Электр тізбегінің кедергісін табу ....................................120

21 Ом заңы ..............................................................................123

22 Спортсменнің жүгіру жылдамдығын есептеу ................128

23 Файл іздеу ..........................................................................132

24 Файлға жазба қосу ............................................................136

25 Файлдан оқу .......................................................................138

26 Жұлдыздар .........................................................................140

27 Мәліметті басып шығару ..................................................142

28 Тир ......................................................................................146



























Автордан


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


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

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


Бүгінгі жаңа техникалар мен технологиялардың сәт сайын даму үрдісіне шыдас беріп, оларды үйренуден қалыс қалмау үшін мемлекеттік тілде информатика ілімінің іргетасы – бағдарламалау негіздерін оқытуға қажетті оқу-әдістемелік құралдарды әзірлеуге баса көңіл бөлінгені жөн деп есептеймін. Міне осы мақсатты көздеп, оқушылар назарына соңғы кезде көп қолданылып жүрген – Delphi визуалды бағдарламалау жүйесі туралы жазылған еңбегімді ұсынып отырмын.


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


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


I.Delphi визуалды бағдарламалау жүйесі

Кіріспе.

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


Бағдарламалаудың жалпы модульдік, обьектілі-бағдарланған және құрылымдық сияқты негізгі әдістері бар. Ол әдістердің ішінен обьектілі-бағдарланған түріне тоқталайық. Бұл әдіс обьектілі-бағдарланған визуалды бағдарламалау тіліне негізделген. Мұндай бағдарламалау тілдеріне: Smalltalk, C++, Actor, Iava және басқалар жатады. Соңғы жылдары дайындалған бағдарламалар осы визуалды бағдарламалау тәрізді жүзеге асырылады.


Визуалды бағдарламалау ортасын пайдаланудың басты ерекшелігі, ол бағдарламалық жобаны құру болып табылады.

Ондай жүйе қатарына: Visual Basic, Delphi, C++ Builder, Visual C++ және тағы басқалар енеді.

Осы жүйелер ішінен бағдарламалаушылар арасында жиі қолданылып жүрген Delphi визуалды бағдарламалау жүйесінің 7.0 версиясын қарастыруға кірісейік.


1. Delphi – дің басты терезелері.


Delphi бағдарламасын жүктейік. Сонда экраннан оның төмендегі 4 терезесі көрінеді.

Осылардың тұтас созылып жатқаны – бас терезе. Сол жақтағысы – обьектілер терезесі. Ол терезеде осы бағдарламаны құрайтын компоненттердің қасиеттері беріледі. Ортасында бірінің үстіне бірі орналасқан екі терезе – болашақ бағдарламаның Пішіні/формасы/ және бағдарламасы бар терезе тұр. Пішін терезесі енді дайындалатын бағдарламаның визуалды көрінісі болып табылады.

Дельфи-де бағдарлама дайындау үшін мына әрекеттерді орындау жеткілікті:

  1. Бас терезедегі үшбұрышты жасыл бағдаршаға маус нұсқағышын қойыңыз;

hello_html_3cbb4592.png


  1. Сол кезде Run(F9) көмексөзі көрінеді;

  2. Осы батырманы басамыз (немесе F9 пернесін) ;

  3. Міне дайын бағдарлама алдық.


Бағдарлама әдетте, C:\Program Files\Borland\Delphi7\ Projects бумасында құрылады.


hello_html_4ff647f8.png


Осы орыннан оны қажет орынға көшіруге болады. Жұмыс істеуге қолайлы болуы үшін оның жарлығын жұмыс столына орналастырған ыңғайлы. Әзірше бос терезеден тұратын бағдарлама құрылды. Дегенмен онда Windows-тың барлық бағдарламасына тән: тақырып жолы, жүйелік меню, жиыру, жаймалау, жабу батырмалары сияқты атрибуттар бар және бұл терезенің өлшемдерін өзгертуге болады. Пішін-бағдарламаны жабайық.

Осы пішіннің пайдалы қасиеттерін қарастырайық:

  1. Caption – тақырыптағы жазудың қасиетін анықтайды. Бізде бұл Form1 пішіні, ол Name қасиетімен сәйкес келеді. Обьектілер инспекторы арқылы ол қасиетті қалауымызша ауыстыруға болады. Caption қасиетіне «Алғашқы бағдарлама» деп жазайық.

  2. Color – түсті білдіреді.

  3. Width және Height – терезенің пикселмен берілген ені мен биіктігін білдіреді. Маус арқылы Пішіннің жиектерін қозғап, өзгертуге болады. Ал оның нақты өлшемін обьектілер инспекторы арқылы атқарған қолайлы.

  4. Пішіннің экрандағы орны – Top және Left қасиеттері арқылы беріледі. Олар пішіннің экранның сол жақ және жоғарғы шекарасынан қашықтығын білдіреді. Егер Пішіннің қажетті өлшемі Delphi-дің басқару элементтерін жауып тастаса, онда жинай салыңыз.

  5. Position қасиеті арқылы Пішіннің қажетті орынға автоматты түрде орналасуын реттеудің мынадай мүмкіндіктері бар:

- poDesigned мәнінде Пішін бағдарлама жобалаушы-сының

белгілеген орнынан көрінеді, ол үнсіз келісім бойынша

қойылған мән.

- poDesktopCenter және poScreenCenter мәндерінде Пішін

экранның немесе жұмыс столының ортасында

орналасады.

- poMainFormCenter мәні бойынша Пішін бас терезенің

ортасында көрінеді.

- poOwnerFormCenter мәні арқылы Пішін шақырылған

терезенің ортасынан пайда болады.

  1. Сіз Пішіннің қалыпты түрде не ең кіші немесе ең үлкен өлшемде көрінуін оның WindowsState қасиетінің – wsNormal, wsMinimized, wsMaximized сәйкес мәндері бойынша бағдарламалауыңызға болады. Барлық терезенің тақырыбында жиыру, жаймалау және жабу батырмалары бола бермейді.

  2. Олардың болу не болмауын BorderIcons қасиеті арқылы басқарады. Ол үшін обьектілер инспекторының сол жағында hello_html_1d342782.png таңбасын ашатын – True, оны жабатын – False мәндері бар. Ал Пішіннің biSystemMenu=False мәнінде терезені ALT+F4 батырмаларының көмегімен жабу қажет.

  3. Пішіннің шекараларын басқару қызметін BorderStyle қасиеті атқарады. Оның:

- bsSizeable мәні – Пішіннің қалыпты түрін анықтайды;

- bsNone мәнінде Пішіннің шекарасы болмайды(тақырып

жолы да);

- bsSingle мәнінде Пішіннің шекарасы өзгере алмайды,

бірақ оны жиырып, жабуға болады.


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

Енді жобамызды сақтаудың жайын қарастырайық. Егер біз жобаны алдынала File –» Save All (немесе тиісті батырмалар арқылы) меню командалары бойынша арнайы дайындалған бумада сақтамасақ онда олар өздері бірден С:\Program Files\Borland\Delphi7\Projects дискісіндегі орнына барып түседі де, бәрі былығып кететін болады. Міне осыны ескере отырып, әуел бастан ашылған терезеде жаңа бума құрған жөн. Жоба негізінен Project1 аты бар файлда сақталады. Пішін оның жұмысын сипаттайтын- модульмен бірге жұмыс істейді. Егер жобада модулдер бірнешеу болса, онда Delphi олардың әрқайсысы үшін жеке файлдар құрып, оларды Unit1, Unit2 және т.с.с. атпен сақтауды ұсынады. Мұнда жоба файлы үшін де, модулдер файлы үшін де өзіңнің ойластырған атыңды қойғаның жөн. Сонымен әрбір жаңа жобаны бірден сақтауды есіңізден шығармаңыз!Форма с постоянными размерами

Сонан соң File –» Close All командасын орындайық. Файлды Open… командасының көмегімен ашып көрейік. Мұнда модуль біздің Пішінмен бірге ашылады, енді жұмыс жасауға кірісуге болады, бірақ бағдарламаны іске қосу батырмасы екпінді болмайды. Сондықтан алдымен жобаның файлын ашу керек. Ол үшін арнаулы меню командалары: File –» Open Project.. (Ctrl+F11) және іске қосу батырмасының нақ үстінде тиісті батырма бар. Енді таңдау терезесінде бір ғана файл, жоба файлы тұрады. Оны ашқанда бастапқы модуль де, бастапқы жоба Пішіні де ашылады. Ал егер жобада бірнеше Пішін болса, онда оларды Open… арқылы ашады. Сол сияқты басқа жобалардың модульдерін де, мыс, олардың кодтарын көшіру үшін ашуға болады.


Мына нәрсе назарыңызда болғаны дұрыс!

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


2. Delphi компоненттері палитрасының беттері.

hello_html_5126e60b.png

Delphi-дің өңдеу ортасы, ең алдымен Windows-та бағдарламалар дайындауға бағдарланған. Мұнда кодтарды қолмен жазудан құтқаратын Delphi-дің дайын компоненттерінің үлкен жиынтығының көмегімен визуалды қолданбалар жасау мүмкіндігіне көп көңіл бөлінеді. Бұл компоненттер қазіргі заманғы технологияларды қолданудың барлық саласын қамтиды. Мұнда да басқа бағдарламалау ортасындағыдай, мыс, Visual Basic т.с.сияқты кезкелген қолданбаны дайындауда қажет етілетін басты компоненттерді оқып-уйрену қажет. Компоненттер палитрасы 4 беттен тұрады, олар: Standard, Additional, Win32, System беттері. Алдымен осы беттердің мазмұнымен және олардың басты қызметімен танысайық.


Standard беті.

Delphi-ді оқып-үйрену негізінен осы компоненттер палитрасы бетінен басталады. Бұл бетте Windows –тың : басты және қалқыма-лы менюлері, батырмалары, бір жолдық және көп жолдық редак-торлары, ауыстырып қосқыштары, белгілері, тізімдері және одан да басқа жиі қолданылатын компоненттері сияқты стандартты интерфейстік элементтері орналасқан.

Енді осы бетте қамтылған компоненттердің қызметтеріне жеке-жеке тоқталайық.


Пикто-
грамма

Компонент

аты

Компоненттің атқаратын қызметі

Delphi компонент MainMenu

MainMenu

Бағдарламаның бас менюі. Компонент күрделң иерархиялық менюлерді құруға және оларды іске қосуға мүмкіндік береді.

Delphi компонент PopupMenu

PopupMenu

Қалқымалы меню. Ол әдетте маустың оң жақ батырмасын басқанда пайда болады.

Delphi компонент Label

Label

Белгі. Бұл статикалық мәтін түріндегі қысқа хабарламаларды орналастыру үшін қолданылады.

Delphi компонент Edit

Edit

Енгізу жолы. Ол пайдаланушының бір жолдық мәтіндік ақпаратты енгізуіне арналған.

Delphi компонент Memo

Memo

Көп жолдық мәтіндік редактор. Ол пайдаланушының пішімдеу мүмкіндігі жоқ көп жолдық мәтінді енгізіп, оны бейнелеуі үшін пайдаланылады.

Delphi компонент Button

Button

Командалық батырма. Бағдарламада осы компоненттің onclick оқиғасы өңдеушісінің көмегімен команданы жүзеге асыру үшін қолданады.

Delphi компонент CheckBox

CheckBox

Тәуелсіз ауыстырып қосқыш. Оның маусты шерткенде ауысып отыратын true және false мәндері бар Checked (белгіленген) қасиеті пайдаланылады.

Delphi компонент RadioButton

RadioButton

Тәуелді ауыстырып қосқыш. Ол бірнеше нұсқадан біреуін ғана таңдау үшін қолданылады. Сол мақсатта компонент кем дегенде бір немесе бірнеше сондай компоненттермен бір топқа бірігеді. Компонентті шерткенде ол ерекшеленеді және бұрын таңдалған ерекшелеу алынып тасталады. Мұның да Checked қасиеті бар.

Delphi компонент ListBox

ListBox

Таңдау тізімі. Ұсынылған нұсқалар(опциялар) тізімінен тұрады және ағымдағы таңдауды бақылауға мүмкіндік береді.

Delphi компонент ComboBox

ComboBox

Таңдаудың аралас тізімі. Edit пен ListBox компоненттерін бірге пайдалануды қарастырады.

Delphi компонент ScrollBar

ScrollBar

Айналдыру жолақтары. Ол бағдарлама терезесіне тұтасынан симаған бөліктерін қарауға арналған басқарушы компоненттердің тік және көлденең жолақтарынан тұрады.

Delphi компонент GroupBox

GroupBox

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

Delphi компонент RadioGroup

RadioGroup

Тәуелді ауыстырып қосқыштар тобы. Оның өзара байланысқан бірнеше тәуелді ауыстырып қосқыштарды іске қосуға арналған қасиеттері бар.

Delphi компонент Panel

Panel

Панель/Тақта. Бұл GroupBox сияқты бірнеше компоненттерді біріктіруге арналған. Оның ішкі және сыртқы жиектері арқылы «батырылып» не «көтеріліп» тұрғандығын бейнелеу мүмкіндіктері болады.

Delphi компонент ActionList

ActionList

Әрекеттер тізімі. Пайдаланушының бір типтес: меню, батырмалар және т.с.сияқты басқарушы элементтер тобының біреуін таңдауымен байланысты әрекетіне бағдарламаның бір орталықтан жауап беру қызметін атқарады.


Additional беті.

Бұл бетте Windows – та бағдарлама дайындауға өте қажет: қосалқы қасиеттері бар батырмалар, кестелер, кескіндерді орналастыруға арналған компоненттері және т.б.бар қосымша компоненттер орналастырылған.

Енді осы бетте қамтылған компоненттердің қызметтеріне жеке-жеке тоқталайық.


Пикто-
грамма

Компонент

аты

Компоненттің атқаратын қызметі

Delphi компонент BitBtn

BitBtn

Командалық батырма. Стандартты Button батырмасынан айырмашылығы, мұнда пиктограмманы бейнелеу мүмкіндігі бар.

Delphi компонент SpeedButton

SpedButton

Пиктографиялық батырма. Бас менюдің опцияларына тез қатынас жасау үшін қолданылады.

Delphi компонент StringGrid

StringGrid

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

Delphi компонент DrawGrid

DrawGrid

Кескіндер кестесі. Бұл компонент кескінді кесте түрінде бейнелеу үшін қолданылады.


Image

Сурет. Кескінді, оның ішінде пиктограммалар мен метафайлдарды бейнелеуге арналған компонент.

Delphi компонент Shape

Shape

Фигура. Осы компонент көмегімен Пішінге фигуралар: тіктөртбұрышты, эллипсті, дөңгелекті кірістіруге болады.

Delphi компонент Bevel

Bevel

Жиек. Пішіннің жекелеген бөліктерін үш өлшемді қоршаумен және жолақтармен ерекшелеу қызметін атқарады.

Delphi компонент ScrollBox

ScrollBox

Айналдыру жолақтары бар тақта. Мұның тақтадан айырмашылығы сол, егер онда орналасқан компоненттер оның шекараларымен қиып алынса, оған айналдыру жолақтары автоматты түрде кірістіріледі.

Delphi компонент CheckListBox

CheckListBox

Көп түрлі таңдау тізімі. Мұның стандартты ListBox компонентінен айырмашылығы, әрбір опция жанында бірнеше опцияны бірден таңдауды жеңілдететін тәуелсіз CheckBox типті ауыстырып қосқыштың бар болуында.

Delphi компонент Splitter

Splitter

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

Delphi компонент StaticText

StaticText

Статикалық мәтін. Мұның стандартты Label компонентінен айырмасы, мәтінді қоршауға алуға немесе оны Пішіннің «батырылған» бөлігі түрінде ерекшелеуге мүмкіндік беретін жеке Windows – терезесінің болуында.

Delphi компонент Chart

Chart

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


Win32 беті.

Осы бет 32 разрядты Windows – тың 95/98/NT ОЖ арналған интерфейс элементтерін жұмыс істетін компоненттерді қамтиды. Бұл компоненттер Windows – тың соңғы версияларының стилистикасымен үйлеседі.

Енді осы бетте қамтылған компоненттердің қызметтеріне жеке-жеке тоқталайық.


Пикто-
грамма

Компонент

аты

Компоненттің атқаратын қызметі

Delphi компонент TabControl

TabControl

Астарлар жиынтығы. Әр астар жазбасы және/немесе мәтіні бар өріс түрінде болады. Мұнда астарларды таңдау бағдарлама арқылы танылады және ол компонент терезесіндегілерді басқару үшін қолданылады.

Delphi компонент PageControl

PageControl

Астарлары бар тақталар жиынтығы. Әр тақтаның өз интерфейс элементтерінің жиынтығы болады және ол онымен байланысты астарды шерту арқылы таңдалады.

Delphi компонент ImageList

ImageList

Суреттер жиынтығы. Мұны бірдей өлшемді бірнеше суреттерді сақтауға араналған қойма деп қарауға болады.

Delphi компонент RichEdit

RichEdit

Пішімделген мәтіннің көпжолдық редакторы. Оның Memo компонентінен айырмашылығы, бұл мәтіннің қаріп, түс, туралау және т.б. (RTF пішімі) сипаттамаларын өзгерте алады.

Delphi компонент TrackBar

TrackBar

Реттегіш. Бағдарламадағы кейбір шамалардың мәндерін басқару үшін қолданады. Мыс, осының көмегімен мультимедиалық құрылғылардың дыбысын өзгерту ыңғайлы.

Delphi компонент ProgressBar

ProgressBar

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

Delphi компонент UpDown

UpDown

Цифрлық реттегіш. Бұл компоненттің екі батырмасы осы компонентпен байланысты сандық шамаларды арттыру немесе кеміту қызметін атқарады.

Delphi компонент HotKey

HotKey

Басқарушы перне. Компонент F1, CTRL+Shift және т.б. басқарушы кодтарды енгізуге арналған.

Delphi компонент Animate

Animate

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

Delphi компонент DateTimePicker

DateTimePicker

Уақыт/мерзім селекторы. Компонент уақытты немесе мерзімді енгізуге немесе оларды бейнелеуге арналған.

Delphi компонент MonthCalendar

MonthCalendar

Күнтізбе. Бұл күнтізбені бейнелеу және мерзімді немесе оның аралығын таңдау үшін қызмет етеді.

Delphi компонент TreeView

TreeView

Бұтақталған таңдау. Пиктограммалардың бұтақ тәріздес құрылымымен байланысқан жиынтығы болып табылады.Әдетте бұл каталог құрылымын және басқа соған ұқсас өзара иерархиялық түрде байланысқан элементтерді қарап шығуда пайдаланылады.

Delphi компонент ListView

ListView

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

Delphi компонент HeaderControl

HeaderControl

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

Delphi компонент StatusBar

StatusBar

Статус тақтасы. Редакциялау терезесінде түрлі қызметтік ақпараттарды орналастыруға арналған. Оған мыс, Word мәтіндік редакторы терезесі қоршауының төменгі бөлігінде орналасқан қалып-күй жолы жатады.

Delphi компонент ToolBar

ToolBar

Саймандар тақтасы. Бұл компонент BitBtn командалық батырмасы үшін контейнер қызметін атқарады және ол өз өлшемін оған батырмаларды қосқанда немесе оны жойғанда автоматты түрде өзгерте алады.

Delphi компонент CoolBar

CoolBar

Саймандар тақтасы. Мұның ToolBar –дан айырмашылығы, бұл Edit, ListBox, ComboBox және т.с.с. Windows –тың стандартты интерфейстік компоненттерін орналастыруға арналған контейнер ретінде пайдаланылады.

Delphi компонент PageScroller

PageScroller

Айналма тақта. Бұл енсіз саймандар тақтасын орналастыруға арналған. Қажет кезде тақта шетіне айналдыру жолақтарын құрады.


System беті.

Мұнда әр түрлі қызмет атқаруға арналған компоненттер (мыс, Timer – кезкелеген бағдарламадағы ең маңызды компонент), оның ішінде Windows – тың стандартты технологияларын қуаттайтын бағдарлама аралық деректер алмасуды ұйымдастыратын OLE және DDE компоненттері де берілген.

Енді осы бетте қамтылған компоненттердің қызметтеріне жеке-жеке тоқталайық.


Пикто-
грамма

Компонент

аты

Компоненттің атқаратын қызметі

Delphi компонент Timer

Timer

Таймер. Нақты уақыт интервалын есептеуге арналған компонент. Ол 55 миллисекунд – тен кіші аралықта өңдей алмайды.

Delphi компонент PaintBox

PaintBox

Суретке арналған терезе. Графикалық кескіндерді салуға арналған тікбұрышты аймақты құрады.

Delphi компонент MediaPlayer

MediaPlayer

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

Delphi компонент OleContainer

OleContainer

OLE-контейнер. Байланысқан немесе ендірілген обьектілерді қабылдаушы қызметін атқарады.

Delphi компонент DdeClientConv

DDEClientConv

DDE- байланыс. Бұл DDEClientItem –мен бірге DDE-байланыста клиенттік бағдарлама құру үшін пайдаланылады..

Delphi компонент DdeClientItem

DDEClientItem

DDE- тақырып. Клиенттік қолданбада DDE-байланыстың тақырыбын анықтайды.

Delphi компонент DdeServerConv

DDEServerConv

DDE- байланыс. Бұл DDEServerItem –мен бірге DDE-байланыста серверлік бағдарлама құру үшін пайдаланылады.

Delphi компонент DdeServerItem

DDEServerItem

DDE- тақырып. Серверлік қолданбада DDE-байланыстың тақырыбын анықтайды.



3. Delphi компоненттері – визуалды жобалаудың негізі.


Бос пішінді мазмұнды ететін – Delphi-дің компоненттері. Олар бас терезедегі палитра компоненттерінің тиісті астарларында орналасқан. Delphi-дің негізгі барлық компоненттері жоғарыда айтылған 4 астарда: Standard, Additional, Win32, System жатыр.

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

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

Ең алдымен, мәтінді бейнелеу компонентінен бастайық. Ол үшін жаңа жоба құрайық(File –» New –» Application), сосын Пішінге Label, Edit, Memo, Button компоненттерін тасымалдайық. Мауспен тиісті компоненттерді бір рет шерту немесе Tab пернесін басу арқылы Обьектілер инспекторындағы олардың қасиеттерін ашуға болады. Мәтінмен жұмыс істеуге арналған осы компоненттердің мынадай қасиеттері бар:

  • Width – компоненттің енін белгілейді;

  • Height – компоненттің биіктігін белгілейді;

  • Left – пішіннің сол жақ шетінен қашықтығын көрсетеді;

  • Top - пішіннің жоғарғы жақ шетінен қашықтығын көрсетеді.

Компоненттер Пішінге орнатылғаннан бастап, олардың қасиеті мәнге ие болады. Компоненттерді мауспен пішіндегі жобалаған орнына қойған соң, обьектілер инспекторы арқылы оның өлшемдері мен координаттарын нақтылауға болады. Осы әрекеттерді бағдарламалау арқылы да орындауға болатынын алда көретін боламыз. Бұл компоненттердің бейнелік көрінісін олардың мына қасиеттері ұйымдастырады:

Label Button үшін - Caption,

Edit үшін – Text,

Memo үшін – Lines.

Пішінді «құрастыру» кезінде компоненттердің осы қасиеттеріне кезкелген мәнді беруге болады, тіпті оған мән беру арқылы компонентті көрінбейтін ете аласыз. Жоғалған компонентті инспектордағы тізімін шерту арқылы оның қасиетін көрсеңіз, сол кезде ол пішінде белгіленіп тұрады.

Енді бағдарламаны іске қосып көрейік(ол үшін жасыл бағдаршаны не F9 –ды басыңыз). Сонда сіз компоненттердің, яғни Label – пішінде жазба не белгі жазуға, Button – батырма қызметін атқаруға, Edit – жол енгізуге, Memo – мәтіндік редактор ретінде жұмыс істеуге дайын екенін көресіз.

Қазір біз шағын бағдарлама жазып көрейік. Әуелі жаңа жоба ашайық (File –»New –» Application) . Енді мына әрекеттерді орындайық:

  1. Пішінге Edit(енгізу жолы) компонентін орналастырыңыз да, оның Text қасиетін тазалаңыз.

  2. Пішінге Button(батырма) компонентін орнатып, оның Caption қасиетіне, мыс: «бейнесін көрсет» деп жазыңыз.

  3. Пішінге Label – ді енгізіп, оның Font қасиетінен қаріп өлшемін(24) және түсін таңдаңыз. Оның Caption қасиетін тазалаңыз.

  4. Құрған батырманы екі рет шертіңіз.

Сонда бізге Delphi дайындаған батырманы басуға арналған модуль терезесі ашылады.

  1. Осы код терезесінде Label1 деп жазыңыз(нүктеден соң тоқтаңыз, сонда көмексөз көрінеді). Сонан соң «С» пернесін бассаңыз, сонда Caption жолы белгіленеді. Delphi біз не енгізер екен деп күтіп тұр. Әрі қарай ештеңе жазбай, Enter-ді басыңыз. Сонда Label1.Caption деген жазу шықты. Мұндағы нүкте обьекті мен оның қасиетін бір-бірінен ажыратып тұр. Обьектіні қалай атау керек? Әрине атымен. Ол обьектінің барлық компоненттері үшін бірдей – Name қасиетімен беріледі және бұл инспекторлар обьектісінде орналасқан. Әрі қарай:

  2. Label1 обьектісінің Caption қасиетіне мән меншіктейік. Ол үшін «:=» - меншіктеу операторын пайдаланамыз. Сонда «Label1.Caption:=» шығады, енді не жазатыныңды ойланайық...

  3. Әрине, мұнда Edit1- дің Text қасиеті : “Edit1.Text” мәнін қабылдайды.

  4. Әр команда соңына (;) символы қойылуы қажет.

Сонда begin мен end арасына: Label1.Caption:=Edit1.Text; жазылады. Енді осыны сақтап, F9 пернесін басайық. Міне шағын бағдарлама құрылып болды. Нәтижесін көріңіз.


Ендігі бағдарламалар бұдан күрделілеу болады. Егер бағдарламада қате болып, ол орындалмаса не істеу керек? Ол кезде CTRL + ALT + DEL пернелер тобын орындап немесе ең оңайы қателер туралы ескерту терезесінде OK-ны басып, содан соң бас терезе менюінде Delphi Run –» Program Reset немесе Ctrl+F2 командаларын орындаған жөн.


4. Delphi оқиғалары.


Бұрыннан білетініміздей, Windows операциялық жүйесі көпміндетті, яғни бір уақытта бірнеше әрекетті қатар орындай алады. Біз бағдарлама терезесінде батырманы шерткенде, Windows жүйесі нақ осы бағдарламада бір оқиға болғандығын анықтап, оған хабарлама жолдайды. Ал біздің бағдарлама оған тиісінше жауап әрекет жасауы керек. Ол үшін біз бағдарламалаушы ретінде осы оқиғаны орындату кодын жазамыз. Сонда Windows үшін бағдарлама құрылымы әрқайсысы белгілі бір нақты оқиғаны өңдеуге жауапты және сол оқиға болған кезде ғана шақырылатын кіші бағдарламалар жиынтығынан тұрады екен.

Ал Delphi бізді Windows – тан хабарлама алу қажеттілігінен құтқарып, ол қызметті бір өзі атқарады. Мұнда әр компоненттің өзінше әсер ете алатын біршама көп оқиғалар жиынтығы бар. Бағдарламалаушы бағдарламада қай оқиғаны өңдеу қажеттігін өзі анықтайды.

Енді осының алдында құрылған жобаны ашайық. Edit1 компонентін шертейік. Ол обьектілер инспекторында көрінеді. Сонда Инспектордан екі астарды көресіз: Properties(Қасиеттер) және Events(Оқиғалар). Events астарына ауысайық.

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

Алдыңғы бағдарламаны Пішіндегі мәтін бірден енгізілу бойына көрінетіндей етіп өзгертейік. Edit1 – ге мән енгізген кезде ондағы Text қасиеті өзгеріп, онда жаңа әріп пайда болады. Ол үшін onchange(change- ағ. өзгеру) оқиғасын пайдаланайық. Сонда:

  1. onchange бойынша екі рет шертейік, сол кезде біз жаңа құрған өңдеуіштің ішінде тұрамыз.

  2. Label1 – дің Caption қасиетіне Edit1 – дің Text қасиетінің мәнін меншіктейік: Label1.Caption:=Edit1.Text; немесе оны алдыңғы бағдарламадан көшіріп, осыған жазайық.

Бағдарламаны іске қосайық. Барлығы жұмыс істеп тұрғанын көреміз.

Енді onclick оқиғасын қарастырайық. Бұл оқиға енгізу жолын бұрын енгізілген символдардан тазарту үшін қолданылады. Мұнда өзіңіз байқағаныңыздай, Delphi-де жол – бірлік тырнақшаға( ' ) алынып жазылуы қажет.

Ал жолдағы символдар тазару үшін өңдеуіштің Text қасиетіне бос жол меншіктелуі керек, яғни оның арасында бос орын да болмауы қажет. Сонда ол былай жазылады:

Edit1.Text:= '';

Бұл мақсатта Edit компонентінің осыған арналған Clear (ағ.тазалау) әдісін қолдануға болады, ол мынау: Edit1.Clear;

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

Мұндай кезде Edit – тің onEnter оқиғасын қолданған жөн. Сол кезде сіз енген бойда, компонент мән енгізуге дайын тұрады немесе ол үшін арнайы батырманы және оның onclick оқиғасын пайдаланған қолайлы.

Сонымен әр компоненттің өз оқиғалар жиынтығы болатыны белгілі. Біз солардың

  • Onchange

  • Onclick

  • onEnter деген түрлерімен таныстық.

Әрбір бейнелік компонентте болатын мына маңызды оқиғалар төмендегі жағдайларда пайда болады:

  • onExit – компонент енгізу фокусын жоғалтқан сәтте;

  • ondblclick – компонентті мауспен екі рет шерткен сәтте;

  • onkeydown – пернетақта пернесін, ол төменгі қалыпта тұрғанда басқан сәтте;

  • onkeyup – пернетақта пернесін, ол жоғарғы қалыпта тұрғанда босатқан сәтте;

  • onkeypress – пернетақта пернесін басқан сәтте;

  • onmousdown – маус батырмасын, ол төменгі қалыпта тұрғанда басқан сәтте;

  • onmouseup – маус батырмасын, ол жоғарғы қалыпта тұрғанда босатқан сәтте;

  • onMouseMove – маус нұсқағышын компонент үстінде жылжытқан сәтте.


Кезкелген бағдарламамен жұмыс жасарда, оның ең маңызды компоненті – Пішіннің басты оқиғасы – onCreate ескерілуі қажет. Оқиға пішіннің экранда көрінуінен бұрын пайда болады. Бұл оқиға, мыс, Пішіннің экрандағы өлшемдері мен орнын баптауға болатындай етіп бағдарлама элементтерінің тиісті қасиеттерін беру үшін қолданылады. Егер сіз көрінбейтін бағдарлама құрғыңыз келсе, онда пішіннің ені(Width) мен биіктігін(Height) нөлге(0) теңеуге болады. Бірақ оны жобалау кезінде жасасақ, онда экран көрінбей жұмыс істеуге кедергі болады. Сондықтан оны onCreate оқиғасы бойынша:

Form1.Width:=0;

Form1.Height:=0; орындайды.

Енді Пішіннің тақырыбын да көрсетпеуге болады, ол үшін обьектілер инспекторында BorderStyle параметрін None – ге тең етіп алса болғаны. Сол кезде пішін тіпті көрінбейді, оның есептер тақтасында тек белгісі ғана шығып тұрады.


  1. Delphi тілі. Айнымалылар, тұрақтылар және

олардың типтері.


Delphi тіліндегі барлық мәліметтер оны қолданғанға дейін сипатталуы тиіс. Компилятор солай болғанда ғана мәліметтердің бағдарламада сипатталуына сәйкес қолданылғандығын бақылап, қатенің алдын алады. Delphi тілінде кезкелген шама тұрақты немесе айнымалы мәнге ие. Оның аты(идентификаторы) латын әріптерінің тізбегінен, цифрлар мен астын сызу таңбасынан тұрады, олар тек цифрдан басталмауы тиіс. Мұнда символдар регистрінің ролі болмайды.

Бағдарламада мәліметтерді сипаттау орны логикалық блок – begin/end – тен тыс орналасады. Модульде implementation түйінді сөзінің алдында сипаттау блогы жазылады:

var

Form1: TForm1;

Міне осы жерде, келесі жолдан бастап айнымалы мен тұрақтыларды жариялаған қолайлы. Айнымалылар былай сипатталады:

Var айнымалы_аты: айнымалы_типі;

Мұнда var – түйінді сөз. Атау ретінде кезкелген бұдан бұрын сипатталмаған және тілдің түйінді немесе қосалқы сөздері болып табылмайтын идентификаторды алуға болады.

Бір типті бірнеше айнымалыларды сипаттау қажет болғанда, оны былай жазады:

Var A,B,C: Integer;

Егер бірнеше сипаттауды бірінен соң бірін жазғанда, бір ғана var түйінді сөзін қолдануға болады:

var A,B: integer;

C,D: String;

Тұрақты шамаларды, басқаша константа деп атайды. Бағдарламада, әдетте, сандар мен жолдарды тікелей де пайдалануға болады: 3.1415 немесе ‘Бұл ПИ санының мәні'. Алайда тұрақтыларды идентификаторға меншіктеген ыңғайлы, ол үшін const түйінді сөзі қолданылып, былай жазылады:

Const pi=3.1415;

BelgiPi:String=’Бұл Пи санының мәні’;

Айтпақшы, Pi тұрақтысы Delphi – де берілген, сондықтан оны қолданғанда 3.1415 санын тұрақтыға меншіктесе болғаны.

Енді Delphi – де қолданылатын мәліметтер типін қарастырайық. Оларға – жолдар мен сандар жатады. Жол деп бірлік тырнақшаға алынып жазылған символдар тізбегін айтады. Мыс, 'бұл мәтіндік жол' деген сияқты. Егер мәтінде тырнақша белгісі болған жағдайда, онда оны екі мәрте жазу қажет, мыс: ‘бұл’’- бірлік тырнақша белгісі’.

Жол бос болуы да мүмкін, онда ол былай белгіленеді: ‘’.

Жол, көп таралған жолдық тип – String –пен сипатталады. Осы типті жол көлемі 2Гб-қа дейінгі символдардан тұра алады. Жолды шекті мөлшермен шектеу қажет болғанда, онда символдар санын String-тен кейін тік жақшаға алып жазады, мыс: String[50].

Жеке символдар типі Char түрінде сипатталып, бірлік тырнақшаға алынып жазылады: ‘ү’ . Ал мынадай экранда бейнелеуге болмайтын, мыс, жол соңын білдіретін символды(#13), жолды тасымалдау символын(#10), олардың алдында # таңбасы бар сандық коды(ANSI) түрінде жазады, мыс: #0. Delphi-де нөл – терминделген жолға жатады. Мұндай жолдардағы символдар есебі нөлден басталып, коды нөл болатын (#0) символымен аяқталады. Бұл жолдардың типі – Pchar.


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


Integer

-2147483648 .. +2147483647

Cardinal

0 .. 4294967295

Shortint

-128 .. +127

Smallint

-32768 .. +32767

Int64

-263 .. +263-1

Byte

0 .. +255

Word

0 .. +65535


Бүтін сандар типінің бағдарламада қолдануға ыңғайлысы – ол Integer. Ал оның басқа типтері мәліметтер компьютер жадынан барынша аз орын алуы үшін қолданылады. Бөлшек садардың ондық нүктемен ажыратылған бөлшек бөлігі бар. Оларды соңында сол жақ бөлігін 10-ның неше дәрежесіне көбейту керектігін көрсететін саны бар е(немесе Е) символымен жазуға болады.

Төменгі кестеде бөлшек сандардың стандартты типтері мен олардың қабылдай алатын мәндерінің аралығы берілген:


Real

5*10-324 .. 1.7*10308

Real48

2.9*10-39 .. 1.7*1038

Singl

1.5*10-45 .. 3.4*1038

Double

5*10-324 .. 1.7*10308

Extended

3.6*10-4951 .. 1.1*104932-1

Comp

-263 .. +263-1

Currency

922337203685477.5807


Бағдарламада қолдануға барынша ыңғайлы тип – Real. Оған шамалас типке Double жатады, бірақ оның алда өзгеруі де мүмкін. Currency(финанстық) типінен басқа бөлшек сандар жуықтап есептеледі.

Мәліметтердің ендігі бір типіне логикалық Boolean типі жатады. Ол True(ақиқат) және False(жалған) деген екі мәнді ғана қабылдайды. Мұнда True > False болады.


Енді жоғарыда айтылған компоненттерді, олардың қасиеттері мен оқиғаларын пайдаланып, өз айнымалыларын енгізу арқылы есептеу жүргізетіндей бағдарлама құрастыруға болады. Мұнда есептелген мәнді экранға қалай шығарамыз, соны қарастырайық. Ол үшін бұл мәнді қандай да бір Text не Caption қасиеті бар компонентке орналастыру қажет. Оған мысал ретінде Label мен Edit компоненттерін, тіпті Caption қасиеті арқылы ақпаратты шығаруға болатын Пішінді де қолдануға болар еді. Былай жазылған мына бағдарлама:


 var A, B, C: Integer ;
    begin
    A := 5 ;
    B := 10 ;
    C := A+B ;
    Label1.Caption := C ;
   end ;


қате шақырар еді, өйткені мұндағы Text және Caption қасиеттері String типті, ал айнымалылар – Integer типті болып тұр. Мұндай бағдарлама есептеу жүргізе алмайды. Бұдан шығатын жол бар, ол үшін С айнымалысының мәнін жолдық мәнге түрлендіру қажет. Delphi-дің мұны орындайтын IntToStr ішкі функциясы бар. Сонда қате шақырған бағдарлама мына түрде жазылар еді:

Label1.Capton:=IntToStr(C);

Бірақ бұл бағдарлама 15 санын ғана көрсетеді.

Енді Edit компонентін пайдаланып көрейік. Енгізілген сандар осы компоненттердің Text қасиеттерінде жатады. Пішінге Edit-тің екі, бір Label компонентін және батырманы басқанда есептеу жүргізетін Button батырмасын орналастырайық. Edit1 және Edit2 компоненттеріне қосындыны табу үшін сандар енгізейік. Сонда ол бағдарлама былай жазылады:


   var A, B, C: Integer;
   
begin
   
A := Edit1.Text;
   B := Edit2.Text;
   C := A+B;
   Label1.Caption := IntToStr(C);
  end ;


Бұл да жоғарыдағы сияқты, қате шақырады, себебі мұнда да А мен В айнымалылары сандық Integer типті болса, ал Text қасиеті – String типті. Осы қатені жөндеуге
StrToInt функциясы көмектесе алады, өйткені ол мәтінді бүтін санға түрлендіреді. Сонда А мен В айнымалысына мән меншіктеу операторлары былай жазылады:

A:=StrToInt(Edit1.Text);

B:=StrToInt(Edit2.Text);

Мұнда біз А,В,С айнымалыларын түсінуге оңай болу үшін пайдаландық. Осы бағдарлама операторларын бір жолға былай жазған өте ыңғайлы:

Label1.Caption:=IntToStr(StrToInt(Edit1.Text)+StrToInt(Edit2.Text));

Осыған ұқсас Real типті жылжымалы үтірлі нақты сандарды жолдық айнымалыға(FloatToStr) және оны кері түрлендіретін (StrToFloat) функциялары бар. Көбінесе Delphi-де Real типті есептеулер нәтижесінде үтірден соң ұзын «құйрық» болады. Мұны қалай шектеуге болатынын «Жолдық айнымалымен жұмыс» тақырыбында қарастырамыз.


6. Мәліметтердің өздік және құрылымдық типтері.


Мәліметтердің сандар мен жолдардан басқа күрделірек қосымша типтерін пайдаланбай жақсы бағдарлама құру мүмкін емес. Delphi-де бағдарламалаушы өз мақсатына жету үшін мәліметтердің өздік (өзі қалаған) типін құра алады.

Бағдарламаға мәліметтердің жаңа типін енгізу үшін Type түйінді сөзін қолданатын оператор енгізіледі:

Type типтің_атауы = типтің_сипатталуы

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


Type FootballKazTeam=(Kairat, Kaisar, Tobyl, Ordabasy, Esyl);

Var MyTeam: FootballKazTeam;

Begin

MyTeam:=Kairat;

End;


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

  • барлық бүтін санды типтер;

  • символдық типтер(Char);

  • логикалық типтер.

Мәліметтердің құрылымдық типтері кезкелген бағдарламада қолданылады. Оларға:

  • массивтер(жиымдар);

  • жазбалар;

  • жиындар

түріндегі типтер жатады.

Жиым – элементтеріне нөмірі немесе индексі бойынша қатынас жасалатын мәліметтердің құрылымдық типі. Жиымның барлық элементтері бір типтес болады. Ол былай сипатталады:

Type жиым_типінің_аты = array[аралығы] of элемент_типі

Мұндағы аралығы – жиымның жоғарғы және төменгі шекарасын, яғни ондағы элементтер санын анықтайды. Жиымға қатынас жасалғанда ізделінді индекс көрсетілген аралықта жатуы тиіс. Мыс, бүтін типті 100 элементтен тұратын жиым былайша сипатталады:

Type TMyArray=array[1..100] of Integer;

Мұндағы TmyArray типті айнымалыны былай сипаттауға болады:

Var A,B: TMyArray;

Енді типті меншіктеп жатпай-ақ, оны жиым ретінде бірден сипаттауға мүмкіндік туды:

Var A,B:array[1..100] of integer;

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


var N: Integer;
begin
   
N := 65;
   A[5] := 101;
   A[N] := 165;
   A[N+3] := 200;
   B := A;
end;


Кейде жиымның жоғарғы шегін білу қажеттігі туады. Delphi – дің High функциясы жиымның жоғарғы шегі болып табылатын санды қайтарады.

Бағдарламадағы B:=A өрнегі В жиымының әр элементі сондай индексті А жиымының элементіне тең екендігін білдіреді. Мұндай меншіктеу айнымалылар қандай да бір атаулы тип арқылы сипатталса ған немесе бір тізімде болса ғана мүмкін болады. Мына жағдайда:

var A: array[1..100] of String;
           B: array[1..100
] of String;

ондай меншіктеу қолданылмайды, бірақ мұнда элементтерді бір-бірден B[1]:=A[2]; және т.б. меншіктеуге мүмкіндік бар.

Жиымдар бірнеше өлшемді бола алады.

Мыс, бізге 4 баған, 5 жолдан құралған кесте берілсін делік.

Бұл кесте екі өлшемді жиым түрінде былай сипатталады:


Type MyKeste=array[1..4,1..5] of integer;

Var X:= MyKeste;hello_html_mf8584d5.png

Y:=Integer;

Begin

Y:=X[4,3];

End;



Осы бағдарлама орындалғанда, жиымның 4-бағаны мен 3-жолының қиылысында орналасқан Y элементінің мәні 12 – ге тең деген жауап аламыз.

Көпөлшемді жиымды, мыс, екі өлшемді жиымды жиымның жиымы ретінде сипаттауға болады:

Type TMyArray=array[1..4] of array[1..5] of integer;

Нәтижесі жоғарыдағы мысалға ұқсас.

Жоғарыда сипатталған элементтер саны өзгермейтін статикалық жиым деп аталатын жиымдардан басқа, Delphi-де элементтерін бағдарлама талабына сәйкес өзгертуге мүмкіндігі бар динамикалық жиымдарды қолдана алады. Ол жиымдармен жұмыс аздап жайлау жүргенмен бұл компьютер ресурсын үнемдеуге жағдай жасайды.

Динамикалық жиымдар статикалық сияқты, бірақ онда индекстер аралығы көрсетілмей сипатталады:

Type TDinArray=array of integer;

Var A:TDinArray;

Динамикалық жиым құрылып болғанда, онда бірде бір элемент болмайды. Бағдарламада қажетті өлшем арнаулы SetLength процедурасы арқылы беріледі.

Сонда 100 элементтен тұратын жиым былай жазылар еді:

Begin

SetLength(A,100);

End;

Динамикалық жиымның төменгі шегі әрқашан нөлге тең. Содан да А жиымның индексі 0-ден 99-ға дейін өзгере алады.

Көпөлшемді динамикалық жиымдар жиымдардың жиымы ретінде сипатталады. Мыс, екі өлшемді жиым былай сипатталады:

Type T3DinArray=array of array of integer;

Var A: T3DinArray;

Бағдарламада алдымен бірінші өлшем(бағандар саны) беріледі:


SetLength(A,3);


Содан соң екінші өлшем әрбір үш баған бойынша беріледі:

SetLength(A[0],3);

SetLength(A[1],2);

SetLength(A[2],1);



Міне осылай үшбұрышты матрица құрылады:



A00 A10 A20
A
01 A12
A
02


Динамикалық жиымға бөлінген жадыны босату үшін тұтас жиымға nil мәнін меншіктеу керек: A:=nil; Delphi-де nil түйінді сөзі мәннің жоқтығын білдіреді.


Жазбалар өте маңызды әрі ыңғайлы құрал болып табылады. Оның көмегімен арнайы технологияны қолданбай-ақ мәліметтердің өзіндік деректер қорын құруға болады.

Жазбалар деп, мәліметтердің әр элементтің өз аты мен типі бар құрылымдық түрін айтады. Жазбалар элементін басқаша өріс деп те атайды. Олар былай сипатталады:


Type жазба_типінің_аты=record

өріс_аты : өріс_типі;

...

өріс_аты : өріс_типі;

end;


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


Type TKyzm=record

Tegy,Aty,Aka:string; Tj:integer; Jo:string;

Ka:string;

End;

Var Kyzm:TKyzm;

Begin

Kyzm.Tegy:=’Adet’;

Kyzm.Aty:=’Muratbek’;

Kyzm.Aka:=’Bexaruly’;

Kyzm.Tj:=1942;

Kyzm.Jo:=’114 орта мектеп’;

Kyzm.Ka:=’бағдарламалаушы’;

End;


Енді осы деректерді оның типін алдынала TKyzm түрінде белгілеп, файлға жазамыз. Міне деректер қоры дайын болды.

Delphi-де файлдық айнымалы деген ұғым бар, ол былай сипатталады:

VFile:file of файл_типі; Мұнда тип ретінде кезкелген шектеулі тип пайдаланылады.

Бұл айнымалыға String типін қолдана алмаймыз, себебі ол айнымалыға 2 ГБ-қа дейін мән беруге мүмкіндік жасайды. Бірақ оны String[N] деп шектеу арқылы(N-символдар саны) қолдануға болады. Жоғарыда алынған мысалдағы Tkyzm типін былайша сипаттауға болар еді:


Type TKyzm=record

Tegy,Aty,Aka:string[20] ;

Tj:integer;

Jo:string[15];

Ka:string[15];

End;


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


Жиындар деп, бір атауға біріктірілген элементтер тобын айтады. Оның элементтерін басқалармен салыстыра отырып, олардың осы жиынға тиістілігін анықтауға болады. Бір жиындағы элементтер саны 256-дан аспауы тиіс. Жиын былай сипатталады:

Type жиын_аты=set of жиынның_мәндер_аралығы;

Мәндер аралығы ретінде элементтерінің саны 256-дан аспайтын кезкелген типті көрсетуге болады. Мыс: type TmySet=set of 0..255;

Type TMySet=set of Byte;

Бағдарламада жиынның нақты мәндері тік жақшаға алынған элементтер тізбесі түрінде беріледі. Мұнда элементтердің аралығын көрсету мүмкіндігі бар:


var MySet : TMySet;
begin
    
MySet:=[1, 3 .. 7, 9];
end;


Қандай да бір мән жиын элементі екендігін тексеру үшін
in операторы шартты оператормен бірге қолданылады:


 var Key : Char;
   Str : String;
   begin
    if Key in ['0' .. '9', '+', '-'] then

Str:='Math';
   
end;


7. Өрнектер және операторлар.


Delphi-де өрнектердің мына түрлері қолданылады:

  • математикалық өрнектер

  • логикалық өрнектер

  • тіркестік өрнектер және оның мұнан басқалары да бар.

Математикалық өрнектер. Мұнда меншіктеу(:=), қосу(+), азайту(-), көбейту(*), бөлу(/), бүтін сандық бөлу(div), бөлуден қалдық табу(mod) амалдары пайдаланылады. Өрнектермен амалдар орындауда амалдардың орындалу басымдықтарын ескеру өте маңызды, сонда ғана есептеу дұрыс нәтиже береді. Сондықтан бағдарламалаушының осы басымдықтарды білуі тиіс.

Мыс, мына өрнектің нәтижесі : 20-6/2+7*4hello_html_33ec46a3.gif 56 емес, 45-ке тең, себебі өрнекте ең алдымен көбейту мен бөлу амалдары бірінші кезекте, сонан соң қосу, азайту амалдары ретімен орындалуы керек. Амалдардың орындалуында жай жақша басымдыққа ие, яғни жақшаға алынған өрнек алдымен орындалады. Мыс, мына өрнектің мәні: ((20-6)/2+7)*4 енді 56-ға тең болады. Бұл өрнекте әуелі 1-жақша(14), сонан соң екінші үлкен жақша(14), сосын қалған амал(56) орындалады.


Логикалық өрнектер.

Бұл өрнектер логикалық Boolean типті амалдарда қарастырылады. Олар шартты операторларда қолданылады.


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

  • меншіктеу операторы

  • шартты оператор

  • циклдік оператор


Меншіктеу операторымен(:=) осының алдында таныстық. Ол оператор былай жұмыс істейді: мұнда оператордың сол жағында тұрған айнымалы, оң жақтағы шамаға теңеседі және олардың типтері сәйкес болуы керек. Сөйтіп оң жағындағы өрнекте оның сол жағындағы шаманы пайдалануға болады. Осы айтылғандарды математикада қолдануға болмайды. Ал бағдарламалауда бұл жадыда тұрған бастапқы мән алынып, оған есептеу жүргізілетінін, сонан соң ол ұяшықтағы бұрынғы мән өшіріліп, соның орнына соңғы мән енгізілетінін білдіреді. Мыс:

var M,N : Integer;
begin
     M:=2;
     N:=10;
     M:=M*N-N/M;
end;


Бағдарламаның басында М-ге меншіктелген мән – 2 болса, ал бағдарлама орындалғанда оған 15 мәні меншіктеліп тұр.


Шартты оператор. Осы оператордың көмегімен қандай да бір шарттардың орындалуына қарай операторлардың орындалу ретін өзгертуге мүмкіндік туады. Шартты оператор былай жазылады:

If шарт then 1-әрекет else 2-әрекет;

Мұндағы if(егер), then(онда) және else(әйтпесе) – қызметші сөздер, ал 1-әрекет немесе 2-әрекет – операторлардың орындалу нәтижесін білдіретін операторлар. Мұнда шарт ақиқат болса 1-әрекет, жалған болса 2-әрекет орындалады. Шарт логикалық әрекетке жатады. Бұл жерде өрнектер мәні(оның ішінде логикалық та) салыстырылады, ол үшін Boolean типті мәнді қайтаратын функциялар шақырылады және ол мәндерді логикалық амалдармен қоса қолдана алады.


   Амал

таңбасы

Амалдың

атауы

Логикалық амалдарды мына :
   and (логикалық
ЖӘНЕ)
   or (логикалық НЕМЕСЕ)
   xor (жоққа шығарушы НЕМЕСЕ) байланыстырушы амалдармен бірге пайдалануға болады.
Мәліметтердің кейбір типтері үшін қосымша амалдар бар. Мыс, жиын үшін
in операторы – мәннің сол жиынға тиістілігін тексереді. K жиыны берілсін :

K := [1, 4, 7, 10, 13, 16] ;
мұнда 1 in K өрнегі ақиқат (true
мәніне ие), ал 8 in K өрнегі жалған (false мәніне ие), өйткені 1 К жиынына тиісті, ал 8 мәні К-да жатпайды.

   =   

   тең   

   <>   

   тең емес   

   >   

   үлкен  

   <   

   кіші  

   >=   

үлкен не тең   

   <=   

  кіші не тең   

   not   

логикалық ЕМЕС – теріске шығару


ЖӘНЕ логикалық амалының орындалу нәтижесі екі операнд бірдей ақиқат болғанда ғана true –ге тең. НЕМЕСЕ логикалық амалының орындалу нәтижесі әйтеуір бір операнд ақиқат болғанда true мәнге ие болады. Егер операндтар бір-біріне тең болмаса, онда жоққа шығарушы НЕМЕСЕ амалының нәтижесі ақиқат болады.


Цикл операторлары әрекеттердің бір ғана ізбен бірнеше рет қайталануын ұйымдастыруға мүмкіндік береді. Delphi-де бұл мақсатты орындайтын үш оператор бар. Олар:

  • циклдің «жай» операторы

  • циклдің шартты операторы

  • қайталаудың шартты операторы.


Циклдің «жай» операторы, оның қайталау саны алдынала белгілі болған жағдайда қолданылады және ол былай жазылады:

For санауыш:=1-өрнек to 2-өрнек do әрекет;

Санауыш-бұл цикл операторы орналасқан логикалық блоктың алдында жариялануға тиісті айнымалы және оның типі саналатын типтердің біріне, әдетте Integer-ге тиесілі болуы тиіс. Мұндағы 1-өрнек пен 2-өрнек тұрақты немесе идентификатор бола алады. Әрекет – Delphi-дің бір немесе бірнеше операторларын білдіреді. Оператор жұмысы басталғанда айнымалы-санауыш 1-өрнектің мәнін қабылдайды. Егер мұнда санауыш мәні 2-өрнек мәнінен кем не оған тең болса, онда әрекет құрамына енетін операторлар орындалады. Міне осы бір цикл «жай» деп саналады. Содан соң айнымалы-санауыш ағымдағы келесі мәнді қабылдап, жаңа цикл басталады, яғни ол 2-өрнекпен санауышты салыстырады, әрекетті орындайды. Осылайша айнымалы-санауыштың мәні 2-өрнек мәнінен асқанға дейін цикл жалғаса береді.

Цикл операторының жұмысында айнымалы-санауыш өсу орнына кемитін жағдай да болуы мүмкін. Ондай жағдайда оператор былай жазылады:

For санауыш:=1-өрнек downto 2-өрнек do әрекет;

Мұнда 1-өрнектің мәні 2-өрнектен үлкен не оған тең болуы тиіс.

Циклдің қайталану саны алдынала белгісіз болған жағдай үшін мына түрде жазылатын циклдің шартты операторын пайдаланған жөн:

While шарт do

цикл денесі;

Бұл цикл шарт ақиқат болып тұрған кездің барлығында орындалады. Мұнда шарт бірден жалған болса, онда цикл денесі бір рет те орындалмайды. Мұндай циклдің шарты мен циклдің аяқталуын жазуда өте мұқият болу керек, әйтпесе while циклі шексіз рет қайталанып, бағдарламаның орындалмай тұрып қалуына әкеліп соқтырады.

Қайталаудың шартты операторы алдымен цикл денесін орындайды, сонан соң барып шарттың орындалуын тексереді. Бұл оператор былай жазылады:

Repeat

Цикл денесі

Until шарт;

Циклдің бұл түрі оның ең болмағанда бір рет орындалуын ұйымдастырады. Мұнда цикл шарт ақиқатқа айналғанша орындалуын жалғастырады және цикл денесі логикалық begin/end жақшасына алынбай жазылады. Цикл денесінің бас-аяғы repeat және until түйінді сөздерімен анықталады.

Цикл операторларымен қоса арнайы командалар да қолданылады, олар:

  • циклді үзу командасы

  • циклді жалғастыру командасы

Бірінші команда цикл денесі операторларының орындалуы кезінде оны аяқтау қажет болғанда пайдаланылады және ол былай жазылады: Break;

Осы команда орындалғанда басқару цикл операторынан кейінгі бірінші операторға беріледі.

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

Бағдарламаның орындалу ретін өзгертуге мүмкіндік беретін тағы бір оператор бар, ол көшу операторы: goto белгі;

Мұнда белгі ретінде кезкелген жарамды идентификатор немесе 0 мен 9999 аралығынан алынған сандар пайдаланылады. Белгіні алдынала айнымалыларды сипаттау бөлімінде var көмегімен емес, label түйінді сөзі арқылы сипаттау керек:

Label белгі; немесе label белгілер тізімі;

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


 var X, Y: Integer;
   label A, B;
   begin
    A: X:=5 ;
       
. . .
    бағдарлама операторлары
    goto B;
       
. . .
    B: Y:=25;
    goto A;
   end;


Осы мысалдағы бағдарламаны аяқтауға тиіс
end операторы ешқашан орындалмайды, мұнда бағдарлама көшу операторларының жұмысы нәтижесінде шексіз қайталана береді. Сондықтан goto операторын программистер көп қолданбауға тырысады. Бағдарламада оның орнына шартты не циклдік операторларды пайдалану әлдеқайда тиімді.

Goto операторын тек бірнеше қабаттасқан циклдерден шығу кезінде қолданған дұрыс, әйтпесе одан шығу үшін бірнеше рет break командаларын қолдануға тура келеді.


8. Файлдармен жұмыс істеуге арналған компоненттер.


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

құруға, іздеуге, оқып-жазуға, атын өзгертуге және директорийге өзгеріс енгізуге толық болады. Сонымен файлдармен жұмыс істей алатын компоненттерге Delphi-дің басты бетінде орналасқан ListBox, ComboBox, Memo компоненттері жатады. ListBox пен ComboBox үшін компоненттердің әр жолы Items[i]-тің, ал Memo үшін Lines[i]-тің обьектісі болып табылады, мұндағы i – нөлден бастап саналатын жол нөмірі.

Компоненттерге жолды Add және Insert әдістері арқылы қосуға болады:


begin
 
Memo1.Lines.Add('Бірінші жол');
 
ComboBox1.Items.Add('Бірінші жол');
 
ComboBox1.Items.Add('Екінші жол');
 
ListBox1.Items.Add('Бірінші жол');
 
ListBox1.Items.Add('Екінші жол');

end ;


hello_html_5688a017.png


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

ComboBox1.Items[0] := 'Бірінші жол өзгерді' ;
   ListBox1.Items[1] := 'Екінші жол өзгерді' ;

ComboBox компонентінде (Edit компонентіндегі сияқты) енгізілген мәтін сақталатын қосымша Text қасиеті бар:

ComboBox1.Text := ' Енгізілетін мәтін ';

Енді Enter пернесін басу арқылы осы компонентке қажет ақпаратты енгізу және оны Escape пернесімен жоюды қарастырайық. Ол үшін: Пішіндегі ComboBox-ты белгілеңіз және обьектілер инспекторындағы Events астарына көшіңіз. Осындағы өңдегіш onkeypress-ті екі рет шертіңіз. Delphi жүйесі өңдеуші жобасын дайындады, енді осында былай деп жазыңыз:


begin
   if Key=#13 then
      ComboBox1.Items.Add(ComboBox1.Text);
   if Key=#27 then
      ComboBox1.Items.Delete(ComboBox1.Items.Count-1);
end ;


Мұндағы Key – басылған перненің коды бар өңдеуіштің қандай да бір айнымалысы, ал #13 пен #27 – Enter мен Escape пернелерінің сәйкес кодтары. Items.Count – компонентте тұрған жолдар саны. Мұнда жолды есептеу 0-ден басталатындықтан, одан 1-ді кемітуіміз керек. Сонда Items.Count-1 әрдайым соңғы жолды көрсетіп тұрады. Escape пернесін біртіндеп басу арқылы барлық жолды жоюымызға болады. ComboBox1.Items.Delete(0) командасымен де сол жұмысты орындауға болады, бірақ мұнда тек бірінші жолдар ғана жойылады. Бірден барлығын жою үшін Clear әдісін қолданады.

Енді файлдағы бар нәрсені сақтау жағдайын қарастырайық. Ол үшін мына команданы орындайық:

   ListBox1.Items.SaveToFile(' файл_аты.txt ') ;

Мұнда txt кеңейтілімінің орнына басқа өзіңіз қалаған кеңейтілімді жазуыңызға немесе оны тіпті жазбауыңызға да болады. Алайда txt кеңейтілімі Блокнотты пайдаланып бағдарлама жазуда барынша қолайлы.

Файлды жүктеу қызметін LoadFromFile әдісі атқарады:

Егер Сіз бағдарламаңызда ComboBox, ListBox немесе Memo компоненттерімен жұмыс істемейсіз, ал ақпараттарды сақтауыңыз қажет болды делік, ол жағдайда не істейсіз? Ондайда компоненттердің бірін алып оны көрінбейтін етеміз. Ол үшін обьектілер инспекторында оның Visible қасиетіне False мәнін береміз. Одан компоненттің қызметі өзгермейді, бірақ компонент көрінбейтін болады.

Енді экранда оны жабарда өз қалпын сақтайтын және сол орында ашылатын бағдарлама құрайық. Мұнда бізге Пішіннің экранның сол жақ шеті мен жоғарғы жиегінен қашықтығын анықтайтын Left және Top қасиеттерінің мәнін сақтауымыз қажет. Олардың мәні пиксельмен өрнектеледі және ол Integer. Осы мәндерді IntToStr операторының көмегімен жолдық мәнге айналдыру керек.

Сонымен Пішінге көрінбейтін ListBox орнатып, пішіндегі оның көрінбей тұрған орнын шертіңіз, сонда обьектілер инспекторында оның қасиеттері көрінетін болсын және Events астарына көшіңіз. Осындағы OnClose өңдеуішін шертіп, шыққан кодтар терезесіне мынаны жазыңыз:


begin
   
ListBox1.Items.Clear;
 ListBox1.Items.Add(IntToStr(Form1.Left));
 ListBox1.Items.Add(IntToStr(Form1.Top));

   
ListBox1.Items.SaveToFile('MyFormPos.txt');
  end ;


Міне осы өңдеуіш пішіннің экрандағы орнын сақтайды.

Енді бағдарлама жүктелген кезде пішінді орнына орналастыратын өңдеуіш жазайық. Өңдеуіш жобасының oncreate оқиғасын құрыңыз. Бұл оқиға ОЖ арқылы пішінді құру сәтінде пайда болады. Міне осы сәтте оған қажетті қасиеттерді меншіктеу қажет. Соның бағдарламасын жазайық:


begin
   if FileExists('MyFormPos.txt') then
    begin
     
ListBox1.Items.LoadFromFile('MyFormPos.txt');
     Form1.;
     Form1.;
    end ;
end
;


Мұнда 1-жолда файлдың бар-жоқтығына тексеру жүргізіледі, егер ол жоқ болса, онда қате туралы хабарлама шығады. Дегенмен ескертпеден соң да пішін жобалаған орында ашылады, ал жабылар кезде қажетті файл қайта қалпына келеді. Мұндағы логикалық жақшада
MyFormPos.txt файлы бағдарламасы бар бумада жатқанда ғана орындалатын кодтың өзі болады, өйткені мұнда салыстырмалы орын көрсетілген. Нақты, мыс, C:\Program Files\MyProg\MyFormPos.txt. орналасу орнын көрсетуге де болады.

Файлдың бар-жоқтығын ерекше жағдайларды бақылаудың көмегімен де орындауымыз мүмкін. Арнаулы оператордың көмегімен оны ұстап алып, бағдарламада қате кетірмеуге болады. Кәсіби бағдарламалардың Windows реестрінде өз орны сақталады. Оған да келерміз. әзірше бұл кіріспені аяқтаймыз.


9. Файлдармен тікелей жұмыс.


Delphi жүйесіндегі файлдармен жұмыс технологиясы әрекеттердің белгілі бір ретін орындауды талап етеді:

  1. Ең алдымен файл ашылуы тиіс. Жүйе басқа қолданбалар-дың файлдармен жұмыс істеуге кедергі келтірмеуін бақылайды. Осы кезде файл қандай режимде – ақпараттар-ды өзгерту немесе оны тек есептеу үшін ғана ашыла ма, сол бірге анықталады. Файл ашылған соң бағдарламаға өңдеу-дің барлық процедураларында осы файлды көрсетуге қолданылатын оның идентификаторы орнына қайтарылады.

  2. Файлмен жұмыс басталады. Ол файлды жазу, есептеу, іздеу және басқа да операциялар болуы мүмкін.

  3. Файл жабылады. Енді ол басқа қолданбалар үшін тағы да шектеусіз қол жетімді болады. Файлдың жабылуы оған енгізілген барлық өзгерістердің сақталуына кепілдік береді.

Delphi-де файлдармен жұмыстың бірнеше тәсілдері жүзеге асырылады. Қазір біз файлдық айнымалыны пайдалануға байланысты стандартты тәсілмен танысамыз.

Файлдық айнымалы файлды көрсету үшін енгізіледі. Ол File түйінді сөзінің көмегімен жасалады:

Var F: File;

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

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

Var F: File of жазба_типі;

Тип ретінде базалық типтерді немесе өзіндік типтерді қолдануға болады. Мұнда тип үшін байтпен алынған дәл мөлшер болуы маңызды. Өйткені осыдан бұрын айтылғандай, String типі таза түрінде емес, тек String[N] түрінде ғана қолданыла алады.

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

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

hello_html_59c50467.png


Файлды ашу үшін, оның орны көрсетілуі қажет. Ол үшін файлдық айнымалы оның адресі бойынша анықталатын тиісті файлмен байланысты болуы тиіс. Файл адресі дискі мен каталогы көрсетілген('C:\Мои документы\Мои рисунки\FileName.ini') – абсолютті немесе салыстырмалы болуы мүмкін. Салыстырмалы адресті тиісті кеңейтілімі бар файлдың аты арқылы көрсету жеткілікті. Оны AssignFile операторы арқылы былай сипаттауға болады:


AssignFile(SaveF, 'C:\Мои документы\Мои рисунки\FileName.ini');
   AssignFile(SaveF, 'FileName.ini');


Енді файл ашылуы тиіс.

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

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


Rewrite(SaveF);
  Reset(SaveF);


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


Rewrite(SaveF, 1);
   Reset(SaveF, 1);


Файлды оқу
Read операторымен жүргізіледі:

   Read(SaveF, SaveV);
Файлға жазу
Write операторы арқылы орындалады:

Write(SaveF, SaveV);

Файлды оқу мен оған жазу көрсеткіштің ағымдағы позициясынан бастап жүргізіледі де, содан соң көрсеткіш келесі жазбаға барып орналасады. Керекті файлдың бар-жоқтығын FileExists операторы арқылы тексеруге болады:


   if FileExists('FileName.ini')
      then Read(SaveF, SaveV);


Керекті жазбаға көрсеткішті
Seek(SaveF,N) операторымен мәжбүрлеп орнатуға болады, мұндағы N – нөлден бастап саналатын жазба нөмірі. Мысалы, көрсеткішті 50-жазбаға орнату үшін былай жазады:    Seek(SaveF, 49);

Файлды біртіндеп оқу кезінде көрсеткіш файлдың соңына жетеді де, әрі қарай оқу кезінде «қате» туралы хабарлайды. Осы қате шықпау үшін, файлдың соңына жеткен-жетпегенін тексеруге EOF операторын пайдалануға болады:


while (not EOF(SaveF)) do
      
Read(SaveF, SaveV);


Файлдағы барлық жазбаны (көрсеткіштің тұрған жерінен файлдың соңына дейін) Truncate(SaveF) операторы қиып тастауға(өшіруге не қажет болса, жоюға) мүмкіндігі бар.

Файлмен жұмыс істеп болған соң оны жабу керек. Оны CloseFile(SaveF) ; операторы атқарады.

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

Пішіннің OnCreate оқиғасын өңдеушіні құрайық:


procedure TForm1.FormCreate(Sender: TObject) ;
begin
   
AssignFile(SaveF, 'Init.ini') ;
   if FileExists('Init.ini') then
     begin
       
Reset(SaveF) ;
       Read(SaveF, SaveV) ;
       Form1.Left := SaveV.X ;
       Form1.Top := SaveV.Y ;
       Form1.Caption:=SaveV.Caption ;
 //осы //айнымалылар Пішіннің тақырыбын қосымша сақтайды

end ;
end ;

Енді OnClose оқиғасын өңдеушіні құрайық:


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction) ;
begin
Rewrite(SaveF) ; //мұнда файлдың бар-жоқтығын

//тексерудің қажеті жоқ, оны қайта құрамыз.
   SaveV.X := Form1.Left ;
   SaveV.Y := Form1.Top ;
   SaveV.Caption := Form1.Caption ;
   Write(SaveF, SaveV) ;
   CloseFile(SaveF) ;

end ;

Файл осы жағдайда есептеледі де, өзіміз көрсеткен орынға жазылады. Алайда бұл жерде жұмыс істейтін бағдарламадан керекті файлды таңдап ала білу қажет. Ол туралы тақырыптың соңғы бөлігінде айтатын боламыз.


10. Файлдарды ашудың және сақтаудың диалогтары


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

Компоненттер палитрасының Dialogs астарында OpenDialog және SaveDialog компоненттері бар. Осы астарда орналасқан диалогтардың барлығы тек жобалау кезеңінде ғана көрінетін, ал жұмыс істеп тұрған бағдарламадағы Пішінге көшірілген кезде көрінбейтін компоненттер.

OpenDialog компоненті бағдарламалық стандарт терезесін ашуды, ал SaveDialog компоненті – сақтау терезесін ашуды ұйымдастырады.


hello_html_68db6365.png

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

Диалогтың ең басты әдісі – Execute. Ол файл таңдау терезесіндегі « ашу» немесе « сақтау» батырмаларын басу кезінде жұмыс істейді. Мысал ретінде Memo редакторына жүктеу үшін файл таңдауға мүмкіндік беретін және оны редакциялағаннан кейін сақтауды енгізейік.

Кәне, Пішінге екі диалогты , Memo мәтіндік редакторын және үш Button батырмаларын орналастырайық. Біреуінің Caption қасиетіне « Открыть», екіншісіне «Сохранить», үшіншісіне «Сохранить как» деп жазайық.


Работа с диалогами выбора файла


Onсlick өңдеуіштің « открыть » бағдарламасын қосып, жазамыз:


if OpenDialog1.Execute then Memo1.     Lines.LoadFromFile('OpenDialog1.FileName');


Файл таңдау нәтижесінде OpenDialog компонентінің FileName қасиеті таңдалған файдың толық адресінің мәніне ие болады., ал ол мәнді біз Memo компонентін жүктеу жайлы функциясына енгізген болатынбыз.

Әрине, бұл жазылған өрнектер тек бір жолға жазылғанда ғана дұрыс болады. Ал егер бағдарлама OpenDialog өрнегін бірнеше рет қолданса, онда оны қайта-қайта жазудан жалығатын боласың. Бұл жағдай үшін Delphi-де «with – біріктіруші оператор» дейтін оператор бар. Ол осындай қайталап жазуға тура келетін кез-келген объектілер үшін қолданылады.

Ол былай жазылады: with Объект do
      begin
...
      
end;

Логикалық жақша ішіне объект қасиетін бірден жазып көрсетуге болады, егер жақша ішінде бір ғана оператор болса, онда ол міндетті емес. Файлды жүктеу үзіндісін « біріктіру операторын» пайдаланып, қайта жазайық:


   with OpenDialog1 do
      if Execute then
     Memo1.Lines.LoadFromFile('FileName');

OpenDialog пен SaveDialog компоненттерінің қасиеттері бірдей болғандықтан, мәтінді сақтау да сондай ұқсас. « Сохранить как » батырмасын басудың өңдеуішін құрайық, ол үшін былай жазамыз:


with SaveDialog1 do
      if Execute then
        begin
           Memo1.Lines.SaveToFile('FileName');
    OpenDialog1.FileName:=FileName;
// Жөнделген //мәтін бастапқы мәтінді өшірмес үшін
        end;


Соңынан « Сохранить» батырмасы үшін жазайық:

Memo1.Lines.SaveToFile('OpenDialog1.FileName'); //қайдан бастап санады, сонда сақтайды ;


Осындай үзінділермен жұмыс істеу кезінде барлық файлдар ішінен қажетті директориядан ғана таңдауға болатынын байқаймыз.

Сонда, мысалы, мәтіндік файлдарды немесе өзіміз қалаған басқа файлдар типін көрген ыңғайлы. Ал ол үшін сүзгілер, яғни біздің компоненттердің Filter қасиеті қолданылады. Ол объектілер Редактор фильтров

инспекторында бапталады. Оны таңдау кезінде сүзгілер редакторына көшуіміз мүмкін. Мұнда FilterName бағанына сүзгілер аттарын, ал Filter бағанына – файлдар маскаларының тізімін жазамыз.

Біздің жағдайда файл маскасы мына түрде болады:


*. файл_кеңейтілімі ;


Мұндағы  * – кеңейтілімге жарайтын кез-келген аты бар файл таңдалатынын білдіреді.

Title диалогының қасиеті бізге тақырыпқа қажетті сөзді жазу мүмкіндігін береді. Егер оны бос қалдырсақ, онда тақырыпта стандартты « открыть » немесе « сохранить » жазбалары тұрады. InitalDir қасиеті оны ашқан сәтте өзімізге қажет директорияда тұруға мүмкіндік жасайды. Мұны біз жобалау кезеңінде де, бағдарламалау бойынша да атқара аламыз.


11. Қосымша пішіндермен жұмыс.


Delphi –де де қосымша Пішіндермен жұмыс істеуге мүмкіндік бар. Мұнда біз тұтынушымен сұхбат жүргізуге және қажетті ақпаратты қабылдауға және оны шығаруға мүмкіндік беретін

Список Auto-Create форм

қосымша пішіндерді оңай құра аламыз. Біз мұнда Delphi –дің негізгі пішініне қосымша бірнеше пішіндерді құрып үйренеміз.

Бағдарламаға жаңа пішін енгізу басты беттегі батырманы (New Form) басу арқылы, соған қоса тиісті командаларды : File -» New -» Form орындау арқылы жүзеге асырылады.

Пішін оның жұмысын сипаттайтын жаңа модульмен бірге құрылады. Оны бағдарламадан жоюға болады: ол үшін батырма бар және мына меню командасы: Project -» Remove from project.... қолданылады. Пішін модульмен бірге құрылатындықтан, көрінген терезеден жойылуға тиісті модульді таңдау керек. Ал егер Unit 1 модулінің өзін жойғымыз келсе не болады, сонда не қалады?

Project -» View Sourse командасын орындайық. Код редакторында (Бас терезенің коды бейнелетін пішіннің емес) жаңа астар пайда болады. Мұнда Бас терезе көрінбейді, бірақ барлық жобаны басқарады және жалпы пішінсіз де жұмыс істей алады. Оған өз кодыңды орналастырып және Паскальдағы сияқты бағдарлама жазуымызға болады.

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

Список Available форм


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

Біріншіден, пішіннің өздігінше жасалуын тоқтату керек. Ол үшін Project Options командасын орындаңыз. Көрінген терезеде: Main Form(Бас Пішін), Auto-create (өздігінен жасалатын) және AvaiLable(қол жетімді) түріндегі жоба пішіндері бейнеленеді. Мұнда бізге пішінді өздігінше жасалатын түрден қолжетімді түрге көшіруіміз қажет. Ол: “>” батырмасын (керісінше амал – “<”) басу арқылы орындалады.

Сонымен Form1 Бас пішіні өзі жасалады, ал қосымша Form2 пішінін біз бағдарламада қажетіне қарай өзіміз құрамыз. Егер біз осы айтылғанды жасамаған болсақ, онда экранда жаңа пішін шығару үшін былай деп жазсақ жеткілікті :

Form2.Show; // жай пішін үшін
Form2.ShowModal; // модальды пішін үшін


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

if (not Assigned(Form2)) then // Пішіннің бар-//жоқтығын тексеру
       
Form2:=Form2.Create(Self);// Пішінді құру
   
Form2.Show; // (немесе Form2.ShowModal) //Пішінді //көрсету


Енді жай пішінмен Модалды пішіннің айырмашылығын қарастырайық. Жай пішін экранда орналасқан барлық пішіндердің бірінен біріне еркін көшуге мүмкіндік береді.

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

Оған қарамастан екінші пішінді шақыруға әрекет жасасаңыз, бағдарлама мынадай сауал шығарады:


вызов дополнительной формы

Ол сауалдың мазмұны мынау: Form1 пішіні Unit 2 модулінде жарияланған Form2 пішінін шақырып тұр, бірақ ол пішін қолданылған модульдер тізімінде жоқ.

Сіз оны қосқыңыз келе ме?

Мұны директива {$R *.dfm} алдындағы модулдің басына мына бағдарлама үзігін uses Unit2;
қосу арқылы шешу керек. Негізінде мұны компиляция алдында «қолмен» қосуға да болар еді. Сонда сауал да болмайды. Бірақ соның қажеті бар ма?

Мұнда «Yes»» деп жауап қайтарып және F9 – ды басамыз.

Алдымен пішінге оны жабу операциясын енгіземіз. Мұны бірнеше тәсілмен істеуге болады. Батырманы алып, оған « Закрыть» деп жазып, сосын OnClick өңдеуішке былай жазамыз:


Form2.Close; // негізінде жай ғана Close;


Бұл оператор оны пішін менюінен шақырған кезде жұмыс істейді, әрине меню (
Standard астарындағы MainMenu компоненті) оған енгізілген жағдайда . Бұл туралы алда әңгімелейтін боламыз.

Бізге енді модальды пішінге жататын пішіндердің жабылу тәсілдерін қарастыруымыз керек. Оның сұхбат жасауға арналған терезелерінде сұрақтарға жауап беруді қажет етеді.

Ол үшін пішінге мына : «Иә», «Жоқ» «Болдырмау» және т.б жауаптарға сәйкес батырмаларды орналастыру қажет. Әр батырманың mrYes, mrNo, mrCansel және басқа мәндерге ие ModalResult қасиеті бар. Мұнда таңдалған батырманың ModalResult мәні пішіннің осы қасиетіне беріледі. Бұл қасиет объектілер инспекторынан көруге болатын пішін қасиетінің тізімінде жоқ, бірақ оны бағдарламалық түрде таба аламыз. («Form2» деп жазып нүкте қой, сосын шыққан тізімнен ізде)

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


procedure Tform1.Button1Click(Sender: Tobject);
begin
Form2.ShowModal;
if Form2.ModalResult=mrYes then // Бұл оператор Form2 //жабылған соң ғана қолжетімді болады
  
Form1.Caption:='Тұтынушы оң жауап берді!';
end;

Осы мысалдан көріп отырғанымыздай, бір пішіннен басқа пішіннің қасиеттеріне , сол сияқты олардың компоненттеріне қатынас жасау үшін сол пішіннің аты көрсетілуі қажет екен. Оған қоса біз оның жұмысын сипаттайтын модулде қолданылатын мәліметтерге де қол жеткізе аламыз. Ол үшін де модулдің аты көрсетілуі қажет. Мысалы, Unit2 модуліндегі X айнымалымына қатынас жасау үшін: Unit2.X деп жазамыз.

Көбінесе бағдарламада пішінді жабу сәтінде белгілі бір операциялар орындалуы тиіс. Ол пішіннің OnClose оқиға өңдеуішінде жасалады. Ал енді пішінді жабуды болдырмауды қарастырайық. Осы мақсатта OnCloseQuery оқиға өңдеуішін қолдануға болады. Ол өңдеуіштегі CanClose логикалық айнымалысының қабылдайтын мәніне байланысты. Пішін CanClose:=True; мәнін қабылдағанда ғана жабылады.

Егер біз мынадай код жазсақ:


procedure Tform1.FormCloseQuery(Sender: Tobject; var CanClose: Boolean);
begin
  CanClose:=False;
end;


онда тұтынушы бағдарламаны тіпті де жаба алмайды, тек оны Windows-тың Міндеттер Диспетчерін/Диспетчер задач/ қолданып қана орындай алады.



12. Ішкі бағдарламаларды құру және оларды қолдану


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

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

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

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

Ішкі бағдарламаларды сипаттау Procedure немесе function түйінді сөздерінен басталып, содан соң жақшаға алынған оның параметрлерінің тізімдері жазылады. Функция жағдайында әрі қарай қос нүкте қойылып, қайтарылған мәннің типі көрсетіледі. Соңында ( ; ) міндетті түрде қойылуы қажет. Ал ішкі бағдарламаның коды түгелімен логикалық жақшаның ішіне жазылады. Функция үшін кодта функция арқылы қайтарылған мән меншіктелуі қажет. Ішкі програмаларды жалпы түрде жазайық:


procedure Процедура_аты(параметрлері);
begin
 Процедура коды;
end;

   function Функция_аты(параметрлері): нәтиже_типі;
   
begin
    Функция коды;
    Result:=
нәтиже;
   
end;


Осылай сипатталған ішкі бағдарламалар негізгі бағдарламаға ол орындалуға шақырылғанға дейін орналастырылуы тиіс. Бұл орындалмаған жағдайда компиляция кезінде « белгісіз идентификатор» деген хабарлама шығады. Ал оны бақылап отыру оңай емес. Бұдан шығатын жол – ол ішкі бағдарламалардың тақырыбын бағдарламаның барлық мәліметтерін сипаттайтын орынға орналастыру.

Мұндағы параметрлер - өзара үтірмен ажыратылған, қос нүктеден соң типі көрсетілген идентификаторлар тізімі.

Егер тізімде түрлі типтегі идентификаторлар бірнешеу болса, онда олар бір-бірінен (; ) арқылы ажыратылып жазылады. Бәрі де жалпы мәліметтерді сипаттаудағыдай. Бұларды формальды параметрлер дейді.

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

Ішкі бағдарламада параметрлер болмауы да мүмкін, ол кезде олар негізгі бағдарламадағы мәліметтердің өзімен операциялар орындай береді.

Енді жергілікті мәліметтер ұғымын енгізу керек. Бұл мәліметтер ішкі програмаларды шақыру кезінде ғана болатын және пайдаланылатын айнымалылар, тұрақтылар мен ішкі бағдарламалар. Олар осы ішкі бағдарламада сипатталуы тиіс. Оның сипатталу орны – тақырып пен Begin түйінді сөзінің арасы. Жергілікті мәліметтердің аты бас тақырыптағы мәліметтер атымен бірдей болуы мүмкін, ол жағдайда жергілікті айнымалы қолданылады, бірақ одан бас тақырыптағы сол атпен берілген айнымалыға өзгеріс жасалмайды.

Жергілікті процедуралар мен функциялар да тек сол ішкі бағдарламаның ішінде ғана сипатталып, қолданыла алады. Айталық, екі санның қосындысын табу бағдарламасын жазу керек болсын дейік. Ол басқан кезде ішкі бағдарлама орындалатын Пішінге енгізілетін батырмадан (Button компоненті) және операндтарды енгізуге арналған екі енгізу жолынан (Edit компоненттері) тұрады.


Программа суммирования двух чисел


Енді процедураны жазайық:

var
  Form1: TForm1;
  A, B, kosyndy: Integer;

procedure kos(A, B: Integer);
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
 
A:=StrToInt(Edit1.Text);
 B:=StrToInt(Edit2.Text);
 Kos(A, B);
 Caption:=IntToStr(kosyndy);

end;

procedure kos (A, B: Integer);
begin
 
kosyndy:=A+B;
end;


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

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

var
  
Form1: TForm1;
  
A, B, kosyndy: Integer;
  function kos (A, B: Integer): Integer;
implementation
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 
A:=StrToInt(Edit1.Text);
 B:=StrToInt(Edit2.Text);
 kosyndy=kos(A, B);
// бұл жерде ненің, қайдан //алынатындығы әлдеқайда түсінікті сияқты
 
Caption:=IntToStr(kosyndy);
end;

function kos(A, B: Integer): Integer;
begin
 Result:=A+B;
end;

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

Сондықтан бұл кезде ішкі бағдарламаға олардың элементтерінің өз мәндері емес, айнымалы не тұрақтының атындағы сілтеме жіберілетін болады.

Ол өзіміз аты бойынша жібергіміз келген параметрлердің алдына var түйінді сөзінен бұрын жазу арқылы жүргізіледі.


function Kos(A, B: Integer; var Arr: array[1..1000000] of Integer): Integer;


Біздің ішкі бағдарлама мен батырманы басу өңдеуішінің сипаттамасына зер салсақ, онда өңдеуіштің аты алдында (ButtonClick) Tform1 тұрғанын көреміз. Сонымен Delphi ButtonClick- ті Form1 обьектісінің әдісі ретінде құрып тұр. Ал оның алдындағы Т әрпі оның тек обьект әдісі ғана емес, обьект класының әдісі екенін көрсетеді. Мұны көп тереңдетпей айтсақ, біздер енді процедуралар мен функцияларды Tform1 класының әдісі ретінде сипаттау арқылы класс обьектілерін олардың аттарын көрсетпей-ақ пайдалануға мүмкіндік аламыз, бұл бізге өте ыңғайлы. Сонымен бізге ішкі бағдарламада Пішінде орналасқан қандай да бір компонентті (мыс, Button1) пайдаланғымыз келсе, онда оны Form1.Button1.Width:=100; деп емес, енді былай жазамыз:

Button1.Width:=100;   //батырма ені

Мұнда оған қоса оның бірге қондырылған ішкі айнымалыларын (мыс, Sender обьектісі сияқты) пайдалануға мүмкіндік туады. Әрбір өңдеуіште бұл обьект шақырылатын ішкі бағдарлама көзін (біздің мысалда: Sender=Button1 қосынды табу көзін) көрсетеді.

Ішкі бағдарламаны класс әдісі ретінде сипаттай отырып, оны біз Delphi орналастырған – Tform1 класын сипаттау ішіне орналастыруымыз қажет. Button1Click процедурасының сипаттауы қайда орналасқанын қараңыз. Ол үшін Button1Click ішкі бағдарламаның ішіне меңзерді қойып, CTRL+SHIFT және меңзерді басқаратын «жоғары» немесе «төмен» батырмаларын бір уақытта басыңыз. Сонда біз ішкі бағдарламаның сипаттауына көшеміз, ал одан кері қайту үшін сол амалды тағы бір рет орындаңыз. Өз ішкі бағдарламаңыздың сипаттауын жаңа жолдың жанына қойсаңыз, онда TForm1 жазылмайтынын байқайсыз.


13. Delphi – дегі ерекше жағдайлар


Delphi – дегі ерекше жағдайлар тұрақты кездесіп тұрады. Ерекше жағдайлар деп нені айтамыз? Ол нәтижесінде қате пайда болатын және соның негізінде бағдарламаның орындалуы үзілетін жағдай. Мыс, нөлге бөлу – ерекше жағдайдың көп кездесетін түрінің бірі.

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

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


try
үзіндінің негізгі операторлары

excert

үзіндінің балама нұсқасы

end


Мұнда бағдарламаның негізгі бөлімін қамтитын оператордың try/excert бөлімі орындала бастайды. Осы бөлімнің қандай да бір операторында ерекше жағдай туа қалса, онда оның қалған операторлары орындалмай қалдырылады да, бөлімнің балама нұсқасы, яғни excert/end бөлігі орындалады. Ал егер бағдарламада ерекше жағдай байқалмаса, онда оның excert/end бөлігі қалдырылып кетеді.

Ерекше жағдайдың пайда болу/болмауына қарамастан, кодтың үзіндісі орындалуы қажет болған кейбір жағдайларда оны бақылап тексерудің тағы бір нұсқасын енгізуге болады:


try
   операторлар
finally
   
қорытындылаушы әрекеттер
end;


Мұндағы негізгі операторлар дұрыс орындалуы да немесе ерекше жағдай туғызуы да мүмкін. Ал үзіндінің finally бөлігіндегі қорытындылаушы операторлар қандай жағдайда да орындалады.



14. Жолмен жұмыс


Delphi жүйесі жолдан тиісті ақпаратты ала отырып, оны өзімізге керек түрде бейнелеуге мүмкіндік береді. Бұл жүйеде жолды мынадай пішімдерге түрлендіруге болады. Олар:

  • Бүтін және жылжымалы нүктелі бөлшек түріндегі сандық пішім;

  • Уақыт мерзім, уақыт-мерзім пішімі;

  • Символдарды жоғарғы және төменгі регистрлерге түрлендіру;

  • Жолдарды салыстыру, жолдан іздеу жүргізу және ішкі жолдарға көшіру және т.б.

Delphi тікелей жолдармен жұмыста бір ғана, конкатенация, яғни біріктіру операциясын қолдайды. Бұл операция бір жолды басқа жолға біріктіреді:


var S, S1, S2: String;
begin
 S:=S1+S2;
end;

Мұндағы S – қорытқы жол, ал S1,S2 – жолдар. Жолдың ұзындығы, яғни саны Length(S: String) ішкі функциясы арқылы қайтарылады.

Жолмен толыққанды жұмыс атқару үшін мынадай стандартты процедуралар мен функциялар пайдаланылады.

Жолды сандық пішімге және оны керісінше түрлендіру функциялары;

Есептеулерді жүргізу барысында мәліметтерді енгізу және оның нәтижелерін шығару үшін мына фунциялар қолданылады:

IntToStr(N: Integer): String функциясы – N бүтін санын жолға түрлендіреді.

StrToInt(S: String): Integer функциясы – S жолын бүтін санға түрлендіреді.

FloatToStr(X: Extended): String функциясы – Х жылжымалы нүктелі санын жолға түрлендіреді.

StrToFloat(S: String): Extended функциясы – S жолын жылжымалы нүктелі санға айналдырады.


Мерзім мен уақытты түрлендіру процедуралары мен функциялары

Алдымен солардың ағымдағы уақыт пен мерзім туралы ақпарат беретіндерін қарастырайық. Олар:

Now: TdateTime функциясы – ағымдағы мерзім мен уақытты қайтарады.

Now: TdateTime функциясы – ағымдағы мерзімді қайтарады.

Time: TdateTime функциясы – ағымдағы уақытты қайтарады.


Ал мына функциялар оларды құрайтын (жыл, ай, күн, апта күні, сағат, минут, секунд, миллисекунд) шамалармен жұмыс атқарады:

DayOfWeek(Date: TDateTime): Integer функциясы – ағымдағы апта күнінің нөмірін қайтарады, мыс: 1-жексенбі, 7-сенбі.

DecodeDate(Date: TDateTime; var Year, Month, Day: Word) процедурасы – Date мерзімге бөледі: мұнда,Year – жыл, Month – ай, Day – күн.

DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word) процедурасы – Time уақытқа бөледі: мұнда, Hour - сағат, Min - минут, Sec - секунд, Msec – миллисекунд.

EncodeDate(Year, Month, Day: Word): TdateTime функциясы – Year – жыл, Month – ай, Day – күн мәндерін TdateTime типінің мәндеріне біріктіреді.

EncodeTime(Hour, Min, Sec, MSec: Word): TdateTime функциясы – Hour - сағат, Min - минут, Sec - секунд, Msec – миллисекунд мәндерін TdateTime типінің мәндеріне біріктіреді.


Енді мерзім мен уақытты TDateTime пішімінен жолдық пішімге ауыстыратын функцияларды қарастырайық:

DateTimeToStr(DateTime: TDateTime): String функциясы – мерзім мен уақытты жолға түрлендіреді.
DateToStr(Date: TDateTime): String
функциясы – мерзімді жолға түрлендіреді.

TimeToStr(Time: TDateTime): String функциясы – уақытты жолға түрлендіреді.


Мына функциялар қайтарылатын жолдардың параметрлерімен жұмыс атқарады:

AnsiLoverCase(const S: String): String функциясы – төменгі регистрге түрленген S жолын қайтарады.

AnsiUpperCase(const S: String): String функциясы – жоғарғы регистрге түрленген S жолын қайтарады.
Length(const S: String): Integer
функциясы – S жолындағы символдар санын қайтарады.

Trim(const S: String): String функциясы – S жолдағы бастапқы және соңғы бос орындар мен басқарушы символдарды жояды

TrimLeft(const S: String): String функциясы - S жолдағы бастапқы бос орындар мен басқарушы символдарды жояды.
TrimRight(const S: String): String  функциясы - S жолдағы соңғы бос орындар мен басқарушы символдарды жояды.

Мына функциялар екі жолды өзара салыстырады:

AnsiCompareStr(const S1, S2: String): Integer функциясы - S1 мен S2 жолдарын символдар регистрін есепке ала отырып салыстырады. Егер S1S2 болса, >0 мәнін қайтарады.

AnsiCompareText(const S1, S2: String): Integer  функциясы - S1 мен S2 жолдарын символдар регистрін ескермей-ақ салыстырады. Егер S1S2 болса, >0 мәнін қайтарады.


Ал мына функциялар ағымдағы жолдардан алынып тасталатын немесе қосылатын ішкі жолдарды іздестіреді:

Pos(Substr: String; Str: String): Integer функциясы – Str жолына SubStr-дің алғашқы ену позициясын(индексін) қайтарады. Егер Str жолында SubStr жоқ болса, оған 0 қайтарылады.

Insert(Source: String; var S: String; Index: Integer): Integer функциясы – S жолына нөмірі Index-ке тең символдан басталатын Source жолын қосады.
Delete(var S: String; Index, Count: Integer): Integer функциясы - S жолынан нөмірі
Index-ке тең символдан басталатын және Count –қа дейінгі символдардан тұратын ішкі жолды жояды.


Мынау жол бөліктерін көшіретін функция:

Copy(S: String; Index, Count: Integer): Integer  функциясы - S жолына нөмірі Index-ке тең символдан басталатын және Count –қа дейінгі символдардан тұратын ішкі жолды қайтарады.

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


Мынау соның дайын функциясы:

function RealToStr(X: Real; Count: Integer): String; //Count - үтірден кейінгі цифр саны
var S: String;
    N: Integer;
begin
  S:=FloatToStr(X); // үтірден кейінгі ұзын цифрлар тізбегі
  N:=Pos(',', S);   //жолдағы үтір позициясы
  N:=N+Count;   // үтірден кейінгі қажетті таңбалар саны //берілген жолдың ұзындығын есептеу
  Result:=Copy(S, 1, N);
end;


























II. Бағдарлама құрып үйрену

Бұл бөлімде біз алдыңғы 1- бөлімде оқып танысқан Delphi бағдарламалау тілі бойынша білігімізді осы визуалды ортада пайдалана білуге көмектеседі-ау деген төмендегідей практикалық жұмыстарды орындау арқылы жалғастырамыз.

Ескерту

Delphi ортасында бағдарламалау жұмыстарын қазақ тілінде орындау үшін пішінді ашқан бойда (Form1) ең алдымен Object Inspector терезесінің Properties астарында Font қасиетінің тұсындағы (...) көп нүктеде шертеміз, сонда ашылған Шрифт терезесінде қазақ қарпін (біздің жағдайда: Times New Roman) таңдауымыз керек. Міне осы әрекеттен соң ғана пішіндегі барлық жазбалар қазақ тілінде жазылатын болады, ал ол қаріпті үлкейтіп-кішірейту жұмысы сол Шрифт терезесінде бұрынғыша атқарылады.


Практикалық жұмыстар


1. «Менің бірінші бағдарламам»


Жұмыстың мақсаты – мына әрекеттерді орындайтын бағдарлама құру:

1. Бағдарламаны іске қосқанда төмендегі терезе көрінеді.


hello_html_m35ce2f95.png

1-сурет.


2. Бағдарламадан шығу үшін тышқанмен «Жабу» батырмасын шерту қажет.



Бағдарламаны жүзеге асыру жоспарының сипаттамасы

1. Жаңа жоба ашу.

2. Пішінге Label белгісі мен Button батырмасын орнату.

3. Мына кестеде жазылған әрекеттерді орындау:

1 - кесте.

Белгі-ленген нысан

Object Inspector терезесінің астары

Қасиеттің аты/ Оқиғаның аты

Атқарылатын әрекет

Form1

Properties

Caption(жазу)

Пішінге «Жоба1» атын орнату

Color(Түс)

clmoneyGreen түсін таңдау


Label1

(Standard астары)




Properties


Caption

«Менің алғашқы бағдарла-мам» жазу мәтінін енгізу

AutoSize

(Автотаңдау)

Қасиеттің мәніне: True енгізу

Font - Color

clYellow түсін таңдау

Button1

(Standard астары)

Properties

Caption

Батырмаға «Жабу» атын орнату

Events

OnClick

Close;

4.Жобаны сақтаңыз, оны іске қосып, жұмыс істеуін тексеріңіз.

















2. Консольдық қолданба құру

Жұмыстың мақсаты: Консольдық бағдарлама құру.

1.Бас мәзірден File > New > Other (Файл> Жаңа > Басқа) командасын орындап, шыққан сұхбат терезедегі New астарынан Console Application (Консольдық қолданба) белгісін таңдау.

hello_html_m6cff4ea8.png

2-сурет

2.OK батырмасын басқан соң экран енді мына түрде көрінеді:

hello_html_13be2497.png

3-сурет

3.Мәтін Delphi арқылы автоматты түрде генерацияланды. Оны жасалатын қолданбаның нобайы деуге болады. Бұл мәтінде негізінде ештеңе өзгертпеуге де болады – ол дайын бағдарламаға сәйкес келеді. Дегенмен, кейбір өзгерістер енгізейік.


hello_html_cb91ec9.png

4-сурет


hello_html_74b5387a.png

5-сурет







3. «Сәлемдесу»


Жұмыстың мақсаты - мына әрекеттерді орындайтын бағдарлама құру:

1.Бағдарлама іске қосылғаннан кейін тышқанмен «Сәлемдесу» батырмасын басқанда «Алғашқы жетістігім» хабарламасын шығару.

hello_html_m390cf9d4.png

6-сурет.

2. Бағдарламадан шығу үшін тышқанмен «Жабу» батырмасын шерту керек.


Бағдарламаны орындау жоспарының сипаттамасы.

1.Жаңа жоба ашу.

2.Пішінге: Label белгісі мен екі Button батырмаларын орналастыру.

3.Мына кестеде жазылған әрекеттерді орындау:

2-кесте

Белгі-ленген нысан

Object Inspector терезесінің астары

Қасиеттің аты/ Оқиғаның аты

Атқарылатын әрекет

Form1

Properties

Caption

Пішінге «Жоба 2» атын орнату

Label1

Properties

Caption

Жазбаға «Алғашқы жетістігім» мәтінін енгізу

Button1

Properties

Caption

Батырмаға«Сәлемдесу» атын орнату

Events

OnClick

Label1.Caption:='Алғашқы жетістігім'

Button2

Properties

Caption

Батырмаға«Жабу» атын орнату

Events

OnClick

Close;

4.Жобаны сақтаңыз, сосын оны іске қосып, орындалуын тексеріңіз.


Өздігінше орындауға арналған тапсырма.

1. Шығарылатын «Алғашқы жетістігім» сөзінің қаріпін стандарттан түрі, түсі және өлшемі бойынша өзгеше етіп жазу.

Көмек: Object Inspector-да Font қасиетінің оң жағында екі рет шерту.

2. «Шығу» батырмасының түрін тартымдылау түрге ауыстыру.

Көмек: Батырманы ауыстыру үшін, әуелі бастапқыны өшіріңіз, ал басқа BitBtn-ды компоненттер палитрасының Additional астарынан табасыз. Содан кейін оның түрін Kind қасиетінің көмегімен өзгертіңіз.

3. «Сәлемдесу» батырмасын басқаннан соң экранда «Бұл жұмысымыздың соңы болмасын!» деген хабарлама шығатын етіңіз.

Көмек: Button1 батырмасының OnClick оқиғасына әсері кезіндегі Label1 белгісінің Caption қасиетінің мәнін өзгертіңіз.


Бағдарламаның листингі:

unit Unitl; interface uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;

TForm1 = class(TForm) Labell: TLabel; Buttonl: TButton; BitBtnl: TBitBtn;

procedure ButtonlClick(Sender: TObject);

private

{Private declarations }

public

{Public declarations } end;

var

Forml: TForml;

implementation

{$R *.DFM)

procedure TForml.ButtonlClick(Sender: TObject);

begin

Label1.Caption:= 'Бұл жұмысымыздың соңы болмасын!';

end;

end.



4. Пішіннің тақырыбын өзгерту


Жұмыстың мақсаты – Мына әректтерді орындайтын бағдарлама құру: 1. Бағдарламаны іске қосқанда мәтіндік өріске мәтін шығару.

hello_html_4082e8f7.png

7-сурет


2. «Терезе тақырыбын өзгерту» батырмасын тышқанмен шерткенде, терезенің тақырыбы өзгеруі тиіс.


hello_html_m75ad337c.png

8-сурет


3. Терезенің тақырыбын Enter пернесін басу арқылы өзгерту.

4. Бағдарламадан шығу үшін тышқанмен тақырып жолындағы жабу батырмасын шерту қажет.


Бағдарламаны іске асыру жоспарының сипаттамасы

1. Жаңа жоба ашу.

2. Пішінге Label белгісі, Button батырмасы, Edit мәтіндік өрісі компоненттерін орналастыру.

3. Мына кестеде көрсетілген әрекеттерді орындау:

3-кесте

Белгі-ленген нысан

Object Inspector терезесінің астары

Қасиеттің аты/ Оқиғаның аты

Атқарылатын әрекет

Forml

Properties

Caption

Пішінге «Жоба 3» атын орнату

Labell (Standard астары)

Properties

Caption

Мәтіндік өріске «Жаңа тақырып енгізіңіз:» мәтінін енгізу

Editl (Standard астары)

Properties

Text

Text қасиетінің мәнін тазарту

Buttonl (Standard астары)

Properties

Caption

Батырмаға «Терезе тақыры-бын өзгерту» атын орнату

Default

Ашылған тізімнен True мәнін таңдау

Events

OnClick

Form1.Caption := Edit1.Text;

4. Жобаны сақтаңыз, оны іске қосып, орындалуын тексеріп көріңіз.


Өздігінше орындауға арналған тапсырма.

Мына әрекеттерді орындайтын бағдарлама құру:

1. Бағдарламаны іске қосқанда: евро мен доллардың ағымдағы курстарын енгізуге арналған екі жол; ақшаның сомасын теңгемен енгізуге арналған жол; евро және доллармен ақшаның эквивалентін шығаруға арналған екі жол бейнеленуі қажет.

hello_html_m54333c91.png

9-сурет


2. Евро мен доллардың ағымдағы курсын енгізіңіз.

3. Ақша сомасын теңгемен енгізіңіз.

4. «Эквивалентті есептеңіз» батырмасын тышқанмен шерткенде, ақша сомасы евро және доллармен шығуы тиіс.

5. Евро мен доллар үшін жаңа ағымдағы курсты енгізіңіз.

6. Жаңа ақша сомасын теңгемен енгізіңіз.

7. «Эквивалентті есептеңіз» батырмасын тышқанмен шерткенде, жаңа ақша сомасы евро және доллармен шығуы тиіс.

8. Бағдарламадан шығу үшін тышқанмен тақырып жолындағы жабу батырмасын шерту қажет.













5. «Қозғалмалы батырма»


Жұмыстың мақсаты – мына әрекеттерді орындайтын бағдарлама құру:

1. Батырманы тышқанмен шерткенде, ол батырма не тоқтауы не қозғалуы тиіс.


hello_html_m704f74b.png

10-сурет.


2. Бағдарламадан шығу үшін тышқанмен тақырып жолындағы жабу батырмасын шерту қажет.


Бағдарламаны іске асыру жоспарының сипаттамасы

1. Жаңа жоба ашу.

2. Пішінге мына компоненттерді: Button батырмасын, Timer таймерін орналастыру. Мұнда батырма таймерді іске қосады және ажыратады, ал таймер батырманы қозғалтады.

3. Мына кестеде көрсетілген әрекеттерді орындау:

4 - кесте

Белгі-ленген нысан

Object Inspector терезесінің астары

Қасиеттің аты/ Оқиғаның аты

Атқарылатын әрекет

Forml

Properties

Caption

Пішінге «Қозғалмалы батырма» атын орнату

Timerl

Properties

Enabled

Enabled қасиетіне Enabled = false мәнін орнату

Enabled қасиеті таймердің қосылып не қосылмай тұрғанын анықтайды (әдетте ол қосулы болады).

Interval

Interval = 100

Interval қасиеті OnTimer оқиғасының пайда болу аралығын миллисекундпен анықтайды(әдетте ол интервал 1 секундқа тең).


Events

OnTimer

Button1.Left := Button1.Left - 5; if Button1.Left < 10

then Button1.Left := 100;

Buttonl

Properties

Caption

Батырмаға «ОК» атын орнату

Default

Ашылған тізімнен True мәнін таңдау

Events

OnClick

Timer1.Enabled := not Timer1.Enabled;

4. Жобаны сақтаңыз, оны іске қосып орындалуын тексеріп көріңіз.





















6. «Альбом»


Жұмыстың мақсаты – Мына әрекеттерді орындайтын бағдарлама құру:

1. Бағдарламаны іске қосқанда терезеде сурет бейнеленеді.

hello_html_2ec61197.png

11-сурет


2. Суретті тышқанмен шерткенде сұхбат терезесі пайда болады.

3. Осы ашылған сұхбат терезеде кезкелген суретті таңдаңыз.

hello_html_m3cecaeef.png

12- сурет


4. Бағдарламадан шығу үшін тышқанмен тақырып жолындағы жабу батырмасын шерту қажет.


Бағдарламаны іске асыру жоспарының сипаттамасы

1. Жаңа жоба ашу.

2. Пішінге мына компоненттерді: Panel жақтауын, Image суретін, OpenDialog сұхбат терезесін орналастыру.

3. Мына кестеде көрсетілген әрекеттерді орындау:

5 - кесте

Белгі-ленген нысан

Object Inspector терезесінің астары

Қасиеттің аты/ Оқиғаның аты

Атқарылатын әрекет

Forml

Properties

Caption

Пішінге «Альбом» атын орнату

Panell

(Standard астары)

Properties

Caption

Caption қасиетінің мәнін тазарту

BevelOuter

Ашылған тізімнен bvLowered мәнін таңдау

BevelInner

Ашылған тізімнен bvNone мәнін таңдау

BewelWidth

2 мәнін меншіктеу

Width

241 мәнін меншіктеу

Height

185 мәнін меншіктеу

Imagel

(Additional астары)

Properties

Left

2 мәнін меншіктеу

Top

2 мәнін меншіктеу

Width

237 мәнін меншіктеу

Height

181 мәнін меншіктеу

Stretch

True қасиетін қосу

Picture

Құрушы батырма көмегімен Picture Editor (Кескін редакторы) сұхбат терезесін ашу. Load (Жүктеу) батырмасын шерткенде - Load Picture (Суретті жүктеу) сұхбат терезесі ашылады. C:\Windows бумасын ашып және одан ... файлды таңдап,

Ашу/Открыть батырмасын шерту. Сурет редакторы терезесіне оралып, ОК батырмасын шерту.

Image1.Picture.LoadFromFile (OpenDialog1.FileName);

Events

OnClick

OpenDialog1.Execute;

OpenDialog1

(Dialogs астары)

Properties

Title

"Кескінді таңдау" мәтінін енгізу

FileName

Файлға апаратын жолды толық енгізу: C:\Windows\Pec.bmp

Filter

Мәтін енгізу: Растрлық кескін

DefaultExt

Қасиетіне: .bmp мәнін меншіктеу

Options

ofFileMustExit ішкі қасиетіне (Файл бар болуы қажет) True мәнін меншіктеу


4. Жобаны сақтаңыз, оны іске қосып, орындалуын тексеріп көріңіз.

Ішкі бағдарламаның листингі:

procedure TForm1.Image1Click (Sender: TObject); begin

OpenDialog1.Execute;

Image1.Picture.LoadFromFile (OpenDialog1.FileName); end;













7. Мәзірмен /Менюмен/ жұмыс


Жұмыстың мақсаты – мына әрекеттерді орындайтын бағдарлама құру:

1. Бағдарлама іске қосылғанда терезеде мәзір жолы (Файл, Шығу) бейнеленеді.

hello_html_m6b1aafe8.png

13-сурет


2. Файл мәзірі пунктін таңдаған кезде мәзірдің (Суреттер, Шығу) hello_html_mec402a6.png

пункттері пайда болады. 14-сурет

3. Суреттер мәзірі пунктін таңдаған кезде екі пункттен (Ата-ана, АӘД сабағы) тұратын ішкі мәзір көрінеді.

4. Тышқанның оң жақ батырмасын шерткенде контекстік мәзір шығады.

5. Пункттер бойынша басқа сурет таңдау.

6. Бағдарламадан шығу үшін тышқанмен тақырып жолындағы жабу батырмасын шерту қажет.

7. Егер Шығу пунктінің қайсысын таңдасаңыз да, бағдарлама жұмысы аяқталады.


Бағдарламаны іске асыру жоспарының сипаттамасы

1. Жаңа жоба ашу.

2. Пішінге мына компоненттерді: Panel жақтауын, Image суретін, OpenDialog сұхбат терезесін орналастыру.

3. Мына кестеде көрсетілген әрекеттерді орындау:

6 - кесте

Белгі-ленген нысан

Object Inspector терезесінің астары

Қасиеттің аты/ Оқиғаның аты

Атқарылатын әрекет

Forml

Properties

Caption

Пішінге «Менің мәзірім» атын орнату

Events

OnMouseDown

Var p:TPoint; begin

p.X :=X;

p.Y :=Y;

p := ClientToScreen (p); PopupMenu1.Popup (p.X, p.Y); end;

Мәзір редакторын іске қосу (пішіндегі мәзір белгісін екі рет шерту)

Forml.MainMenul

Properties (Object Inspector терезесінде ешбір нысан таңдалмаған)

Caption

Мәзір пунктіне - Файл мәтінін енгізіп, сосын Enter-ді басу. Жүйе оған N1 атын меншіктейді.

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

Forml.MainMenul

Properties

Caption

Мәзір пунктіне - Шығу мәтінін енгізіп, сосын Enter-ді басу. Жүйе оған N2 атын меншіктейді.

Events (Мәзір жолындағы Шығу пункт-інде шерту)

N2Click

Close;

Файл пунктінде шертіңіз. Мәзір редакторы осы пункт ішінен тағы бір дайындама әзірлеп қойды. Бұл дайындама жұмыс істеп тұрған бағдарламаның Файл пунктін таңдаған кезде ашылатын мәзірге арналған. Дайындамаларды пайдаланып, осы мәзірден мынадай екі пункт құрыңыз: Суреттер (система оған N3 атын меншіктейді) және Шығу (N4). Мәзір редакторында Суреттер пунктін таңдап, сосын Ctrl + Оңға пернелерін бірге басыңыз.

N4: TMenuItem

Events

OnClick

Ашылатын тізімнен бұрыннан бар N2Click өңдеуіш-процедураны таңдаймыз

Forml.MainMenul

Properties

Caption

Мәзір пунктіне – Ата-ана мәтінін енгізіп, сосын Enter-ді басу. Жүйе оған N5 атын меншіктейді.

N5: TMenuItem

Events (Пішіндегі Ата-ана пунктіндегі мәзір жолынан таңдау)

OnClick

Image1.Picture.LoadFromFile('C:\Documents and Settings\М±ратбек\Мои документы\Мои рисунки\Atanam.bmp');

Forml.MainMenul

Properties

Caption

Мәзір пунктіне – АӘД сабағы мәтінін енгізіп, сосын Enter-ді басу. Жүйе оған N6 атын меншіктейді.

N6: TMenuItem

Events (АӘД сабағы пунктіндегі мәзір жолынан таңдау)

OnClick

Image1.Picture.LoadFromFile ('C:\Documents and Settings\М±ратбек\Мои документы\Мои рисунки\NvpSp1.bmp');

Мәзір редакторының терезесін жауып, енді мәзір жолы бағдарлама-ның бас Пішінінде пайда болатындығына көз жеткізіңіз.

PopupMenu

(Standard астары)

Properties

Caption

Мәзір пунктіне – Ата-ана мәтінін енгізіп, сосын Enter-ді басу. Жүйе оған N7 атын меншіктейді.

Caption

Мәзір пунктіне – АӘД сабағы мәтінін енгізіп, сосын Enter-ді басу. Жүйе оған N8 атын меншіктейді.

N7

Events

OnClick

Ашылатын тізімнен бұрыннан бар N5Click өңдеуіш-процедураны таңдаймыз

N8

Events

OnClick

Ашылатын тізімнен бұрыннан бар N6Click өңдеуіш-процедураны таңдаймыз

Image

(Additional астары)

Properties

Stretch

True мәнін меншіктеу


4. Жобаны сақтаңыз, сосын оны іске қосып, орындалуын тексеріп көріңіз.


Ішкі бағдарламаның листингі

procedure TForm1.N2Click (Sender: TObject);

begin

Close; end;

procedure TForm1.N5Click (Sender: TObject); begin

Imagel.Picture.LoadFromFile ('C:\Documents and Settings\М±ратбек\Мои документы\Мои рисунки\Atanam.bmp '); end;

procedure TForm1.N6Click (Sender: TObject); begin

Imagel.Picture.LoadFromFile ('C:\Documents and Settings\М±ратбек\Мои документы\Мои рисунки\NvpSp1.bmp'); end;

procedure TForml.FormMouseDown

(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X. Y: Integer); var p:TPoint; begin

p.X :=X; p.Y :=Y;

p := ClientToScreen (p); PopupMenul.Popup (p.X, p.Y); end;























8. Сөйлем құраушы

Жұмыстың мақсаты – мына әрекеттерді орындайтын бағдарлама құру:

1. Бағдарлама іске қосылғанда терезеде үш өріс бейнелеу.

hello_html_m249a94e6.png

15-сурет


2. «Кездейсоқ таңдау» батырмасын тышқанмен шерткенде үш сөзден тұратын кездейсоқ сөйлем құрау.

hello_html_m3cce182d.png

16-сурет


3. Бағдарламадан шығу үшін тышқанмен тақырып жолындағы жабу батырмасын шерту қажет.


Бағдарламаны іске асыру жоспарының сипаттамасы

1. Жаңа жоба ашу.

2. Пішінге мына компоненттерді: тізімі бар үш ComboBox өрісін, Button батырмасын орналастыру.

3. Мына кестедегі әрекеттерді орындау:



7 - кесте

Белгі-ленген нысан

Object Inspector терезесінің астары

Қасиеттің аты/ Оқиғаның аты

Атқарылатын әрекет

Form1

Properties

Caption

Пішінге «Сөйлем құраушы» атын орнату

Events

OnCreate

ComboBox1.ItemIndex :=0;

ComboBox2.ItemIndex :=0; ComboBox3.ItemIndex :=0;

ComboBoxl

(Standard астары)

Properties

Style

Ашылатын тізімнен cSDropDownList мәнін таңдаңыз

Items

Құрушы батырманы шертіңіз. Сонда String List Editor (Жолдар тізімінің редакторы) терезесі ашылады. Әр жолға бір-бірден тізім пункттерін енгізіп, оның соңынан Enter-ді басып отырыңыз. Тізім дайын болған соң ОК батырмасын шертіңіз.


ComboBox2

(Standard астары)

Properties

Style

Ашылатын тізімнен cSDropDownList мәнін таңдаңыз

Items

Құрушы батырманы шертіңіз. Сонда String List Editor (Жолдар тізімінің редакторы) терезесі ашылады. Әр жолға бір-бірден тізім пункттерін енгізіп, оның соңынан Enter-ді басып отырыңыз. Тізім дайын болған соң ОК батырмасын шертіңіз.

ComboBox3

(Standard астары)

Properties

Style

Ашылатын тізімнен cSDropDownList мәнін таңдаңыз

Items

Құрушы батырманы шертіңіз. Сонда String List Editor (Жолдар тізімінің редакторы) терезесі ашылады. Әр жолға бір-бірден тізім пункттерін енгізіп, оның соңынан Enter-ді басып отырыңыз. Тізім дайын болған соң ОК батырмасын шертіңіз.

Buttonl

(Standard астары)

Properties

Caption

Батырмаға «Кездейсоқ таңдау» атын орнату

Events

OnClick

ComboBox1.ItemIndex := Random(ComboBox1.ItemIndex); ComboBox2.ItemIndex := Random(ComboBox2.ItemIndex); ComboBox3.ItemIndex := Random(ComboBox3.ItemIndex);


4. Жобаны сақтаңыз, оны іске қосып орындалуын тексеріп көріңіз.

8 - кесте

Зат есімдер тізімі

Үстеулер тізімі

Әрекеттер тізімі

Мысық

Тез

жүзеді

Жылан

Биік

жүгіреді

Шегіртке

Жәй

ұшады

Дельфин

Күшті

жорғалайды

Қарлығаш

Жақсы

секіреді

Тасбақа

Нашар

тығылады


Ішкі бағдарлама листингі

procedure TForm1.OnCreate (Sender: TObject); begin

Randomize;

ComboBox1.Itemlndex :=0; ComboBox2.ItemIndex :=0; ComboBox3.ItemIndex :=0; end;

procedure TForml.ButtonlClick (Sender: TObject); begin

ComboBox1.ItemIndex := Random(ComboBox1.ItemIndex); ComboBox2.ItemIndex := Random(ComboBox2.ItemIndex); ComboBox3.ItemIndex := Random(ComboBox3.ItemIndex); end;



9. Көбейту кестесі


Жұмыстың мақсаты – мына әрекеттерді орындайтын бағдарлама құру.

1. Бағдарлама іске қосылғанда екі жылжытпа бейнеленуі тиіс.

2. Екі сан мәнін таңдап, солардың көбейтіндісін табу.

3. Егер бір ғана сан таңдалса, онда оның квадараты табылады.

hello_html_m32570dac.png

17-сурет


4. Бағдарламадан шығу үшін тақырып жолындағы Жабу батырмасын шерту керек.


Бағдарламаны іске асыру жоспарының сипаттамасы

1.Жаңа жоба ашу.

2.Пішінге мына компоненттерді: Button басқару батырмасын, TrackBar жылжытпасын, GroupBox жақтауын, Label жазуын және CheckBox жалаушасын орналастыру.

3.Мына кестедегі әрекеттерді орындау:


9 - кесте

Белгі-ленген нысан

Object Inspector терезесінің астары

Қасиеттің

аты/

Оқиғаның

аты

Атқарылатын әрекет

Forml

Properties

Caption

Пішінге «Көбейту кестесі» атын орнату

TrackBarl

(Win32 астары)

Properties

Min(Минимум)

2 мәнін меншіктеу

Max(Максимум)

99 мәнін меншіктеу

Position (орны)

2 мәнін меншіктеу

LineSize (шағын өзгеріс)

1мәнін меншіктеу

PageSize

(Парақтық өзгеріс)

7 мәнін меншіктеу

Frequency (белгілеу жиілігі)

7 мәнін меншіктеу

Events

OnChange

Label1.Caption :=

IntToStr(TrackBar1.Position); Label3.Caption :=

IntToStr(TrackBar1.Position * TrackBar2.Position); if CheckBox1.Checked then TrackBar2.Position :=TrackBar1.Position;

TrackBar2

(Win32 астары)

Properties

Min (Минимум)

2 мәнін меншіктеу

Max (Максимум)

99 мәнін меншіктеу

Position (орны)

2 мәнін меншіктеу

LineSize (шағын өзгеріс)

1 мәнін меншіктеу

PageSize

(Парақтық өзгеріс)

7 мәнін меншіктеу

Frequency (Белгілеу жиілігі)

7 мәнін меншіктеу

Events

OnChange

Label2.Caption :=

IntToStr(TrackBar2.Position); Label3.Caption :=

IntToStr(TrackBar1.Position * TrackBar2.Position); if CheckBox1.Checked then TrackBar1.Position := TrackBar2.Position;

GroupBoxl

(Standard астары)

Properties

Caption

«Көбейтінді» жазуын енгізу

Labell

(Standard астары)

Properties

AutoSize (Автотаңдау)

False мәнін орнату

Caption

2 мәнін меншіктеу

Alignment (туралау)

taRightJustify мәнін орнату(оң жақ шеті бойынша туралау)

Label2

(Standard астары)

Properties

AutoSize

False мәнін орнату

Caption

2 мәнін меншіктеу

Alignment

taRightJustify мәнін орнату(оң жақ шеті бойынша туралау)

Label3

Standard астары)

Properties

AutoSize

False мәнін орнату

Caption

4 мәнін меншіктеу

Alignment

taRightJustify мәнін орнату(оң жақ шеті бойынша туралау)

CheckBoxl

(Standard астары)

Properties

Caption

"Квадрат" жазуын енгізу

Alignment

taRightJustify мәнін орнату(оң жақ шеті бойынша туралау)

Events

OnClick

TrackBar2.Position := TrackBar1.Position;


4. Жобаны сақтаңыз, оны іске қосып, орындалуын тексеріп көріңіз.



Ішкі бағдарламаның листингі:

procedure TForm1.TrackBar1Change (Sender: TObject); begin

Label1.Caption := IntToStr(TrackBar1.Position);

Label3.Caption := IntToStr(TrackBar1.Position * TrackBar2.Position);

if CheckBox1.Checked then TrackBar2.Position := TrackBar1.Position;

end;

procedure TForm1.TrackBar2Change (Sender: TObject); begin

Label2.Caption := IntToStr(TrackBar2.Position); Label3.Caption := IntToStr(TrackBar1.Position * TrackBar2.Position); if CheckBox1.Checked then TrackBar2.Position := TrackBar1.Position; end;

procedure TForm1.CheckBox1Click (Sender: TObject); begin

TrackBar2.Position := TrackBar1.Position; end;


Өздігінше орындауға арналған тапсырма

1. Бағдарламаны тек екі орынды сандардың ғана емес, 2-199 аралығындағы үш орынды сандардың да көбейтіндісін табатындай етіп өзгертіңіз.

2. Бағдарламаны екі санның қосындысын табуға арнап өзгертіңіз.





















10. Фигураларды қозғалту


Жұмыстың мақсаты – мына әрекеттерді орындайтын бағдарлама құру:

1. Бағдарлама іске қосылғанда екі айналдыру жолағын бейнелеу. Тік жолақ вертикаль қозғалысты, ал көлденең жолақ горизонталь қозғалысты басқаруы қажет.

2. Тышқан көрсеткішін фигуралардың біріне апарып, олардың қай жолақпен байланысты екенін таңдай алу.

hello_html_5c0f92b4.png

18-сурет


3. Терезедегі фигуралар қозғалысы аймағын шектеуге көмегі болатын қосымша нысандар қажет болады.

4. Айналдыру жолағы іске қосылған кезде, онда ол ЖОҒАРЫ, ТӨМЕН, СОЛҒА, ОҢҒА, PAGE UP, PAGE DOWN пернелерімен де басқарылуы тиіс.

5. Бағдарламадан шығу үшін тақырып жолындағы Жабу батырмасын шерту керек.


Бағдарламаны іске асыру жоспарының сипаттамасы

1. Жаңа жоба ашу.

2. Пішінге мына компоненттерді: Panel тақтасын, ScrollBar айналдыру жолақтарын, Shape фигураларын орналастыру.

3. Қосымша логикалық типті num айнымалысын енгізу. Егер num True мәнін қабылдаса, онда ағымдағы ретінде бірінші фигура саналады. Сонда екінші фигура False мәніне ие. Бұл айнымалы барлық процедуралар үшін қол жетімді болуы тиіс.

4. Мына кестеде көрсетілген әрекеттерді орындау:

10 - кесте

Белгі-ленген нысан

Object Inspector терезесінің астары

Қасиеттің

аты/

Оқиғаның

аты

Атқарылатын әрекет

Forml

Properties

Caption

Пішінге «Фигураларды қозғалту» атын орнату

Panel

(Standard астары)

Properties

Height

161 мәнін меншіктеу

Width

161 мәнін меншіктеу

Caption

Қасиет мәнін тазарту

ScrollBarl

(Standard астары)

Properties

Min

5 мәнін меншіктеу

Max

145 мәнін меншіктеу

Position

76 мәнін меншіктеу

SmallChange

2 мәнін меншіктеу



LargeChange

(үлкен өзгеріс)

20 мәнін меншіктеу

Events

OnChange

if num then Shape1.Left := ScrollBar1.Position else Shape2.Left := ScrollBar1.Position

ScrollBar2

(Standard астары)

Properties

Kind

sbVertical мәнін таңдау. Сонда көлденең жолақ тік жолаққа айналады.

Min

5 мәнін меншіктеу

Max

145 мәнін меншіктеу

Position

76 мәнін меншіктеу

SmallChange (шағын өзгеріс)

2 мәнін меншіктеу

LargeChange

20 мәнін меншіктеу

Events

OnChange

if num then Shape1.Top := ScrollBar2.Position else Shape2.Top := ScrollBar2.Position

Shapel

(Additional астары)

Properties

Height

11 мәнін меншіктеу

Width

11 мәнін меншіктеу

Left

76 мәнін меншіктеу

Top

76 мәнін меншіктеу

Shape (Түр)

stCircle (шеңбер) мәнін таңдау

Brush (Қылқалам)

Color-дың(қылқалам түсі) ішкі қасиеті үшін clAqua (көгілдір түс) мәнін таңдау

Events

OnMouseMove

(Тышқанды қозғалтқан кезде)

Shape1.Brush.Color := clAqua;

Shape1.Brush.Color :=

clFuchsia;

Num := True;

ScrollBar1."">Shape1.Left;

ScrollBar2."font-size: 11pt">Shape1.Top;

Shape2

(Additional астары)

Properties Events

Height

11 мәнін меншіктеу

Width

11 мәнін меншіктеу

Left

76 мәнін меншіктеу

Top

76 мәнін меншіктеу

Shape

stSquare (Квадрат) мәнін таңдау

Brush



OnMouseMove

Color -дың(қылқалам түсі) ішкі қасиеті үшін clFuchsia (сия көк түс) мәнін таңдау

Алдыңғыға ұқсас Shape2

5. Жобаны сақтаңыз, оны іске қосып, орындалуын тексеріп көріңіз.


Ішкі бағдарламаның листингі:

procedure Tform1.ScrollBar1Change (Sender: TObject);

begin

if num then Shape1.Left := ScrollBar1.Position else Shape2.Left := ScrollBar1.Position

end;

procedure Tform1.ScrollBar2Change (Sender: TObject); begin

if num then Shape1.Top := ScrollBar2.Position else Shape2.Top := ScrollBar2.Position

end;

procedure Tform1.Shape1MouseMove

(Sender: TObject; Shift: TShiftState; X, Y: Integer);

begin

Shape1.Brush.Color := clAgua; Shape1.Brush.Color := clFuchsia; Num := True;

ScrollBar1.; ScrollBar2.; end;

procedure Tform1. Shape2MouseMove

(Sender: TObject; Shift: TShiftState; X, Y: Integer);

begin

Shape2.Brush.Color := clFuchsia; Shape2.Brush.Color := clAgua; Num := False;

ScrollBar1.; ScrollBar2.; end;

procedure Tform1. FormCreate (Sender: TObject); begin

num := True; end;
















11. Пайызды есептеу


Жұмыстың мақсаты - мына әрекеттерді орындайтын бағдарлама құру:

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

2. Бірінші өріске сан енгізіледі. Екінші өріске пайыз енгізіледі. Сонда «Есептеу» батырмасын басқанда үшінші өрісте санның есептелген пайызы шығуы тиіс.

hello_html_344c6b49.png

19-сурет


3. «Тазарту» батырмасы басылғанда өріс тазарады. Әрі қарай өріске жаңа мән енгізіле береді.

4. Бағдарламадан шығу үшін тақырып жолындағы «Жабу» батырмасын шерту керек.


Бағдарламаны іске асыру жоспарының сипаттамасы

1. Жаңа жоба ашу.

2. Пішінге мына компоненттерді: Button басқару батырмасын, Label жазуын, Edit мәтіндік өрісін орналастыру.

3. Мына кестеде жазылған әрекеттерді орындау:

11 - кесте

Белгі-ленген нысан

Object Inspector терезесінің астары

Қасиеттің

аты/

Оқиғаның

аты

Атқарылатын әрекет

Form1

Properties

Caption

Пішінге «Пайызды есептеу» атын орнату

Label1

Properties

Caption

«Пайызды есептеу» атын енгізу

Edit1

Properties

Text

Қасиеттің мәнін тазалау

Edit2

Properties

Text

Қасиеттің мәнін тазалау

Edit3

Properties

Text

Қасиеттің мәнін тазалау

Button1

Properties

Caption

«Есептеу» атын енгізу

Events

OnClick

Number, Procent, Prn айнымалыларын сипаттау

Button2

Properties

Caption

«тазарту» мәнін енгізу

Events

OnClick

Editl.Text:-''; Edit2.Text:=''; Edit3.Text:='';

4. Жобаны сақтаңыз, оны іске қосып орындалуын тексеріп көріңіз.


Бағдарлама үзіндісі.

var

Number, Procent, Prn: Real; procedure TForm1.Button1Click(Sender: TObject); begin

Number:=StrToFloat(Edit1.Text); Procent:= StrToFloat(Edit2.Text); PrN:=0.01*Procent*Number; Edit3.Text:=FloatToStr(PrN); end;

procedure TForm1.Button2Click(Sender: TObject); begin

Edit1.Text:=''; Edit2.Text:=''; Edit3.Text:=''; end;
















12. Ллойд басқатырғышы


Жұмыстың мақсаты - Самуэл Ллойд басқатырғышының біреуінің компьютерлік нұсқасын жасау: Берілген сандар жиынынан қосындысы 50-ге тең болатын сандарды таңдау керек.

Ллойдтың өз басқатырғышы үшін таңдаған сандары мыналар:

25, 27, 3, 12, 6, 15, 9, 30, 21, 19.

hello_html_1f5caf4a.png

20-сурет


Мына әрекеттерді орындау:

1. Бағдарлама іске қосылғанда терезеде Ллойдтың сандары көрінеді.

2. Сандарды жалаушаның көмегімен таңдап, оларды оң жақ терезеге орналастырамыз.

3. Таңдалған сандардың қосындысы жазба түрінде шығады.

4. Бағдарламадан шығу үшін тақырып жолындағы «Жабу» батырмасын шерту қажет.


Бағдарламаны іске асыру жоспарының сипаттамасы.

1. Жаңа жоба ашу.

2. Пішінге мына компоненттерді: CheckListBox жалаушаларының тізімін, Label жазуын, ListBox тізімін орналастыру.

3. Мына 13-кестеде көрсетілген әрекеттерді орындау:




12 - кесте

Белгі-

ленген

нысан

Object Inspector терезесінің астары

Қасиеттің

аты/

Оқиғаның

аты

Атқарылатын әрекет

Forml

Properties

Caption

Пішінге «Ллойд басқатырғышы» атын орнату

BorderStyle

bsSingle мәнін меншіктеу

CheckListBoxl

(Additional астары )

Properties

Items

Тізім құрамын береміз. Құрушы батырманы шертейік.Сонда String List editor (Жолдар тізімінің редакторы) терезесі ашылады. Тізімге берілген сандарды Enter арқылы енгізіңіз. OK батырмасын басыңыз.

Height

Мәндерді барлық сандар тізімге сиятындай етіп таңдаңыз (айналдыру жолағынсыз).

Events

OnClickCheck

Тізімнің тазаруын сипаттаңыз. Жалаушаның орнатылуын тексеріңіз.Тізімді жаңартқан соң таңдалған сандардың қосындысын есептеу керек. Тізім элементтері сан түрінде көрінгенімен, олар мәтіндік жолдар болып табылады (StrToInt функциясын қолдану қажет).

ListBox1

(Standard астары)

Properties

Height

Мәндерді барлық сандар тізімге сиятындай етіп таңдаңыз (айналдыру жолағынсыз). Алғашында тізім бос тұрады. Ол бағдарламамен жұмыс кезінде толтырылады.

Label1

(Standard астары)

Properties

Caption

«Қосынды: 0» мәтінін енгізіңіз

Autosize

False мәнін беріңіз

Alignment

taCenter мәнін беріңіз

4. Жобаны сақтаңыз, оны іске қосып, орындалуын тексеріп көріңіз.


Ішкі бағдарлама листингі:

procedure TForm1.CheckListBox1ClickCheck (Sender: TObject);

var i, s: Integer;

begin

ListBox1.Clear;

for i: = 0 to CheckListBox1.Items.Count-1 do if CheckListBox1.Checked[i] then ListBox1.Items.Add (CheckListBox1.Items[i]);

s := 0;

for i := 0 to ListBox1.Items.Count -1 do

s := s + StrToInt(ListBox1.Items[i]); Label1.Caption := 'Қосынды: ' + IntToStr(s); if s = 50 then

begin

Label1.Caption := 'Қосынды:' + IntToStr (s); CheckListBox1.Enabled := False; ListBox1.Enabled := False; end;

end;













13. Калькулятор


Жұмыстың мақсаты – кезкелген санмен (ондық бөлшекпен де) қосу мен азайту амалдарын орындай алатын қарапайым калькулятордың бағдарламасын дайындау. 1. Бағдарлама іске қосылғанда калькулятор терезесін шығару.

hello_html_5671a3f9.png

21-сурет


2. Калькулятормен кезкелген санды қосу және азайту амалдарын орындау.

3. Калькуляторды уақытша көрсетпеу үшін тақырып жолындағы «Жиыру», ал бағдарламадан шығу үшін «Жабу» батырмасын шерту керек.

Бағдарламаны іске асыру жоспарының сипаттамасы

1.Жаңа жоба ашу.

2.Пішінге мына компоненттерді: Button батырмасын, Edit мәтіндік өрісін орналастыру.

3.Мына бағдарламаны пайдаланып, Калькуляторды дайындап көріңіз:

var

accum: real; // аккумулятор

oper: integer; // амал: 1 - '+' ; 2 - '-'; // 0 - "орындау"("=" батырмасы)

f: integer; { f = 0 жаңа санның бірінші цифрын күту, мыс, амал орындалған соң, индикаторда нәтиже көрінген кезде.

f = 1 қалған цифрларды күту}

procedure TForm1.Button0Click(Sender: TObject); // 0 батырмасы

begin

if f = 0 // санның бірінші цифры

then begin Edit1.Text := '0'; f := 1; //басқа цифрларды күту end

else if Edit1.Text <> '0' // индикатордағы санның басында бірнеше нөл болмауы үшін

then Edit1.Text := Edit1.Text + '0';

end;

procedure TForm1.Button1Click(Sender: TObject); // 1 батырмасы

begin

if f = 0 // санның бірінші цифры

then begin Edit1.Text := '1'; f := 1; // басқа цифрларды күту end

else Edit1.Text := Edit1.Text + '1';

end;

procedure TForm1.Button2Click(Sender: TObject); // 2 батырмасы

begin

if (f = 0) then begin Edit1.Text := '2'; f := 1; end

else Edit1.Text := Edit1.Text + '2';

end;

procedure TForm1.Button3Click(Sender: TObject); // 3 батырмасы

begin

if f = 0 then begin Edit1.Text := '3'; f := 1; end

else Edit1.Text := Edit1.Text + '3';

end;

procedure TForm1.Button4Click(Sender: TObject); // 4 батырмасы

begin

if f = 0 then begin Edit1.Text := '4'; f := 1; end

else Edit1.Text := Edit1.Text + '4';

end;

procedure TForm1.Button5Click(Sender: TObject); // 5 батырмасы

begin

if (f = 0) then begin Edit1.Text := '5'; f := 1; end

else Edit1.Text := Edit1.Text + '5';

end;

procedure TForm1.Button6Click(Sender: TObject); // 6 батырмасы

begin

if f = 0 then begin Edit1.Text := '6'; f := 1; end

else Edit1.Text := Edit1.Text + '6';

end;

procedure TForm1.Button7Click(Sender: TObject); // 7 батырмасы

begin

if f = 0 then begin Edit1.Text := '7'; f := 1; end

else Edit1.Text := Edit1.Text + '7';

end;

procedure TForm1.Button8Click(Sender: TObject); // 8 батырмасы

begin

if f = 0 then begin Edit1.Text := '8'; f := 1; end

else Edit1.Text := Edit1.Text + '8';

end;

procedure TForm1.Button9Click(Sender: TObject);

begin

if f = 0 then begin Edit1.Text := '9'; f := 1; end

else Edit1.Text := Edit1.Text + '9';

end;

procedure TForm1.ButtonZClick(Sender: TObject); // ондық үтір

begin

if Edit1.Text = '0' then begin Edit1.Text := '0,'; f := 1; end;

if Pos(',',Edit1.Text) = 0 then Edit1.Text := Edit1.Text + ',';

end;

procedure DoOper; // амалдардың орындалуы

var numb: real; // индикатордағы сан

begin // accum алдыңғы амалдар нәтижесінен тұрады

// oper – орындалатын амалдың коды. Операнд индикаторда тұр.

numb := StrToFloat(Form1.Edit1.Text);

case oper of

0: accum := numb;

1: accum := accum + numb;

2: accum := accum - numb;

end;

Form1.Edit1.Text := FloatToStr(accum);

end;

procedure TForm1.ButtonPlusClick(Sender: TObject); // "+" батырмасы

{ мұнда алдыңғы амалды орындап, нәтижені индикаторға шығару керек, сосын ағымдағы амалды еске сақтап және жаңа санның бірінші цифрын күту режимін орнату керек.}

begin

if f = 0 then oper := 1 // амалды еске сақтау

else begin DoOper; // алдыңғы амалды орындау

oper :=1; // ағымдағы амалды еске сақтау f:=0; end;

end;

procedure TForm1.ButtonMinusClick(Sender: TObject); // "-" батырма

begin

if f = 0 then oper := 2 else begin DoOper; oper :=2; f:=0; end;

end;

procedure TForm1.ButtonEnterClick(Sender: TObject); // "=" батырма

begin

if f = 0 then oper := 0 else begin DoOper; oper :=0; f:=0; end;

end;

procedure TForm1.ButtonCClick(Sender: TObject); // "с" - тазарту

begin

Edit1.Text := '0'; accum := 0; oper := 0; f := 0;

end;

// Edit1 өрісінде пернені басу

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

begin

Key := Chr(0); // символдарды көрсетпеу

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

oper := 0;

end;

end.

















14. Жиымдағы кездейсоқ сандардың индексін табу


Жұмыстың мақсаты – жиымдағы кездейсоқ сандардың индексін табатын бағдарлама құру.

Бағдарламаны іске асыру жоспарының сипаттамасы

1. Жаңа жоба ашу.

2. Пішінге мына компоненттерді: Button, Edit, Label орналастыру.

3. Мына кестеде көрсетілген әрекеттерді орындау:

13 - кесте

Белгі-

ленген

нысан

Object Inspector терезесінің астары

Қасиеттің аты/ Оқиғаның аты

Атқарылатын әрекет

Forml

Properties

Caption

Пішінге «Жиым 1» атын орнату

Events

OnCreate

Мәтіндік өрістердің Text қасиетінің мәндерін тазалау

Buttonl

Properties

Caption

«Тазалау» атын енгізу

Events

Onclick

Мәтіндік өрістердің Text қасиетінің мәндерін тазалау

Button2

Properties

Caption

«Жабу» атын енгізу

Events

Onclick

Пішінді Жабу оқиғасын өңдеу

Button3

Properties

Caption

«Элементтің индексін табу» атын енгізу

Events

Onclick

Енгізілген санның индексін табу оқиғасын өңдеу

Button4

Properties

Caption

«Элементті кездейсоқ енгізу» атын енгізу

Events

Onclick

Жиым элементтерін кездейсоқ енгізу

Editl

Properties

Caption

Text қасиетінің мәнін тазалау

Edit2

Properties

Caption

Text қасиетінің мәнін тазалау

Edit3

Properties

Caption

Text қасиетінің мәнін тазалау

4. айнымалыларды енгізу: ik, k, i : integer; s : string; a : array [1..15] of integer.

5. Жобаны сақтап, сосын оны іске қосып, орындалуын тексеріңіз.


Бағдарлама листингі

procedure Tform1.FormCreate(Sender: Tobject); begin

Edit1.Text := ''; Edit2.Text := ''; Edit3.Text := ''; end;

procedure Tform1.Button1Click(Sender: Tobject); begin

Edit1.Text := ''; Edit2.Text := ''; Edit3.Text := ''; end;

procedure Tform1.Button2Click(Sender: Tobject); begin

close;

end;

procedure Tform1.Button3Click(Sender: Tobject); begin

k := StrToInt (Edit2.Text); For i:= 1 to 15 do

if k = a[i] then ik := i; if ik = 0 then Edit3.Text := 'number ubsent' else Edit3.Text := IntToStr (ik);

end;

procedure Tform1.Button4Click(Sender: Tobject); begin

randomize;

s := '';

For i := 1 to 15 do begin

a[i] := random (26); s := concat (s, IntToStr (a[i]), #32); end; Edit1.Text := s; end; end.

Әрекеттер бойынша жобалардың түрлері:

hello_html_69e6cb80.png

22-сурет

hello_html_4b1a7d0b.png

23-сурет


hello_html_m57db8bce.png

24-сурет

hello_html_m33520f4c.png

25-сурет



15. Уақыт есептеуіш


Жұмыстың мақсаты – ағымдағы уақыт пен ағымдағы күнді шығарып, көрсететін бағдарлама құру.


Бағдарламаны іске асыру жоспарының сипаттамасы

1. Жаңа жоба ашу.

2. Пішінге мына компоненттерді: Button, Edit, Label орналастыру.

3. Мына кестеде жазылған әрекеттерді орындау:

14 - кесте

Белгі-

ленген

нысан

Object Inspector терезесінің астары

Қасиеттің аты/ Оқиғаның аты

Атқарылатын әрекет

Form1

Properties

Caption

Пішінге «Таймер» атын орнату

Button1

Properties

Caption

«ағымдағы уақыт» атын енгізу

Events

Onclick

DateTime:=Time; Edit1.Text:=TimeToStr(DateTime);

Button2

Properties

Caption

«Бүгінгі күн» атын енгізу

Events

Onclick

Edit2.Text:=DateToStr(Date);

Edit1

Properties

Caption

Text қасиетінің мәнін тазарту

Edit2

Properties

Caption

Text қасиетінің мәнін тазарту


hello_html_6f825d33.png

26-сурет


Ішкі бағдарлама листингі:

var

DateTime : TdateTime;

procedure Tform1.Button1Click(Sender: Tobject); begin

DateTime:=Time;

Edit1.Text:=TimeToStr(DateTime); end;

procedure Tform1.Button2Click(Sender: Tobject); begin

Edit2.Text:=DateToStr(Date); end; end.



















16. Оятқыш сағат


Жұмыстың мақсаты – көрсетілген уақытта оятатын оятқыш сағаттың бағдарламасын жасау. Пішінде қазіргі уақыт пен ояту уақыты бөлек-бөлек көрсетіліп тұруы тиіс.

hello_html_m3fb03f0c.png

27-сурет


Жұмысты іске асырудың бағдарламасы:

var

Hour,Min: word; // индикатордағы уақыт

AlHour, AlMin: word; //оятқышқа орнатылған уақыт AlHour:AlMin

// бағдарлама жұмысының басталуы

procedure TForm1.FormCreate(Sender: TObject);

begin

Hour := HourOf(Now);

Min := MinuteOf(Now);

Label1.Caption := IntToStr(Hour);

if Min < 10

then Label2.Caption := '0'+IntToStr(Min)

else Label2.Caption := IntToStr(Min);

end;

// таймерден түсетін сигнал

procedure TForm1.Timer1Timer(Sender: TObject);

var

cHour,cMin: word;

begin

// ағымдағы уақытты алу

cHour := HourOf(Now);

cMin := MinuteOf(Now);

if Timer1.Tag = 0 //экрандағы бағдарлама терезесі

then begin

{ ағымдағы уақытпен индикаторда көрінген уақыттың сәйкестігін тексеру}

if cHour <> Hour then

begin

Hour := cHour;

Label1.Caption := IntToStr(Hour);

end;

if cMin <> Min then

begin

Min := cMin;

if min <10

then Label2.Caption := '0' + IntToStr(Min)

else Label2.Caption := IntToStr(Min);

end;

// (:) қос нүктенің жыпылықтауын қаматамасыз ету

if Label3.Visible

then Label3.Visible := False

else label3.Visible := True;

end

else // бағдарлама терезесі жасырылған, сигнал

// жіберу сәтінің келгендігін тексеру

if (cHour = AlHour) and (cMin = AlMin)

// сигнал !

then begin

Form2.Show;

Timer1.Tag := 0;

Timer1.Interval := 1000;

end;

end;

// UpDown1 шерту оятқыш -сағаттың сигнал беру уақытын өзгертеді

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);

begin

if UpDown1.Position < 10

then Label4.Caption := '0' + IntToStr(UpDown1.Position)

else Label4.Caption := IntToStr(UpDown1.Position);

end;

// UpDown1 шерту оятқыш-минуттың сигнал беру уақытын өзгертеді

procedure TForm1.UpDown2Click(Sender: TObject; Button: TUDBtnType);

begin

if UpDown2.Position < 10

then Label5.Caption := '0' + IntToStr(UpDown2.Position)

else Label5.Caption := IntToStr(UpDown2.Position);

end;

// OK батырмасын шерту

procedure TForm1.Button1Click(Sender: TObject);

begin

// оятқышты орнату

AlHour := UpDown1.Position;

AlMin := UpDown2.Position;

Timer1.Tag := 1;

Form1.Hide; //

Timer1.Interval := 3000; // әрбір 3 секунд сайын тексеру

end;

end.

















17. Олимпиада жалауы


Жұмыстың мақсаты – пішін бетінде олимпиада жалауын сызатын бағдарлама құру.

Практическая работа № 27 Олимпийский флаг

28-сурет


Ішкі бағдарлама листингі:

unit Unitl;

{$R *.dfm}

procedure TForm1.FormPaint(Sender: TObject); begin

with Canvas do begin

// жалауша

Canvas.Pen.Width := 1; Canvas.Pen.Color := clBlack; Canvas.Brush.Color := clCream; Rectangle(30,30,150,115);

// сақиналар

Pen.Width := 2;

Brush.Style := bsClear; // шеңбердің ішкі аймағын боямау

Pen.Color := clBlue; Ellipse(40,40,80,80); Pen.Color := clBlack; Ellipse(70,40,110,80); Pen.Color := clRed; Ellipse(100,40,140,80); Pen.Color := clYellow; Ellipse(55,65,95,105); Pen.Color := clGreen; Ellipse(85,65,125,105); end; end;

end.




18. Функция графигін салу


Жұмыстың мақсаты – түрлі функциялар графигін салатын бағдарлама құру. Төменде үлгі үшін сызықтық және квадраттық фукциялардың графиктерін (0-7) аралығында салу қарастырылды. Бағдарламада кезкелген графикті (0-15) аралығында құруға болады.

hello_html_55e6f921.png

29-сурет


hello_html_m7a09d70c.png

30-сурет

hello_html_3bb650f0.png

31-сурет

hello_html_32641cb4.png

32-сурет

Жұмысты орындау бағдарламасы:

unit grafik01;

//GR процедурасын бетінде график сызылатын және өзі басқа //модульде орналасқан Form2 пішіні үшін onPaint оқиғасын өңдеу //процедурасы шақырады.

// Сондықтан функция хабарландыруын басқа модульден шақырып //алу үшін Interface тарауында орналастыру қажет.

procedure gr;

implementation

uses grafik02;

{$R *.dfm}

{ Пішінді құру кезінде StringGrid компонентінің қасиетін орнату:

FixedRows := 0;

RowCount := 2;

Options.goEditing := True;

Options.goTab := True;}

const

COLCOUNT = 15;

var

// функцияның аргументтері мен мәндері

x: array[1..COLCOUNT] of real;

y: array[1..COLCOUNT] of real;

// x,y жиымының мәндері бойынша график салу

procedure gr;

var

i: integer;

x1,x2:real; // функция аргументінің өзгеру шектері

y1,y2:real; // функция мәндерінің өзгеру шектері

l,b:integer; // график шығатын аймақтың сол жақ төменгі бұрышы

w,h:integer; // график шығатын аймақтың ені мен биіктігі

mx,my:real; // X және Y осьтері бойынша масштаб

x0,y0:integer; // координат осьтерінің қиылысу нүктесі

px,py: integer;// пішін бетіндегі графиктің нүкте координаталары

np: integer; // графиктегі нүктелер саны

begin

Form2.Canvas.Rectangle(0,0,Form2.ClientWidth,Form2.ClientHeight);

// график шығатын аймақ

i:=10; // X - сол жақ жоғарғы бұрыш координатасы

b:=Form2.ClientHeight-20; // Y – сол жақ төменгі бұрыш //координатасы

h:=Form2.ClientHeight-40; //биіктігі

w:=Form2.Width-40; // ені

// аргументтің өзгеру шектері мен нүктелер санын анықтау (X //жиымының элементтері өспелі тізбек құрауы тиіс)

x1:=x[1];

i:=1;

while (x[i+1] > x[i]) and (i < COLCOUNT) do i:= i+1;

x2:= x[i]; //x[COLCOUNT-1];

np:=i; // нүктелер саны

if np < 2 then begin

ShowMessage('График нүктелері екіден кем болмауы қажет');

exit;

end;

// функцияның ең үлкен және ең кіші мәндерін табу

y1:=0; y[1]; // минимум

y2:=0; y[1]; // максимум

for i:=1 to np do

begin

if y[i] < y1 then y1:=y[i];

if y[i] > y2 then y2:=y[i];

end;

// масштабты есептеу

my:=h/abs(y2-y1); // Y осі бойынша масштаб

mx:=w/abs(x2-x1); //X осі бойынша масштаб

// координат осьтерінің қиылысу нүктесі

x0:=l+Abs(Round(x1*mx));

y0:=b-Abs(Round(y1*my));

with form2.Canvas do

begin

MoveTo(x0,b);LineTo(x0,b-h); // ось Y

MoveTo(l,y0);LineTo(l+w,y0); // ось X

TextOut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3));

TextOut(l+2,b+2,FloatToStrF(y1,ffGeneral,6,3));

// график салу

for i:=1 to np do

begin

px := x0+Round(x[i]*mx);

py := y0-Round(y[i]*my);

Form2.Canvas.Pen.Color := clRed;

Rectangle(px-2,py-2,px+2,py+2); // маркер

if Form1.CheckBox1.Checked then

// қосу сызығы

if i = 1

then MoveTo(px,py)

else LineTo(px,py);

Form2.Canvas.Pen.Color := clBlack;

// функция мәні және аргументі

TextOut(px-5,py-15,FloatToStr(y[i]));

TextOut(px-5,y0+2, FloatToStr(x[i]));

MoveTo(px,py); // Қаламұшты px,py нүктелеріне қайтару

// өйткені TextOut қаламұш орнын өзгертеді.

end;

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

var

i: integer;

begin

StringGrid1.ColCount := COLCOUNT;

StringGrid1.Cells[0,0] := ' X';

StringGrid1.Cells[0,1] := ' Y';

// Өңдеу: кестені толтыру

for i:=1 to COLCOUNT do

begin

StringGrid1.Cells[i,0] := IntToStr(i-1);

StringGrid1.Cells[i,1] := IntToStr(i-1);

end;

end;

// Құру батырмасын шерту

procedure TForm1.Button1Click(Sender: TObject);

var

i: integer;

begin

// Кестедегі мәндерді функция мәндері мен аргументтерінің //жиымы түрінде қайта жазу

for i:=1 to COLCOUNT-1 do

begin

x[i] := StrToFloat(Form1.StringGrid1.Cells[i,0]);

y[i] := StrToFloat(Form1.StringGrid1.Cells[i,1]);

end;

// Графикті шығару функциясын Form2 үшін OnPaint оқиғасын //өңдеу процедурасы шақырады

if not Form2.Showing

then Form2.Show // Form2 терезесін бейнелеу

else Form2.Repaint;

end;


19. Еске сақтау тесті


Жұмыстың мақсаты – өзіңіздің еске сақтау қабілетіңізді ұштайтын бағдарлама құру.

1. Ол үшін жаңа жоба ашып, сол Пішінге 33-суретте көрсетілген компоненттерді орналастырыңыз.

hello_html_3569544.png

33-сурет


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

hello_html_m6415f67e.png

34-сурет


hello_html_2ed7d663.png

35-сурет


Жұмысты орындау бағдарламасы:

unit essaktau;

implementation

const

KC = 5; // санның разрядтылығы (цифрлар саны)

LT = 10; // сандардың саны (тест ұзындығы)

var

numb: integer; // сыналушы еске сақтауға тиіс сан

; // дұрыс еске сақталған сандар саны

n: integer; // сандар есептеуіші

{$R *.dfm}

// k-разрядты санды генерациялайды

function GetNumb(k: integer) : integer;

var

n: integer; // генерацияланатын сан

i: integer;

begin

// процедура санды үлкенінен бастап разряды бойынша генерациялайды

n:= Random(9)+1; // үлкен разряд нөл бола алмайды

// қалған разрядтар

for i := 1 to (k-1) do

n := n*10 + Random(10);

GetNumb := n;

end;

// пішін құру

procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.Visible := False; // Edit1 енгізу өрісін жасыру

Edit1.MaxLength := KC; // енгізуге болатын символдар саны

Label1.WordWrap := True; // сөзді келесі жолға тасымалдауға рұхсат //беру

Label1.Caption := 'Қазір экранда сандар пайда болады. ' +

'Сіз сол санды еске сақтап, оны пернетақтада теріңіз, сосын Enter басыңыз';

Button1.Caption := 'Бастау';

Timer1.Enabled := False; // таймер тоқтатылды

Timer1.Interval := 1000; // санның көріну уақыты - 1 секунд

right := 0; // дұрыстарының саны

n := 0; // сандарды есептеуіш

Randomize; // ГСЧ инициализациялау

end;

// «Бастау/Аяқтау» батырмасында шерту

procedure TForm1.Button1Click(Sender: TObject);

begin

if Button1.Caption = 'Аяқтау' then

Form1.Close; // бағдарлама терезесін жабу

if Button1.Caption = 'Бастау' then

begin

Button1.Caption := 'Аяқтау';

Button1.Visible := False; // батырманы жасыру

// Button1 батырмасы сынақ аяқталған соң ғана қол жетімді //болады

Label1.Caption := '';

Label1.Font.Size := 24; // Label1өрісінің қаріп өлшемі

Edit1.Font.Size := 24; // Edit1 өрісінің қаріп өлшемі

// санды генерациялау және шығару

numb := GetNumb(KC);

Label1.Caption := IntToStr(numb);

Timer1.Enabled := True; // таймерді іске қосу

// таймерден түскен сигналды өңдеу процедурасы санды //«өшіреді»

end;

end;

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

procedure TForm1.Timer1Timer(Sender: TObject);

begin

Timer1.Enabled := False; // таймерді тоқтату

Label1.Visible := False; // санды жасыру

Edit1.Visible := True; // Edit1 өрісін қол жетімді ету

Edit1.SetFocus; // Edit1 өрісіне көрсеткішті орнату

end;

// Edit1 өрісінде пернені басу

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

var

igrok: integer; // сыналушы енгізген сан

begin

case Key of

'0'..'9',#8: ; // "0"-"9" пернелері,

#13: // пернесі

begin

igrok := StrToInt(Edit1.Text);

if (igrok = numb)

then right := right + 1;

n := n + 1; // сандар есептеуіші

Edit1.Text := '';

Edit1.Visible := False; // Edit1 өрісін жасыру

if n < LT then

begin

numb := GetNumb(KC); // келесі санды генерациялау

Label1.Caption := IntToStr(numb); // санды бейнелеу

Label1.Visible := True;

Timer1.Enabled := True; // таймерді іске қосу

End // сынақ аяқталды

else begin // нәтиже шығару

Label1.Font.Size := 10;

Label1.Caption := 'Нәтиже:' + #13 +

'Көрінген сандар: ' + IntToStr(LT) + #13 +

'Дұрысы: ' + IntToStr(right);

Label1.Visible := True;

Button1.Visible := True; // «Аяқтау» батырмасы көрінеді

end;

end;

else Key := Chr(0);

end;

end;

end.













20. Электр тізбегінің кедергісін табу


Жұмыстың мақсаты – физика пәні бойынша электр тізбегінің кедергісін есептейтін бағдарлама құру.

1. Ол үшін жаңа жоба ашып, 36-суретте көрсетілген компоненттерді Пішінге орналастырыңыз.

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

hello_html_m461e3c0.png

36-сурет


Жұмысты атқару бағдарламасы:

unit kedergy;

// Есептеу батырмасында шерту

procedure TForm1.Button1Click(Sender: TObject);

var

r1,r2: real; // кедергілердің шамалары

r: real; // тізбек кедергісі

begin

// бастапқы мәліметтерді алу

r1 := StrToFloat(Edit1.Text);

r2 := StrToFloat(Edit2.Text);

if (r1 = 0) and (r2 = 0) then

begin

ShowMessage('Ең болмағанда бір кедергінің мәні берілуі тиіс');

exit;

end;


hello_html_m206fd6cd.png

37-сурет


// RadioButton1және RadioButton2 ауыстырып қосқыштары бір-//біріне тәуелді, сондықтан қосылу типі жайлы ауыстырып //қосқыштың біреуінің жағдайы арқылы білуге болады

if RadioButton1.Checked

then // Тізбектей ауыстырып қосқышы таңдалды

r:= r1+r2

else // Параллель ауыстырып қосқышы таңдалды

r:= (r1*r2)/(r1+r2);

Label4.Caption := 'Тізбек кедергісі: ';

if r < 1000 then

Label4.Caption := Label4.Caption +

FloatToStrF(r,ffGeneral,3,2) + ' Ом'

else

begin

r:=r/1000;

Label4.Caption := Form1.Label4.Caption +

FloatToStrF(r,ffGeneral,3,2) + ' Ом';

end

end;

// Тізбектей ауыстырып қосқышында шерту

procedure TForm1.RadioButton1Click(Sender: TObject);

begin

// Пайдаланушы қосылу типін өзгертті

Label4.Caption := '';

end;

// Параллель ауыстырып қосқышында шерту

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

// Пайдаланушы қосылу типін өзгертті

Label4.Caption := '';

end;

end.

hello_html_m69e1364e.png

38-сурет







21. Ом заңы


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

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


Жұмысты орындау бағдарламасы:

unit om_;

{$R *.dfm}

// Токты, кернеуді не кедергіні есептеу

procedure Calculate;

var

I,U,R: real; // ток, кернеу, кедергі

hello_html_m17293154.png

39-сурет


begin

if Form1.RadioButton1.Checked then

// ток

begin

U := StrToFloat(Form1.Edit1.Text);

R := StrToFloat(Form1.Edit2.Text);

if (R <> 0) then

begin

I := U/R;

Form1.Label3.Caption := 'Ток: ' + FloatToStrF(I,ffFixed,4,2) + ' А';

end

else ShowMessage('Кедергі нөлге тең болмауы тиіс.');

exit;

end;

if Form1.RadioButton2.Checked then

// кернеу

begin

I := StrToFloat(Form1.Edit1.Text);

R := StrToFloat(Form1.Edit2.Text);

U := I*R;

Form1.Label3.Caption := 'Кернеу: ' + FloatToStrF(U,ffFixed,4,2) + ' В';

exit;

end;

if Form1.RadioButton3.Checked then

// кедергі

begin

U := StrToFloat(Form1.Edit1.Text);

I := StrToFloat(Form1.Edit2.Text);

if (I <> 0) then

begin

R := U/I;

Form1.Label3.Caption := 'Кедергі: ' + FloatToStrF(R,ffFixed,4,2) + ' Ом';

end

else ShowMessage('Ток нөлге тең болмауы тиіс.');

end;

end;

// Ток ауыстырып қосқышын таңдау

hello_html_73604883.png

40-сурет


procedure TForm1.RadioButton1Click(Sender: TObject);

begin

Label1.Caption := 'Кернеу (вольт)';

Label2.Caption := 'Кедергі (Ом)';

Label3.Caption := '';

end;

// Кернеу ауыстырып қосқышын таңдау hello_html_69f28fe.png

41-сурет

procedure TForm1. RadioButton2Click(Sender: TObject);

begin

Label1.Caption := 'Ток (ампер)';

Label2.Caption := 'Кедергі (Ом)';

Label3.Caption := '';

end;

// Кедергі ауыстырып қосқышын таңдау

hello_html_44aa0f31.png

42-сурет


procedure TForm1.RadioButton3Click(Sender: TObject);

begin

Label1.Caption := 'Кернеу (вольт)';

Label2.Caption := 'Ток (ампер)';

Label3.Caption := '';

end;

// Edit1өрісінде пернені басу

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

begin

case Key of

'0'..'9',#8: ; // цифрлар және

#13: Edit2.SetFocus; // пернесі

'.',',':

begin

if Key = '.'

then Key := ',';

// үтір белгісін қайта енгізуге мүмкіндік бермейді

if Pos(',',Edit1.Text) <> 0

then Key := Chr(0);

end;

else Key := Chr(0);

end;

end;

//Edit2 өрісінде пернені басу

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

begin

case Key of

'0'..'9',#8: ;

#13: Calculate; // батырмасы - есептеу

'.',',':

begin

if Key = '.'

then Key := ',';

// үтір белгісін қайта енгізуге мүмкіндік бермейді

if Pos(',',Edit2.Text) <> 0

then Key := Chr(0);

end;

else Key := Chr(0);

end;

end;

// Есептеу батырмасында шерту

procedure TForm1.Button1Click(Sender: TObject);

begin

if (Edit1.Text <> '') and (Edit2.Text <> '')

then Calculate // токты, кернеу не кедергіні есептеу

else ShowMessage('Екі өріске де бастапқы мәндер енгізілуі керек');

end;

end.








22. Спортсменнің жүгіру жылдамдығын есептеу


Жұмыстың мақсаты – спортсменнің жүгіру жылдамдығын есептей-тін бағдарлама құру.

1. Ол үшін жаңа жоба ашып, төмендегі 43-суретте көрсетілген компоненттерді сол Пішінге орналастырыңыз.

hello_html_1c62f4e.png

43-сурет


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


Жұмысты орындау бағдарламасы:

unit zhygyru;

{$R *.dfm}

// Дистанция өрісіндегі пернені басу

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

begin

// Key – басылған пернеге сәйкес символ.

// Егер символ рұхсат етілмеген болса, онда процедура оны коды нөлге тең символға ауыстырады. Соның нәтижесінде символ редакциялау өрісінде көрінбейді, сол себепті пайдаланушы бағдарлама кейбір пернелердің басуына әсер етпейді деп ойлап қалады.

// пернелер.

case Key of

'0'..'9': ; // цифрлар

#8 : ; //

#13: Edit2.SetFocus; // - Уақыт өрісіндегі көрсеткіш: //минут

// басқа символдарға – рұхсат етілмейді

else Key :=Chr(0); // символды бейнелемеу

end;

end;

// Уақыт өрісіндегі пернені басу:минут

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

begin

case Key of

'0'..'9': ;

#8 : ; //

#13: Edit3.SetFocus; // - Уақыт өрісіндегі көрсеткіш:секунд

// басқа символдарға – рұхсат етілмейді

else Key :=Chr(0); //символды бейнелемеу

end;

end;

// Уақыт өрісіндегі пернені басу:секунд

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

begin

case Key of

'0'..'9': ;

',','.' : // ондық таңбалы бөлгіш

begin

Key := DecimalSeparator;

if Pos(DecimalSeparator,Edit3.Text) <> 0

then Key := Char(0);

end;

#8 : ; //

#13 : Button1.SetFocus; // - Есептеу батырмасына //фокустау

// басқа символдарға – рұхсат етілмейді

else Key :=Chr(0); // символды бейнелемеу

end;

end;

// Есептеу батырмасында шерту

procedure TForm1.Button1Click(Sender: TObject);

var

dist : integer; // дистанция, метрмен

min : integer; // уақыт, минутпен

sek : real; // уақыт, секундпен

v: real; // жылдамдық

begin

// бастапқы мәліметтерді енгізу өрісінен алу

dist := StrToInt(Edit1.Text);

min := StrToInt(Edit2.Text);

sek := StrToFloat(Edit3.Text);

// дистанция мен уақыт нөлге тең болмауы тиіс

if (dist = 0) or ((min = 0) and (sek = 0)) then

begin

ShowMessage('Дистанция мен уақытты көрсету керек.');

exit;

end;

// есептеу

v := (dist/1000) / ((min*60 + sek)/3600);

// нәтиже шығару

label5.Caption := 'Дистанция: '+ Edit1.Text + ' м' + #13 +

'Уақыт: ' + IntToStr(min) + ' мин ' +

FloatToStrF(sek, ffGeneral,4,2) + ' сек ' + #13 +

'Жылдамдық: ' + FloatToStrF(v,ffFixed,4,2) + ' км/сағ';

end;

// Аяқтау батырмасында шерту

procedure TForm1.Button2Click(Sender: TObject);

begin

Form1.Close; // Бас пішінді жабу – бағдарлама жұмысын аяқтау

end;

end.

hello_html_m788bea92.png

44-сурет























23. Файл іздеу


Жұмыстың мақсаты – қажетті файлды іздеп табатын бағдарлама құру.

1. Ол үшін Пішінге мына суретте көрсетілген компоненттерді орнату.

2. Буманы таңдаңыз, оны Шолу арқылы көрсетуге болады, содан соң файлдың немесе оның кеңейтілімін көрсетіп, Табу батырмасын басыңыз.

3. Төменде файл іздеудің бағдарламасы берілген.

hello_html_67c22a01.png

45-сурет


Бағдарламасы:

// Файлды көрсетілген каталогтан не ішкі каталогтан іздеуде Find //рекурсивтік процедурасы қолданылады.

unit FindFile_;

{$R *.dfm}

var

FileName: string; // ізделінді файл не маска аты

cDir: string;

n: integer; // сұранысты қанағаттандыратын файл саны

// файлды ағымдағы каталогтан іздеу

procedure Find;

var

SearchRec: TSearchRec; //файл не каталог жайлы хабарлама

begin

GetDir(0,cDir); // ағымдағы каталог атын алу

if cDir[length(cDir)] <> '\' then cDir := cDir+'\';

if FindFirst(FileName, faAnyFile,SearchRec) = 0 then

repeat

if (SearchRec.Attr and faAnyFile) = SearchRec.Attr then

begin

Form1.Memo1.Lines.Add(cDir + SearchRec.Name);

n := n + 1;

end;

until FindNext(SearchRec) <> 0;

// ағымдағы каталогтың ішкі каталогтарын өңдеу

{ Егер жүйелік каталог өңделмесе, онда faAnyFile орнына faDidertory беріледі. Мұның себебі мынада: жай каталог үшін SearchRec.Attr мәні faDirectory (16), ал Program Files үшін - faDirectory+faReadOnly (17), Windows каталогы үшін - faDirectory+faSysFile (20) тең.}

if FindFirst('*', faAnyFile, SearchRec) = 0 then

repeat

if (SearchRec.Attr and faDirectory) = faDirectory then

// каталогтар .. және . тағы да каталогтар, бірақ оған кірудің //қажеті жоқ !!!

if SearchRec.Name[1] <> '.' then

begin

// Form1.Memo1.Lines.Add('>>>>'+SearchRec.Name);

ChDir(SearchRec.Name);// каталогқа кіру

Find; // іздеуді ішкі каталогта орындау

ChDir('..');// каталогтан шығу

//Form1.Memo1.Lines.Add('<<<<'+SearchRec.Name);

end;

until FindNext(SearchRec) <> 0;

end;

// Іздеу батырмасында шертуhello_html_m51ada391.png

46-сурет


procedure TForm1.Button1Click(Sender: TObject);

begin

if not DirectoryExists(Edit2.Text) then

begin

ShowMessage('Каталог дұрыс көрсетілмеді.');

Edit2.SetFocus;

exit;

end;

Button1.Enabled := False;

Label4.Caption := '';

Label4.Repaint;

Memo1.Clear; // Memo1өрісін тазарту

Label4.Caption := '';

FileName := Edit1.Text; // не іздейміз

cDir := Edit2.Text; // қайдан іздейміз

n:=0; // табылған файлдар саны

ChDir(cDir); // каталогтағы іздеудің басына бару

Find; // іздеуді бастау

if n = 0 then

ShowMessage('Іздеу критерийін қанағаттандыратын файлдар жоқ.')

else Label4.Caption := 'Табылған файлдар:' + IntToStr(n);

Button1.Enabled := True;

end;

// пайдаланушы таңдаған каталогты қайтарады

function GetPath(mes: string):string;

var

Root: string; // түпкі каталог

pwRoot : PWideChar;

Dir: string;

begin

Root := ''; //түпкі каталог – Жұмыс столы бумасы

GetMem(pwRoot, (Length(Root)+1) * 2);

pwRoot := StringToWideChar(Root,pwRoot,MAX_PATH*2);

if SelectDirectory(mes, pwRoot, Dir)

then

if length(Dir) = 2 // пайдаланушы түпкі каталогты таңдады

then GetPath := Dir+'\'

else GetPath := Dir

else

GetPath := '';

end;

// Бума батырмасын шерту

procedure TForm1.Button2Click(Sender: TObject);

var

Path: string;

begin

Path := GetPath('Буманы таңдаңыз');

if Path <> ''

then Edit2.Text := Path;

end;

end.




24. Файлға жазба қосу


Жұмыстың мақсаты – Файлға жазба қосу әрекетін орындау мүмкіндігін беретін бағдарлама құру.

1. Ол үшін жаңа жоба ашып, мына 47-суреттегі компоненттерді Пішінге орналастырыңыз.

hello_html_m666b0ae4.png

47-сурет

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


Бағдарламасы:

unit RewAp_;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

f: TextFile; // файл

fName: String[80]; // файлдың аты

i: integer;

begin

if not OpenDialog1.Execute

then

exit;

// Пайдаланушы файлды таңдады

fName := OpenDialog1.FileName;

AssignFile(f, fName);

Rewrite(f); // қайта жазу үшін ашу

// файлға жазу

for i:=0 to Memo1.Lines.Count do // жолдар нөлден бастап //нөмірленеді

writeln(f, Memo1.Lines[i]);

CloseFile(f); // файлды жабу

MessageDlg('Мәліметтер файлға қосылды. ', mtInformation, [mbOk],0);

end;

hello_html_1474a9e8.png

48-сурет

procedure TForm1.Button2Click(Sender: TObject);

var

f: TextFile; // файл

fName: String[80]; // файлдың аты

i: integer;

begin

fName := Edit1.Text;

AssignFile(f, fName);

Append(f); // жазба қосу үшін ашу

// файлға жазу

for i:=0 to Memo1.Lines.Count do // жолдар нөлден бастап //нөмірленеді

writeln(f, Memo1.Lines[i]);

CloseFile(f); // файлды жабу

MessageDlg('Жазбалар файлға қосылды ',mtInformation,[mbOk],0);

end;

end.

25. Файлдан оқу


Жұмыстың мақсаты – Файлдан оқуға мүмкіндік жасайтын бағдарлама құру.

1. Жаңа жоба ашып, Пішінге 49-суретте бейнеленген компоненттерді орнатыңыз.

hello_html_m8ea01bf.png

49-сурет

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

Бағдарламасы:

// мәтіндік файлды редакциялау-қарап шығу

unit rd1_;

{$R *.dfm}

// Ашу батырмасын шерту

procedure TForm1.Button1Click(Sender: TObject);

var

f: TextFile; // файл

fName: String[80]; // файл аты

buf: String[80]; // жолды оқуға арналған буфер

begin

if not OpenDialog1.Execute

then {пайдаланушы сұхбатты Болдырмау батырмасын шертіп жапты}

exit;

// пайдаланушы файлды таңдады

fName := OpenDialog1.FileName;

Form1.Caption := fName;

AssignFile(f, fName);

try

Reset(f); // оқу үшін ашу

except

on EInOutError do

begin

ShowMessage('файлға қатынас жасауда қате кетті '+ fName);

exit;

end;

end;

// файлдан оқу

hello_html_40c3e250.png

50-сурет


while not EOF(f) do

begin

readln(f, buf); //мәтін жолын файлдан оқу

Memo1.Lines.Add(buf); // жолды Memo1 өрісіне қосу

end;

CloseFile(f); // файлды жабу

end;

procedure TForm1.FormCreate(Sender: TObject);

begin // сүзгіні анықтау

OpenDialog1.Filter := 'Мәтін|*.txt';

end;

end.

26. Жұлдыздар


Жұмыстың мақсаты – терезенің кезкелген жерінен тышқанның батырмаларымен шерткенде жұлдыздар шығаратын бағдарлама құру.

1. Жаңа жоба ашып, Пішінге 51-суретте көрсетілгендей компонент-терді орналастырыңыз.

hello_html_52d5b4d4.png

51-сурет


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


Жұмысты орындау бағдарламасы:

unit Zhuldyzdar_;

{$R *.dfm}

// жұлдыз салады

procedure TForm1.StarLine(x0,y0,r: integer);

// x0,y0 – жұлдыз центрінің координатасы

// r – жұлдыз радиусы

var

p : array[1..11] of TPoint; // сәулелер мен ойыстар //координаталарының жиымы

a: integer; // ОХ осі мен жұлдыз центрін және сәуле не ойыс //ұшын қосатын түзу арасындағы бұрыш

i: integer;

begin

a := 18; // оң жақ көлденең сәуледен бастап салу

for i:=1 to 10 do

begin

if (i mod 2 = 0) then

begin // ойыс

p[i].x := x0+Round(r/3*cos(a*2*pi/360));

p[i].y:=y0-Round(r/3*sin(a*2*pi/360));

end

else

begin // сәуле

p[i].x:=x0+Round(r*cos(a*2*pi/360));

p[i].y:=y0-Round(r*sin(a*2*pi/360));

end;

a := a+36;

end;

p[11].X := p[1].X; // жұлдыз контурын тұйықтау үшін

p[11].Y := p[1].Y;

Canvas.Polyline(p); // жұлдыз контурын сызу

end;

// тышқан батырмасын басу

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

if Button = mbLeft // сол жақ батырма басылды ма?

then Canvas.Pen.Color := clBlack

else Canvas.Pen.Color := clRed;

StarLine(x, y, 30);

end;

end.









27. Мәліметті басып шығару


Жұмыстың мақсаты – кестемен берілген мәліметтерді басып шығаратындай бағдарлама құру.

1. Жаңа жоба ашып, сол Пішінге 52-суретте көрсетілген компоненттерді орнатыңыз.

hello_html_1a4fd945.png

52-сурет


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


Бағдарламасы:

{ Бағдарлама тек басып шығаруды ғана орындайды. }

unit malymet_;

{$R *.dfm}

uses Printers;

procedure TForm1.FormCreate(Sender: TObject);

var

i: integer;

begin

with StringGrid1 do

begin

Cells[0,0] := ' №';

Cells[1,0] := ' Аты-жөні';

Cells[2,0] := ' Білімі';

Cells[3,0] := ' Санаты';

Cells[4,0] := ' Өтілі';

for i:=1 to 10 do

Cells[0,i] := ' '+IntToStr(i);

end;

end;


// Басып шығару батырмасында шерту

procedure TForm1.Button2Click(Sender: TObject);

const

LEFT_"> TOP_">var

dpiX, dpiY : integer; // Принтердің X және Y бойынша шығару //мүмкіндігі

kx,ky: real; // экран координатын принтердің Х және Y бойынша //координатына айналдыру коэффициенті

// кесте

p: array[0..4] of integer; // бағандар орны

x1,y1,x2,y2: integer; // кестенің шекаралары

px,py: integer; // шығу нүктесінің көрсеткіші

i,j: integer;

begin

{ Экран мен принтердің шығару мүмкіндіктері әр түрлі, енді олардағы кескін өлшемдерін сәйкестеу үшін экран нүктелерінің координатын принтер координатына түрлендіретін коэффициентке көбейту керек. Ол принтердің мүмкіндігіне байланысты. Мыс, принтердің шығаруы 300 dpi болса, онда экрандікі -96 dpi, сонда коэффициент 300/96=3.125-ке тең.}

// GetDeviceCaps функциясы құрылымдар сипаттамасын алуға //мүмкіндік береді

// LOGPIXELSX -X бойынша дюймге келетін пикселдер саны

dpiX := GetDeviceCaps(Printer.handle,LOGPIXELSX);

dpiY := GetDeviceCaps(Printer.handle,LOGPIXELSY);

kx := dpiX / Screen.PixelsPerInch;

ky := dpiY / Screen.PixelsPerInch;

px := Round(LEFT_"> py := Round(TOP_">

// кесте бағандарының «принтерлік» координаттарын есептеу

p[0] := px;

for i:=1 to 4 do

begin

p[i] := p[i-1] + Round(StringGrid1.ColWidths[i-1]* kx);

end;

with Printer do

begin

BeginDoc; // басып шығаруды ашу

// кестенің тақырыбы

Canvas.Font.Name := Edit1.Font.Name;

Canvas.Font.Size := Edit1.Font.Size;

Canvas.TextOut(px,py,Edit1.Text);

// StringGrid1кестенің құрамы

py := py+ Round(Edit1.Font.Size * 2 * ky);

x1 := px; y1 := py; // кестенің сол жақ жоғарғы бұрышы

Canvas.Font.Name := StringGrid1.Font.Name;

Canvas.Font.Size := StringGrid1.Font.Size;

x2 := p[4] + Round(StringGrid1.ColWidths[4]* kx);

y2 := py +

Round(StringGrid1.RowCount * StringGrid1.RowHeights[1] * ky);

for j:=0 to StringGrid1.RowCount do

begin

// кестенің жолдары

for i:=0 to StringGrid1.ColCount do

begin

Canvas.TextOut(P[i],py,StringGrid1.Cells[i,j]);

// көлденең сызық

Canvas.MoveTo(p[0],py);

Canvas.LineTo(x2,py);

end;

py:=py+ Round(StringGrid1.RowHeights[j]* ky);

end;

// тік сызық

for i:=0 to StringGrid1.ColCount -1 do

begin

Canvas.MoveTo(p[i],y1);

Canvas.LineTo(p[i],y2);

end;

Canvas.MoveTo(x2,y1);

Canvas.LineTo(x2,y2);

EndDoc; // басып шығаруды жабу

end; end; end.

.





























28. Тир


Жұмыстың мақсаты – біршама ойнауға, өзіңнің шалт қимылыңды көрсетуге арналған тир ойынының бағдарламасын құру.

1. Ол үшін жаңа жоба ашып, сол Пішінге қажетті компоненттерді орналастырыңыз.

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

hello_html_20aedc37.png

53-сурет


Жұмысты орындау бағдарламасы:

unit tir_;

public

{ Public declarations }

{процедуралар хабарламасының мұнда орналасуы, бет бейнесі салынатын пішінге процедура жақын болсын дегендіктен }

procedure PaintFace(x,y: integer); // бет бейнесін салады

procedure EraseFace(x,y: integer); // бет бейнені өшіреді

end;

var

Form1: TForm1;

fx,fy: integer; // бет бейненің координаттары

n: integer; // тышқан батырмасын шерту саны

p: integer; // тигізу саны

implementation

// бет бейнені салу

procedure TForm1.PaintFace(x,y: integer);

begin

Canvas.Pen.Color := clBlack; // сызықтар түсі

Canvas.Brush.Color := clYellow; // боялым түсі

// бет бейнені салу

Canvas.Ellipse(x,y,x+30,Y+30); // беті

Canvas.Ellipse(x+9,y+10,x+11,y+13); // сол көзі

Canvas.Ellipse(x+19,y+10,x+21,y+13); //оң көзі

Canvas.Arc(x+4,y+4,x+26,y+26,x,y+20,x+30,y+20); //күлкісі

end;

// бет бейнені өшіру

procedure TForm1.EraseFace(x,y: integer);

begin

// пішінмен сәйкес келетін шекарасы мен боялым түсін беру.

//Өзі орнатылатын пішін түсі - clBtnFace (Object Inspector –ді қара)

Canvas.Pen.Color := clBtnFace; // шеңбер түсі

Canvas.Brush.Color := clBtnFace; // боялым түсі

Canvas.Ellipse(x,y,x+30,y+30);

end;

{$R *.dfm}

hello_html_m5d1dca0f.png

54-сурет


procedure TForm1.TimerTimer(Sender: TObject);

begin

EraseFace(fx,fy);

// бет бейненің жаңа қалпы

fx:= Random(ClientWidth-30);//30 – бет бейне диаметрі

fy:= Random(ClientHeight-30);

PaintFace(fx,fy);

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

// бет бейненің бастапқы қалпы

fx:=100;

fy:=100;

Randomize; //кездейсоқ сандар генераторын инициализациялау

end;

// тышқан батырмасын шерту

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

inc(n); // шерту саны

if (x > fx) and (x < fx+30) and

(y > fy) and (y < fy+30)

then begin

// бет бейнені шерту

inc(p);

end;

if n = 10 then

begin


// ойын аяқталды

Timer.Enabled := False; //таймерді тоқтату

ShowMessage('Атылғаны: 10. Тигені: ' + IntToStr(p)+'.');

EraseFace(fx,fy);

Label1.Visible := True;

Button1.Visible := True;

// енді батырма мен хабарлама қайта көрінді

end;

end;

hello_html_13183a3c.png

55-сурет


// Ok батырмасын шерту

procedure TForm1.Button1Click(Sender: TObject);

begin

Label1.Visible := False; // хабарламаны жасыру

Button1.Visible := False; // батырманы жасыру

Timer.Enabled := True; // таймерді іске қосу

end;

end.


















Пайдаланылған әдебиеттер мен дереккөздер.


1. Programmers.kz сайтының материалдары.

2. Delphi-manual.ru сайтының материалдары.

3. Симонович С.В., Евсеев Г.А. Занимательное программирование: Delphi. –M.: АСТ-ПРЕСС КНИГА: Инфорком – Пресс, 2001.

4. Культин Н.Б. Delphi в задачах и примерах. - СПб.: БХВ – Петербург, 2005.

5. Фаронов В.В. Программирование на языке высокого уровня: Учебник для вузов. –СПб.: Питер, 2003.

6. Бобровский С.И. Delphi 7. Учебный курс. – СПб.: Питер, 2005.

7. Кетков Ю.Л., Кетков А.Ю. Практика программирования: Visual Basic, C++ Builder, Delphi.- СПб.: БХВ – Петербург, 2005.

8. Кузнецова И.А. Практикум по Delphi для решения прикладных задач. - Н.Новгород: ННГУ, 2005.

























29. Тестілеу бағдарламасы

Жұмыстың мақсаты – тестілеу бағдарламасын құру.

1. Ол үшін жаңа жоба ашып, сол Пішінге қажетті компоненттерді орналастырыңыз.

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


{ Тестілеудің әмбебап бағдарламасы

(с) Культин Н.Б., 2003 }

unit tester_;

interface


uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls, ExtCtrls,

jpeg;


type

TForm1 = class(TForm)

Label5: TLabel; // сұрақ


Label1: TLabel; // балама жауаптар

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;


RadioButton1: TRadioButton; // жауапты таңдау радио батырмалары

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

RadioButton4: TRadioButton;


Image1: TImage; // кескін шығару аймағы

Button1: TButton;

Panel1: TPanel;

RadioButton5: TRadioButton;


procedure FormActivate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure RadioButtonClick(Sender: TObject);


// Бұл хабарландырулар қолдан қойылған

procedure Info;

procedure SurakToScr;

procedure ShowPicture; // кескін шығарушы

procedure ResetForm; // кезекті сұрақты шығару алдында пішінді //«тазарту»

procedure Kortyndy;

procedure FormCreate(Sender: TObject); // тестілеу нәтижесі


private

{ Private declarations }

public

{ Public declarations }

end;


var

Form1: TForm1; // Пішін


implementation

{$R *.DFM}

const

N_LEV=4; // бағалаудың төрт деңгейі

N_ANS=4; // жауаптардың төрт нұсқасы


var

f:TextFile;

fn:string; // сұрақтар файлының аты


level:array[1..N_LEV] of integer; // деңгейге сәйкес келетін ұпай mes:array[1..N_LEV] of string; // деңгейге сәйкес келетін //хабарлама


score:array[1..N_ANS] of integer; // жауапты таңдағаны үшін баға

summa:integer; // жиналған ұпай

surak:integer; // ағымдағы сұрақ нөмірі

jauap:integer; // таңдалған жауап нөмірі


procedure Tform1.Info; // тест жайлы хабарлама шығару

var

s,buf:string;

begin

readln(f,s);

Form1.Caption := s;

buf:='';

repeat

readln(f,s);

if s[1] <> '.'

then buf := buf +s + #13;

until s[1] ='.';

Label5.caption:=buf;

end;


Procedure GetLevel; // тесттен алған бағаң жайлы хабарламаны оқу

var

i:integer;

buf:string;

begin

i:=1;

repeat

readln(f,buf);

if buf[1] <> '.' then begin

mes[i]:=buf; // хабарлама

readln(f,level[i]); // баға

i:=i+1;

end;

until buf[1]='.';

end;


Procedure TForm1.ShowPicture; // кескінді масштабтау

var

w,h: integer; // суреттің мүмкін болған ең үлкен өлшемі

begin

// суреттің мүмкіндігі бар өлшемін есептеу

w:=ClientWidth-10;

h:=ClientHeight

- Panel1.Height -10

- Label5.Top

- Label5.Height - 10;


if Label1.Caption <> '' // сұрақтар

then h:=h-Label1.Height-10;

if Label2.Caption <> ''

then h:=h-Label2.Height-10;

if Label3.Caption <> ''

then h:=h-Label3.Height-10;

if Label4.Caption <> ''

then h:=h-Label4.Height-10;


// егер сурет өлшемі w-дан h-қа кем болса, онда ол //масштабталмайды Image1.;

if Image1.Picture.Bitmap.Height > h

then Image1.Height:=h

else Image1.Height:= Image1.Picture.Height;

if Image1.Picture.Bitmap.Width > w

then Image1.Width:=w

else Image1.Width:=Image1.Picture.Width;


Image1.Visible := True;

end;


Procedure TForm1.SurakToScr; // сұрақты шығару

var

i:integer;

s,buf:string;

ifn:string; // кескін файлы

begin

surak:=surak+1;

caption:='Сұрақ ' + IntToStr(surak);

// сұрақты оқу

buf:='';

repeat

readln(f,s);

if (s[1] <> '.') and (s[1] <> '\')

then buf:=buf+s+' ';

until (s[1] ='.') or (s[1] ='\');

Label5.caption:=buf; // сұрақты шығару


{Иллюстрацияны оқиық, бірақ оны баламалы жауаптарды оқып және шығару үшін қолданатын пішін өлшемінің ең үлкен мөлшерін анықтап болған соң ғана шығарамыз}

if s[1] <> '\'

then Image1.Tag:=0 // сұраққа сәйкес кескін жоқ

else // сұраққа сәйкес кескін бар

begin

Image1.Tag:=1;

ifn:=copy(s,2,length(s));

try

Image1.Picture.LoadFromFile(ifn);

except

on E:EFOpenError do

Image1.Tag:=0;

end;

end;


// Жауап нұсқаларын оқу

i:=1;

repeat

buf:='';

repeat // жауап нұсқасының мәтінін оқу

readln(f,s);

if (s[1]<>'.') and (s[1] <> ',')

then buf:=buf+s+' ';

until (s[1]=',')or(s[1]='.');

// балама жауап оқылды

score[i]:= StrToInt(s[2]);

case i of

1: Label1.caption:=buf;

2: Label2.caption:=buf;

3: Label3.caption:=buf;

4: Label4.caption:=buf;

end;

i:=i+1;

until s[1]='.';

// мұнда кескіндер мен балама жауаптар оқылды


// сұрақ мәтіні шығарылған

if Image1.Tag =1 // сұраққа сәйкес кескін бар

then ShowPicture;


// балама жауаптарды шығару

if Form1.Label1.Caption <> ''

then begin

if Form1.Image1.Tag =1

then Label1.""> else Label1.;

RadioButton1.;

Label1.visible:=TRUE;

RadioButton1.visible:=TRUE;

end;


if Form1.Label2.Caption <> ''

then begin

Label2.;

RadioButton2.;

Label2.visible:=TRUE;

RadioButton2.visible:=TRUE;

end;


if Form1.Label3.Caption <> ''

then begin

Label3.;

RadioButton3.;

Label3.visible:=TRUE;

RadioButton3.visible:=TRUE;

end;


if Form1.Label4.Caption <> ''

then begin

Label4.;

RadioButton4.;

Label4.visible:=TRUE;

RadioButton4.visible:=TRUE;

end;

end;


Procedure TForm1.ResetForm;

begin // барлық белгілер мен радио батырмаларды көрінбейтін ету


Label1.Visible:=FALSE;

Label1.caption:='';

Label1.width:=ClientWidth-Label1.left-5;

RadioButton1.Visible:=FALSE;


Label2.Visible:=FALSE;

Label2.caption:='';

Label2.width:=ClientWidth-Label2.left-5;

RadioButton2.Visible:=FALSE;


Label3.Visible:=FALSE;

Label3.caption:='';

Label3.width:=ClientWidth-Label3.left-5;

RadioButton3.Visible:=FALSE;


Label4.Visible:=FALSE;

Label4.caption:='';

Label4.width:=ClientWidth-Label4.left-5;

RadioButton4.Visible:=FALSE;


Label5.width:=ClientWidth-Label5.left-5;


Image1.Visible:=FALSE;

end;


// жеткен деңгейін анықтау

procedure TForm1.Kortyndy;

var

i:integer;

buf:string;

begin

buf:='';

buf:='Тестілеу нәтижесі'+ #13

+'Барлық ұпайыңыз: '+ IntToStr(summa);

i:=1;

while (summa < level[i]) and (i

i:=i+1;

buf:=buf+ #13+mes[i];

Label5.;

Label5.caption:=buf;

end;


procedure TForm1.FormActivate(Sender: TObject);

begin

ResetForm;

if ParamCount = 0

then begin

Label5.caption:= 'Тест сұрақтарының файлы берілмеген.';

Button1.caption:='Ok';

Button1.tag:=2;

Button1.Enabled:=TRUE

end

else begin

fn := ParamStr(1);

assignfile(f,fn);

try

reset(f);

except

on EFOpenError do

begin

ShowMessage('Тест файлы '+fn+' табылған жоқ.');

Button1.caption:='Ok';

Button1.tag:=2;

Button1.Enabled:=TRUE;

exit;

end;

end;

Info; // тест жайлы хабарламаны оқу және шығару

GetLevel; // бағалаудың деңгейі жайлы хабарламаны оқу

end;

end;


// Button1 батырмасын шерту

procedure TForm1.Button1Click(Sender: TObject);

begin

case Button1.tag of

0: begin

Button1.caption:='Әрі қарай';

Button1.tag:=1;

RadioButton5.Checked:=TRUE;

// бірінші сұрақты шығару

Button1.Enabled:=False;

ResetForm;

SurakToScr;

end;

1: begin // басқа сұрақтарды шығару

summa:=summa+score[jauap];

RadioButton5.Checked:=TRUE;

Button1.Enabled:=False;

ResetForm;

if not eof(f)

then SurakToScr

else

begin

summa:=summa+score[otv];

closefile(f);

Button1.caption:='Ok';

Form1.caption:='Нәтижесі';

Button1.tag:=2;

Button1.Enabled:=TRUE;

Kortyndy; // нәтижені шығару

end;

end;

2: begin // жұмысты аяқтау

Form1.Close;

end;

end;

end;



// RadioButton1-RadioButton4 компоненттері үшін OnClick оқиғасын //өңдеу проуцедурасы

procedure TForm1.RadioButtonClick(Sender: TObject);

begin

if sender = RadioButton1

then jauap:=1

else if sender = RadioButton1

then jauap:=2

else if sender = RadioButton3

then jauap:=3

else jauap:=4;

Button1.enabled:=TRUE;

end;


// компоненттерді баптауды қамтамасыз етеді

procedure TForm1.FormCreate(Sender: TObject);

begin

Image1.AutoSize := False;

Image1.Proportional := True;

RadioButton1.Visible := False;

end;

end.


161


DELPHI визуалды программалау жүйесі
  • Информатика
Описание:

I.Delphi визуалды бағдарламалау жүйесі

Кіріспе.

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

Бағдарламалаудың жалпы модульдік, обьектілі-бағдарланған және құрылымдық сияқты негізгі әдістері бар. Ол әдістердің ішінен обьектілі-бағдарланған түріне тоқталайық. Бұл әдіс обьектілі-бағдарланған визуалды бағдарламалау тіліне негізделген. Мұндай бағдарламалау тілдеріне: Smalltalk, C++, Actor, Iava және басқалар жатады. Соңғы жылдары дайындалған бағдарламалар осы визуалды бағдарламалау тәрізді жүзеге асырылады.

Визуалды бағдарламалау ортасын пайдаланудың басты ерекшелігі, ол бағдарламалық жобаны құру болып табылады.

Ондай жүйе қатарына: Visual Basic, Delphi, C++ Builder, Visual C++ және тағы басқалар енеді.

Осы жүйелер ішінен бағдарламалаушылар арасында жиі қолданылып жүрген Delphi визуалды бағдарламалау жүйесінің 7.0 версиясын қарастыруға кірісейік.

1. Delphi – дің басты терезелері.

Delphi бағдарламасын жүктейік. Сонда экраннан оның төмендегі 4 терезесі көрінеді.

Осылардың тұтас созылып жатқаны – бас терезе. Сол жақтағысы – обьектілер терезесі. Ол терезеде осы бағдарламаны құрайтын компоненттердің қасиеттері беріледі. Ортасында бірінің үстіне бірі орналасқан екі терезе – болашақ бағдарламаның Пішіні/формасы/ және бағдарламасы бар терезе тұр. Пішін терезесі енді дайындалатын бағдарламаның визуалды көрінісі болып табылады.

Автор Рысалды Ақбілек Сағадиллақызы
Дата добавления 22.12.2015
Раздел Информатика
Подраздел Конспекты
Просмотров 1855
Номер материала MA-063358
Скачать свидетельство о публикации

Оставьте свой комментарий:

Введите символы, которые изображены на картинке:

Получить новый код
* Обязательные для заполнения.


Комментарии:

↓ Показать еще коментарии ↓