- 22.12.2020
- 1069
- 3
Смотреть ещё
681
методическую разработку по информатике
Перейти в каталогБексарыұлы Мұратбек
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 терезесі көрінеді.
Осылардың тұтас созылып жатқаны – бас терезе. Сол жақтағысы – обьектілер терезесі. Ол терезеде осы бағдарламаны құрайтын компоненттердің қасиеттері беріледі. Ортасында бірінің үстіне бірі орналасқан екі терезе – болашақ бағдарламаның Пішіні/формасы/ және бағдарламасы бар терезе тұр. Пішін терезесі енді дайындалатын бағдарламаның визуалды көрінісі болып табылады.
Дельфи-де бағдарлама дайындау үшін мына әрекеттерді орындау жеткілікті:
Бағдарлама әдетте, C:\Program Files\Borland\Delphi7\ Projects бумасында құрылады.
Осы орыннан оны қажет орынға көшіруге болады. Жұмыс істеуге қолайлы болуы үшін оның жарлығын жұмыс столына орналастырған ыңғайлы. Әзірше бос терезеден тұратын бағдарлама құрылды. Дегенмен онда Windows-тың барлық бағдарламасына тән: тақырып жолы, жүйелік меню, жиыру, жаймалау, жабу батырмалары сияқты атрибуттар бар және бұл терезенің өлшемдерін өзгертуге болады. Пішін-бағдарламаны жабайық.
Осы пішіннің пайдалы қасиеттерін қарастырайық:
- poDesigned мәнінде Пішін бағдарлама жобалаушы-сының
белгілеген орнынан көрінеді, ол үнсіз келісім бойынша
қойылған мән.
- poDesktopCenter және poScreenCenter мәндерінде Пішін
экранның немесе жұмыс столының ортасында
орналасады.
- poMainFormCenter мәні бойынша Пішін бас терезенің
ортасында көрінеді.
- poOwnerFormCenter мәні арқылы Пішін шақырылған
терезенің ортасынан пайда болады.
- 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 компоненттері палитрасының беттері.
Delphi-дің өңдеу ортасы, ең алдымен Windows-та бағдарламалар дайындауға бағдарланған. Мұнда кодтарды қолмен жазудан құтқаратын Delphi-дің дайын компоненттерінің үлкен жиынтығының көмегімен визуалды қолданбалар жасау мүмкіндігіне көп көңіл бөлінеді. Бұл компоненттер қазіргі заманғы технологияларды қолданудың барлық саласын қамтиды. Мұнда да басқа бағдарламалау ортасындағыдай, мыс, Visual Basic т.с.сияқты кезкелген қолданбаны дайындауда қажет етілетін басты компоненттерді оқып-уйрену қажет. Компоненттер палитрасы 4 беттен тұрады, олар: Standard, Additional, Win32, System беттері. Алдымен осы беттердің мазмұнымен және олардың басты қызметімен танысайық.
Standard беті.
Delphi-ді оқып-үйрену негізінен осы компоненттер палитрасы бетінен басталады. Бұл бетте Windows –тың : басты және қалқыма-лы менюлері, батырмалары, бір жолдық және көп жолдық редак-торлары, ауыстырып қосқыштары, белгілері, тізімдері және одан да басқа жиі қолданылатын компоненттері сияқты стандартты интерфейстік элементтері орналасқан.
Енді осы бетте қамтылған компоненттердің қызметтеріне жеке-жеке тоқталайық.
Пикто- |
Компонент аты |
Компоненттің атқаратын қызметі |
|
MainMenu |
Бағдарламаның бас менюі. Компонент күрделң иерархиялық менюлерді құруға және оларды іске қосуға мүмкіндік береді. |
|
PopupMenu |
Қалқымалы меню. Ол әдетте маустың оң жақ батырмасын басқанда пайда болады. |
|
Label |
Белгі. Бұл статикалық мәтін түріндегі қысқа хабарламаларды орналастыру үшін қолданылады. |
|
Edit |
Енгізу жолы. Ол пайдаланушының бір жолдық мәтіндік ақпаратты енгізуіне арналған. |
|
Memo |
Көп жолдық мәтіндік редактор. Ол пайдаланушының пішімдеу мүмкіндігі жоқ көп жолдық мәтінді енгізіп, оны бейнелеуі үшін пайдаланылады. |
|
Button |
Командалық батырма. Бағдарламада осы компоненттің onclick оқиғасы өңдеушісінің көмегімен команданы жүзеге асыру үшін қолданады. |
|
CheckBox |
Тәуелсіз ауыстырып қосқыш. Оның маусты шерткенде ауысып отыратын true және false мәндері бар Checked (белгіленген) қасиеті пайдаланылады. |
|
RadioButton |
Тәуелді ауыстырып қосқыш. Ол бірнеше нұсқадан біреуін ғана таңдау үшін қолданылады. Сол мақсатта компонент кем дегенде бір немесе бірнеше сондай компоненттермен бір топқа бірігеді. Компонентті шерткенде ол ерекшеленеді және бұрын таңдалған ерекшелеу алынып тасталады. Мұның да Checked қасиеті бар. |
|
ListBox |
Таңдау тізімі. Ұсынылған нұсқалар(опциялар) тізімінен тұрады және ағымдағы таңдауды бақылауға мүмкіндік береді. |
|
ComboBox |
Таңдаудың аралас тізімі. Edit пен ListBox компоненттерін бірге пайдалануды қарастырады. |
|
ScrollBar |
Айналдыру жолақтары. Ол бағдарлама терезесіне тұтасынан симаған бөліктерін қарауға арналған басқарушы компоненттердің тік және көлденең жолақтарынан тұрады. |
|
GroupBox |
Компонентердің топтық контейнері. Бұл мағынасы бойынша байланысқан бірнеше компоненттерді біріктіру үшін қолданылады. |
|
RadioGroup |
Тәуелді ауыстырып қосқыштар тобы. Оның өзара байланысқан бірнеше тәуелді ауыстырып қосқыштарды іске қосуға арналған қасиеттері бар. |
|
Panel |
Панель/Тақта. Бұл GroupBox сияқты бірнеше компоненттерді біріктіруге арналған. Оның ішкі және сыртқы жиектері арқылы «батырылып» не «көтеріліп» тұрғандығын бейнелеу мүмкіндіктері болады. |
|
ActionList |
Әрекеттер тізімі. Пайдаланушының бір типтес: меню, батырмалар және т.с.сияқты басқарушы элементтер тобының біреуін таңдауымен байланысты әрекетіне бағдарламаның бір орталықтан жауап беру қызметін атқарады. |
Additional беті.
Бұл бетте Windows – та бағдарлама дайындауға өте қажет: қосалқы қасиеттері бар батырмалар, кестелер, кескіндерді орналастыруға арналған компоненттері және т.б.бар қосымша компоненттер орналастырылған.
Енді осы бетте қамтылған компоненттердің қызметтеріне жеке-жеке тоқталайық.
Пикто- |
Компонент аты |
Компоненттің атқаратын қызметі |
|
BitBtn |
Командалық батырма. Стандартты Button батырмасынан айырмашылығы, мұнда пиктограмманы бейнелеу мүмкіндігі бар. |
|
SpedButton |
Пиктографиялық батырма. Бас менюдің опцияларына тез қатынас жасау үшін қолданылады. |
|
StringGrid |
Жолдар кестесі. Бұл компоненттің мәтіндік ақпаратты кесте түрінде бейнелеуге қуатты мүмкіндігі бар. |
|
DrawGrid |
Кескіндер кестесі. Бұл компонент кескінді кесте түрінде бейнелеу үшін қолданылады. |
|
Image |
Сурет. Кескінді, оның ішінде пиктограммалар мен метафайлдарды бейнелеуге арналған компонент. |
|
Shape |
Фигура. Осы компонент көмегімен Пішінге фигуралар: тіктөртбұрышты, эллипсті, дөңгелекті кірістіруге болады. |
|
Bevel |
Жиек. Пішіннің жекелеген бөліктерін үш өлшемді қоршаумен және жолақтармен ерекшелеу қызметін атқарады. |
|
ScrollBox |
Айналдыру жолақтары бар тақта. Мұның тақтадан айырмашылығы сол, егер онда орналасқан компоненттер оның шекараларымен қиып алынса, оған айналдыру жолақтары автоматты түрде кірістіріледі. |
|
CheckListBox |
Көп түрлі таңдау тізімі. Мұның стандартты ListBox компонентінен айырмашылығы, әрбір опция жанында бірнеше опцияны бірден таңдауды жеңілдететін тәуелсіз CheckBox типті ауыстырып қосқыштың бар болуында. |
|
Splitter |
Шекара. Бұл көрінетін екі компонент аралығынан шекара жасап және пайдаланушының оларды орын ауыстыруына мүмкіндік береді. |
|
StaticText |
Статикалық мәтін. Мұның стандартты Label компонентінен айырмасы, мәтінді қоршауға алуға немесе оны Пішіннің «батырылған» бөлігі түрінде ерекшелеуге мүмкіндік беретін жеке Windows – терезесінің болуында. |
|
Chart |
Диаграмма. Бұл компонент мәліметтерді графикалық түрде бейнелеу үшін арнайы тақталар жасауды жеңілдетеді. |
Win32 беті.
Осы бет 32 разрядты Windows – тың 95/98/NT ОЖ арналған интерфейс элементтерін жұмыс істетін компоненттерді қамтиды. Бұл компоненттер Windows – тың соңғы версияларының стилистикасымен үйлеседі.
Енді осы бетте қамтылған компоненттердің қызметтеріне жеке-жеке тоқталайық.
Пикто- |
Компонент аты |
Компоненттің атқаратын қызметі |
|
TabControl |
Астарлар жиынтығы. Әр астар жазбасы және/немесе мәтіні бар өріс түрінде болады. Мұнда астарларды таңдау бағдарлама арқылы танылады және ол компонент терезесіндегілерді басқару үшін қолданылады. |
|
PageControl |
Астарлары бар тақталар жиынтығы. Әр тақтаның өз интерфейс элементтерінің жиынтығы болады және ол онымен байланысты астарды шерту арқылы таңдалады. |
|
ImageList |
Суреттер жиынтығы. Мұны бірдей өлшемді бірнеше суреттерді сақтауға араналған қойма деп қарауға болады. |
|
RichEdit |
Пішімделген мәтіннің көпжолдық редакторы. Оның Memo компонентінен айырмашылығы, бұл мәтіннің қаріп, түс, туралау және т.б. (RTF пішімі) сипаттамаларын өзгерте алады. |
|
TrackBar |
Реттегіш. Бағдарламадағы кейбір шамалардың мәндерін басқару үшін қолданады. Мыс, осының көмегімен мультимедиалық құрылғылардың дыбысын өзгерту ыңғайлы. |
|
ProgressBar |
Процесс индикаторы. Осы компоненттің көмегімен біршама ұзақ процестің орындалу барысын, мыс, мәліметтердің көшірілуін бейнелеуге болады. |
|
UpDown |
Цифрлық реттегіш. Бұл компоненттің екі батырмасы осы компонентпен байланысты сандық шамаларды арттыру немесе кеміту қызметін атқарады. |
|
HotKey |
Басқарушы перне. Компонент F1, CTRL+Shift және т.б. басқарушы кодтарды енгізуге арналған. |
|
Animate |
Мультипликатор. Бұл қозғалмалы кескіндерді(бейнеклиптерді) бейнелеуге арналған , бірақ оны дыбыспен әрлей алмайды. ProgressBar компоненті сияқты, негізінен ұзақ процестің жүруі кезінде қолданылады. |
|
DateTimePicker |
Уақыт/мерзім селекторы. Компонент уақытты немесе мерзімді енгізуге немесе оларды бейнелеуге арналған. |
|
MonthCalendar |
Күнтізбе. Бұл күнтізбені бейнелеу және мерзімді немесе оның аралығын таңдау үшін қызмет етеді. |
|
TreeView |
Бұтақталған таңдау. Пиктограммалардың бұтақ тәріздес құрылымымен байланысқан жиынтығы болып табылады.Әдетте бұл каталог құрылымын және басқа соған ұқсас өзара иерархиялық түрде байланысқан элементтерді қарап шығуда пайдаланылады. |
|
ListView |
Пиктограммалар тақтасы. Бірнеше пиктограммаларды қарап, олардың ішінен қажеттісін таңдауды ұйымдастырады. Компонент пиктограммаларды тік немесе көлденең қатарларға орналастыра алады және оларды үлкен немесе кіші масштабпен көрсетуге мүмкіндігі бар. |
|
HeaderControl |
Басқарушы тақырып. Бұл жазбалары бар аралас секциялар қатарына бөлінген көлденең немесе тік жолақтар. Секциялардың өлшемін бағдарламамен жұмыс кезінде өзгертуге болады. Мұны әдетте, әр түрлі кестелердегі бағандар мен жолдардың өлшемін өзгерту үшін пайдаланады. |
|
StatusBar |
Статус тақтасы. Редакциялау терезесінде түрлі қызметтік ақпараттарды орналастыруға арналған. Оған мыс, Word мәтіндік редакторы терезесі қоршауының төменгі бөлігінде орналасқан қалып-күй жолы жатады. |
|
ToolBar |
Саймандар тақтасы. Бұл компонент BitBtn командалық батырмасы үшін контейнер қызметін атқарады және ол өз өлшемін оған батырмаларды қосқанда немесе оны жойғанда автоматты түрде өзгерте алады. |
|
CoolBar |
Саймандар тақтасы. Мұның ToolBar –дан айырмашылығы, бұл Edit, ListBox, ComboBox және т.с.с. Windows –тың стандартты интерфейстік компоненттерін орналастыруға арналған контейнер ретінде пайдаланылады. |
|
PageScroller |
Айналма тақта. Бұл енсіз саймандар тақтасын орналастыруға арналған. Қажет кезде тақта шетіне айналдыру жолақтарын құрады. |
System беті.
Мұнда әр түрлі қызмет атқаруға арналған компоненттер (мыс, Timer – кезкелеген бағдарламадағы ең маңызды компонент), оның ішінде Windows – тың стандартты технологияларын қуаттайтын бағдарлама аралық деректер алмасуды ұйымдастыратын OLE және DDE компоненттері де берілген.
Енді осы бетте қамтылған компоненттердің қызметтеріне жеке-жеке тоқталайық.
Пикто- |
Компонент аты |
Компоненттің атқаратын қызметі |
|
Timer |
Таймер. Нақты уақыт интервалын есептеуге арналған компонент. Ол 55 миллисекунд – тен кіші аралықта өңдей алмайды. |
|
PaintBox |
Суретке арналған терезе. Графикалық кескіндерді салуға арналған тікбұрышты аймақты құрады. |
|
MediaPlayer |
Мультимедиалық ойнатқыш. Осы компонент көмегімен түрлі мультимедиалық құрылғылар жұмысын басқаруға болады. |
|
OleContainer |
OLE-контейнер. Байланысқан немесе ендірілген обьектілерді қабылдаушы қызметін атқарады. |
|
DDEClientConv |
DDE- байланыс. Бұл DDEClientItem –мен бірге DDE-байланыста клиенттік бағдарлама құру үшін пайдаланылады.. |
|
DDEClientItem |
DDE- тақырып. Клиенттік қолданбада DDE-байланыстың тақырыбын анықтайды. |
|
DDEServerConv |
DDE- байланыс. Бұл DDEServerItem –мен бірге DDE-байланыста серверлік бағдарлама құру үшін пайдаланылады. |
|
DDEServerItem |
DDE- тақырып. Серверлік қолданбада DDE-байланыстың тақырыбын анықтайды. |
3. Delphi компоненттері – визуалды жобалаудың негізі.
Бос пішінді мазмұнды ететін – Delphi-дің компоненттері. Олар бас терезедегі палитра компоненттерінің тиісті астарларында орналасқан. Delphi-дің негізгі барлық компоненттері жоғарыда айтылған 4 астарда: Standard, Additional, Win32, System жатыр.
Осылардың пиктограммасына маустың нұсқағышын апарсақ, олардың аттары қалқып көрінеді. Осы компоненттерді Пішінге апару үшін, оны мауспен шертіп, сонан соң Пішіннің ол қойылатын орнын шертеді.Бұдан әрі оларды маус арқылы Пішін ішінде «қажетті интерфейсті» құрастыруға еркін тасымалдауға болады. Егер Сіз компонентті Пішінге көшіргіңіз келмесе, онда сол астардағы компоненттен бас тарту бағдаршасын шертсеңіз, белгілеу алып тасталады.
Delphi-де басқа бағдарламалау тілдеріндегі сияқты, барлық компоненттер қарастырылған анықтамалықтар бар. Мұнда біз сол компоненттердің ең негізгі қасиеттеріне және олардың жұмысына тоқталатын боламыз.
Ең алдымен, мәтінді бейнелеу компонентінен бастайық. Ол үшін жаңа жоба құрайық(File –» New –» Application), сосын Пішінге Label, Edit, Memo, Button компоненттерін тасымалдайық. Мауспен тиісті компоненттерді бір рет шерту немесе Tab пернесін басу арқылы Обьектілер инспекторындағы олардың қасиеттерін ашуға болады. Мәтінмен жұмыс істеуге арналған осы компоненттердің мынадай қасиеттері бар:
Компоненттер Пішінге орнатылғаннан бастап, олардың қасиеті мәнге ие болады. Компоненттерді мауспен пішіндегі жобалаған орнына қойған соң, обьектілер инспекторы арқылы оның өлшемдері мен координаттарын нақтылауға болады. Осы әрекеттерді бағдарламалау арқылы да орындауға болатынын алда көретін боламыз. Бұл компоненттердің бейнелік көрінісін олардың мына қасиеттері ұйымдастырады:
Label Button үшін - Caption,
Edit үшін – Text,
Memo үшін – Lines.
Пішінді «құрастыру» кезінде компоненттердің осы қасиеттеріне кезкелген мәнді беруге болады, тіпті оған мән беру арқылы компонентті көрінбейтін ете аласыз. Жоғалған компонентті инспектордағы тізімін шерту арқылы оның қасиетін көрсеңіз, сол кезде ол пішінде белгіленіп тұрады.
Енді бағдарламаны іске қосып көрейік(ол үшін жасыл бағдаршаны не F9 –ды басыңыз). Сонда сіз компоненттердің, яғни Label – пішінде жазба не белгі жазуға, Button – батырма қызметін атқаруға, Edit – жол енгізуге, Memo – мәтіндік редактор ретінде жұмыс істеуге дайын екенін көресіз.
Қазір біз шағын бағдарлама жазып көрейік. Әуелі жаңа жоба ашайық (File –»New –» Application) . Енді мына әрекеттерді орындайық:
Сонда бізге Delphi дайындаған батырманы басуға арналған модуль терезесі ашылады.
Сонда 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 деген түрлерімен таныстық.
Әрбір бейнелік компонентте болатын мына маңызды оқиғалар төмендегі жағдайларда пайда болады:
Кезкелген бағдарламамен жұмыс жасарда, оның ең маңызды компоненті – Пішіннің басты оқиғасы – onCreate ескерілуі қажет. Оқиға пішіннің экранда көрінуінен бұрын пайда болады. Бұл оқиға, мыс, Пішіннің экрандағы өлшемдері мен орнын баптауға болатындай етіп бағдарлама элементтерінің тиісті қасиеттерін беру үшін қолданылады. Егер сіз көрінбейтін бағдарлама құрғыңыз келсе, онда пішіннің ені(Width) мен биіктігін(Height) нөлге(0) теңеуге болады. Бірақ оны жобалау кезінде жасасақ, онда экран көрінбей жұмыс істеуге кедергі болады. Сондықтан оны onCreate оқиғасы бойынша:
Form1.Width:=0;
Form1.Height:=0; орындайды.
Енді Пішіннің тақырыбын да көрсетпеуге болады, ол үшін обьектілер инспекторында BorderStyle параметрін None – ге тең етіп алса болғаны. Сол кезде пішін тіпті көрінбейді, оның есептер тақтасында тек белгісі ғана шығып тұрады.
5. 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;
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 |
Динамикалық жиымға бөлінген жадыны босату үшін тұтас жиымға 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*4 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 типті мәнді қайтаратын функциялар шақырылады және ол мәндерді логикалық амалдармен қоса қолдана алады.
Амал таңбасы |
Амалдың атауы |
Логикалық амалдарды
мына : K := [1, 4, 7, 10,
13, 16] ; |
= |
тең |
|
<> |
тең емес |
|
> |
үлкен |
|
< |
кіші |
|
>= |
үлкен не тең |
|
<= |
кіші не тең |
|
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 ;
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.Left:=StrToInt(ListBox1.Items[0]);
Form1.Top:=StrToInt(ListBox1.Items[1]);
end ;
end ;
Мұнда 1-жолда файлдың бар-жоқтығына тексеру жүргізіледі, егер ол жоқ болса,
онда қате туралы хабарлама шығады. Дегенмен ескертпеден соң да пішін жобалаған
орында ашылады, ал жабылар кезде қажетті файл қайта қалпына келеді. Мұндағы
логикалық жақшада MyFormPos.txt файлы бағдарламасы бар бумада жатқанда
ғана орындалатын кодтың өзі болады, өйткені мұнда салыстырмалы орын
көрсетілген. Нақты, мыс, C:\Program Files\MyProg\MyFormPos.txt. орналасу орнын
көрсетуге де болады.
Файлдың бар-жоқтығын ерекше жағдайларды бақылаудың көмегімен де орындауымыз мүмкін. Арнаулы оператордың көмегімен оны ұстап алып, бағдарламада қате кетірмеуге болады. Кәсіби бағдарламалардың Windows реестрінде өз орны сақталады. Оған да келерміз. әзірше бұл кіріспені аяқтаймыз.
9. Файлдармен тікелей жұмыс.
Delphi жүйесіндегі файлдармен жұмыс технологиясы әрекеттердің белгілі бір ретін орындауды талап етеді:
Delphi-де файлдармен жұмыстың бірнеше тәсілдері жүзеге асырылады. Қазір біз файлдық айнымалыны пайдалануға байланысты стандартты тәсілмен танысамыз.
Файлдық айнымалы файлды көрсету үшін енгізіледі. Ол File түйінді сөзінің көмегімен жасалады:
Var F: File;
Осылайша сипатталған файлдық айнымалы типтелмеген деп саналып, файлдың белгісіз құрылымдармен жұмыс істеуіне мүмкіндік береді. Мәліметтер файлды ашқан кезде блок бойынша мөлшері 1 байттан бастап есептеледі және жазылады.
Алайда көбінесе бірыңғай жазбалардан тұратын файлдар пайдаланылады. Мұндай файлдарды сипаттау үшін жоғарыдағы сипаттамаға жазбаның типі көрсетіліп, былай толықтырылады
Var F: File of жазба_типі;
Тип ретінде базалық типтерді немесе өзіндік типтерді қолдануға болады. Мұнда тип үшін байтпен алынған дәл мөлшер болуы маңызды. Өйткені осыдан бұрын айтылғандай, String типі таза түрінде емес, тек String[N] түрінде ғана қолданыла алады.
Файлдан есептелген немесе файлға жазылған мәліметтер кәдімгі айнымалылардың құрамында болады, ол айнымалы да файлдық айнымалының типіндей болуы тиіс.
Сондықтан бағдарламада алдымен қажетті типті сипаттап алып, сонан соң барып осы типтегі файлдық және кәдімгі екі айнымалыны енгізейік:
Файлды ашу үшін, оның орны көрсетілуі қажет. Ол үшін файлдық айнымалы оның адресі бойынша анықталатын тиісті файлмен байланысты болуы тиіс. Файл адресі дискі мен каталогы көрсетілген('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 компоненті – сақтау терезесін ашуды ұйымдастырады.
Мұнда файл таңдау диалогы өздігінше ештеңе атқармайды, тек тұтынушының файл таңдау кезінде жасаған баптау жағдайын ұсынады.
Диалогтың ең басты әдісі – 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 –де де қосымша Пішіндермен жұмыс істеуге мүмкіндік бар. Мұнда біз тұтынушымен сұхбат жүргізуге және қажетті ақпаратты қабылдауға және оны шығаруға мүмкіндік беретін
қосымша пішіндерді оңай құра аламыз. Біз мұнда Delphi –дің негізгі пішініне қосымша бірнеше пішіндерді құрып үйренеміз.
Бағдарламаға жаңа пішін енгізу басты беттегі батырманы (New Form) басу арқылы, соған қоса тиісті командаларды : File -» New -» Form орындау арқылы жүзеге асырылады.
Пішін оның жұмысын сипаттайтын жаңа модульмен бірге құрылады. Оны бағдарламадан жоюға болады: ол үшін батырма бар және мына меню командасы: Project -» Remove from project.... қолданылады. Пішін модульмен бірге құрылатындықтан, көрінген терезеден жойылуға тиісті модульді таңдау керек. Ал егер Unit 1 модулінің өзін жойғымыз келсе не болады, сонда не қалады?
Project -» View Sourse командасын орындайық. Код редакторында (Бас терезенің коды бейнелетін пішіннің емес) жаңа астар пайда болады. Мұнда Бас терезе көрінбейді, бірақ барлық жобаны басқарады және жалпы пішінсіз де жұмыс істей алады. Оған өз кодыңды орналастырып және Паскальдағы сияқты бағдарлама жазуымызға болады.
Барлық жаңа жобалар бірден өзі жасалатындар қатарына енгізіледі, яғни олар бағдарламаның жұмысын бастаған кезден жобаның Бас пішінімен бірге құрылып көбейе береді.
Бағдарламада біз мұнымен айналыспаймыз, алайда бір уақытта бірнеше пішіннің жасалуы бағдарламаның орнын азайтады және қаншама уақыт алады. Сондықтан да қажетті сәтте ғана тиісті пішінді жасауды үйренуді ұсынамын.
Біріншіден, пішіннің өздігінше жасалуын тоқтату керек. Ол үшін 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 Процедура_аты(параметрлері); |
function
Функция_аты(параметрлері): нәтиже_типі; |
Осылай сипатталған ішкі бағдарламалар негізгі бағдарламаға ол орындалуға шақырылғанға дейін орналастырылуы тиіс. Бұл орындалмаған жағдайда компиляция кезінде « белгісіз идентификатор» деген хабарлама шығады. Ал оны бақылап отыру оңай емес. Бұдан шығатын жол – ол ішкі бағдарламалардың тақырыбын бағдарламаның барлық мәліметтерін сипаттайтын орынға орналастыру.
Мұндағы параметрлер - өзара үтірмен ажыратылған, қос нүктеден соң типі көрсетілген идентификаторлар тізімі.
Егер тізімде түрлі типтегі идентификаторлар бірнешеу болса, онда олар бір-бірінен (; ) арқылы ажыратылып жазылады. Бәрі де жалпы мәліметтерді сипаттаудағыдай. Бұларды формальды параметрлер дейді.
Ішкі бағдарлама шақырылғанда олар үтірден кейінгі сол типтегі параметрге ауысады.
Ішкі бағдарламада параметрлер болмауы да мүмкін, ол кезде олар негізгі бағдарламадағы мәліметтердің өзімен операциялар орындай береді.
Енді жергілікті мәліметтер ұғымын енгізу керек. Бұл мәліметтер ішкі програмаларды шақыру кезінде ғана болатын және пайдаланылатын айнымалылар, тұрақтылар мен ішкі бағдарламалар. Олар осы ішкі бағдарламада сипатталуы тиіс. Оның сипатталу орны – тақырып пен 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 жолдарын символдар регистрін есепке ала отырып салыстырады. Егер S1<S2 болса, оған <0 мәнін, S1=S2 болса, 0 мәнін, ал S1>S2 болса, >0 мәнін қайтарады.
AnsiCompareText(const S1, S2: String): Integer функциясы - S1 мен S2 жолдарын символдар регистрін ескермей-ақ салыстырады. Егер S1<S2 болса, оған <0 мәнін, S1=S2 болса, 0 мәнін, ал S1>S2 болса, >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. Бағдарламаны іске қосқанда төмендегі терезе көрінеді.
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 (Консольдық қолданба) белгісін таңдау.
2-сурет
2.OK батырмасын басқан соң экран енді мына түрде көрінеді:
3-сурет
3.Мәтін Delphi арқылы автоматты түрде генерацияланды. Оны жасалатын қолданбаның нобайы деуге болады. Бұл мәтінде негізінде ештеңе өзгертпеуге де болады – ол дайын бағдарламаға сәйкес келеді. Дегенмен, кейбір өзгерістер енгізейік.
4-сурет
5-сурет
№3. «Сәлемдесу»
Жұмыстың мақсаты - мына әрекеттерді орындайтын бағдарлама құру:
1.Бағдарлама іске қосылғаннан кейін тышқанмен «Сәлемдесу» батырмасын басқанда «Алғашқы жетістігім» хабарламасын шығару.
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. Бағдарламаны іске қосқанда мәтіндік өріске мәтін шығару.
7-сурет
2. «Терезе тақырыбын өзгерту» батырмасын тышқанмен шерткенде, терезенің тақырыбы өзгеруі тиіс.
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. Бағдарламаны іске қосқанда: евро мен доллардың ағымдағы курстарын енгізуге арналған екі жол; ақшаның сомасын теңгемен енгізуге арналған жол; евро және доллармен ақшаның эквивалентін шығаруға арналған екі жол бейнеленуі қажет.
9-сурет
2. Евро мен доллардың ағымдағы курсын енгізіңіз.
3. Ақша сомасын теңгемен енгізіңіз.
4. «Эквивалентті есептеңіз» батырмасын тышқанмен шерткенде, ақша сомасы евро және доллармен шығуы тиіс.
5. Евро мен доллар үшін жаңа ағымдағы курсты енгізіңіз.
6. Жаңа ақша сомасын теңгемен енгізіңіз.
7. «Эквивалентті есептеңіз» батырмасын тышқанмен шерткенде, жаңа ақша сомасы евро және доллармен шығуы тиіс.
8. Бағдарламадан шығу үшін тышқанмен тақырып жолындағы жабу батырмасын шерту қажет.
№5. «Қозғалмалы батырма»
Жұмыстың мақсаты – мына әрекеттерді орындайтын бағдарлама құру:
1. Батырманы тышқанмен шерткенде, ол батырма не тоқтауы не қозғалуы тиіс.
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. Бағдарламаны іске қосқанда терезеде сурет бейнеленеді.
11-сурет
2. Суретті тышқанмен шерткенде сұхбат терезесі пайда болады.
3. Осы ашылған сұхбат терезеде кезкелген суретті таңдаңыз.
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. Бағдарлама іске қосылғанда терезеде мәзір жолы (Файл, Шығу) бейнеленеді.
13-сурет
2. Файл мәзірі пунктін таңдаған кезде мәзірдің (Суреттер, Шығу)
пункттері пайда болады. 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. Бағдарлама іске қосылғанда терезеде үш өріс бейнелеу.
15-сурет
2. «Кездейсоқ таңдау» батырмасын тышқанмен шерткенде үш сөзден тұратын кездейсоқ сөйлем құрау.
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. Егер бір ғана сан таңдалса, онда оның квадараты табылады.
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. Тышқан көрсеткішін фигуралардың біріне апарып, олардың қай жолақпен байланысты екенін таңдай алу.
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.Position:= Shape1.Left; ScrollBar2.Position:= 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.Position:= Shape1.Left; ScrollBar2.Position:= Shape1.Top; end;
procedure Tform1. Shape2MouseMove
(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Shape2.Brush.Color := clFuchsia; Shape2.Brush.Color := clAgua; Num := False;
ScrollBar1.Position:= Shape2.Left; ScrollBar2.Position: = Shape2.Top; end;
procedure Tform1. FormCreate (Sender: TObject); begin
num := True; end;
№ 11. Пайызды есептеу
Жұмыстың мақсаты - мына әрекеттерді орындайтын бағдарлама құру:
1. Бағдарлама іске қосылғанда пішінге үш мәтін өрісін шығару.
2. Бірінші өріске сан енгізіледі. Екінші өріске пайыз енгізіледі. Сонда «Есептеу» батырмасын басқанда үшінші өрісте санның есептелген пайызы шығуы тиіс.
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.
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. Бағдарлама іске қосылғанда калькулятор терезесін шығару.
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.
Әрекеттер бойынша жобалардың түрлері:
22-сурет
23-сурет
24-сурет
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 қасиетінің мәнін тазарту |
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. Оятқыш сағат
Жұмыстың мақсаты – көрсетілген уақытта оятатын оятқыш сағаттың бағдарламасын жасау. Пішінде қазіргі уақыт пен ояту уақыты бөлек-бөлек көрсетіліп тұруы тиіс.
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. Олимпиада жалауы
Жұмыстың мақсаты – пішін бетінде олимпиада жалауын сызатын бағдарлама құру.
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) аралығында құруға болады.
29-сурет
30-сурет
31-сурет
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-суретте көрсетілген компоненттерді орналастырыңыз.
33-сурет
2. Компоненттердің оқиғалары мен қасиеттерін төменде берілген бағдарламаға сәйкес өңдеп, жұмыс мақсатына сәйкес әрекеттерді атқарыңыз.
34-сурет
35-сурет
Жұмысты орындау бағдарламасы:
unit essaktau;
implementation
const
KC = 5; // санның разрядтылығы (цифрлар саны)
LT = 10; // сандардың саны (тест ұзындығы)
var
numb: integer; // сыналушы еске сақтауға тиіс сан
right: 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" пернелері, <Backspace>
#13: // <Enter> пернесі
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. Компоненттердің оқиғалары мен қасиеттерін төменде берілген бағдарламаға сәйкес өңдеп, жұмыс мақсатына сәйкес әрекеттерді атқарыңыз.
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;
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.
38-сурет
№21. Ом заңы
Жұмыстың мақсаты – физика пәні бойынша Ом заңын пайдаланып, ток, кернеу және кедергінің мәндерін есептейтін бағдарлама құру. 1. Ол үшін жаңа жоба ашып, Пішінге 39-суретте көрсетілген компоненттерді орналастырыңыз.
2. Компоненттердің оқиғалары мен қасиеттерін төменде берілген бағдарламаға сәйкес өңдеп, жұмыс мақсатына сәйкес әрекеттерді атқарыңыз.
Жұмысты орындау бағдарламасы:
unit om_;
{$R *.dfm}
// Токты, кернеуді не кедергіні есептеу
procedure Calculate;
var
I,U,R: real; // ток, кернеу, кедергі
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;
// Ток ауыстырып қосқышын таңдау
40-сурет
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
Label1.Caption := 'Кернеу (вольт)';
Label2.Caption := 'Кедергі (Ом)';
Label3.Caption := '';
end;
// Кернеу ауыстырып қосқышын таңдау
41-сурет
procedure TForm1. RadioButton2Click(Sender: TObject);
begin
Label1.Caption := 'Ток (ампер)';
Label2.Caption := 'Кедергі (Ом)';
Label3.Caption := '';
end;
// Кедергі ауыстырып қосқышын таңдау
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: ; // цифрлар және <Backspase>
#13: Edit2.SetFocus; // <Enter> пернесі
'.',',':
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; // <Enter> батырмасы - есептеу
'.',',':
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-суретте көрсетілген компоненттерді сол Пішінге орналастырыңыз.
43-сурет
2. Компоненттердің оқиғалары мен қасиеттерін төменде берілген бағдарламаға сәйкес өңдеп, жұмыс мақсатына сәйкес әрекеттерді атқарыңыз.
Жұмысты орындау бағдарламасы:
unit zhygyru;
{$R *.dfm}
// Дистанция өрісіндегі пернені басу
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
// Key – басылған пернеге сәйкес символ.
// Егер символ рұхсат етілмеген болса, онда процедура оны коды нөлге тең символға ауыстырады. Соның нәтижесінде символ редакциялау өрісінде көрінбейді, сол себепті пайдаланушы бағдарлама кейбір пернелердің басуына әсер етпейді деп ойлап қалады.
// пернелер.
case Key of
'0'..'9': ; // цифрлар
#8 : ; // <Backspace>
#13: Edit2.SetFocus; // <Enter> - Уақыт өрісіндегі көрсеткіш: //минут
// басқа символдарға – рұхсат етілмейді
else Key :=Chr(0); // символды бейнелемеу
end;
end;
// Уақыт өрісіндегі пернені басу:минут
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': ;
#8 : ; // <Backspace>
#13: Edit3.SetFocus; // <Enter> - Уақыт өрісіндегі көрсеткіш:секунд
// басқа символдарға – рұхсат етілмейді
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 : ; // <Backspace>
#13 : Button1.SetFocus; // <Enter> - Есептеу батырмасына //фокустау
// басқа символдарға – рұхсат етілмейді
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.
44-сурет
№23. Файл іздеу
Жұмыстың мақсаты – қажетті файлды іздеп табатын бағдарлама құру.
1. Ол үшін Пішінге мына суретте көрсетілген компоненттерді орнату.
2. Буманы таңдаңыз, оны Шолу арқылы көрсетуге болады, содан соң файлдың немесе оның кеңейтілімін көрсетіп, Табу батырмасын басыңыз.
3. Төменде файл іздеудің бағдарламасы берілген.
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;
// Іздеу батырмасында шерту
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-суреттегі компоненттерді Пішінге орналастырыңыз.
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;
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-суретте бейнеленген компоненттерді орнатыңыз.
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;
// файлдан оқу
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-суретте көрсетілгендей компонент-терді орналастырыңыз.
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-суретте көрсетілген компоненттерді орнатыңыз.
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_MARGIN = 2; // сол жақтан шегініс 2 см
TOP_MARGIN = 2; // жоғарыдан шегініс 2 см
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_MARGIN / 2.54 * dpiX);
py := Round(TOP_MARGIN / 2.54 * dpiY);
// кесте бағандарының «принтерлік» координаттарын есептеу
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. Төменде келтірілген бағдарламаны пайдаланып, сол компоненттердің оқиғалары мен қасиеттерін өңдеп, жұмыс мақсатына жеткізетін әрекеттерді орындаңыз.
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}
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;
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.Top:=Form1.Label5.Top+Label5.Height+10;
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.top:=Image1.Top+Image1.Height+10
else Label1.top:=Label5.Top+Label5.Height+10;
RadioButton1.top:=Label1.top;
Label1.visible:=TRUE;
RadioButton1.visible:=TRUE;
end;
if Form1.Label2.Caption <> ''
then begin
Label2.top:=Label1.top+ Label1.height+10;
RadioButton2.top:=Label2.top;
Label2.visible:=TRUE;
RadioButton2.visible:=TRUE;
end;
if Form1.Label3.Caption <> ''
then begin
Label3.top:=Label2.top+ Label2.height+10;
RadioButton3.top:=Label3.top;
Label3.visible:=TRUE;
RadioButton3.visible:=TRUE;
end;
if Form1.Label4.Caption <> ''
then begin
Label4.top:=Label3.top+ Label3.height+10;
RadioButton4.top:=Label4.top;
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<N_LEV) do
i:=i+1;
buf:=buf+ #13+mes[i];
Label5.Top:=20;
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.
В нашем каталоге доступно 74 329 рабочих листов
Перейти в каталогПолучите новую специальность за 2 месяца
Получите профессию
за 6 месяцев
Пройти курс
Рабочие листы
к вашим урокам
Скачать
I.Delphi визуалды бағдарламалау жүйесіКіріспе.Елімізде соңғы жылдары дүние жүзінің дамыған мемлекеттерінде кең қолданылып жүрген бағдарламалау тілдеріне деген сұраныс артуда. Соған байланысты осы тілді үйренуге талап қылған жастарымызды сол бағдарламалау тілдерін қазақ тілінде оқып-білуі үшін солардың мектеп оқулықтарына енбеген бағдарламалау жүйелерімен таныстырайық.Бағдарламалаудың жалпы модульдік, обьектілі-бағдарланған және құрылымдық сияқты негізгі әдістері бар. Ол әдістердің ішінен обьектілі-бағдарланған түріне тоқталайық. Бұл әдіс обьектілі-бағдарланған визуалды бағдарламалау тіліне негізделген. Мұндай бағдарламалау тілдеріне: Smalltalk, C++, Actor, Iava және басқалар жатады. Соңғы жылдары дайындалған бағдарламалар осы визуалды бағдарламалау тәрізді жүзеге асырылады. Визуалды бағдарламалау ортасын пайдаланудың басты ерекшелігі, ол бағдарламалық жобаны құру болып табылады. Ондай жүйе қатарына: Visual Basic, Delphi, C++ Builder, Visual C++ және тағы басқалар енеді. Осы жүйелер ішінен бағдарламалаушылар арасында жиі қолданылып жүрген Delphi визуалды бағдарламалау жүйесінің 7.0 версиясын қарастыруға кірісейік.1. Delphi – дің басты терезелері.Delphi бағдарламасын жүктейік. Сонда экраннан оның төмендегі 4 терезесі көрінеді.Осылардың тұтас созылып жатқаны – бас терезе. Сол жақтағысы – обьектілер терезесі. Ол терезеде осы бағдарламаны құрайтын компоненттердің қасиеттері беріледі. Ортасында бірінің үстіне бірі орналасқан екі терезе – болашақ бағдарламаның Пішіні/формасы/ және бағдарламасы бар терезе тұр. Пішін терезесі енді дайындалатын бағдарламаның визуалды көрінісі болып табылады.
6 662 871 материал в базе
Настоящий материал опубликован пользователем Рябова Елена Дмитриевна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт
Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.
Удалить материалВаша скидка на курсы
40%Курс профессиональной переподготовки
500/1000 ч.
Курс повышения квалификации
72 ч. — 180 ч.
Курс повышения квалификации
72 ч. — 180 ч.
Курс повышения квалификации
36/72 ч.
Мини-курс
2 ч.
Мини-курс
6 ч.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.