Объектті бағытталған программалау
К І Р І С П Е
Объектті бағытталған программалаудың негізгі түсінігі және программаның элементі болып мәліметтердің жиынтығын, сондай.ақ оларға жасалатын әрекеттерді үйлестіретін объект болып табылады. Delphi тіліндегі қолданбалы бағдарламалар немесе қосымшалар IDE (Integrated Development Environment) дамып отыратын құрылымдық ортада орындалады. IDE ортасы бағдарламаушының қарым.қатынасын ұйымдастырып, әр түрлі басқару элементтерінен құралған бірнеше терезелерден тұрады. Осы ортаның құралдарын пайдалана отыры, қосымшаның интерфейстік бөлігін жобалауға, программаның кодын жазуға және оны басқару элементтерімен байланыстыруға болады. Аталған жұмыстар және бағдарламаны түзету, оны орындау әрекеттері IDE ортасында орындалады.
Delphi.дің IDE ортасы көптерезелік жүйе деп саналады. Delphi оқиғалар бойынша басқарылатын объектті бағытталған, визуалды.программалау тілі болып саналады, және жалпы мөлшерде жобалаудың қазіргі құралдарына ұсынылатын жаңа талаптарға сәйкес келеді.
Бұл әдістемелік ңұсқауда жүйенің әр түрлі құралдарын пайдалану мысалдары келтірілген, әр түрлі мақсаттағы қолданбалы программалар өңделген, өзіндік жұмыстардың варианттары келтірілген.
1 1.ЛАБОРАТОРИЯЛЫҚ ЖҰМЫС «СЫЗЫҚТЫ АЛГОРИТМДЕРДІ БАҒДАРЛАМАЛАУ»
Лабораториялық жұмыстың мақсаты: визуалды ортаның негізгі элементтерін меңгеру, мәліметтерді енгізу/ шығару үшін DELPHI қарапайым құраушыларын пайдалануды меңгеру, және сызықты алгоритмді пайдаланатын қосымшаны құру.
1.1 DELPHI визуалды ортасы
DELPHI.ді жүктегенде экранда 1.1. суретте көрсетілген интерфейс панелі шығады. DELPHI ортасы монитор экранында біруақытта ашылатын бірнеше терезелер түрінде визуалды іске асырылады. Терезелердің саны, орналасуы, өлшемі және түрі программистпен өзгертілуі мүмкін.
Негізгі терезе экранда әрқашанда бар болады және қосымшаны құру үрдісін басқару үшін арналған.
Негізгі меню үрдісті басқару үшін барлық қажетті құралдардан тұрады.
Негізгі меню пиктограммалары көбінесе жиі қолданылатын командалармен жұмыс жасауды жеңілдетеді.
Компоненттер Палитрасы Форма терезесіне программистпен орналастырылған кейбір элементті (компонентті) сипаттайтын, DELPHI ортасының кітапханалық программалар жиынтығына рұхсатты қамтамасыз
Объектті бағытталған программалаудың негізгі түсінігі және программаның элементі болып мәліметтердің жиынтығын, сондай.ақ оларға жасалатын әрекеттерді үйлестіретін объект болып табылады. Delphi тіліндегі қолданбалы бағдарламалар немесе қосымшалар IDE (Integrated Development Environment) дамып отыратын құрылымдық ортада орындалады. IDE ортасы бағдарламаушының қарым.қатынасын ұйымдастырып, әр түрлі басқару элементтерінен құралған бірнеше терезелерден тұрады. Осы ортаның құралдарын пайдалана отыры, қосымшаның интерфейстік бөлігін жобалауға, программаның кодын жазуға және оны басқару элементтерімен байланыстыруға болады. Аталған жұмыстар және бағдарламаны түзету, оны орындау әрекеттері IDE ортасында орындалады.
Delphi.дің IDE ортасы көптерезелік жүйе деп саналады. Delphi оқиғалар бойынша басқарылатын объектті бағытталған, визуалды.программалау тілі болып саналады, және жалпы мөлшерде жобалаудың қазіргі құралдарына ұсынылатын жаңа талаптарға сәйкес келеді.
Бұл әдістемелік ңұсқауда жүйенің әр түрлі құралдарын пайдалану мысалдары келтірілген, әр түрлі мақсаттағы қолданбалы программалар өңделген, өзіндік жұмыстардың варианттары келтірілген.
1 1.ЛАБОРАТОРИЯЛЫҚ ЖҰМЫС «СЫЗЫҚТЫ АЛГОРИТМДЕРДІ БАҒДАРЛАМАЛАУ»
Лабораториялық жұмыстың мақсаты: визуалды ортаның негізгі элементтерін меңгеру, мәліметтерді енгізу/ шығару үшін DELPHI қарапайым құраушыларын пайдалануды меңгеру, және сызықты алгоритмді пайдаланатын қосымшаны құру.
1.1 DELPHI визуалды ортасы
DELPHI.ді жүктегенде экранда 1.1. суретте көрсетілген интерфейс панелі шығады. DELPHI ортасы монитор экранында біруақытта ашылатын бірнеше терезелер түрінде визуалды іске асырылады. Терезелердің саны, орналасуы, өлшемі және түрі программистпен өзгертілуі мүмкін.
Негізгі терезе экранда әрқашанда бар болады және қосымшаны құру үрдісін басқару үшін арналған.
Негізгі меню үрдісті басқару үшін барлық қажетті құралдардан тұрады.
Негізгі меню пиктограммалары көбінесе жиі қолданылатын командалармен жұмыс жасауды жеңілдетеді.
Компоненттер Палитрасы Форма терезесіне программистпен орналастырылған кейбір элементті (компонентті) сипаттайтын, DELPHI ортасының кітапханалық программалар жиынтығына рұхсатты қамтамасыз
Пән: Информатика, Программалау, Мәліметтер қоры
Жұмыс түрі: Материал
Тегін: Антиплагиат
Көлемі: 53 бет
Таңдаулыға:
Жұмыс түрі: Материал
Тегін: Антиплагиат
Көлемі: 53 бет
Таңдаулыға:
К І Р І С П Е
Объектті бағытталған программалаудың негізгі түсінігі және
программаның элементі болып мәліметтердің жиынтығын, сондай-ақ оларға
жасалатын әрекеттерді үйлестіретін объект болып табылады. Delphi тіліндегі
қолданбалы бағдарламалар немесе қосымшалар IDE (Integrated Development
Environment) дамып отыратын құрылымдық ортада орындалады. IDE ортасы
бағдарламаушының қарым-қатынасын ұйымдастырып, әр түрлі басқару
элементтерінен құралған бірнеше терезелерден тұрады. Осы ортаның құралдарын
пайдалана отыры, қосымшаның интерфейстік бөлігін жобалауға, программаның
кодын жазуға және оны басқару элементтерімен байланыстыруға болады. Аталған
жұмыстар және бағдарламаны түзету, оны орындау әрекеттері IDE ортасында
орындалады.
Delphi-дің IDE ортасы көптерезелік жүйе деп саналады. Delphi оқиғалар
бойынша басқарылатын объектті бағытталған, визуалды-программалау тілі болып
саналады, және жалпы мөлшерде жобалаудың қазіргі құралдарына ұсынылатын
жаңа талаптарға сәйкес келеді.
Бұл әдістемелік ңұсқауда жүйенің әр түрлі құралдарын пайдалану
мысалдары келтірілген, әр түрлі мақсаттағы қолданбалы программалар
өңделген, өзіндік жұмыстардың варианттары келтірілген.
1 1-Лабораториялық жұмыс Сызықты алгоритмдерді бағдарламалау
Лабораториялық жұмыстың мақсаты: визуалды ортаның негізгі элементтерін
меңгеру, мәліметтерді енгізу шығару үшін DELPHI қарапайым құраушыларын
пайдалануды меңгеру, және сызықты алгоритмді пайдаланатын қосымшаны құру.
1.1 DELPHI визуалды ортасы
DELPHI-ді жүктегенде экранда 1.1. суретте көрсетілген интерфейс панелі
шығады. DELPHI ортасы монитор экранында біруақытта ашылатын бірнеше
терезелер түрінде визуалды іске асырылады. Терезелердің саны, орналасуы,
өлшемі және түрі программистпен өзгертілуі мүмкін.
Негізгі терезе экранда әрқашанда бар болады және қосымшаны құру үрдісін
басқару үшін арналған.
Негізгі меню үрдісті басқару үшін барлық қажетті құралдардан тұрады.
Негізгі меню пиктограммалары көбінесе жиі қолданылатын командалармен
жұмыс жасауды жеңілдетеді.
Компоненттер Палитрасы Форма терезесіне программистпен
орналастырылған кейбір элементті (компонентті) сипаттайтын, DELPHI
ортасының кітапханалық программалар жиынтығына рұхсатты қамтамасыз етеді.
Әрбір компонент анықталған қасиеттер жиынтығынан тұрады, оларды программист
өзінің көзқарасы бойынша таңдап алады және өзгерте алады. Мысалы, терезе
аты, батырмадағы жазу, шрифтің өлшемі, түсі, түрі және т.б. Компоненттер
қасиеттері HELP-та келтірілген .
Объекттілер Инспекторы терезесі таңдап алынған компоненттердің
қасиеттерін өзгерту үшін арналған және екі беттен тұрады. Properties
(Қасиеттер) беті компоненттердің қажетті қасиеттерін өзгерту үшін арналған.
Events (Оқиғалар) беті– қандай да бір оқиғаға компоненттің реакциясын
анықтау үшін арналған (мысалы, “тышқанның” батырмасын басу).
Форма терезесі жобаланатын Windows-қосымшасының интерфейсін ұсынады.
Осы терезеге қосымшаны жобалау кезінде қажетті компоненттер
орналастырылады, компоненттерді өңдеуші Компоненттер Палитрасынан алады.
Жобаның әрбір Формасына модуль (Unit) сәйкес келеді, оның Object Pascal
тіліндегі мәтіні Код редакторы терезесіне орналастырылады.
Код Редакторы терезесі жоба модулінің мәтінін көру, құру және
редакторлау үшін арналған. Бастапқы жүктемелеуде Код Редакторы терезесінде
Windows-қосымшасы ретінде бос Форманың қалыптасуы үшін операторлардың
минималды жиынтығынан тұратын модуль мәтіні болады. Форма терезесінде
кейбір компонентті орналастыру кезінде, модуль мәтіні автоматты түрде
қажетті операторлармен толықтырылады.
Форманы құру, клавиатура пернесін немесе тышқан батырмасын басу, т.б.
сияқты жүйеде орындалатын барлық оқиғалар туралы Windows ядросы
терезелерді қажетті хабарламаларды жіберу арқылы ақпараттайды. DELPHI
ортасы оқиғаларды өңдеушілер көмегі арқылы хабарламаларды қабылдайды және
өңдейді (мысалы, “тышқан” батырмасын басу– OnClick оқиғасы, Форманы құру –
OnCreate). Көбінесе жиі қолданылатын оқиғалар 1.1. кестеде ұсынылған.
1.1- кесте. Оқиғалар
Оқиғалар Оқиғалардың сипаттамасы
OnActivate Форманы активтеу кезінде қалыптасады
OnCreate Форманы құру кезінде қалыптасады. Берілген оқиғаның
өңдеушісінде Форманы құру кезінде орындалатын әрекеттерді
беру керек, мысалы бастапқы мәндерді орнату.
OnClick Компонент аймағында тышқанның батырмасын басу кезінде
орындалады.
OnDblClick Компонент аймағында тышқанның батырмасын екі рет басу
кезінде орындалады.
OnKeyPress Пернетақта пернелерін басу кезінде орындалады. Key
параметрі Char түрінде болады және басылған перненің
ASCII-кодынан тұрады (Enter пернесі нің коды #13, Esc
пернесінікі - #27 және т.с.с.). Әдетте бұл оқиға пернелердің
бірін басу кезінде реакция қажет болған жағдайда
қолданылады.
OnKeyDown Пернетақта пернелерін басу кезінде орындалады. Бұл оқиғаның
өңдеушісі басылған перне және Shift, Alt, Ctrl пернелерінің
күйі , сондай-ақ тышқанның батырмасының басылуы туралы
ақпарат алады .
Оқиғаның өңдеушісін құру үшін программист Объектілер Инспекторы
терезесінің жоғарғы жағында компоненттер тізімін ашуы және қажетті
компонентті таңдауы керек. Содан кейін, Объектілер Инспекторының Events
бетінде, тышқанның сол жақ батырмасын басу арқылы өңдеушінің атын таңдауы
және оның оң жақ (ақ) бөлігін екі рет шертуі қажет. Оған жауап ретінде
DELPHI Код Редакторы терезесін активтейді және таңдалған оқиғаның өңдеу
процедурасының дайындамасын көрсетеді. Әрбір өңделетін оқиға үшін модуль
мәтінінде процедура (procedure) қалыптасады, бұның begin және end кілт
сөздері арасында программист Object Pascal тілінде оқиға өңдеушісінің талап
етілетін алгоритмін жазады.
Форма терезесі және Код Редакторы терезесі арасында ауысу негізгі меню
батырмасы пиктограммасы арқылы немесе F12 пернесі арқылы орындалады.
1.2 Қосымшаны құру мысалы
Тапсырма: Келесі шаманы есептеу үшін Windows-қосымшасын құру
.
Берілген x, y және z сандық мәндерін интерфейс панелінің сәйкес
өрістеріне пернетақтадан енгізу. Құрастырып жатырған қосымшаның интерфейс
панелінің мүмкін варианттарының бірі 1..2. суретте көрсетілген.
1.2.1 Жобаны сақтау
Қосымшаны жобалау үрдісі кезінде DELPHI бірнеше файлдарды құрады -
жоба. Әрбір жобаны алдын ала құрылған жеке папкаға сақтаған дұрыс. Windows
сәйкес келетін қосымша көмегімен папка құрып, оны LAB1 деп атайық.
Жобаны сақтау үшін негізгі менюдан File пунктін ашыңыз және
“тышқанды” Save Project As...(Сохранить проект как...) опциясында шертіңіз.
DELPHI бірінші жоба модулін сақтау үшін Save Unit1 As (Сохранить модуль
как) диалог панелін ашады. Осы панелден құрылған LAB1 папкамызды табамыз
және соның ішіне модульге, мысалы UnLinAlg ат беріп сақтаймыз. Көңіл
қойыңыз , DELPHI бұл файылға үнсіздік бойынша *.pas кеңеюі бар Delphi unit
типін меншіктейді. Сонан соң Save Project1 As диалог панелі ашылады .
Жобамызға, мысалы, PrLinAlg ат беріп осы папканың ішіне сақтайық. Бұнда
DELPHI файлға Delphi project типін және *.dpr кеңейтілуін береді. Назар
аударыңыздар, енді DELPHI негізгі терезесі PrLinAlg, жобаның негізгі файл
терезесі- PrLinAlg.dpr, ал жоба модулі терезесі- UnLinAlg.pas деп аталады.
DELPHI ұсынатын бірқалыпты Unit1 және Project1 орнына, файлдарға
мағынасы бар ат беруге тырысыңыздар.
Авариялық, мысалы тоқ көзінің сөніп қалуы немесе жүйенің істен шығып
кетуімен және т.с.с. байланысты жағдайларда жоба файлының жоғалуын
болдырмау үшін, негізгі менюдің пиктограммасын немесе File менюынан .
Save All опциясын пайдаланып периодты түрде жобаны сақтау ұсынылады.
1.2.2 Терезелерді орналастыру
Тереземен жұмыс жасау үшін, терезенің кез-келген жерінен “тышқанмен”
шерту арқылы оны белсенді қылу керек. Белсенді терезенің аты бөлініп
тұрады, мысалы, 1.1 суретте белсенді болып Код Редакторы терезесі болып
табылады.
Форма және модуль Коды Редакторының терезесінде жоғарғы оң жақ
бұрышында басқару батырмалары болады, олар: - терезені пиктограммаға
жабу үшін, - терезені бүткіл экранға ашу үшін және, бастапқы
өлшемге келу ушін -терезені жабу үшін арналған.
“Тышқанның” көмегімен, Форма, Код Редакторы, Объектілер Инспекторы
терезелерінің керек өлшемдерін және олардың экранда орналасуын реттеңіздер.
1.2.3 Форма атын өзгерту
Жаңа Форманың бірдей (Name) аты және тақырыбы(Сaption) - FORM1 болады.
Жас программисттерге Форма атын өзгертудің қажеті жоқ, себебі ол модуль
мәтінінде қолданылады.
Тақырыбын өзгерту үшін Объектілер Инспекторының терезесін белсенді
қылыңыздар және Properties бетінде Caption қасиетіндегі Form1 жазуды
Лабораториялық жұмыс №1-Сызықты алгоритм -деп өзгертіңіз. Біруақытта Форма
терезесінің тақырыбы аты өзгергеніне көз жеткізіңіз.
1.2.4 Формада компоненттерді орналастыру
Формада компонентерді 1.2. суретте көрсетілген панелге сәйкес
келетіндей орналастырайық
Формаға жазуларды енгізу үшін Label компоненті қолданылады.
Компоненттер Палитрасында Standard бетінде Label компонентінің
пиктограммасын таңдаңыз және оның үстінен “тышқанмен” шертіңіз. Осыдан
кейін Форманың керек жерінен “тышқанмен” шертіңіз - Label1 жазуы пайда
болады. Объектілер Инспекторының Caption қасиетінде Label1 жазуын X мәнін
енгізіңіз- деп өзгертіңіз:. Font қасиетінде шрифтті өзгертіңіз. Осыған
ұқсас Формаға қалған жазуларды енгізіңіз. Кез-келген орналастырылған
компоненттердің біріне “тышқанмен” шертіп, оның Формада орналасуын және
өлшемін реттеңіз.
Мәліметтерді енгізушығару үшін қарапайым жағдайларда Edit және Memo
компоненттері қолданылады. Edit компоненті мәліметтер бір жолмен
көрсетілген кезде қолданылады. Егер мәліметтер бірнеше жолдардан тұрса,
онда Memo компоненті қолдданылады.
x, y және z айнымалыларының сандық мәндерін енгізу өрістерін құру үшін
Edit компонентін қолданамыз. Компоненттер Палитрасының Standard бетінен
пиктограммасын таңдаңыз және Edit компонентін Форманың керек жеріне
орналастырыңыздар.
Нәтижелерді шығару үшін Memo компонентін қолданамыз. Компоненттер
Палитрасының Standard бетінен пиктограммасын таңдаңыздар, Memo
компонентін Форманың керек жеріне орналастырып, орналасуын және өлшемін
реттеңіздер.
1.2.5 Форма құру (FormCreate) оқиғаларын өңдеуші процедурасының
жазылуы
Егер программист интерфейс панелі пайда болған кезде экранда сәйкес
өрістерде мәліметтердің бастапқы мәндері болғанын қаласа, ол қосымшаны
орындалуға жіберген кезде Форманы құру (OnCreate) оқиғасы шығатынын ескеруі
керек. x, y, z айнымалыларының бастапқы мәндерін сәйкесінше Edit1, Edit2
және Edit3 өрістеріне, ал Memo1 өрісіне Лабораториялық жұмыс №1 – Сызықты
алгоритм жолын шығаратын осы оқиғаның өңдеу процедурасын құрастырайық. Ол
үшін тышқанмен Форманың кез-келген бос жерін шертіңіз. Экранда UnLinAlg
модулінің мәтіні пайда болады, мұнда DELPHI автоматты түрде Форма құру
оқиғасының өңдеуші – процедурасын : Procedure
TForm1.FormCreate(Sender:TObject) құрады. Осы процедураның begin және end
операторлары арасында қажет әрекеттерді орындайтын операторларды енгізіңіз
(модуль мәтіні қ.1.2.7 көрсетілген).
1.2.6 Батырманы басу оқиғасын өңдеуші прпоцедурасын жазу Button1
(Button1Click)
Шаманы есептейтін батырманы Формаға орналастырайық. Компоненттер
Палитрасында Standart бетінде Button компонентінің пиктограммасын
таңдаңыз. Объектілер Инспекторының Caption қасиетінде батырмадағы Button1
жазуын Есептеу-ге ауыстырыңыз. Font қасиетінде шрифтті өзгертіңіз.
Батырманың орналасуын және өлшемін реттеңіздер. Осыдан кейін батырманың
үстінен “тышқанмен” екі рет шертіңіз, сонда курсор Button1 батырмасын
басу оқиғасын өңдеуші процедурасының мәтінінде орналастырылады: Procedure
TForm1.Button1Click(Sender:TObject) . UnLinAlg модулінің мәтінін пайдаланып
осы процедураның операторларын мұхият теріңіздер.
1.2.7 UnLinAlg модулінің мәтіні
Unit UnLinAlg;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Memo1: TMemo;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
Форма құру оқиғасы өңдеушісінің процедурасы:
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='0.4'; X –тің бастапқы мәні
Edit2.Text:='8.75e-2'; Y–тің бастапқы мәні
Edit3.Text:='-19.63'; Z–тің бастапқы мәні
Memo1.Clear; Memo1 тазалау
Жолды Memo1-ге шығару:
Memo1.Lines.Add('Лабораториялық жұмыс№1 – Сызықтық алгоритм);
end;
Button1 батырмасын басу оқиғасының өңдеуші процедурасы:
procedure TForm1.Button1Click(Sender: TObject);
var
x,y,z,a,b,c,u : extended; локалді айнымалыларды хабарлау
begin
x:=StrToFloat(Edit1.Text); X -ке Edit1 мәні меншіктеледі
y:=StrToFloat(Edit2.Text); Y -ке Edit2 мәні меншіктеледі
z:=StrToFloat(Edit3.Text); Z -ке Edit3 мәні меншіктеледі
Шаманың есептелуі:
a:=sqrt(x)-y*y*y;
b:=sin(a)cos(a);
c:=Exp(5*Ln(b));
u:=c+exp(yz)*sin(z*z);
Memo1.Lines.Add('X = '+Edit1.Text+' Y = '+Edit2.Text+
' Z = '+Edit3.Text); Memo1-ға X, Y, Z нәтижесінің
шығуы
Memo1-ге нәтиженің шығуы:
Memo1.Lines.Add(' U = '+FloatToStrF(u,ffFixed,8,3));
end;
end.
Edit және Memo компоненттері жұмыс жасайтын мәліметтер String
түрінде болады. Сондықтан TForm1.Button1Click процедурасында StrToFloat
функциясы көмегімен X,Y,Z айнымалыларына Edit1,Edit2,Edit3 өрістерінің
мәндері меншіктелген кезде, String түріндегі мәліметтердің Extended
түріндегі қалқымалы нүктесі бар нақты мәндер түріне ауысуы орындалады.
Бүтін түрдегі мәліметтермен жұмыс жасау керек болса, StrToInt функциясы
пайдаланылады.
Мәліметтерді Memo1-ға шығарған кезде Lines қасиетінің Add әдісі
пайдаланылады. Мәліметтерді нақты мәннен жолдық мәнге ауыстыру үшін және
шығаратын нәтижені ұсынатын форманы басқару FloatToStrF функциясы
пайдаланылады.
1.2.8 Қосымшамен жұмыс
Құрылған қосымшаны орындалуға жіберу үшін бас менюдің
пиктограммасын немесе F9 пернесін басыңыз. Осы кезде модулдердің
тексерілуі және, егер қате жоқ болса, жобаның компоновкасы және
PrLinAlg.exe орындалатын файлдың құрылуы орындалады. Экранда қосымша
интерфейсінің панелі шығады (сурет 1.2).
“Тышқанмен” “Есептеу” батырмасына шертіңіз және Memo1 өрісінде нәтиже
шығады. Edit өрісінде x, y, z-тің бастапқы мәндерін өзгертіңіз және
қайтадан ”Есептеу” батырмасын басыңыз. Memo1 өрісінде жаңа мән шығатынына
көз жеткізіңіздер. Қосымша жұмысын аяқтау интерфейс панелінің жоғарғы оң
жақ бұрышында орналасқан батырмасын басу арқылы болады.
Қосымшаның штатсыз жұмыс жасау жағдайында жобаның бастапқы режимына
Run менюында ProgramReset опциясын таңдау немесе Ctrl+F2 пернелерін басу
арқылы қайтадан оралуға болады.
1.3 Өзіндік тапсырманың орындалуы
Оқытушының нұсқауы бойынша өздеріңіздің жеке тапсырмаңызды таңдап
алыңыздар. Тапсырманың шартын, бастапқы берілгендердің санын және түрін
нақтылап алыңыздар. Осыған сәйкес жобаланатын қосымшаның интерфейс
панелінің дизайнын қалыптастырыңыз, Edit өрісінің қажетті санын, Форма
тақырыбының мәтінін, шрифт өлшемдерін, сондай-ақ нәтижелерді енгізушығару
кезіндегі айнымалылардың түрлерін және айналдыру функцияларын
орналастырыңыздар.
Жеке тапсырмалар.
1.
Келесі мәндер бойынша x=14.26, y=-1.22, z=3.5( t=0.564849.
2.
Келесі мәндер бойынша x=-4.5, y=0.75(,z=0.845 u=-55.6848.
3.
Келесі мәндер бойынша x=3.74, y=-0.825, z=0.16 v=1.0553.
4.
Келесі мәндер бойынша x=0.4 ,y=-0.875, z=-0.475 w=1.9873.
5.
Келесі мәндер бойынша x=-15.246, y=4.642, z=20.001 =-
182.036.
2 2- лабораториялық жұмыс
Тармақталған алгоритмдерді бағдарламалау
Лабораториялық жұмыстың мақсаты: қарапайым ауыстырғыш-компоненттердің
пайдалануын меңгеру және тармақталған алгоритмді пайдаланатын қосымша құру.
2.1 Қосымша құру мысалы
Тапсырма: Келесі шаманы есептеу үшін Windows-қосымша құру
Z=, мұнда пайдаланушының қалауы бойынша.
Интерфейс панелінде бастапқы мәліметтердің бақылау нәтижесін басқару
мүмкіндігін алдын ала қарастыру.
Құрастырып жатырған қосымшаның интерфейс панелінің мүмкін
варианттарының бірі 2.1. суретте көрсетілген
2.1.1 Формада компоненттерді орналастыру
Формада компонентерді 2.1- суретте көрсетілгендей орналастырайық
DELPHI –де қосымшаларды құрған жағдайда ауыстырғыш- батырмалар
түріндегі компоненттер жиі қолданылады. Бұндай батырманың күйі (қосылған -
өшірілген) Формада визуалды түрде бейнеленеді. Панелде( 2.1 сурет)
ауыстырғыш- батырмалардың екі түрі көрсетілген: CheckBox және RadioGroup .
CheckBox компоненті тәуелсіз ауыстырғыш батырманы ұйымдастырады, бұның
көмегімен пайдаланушы “ияжоқ” түріндегі өзінің шешімін көрсете алады.
RadioGroup компоненті, батырмалар тобынан тұрады – тәуелді ауыстырғыштар.
Батырмалар тобының бір батырмасын басқан кезде, барлық қалған батырмалар
сөнеді.
2.1. суретке сәйкес Label, Edit және Memo компоненттерін Формаға
орналастырыңыз. Компоненттер Палитрасындағы Standard бетінен CheckBox
компонентінің пиктограммасын таңдап алыңыз және Форманың керек жеріне
орналастырыңыз. Объектілер Инспекторының Caption қасиетінде CheckBox1
жазуының орнына мәліметтердің бақылау нәтижесі- деп жазыңыз . Қосымшаны
орындалуға жіберген кезде CheckBox батырмасы қосылған болу үшін, Checked
қасиетін True- деп өзгертіңіз.
Standard Компоненттер Палитрасынан RadioGroup компонентінің
пиктограммасын таңдап алыңыз және Форманың керек жеріне орналастырыңыз.
Caption қасиетінде RadioGroup1 атын f(x) деп өзгертіңіз. Батырмаларды бір
бағанаға орналастыру үшін, Columns қасиетін 1-ге тең деп алыңыз.
“Тышқанмен” Items қасиетінің оң жағына екі рет шертіңіз - батырмалар аты
тізімінің жолдық редакторы пайда болады. Екі жолға ат беріңіз: бірінші
жолға- sin(x), екінші жолға - cos(x) және ОК-ны басыңыз. Осыдан кейін
Формада сәйкес жазулары бар екі батырма-ауыстырғыштан тұратын топ пайда
болады. Қосымшаны орындалуға жіберген кезде RadioGroup бірінші батырма
қосылған болу үшін, ItemIndex қасиетін 0-ге деп алыңыз.
2.1.2 FormСreate және Button1Сlick оқиғаларын өңдеуші процедураларын
құру
Технология создания процедур обработки событий FormСreate және
Button1Сlick оқиғаларын өңдеуші процедураларын құру технологиясы алдыңғы
жұмыстан айырмашылығы жоқ. UnRazvAlg модулінің мәтінін пайдаланып осы
процедуралардың операторларын мұхият теріңіздер.
2.1.3. UnRazvAlg модулінің мәтіні
Unit UnRazvAlg;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label4: TLabel;
Memo1: TMemo;
Button1: TButton;
RadioGroup1: TRadioGroup;
CheckBox1: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
Форма құру оқиғасы өңдеушісінің процедурасы:
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='0.5'; X тің бастапқы мәні
Edit2.Text:='1.8'; Y тің бастапқы мәні
Memo1.Clear; Memo1 тазалау
Жолдың Memo1-ге шығуы:
Memo1.Lines.Add(‘Лабораториялық жұмыс №2 – Тармақталған алгоритм’);
end;
Button1 батырмасын басу оқиғасының өңдеуші процедурасы:
procedure TForm1.Button1Click(Sender: TObject);
var
x,y,z,fx : extended; локалды айнымалыларды хабарлау
begin
x:=StrToFloat(Edit1.Text); X -ке Edit1 мәні меншіктеледі
y:=StrToFloat(Edit2.Text); Y –ке Edit2 мәні меншіктеледі
fx:=sin(x); fx-ке бастапқы мән
меншіктеледі
Басылған батырмаға сәйкес функцияның таңдалуы:
case RadioGroup1.ItemIndex of
0:fx:=sin(x);
1:fx:=cos(x);
end;
Шаманың есептелуі:
if xy then
z:=fx
else
z:=y;
CheckBox1батырма күйін тексеру:
if CheckBox1.Checked then
Memo1.Lines.Add('X = '+Edit1.Text+
' Y = '+Edit2.Text); Memo1-ге X, Y нәтижесінің шығуы
Memo1-ге нәтиженің шығуы:
Memo1.Lines.Add(' Z = '+FloatToStrF(z,ffFixed,8,3));
end;
end.
Бірінші RadioGroup1 батырмасы басылған болса, бүтін түрдегі
RadioGroup1.ItemIndex айнымалыға ноль енгізіледі, егер екіншісі – бір.
Егер CheckBox1 батырмасы басылған болса, CheckBox1.Checked логикалық
айнымалы True мәнін қабылдайды, егер басылмаса – False.
2.1.4 Қосымшамен жұмыс
Құрылған қосымшаны орындалуға жіберіңіз. Интерфейс панелінің барлық
басқару компоненттерін пайдаланып, барлық қарастырылған жұмыс жасау
режимдарында қосымшаның дұрыс іске қосылуын тексеріңіз.
2.2 Өзіндік тапсырманың орындалуы
Оқытушының нұсқауы бойынша өздеріңіздің жеке тапсырмаңызды таңдап
алыңыздар. Қосымшаны құрып, оның жұмысын тестілеңіз.
Жеке тапсырмалар
№1-№15 тапсырмалары үшін интерфейс панелінде f(x): sh(x), x2, eX үш
функцияларының біреуін таңдау мүмкіндігін қарастыру
1.
2.
3. 4.
5. 6.
7. 8.
3 3-Лабораториялық жұмыс Циклдік алгоритмдерді программалау
Лабораториялық жұмыстың мақсаты: жоба модулінің қарапайым құралдарын
меңгеру және циклдік алгоритмді қолданатын қосымшаны құру.
3.1 Жоба модулін жөндеу
Жөндеу дегеніміз жобада қателерді табу үрдісі, локализациялау және
қателерді жою болып табылады. Ол жобаны өңдеуге қарағанда программисттің
жұмыс уақытын көп алады.
Кез-келген жоба жөндеуге жіберудің алдында қандайда бір синтаксистік
немесе логикалық қатеден тұрады.
3.1.1 Синтаксистік қателерді жөндеу
Синтаксистік қателер операторларды пайдаланудың формалды ережелерін
бұзудан тұрады. Бұл қателер өңдеушінің бағдарламалау тілін жеткіліксіз білу
нәтижесінен және дисплей экранында операторларды теру кезіндегі
ынтасыздығынан (немқұрайлығынан) пайда болады.
Жоба модулінде синтаксистік қателерді іздеу компилятормен орындалады.
Программистке модульде жіберілген қателер туралы едәуір көп ақпарат беру
үшін, компилятор қателерді белгілейді және жұмысын модулдің барлық
операторлары өңделгенге дейін жалғастырады. Келесілерді ескеру керек:
1) компилятор барлық қателерді танымайды;
2) кейбір қателердің әсерінен компилятор дұрыс операторларды қате деп және
керісінше – қате операторларды дұрыс деп қабылдауы мүмкін;
3) модулдің бір жеріндегі қате өзінің артынан модулдің басқа жерінде
компилятордың диагностикалық хабарларының сериясын бодыруы мүмкін;
4) кейбір қателердің кесірінен модуль компиляциясы жалпы тоқтатылуы мүмкін
және келесі операторлардың тексерілуі жасалмайды.
Модульда табылған барлық қателер туралы ақпарат, экранның астыңғы
бөлігінде пайда болатын арнайы терезеге шығарылады. Осы терезенің әрбір
жолы файл атынан, қате және қатенің сипаттамасы табылған жолдың нөмірінен
тұрады. Егер қате сипатталған жолға “тышқанмен” екі рет шертсек, курсор
модульдің қате табылған жолын көрсетеді. Қателерді жоғарыдан төменге қарай
түзету керек және әрбір қатені түзеткеннен кейін программаны қайтадан
тексеруге жіберу керек. Қателерді түзету уақытысын қысқарту мақсатында
қателердің бар болуын тексеру Project менюында Syntax Check және Compile
режимдарында орындау ұсынылады. Қатенің сипаттамасы туралы едәуір толық
ақпарат алу үшін F1 пернесін басу арқылы HELP –тан білуге болады.
Project менюында Build All режимында кезекті түзетуден кейін қателер
туралы диагностикалық хабарламалар жоқ болған жағдайда синтаксистің
жөнделуі аяқталды деп есептеледі.
3.1.2 Логикалық қателерді жөндеу
Логикалық қателерді шартты түрде алгоритм қателеріне және семантикалық
қателерге бөлуге болады. Осындай қателердің болу себебі - қойылған есепке
алгоритмнің сәйкес келмеуі, программисттің программалау тілінің
операторларының мағынасын (семантикасын) дұрыс түсінбеуі, мәліметтерді
ұсыну ережелерін және рұхсат етілген шектердің бұзылуы, компьютерде
өңдеуге жобаны техникалық дайындау кезінде ынтасыздық (немқұрайлық).
Қателерді шығару үшін тесттер қызмет етеді. Тест – бұл сенімсіздікті
тудырмайтын нәтижені беретін бастапқы мәліметтердің жиынтығы. Тесттің
аралық және ақырғы нәтижелері қосымшаның орындалуының дұрыстығын бақылау
үшін пайдаланылады.
Тесттерді құрастыру – қарапайым есеп емес. Тесттер бір жағынан нәтиже
оңай тексерілуі үшін жеткілікті қарапайым болуы керек, екінші жағынан
алгоритмді комплексті тексеру үшін жеткілікті күрделі болуы керек.
Тесттер программалаудан бұрын алгоритм схемасы бойынша құрастырылады,
себебі тесттерді құру алгоритмизациядағы көптеген қателерді шығару үшін
көмектеседі.
Тесттердің саны және олардың күрделігі алгоритмге байланысты.
Тесттердің жиыны алгоритм схемасының барлық тармақтары ең болмағанда бір
рет өткен болатындай болуы керек. Қосымша шығарған нәтижелердің тест
нәтижелерімен сәйкес келмеуі – қателердің бар болу белгісі. Бұл қателер
есептің нәтижесі дұрыс болмағанынан немесе 0-ге бөлу және т.б. болады
Қате орнын локализациялау үшін келесі әрекеттерді жасау ұсынылады.
Код Редакторы терезесінде курсорды күдік тудыратын бөліктің алдындағы
жолға орналастырыңыз және F4 пернесін басыңыз (курсорға дейін орындау).
Қосымшаның орындалуы курсор орналастырылған модуль жолында тоқтатылады.
Кез-келген айнымалының ағымды мәнін көруге болады, егер айнымалының
идентификаторын курсормен 1-2 сек. жапсақ. F8 пернесін басып (қадамдық
орындау), айнымалыларды және есептеудің дұрыстығын бақылап отырып жол
бойынша программаны орындауға болады.
3.2 Қосымша құру мысалы
Тапсырма: функциясының мәндер кестесін шығаратын және h=(xk -
xn)10 қадамы бар x тен xn –ге дейін xk мәндері үшін оның соммасы
түрінде қатарға орналастыру Windows-қосымша құру.
Интерфейс панелінде бастапқы мәліметтерді шығаруды басқару мүмкіндігін
және есептеулердің қателігін алдын ала қарастыру.
Құрастырып жатырған қосымшаның интерфейс панелінің мүмкін
варианттарының бірі 3.1.суретте көрсетілген.
3.2.1 Формада компоненттерді орналастыру
Edit компонентінің орнына, бүтін санды, екі батырма көмегімен өзгерту
мүмкіндігі бар, бейнелеуді және редакторлауды қамтамасыз ететін SpinEdit
компонентін пайдаланамыз.
SpinEdit компоненті Компоненттер Палитрасының Samples бетінде
орналасқан Шығарылатын ақпараттың көлемі Memo компонентінің өріс
өлшемінен асып түскен жағдайда, оны айналдыру жолақтары бар сызғышпен
жабдықтау мақсатқа лайықты. Memo1 компонентінің ScrollBars қасиетінде-
ssVertical мәнін орналастырайық айналдыру жолағының тік сызғышы пайда
болады. Модульге UnCiklAlg атын меншіктейік .
3.2.2 UnCiklAlg модулінің мәтіні
Unit UnCiklAlg;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls, ExtCtrls, Spin;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
SpinEdit1: TSpinEdit;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
SpinEdit1.text:='3'; N бастапқы мәні
Edit1.text:='0.1'; Xn бастапқы мәні
Edit2.text:='2.0'; Xk бастапқы мәні
Memo1.Clear;
Memo1.Lines.Add('Лабораториялық жұмыс №3 – Циклді алгоритм');
end;
procedure TForm1.Button1Click(Sender: TObject);
var xn,xk,x,h,c,s,y,al,del:extended;
n,k:integer;
begin
n:=StrToInt(SpinEdit1.Text);
xn:=StrToFloat(Edit1.Text);
xk:=StrToFloat(Edit2.Text);
if CheckBox1.Checked then
Memo1.Lines.Add(‘Бастапқы берілгендер: n=’+IntToStr(n)+
' Xn='+FloatToStrF(xn,ffFixed,6,1)+
' Xk='+FloatToStrF(xk,ffFixed,6,1));
h:=(xk-xn)*0.1; h қадамы
x:=xn;
repeat x бойынша цикл
c:=-x*x*0.5;
S:=1;
for k:=1 to n do
begin
s:=s+c*(2*k*k+1);
c:=-c*x*x((2*k+1)*(2*k+2));
end;
y:=(1-x*x*0.5)*cos(x)-0.5*x*sin(x);
if CheckBox2.Checked then
if CheckBox3.Checked then
begin
al:=s-y; абсолютті қателік
del:=abs((s-y)y)*100; салыстырмалы қателік
Memo1.Lines.Add('x='+FloatToStrF(x, ffFixed,6,2)+
' S='+ FloatToStrF(s,ffFixed,6,3)+
' Y='+ FloatToStrF(y,ffFixed,6,3)+
' A='+ FloatToStrF(al,ffFixed,6,3)+
' D='+ FloatToStrF(del,ffFixed,6,0)+'%');
end
else
begin
al:=s-y;
Memo1.Lines.Add('x='+FloatToStrF(x, ffFixed,6,2)+
' S='+ FloatToStrF(s,ffFixed,6,3)+
' Y='+ FloatToStrF(y,ffFixed,6,3)+
' A='+ FloatToStrF(al,ffFixed,6,3));
end
else
if CheckBox3.Checked then
begin
del:=abs((s-y)y)*100;
Memo1.Lines.Add('x='+FloatToStrF(x, ffFixed,6,2)+
' S='+ FloatToStrF(s,ffFixed,6,3)+
' Y='+ FloatToStrF(y,ffFixed,6,3)+
' D='+ FloatToStrF(del,ffFixed,6,0)+'%');
end
else
Memo1.Lines.Add('x='+FloatToStrF(x, ffFixed,6,2)+
' S='+ FloatToStrF(s,ffFixed,6,3)+
' Y='+ FloatToStrF(y,ffFixed,6,3));
x:=x+h;
until xxk;
end;
end.
3.3 Өзіндік тапсырманың орындалуы
Оқытушының нұсқауы бойынша өздеріңіздің жеке тапсырмаңызды таңдап
алыңыздар. Қосымшаны құрып, оның жұмысын тестілеңіз.
Жеке тапсырмалар
№1 - №15 тапсырмалары үшін қадамы бар нен дейін x
мәндері үшін Y(x) функциясының және оның S(x) қатарға орналасуының мәндер
кестесін экранға шығару қажет. x мәндерінің барлық диапазонында S(x) және
Y(x) мәндерінің жақындығы S(x) және Y(x) есептеулерінің дұрыстығын
көрсетеді.
№ [piS(x) n Y(x)
c]
1 0.11 16
2 0.11 10
3 0.11 12
4 0.11 8
5 0.11 14
[pi
6 0.11 c]
8
7 0.11 12
8 0.11 10
9 0.11 14
10 0.10.5 15
11 0.10.8 10
4 4-лабораторлық жұмыс массивТЕРДІ ҚОЛДАНА ОТЫРЫП АЛГОРИТМДЕРДІ
ПрограммаЛАУ
Лабораторлық жұмыстың максаты: StringGrid компонентін қолдануды игеру
және массив қолданылатын қосымша құру.
4.1 Қосымша құру мысалы
Тапсырма: A={aij}(xj=apj, j=1,2,...,m)матрицасының р-ші жолына тең
x={x1,x2,...,xm} векторын және A={aij}(yi=aiq, i=1,2,...,n) (n(6,m(8)
матрицасының q-ші бағанасына тең y={y1,y2,...,yn} векторын есептеу үшін
Windows-қосымшасын құру. Интерфейс тақтасында массивтер көлемділігін
басқару мүмкінділігін қарастыру.
Құрылатын қосымшаның интерфейс тақтасының варианттарының бірі 4.1
суретте көрсетілген.
4.1.1 Формада компоненттердің орналасуы
Массивтермен жұмыс істегенде ақпаратты экранға енгізу және шығаруды
StringGrid компоненті арқылы ұйымдастыру қолайлы.
StringGrid компоненті ақпаратты кесте түрінде бейнелеу үшін
қоданылады. Кесте екі зонадан тұрады – бекітілген және жұмыс. Бекітілген
аймақ жұмыс аймағының жолдары мен бағаналарының атауларын шығару үшін және
олардың көлемдерін “тышқан” көмегімен басқару үшін керек. Бекітілген аймақ
басқа түспен боялған және оған ақпаратты пернелер тақтасынан енгізуге
болмайды. Бекітілген аймақтың жолдары мен бағаналарының саны сәйкесінше
FixedRows және FixedCols қасиеттерінде белгіленеді.
Жұмыс аймағы RowCount жолдары және ColCount бағаналары ақпараттарын
қамтиды. Оларды прораммалық және “тышқан” немесе пернелер тақтасы көмегімен
өзгертуге болады.
Программадағы ақпаратқа кіру мүмкіншілігі Cells[ACol, ARow: integer]:
string қасиеті арқылы жүзеге асырылады, мұнда ACol- бағана нөмірі, ал ARow
–жол нөмірі, нөмірлеу 0-ден басталады.
StringGrid компонентінің пиктограммасы компоненттер тақтасының
Additional бетінде орналасқан. Біздің тапсырмада барлық StringGrid
компоненттері үшін бекітілген аймақ қолданбайтындықтан, объекттер
инспекторында FixedCols және FixedRows қасиеттерінің мәндерін 0 деп
белгілеңіздер. Тапсырмаға сәйкес StringGrid1 компоненті үшін жолдар санының
n және бағаналар санының m шекті мәндерін белгілеңіздер: ColCount=8, а
RowCount=6 (8 бағана және 6 жол). StringGrid2 компоненті үшін ColCount=1,
RowCount=8, ал StringGrid3 комопоненті үшін ColCount=1, RowCount=6.
StringGrid компонентіне үнсіздік бойынша ақпаратты пернелер тақтасынан
енгізуге тыйым салынған, сондықтан StringGrid1 компоненті үшін объектілер
инспекторында Options қасиетінің символында тышқанды екі рет шерту керек
және ашылған қасиеттер тізімінде goEditing мәнін True деп белгілейміз.
SpinEdit компоненттерімен жұмыс істеу ыңғайлы болу үшін SpinEdit1
компоненті үшін қасиеттерді былай белгілейміз: MinValue=1, MaxValue=6, ал
SpinEdit2 компоненті үшін: MinValue=1, MaxValue=8.
4.1.2. SpinEdit1Change және SpinEdit2Change оқиғаларын өңдеу
процедураларын құру
SpinEdit1Change және SpinEdit2Change оқиғалары сәйкесінше SpinEdit1
және SpinEdit2 редактор өрісінде мәндердің кез-келген өзгеруінде пайда
болады, бұл оқиғалардың өңдеуші процедурасын құрайық. Оларға SpinEdit
редактор өрісінде алынған n және m мәндерін StringGrid компонентінің
ColCount және RowCount қасиеттеріне меншіктеледі. Бұл SpinEdit
компоненттері қосымша пернелерсіз арқылы StringGrid кестесінің көлемдерін
басқаруға мүмкіншілік береді, себебі SpinEdit редактор өрісінің мәндерінің
өзгеруі StringGrid кестесінің көлемінің өзгеруіне әкеледі. SpinEdit1
компонентінде тышқанды екі рет шертіңіздер – курсор SpinEdit1Change
оқиғасын өңдеу процедурасының мәтінінде тұрады: procedure
TForm1.SpinEdit1Change(Sender: TObject). UnMas модулінің мәтінін қолданып
(4.1.3 б. қара), бұл процедураның операторын мұқият теріңіздер.
SpinEdit2Change оқиғасын өңдеу процедурасын құрыңыздар: procedure
TForm1.SpinEdit2Change(Sender: TObject).
4.1.3 UnMas модулінің мәтіні
Unit UnMas;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls, Spin, Grids;
type
TForm1 = class(TForm)
Label1: TLabel;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
Label8: TLabel;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
SpinEdit3: TSpinEdit;
SpinEdit4: TSpinEdit;
Label6: TLabel;
Label7: TLabel;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
var
A:array[1..6,1..8] of extended; екі өлшемді А массивін жариялау
X:array[1..8] of extended; бір өлшемді Х массивін жариялау
Y:array[1..6] of extended; бір өлшемді Y массивін жариялау
n,m,p,q:integer; глобалды айнымалыларды жариялау
procedure TForm1.FormCreate(Sender: TObject);
begin
SpinEdit1.Text:='4'; n-нің бастапқы мәні
SpinEdit2.Text:='6'; m-нің бастапқы мәні
SpinEdit3.Text:='2'; p-дің бастапқы мәні
SpinEdit4.Text:='3'; q-дің бастапқы мәні
StringGrid1.RowCount:=4; A массиві жолдарының саны
StringGrid1.ColCount:=6; A массивінің бағаналар саны
StringGrid2.RowCount:=6; X массиві жолдарының саны
StringGrid3.RowCount:=4; Y массиві жолдарының саны
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
n:=StrToInt(SpinEdit1.Text); n-ге редактор өрісінің ішіндегілер
меншіктеледі
StringGrid1.RowCount:=n; A массиві жолдарының саны бекітіледі
StringGrid3.RowCount:=n; Y массиві жолдарының саны бекітіледі
end;
procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
m:=StrToInt(SpinEdit2.Text); m-ге редактор өрісінің ішіндегілер
меншіктеледі
StringGrid1.ColCount:=m; A массиві бағаналарының саны бекітіледі
StringGrid2.RowCount:=m; X массиві жолдарының саны бекітіледі
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer; локальді айнымалыларды жариялау
begin
n:=StrToInt(SpinEdit1.Text);
StringGrid1.RowCount:=n;
StringGrid3.RowCount:=n;
m:=StrToInt(SpinEdit2.Text);
StringGrid1.ColCount:=m;
StringGrid2.RowCount:=m;
p:=StrToInt(SpinEdit3.Text);
q:=StrToInt(SpinEdit4.Text);
кестедегі мәндерді A массивіне енгізу
for i:=1 to n do
for j:=1 to m do
A[i,j]:=StrToFloat(StringGrid1.Cell s[j-1,i-1]);
for j:=1 to m do X массивінің құрылуы және оның мәндерін кестеге
шығару
begin
X[j]:=A[p,j];
StringGrid2.Cells[0,j-1]:=FloatToSt rF(X[j],ffFixed,3,1);
end;
for i:=1 to n do Y массивінің құрылуы және оның мәндерін кестеге
шығару
begin
Y[i]:=A[i,q];
StringGrid3.Cells[0,i-1]:=FloatToSt rF(Y[i],ffFixed,3,1);
end;
end;
end.
4.1.4 Қосымшамен жұмыс
Құрылған қосымшаны орындауға жіберіңіздер. A матрицасының
элементтеріне сандық мәндер енгізіңіздер және қосымшаның тапсырмаға сәйкес
жұмыс атқаратынын тексеріңіздер.
4.2. Өзіндік тапсырманы орындау
2-қосымшадағы StringGrid және DrawGrid компонентерінің күтімін
меңгеріңіздер. Оқытушының нұсқауы бойынша жеке тапсырма таңдаңыздар.
Қосымша құрыңыздар және оның жұмысын тексеріңіздер.
Жеке тапсырмалар.
1. NxM өлшемді бүтін А матрицасы берілген. B массивін алу, егер
матрицаны k – ші бағананың барлық элементтері 0-дік болса оның k – ші
элементіне 0 мәнін, егер кері жағдай болса (k=1,2,...,M) 1 мәнін беру.
2. NxM өлшемді бүтін А матрицасы берілген. B массивін алу, егер
матрицаның k–ші жолының элементтері азаю бойынша реттелген болса оның k-ші
элементіне 1 мәнін, егер кері жағдай болса (k=1,2,...,N) 0 мәнін беру.
3. NxM өлшемді бүтін А матрицасы берілген. Матрицаның k-ші элементіне
1 мәнін беру, егер матрицаның k-ші жолы симетриялы болса, және 0 мәнін
беру, егер кері жағдай болса (k=1,2,...,N) В массивін алу.
4. NxM өлшемді бүтін матрица берілген. Егер матрицаның элементі өзі
тұрған бағананың басқа элементтерінің қосындысынан үлкен болса, бұл
элементі ерекше деп есептеңіз. Осы ерекше элементтердің k–санын табу
керек.
5. NxM өлшемді бүтін матрица берілген. Егер матрицаның элементінің өзі
тұрған жолдағы оң жақтағы элементтер өзінен үлкен, ал сол жақтағы
элементтер кіші болса, бұл элементті ерекше деп есептеңіз. Осы ерекше
элементтер k–санын табу керек.
6. NxM өлшемді символдық матрица берілген. Матрицаның әртүрлі
элементтерінің k-санын табу (яғни қайталанатын элементтерді бір рет санау
керек).
7. NxM өлшемді заттық матрица берілген. Оның жолдарын 1 –ші элементтері
азаюы емес бойынша реттеу.
8. NxM өлшемді заттық матрица берілген. Оның жолдарын олардың
элементтерінің сомасының азаюы емес бойынша реттеу.
9. NxM өлшемді заттық матрица берілген. Оның жолдарын олардың үлкен
элементтерінің азаюы емес бойынша реттеу.
10. Берілген n-ретті квадратты матрицаның жанама диогональға байланысты
симетриялы екенін анықтау.
11. Берілген NxM өлшемді бүтін матрицассы үшін экранға оның барлық
ертоқым нүктелерін шығару. Матрица элементі ертоқым нүктесі деп аталады
егер ол өз жолында ең кіші және өз бағанасында ең үлкен болса, және
керісінше өз жолында ең үлкен және өз бағанасында ең кіші болса.
12. n-ретті матрицада, жолдарды, матрицаның диоганалінде абсолютті мәні
бойынша ең үлкен мәндер тұратындай қайта орналастыру.
5 Лабораториялық жұмыс Жолдарды пайдаланумен алгоритмдерді
программалау
Лабораториялық жұмыстың мақсаты: ListBox және СomboBox
компоненттерінің пайдалануын меңгеру және жолдар пайдаланылатын қосымша
құру.
5.1. Қосымша құру мысалы
Тапсырма: Еркін жолда сөздердің санын санау үшін Windows-қосымша құру.
Жолдағы сөздер пробелдердің кез-келген санымен бөлінеді. Жолды енгізуді
Enter пернесін басумен аяқтау. Қосымшаның жұмысы Close батырмасын басумен
аяқталу керек.
Құрастырып жатырған қосымшаның интерфейс панелінің мүмкін
варианттарының бірі 5.1-суретте көрсетілген
5.1.1. Формада компоненттерді орналастыру
Жолдармен жұмыс кезінде экранға ақпаратты енгізуді және
шығаруды ListBox және ComboBox компоненттері арқылы жасау ыңғайлы.
ListBox компоненті жолды ұсынады, бұнда элементтер пернетақта немесе
“тышқан” көмегімен таңдалады. Элементттер тізімі Items қасиеті арқылы
беріледі, бұның Add, Delete және Insert әдістері, сәйкесінше жолдарды қосу,
жою, енгізу үшін пайдаланылады. Белгіленген элементтің нөмірін анықтау үшін
ItemIndex қасиеті қолданылады.
ComboBox компоненті ListBox тізімінің және Еdit редакторының
комбинациясын ұсынады, сондықтан барлық қасиеттері осы компоненттерге
тәуелденген. Редакторлау терезесімен жұмыс жасау үшін Edit- тегі тәрізді
Text қасиеті, ал таңдау тізімімен жұмыс жасау үшін ListBox –тегі тәрізді
Items қасиеті пайдаланылады. Style қасиетімен анықталатын компоненттің 5
модификациясы болады. csSimple модификациясында тізім әрқашанда ашық,
қалғандарында ол редактордың оң жағындағы батырманы басқаннан кейін
ашылады.
ListBox және ComboBox компоненттері Компоненттер Палитрасының Standard
бетінде орналасқан.
BitBtn компоненті Компоненттер Палитрасының Additional бетінде
орналасқан және стандартты Button батырмасының әртүрлілігін көрсетеді.
Оның ерекшелігі – Glyph қасиетімен анықталатын батырманың үстінде расторлық
суреттің бар болуы. Бұдан басқа, 11 стандартты әртүрлі батырмалардың ішінен
біреуін беретін Kind қасиеті бар. Бұлардың ішінен bkCustom және bkHelp –тан
басқа кез-келгенін басу модалды терезені жабады. bkClose батырмасы
негізгі терезені жабады және программа жұмысын аяқтайды.
5.1.2. Оқиғаларды өңдеуші процедураларды құру
Қосымшаны жүктеу моментінде, Интерфейс панелі экранға шыққан кезде
пайдаланушы үшін курсордың ComboBox компонентінің редакторлау өрісінде
орналасқаны ыңғайлы. Форманың активтелуі кезінде OnActivate оқиғасы пайда
болады, бұны ComboBox компонентіне енгізу фокусын беру үшін пайдалануға
болады. Осы оқиғаның өңдеу-процедурасын құру үшін Объектілер Инспекторында
Form1 компонентін таңдау қажет, Events бетінде OnActivate оқиғасын тауып
және оның оң жақ(ақ) бөлігінен “тышқанмен” екі рет шерту керек. Курсор
Форма активтелу оқиғасы өңдеу-процедурасының procedure
TForm1.FormActivate(Sender: TObject) мәтінінде орналасады. Процедураның
осы жерінде ComboBox1 компонентіне фокустың берілу операторын теріңіздер
(қ. 5.1.3 келтірілген UnStr модуль мәтінін қараңыздар).
Тапсырмаға сәйкес Enter пернесін басқан кезде, пайдаланушы редакторлау
терезесінде ... жалғасы
Объектті бағытталған программалаудың негізгі түсінігі және
программаның элементі болып мәліметтердің жиынтығын, сондай-ақ оларға
жасалатын әрекеттерді үйлестіретін объект болып табылады. Delphi тіліндегі
қолданбалы бағдарламалар немесе қосымшалар IDE (Integrated Development
Environment) дамып отыратын құрылымдық ортада орындалады. IDE ортасы
бағдарламаушының қарым-қатынасын ұйымдастырып, әр түрлі басқару
элементтерінен құралған бірнеше терезелерден тұрады. Осы ортаның құралдарын
пайдалана отыры, қосымшаның интерфейстік бөлігін жобалауға, программаның
кодын жазуға және оны басқару элементтерімен байланыстыруға болады. Аталған
жұмыстар және бағдарламаны түзету, оны орындау әрекеттері IDE ортасында
орындалады.
Delphi-дің IDE ортасы көптерезелік жүйе деп саналады. Delphi оқиғалар
бойынша басқарылатын объектті бағытталған, визуалды-программалау тілі болып
саналады, және жалпы мөлшерде жобалаудың қазіргі құралдарына ұсынылатын
жаңа талаптарға сәйкес келеді.
Бұл әдістемелік ңұсқауда жүйенің әр түрлі құралдарын пайдалану
мысалдары келтірілген, әр түрлі мақсаттағы қолданбалы программалар
өңделген, өзіндік жұмыстардың варианттары келтірілген.
1 1-Лабораториялық жұмыс Сызықты алгоритмдерді бағдарламалау
Лабораториялық жұмыстың мақсаты: визуалды ортаның негізгі элементтерін
меңгеру, мәліметтерді енгізу шығару үшін DELPHI қарапайым құраушыларын
пайдалануды меңгеру, және сызықты алгоритмді пайдаланатын қосымшаны құру.
1.1 DELPHI визуалды ортасы
DELPHI-ді жүктегенде экранда 1.1. суретте көрсетілген интерфейс панелі
шығады. DELPHI ортасы монитор экранында біруақытта ашылатын бірнеше
терезелер түрінде визуалды іске асырылады. Терезелердің саны, орналасуы,
өлшемі және түрі программистпен өзгертілуі мүмкін.
Негізгі терезе экранда әрқашанда бар болады және қосымшаны құру үрдісін
басқару үшін арналған.
Негізгі меню үрдісті басқару үшін барлық қажетті құралдардан тұрады.
Негізгі меню пиктограммалары көбінесе жиі қолданылатын командалармен
жұмыс жасауды жеңілдетеді.
Компоненттер Палитрасы Форма терезесіне программистпен
орналастырылған кейбір элементті (компонентті) сипаттайтын, DELPHI
ортасының кітапханалық программалар жиынтығына рұхсатты қамтамасыз етеді.
Әрбір компонент анықталған қасиеттер жиынтығынан тұрады, оларды программист
өзінің көзқарасы бойынша таңдап алады және өзгерте алады. Мысалы, терезе
аты, батырмадағы жазу, шрифтің өлшемі, түсі, түрі және т.б. Компоненттер
қасиеттері HELP-та келтірілген .
Объекттілер Инспекторы терезесі таңдап алынған компоненттердің
қасиеттерін өзгерту үшін арналған және екі беттен тұрады. Properties
(Қасиеттер) беті компоненттердің қажетті қасиеттерін өзгерту үшін арналған.
Events (Оқиғалар) беті– қандай да бір оқиғаға компоненттің реакциясын
анықтау үшін арналған (мысалы, “тышқанның” батырмасын басу).
Форма терезесі жобаланатын Windows-қосымшасының интерфейсін ұсынады.
Осы терезеге қосымшаны жобалау кезінде қажетті компоненттер
орналастырылады, компоненттерді өңдеуші Компоненттер Палитрасынан алады.
Жобаның әрбір Формасына модуль (Unit) сәйкес келеді, оның Object Pascal
тіліндегі мәтіні Код редакторы терезесіне орналастырылады.
Код Редакторы терезесі жоба модулінің мәтінін көру, құру және
редакторлау үшін арналған. Бастапқы жүктемелеуде Код Редакторы терезесінде
Windows-қосымшасы ретінде бос Форманың қалыптасуы үшін операторлардың
минималды жиынтығынан тұратын модуль мәтіні болады. Форма терезесінде
кейбір компонентті орналастыру кезінде, модуль мәтіні автоматты түрде
қажетті операторлармен толықтырылады.
Форманы құру, клавиатура пернесін немесе тышқан батырмасын басу, т.б.
сияқты жүйеде орындалатын барлық оқиғалар туралы Windows ядросы
терезелерді қажетті хабарламаларды жіберу арқылы ақпараттайды. DELPHI
ортасы оқиғаларды өңдеушілер көмегі арқылы хабарламаларды қабылдайды және
өңдейді (мысалы, “тышқан” батырмасын басу– OnClick оқиғасы, Форманы құру –
OnCreate). Көбінесе жиі қолданылатын оқиғалар 1.1. кестеде ұсынылған.
1.1- кесте. Оқиғалар
Оқиғалар Оқиғалардың сипаттамасы
OnActivate Форманы активтеу кезінде қалыптасады
OnCreate Форманы құру кезінде қалыптасады. Берілген оқиғаның
өңдеушісінде Форманы құру кезінде орындалатын әрекеттерді
беру керек, мысалы бастапқы мәндерді орнату.
OnClick Компонент аймағында тышқанның батырмасын басу кезінде
орындалады.
OnDblClick Компонент аймағында тышқанның батырмасын екі рет басу
кезінде орындалады.
OnKeyPress Пернетақта пернелерін басу кезінде орындалады. Key
параметрі Char түрінде болады және басылған перненің
ASCII-кодынан тұрады (Enter пернесі нің коды #13, Esc
пернесінікі - #27 және т.с.с.). Әдетте бұл оқиға пернелердің
бірін басу кезінде реакция қажет болған жағдайда
қолданылады.
OnKeyDown Пернетақта пернелерін басу кезінде орындалады. Бұл оқиғаның
өңдеушісі басылған перне және Shift, Alt, Ctrl пернелерінің
күйі , сондай-ақ тышқанның батырмасының басылуы туралы
ақпарат алады .
Оқиғаның өңдеушісін құру үшін программист Объектілер Инспекторы
терезесінің жоғарғы жағында компоненттер тізімін ашуы және қажетті
компонентті таңдауы керек. Содан кейін, Объектілер Инспекторының Events
бетінде, тышқанның сол жақ батырмасын басу арқылы өңдеушінің атын таңдауы
және оның оң жақ (ақ) бөлігін екі рет шертуі қажет. Оған жауап ретінде
DELPHI Код Редакторы терезесін активтейді және таңдалған оқиғаның өңдеу
процедурасының дайындамасын көрсетеді. Әрбір өңделетін оқиға үшін модуль
мәтінінде процедура (procedure) қалыптасады, бұның begin және end кілт
сөздері арасында программист Object Pascal тілінде оқиға өңдеушісінің талап
етілетін алгоритмін жазады.
Форма терезесі және Код Редакторы терезесі арасында ауысу негізгі меню
батырмасы пиктограммасы арқылы немесе F12 пернесі арқылы орындалады.
1.2 Қосымшаны құру мысалы
Тапсырма: Келесі шаманы есептеу үшін Windows-қосымшасын құру
.
Берілген x, y және z сандық мәндерін интерфейс панелінің сәйкес
өрістеріне пернетақтадан енгізу. Құрастырып жатырған қосымшаның интерфейс
панелінің мүмкін варианттарының бірі 1..2. суретте көрсетілген.
1.2.1 Жобаны сақтау
Қосымшаны жобалау үрдісі кезінде DELPHI бірнеше файлдарды құрады -
жоба. Әрбір жобаны алдын ала құрылған жеке папкаға сақтаған дұрыс. Windows
сәйкес келетін қосымша көмегімен папка құрып, оны LAB1 деп атайық.
Жобаны сақтау үшін негізгі менюдан File пунктін ашыңыз және
“тышқанды” Save Project As...(Сохранить проект как...) опциясында шертіңіз.
DELPHI бірінші жоба модулін сақтау үшін Save Unit1 As (Сохранить модуль
как) диалог панелін ашады. Осы панелден құрылған LAB1 папкамызды табамыз
және соның ішіне модульге, мысалы UnLinAlg ат беріп сақтаймыз. Көңіл
қойыңыз , DELPHI бұл файылға үнсіздік бойынша *.pas кеңеюі бар Delphi unit
типін меншіктейді. Сонан соң Save Project1 As диалог панелі ашылады .
Жобамызға, мысалы, PrLinAlg ат беріп осы папканың ішіне сақтайық. Бұнда
DELPHI файлға Delphi project типін және *.dpr кеңейтілуін береді. Назар
аударыңыздар, енді DELPHI негізгі терезесі PrLinAlg, жобаның негізгі файл
терезесі- PrLinAlg.dpr, ал жоба модулі терезесі- UnLinAlg.pas деп аталады.
DELPHI ұсынатын бірқалыпты Unit1 және Project1 орнына, файлдарға
мағынасы бар ат беруге тырысыңыздар.
Авариялық, мысалы тоқ көзінің сөніп қалуы немесе жүйенің істен шығып
кетуімен және т.с.с. байланысты жағдайларда жоба файлының жоғалуын
болдырмау үшін, негізгі менюдің пиктограммасын немесе File менюынан .
Save All опциясын пайдаланып периодты түрде жобаны сақтау ұсынылады.
1.2.2 Терезелерді орналастыру
Тереземен жұмыс жасау үшін, терезенің кез-келген жерінен “тышқанмен”
шерту арқылы оны белсенді қылу керек. Белсенді терезенің аты бөлініп
тұрады, мысалы, 1.1 суретте белсенді болып Код Редакторы терезесі болып
табылады.
Форма және модуль Коды Редакторының терезесінде жоғарғы оң жақ
бұрышында басқару батырмалары болады, олар: - терезені пиктограммаға
жабу үшін, - терезені бүткіл экранға ашу үшін және, бастапқы
өлшемге келу ушін -терезені жабу үшін арналған.
“Тышқанның” көмегімен, Форма, Код Редакторы, Объектілер Инспекторы
терезелерінің керек өлшемдерін және олардың экранда орналасуын реттеңіздер.
1.2.3 Форма атын өзгерту
Жаңа Форманың бірдей (Name) аты және тақырыбы(Сaption) - FORM1 болады.
Жас программисттерге Форма атын өзгертудің қажеті жоқ, себебі ол модуль
мәтінінде қолданылады.
Тақырыбын өзгерту үшін Объектілер Инспекторының терезесін белсенді
қылыңыздар және Properties бетінде Caption қасиетіндегі Form1 жазуды
Лабораториялық жұмыс №1-Сызықты алгоритм -деп өзгертіңіз. Біруақытта Форма
терезесінің тақырыбы аты өзгергеніне көз жеткізіңіз.
1.2.4 Формада компоненттерді орналастыру
Формада компонентерді 1.2. суретте көрсетілген панелге сәйкес
келетіндей орналастырайық
Формаға жазуларды енгізу үшін Label компоненті қолданылады.
Компоненттер Палитрасында Standard бетінде Label компонентінің
пиктограммасын таңдаңыз және оның үстінен “тышқанмен” шертіңіз. Осыдан
кейін Форманың керек жерінен “тышқанмен” шертіңіз - Label1 жазуы пайда
болады. Объектілер Инспекторының Caption қасиетінде Label1 жазуын X мәнін
енгізіңіз- деп өзгертіңіз:. Font қасиетінде шрифтті өзгертіңіз. Осыған
ұқсас Формаға қалған жазуларды енгізіңіз. Кез-келген орналастырылған
компоненттердің біріне “тышқанмен” шертіп, оның Формада орналасуын және
өлшемін реттеңіз.
Мәліметтерді енгізушығару үшін қарапайым жағдайларда Edit және Memo
компоненттері қолданылады. Edit компоненті мәліметтер бір жолмен
көрсетілген кезде қолданылады. Егер мәліметтер бірнеше жолдардан тұрса,
онда Memo компоненті қолдданылады.
x, y және z айнымалыларының сандық мәндерін енгізу өрістерін құру үшін
Edit компонентін қолданамыз. Компоненттер Палитрасының Standard бетінен
пиктограммасын таңдаңыз және Edit компонентін Форманың керек жеріне
орналастырыңыздар.
Нәтижелерді шығару үшін Memo компонентін қолданамыз. Компоненттер
Палитрасының Standard бетінен пиктограммасын таңдаңыздар, Memo
компонентін Форманың керек жеріне орналастырып, орналасуын және өлшемін
реттеңіздер.
1.2.5 Форма құру (FormCreate) оқиғаларын өңдеуші процедурасының
жазылуы
Егер программист интерфейс панелі пайда болған кезде экранда сәйкес
өрістерде мәліметтердің бастапқы мәндері болғанын қаласа, ол қосымшаны
орындалуға жіберген кезде Форманы құру (OnCreate) оқиғасы шығатынын ескеруі
керек. x, y, z айнымалыларының бастапқы мәндерін сәйкесінше Edit1, Edit2
және Edit3 өрістеріне, ал Memo1 өрісіне Лабораториялық жұмыс №1 – Сызықты
алгоритм жолын шығаратын осы оқиғаның өңдеу процедурасын құрастырайық. Ол
үшін тышқанмен Форманың кез-келген бос жерін шертіңіз. Экранда UnLinAlg
модулінің мәтіні пайда болады, мұнда DELPHI автоматты түрде Форма құру
оқиғасының өңдеуші – процедурасын : Procedure
TForm1.FormCreate(Sender:TObject) құрады. Осы процедураның begin және end
операторлары арасында қажет әрекеттерді орындайтын операторларды енгізіңіз
(модуль мәтіні қ.1.2.7 көрсетілген).
1.2.6 Батырманы басу оқиғасын өңдеуші прпоцедурасын жазу Button1
(Button1Click)
Шаманы есептейтін батырманы Формаға орналастырайық. Компоненттер
Палитрасында Standart бетінде Button компонентінің пиктограммасын
таңдаңыз. Объектілер Инспекторының Caption қасиетінде батырмадағы Button1
жазуын Есептеу-ге ауыстырыңыз. Font қасиетінде шрифтті өзгертіңіз.
Батырманың орналасуын және өлшемін реттеңіздер. Осыдан кейін батырманың
үстінен “тышқанмен” екі рет шертіңіз, сонда курсор Button1 батырмасын
басу оқиғасын өңдеуші процедурасының мәтінінде орналастырылады: Procedure
TForm1.Button1Click(Sender:TObject) . UnLinAlg модулінің мәтінін пайдаланып
осы процедураның операторларын мұхият теріңіздер.
1.2.7 UnLinAlg модулінің мәтіні
Unit UnLinAlg;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Memo1: TMemo;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
Форма құру оқиғасы өңдеушісінің процедурасы:
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='0.4'; X –тің бастапқы мәні
Edit2.Text:='8.75e-2'; Y–тің бастапқы мәні
Edit3.Text:='-19.63'; Z–тің бастапқы мәні
Memo1.Clear; Memo1 тазалау
Жолды Memo1-ге шығару:
Memo1.Lines.Add('Лабораториялық жұмыс№1 – Сызықтық алгоритм);
end;
Button1 батырмасын басу оқиғасының өңдеуші процедурасы:
procedure TForm1.Button1Click(Sender: TObject);
var
x,y,z,a,b,c,u : extended; локалді айнымалыларды хабарлау
begin
x:=StrToFloat(Edit1.Text); X -ке Edit1 мәні меншіктеледі
y:=StrToFloat(Edit2.Text); Y -ке Edit2 мәні меншіктеледі
z:=StrToFloat(Edit3.Text); Z -ке Edit3 мәні меншіктеледі
Шаманың есептелуі:
a:=sqrt(x)-y*y*y;
b:=sin(a)cos(a);
c:=Exp(5*Ln(b));
u:=c+exp(yz)*sin(z*z);
Memo1.Lines.Add('X = '+Edit1.Text+' Y = '+Edit2.Text+
' Z = '+Edit3.Text); Memo1-ға X, Y, Z нәтижесінің
шығуы
Memo1-ге нәтиженің шығуы:
Memo1.Lines.Add(' U = '+FloatToStrF(u,ffFixed,8,3));
end;
end.
Edit және Memo компоненттері жұмыс жасайтын мәліметтер String
түрінде болады. Сондықтан TForm1.Button1Click процедурасында StrToFloat
функциясы көмегімен X,Y,Z айнымалыларына Edit1,Edit2,Edit3 өрістерінің
мәндері меншіктелген кезде, String түріндегі мәліметтердің Extended
түріндегі қалқымалы нүктесі бар нақты мәндер түріне ауысуы орындалады.
Бүтін түрдегі мәліметтермен жұмыс жасау керек болса, StrToInt функциясы
пайдаланылады.
Мәліметтерді Memo1-ға шығарған кезде Lines қасиетінің Add әдісі
пайдаланылады. Мәліметтерді нақты мәннен жолдық мәнге ауыстыру үшін және
шығаратын нәтижені ұсынатын форманы басқару FloatToStrF функциясы
пайдаланылады.
1.2.8 Қосымшамен жұмыс
Құрылған қосымшаны орындалуға жіберу үшін бас менюдің
пиктограммасын немесе F9 пернесін басыңыз. Осы кезде модулдердің
тексерілуі және, егер қате жоқ болса, жобаның компоновкасы және
PrLinAlg.exe орындалатын файлдың құрылуы орындалады. Экранда қосымша
интерфейсінің панелі шығады (сурет 1.2).
“Тышқанмен” “Есептеу” батырмасына шертіңіз және Memo1 өрісінде нәтиже
шығады. Edit өрісінде x, y, z-тің бастапқы мәндерін өзгертіңіз және
қайтадан ”Есептеу” батырмасын басыңыз. Memo1 өрісінде жаңа мән шығатынына
көз жеткізіңіздер. Қосымша жұмысын аяқтау интерфейс панелінің жоғарғы оң
жақ бұрышында орналасқан батырмасын басу арқылы болады.
Қосымшаның штатсыз жұмыс жасау жағдайында жобаның бастапқы режимына
Run менюында ProgramReset опциясын таңдау немесе Ctrl+F2 пернелерін басу
арқылы қайтадан оралуға болады.
1.3 Өзіндік тапсырманың орындалуы
Оқытушының нұсқауы бойынша өздеріңіздің жеке тапсырмаңызды таңдап
алыңыздар. Тапсырманың шартын, бастапқы берілгендердің санын және түрін
нақтылап алыңыздар. Осыған сәйкес жобаланатын қосымшаның интерфейс
панелінің дизайнын қалыптастырыңыз, Edit өрісінің қажетті санын, Форма
тақырыбының мәтінін, шрифт өлшемдерін, сондай-ақ нәтижелерді енгізушығару
кезіндегі айнымалылардың түрлерін және айналдыру функцияларын
орналастырыңыздар.
Жеке тапсырмалар.
1.
Келесі мәндер бойынша x=14.26, y=-1.22, z=3.5( t=0.564849.
2.
Келесі мәндер бойынша x=-4.5, y=0.75(,z=0.845 u=-55.6848.
3.
Келесі мәндер бойынша x=3.74, y=-0.825, z=0.16 v=1.0553.
4.
Келесі мәндер бойынша x=0.4 ,y=-0.875, z=-0.475 w=1.9873.
5.
Келесі мәндер бойынша x=-15.246, y=4.642, z=20.001 =-
182.036.
2 2- лабораториялық жұмыс
Тармақталған алгоритмдерді бағдарламалау
Лабораториялық жұмыстың мақсаты: қарапайым ауыстырғыш-компоненттердің
пайдалануын меңгеру және тармақталған алгоритмді пайдаланатын қосымша құру.
2.1 Қосымша құру мысалы
Тапсырма: Келесі шаманы есептеу үшін Windows-қосымша құру
Z=, мұнда пайдаланушының қалауы бойынша.
Интерфейс панелінде бастапқы мәліметтердің бақылау нәтижесін басқару
мүмкіндігін алдын ала қарастыру.
Құрастырып жатырған қосымшаның интерфейс панелінің мүмкін
варианттарының бірі 2.1. суретте көрсетілген
2.1.1 Формада компоненттерді орналастыру
Формада компонентерді 2.1- суретте көрсетілгендей орналастырайық
DELPHI –де қосымшаларды құрған жағдайда ауыстырғыш- батырмалар
түріндегі компоненттер жиі қолданылады. Бұндай батырманың күйі (қосылған -
өшірілген) Формада визуалды түрде бейнеленеді. Панелде( 2.1 сурет)
ауыстырғыш- батырмалардың екі түрі көрсетілген: CheckBox және RadioGroup .
CheckBox компоненті тәуелсіз ауыстырғыш батырманы ұйымдастырады, бұның
көмегімен пайдаланушы “ияжоқ” түріндегі өзінің шешімін көрсете алады.
RadioGroup компоненті, батырмалар тобынан тұрады – тәуелді ауыстырғыштар.
Батырмалар тобының бір батырмасын басқан кезде, барлық қалған батырмалар
сөнеді.
2.1. суретке сәйкес Label, Edit және Memo компоненттерін Формаға
орналастырыңыз. Компоненттер Палитрасындағы Standard бетінен CheckBox
компонентінің пиктограммасын таңдап алыңыз және Форманың керек жеріне
орналастырыңыз. Объектілер Инспекторының Caption қасиетінде CheckBox1
жазуының орнына мәліметтердің бақылау нәтижесі- деп жазыңыз . Қосымшаны
орындалуға жіберген кезде CheckBox батырмасы қосылған болу үшін, Checked
қасиетін True- деп өзгертіңіз.
Standard Компоненттер Палитрасынан RadioGroup компонентінің
пиктограммасын таңдап алыңыз және Форманың керек жеріне орналастырыңыз.
Caption қасиетінде RadioGroup1 атын f(x) деп өзгертіңіз. Батырмаларды бір
бағанаға орналастыру үшін, Columns қасиетін 1-ге тең деп алыңыз.
“Тышқанмен” Items қасиетінің оң жағына екі рет шертіңіз - батырмалар аты
тізімінің жолдық редакторы пайда болады. Екі жолға ат беріңіз: бірінші
жолға- sin(x), екінші жолға - cos(x) және ОК-ны басыңыз. Осыдан кейін
Формада сәйкес жазулары бар екі батырма-ауыстырғыштан тұратын топ пайда
болады. Қосымшаны орындалуға жіберген кезде RadioGroup бірінші батырма
қосылған болу үшін, ItemIndex қасиетін 0-ге деп алыңыз.
2.1.2 FormСreate және Button1Сlick оқиғаларын өңдеуші процедураларын
құру
Технология создания процедур обработки событий FormСreate және
Button1Сlick оқиғаларын өңдеуші процедураларын құру технологиясы алдыңғы
жұмыстан айырмашылығы жоқ. UnRazvAlg модулінің мәтінін пайдаланып осы
процедуралардың операторларын мұхият теріңіздер.
2.1.3. UnRazvAlg модулінің мәтіні
Unit UnRazvAlg;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label4: TLabel;
Memo1: TMemo;
Button1: TButton;
RadioGroup1: TRadioGroup;
CheckBox1: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
Форма құру оқиғасы өңдеушісінің процедурасы:
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='0.5'; X тің бастапқы мәні
Edit2.Text:='1.8'; Y тің бастапқы мәні
Memo1.Clear; Memo1 тазалау
Жолдың Memo1-ге шығуы:
Memo1.Lines.Add(‘Лабораториялық жұмыс №2 – Тармақталған алгоритм’);
end;
Button1 батырмасын басу оқиғасының өңдеуші процедурасы:
procedure TForm1.Button1Click(Sender: TObject);
var
x,y,z,fx : extended; локалды айнымалыларды хабарлау
begin
x:=StrToFloat(Edit1.Text); X -ке Edit1 мәні меншіктеледі
y:=StrToFloat(Edit2.Text); Y –ке Edit2 мәні меншіктеледі
fx:=sin(x); fx-ке бастапқы мән
меншіктеледі
Басылған батырмаға сәйкес функцияның таңдалуы:
case RadioGroup1.ItemIndex of
0:fx:=sin(x);
1:fx:=cos(x);
end;
Шаманың есептелуі:
if xy then
z:=fx
else
z:=y;
CheckBox1батырма күйін тексеру:
if CheckBox1.Checked then
Memo1.Lines.Add('X = '+Edit1.Text+
' Y = '+Edit2.Text); Memo1-ге X, Y нәтижесінің шығуы
Memo1-ге нәтиженің шығуы:
Memo1.Lines.Add(' Z = '+FloatToStrF(z,ffFixed,8,3));
end;
end.
Бірінші RadioGroup1 батырмасы басылған болса, бүтін түрдегі
RadioGroup1.ItemIndex айнымалыға ноль енгізіледі, егер екіншісі – бір.
Егер CheckBox1 батырмасы басылған болса, CheckBox1.Checked логикалық
айнымалы True мәнін қабылдайды, егер басылмаса – False.
2.1.4 Қосымшамен жұмыс
Құрылған қосымшаны орындалуға жіберіңіз. Интерфейс панелінің барлық
басқару компоненттерін пайдаланып, барлық қарастырылған жұмыс жасау
режимдарында қосымшаның дұрыс іске қосылуын тексеріңіз.
2.2 Өзіндік тапсырманың орындалуы
Оқытушының нұсқауы бойынша өздеріңіздің жеке тапсырмаңызды таңдап
алыңыздар. Қосымшаны құрып, оның жұмысын тестілеңіз.
Жеке тапсырмалар
№1-№15 тапсырмалары үшін интерфейс панелінде f(x): sh(x), x2, eX үш
функцияларының біреуін таңдау мүмкіндігін қарастыру
1.
2.
3. 4.
5. 6.
7. 8.
3 3-Лабораториялық жұмыс Циклдік алгоритмдерді программалау
Лабораториялық жұмыстың мақсаты: жоба модулінің қарапайым құралдарын
меңгеру және циклдік алгоритмді қолданатын қосымшаны құру.
3.1 Жоба модулін жөндеу
Жөндеу дегеніміз жобада қателерді табу үрдісі, локализациялау және
қателерді жою болып табылады. Ол жобаны өңдеуге қарағанда программисттің
жұмыс уақытын көп алады.
Кез-келген жоба жөндеуге жіберудің алдында қандайда бір синтаксистік
немесе логикалық қатеден тұрады.
3.1.1 Синтаксистік қателерді жөндеу
Синтаксистік қателер операторларды пайдаланудың формалды ережелерін
бұзудан тұрады. Бұл қателер өңдеушінің бағдарламалау тілін жеткіліксіз білу
нәтижесінен және дисплей экранында операторларды теру кезіндегі
ынтасыздығынан (немқұрайлығынан) пайда болады.
Жоба модулінде синтаксистік қателерді іздеу компилятормен орындалады.
Программистке модульде жіберілген қателер туралы едәуір көп ақпарат беру
үшін, компилятор қателерді белгілейді және жұмысын модулдің барлық
операторлары өңделгенге дейін жалғастырады. Келесілерді ескеру керек:
1) компилятор барлық қателерді танымайды;
2) кейбір қателердің әсерінен компилятор дұрыс операторларды қате деп және
керісінше – қате операторларды дұрыс деп қабылдауы мүмкін;
3) модулдің бір жеріндегі қате өзінің артынан модулдің басқа жерінде
компилятордың диагностикалық хабарларының сериясын бодыруы мүмкін;
4) кейбір қателердің кесірінен модуль компиляциясы жалпы тоқтатылуы мүмкін
және келесі операторлардың тексерілуі жасалмайды.
Модульда табылған барлық қателер туралы ақпарат, экранның астыңғы
бөлігінде пайда болатын арнайы терезеге шығарылады. Осы терезенің әрбір
жолы файл атынан, қате және қатенің сипаттамасы табылған жолдың нөмірінен
тұрады. Егер қате сипатталған жолға “тышқанмен” екі рет шертсек, курсор
модульдің қате табылған жолын көрсетеді. Қателерді жоғарыдан төменге қарай
түзету керек және әрбір қатені түзеткеннен кейін программаны қайтадан
тексеруге жіберу керек. Қателерді түзету уақытысын қысқарту мақсатында
қателердің бар болуын тексеру Project менюында Syntax Check және Compile
режимдарында орындау ұсынылады. Қатенің сипаттамасы туралы едәуір толық
ақпарат алу үшін F1 пернесін басу арқылы HELP –тан білуге болады.
Project менюында Build All режимында кезекті түзетуден кейін қателер
туралы диагностикалық хабарламалар жоқ болған жағдайда синтаксистің
жөнделуі аяқталды деп есептеледі.
3.1.2 Логикалық қателерді жөндеу
Логикалық қателерді шартты түрде алгоритм қателеріне және семантикалық
қателерге бөлуге болады. Осындай қателердің болу себебі - қойылған есепке
алгоритмнің сәйкес келмеуі, программисттің программалау тілінің
операторларының мағынасын (семантикасын) дұрыс түсінбеуі, мәліметтерді
ұсыну ережелерін және рұхсат етілген шектердің бұзылуы, компьютерде
өңдеуге жобаны техникалық дайындау кезінде ынтасыздық (немқұрайлық).
Қателерді шығару үшін тесттер қызмет етеді. Тест – бұл сенімсіздікті
тудырмайтын нәтижені беретін бастапқы мәліметтердің жиынтығы. Тесттің
аралық және ақырғы нәтижелері қосымшаның орындалуының дұрыстығын бақылау
үшін пайдаланылады.
Тесттерді құрастыру – қарапайым есеп емес. Тесттер бір жағынан нәтиже
оңай тексерілуі үшін жеткілікті қарапайым болуы керек, екінші жағынан
алгоритмді комплексті тексеру үшін жеткілікті күрделі болуы керек.
Тесттер программалаудан бұрын алгоритм схемасы бойынша құрастырылады,
себебі тесттерді құру алгоритмизациядағы көптеген қателерді шығару үшін
көмектеседі.
Тесттердің саны және олардың күрделігі алгоритмге байланысты.
Тесттердің жиыны алгоритм схемасының барлық тармақтары ең болмағанда бір
рет өткен болатындай болуы керек. Қосымша шығарған нәтижелердің тест
нәтижелерімен сәйкес келмеуі – қателердің бар болу белгісі. Бұл қателер
есептің нәтижесі дұрыс болмағанынан немесе 0-ге бөлу және т.б. болады
Қате орнын локализациялау үшін келесі әрекеттерді жасау ұсынылады.
Код Редакторы терезесінде курсорды күдік тудыратын бөліктің алдындағы
жолға орналастырыңыз және F4 пернесін басыңыз (курсорға дейін орындау).
Қосымшаның орындалуы курсор орналастырылған модуль жолында тоқтатылады.
Кез-келген айнымалының ағымды мәнін көруге болады, егер айнымалының
идентификаторын курсормен 1-2 сек. жапсақ. F8 пернесін басып (қадамдық
орындау), айнымалыларды және есептеудің дұрыстығын бақылап отырып жол
бойынша программаны орындауға болады.
3.2 Қосымша құру мысалы
Тапсырма: функциясының мәндер кестесін шығаратын және h=(xk -
xn)10 қадамы бар x тен xn –ге дейін xk мәндері үшін оның соммасы
түрінде қатарға орналастыру Windows-қосымша құру.
Интерфейс панелінде бастапқы мәліметтерді шығаруды басқару мүмкіндігін
және есептеулердің қателігін алдын ала қарастыру.
Құрастырып жатырған қосымшаның интерфейс панелінің мүмкін
варианттарының бірі 3.1.суретте көрсетілген.
3.2.1 Формада компоненттерді орналастыру
Edit компонентінің орнына, бүтін санды, екі батырма көмегімен өзгерту
мүмкіндігі бар, бейнелеуді және редакторлауды қамтамасыз ететін SpinEdit
компонентін пайдаланамыз.
SpinEdit компоненті Компоненттер Палитрасының Samples бетінде
орналасқан Шығарылатын ақпараттың көлемі Memo компонентінің өріс
өлшемінен асып түскен жағдайда, оны айналдыру жолақтары бар сызғышпен
жабдықтау мақсатқа лайықты. Memo1 компонентінің ScrollBars қасиетінде-
ssVertical мәнін орналастырайық айналдыру жолағының тік сызғышы пайда
болады. Модульге UnCiklAlg атын меншіктейік .
3.2.2 UnCiklAlg модулінің мәтіні
Unit UnCiklAlg;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls, ExtCtrls, Spin;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
SpinEdit1: TSpinEdit;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
SpinEdit1.text:='3'; N бастапқы мәні
Edit1.text:='0.1'; Xn бастапқы мәні
Edit2.text:='2.0'; Xk бастапқы мәні
Memo1.Clear;
Memo1.Lines.Add('Лабораториялық жұмыс №3 – Циклді алгоритм');
end;
procedure TForm1.Button1Click(Sender: TObject);
var xn,xk,x,h,c,s,y,al,del:extended;
n,k:integer;
begin
n:=StrToInt(SpinEdit1.Text);
xn:=StrToFloat(Edit1.Text);
xk:=StrToFloat(Edit2.Text);
if CheckBox1.Checked then
Memo1.Lines.Add(‘Бастапқы берілгендер: n=’+IntToStr(n)+
' Xn='+FloatToStrF(xn,ffFixed,6,1)+
' Xk='+FloatToStrF(xk,ffFixed,6,1));
h:=(xk-xn)*0.1; h қадамы
x:=xn;
repeat x бойынша цикл
c:=-x*x*0.5;
S:=1;
for k:=1 to n do
begin
s:=s+c*(2*k*k+1);
c:=-c*x*x((2*k+1)*(2*k+2));
end;
y:=(1-x*x*0.5)*cos(x)-0.5*x*sin(x);
if CheckBox2.Checked then
if CheckBox3.Checked then
begin
al:=s-y; абсолютті қателік
del:=abs((s-y)y)*100; салыстырмалы қателік
Memo1.Lines.Add('x='+FloatToStrF(x, ffFixed,6,2)+
' S='+ FloatToStrF(s,ffFixed,6,3)+
' Y='+ FloatToStrF(y,ffFixed,6,3)+
' A='+ FloatToStrF(al,ffFixed,6,3)+
' D='+ FloatToStrF(del,ffFixed,6,0)+'%');
end
else
begin
al:=s-y;
Memo1.Lines.Add('x='+FloatToStrF(x, ffFixed,6,2)+
' S='+ FloatToStrF(s,ffFixed,6,3)+
' Y='+ FloatToStrF(y,ffFixed,6,3)+
' A='+ FloatToStrF(al,ffFixed,6,3));
end
else
if CheckBox3.Checked then
begin
del:=abs((s-y)y)*100;
Memo1.Lines.Add('x='+FloatToStrF(x, ffFixed,6,2)+
' S='+ FloatToStrF(s,ffFixed,6,3)+
' Y='+ FloatToStrF(y,ffFixed,6,3)+
' D='+ FloatToStrF(del,ffFixed,6,0)+'%');
end
else
Memo1.Lines.Add('x='+FloatToStrF(x, ffFixed,6,2)+
' S='+ FloatToStrF(s,ffFixed,6,3)+
' Y='+ FloatToStrF(y,ffFixed,6,3));
x:=x+h;
until xxk;
end;
end.
3.3 Өзіндік тапсырманың орындалуы
Оқытушының нұсқауы бойынша өздеріңіздің жеке тапсырмаңызды таңдап
алыңыздар. Қосымшаны құрып, оның жұмысын тестілеңіз.
Жеке тапсырмалар
№1 - №15 тапсырмалары үшін қадамы бар нен дейін x
мәндері үшін Y(x) функциясының және оның S(x) қатарға орналасуының мәндер
кестесін экранға шығару қажет. x мәндерінің барлық диапазонында S(x) және
Y(x) мәндерінің жақындығы S(x) және Y(x) есептеулерінің дұрыстығын
көрсетеді.
№ [piS(x) n Y(x)
c]
1 0.11 16
2 0.11 10
3 0.11 12
4 0.11 8
5 0.11 14
[pi
6 0.11 c]
8
7 0.11 12
8 0.11 10
9 0.11 14
10 0.10.5 15
11 0.10.8 10
4 4-лабораторлық жұмыс массивТЕРДІ ҚОЛДАНА ОТЫРЫП АЛГОРИТМДЕРДІ
ПрограммаЛАУ
Лабораторлық жұмыстың максаты: StringGrid компонентін қолдануды игеру
және массив қолданылатын қосымша құру.
4.1 Қосымша құру мысалы
Тапсырма: A={aij}(xj=apj, j=1,2,...,m)матрицасының р-ші жолына тең
x={x1,x2,...,xm} векторын және A={aij}(yi=aiq, i=1,2,...,n) (n(6,m(8)
матрицасының q-ші бағанасына тең y={y1,y2,...,yn} векторын есептеу үшін
Windows-қосымшасын құру. Интерфейс тақтасында массивтер көлемділігін
басқару мүмкінділігін қарастыру.
Құрылатын қосымшаның интерфейс тақтасының варианттарының бірі 4.1
суретте көрсетілген.
4.1.1 Формада компоненттердің орналасуы
Массивтермен жұмыс істегенде ақпаратты экранға енгізу және шығаруды
StringGrid компоненті арқылы ұйымдастыру қолайлы.
StringGrid компоненті ақпаратты кесте түрінде бейнелеу үшін
қоданылады. Кесте екі зонадан тұрады – бекітілген және жұмыс. Бекітілген
аймақ жұмыс аймағының жолдары мен бағаналарының атауларын шығару үшін және
олардың көлемдерін “тышқан” көмегімен басқару үшін керек. Бекітілген аймақ
басқа түспен боялған және оған ақпаратты пернелер тақтасынан енгізуге
болмайды. Бекітілген аймақтың жолдары мен бағаналарының саны сәйкесінше
FixedRows және FixedCols қасиеттерінде белгіленеді.
Жұмыс аймағы RowCount жолдары және ColCount бағаналары ақпараттарын
қамтиды. Оларды прораммалық және “тышқан” немесе пернелер тақтасы көмегімен
өзгертуге болады.
Программадағы ақпаратқа кіру мүмкіншілігі Cells[ACol, ARow: integer]:
string қасиеті арқылы жүзеге асырылады, мұнда ACol- бағана нөмірі, ал ARow
–жол нөмірі, нөмірлеу 0-ден басталады.
StringGrid компонентінің пиктограммасы компоненттер тақтасының
Additional бетінде орналасқан. Біздің тапсырмада барлық StringGrid
компоненттері үшін бекітілген аймақ қолданбайтындықтан, объекттер
инспекторында FixedCols және FixedRows қасиеттерінің мәндерін 0 деп
белгілеңіздер. Тапсырмаға сәйкес StringGrid1 компоненті үшін жолдар санының
n және бағаналар санының m шекті мәндерін белгілеңіздер: ColCount=8, а
RowCount=6 (8 бағана және 6 жол). StringGrid2 компоненті үшін ColCount=1,
RowCount=8, ал StringGrid3 комопоненті үшін ColCount=1, RowCount=6.
StringGrid компонентіне үнсіздік бойынша ақпаратты пернелер тақтасынан
енгізуге тыйым салынған, сондықтан StringGrid1 компоненті үшін объектілер
инспекторында Options қасиетінің символында тышқанды екі рет шерту керек
және ашылған қасиеттер тізімінде goEditing мәнін True деп белгілейміз.
SpinEdit компоненттерімен жұмыс істеу ыңғайлы болу үшін SpinEdit1
компоненті үшін қасиеттерді былай белгілейміз: MinValue=1, MaxValue=6, ал
SpinEdit2 компоненті үшін: MinValue=1, MaxValue=8.
4.1.2. SpinEdit1Change және SpinEdit2Change оқиғаларын өңдеу
процедураларын құру
SpinEdit1Change және SpinEdit2Change оқиғалары сәйкесінше SpinEdit1
және SpinEdit2 редактор өрісінде мәндердің кез-келген өзгеруінде пайда
болады, бұл оқиғалардың өңдеуші процедурасын құрайық. Оларға SpinEdit
редактор өрісінде алынған n және m мәндерін StringGrid компонентінің
ColCount және RowCount қасиеттеріне меншіктеледі. Бұл SpinEdit
компоненттері қосымша пернелерсіз арқылы StringGrid кестесінің көлемдерін
басқаруға мүмкіншілік береді, себебі SpinEdit редактор өрісінің мәндерінің
өзгеруі StringGrid кестесінің көлемінің өзгеруіне әкеледі. SpinEdit1
компонентінде тышқанды екі рет шертіңіздер – курсор SpinEdit1Change
оқиғасын өңдеу процедурасының мәтінінде тұрады: procedure
TForm1.SpinEdit1Change(Sender: TObject). UnMas модулінің мәтінін қолданып
(4.1.3 б. қара), бұл процедураның операторын мұқият теріңіздер.
SpinEdit2Change оқиғасын өңдеу процедурасын құрыңыздар: procedure
TForm1.SpinEdit2Change(Sender: TObject).
4.1.3 UnMas модулінің мәтіні
Unit UnMas;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls, Spin, Grids;
type
TForm1 = class(TForm)
Label1: TLabel;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
Label8: TLabel;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
SpinEdit3: TSpinEdit;
SpinEdit4: TSpinEdit;
Label6: TLabel;
Label7: TLabel;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
var
A:array[1..6,1..8] of extended; екі өлшемді А массивін жариялау
X:array[1..8] of extended; бір өлшемді Х массивін жариялау
Y:array[1..6] of extended; бір өлшемді Y массивін жариялау
n,m,p,q:integer; глобалды айнымалыларды жариялау
procedure TForm1.FormCreate(Sender: TObject);
begin
SpinEdit1.Text:='4'; n-нің бастапқы мәні
SpinEdit2.Text:='6'; m-нің бастапқы мәні
SpinEdit3.Text:='2'; p-дің бастапқы мәні
SpinEdit4.Text:='3'; q-дің бастапқы мәні
StringGrid1.RowCount:=4; A массиві жолдарының саны
StringGrid1.ColCount:=6; A массивінің бағаналар саны
StringGrid2.RowCount:=6; X массиві жолдарының саны
StringGrid3.RowCount:=4; Y массиві жолдарының саны
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
n:=StrToInt(SpinEdit1.Text); n-ге редактор өрісінің ішіндегілер
меншіктеледі
StringGrid1.RowCount:=n; A массиві жолдарының саны бекітіледі
StringGrid3.RowCount:=n; Y массиві жолдарының саны бекітіледі
end;
procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
m:=StrToInt(SpinEdit2.Text); m-ге редактор өрісінің ішіндегілер
меншіктеледі
StringGrid1.ColCount:=m; A массиві бағаналарының саны бекітіледі
StringGrid2.RowCount:=m; X массиві жолдарының саны бекітіледі
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer; локальді айнымалыларды жариялау
begin
n:=StrToInt(SpinEdit1.Text);
StringGrid1.RowCount:=n;
StringGrid3.RowCount:=n;
m:=StrToInt(SpinEdit2.Text);
StringGrid1.ColCount:=m;
StringGrid2.RowCount:=m;
p:=StrToInt(SpinEdit3.Text);
q:=StrToInt(SpinEdit4.Text);
кестедегі мәндерді A массивіне енгізу
for i:=1 to n do
for j:=1 to m do
A[i,j]:=StrToFloat(StringGrid1.Cell s[j-1,i-1]);
for j:=1 to m do X массивінің құрылуы және оның мәндерін кестеге
шығару
begin
X[j]:=A[p,j];
StringGrid2.Cells[0,j-1]:=FloatToSt rF(X[j],ffFixed,3,1);
end;
for i:=1 to n do Y массивінің құрылуы және оның мәндерін кестеге
шығару
begin
Y[i]:=A[i,q];
StringGrid3.Cells[0,i-1]:=FloatToSt rF(Y[i],ffFixed,3,1);
end;
end;
end.
4.1.4 Қосымшамен жұмыс
Құрылған қосымшаны орындауға жіберіңіздер. A матрицасының
элементтеріне сандық мәндер енгізіңіздер және қосымшаның тапсырмаға сәйкес
жұмыс атқаратынын тексеріңіздер.
4.2. Өзіндік тапсырманы орындау
2-қосымшадағы StringGrid және DrawGrid компонентерінің күтімін
меңгеріңіздер. Оқытушының нұсқауы бойынша жеке тапсырма таңдаңыздар.
Қосымша құрыңыздар және оның жұмысын тексеріңіздер.
Жеке тапсырмалар.
1. NxM өлшемді бүтін А матрицасы берілген. B массивін алу, егер
матрицаны k – ші бағананың барлық элементтері 0-дік болса оның k – ші
элементіне 0 мәнін, егер кері жағдай болса (k=1,2,...,M) 1 мәнін беру.
2. NxM өлшемді бүтін А матрицасы берілген. B массивін алу, егер
матрицаның k–ші жолының элементтері азаю бойынша реттелген болса оның k-ші
элементіне 1 мәнін, егер кері жағдай болса (k=1,2,...,N) 0 мәнін беру.
3. NxM өлшемді бүтін А матрицасы берілген. Матрицаның k-ші элементіне
1 мәнін беру, егер матрицаның k-ші жолы симетриялы болса, және 0 мәнін
беру, егер кері жағдай болса (k=1,2,...,N) В массивін алу.
4. NxM өлшемді бүтін матрица берілген. Егер матрицаның элементі өзі
тұрған бағананың басқа элементтерінің қосындысынан үлкен болса, бұл
элементі ерекше деп есептеңіз. Осы ерекше элементтердің k–санын табу
керек.
5. NxM өлшемді бүтін матрица берілген. Егер матрицаның элементінің өзі
тұрған жолдағы оң жақтағы элементтер өзінен үлкен, ал сол жақтағы
элементтер кіші болса, бұл элементті ерекше деп есептеңіз. Осы ерекше
элементтер k–санын табу керек.
6. NxM өлшемді символдық матрица берілген. Матрицаның әртүрлі
элементтерінің k-санын табу (яғни қайталанатын элементтерді бір рет санау
керек).
7. NxM өлшемді заттық матрица берілген. Оның жолдарын 1 –ші элементтері
азаюы емес бойынша реттеу.
8. NxM өлшемді заттық матрица берілген. Оның жолдарын олардың
элементтерінің сомасының азаюы емес бойынша реттеу.
9. NxM өлшемді заттық матрица берілген. Оның жолдарын олардың үлкен
элементтерінің азаюы емес бойынша реттеу.
10. Берілген n-ретті квадратты матрицаның жанама диогональға байланысты
симетриялы екенін анықтау.
11. Берілген NxM өлшемді бүтін матрицассы үшін экранға оның барлық
ертоқым нүктелерін шығару. Матрица элементі ертоқым нүктесі деп аталады
егер ол өз жолында ең кіші және өз бағанасында ең үлкен болса, және
керісінше өз жолында ең үлкен және өз бағанасында ең кіші болса.
12. n-ретті матрицада, жолдарды, матрицаның диоганалінде абсолютті мәні
бойынша ең үлкен мәндер тұратындай қайта орналастыру.
5 Лабораториялық жұмыс Жолдарды пайдаланумен алгоритмдерді
программалау
Лабораториялық жұмыстың мақсаты: ListBox және СomboBox
компоненттерінің пайдалануын меңгеру және жолдар пайдаланылатын қосымша
құру.
5.1. Қосымша құру мысалы
Тапсырма: Еркін жолда сөздердің санын санау үшін Windows-қосымша құру.
Жолдағы сөздер пробелдердің кез-келген санымен бөлінеді. Жолды енгізуді
Enter пернесін басумен аяқтау. Қосымшаның жұмысы Close батырмасын басумен
аяқталу керек.
Құрастырып жатырған қосымшаның интерфейс панелінің мүмкін
варианттарының бірі 5.1-суретте көрсетілген
5.1.1. Формада компоненттерді орналастыру
Жолдармен жұмыс кезінде экранға ақпаратты енгізуді және
шығаруды ListBox және ComboBox компоненттері арқылы жасау ыңғайлы.
ListBox компоненті жолды ұсынады, бұнда элементтер пернетақта немесе
“тышқан” көмегімен таңдалады. Элементттер тізімі Items қасиеті арқылы
беріледі, бұның Add, Delete және Insert әдістері, сәйкесінше жолдарды қосу,
жою, енгізу үшін пайдаланылады. Белгіленген элементтің нөмірін анықтау үшін
ItemIndex қасиеті қолданылады.
ComboBox компоненті ListBox тізімінің және Еdit редакторының
комбинациясын ұсынады, сондықтан барлық қасиеттері осы компоненттерге
тәуелденген. Редакторлау терезесімен жұмыс жасау үшін Edit- тегі тәрізді
Text қасиеті, ал таңдау тізімімен жұмыс жасау үшін ListBox –тегі тәрізді
Items қасиеті пайдаланылады. Style қасиетімен анықталатын компоненттің 5
модификациясы болады. csSimple модификациясында тізім әрқашанда ашық,
қалғандарында ол редактордың оң жағындағы батырманы басқаннан кейін
ашылады.
ListBox және ComboBox компоненттері Компоненттер Палитрасының Standard
бетінде орналасқан.
BitBtn компоненті Компоненттер Палитрасының Additional бетінде
орналасқан және стандартты Button батырмасының әртүрлілігін көрсетеді.
Оның ерекшелігі – Glyph қасиетімен анықталатын батырманың үстінде расторлық
суреттің бар болуы. Бұдан басқа, 11 стандартты әртүрлі батырмалардың ішінен
біреуін беретін Kind қасиеті бар. Бұлардың ішінен bkCustom және bkHelp –тан
басқа кез-келгенін басу модалды терезені жабады. bkClose батырмасы
негізгі терезені жабады және программа жұмысын аяқтайды.
5.1.2. Оқиғаларды өңдеуші процедураларды құру
Қосымшаны жүктеу моментінде, Интерфейс панелі экранға шыққан кезде
пайдаланушы үшін курсордың ComboBox компонентінің редакторлау өрісінде
орналасқаны ыңғайлы. Форманың активтелуі кезінде OnActivate оқиғасы пайда
болады, бұны ComboBox компонентіне енгізу фокусын беру үшін пайдалануға
болады. Осы оқиғаның өңдеу-процедурасын құру үшін Объектілер Инспекторында
Form1 компонентін таңдау қажет, Events бетінде OnActivate оқиғасын тауып
және оның оң жақ(ақ) бөлігінен “тышқанмен” екі рет шерту керек. Курсор
Форма активтелу оқиғасы өңдеу-процедурасының procedure
TForm1.FormActivate(Sender: TObject) мәтінінде орналасады. Процедураның
осы жерінде ComboBox1 компонентіне фокустың берілу операторын теріңіздер
(қ. 5.1.3 келтірілген UnStr модуль мәтінін қараңыздар).
Тапсырмаға сәйкес Enter пернесін басқан кезде, пайдаланушы редакторлау
терезесінде ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz