Объектты бағытталған программалау
Delphi ортасында комплекс сандармен амал орындау программасын құру
Факультеті ____________
Мамандығы 050111 – Информатика ___________________________________
Кафедрасы “Физика және информатика ” _______________________________
Диплом жобасын (жұмысын) орындауға
ТАПСЫРМА
Студентке_________ Асылбекова Альбина Тайырқызы ________
(аты-жөні)
Жобаның (жұмыстың) тақырыбы___“Delphi ортасында комплекс сандармен
амал орындау программасын құру”__________________________
жоғары оқу орны бойынша ______________“ “ қазан 2009 ж. №________
бұйрықпен бекітілген
Аяқталған жобаны (жұмысты) тапсыру мерзімі ___ 15 мамыр 2010 жыл.
Жобаның (жұмыстың) негізгі деректері Комплекс сандар, оларды жазу
әдістері, комплекс сандар устінен амалдар, Delphi программалау тілінің
негізгі үғымдары, модульдер, олардың құрылымы, Delphi программалау
ортасында комплекс сандар үстінен амалдар орындау программасын құру_____
Диплом жобасында көрсетілген мәселелердің тізімі немесе диплом
жұмысының қысқаша мазмұны:
а) Комплекс сандар, комплекс сандарды жазу тәсілдері олар үстінен амалдар,
ә) Делфи ортасының интерфейсы. Объектты бағытталған программалау.
Программаны оқиғалы басқару.
б)Модульдер. Модульдер структуралары (құрылымдары). Модульде жарияланған
объектілерге жету. Delphi-дегі модульдер типтері.
в) DLL-ді құру және пайдалану. DLL-ды құруға мысал. Кітапханаға форманы
енгізу. DLL-де модульдерді қолдану ерекшіліктері.
г) Delphi программалау ортасында комплекс сандар үстінен амалдар орындау
программасын құру
Графикалық материалдар тізімі (міндетті сызбалардың дәл көрсетілуімен)
__ Delphi программалау тілінің дистрибутив дискетасы, Power Point
қолданбалы программа ортасы,
Ұсынылған негізгі әдебиет: В.В.Фаронов Delphi. Программирование на языке
высокого уровня. Питер, 2008 г. 640 c., Чеснокова О.В. Delphi 2007.
Алгоритмы и программы. Москва, 2008, 357 с., Г.К.Нұрмуханбетова,
А.Әмірбекұлы,
Л.Сүлейменова. Турбо паскаль тілінен практикум. Шымкент, 2003 ж. 131
б., Г.Г.Рапаков, С.Ю.Ржеуцкая. Программирование на языке Pascal. С.-П.,
2005 г. 470 c., Установочная CD-дискета. Delphi 7.CD-диск. _____________
Мазмұны
Кіріспе 5
I-тарау Комплекс сандар 6
1.1. Комплекс сандар үстінен амалдар 6
II-тарау Delphi ортасының интерфейсы 7
2.1. Delphi жүйесін іске қосу 7
2.2. Экранда нені көреміз 7
2.3. Объектты бағытталған программалау 11
2.4. Delphi ортасында программалау әдістері 14
2.5. Программаны оқиғалы басқару 16
ІІІ-тарау Модульдер 18
3.1. Модульдер структуралары 18
3.2. Модульде жарияланған объектке жету 22
3.3. Delphi-дегі модульдер типтері 25
IV-тарау DLL-ді құру және пайдалану 27
4.1. Іске асыру 27
4.2. DLL-ды құруға мысал 29
4.3. Статикалық жүктеу 32
4.4. Динамикалық жүктеу 33
4.5. Интерфейстық модуль 35
4.6. Кітапханаға форманы енгізу 36
4.7. DLL-де модульдерді қолдану ерекшіліктері 40
V-тарау Delphi ортасында комплекс сандардың үстінен амалдарды 42
орындау программасын кұру
5.1. Delphi ортасында комплекс сандарды көбейту және бөлу 42
программасын құру
5.2. Delphi ортасында комплекс сандарды бүтін дәрежеге көтеру 45
программасын құру
Қорытынды 49
Ұсынылған әдебиеттер 50
Кіріспе
Комплекс сандар ғылыми зерттеу жұмысында кеңінен пайдаланылады. Олар
үстінен түрлі математик амалдарды орындауға түра келеді. Қайсы бір
программалау ортасында бұл амалдарды орындау программасын құру өзекті
мәселе болып табылады. Осындай программалау ортасы етіп Delphi ортасы
алынды.
Осыған ұқсас қандайда жүйе программаларды құруға арналған болып екі
характерлік ерекшіліктерге ие: ол жәрдемінде құрылған программалар Windows
жүйесінен басқа жүйелерде де жұмыс орындай алалады, ал өзі программаны
жылдам құру инструменталдық саймандар класына тиісті болады (Rapid
Application Development, RAD). Бұл үдеулену Delphi-дің екі характерлік
қасиеттеріне байланысты: формаларды визуал конструкторлау және визуал
компоненттердің кітапханаларынан (Visual Component Library, VCL) кеңінен
пайдалану.
Формаларды визуал конструкторлау программалаушыны интерфейсті
программалаудың көп аспектілерінен құтылдырады, себебі Delphi автоматик
керекті программалық дайындамаларды және сай файл ресурстарын дайындайды.
Программалаушы арнайы форма терезесі деп аталушы терзені келешек
программаның прототипы ретінде пайдаланып оны керекті интерфейстік
қасиеттерін амалға асыратын компоненттерімен (түрлі тізімдермен,
кнопкалармен, айналдыру жолақшаларымен ж.б.) толтырып отырады. Формада
кезекті компонентті орнатқаннан соң Delphi автоматик формамен байланысты
болған модульге компонентке сілтемені орнатады да арнайы DFM кеңейтпесіне
ие сипаттау файлын сай келтіреді, ол компиляция еткеннен соң Windows-тың
ресурстық файлына айналады.
Визуал компоненттер кітапханасы программалаушыға өте ұлкен түрлі
Delphi жетілдірушілері жағынан дайындалған программалық дайындамаларды
ұсынады. Олар жұмысқа дайын болып немесе оңай өзгертулерден кейін жұмысқа
түсіп кете береді. Компоненттер өте маңызды қасиеттерге ие болып өзінде
программалық код және жұмыс орындау үшін қажетті барлық нәрселерге ие.
Нәтижеде программист көп артықша жұмыстардан құтылады. Жоғарыда айтылғандай
Delphi өте көп түрлі жағдайларда қолдану мүмкін болған компоненттерді
ұсынады. Олар өте қарапайым түсіндіру жазулардан бастап өте күрделі текстік
редакторына немесе шешімдерді қабылдау саймандарына дейін қызмет ете алады.
Диплом жұмысы мақсаты етіп программаларды құруды оңайлататын модуль
әдістерін қарастырып оларды комплекс сандар үстінен математикалық амалдар
орындау программасын құруда пайдалану болып табыладытара.
1 – тарау. Комплекс сандар.
Комплекс сандар деп z = x + iy көрінісінде жазылатын сандарға
айтылады. Бұл жерде x және y қалаған нақты сандар, ал і = + ге тең
болған жорамал бір.
Комплекс сандарды комплекс жазықтығында қайсы бір нүкте жәрдемінде
бейнелеуге болады. Комплекс жазықтығының абцисса оғында сандың нақты бөлімі
қойылады, ал ордината оғында жорамал бөлімі қойылады.
Комплекс сандар үстінен төрт арифметикалық амалдар және дәрежеге
көтеру мен түбір шығару амалдарын орындауға болады.
Екі комплекс сандар қосындысы
z = z1 + z2 = x1 + i y1 + x2 + i x2 = (x1 + x2) + i (y1 + y2)
тең болады.
Дәрежеге көтеру үшін комплекс санды Эйлер формасында жазу керек:
z = x + iy = r exp(iφ)
Бұл жерде , ал . Сонда
,
болады. Бұл жерде n бүтін сан. Егер дәреже бөлшек сан болса, мысалы 1n,
онда бұл формула жәрдемінде түбірді есептесе болады. Түбірлер саны n-ге тең
болады.
Екі комплекс сандардың көбейтіндісі
Екі комплекс сандардың бөліндісі
ІІ – тарау. Delphi ортасының интерфейсы
2.1. Delphi жүйесін іске қосу.
Теориядан практикаға өту – программаларды жазуға өту сіздерді
қызықтыратын шығар. Принципте біз оған дайынмыз. Бірақ программаларды жазу
үшін бізге құрал-саймандар қажет болады. Жақында ғана бұл мақсат үшін
қағаз мен қалам қызмет етер еді. Ал бүгін программаны құру саймандары болып
компьютер өзі қызмет етеді. Осы компьютер өзінде жасалған программа
орындалады да.
Жұмыс үшін компьютерден басқа арнайы программа да қажет болады. Басқа
программаларды ерекше компоненттерден теріп жасайтын программалар визуал
жетілдіру ортасы деп аталады. Визуал жетілдіру ортасы төмендегі қызметтерді
өзіне алады:
♦ дайын программаларды теретін кірпіш-компоненттерді үсынады;
♦ программалау тілінің керекті операторларын жазуға мүмкіндік жасайды;
* қателерді табуға және оларды түзетуге мүмкіндік береді;
* қалаған басқа компьютерлерде орындау үшін дайын программаларды
пішімдеуге мүмкіндік береді.
Программалау жүйесінің қамқорлығына байланысты автор бейнетінің
өнімділігі және эффективтығы өсіп автор жұмысы творчестволық түрге өтеді.
Әлемде бірнеше визуал жетілдіру орталары бар екендігін сіздер
білесіздер: Visual Basic, Delphi, Borland C++ Builder және басқалар. Әрбірі
өзінің программалау тіліне бейімделген. Олар өздерінің жазу ережелеріне ие.
Дайын программа осы тілдер операторларынан құрастырылады, олардың бір
бөлігін автор қолымен жазады, ал қалғанын программалау жүйесі автоматик өзі
жазады.
Біз ең қуатты визуал жетілдіру ортасын —Delphi ортасын қолданамыз. Онда
қолданатын программалау тілі Object Pascal (Объекттік Паскаль) деп
аталады..
Біз үмітініеміз сіздер бұл жүйені компьютерлеріңізге орнатқан болған
шығарсыздар. Егер Windows Жұмыс үстелінде белгі жасалған болса оны екі рет
шертің. Егер мұндай белгі болмаса Басты менюде жұмысқа түсіру командасын
табың: Пуск → Программы → Borland Delphi → Delphi.
2.2. Экранда нені көреміз
Жүйенің негізгі терезесі. Жүйені жұмысқа түсіргеннен соң оның негізгі
терезесі ашылады. Онымен біз жұмыс орындаймыз. Ол қорқынышты көрінеді.
Басқару элементтерінің көптігінен баста айналуы мүмкін, оның үстіне
терезеде біз барлығын да көріп отырған жоқпыз.
Мұндай программалар түрасында – олар өте кұрделі интерфейске ие- деп
айтылады. Қорықпаңыздар, жүйемен танысуды жайлап бастаймыз: барлығы да
бірден керек болмайды. Программалау әлеміне енуді не қандай аталуынан
бастаймыз.
Шынында егер ықыласпен қарасақ экранда бір емесе бір-біріне байланысты
болмаған төрт терезе көреміз. Біз әрбір терезені басқаларға байланыссыз
көшіруімізге болады.
Басты терезе. Басты басқарушы терезе әдетте Delphi жүйесінде экранның
жоғары жағында жайласады. Терезе программаларды құруға арналған саймандарға
ие болып ең көп жүктелген болып көрінеді.
Бірақ біз одан көп пайдалануімізға түра келеді. Онда не барлығын
қарастырайық.
Атау қатары. Әрбір терезенің әркезі өзінің атауы бар. Жүйе терезесінің
атау қатарында онда ашылған проект атауы — Projectl жайласқан.
Меню қатары (жолы). Атау қатары астында меню қатары жайласқан. Ол
Delphi жүйесінің командаларына ие. Меню қатары қалаған программаның немесе
жүйенің ең маңызды басқару элементі болып табылады. Меню қатарынан басқа
программалар басқа да басқару элементтеріне ие: командалық кнопкалар,
саймандар кнопкалары ж.б. Кнопкалардан амалдарды орындағанда пайдалану
ыңғайлы, бірақ барлық та операциялардың кнопкасы жоқ, жиі кездесетін
операциялардың кнопкалары бар болады. Бірақ меню қатары жәрдемінде жүйе
мүмкіндік беретін қалаған командаларды орындау мүмкін.
Саймандар панели (тақташасы). Меню қатары астында кнопкаларға ие
инструменттер панелі жайласқан. Көп программаларда мұндай панельден біреу
ғана бар, бірақ Delphi жүйесінде олар бірнешеу. Инструменттер панелінің
кнопкалары жиі кездесетін командаларға жетуді қамтамасыз етеді. Ол немесе
бұл кнопканың атын білу үшін тышқаеша көрсеткішін оған ұңілтіп аздап күту
керек, сонда көрсеткіш төменінде ағымды сүйемелдеу пайда болады. Біздің
сұретімізді дискета белгісіне ие кнопка көрсетілген. Ол ашылған проектты
файл түрінде қатқыл дискіде сақтауға мұмкіндік жасайды, сондықтан ағымды
сүемелдеуде Save (Сохранить) жазуын көрсетеді.
Компоненттер палитрасы (жиыны). Инструменттер панеліндегі біреуі
қалғандарынан ерекшеленіп түр. Бұл компоненттер палитрасы. Онда программа
терезесінің компоненттеріне сай келетін кнопкалар терілген. Осы
кірпіштерден келешек программаларды құрамыз. Компоненттер – бұл келешек
басқару элементтерінің нүсқаулары.
Егер тышқан көрсеткішін компонент кнопкасына үңілтірсек, жанында
ағымды сілтеуіш пайда болып аты көрсетіледі. Біздің мысалымызда Label
(Надпись) компоненті таңдалған. Ол бізге келешек программаның терезесінде
бас жазулар жазу кезінде қажет болады.
Компоненттер палитрасы
Компоненттер палитрасы өте көп жапсырмаларға ие екеніне көңіл бөлің.
Әрбірі өзінің компоненттер жиынына ие. Компоненттердің жалпы саны бірнеше
жүзге жетеді. Біз көбінесе программаларымызда олардың айрымдарын
қолданамыз.
Объекттер инспекторы. Басқа терезелерді қарастыруға өтейік. Басында сол
жақта Object Inspector (Инспектор объектов) деп аталушы өте пайдалы терезе
жайласқан. Одан біз жиі пайдаланамыз. Сол жәрдемінде программада қолданатын
объекттер икемделеді. Бірінші объекттер алынғаннан бастап біз оларды
тышқанның шертуімен аламыз, сонда осы терезеде біз олардың қасиеттерін
көреміз де оларды өзіміздің қалауымыз ша өзгертуімізге болады.
Осы терезені өқиғаларды реттеу үшін де пайдалануға болады. Оларға
біздің программамыз объекттері жауап береді. Ол жәрдемінде біз керекті
болған өңдеу процедураларын жасауымызға немесе таңдауымызға болалы.
Форма (пішім) терезесі. Форма — бұл келешек программасының терезесі
нүсқауы. Әрбір программа ең кемінде бір терезеге ие, демек бір формаға.
Сондықтан программаны дайындағанда форманы экранда әркезі көріп түрамыз.
Бірінші терезе нүсқауы Form1 деп аталады. Егер программада екі терезе
болса, онда екіншінің нүсқауы Form2 делінеді т.с. Әлбетте бізде стандартты
атауды программамызға түра келетін атаумен өзгерту мұмкіндіктері бар.
Кәзір терезе формасы бос, бірақ программаны құрғанда оған біз керекті
басқару элементтерін қосамыз. Формадағы нүктелерден кұрастырылған тор
объекттерді түра және тегіс орнатуға мүмкіндік жасайды. Программа жұмыс
орындағанда тор көрінбейді.
Форма терезесі келешек программаның басқару элементтерін жайластыру
үшін қызмет етеді.
Код терезесі. Кейінгі ашылған терезе біздің программамыздың кодына ие.
Біздің программамыздың көп бөлігін Delphi жүйесі автоматик жасайды. Бұл
артықша емес. Windows үшін бос программа да Pascal тілінің бірнеше мың
операторларынан жасалады.
Программаны оңай түсіну ұшін Pascal тілінің кілттік сөздері код
терезесінде жартыжуан шрифтпен ерекшеленеді. Код терезесі программа
текстіне ие.
Сондада бізге өзіміздің программаға операторларды қосу керек болып
қалса, бұл жұмысты осы терезеде орындаймыз. Айрым операторларды біздің
өтінішімізбен Delphi өзі қосады, басқаларын қолмен енгіземіз. Қарапайым
программалар жайында қол бейнеті көп болмайды.
Delphi жүйесі керекті операторларды басынан өзіміздің программаны құра
бастағаннан қоса бастайды. Сондықтан код терезесі еш қашан бос болмайды.
Өкінішке орай бұл кейіннен біздің программаның тола текстын көре алмай
қаламыз. Біз олардың қолмен жазылатын бөлектерін ғана келтіріп отырамыз.
2.3. Объектты бағытталған программалау
Объектілер және оның қасиеттері
Осы тараудан біз осы заман программалары алдын-ала дайындалған
объектілерден жасалып кейіннен олар икемделуін біліп аламыз. Бұл
программист жұмысын оңайлатып қателерді жоюға жәрдем береді. Біз барлық
программа объектілері қасиеттерге ие болып уақиғаларға жауап қайтаруын
үйренеміз.
Объект дегеніміз немене?
Газеттерде уақты уақтымен қандай да бір қалада танылмаған ұшқыш
объект (ТҰО) көрінді деп жазады. “Түсті оттарын мөлтілдетіп жақпас
дыбысымен ТҰО горизонтқа таман өтіп кетті”. Атауына объект сөзі кіреді.
Немене тұрасында әңгіме кетуін ойлап көрейік. Таныссыз – демек ешкім не
екендігін білмейді. Ұшқыш – демек ТҰО ауада көрінген. Ал объект дегеніміз
ше? ТҰО тұрасында еш нәрсе білмегенімізден объект немене екендігін
айқындатуға әрекет жасайық.
Біріншіден объект нақты бір нәрсе. Біз ол қай жерде басталуын, қай
жерде аяқталуын, объектке немене кіруін немене кірмеуін айта аламыз.
Екіншіден ол қандай да бір ішкі құрамына ие. Ол тұрасында біз білмеуіміз
де мүмкін. Үшіншіден объект қандай да бір қүлқымен характерленеді, оны
күзетуге болады, айрым уақытта әсер етсе де болады.
Қосылыңыздар бұндай баяндау өте түсінікті де, пайдалы де емес, бірақ
өмірде бізді жоғарыдағы баяндамаға тура келетін өте көп түрлі заттар
қоршайды. Бұл заттар бізге үйреншікті, біз олардан ойланбастан
пайдаланамыз. Мысалы, ертелеп бізді будильник оятады. Жақпас қоңырауды
тоқтату үшін кнопканы басамыз, ал ертесіне қайтадан есіту үшін қоңырау
бұрамасын бұрауымыз керек.
Мынадай айтса да болады: “будильник” объектіні бұрау үшін “ручка”
объектіні бұраймыз. “Будильник” объектіні тоқтату үшін “кнопка” объектіні
басамыз. Объект көз қарасының пайдасы объектілерді бір бүтін зат күйінде
қабылдап олардың құрылысын білмесек те болады. Будильниктен пайдалану үшін
ол қандай дөңгелектерден және пружиналардан құрастырғандығын және олар
қалай бір біріне байланғандығын білмесек те болады. Егер біз будильникті
қалай бұрауын, оның жәрдемінде уақытты анықтауды, қоңырауды қандай
басқаруды білсек, біз будильник турасында пайдаланушыға керекті барлық
нәрсені білген боламыз.
Айналаңызға қараңыз. Бізді мыңдап объектілер қоршап алған. Біз
олардың құрылысын бұл бізге өмір сүруге және оқуға тосық бола алмайды. Міне
телевизор. Біз оны қосуды, өшіруді, басқа программаға өтуді білеміз. Міне
мұздатқыш. Оның іші суық, сондықтан ішіндегі азық-түліктер бүзылмайды. Міне
азық-түліктер. Біз оларды жеу мүмкіндігін білеміз. Айрымдарын пісіруге тура
келеді. Ал міне біздің жолдастарымыз. Біреулері футболды, біреулері сурет
салуды, үшіншілері күні-түні кино көруді жақсы көреді. Неге олар осындай әр
түрлі екендігін білмейміз, бірақ бұл бізге олармен алақада болуға тосық
болмайды.
Объектілер қасиеттері
“Объект” сөзі - өмірде жиі кездесетін нәрселерді ішкі түзулуіне және
әрекеттеріне мән берместен қысқа белгілеуге өте ыңғайлы, бірақ бұл
объектілер бізді түк қызықтырмайды емес. Керісінше өте қызықтырады. Егер
мысалы объект “шегені” объект “қабырғаға” қақпақшы болсақ біз әлбетте
олардың қасиеттерін анықтауымыз қажет. Егер қабырға ағаштан жасалса шеге
темірден болуы керек, кері емес.
Барлық объектілер түрлі қасиеттерге ие. Егер біз ұшып жүрген жәндіктер
қасиеттерін ажыратпасақ олар объектілер емес қарапайым жәндәктер болады.
Егер біз олардың қасиеттерін ажыратсақ, онда алдымызда шыбын, маса,
көбелек, ара екендігін білемізде әр жағдайға қарай өзімізді түрліше
тұтамыз. Объектілер қасиеттері объектінің өзімен тығыз байланысты. Бетсіз
жылмайу болмағандай объектсіз қасиет бола алмайды.
False және True мәндері – логикалық атаулы мәндер. Олар екі жағдайда
бола алады: Ия (True – Шындық) және Жоқ (False - Өтірік). Өмірде біз екі
мәнді объекттермен немесе қасиеттермен жиі кездесіп тұрамыз, мысалы: Түн –
Күн, Ыстық – Суық, Бала – Қыз, Қара – Ақ.
Бұндай мәндерді компьютер жадыны жүктемеу және процессорды артықша
жұмыс істетпеу үшін сандармен бергілеу мәнге ие емес. Сонымен айрым
программалау тілдерінің компиляторлары бұндай мүмкіншілікке ие болып,
мысалы мынадай синтаксис ережелерін енгізуге болады: 0 = False, ал 1 =
True деп.
Объектты-бағытталған таяу (жақындау)
Осылардың программалауға қандай қатысы бар? деген сұрау келіп шығады.
Мәселе бұнда – программамызда біз объектілерді қолданамыз. Программадағы
объектілер өмірдегі объектілерге ұқсас – олар ішкі түзулуімен және
мінезімен демек қасиеттерімен бір бірінен ажырап тұрады.
Программалық объектіні программалауды бастамастан көре аламыз ба? Ия,
және біз бұны орындадықта. Бүгін экранда көруге мүмкін болған нәрселер
программаларда объектілер түрінде амалға асырылған. Экрандағы ықтияры
терезе – бұл объект. Ықтияры белгі – бұл объект. Ықтияры басқару элементі
де – бұл объект. Ықтияры меню де – объект.
25 жыл ілгерігі өткен уақытқа қайтайық. Айтайық компьютер ойындарын
жасаушы жас адам компанияға келсін. Оған осы ойында бір кнопканы ғана жасау
тапсырылсын.
Алдымен ол үш күн кнопка суретін салатын код жазып шықты. Кейіннен екі
күн кнопка басылғанда орындалатын жұмыс кодын жазды. Бір апта сарыптап ол
өзінің программасын басшы программистке тапсырды.
- Бұл барлығы әлбетте жақсы, бірақ біздің программамызда он мыңдап
түрлі кнопкалар күтпеген жерден шығатын болады. Олармен не істеуіміз
керектігін ойлайық.
Біздің программист ойлап шығып барлығын подпрограмма (процедура)
ретінде хаттап шықты, басқа ойын жасаушы программистер керек кезінде
шақырып алатын етіп. Басқа программистерге бір түр кнопкалар емес, әр
түрлі: өлшемдері, түстары, түрлі жазуларға ие, түрлі амалдарды орындайтын
кнопкалар керек екендігі сонда мәлім болды.
Тағыда программист ойлап көріп егер осының барлығын параметрлер
көрінісінде шақыратын процедураға енгізілсе, әр бір әріптес оның жасаған
кнопкасын қалағанша істете алады деген пікірге келді. Қүрсан болды, бірақ
күннен бүрын. Әр бір әріптесімен шыдамды және көп уақыт байланыста болуға
тура келді. Біреуіне кнопканы басқанда дыбыс шағаруы, басқасына кнопкада
арнайы сурет болуы талап етілді. Біреумен келісіп шықса, екіншісінде
проблемалар басталады. Бір жыл қиыншылықтарды жеңуге және түрлі
программистер мен байланыстыруға кетті. Ал осы кезде фирма жаңа компьютер
ойынын программалауды бастады. Онда дизайнер пікірі бойынша кнопка төрт
бұрышты емес домалақ болуы керек. Сонымен барлық жұмысты қайтадан бастауға
тура келді. Программистымыз программа мен айланыспастан шексіз тартысулар
және келісімдерге уақыт кеткізгенін түсініп басқа фирмаға өтуге шешімге
келді.
Бірақ ол жердеде дұрыс емес екен, оданда жаман екен. Ол жердегі
программистер жылдар жұмыс істеп өте көп түрлі процедуралар жасап шығыпты.
Бірақ олар бір бірімен сай келмейді екен. Оларды талқылап көріп қолын бір
сілтеп қайтадан бастауға тура келіпті.
Осындай жағдай процедуралық программалау уақытында болып тұрған. Сол
жылдардағы ұтымды проекттер бір неше мың код қатарларына ие болып оларды
жасаған коллективтер әдетте екіден беске дейін адам санынан түзілген.
Программа өлшемдерін он мыңдап қатарға жеткізудегі әрекет жұмыс коллективын
өсіп кетуіне алып келіп қарсыластар сонша көбейіп кетер едікі оларды шешу
орнына тастаған дұрыс еді.
Объектті-бағытталған программалау тілдерінің пайда болуы көп
проблемаларды шешуге мүмкіндік берді. Программалы объекты, мысалы
кнопкадағы жазуды, немесе кнопка өлшемдеріні өзгерту керек болса, еш қандай
процедуралар жазылмай объект қасиеттеріні өзгерту жеткілікті болып қалды –
керекті өзгерістер процедураларда автоматик орындалады – оған объектті-
бағытталған программалау жүйесі жауап береді.
2.4. Delphi ортасында программалау әдістері
Объектілердің қасиеттері және әдістері
Әдеттегі өмірде біз өте көп түрлі объекттерден олардың құрылымын
білмесек те пайдаланамыз. Тағыда олар ішіне кірмегенді дұрыс: мысалы
отверткамен телевизорды шұқып оны жұмыстан шығаруға болады.
Бірақ біз объектілердің қасиеттерін өзгерте аламыз. Мысалы телевизорды
алайық. Телевизор негізгі қасиеті – телеарнаны экранда көрсету. Қайсы
программаны көрсету телевизор ішінде жайласқан. Біз қалай сақталуын
білмейміз де білгіміз де келмейді. Бізге егер телепрограмманың мазмұны
жақпай қалса оны оңай өзгерту мүмкіншілік талап етіледі. Бұл үшін түрлі
амалдар болуы мүмкін. Әдеттегі уй телевизорында алдынғы панелінде жайласқан
кнопкалар немесе қашықтан басқару пункті жәрдемінде программалар
ауыстырылады. Ақырында бізге еш бір программа жақпаса видеомагнитофонды
қосып өткен аптадағы жазған программаны көруге болады. Бірақ
видеомагнитофонды телеқабылдағышқа қосу үшін ол арнайы қасиеттерге, мысалы
арнайы кабель және разъем (қосылатын жай) ге ие болу тиіс.
Программалық объектілер де қасиеттерге ие – олар сол параметрлер, біз
оларды программа жасағанымызда таңдауымыз және ол жұмыс орындағанда
өзгертуіміз мүмкін. Объекттің қалған құрылымы біз үшін жабық, біз қандай да
бір мүмкін болмаған жұмыс орындай алмаймыз.
Объект қасиеттерін тексеру және өзгерту үшін арнайы процедуралар -
әдістер қолданады. Оларда объект құрылымында болады. Объект қасиеттерімен
бір нәрсе істеу үшін объекттің өзінен қабарландыруды немесе өзгертуді талап
етуіміз мүмкін деп айтуға болады.
Телевизордың қасиеттер саны көп емес. Программадағы объектілер
қасиеттері одан көп. Мысалы, терезедегі командалық кнопка өлшем, жайласуы,
түс, жазу және басқа қасиеттерге ие бола алады. Біз керекті қасиеттерімен
жүмыс істейміз. Басқа қасиеттеріне бір рет керекті мәндер беріп программа
жасағандан кейін естен шығарсақ та болады.
Бір программада қолданған объектті басқасында да қолдануға болады.
Мұнда:
• объект қосылуы программада бар басқа объектілердің жұмысын
өзгертпейді,
• қойылған объектің құлқы басқа объектілер болсада өзгермейді.
Еңбексіз программалау
Егер біз объектілермен жұмыс істесек, бұл дегеніміз біз өзіміз барлық
объектілерді жасап отыруымыз шарт емес. Түрлі адамдар әрекет облыстарында
еңбек бөлінуінен көптен бері пайдаланады.
Мысалы, құрушылар кім және қандай кірпіштерді жасауын білуі шарт
емес. Олардың жұмысы – дайын құру материалдарын алып олардан үй жасау
Айрым кезде үй жалпы дайын панельден жиналады, ол қамыртұрышта өскендей
көтеріледі.
Осыған ұқсас әдісті, мысалы, алма бауына өсіретіндер де қолдайды.
Барлығы біледі – алма ағашы ұрығынан шығады. Бірақ кім және қашан бауда
алма тұқымын еккенін көрді. Алма ағашы өсіп шығу үшін үш жылдық арнайы
питомниктен алынған көшет егіледі.
Бақшашы үшін көшет – бұл объект, себебі ол бір бірінен ажыратушы
қасиетке ие – ол алма сорты деп аталады. Ұрық объект емес, себебі бақшашы
үшін ажыратушы қасиетке ие емес. Ұрықтан жабайы алма өсіріп шығаруға
болады. Алма сортты болуы үшін оны арнайы операциядан өткізу керек. Ол
ұластыру делінеді де питомниктерде өткізіледі.
Кұру кірпіштері барлығы бір, ал олар жәрдемінде немене болсада құруға
болады. Егер біз құрылысты дайын бөлме блоктарынан бастасақ онда үйлер ғана
құра алар едік, бірақ театрлар, стадиондар емес. Сондықтан программалауда
біз өзіміздің программа жасауын сондай объекттерден бастауымыз керек олар
біздің мүмкіншіліктерімізді шектемесін, сонымен әр дайым басынан бастауға
алып келмесін.
Осындай рольға экрандық басқару элементтеру өте көп келеді. Олар
өздері де олармен жұмыс орындау тәсілдеріде стандарт, ал орындайтын
амалдары түрліше. Программалаумен біз Visual Basic жүйесі негізінде
танысамыз. Бұл жүйе пайдаланушыға келешек объетілер үшін көп дайын жиындар
ұсынады. Оларды компоненталар деп атайды. Немене істемекші болсақ біз
керекті компонентаны таба аламыз.
Сонымен, сіздер әлбетте көрген шығарсыздар барлық пайдалы программалар
мақсаттары түрліше болсада көрінісі бір біріне ұқсас. Осылай болуы құрулуы
бір түр компоненталардан болғандықтан. Бұндай программалар түрлі
компьютерлерде де істей береді, проблемалар кем кездеседі.
Керісінше, компьютер ойындары бір бірінен өте көп парықталады: тыс
көрінісімен де басқару тәсілдерімен де. Бұның себептері, осы программалар
авторлары бізді бір нәрсемен таң қалдыруға әр дайым әрекет еткенінде.
Компьютер ойындары ұрықтан өсіріледі деседе болады. Сондықтан барлық
ойындарда басынан аяғына дейін бір қалыпты болмайды, оларды орнатуда да
жеткілікті терлеу керек болады.
2.5. Программаны оқиғалы басқару
Үақиға және оларды өңдеу
Біз кәзірше бір өте керекті фактты көз қарастан шығарып жібердік.
Будильник тұрасында сөйлегенде біз будильник өзі біздің араласымызсыз жұмыс
орындайды – біз ол кезде ұйықтап жатамыз. Бұл нәрсе будильник икемделген
уақыт келісімен орындалады. Будильник үшін бұл фактты үақиға деп қарауға
болады. Нақты уақиғаларға жауап қайтару мүмкіндігі - бұл қасиеттің бір
түрі. Үақиға болуымен оны өңдеу басталады. Будильнік үшін – бұл қоңыраудың
қосылуы.
Компьютер программаларында пайдаланған объектілер де үақиғаға жауап
бере алады. Үақиғаның пайда болуымен арнайы әдіс нақты үақиғаның өңдеушісі
автоматик жұмысқа түседі. Ереже бойынша түрлі уақиғалар түрлі әсерге алып
келеді, бірақ қандай да бір үақиғаларға бір өңдеуші болсада. Сонымен
программа объектілер құрамына подпрограммалар – үақиғаны өңдеуші әдістер
кіреді.
Үақиғалар жәрдемінде программаның пайдаланушы мен өзара әсер
орнатылады. Тышқаншаны қозғатқанымызда немесе клавишты басқаны-мызда
басқару элементі үақиға деп біледі, ал керекті әдістер өңдеушіде
орнатылады. Пайдаланушы амалдарына байланыс үақиғалар пайдаланушының деп
аталады. Пйдаланушының үақиғаларынан басқа программаның үақиғалары болады.
Мысалы, танк минамен кездескенде “мина” атаулы өңдеу жұмыс орындайды. Осы
подпрограмма нәтижесінде мина өз жағдайын өзгертеді (жоқ болады), ал танк
қопарылыс үақиғасыны алады. Нәтижеде әдіс-өңдеу танк объекті жұмысқа
түседі. Осы подпрограмма танканың алған зақымдарын есептеп объект танкты
жоқ қылуы немесе тоқтатып қоюы мүмкін – сонда танк объектінің жылдамдық
қасиеті 0 мәнін алады.
Сіздер сезіп жатырсыздар ма? Экранда өте күрделі шайқастар болып
жатқанда да программаларда өте қарапайым операциялар орындалып жатады:
үақиғалардың процедуралар-өңдеушілер жұмысқа түседі, объектілердің
қасиеттері өзгереді, жаңа үақиғалар басталады, жаңа өңдеушілер қосылады
тағын басқалар.
Мынадай үақиғалар: зеңбіректің оқ атуы, танканың жарылуы, оқтың
тосықпен кездесуі үшін өңдеу әдістеріні программист өзі жазады – бұл қол
жұмысын талап етеді. Осы жағдай командалы кнопканың типтық объектілеріне де
тиісті. Кнопка үшін негізгі үақиға кнопканың шертілуі. Біз білеміз шерту
жалғасы әр түрлі болу мүмкін – барлығы кнопканың өзіне байланысты. Шертуге
жауапты беру үшін программист кнопканы шерту өңдеушісіні жасауы керек.
Программаны басқару оқиғалы механизмы
Біз кәзір ғана программаны орындау жаңа үақиғалы механизмымен
таныстық. Атака гипотетік тілінде программаланған автоматик тышқаншамыздың
әрекеттерін естейік.
Ол кезекпен программадағы бар командаларды алып “ойламастан” орындай
берген. Алдында айланып өтілетін тосық барлығыны танк білген бе еді? Жоқ
білген емес – ол амалда көр және керең еді. Бірақ бұны программист білген,
ол алдын-ала танк минамен кездеспеуін және зеңбірек оғына ілінбеуін қарап
шыққан.
Ал танкты қалай “ақылды” етуге болады, ол айналадағы болып
жатқандарды көру және есіту қабілетіне ие болуы, жау зеңбірегінің ату
дыбысыны есітіп сол бағытта бұрылып оны нысанға алуы мүмкін. Әттең бұған
біздің Атака программалау тіліміз жарамайды. Онда танка қасиеттерін
икемдейтін еш нәрсе жоқ. Қасиеттері болмағандықтан үақиғалар да жоқ, себебі
әр бір объект үшін мүмкін болған үақиға – бұл қасиеттің бір түрі. Үақиғалар
болмаса оларға жауапта жоқ. Атака тілінде жазылған программа танканы
программист көрсеткендей өрісте жүргізеді де, ада болғанда өшіріледі.
Казіргі заман программалары бұндай істемейді. Мысал ретінде Windows
операциялық жүйесіні алыңыздар, бұл да программа. Ол компьютер жұмысқа
қосулуымен іске түседі де өзінің жұмысыны компьютер өшірілгенше
тоқтатпайды. Windows’тың ішінде экран объектілер және басқару элементтері
мен немене болуын тексеріп түратын процесс түрақты істеп тұрады. Нәтижеде
жүйе біздің тышқанша жылжуына, кнопкалардың немесе клавиатура клавишасының
басылуына жауап беруге әр дайым дайын болып тұрады.
Қандай үақиғалар болады?
Үақиғалы басқару механизмы Windows жүйесіне тиісті осы жүйеде істеуші
барлық программаларға таратылады. Программа оны жасаушы ойлағанынан басқа
пайдаланушы қалағанын орындау үшін ол өзінің басқару элементтерінің қалын
тексеріп тұруы шарт.
Нақты уақиғалар әдеттегі басқару тәсілдеріне тиісті. Мысалы,
кнопкалар, жалаушалар және ауыстырғыштар тышқанша шертуіне жауап береді.
Программа бір немесе екі шертулерді ажыратып түрлі өңдеушілерден
пайдаланады. Пуск кнопкасына тышқан көрсеткішін дәлдегенде қалқыған жазу
шығуын естеңдер. Көрсеткіштің дәлдеуін үақиға деп қарауға болады, оған
объект жауап қайтара алады. Айрым жағдайларда күрделі басқару элементтері
үшін тышқанша кнопкасының басылуын және жіберілуін ерекше өңдеу талап
етіледі. Сонымен қайсы кнопка басылғанын немесе жіберілгенін тексеріледі.
Тағыда операцияның орындалуын өзгертетін Shift, Ctrl немесе Alt
клавишаларының басылып тұруына да қаралады.
III-тарау. Модульдер
Паскаль стандарттық тілі программа бөлімдерін ажыратып компиляция ету
кейіннен оларды орындау алдынан жинау механизмін алдын ала ескермейді. Одан
басқа қалаған объектті оны қолданудан алдын әлбетте сипаттау қажеттілік
принципы түрлі қолданбалы программалар кітапханаларын жетілдіруге жол
бермейді. Анығырағы Паскаль стандартты тілі ортасында мұндай кітапханалар
бастапқы текст түрінде болуы мүмкін болып программист өзі программасына кей
кездері түрлі сүйемелдейтін процедураларының, мысалы, матрицалық алгебрасы,
санды интегралдау, математикалық статистика процедураларының өте үлкен
текстерін енгізуге мәжбұр болды.
Сондықтан коммерциялық Паскаль компиляторлардың жетілдірушілері
Паскаль тіліне оның модульдігін дамытатын құрал-саймандарды енгізулері
түсінікті болады. Жиі мұндай сайман болып сыртқы процедураларды және
функцияларды қолдануға рұхсат механизмы болып табылады. Олар тәні стандарт
External директивасымен алмастырылады. Осы бағытта Delphi жетілдірушілері
модульдер деп аталушы механизмін тілге енгізіп әрі өтті.
Модуль — бұл автаном компиляция етілетін программа бірлігі болып
интерфейс бөлімінің түрлі компоненттерін (типтерді, константаларды,
айнымалылырды, процедураларды және функцияларды) және мүмкін болса
инициализация етуші бөлімнің айырым орындалатын операторларын өз ішіне
алады. Интерфейстік бөлімінде объекттердің пайда болуы оларға басқа
модульдердің және негізгі программаның қол жетуіне мүмкіндік жасайды.
Процедуралар және функциялар тәндері модульдің орындалатын бөлімінде
жайғасады. Олар пайдаланушыдан жасырылып қойылуы мүмкін.
Delphi-де модульдердің рольі бөліп компиляция ету механизмімен
шектелмейді. Delphi әрбір енгізілген тереземен өзінің модулін байлайды да
сонымен терезенің барлық қасиеттерін ерекше программалық бірлікте
ерекшелейді. Негізгі программа (проекттің DPR-файлы) өте спецификалық болып
ол барлық программадағы қолданатын модульдер тізімінен және бірнеше
орындалатын операторлардан құрастырылады. Олар керекті терезелерді жасайды
да олардың Windows пен байланысын орнатады. Программаның барлық негізгі
жұмысы модульдердегі кодтармен басқарылады.
3.1. Модульдер структуралары (құрылымдары)
Модуль төмендегі құрылымға ие:
Unit аты;
interface интерфейстік бөлімі
implementation орындалатын бөлімі
initialization инициализациялаушы бөлімі
finalization қорытушы бөлімі
end.
Осы жерде Unit —резервтелген (кейінге сақталған) сөз (бірлік) болып,
модуль басын бастайды, аты — модуль аты (дұрыс идентификатор); interface
—резервтелген сөз (интерфейс), ол модульдің интерфейстік бөлімін бастайды.;
implementation —резервтелген сөз (орындалуы), ол орындалатын бөлімді
бастайды; initialization — резервтелген сөз, модульдің инициализация етуші
(модуль жұмысын бастауға дайындаушы) бөлімін бастайды; finalization
—резервтелген сөз (қорыту), модульдің қорытушы бөлімін бастайды; end
—резервтелген сөз, модульдің соңын көрсетуші сөз.
Сонымен модуль бас тақырыптан және төрт бөлімдерінен құрастырылады,
олардың қалағаны бос болуы мүмкін.
Модуль бас тақырыбы және модульдердің бір-бірімен байланысы
Модульдің бас тақырыбы Unit резервтелген сөзден және оның артынан
жүруші модуль атынан құрастырылады. Delphi ортасының дұрыс жұмыс орындауы
үшін және үлкен программалардың жұмысын жеңілдету ұшін қосылатын
саймандардың мүмкіндіктерін арттыру үшін бұл ат модульдің бастапқы тексті
жайласқан дисктегі файл атымен сай келуі керек. Мысалы, мынадай бас
тақырыпқа ие болайық:
Unit Global;
Сонда сай келген модульдің бастапқы тексті GLOBAL.PAS атауға ие
дискідегі файлда жайласу керек. Модуль аты оның басқа модульдермен және
негізгі программамен байланыстыру үшін қызмет етеді. Бұл байланыс арнайы
сөйлеммен орнатылады:
Uses модульдер тізімі
Осы жерде Uses —резервтелген сөз қолданады ; модульдер тізімі —
байланыс орнататын модульдер тізімі, тізім элементтері болып бір бірінен
үтірмен ажыратылатын модульдер аттары болады, мысалы:
Uses Windows, SysUtils, MyUnit;
Егер Uses жарнамасы қолданса, ол негізгі программаның сипаттама
бөлімін бастау керек. Модульдер басқа модульдерді қолдануы мүмкін. Uses
сөйлемі модульдерде тікелей interface резервтелген сөзден кейін немесе
implementation сөзінен кейін немесе екеуінен кейінде кездесуі мүмкін (яғни
модульде Uses сөзі екі рет қолдануы мүмкін).
Интерфейстік бөлімі
Интерфейстік бөлімі interface резервтелген сөзбен ашылады. Бұл бөлімде
модульдің барлық негізгі программаға және модульдерге жетуге болатын глобал
объектілерінің жарнамалары келтіріледі (типтер, константалар, айнымалылар
және подпрограммалар). Глобал подпрограмманы жарнама еткенде интерфейстік
бөлімінде олардың бас тақырыптары ғана көрсетіледі, мысалы:
Unit Cmplx;
interface
type
Complex = record
re,im: Real
end;
function AddC(x,y: Complex): Complex;
function MulC(x,y: Complex): Complex;
Егер енді басқа модульде төмендегі сөйлемді жазсақ, онда Complex типі
және Cmplx модуліндегі екі процедуралар AddC және Мu1С қолдануға мүмкін
болып қалады:
Uses Cmplx;
Орындалатын бөлім
Орындалатын бөлімі резервтелген implementtation сөзінен басталып
интерфейстіқ бөлімінде келтірілген қосалқы программалардың
(подпрограммалардың) сипаттамаларына ие. Онда модульдің локал объекттері –
жәрдемші типтер, константалар, айнымалылар, подпрограммалар, сонымен
инициализациялайтын бөлімінде қолданылатын белгілер - жарнама етілуі
мүмкін.
Модульдың интерфейстік бөлімінде жарнама етілген подпрограмманы
баяндамалаудан алдын орындалатын бөлімінде басты тақырып келтірілген болуы
керек, онда формал айнымалылардың тізімі (және функция нәтижесінің типі де)
жазылмаса да болады, себебі олар интерфейстік бөлімінде келтірілген. Бірақ
подпрограмма басты тақырыбы тола келтірілсе, яғни формал параметрлердің
тізімімен және нәтижені жариялап та, ол интерфейстік бөлімінде келтірілген
бас тақырыппен сай келуі керек, мысалы:
Unit Cmplx;
Interface
type
Complex = record
re,im: real end;
function AddC(x,y: Complex): Complex;
function MulC(x,y: Complex): Complex;
Implementation
function AddC(x,y: Complex): Complex;
begin
... ...
end;
function MulC; подпрограмманы параметрлер тізімін қайталамастан
баяндау
Begin
... ...
end; end.
Подпрограмма басты тақырыбын қысқа етіп жариялау мүмкін болса да
(жоғарыдағы мысалда - MulC функциясын) мұндай форманы қатал программаларда
қолдану ұсынылмайды: подпрограмма басты тақырыбында параметрлердің тікелей
келтірілуі кодты оқуды оңайлатады да алгоритмдің амалға асыру детальдарін
түсінуге жол ашады. Подпрограмманың анық бас тақырыбын орындаушы бөлімінде
дәл көрсету үшін код редакторының мүмкіндіктерінен пайдаланып, курсорды
интерфейстік бөліміндегі подпрограмма басты тақырыбының қалаған жерінде
орнатып Ctrl+Shift+C клавиштерін басып – кодтық редактор подпрограмма
нұсқасын модуль орындалатын бөлімінде жасайды.
Орындалатын бөлімінде бас тақырып толасымен және дәл қайталану керек.
Егер біз төмендегі бас тақырыпты қолдансақ еді компилятор тез арада функция
бас тақырыбының интерфейстік бөлімінде жарияланғаны мен сай келмеуін
хабарлар еді (екінші параметр y атына ие болуы керек):
function AddC(x, z: Complex): Complex;
begin
... ... ...
end;
Инициализациялаушы және қорытындылаушы бөлімдері
Инициализациялаушы және қорытындылаушы бөлімдер оларды бастаушы
initialization және finalization сөздерімен бірге жиі болмауы мүмкін.
Инициализациялаушы бөлімінде негізгі программаға басқару берілгеннен
алдын орындалатын операторлар жайластырыладыда олар әдетте негізгі
программаны іске салуды дайындайды. Мысалы, оларда айнымалылар
инициализация етіледі, керекті файлдар ашылады ж.б. Қорытындылаушы
бөлімінде негізге программа жұмысын аяқтағандан соң орындалатын операторлар
жайластырылады (оларда программаға берілген ресурстар босатылады, файлдар
жабылады ж.б.). Егер бірнеше модульдер инициалаушы бөліміерге ие болса бұл
бөлімдер кетпе ... жалғасы
Факультеті ____________
Мамандығы 050111 – Информатика ___________________________________
Кафедрасы “Физика және информатика ” _______________________________
Диплом жобасын (жұмысын) орындауға
ТАПСЫРМА
Студентке_________ Асылбекова Альбина Тайырқызы ________
(аты-жөні)
Жобаның (жұмыстың) тақырыбы___“Delphi ортасында комплекс сандармен
амал орындау программасын құру”__________________________
жоғары оқу орны бойынша ______________“ “ қазан 2009 ж. №________
бұйрықпен бекітілген
Аяқталған жобаны (жұмысты) тапсыру мерзімі ___ 15 мамыр 2010 жыл.
Жобаның (жұмыстың) негізгі деректері Комплекс сандар, оларды жазу
әдістері, комплекс сандар устінен амалдар, Delphi программалау тілінің
негізгі үғымдары, модульдер, олардың құрылымы, Delphi программалау
ортасында комплекс сандар үстінен амалдар орындау программасын құру_____
Диплом жобасында көрсетілген мәселелердің тізімі немесе диплом
жұмысының қысқаша мазмұны:
а) Комплекс сандар, комплекс сандарды жазу тәсілдері олар үстінен амалдар,
ә) Делфи ортасының интерфейсы. Объектты бағытталған программалау.
Программаны оқиғалы басқару.
б)Модульдер. Модульдер структуралары (құрылымдары). Модульде жарияланған
объектілерге жету. Delphi-дегі модульдер типтері.
в) DLL-ді құру және пайдалану. DLL-ды құруға мысал. Кітапханаға форманы
енгізу. DLL-де модульдерді қолдану ерекшіліктері.
г) Delphi программалау ортасында комплекс сандар үстінен амалдар орындау
программасын құру
Графикалық материалдар тізімі (міндетті сызбалардың дәл көрсетілуімен)
__ Delphi программалау тілінің дистрибутив дискетасы, Power Point
қолданбалы программа ортасы,
Ұсынылған негізгі әдебиет: В.В.Фаронов Delphi. Программирование на языке
высокого уровня. Питер, 2008 г. 640 c., Чеснокова О.В. Delphi 2007.
Алгоритмы и программы. Москва, 2008, 357 с., Г.К.Нұрмуханбетова,
А.Әмірбекұлы,
Л.Сүлейменова. Турбо паскаль тілінен практикум. Шымкент, 2003 ж. 131
б., Г.Г.Рапаков, С.Ю.Ржеуцкая. Программирование на языке Pascal. С.-П.,
2005 г. 470 c., Установочная CD-дискета. Delphi 7.CD-диск. _____________
Мазмұны
Кіріспе 5
I-тарау Комплекс сандар 6
1.1. Комплекс сандар үстінен амалдар 6
II-тарау Delphi ортасының интерфейсы 7
2.1. Delphi жүйесін іске қосу 7
2.2. Экранда нені көреміз 7
2.3. Объектты бағытталған программалау 11
2.4. Delphi ортасында программалау әдістері 14
2.5. Программаны оқиғалы басқару 16
ІІІ-тарау Модульдер 18
3.1. Модульдер структуралары 18
3.2. Модульде жарияланған объектке жету 22
3.3. Delphi-дегі модульдер типтері 25
IV-тарау DLL-ді құру және пайдалану 27
4.1. Іске асыру 27
4.2. DLL-ды құруға мысал 29
4.3. Статикалық жүктеу 32
4.4. Динамикалық жүктеу 33
4.5. Интерфейстық модуль 35
4.6. Кітапханаға форманы енгізу 36
4.7. DLL-де модульдерді қолдану ерекшіліктері 40
V-тарау Delphi ортасында комплекс сандардың үстінен амалдарды 42
орындау программасын кұру
5.1. Delphi ортасында комплекс сандарды көбейту және бөлу 42
программасын құру
5.2. Delphi ортасында комплекс сандарды бүтін дәрежеге көтеру 45
программасын құру
Қорытынды 49
Ұсынылған әдебиеттер 50
Кіріспе
Комплекс сандар ғылыми зерттеу жұмысында кеңінен пайдаланылады. Олар
үстінен түрлі математик амалдарды орындауға түра келеді. Қайсы бір
программалау ортасында бұл амалдарды орындау программасын құру өзекті
мәселе болып табылады. Осындай программалау ортасы етіп Delphi ортасы
алынды.
Осыған ұқсас қандайда жүйе программаларды құруға арналған болып екі
характерлік ерекшіліктерге ие: ол жәрдемінде құрылған программалар Windows
жүйесінен басқа жүйелерде де жұмыс орындай алалады, ал өзі программаны
жылдам құру инструменталдық саймандар класына тиісті болады (Rapid
Application Development, RAD). Бұл үдеулену Delphi-дің екі характерлік
қасиеттеріне байланысты: формаларды визуал конструкторлау және визуал
компоненттердің кітапханаларынан (Visual Component Library, VCL) кеңінен
пайдалану.
Формаларды визуал конструкторлау программалаушыны интерфейсті
программалаудың көп аспектілерінен құтылдырады, себебі Delphi автоматик
керекті программалық дайындамаларды және сай файл ресурстарын дайындайды.
Программалаушы арнайы форма терезесі деп аталушы терзені келешек
программаның прототипы ретінде пайдаланып оны керекті интерфейстік
қасиеттерін амалға асыратын компоненттерімен (түрлі тізімдермен,
кнопкалармен, айналдыру жолақшаларымен ж.б.) толтырып отырады. Формада
кезекті компонентті орнатқаннан соң Delphi автоматик формамен байланысты
болған модульге компонентке сілтемені орнатады да арнайы DFM кеңейтпесіне
ие сипаттау файлын сай келтіреді, ол компиляция еткеннен соң Windows-тың
ресурстық файлына айналады.
Визуал компоненттер кітапханасы программалаушыға өте ұлкен түрлі
Delphi жетілдірушілері жағынан дайындалған программалық дайындамаларды
ұсынады. Олар жұмысқа дайын болып немесе оңай өзгертулерден кейін жұмысқа
түсіп кете береді. Компоненттер өте маңызды қасиеттерге ие болып өзінде
программалық код және жұмыс орындау үшін қажетті барлық нәрселерге ие.
Нәтижеде программист көп артықша жұмыстардан құтылады. Жоғарыда айтылғандай
Delphi өте көп түрлі жағдайларда қолдану мүмкін болған компоненттерді
ұсынады. Олар өте қарапайым түсіндіру жазулардан бастап өте күрделі текстік
редакторына немесе шешімдерді қабылдау саймандарына дейін қызмет ете алады.
Диплом жұмысы мақсаты етіп программаларды құруды оңайлататын модуль
әдістерін қарастырып оларды комплекс сандар үстінен математикалық амалдар
орындау программасын құруда пайдалану болып табыладытара.
1 – тарау. Комплекс сандар.
Комплекс сандар деп z = x + iy көрінісінде жазылатын сандарға
айтылады. Бұл жерде x және y қалаған нақты сандар, ал і = + ге тең
болған жорамал бір.
Комплекс сандарды комплекс жазықтығында қайсы бір нүкте жәрдемінде
бейнелеуге болады. Комплекс жазықтығының абцисса оғында сандың нақты бөлімі
қойылады, ал ордината оғында жорамал бөлімі қойылады.
Комплекс сандар үстінен төрт арифметикалық амалдар және дәрежеге
көтеру мен түбір шығару амалдарын орындауға болады.
Екі комплекс сандар қосындысы
z = z1 + z2 = x1 + i y1 + x2 + i x2 = (x1 + x2) + i (y1 + y2)
тең болады.
Дәрежеге көтеру үшін комплекс санды Эйлер формасында жазу керек:
z = x + iy = r exp(iφ)
Бұл жерде , ал . Сонда
,
болады. Бұл жерде n бүтін сан. Егер дәреже бөлшек сан болса, мысалы 1n,
онда бұл формула жәрдемінде түбірді есептесе болады. Түбірлер саны n-ге тең
болады.
Екі комплекс сандардың көбейтіндісі
Екі комплекс сандардың бөліндісі
ІІ – тарау. Delphi ортасының интерфейсы
2.1. Delphi жүйесін іске қосу.
Теориядан практикаға өту – программаларды жазуға өту сіздерді
қызықтыратын шығар. Принципте біз оған дайынмыз. Бірақ программаларды жазу
үшін бізге құрал-саймандар қажет болады. Жақында ғана бұл мақсат үшін
қағаз мен қалам қызмет етер еді. Ал бүгін программаны құру саймандары болып
компьютер өзі қызмет етеді. Осы компьютер өзінде жасалған программа
орындалады да.
Жұмыс үшін компьютерден басқа арнайы программа да қажет болады. Басқа
программаларды ерекше компоненттерден теріп жасайтын программалар визуал
жетілдіру ортасы деп аталады. Визуал жетілдіру ортасы төмендегі қызметтерді
өзіне алады:
♦ дайын программаларды теретін кірпіш-компоненттерді үсынады;
♦ программалау тілінің керекті операторларын жазуға мүмкіндік жасайды;
* қателерді табуға және оларды түзетуге мүмкіндік береді;
* қалаған басқа компьютерлерде орындау үшін дайын программаларды
пішімдеуге мүмкіндік береді.
Программалау жүйесінің қамқорлығына байланысты автор бейнетінің
өнімділігі және эффективтығы өсіп автор жұмысы творчестволық түрге өтеді.
Әлемде бірнеше визуал жетілдіру орталары бар екендігін сіздер
білесіздер: Visual Basic, Delphi, Borland C++ Builder және басқалар. Әрбірі
өзінің программалау тіліне бейімделген. Олар өздерінің жазу ережелеріне ие.
Дайын программа осы тілдер операторларынан құрастырылады, олардың бір
бөлігін автор қолымен жазады, ал қалғанын программалау жүйесі автоматик өзі
жазады.
Біз ең қуатты визуал жетілдіру ортасын —Delphi ортасын қолданамыз. Онда
қолданатын программалау тілі Object Pascal (Объекттік Паскаль) деп
аталады..
Біз үмітініеміз сіздер бұл жүйені компьютерлеріңізге орнатқан болған
шығарсыздар. Егер Windows Жұмыс үстелінде белгі жасалған болса оны екі рет
шертің. Егер мұндай белгі болмаса Басты менюде жұмысқа түсіру командасын
табың: Пуск → Программы → Borland Delphi → Delphi.
2.2. Экранда нені көреміз
Жүйенің негізгі терезесі. Жүйені жұмысқа түсіргеннен соң оның негізгі
терезесі ашылады. Онымен біз жұмыс орындаймыз. Ол қорқынышты көрінеді.
Басқару элементтерінің көптігінен баста айналуы мүмкін, оның үстіне
терезеде біз барлығын да көріп отырған жоқпыз.
Мұндай программалар түрасында – олар өте кұрделі интерфейске ие- деп
айтылады. Қорықпаңыздар, жүйемен танысуды жайлап бастаймыз: барлығы да
бірден керек болмайды. Программалау әлеміне енуді не қандай аталуынан
бастаймыз.
Шынында егер ықыласпен қарасақ экранда бір емесе бір-біріне байланысты
болмаған төрт терезе көреміз. Біз әрбір терезені басқаларға байланыссыз
көшіруімізге болады.
Басты терезе. Басты басқарушы терезе әдетте Delphi жүйесінде экранның
жоғары жағында жайласады. Терезе программаларды құруға арналған саймандарға
ие болып ең көп жүктелген болып көрінеді.
Бірақ біз одан көп пайдалануімізға түра келеді. Онда не барлығын
қарастырайық.
Атау қатары. Әрбір терезенің әркезі өзінің атауы бар. Жүйе терезесінің
атау қатарында онда ашылған проект атауы — Projectl жайласқан.
Меню қатары (жолы). Атау қатары астында меню қатары жайласқан. Ол
Delphi жүйесінің командаларына ие. Меню қатары қалаған программаның немесе
жүйенің ең маңызды басқару элементі болып табылады. Меню қатарынан басқа
программалар басқа да басқару элементтеріне ие: командалық кнопкалар,
саймандар кнопкалары ж.б. Кнопкалардан амалдарды орындағанда пайдалану
ыңғайлы, бірақ барлық та операциялардың кнопкасы жоқ, жиі кездесетін
операциялардың кнопкалары бар болады. Бірақ меню қатары жәрдемінде жүйе
мүмкіндік беретін қалаған командаларды орындау мүмкін.
Саймандар панели (тақташасы). Меню қатары астында кнопкаларға ие
инструменттер панелі жайласқан. Көп программаларда мұндай панельден біреу
ғана бар, бірақ Delphi жүйесінде олар бірнешеу. Инструменттер панелінің
кнопкалары жиі кездесетін командаларға жетуді қамтамасыз етеді. Ол немесе
бұл кнопканың атын білу үшін тышқаеша көрсеткішін оған ұңілтіп аздап күту
керек, сонда көрсеткіш төменінде ағымды сүйемелдеу пайда болады. Біздің
сұретімізді дискета белгісіне ие кнопка көрсетілген. Ол ашылған проектты
файл түрінде қатқыл дискіде сақтауға мұмкіндік жасайды, сондықтан ағымды
сүемелдеуде Save (Сохранить) жазуын көрсетеді.
Компоненттер палитрасы (жиыны). Инструменттер панеліндегі біреуі
қалғандарынан ерекшеленіп түр. Бұл компоненттер палитрасы. Онда программа
терезесінің компоненттеріне сай келетін кнопкалар терілген. Осы
кірпіштерден келешек программаларды құрамыз. Компоненттер – бұл келешек
басқару элементтерінің нүсқаулары.
Егер тышқан көрсеткішін компонент кнопкасына үңілтірсек, жанында
ағымды сілтеуіш пайда болып аты көрсетіледі. Біздің мысалымызда Label
(Надпись) компоненті таңдалған. Ол бізге келешек программаның терезесінде
бас жазулар жазу кезінде қажет болады.
Компоненттер палитрасы
Компоненттер палитрасы өте көп жапсырмаларға ие екеніне көңіл бөлің.
Әрбірі өзінің компоненттер жиынына ие. Компоненттердің жалпы саны бірнеше
жүзге жетеді. Біз көбінесе программаларымызда олардың айрымдарын
қолданамыз.
Объекттер инспекторы. Басқа терезелерді қарастыруға өтейік. Басында сол
жақта Object Inspector (Инспектор объектов) деп аталушы өте пайдалы терезе
жайласқан. Одан біз жиі пайдаланамыз. Сол жәрдемінде программада қолданатын
объекттер икемделеді. Бірінші объекттер алынғаннан бастап біз оларды
тышқанның шертуімен аламыз, сонда осы терезеде біз олардың қасиеттерін
көреміз де оларды өзіміздің қалауымыз ша өзгертуімізге болады.
Осы терезені өқиғаларды реттеу үшін де пайдалануға болады. Оларға
біздің программамыз объекттері жауап береді. Ол жәрдемінде біз керекті
болған өңдеу процедураларын жасауымызға немесе таңдауымызға болалы.
Форма (пішім) терезесі. Форма — бұл келешек программасының терезесі
нүсқауы. Әрбір программа ең кемінде бір терезеге ие, демек бір формаға.
Сондықтан программаны дайындағанда форманы экранда әркезі көріп түрамыз.
Бірінші терезе нүсқауы Form1 деп аталады. Егер программада екі терезе
болса, онда екіншінің нүсқауы Form2 делінеді т.с. Әлбетте бізде стандартты
атауды программамызға түра келетін атаумен өзгерту мұмкіндіктері бар.
Кәзір терезе формасы бос, бірақ программаны құрғанда оған біз керекті
басқару элементтерін қосамыз. Формадағы нүктелерден кұрастырылған тор
объекттерді түра және тегіс орнатуға мүмкіндік жасайды. Программа жұмыс
орындағанда тор көрінбейді.
Форма терезесі келешек программаның басқару элементтерін жайластыру
үшін қызмет етеді.
Код терезесі. Кейінгі ашылған терезе біздің программамыздың кодына ие.
Біздің программамыздың көп бөлігін Delphi жүйесі автоматик жасайды. Бұл
артықша емес. Windows үшін бос программа да Pascal тілінің бірнеше мың
операторларынан жасалады.
Программаны оңай түсіну ұшін Pascal тілінің кілттік сөздері код
терезесінде жартыжуан шрифтпен ерекшеленеді. Код терезесі программа
текстіне ие.
Сондада бізге өзіміздің программаға операторларды қосу керек болып
қалса, бұл жұмысты осы терезеде орындаймыз. Айрым операторларды біздің
өтінішімізбен Delphi өзі қосады, басқаларын қолмен енгіземіз. Қарапайым
программалар жайында қол бейнеті көп болмайды.
Delphi жүйесі керекті операторларды басынан өзіміздің программаны құра
бастағаннан қоса бастайды. Сондықтан код терезесі еш қашан бос болмайды.
Өкінішке орай бұл кейіннен біздің программаның тола текстын көре алмай
қаламыз. Біз олардың қолмен жазылатын бөлектерін ғана келтіріп отырамыз.
2.3. Объектты бағытталған программалау
Объектілер және оның қасиеттері
Осы тараудан біз осы заман программалары алдын-ала дайындалған
объектілерден жасалып кейіннен олар икемделуін біліп аламыз. Бұл
программист жұмысын оңайлатып қателерді жоюға жәрдем береді. Біз барлық
программа объектілері қасиеттерге ие болып уақиғаларға жауап қайтаруын
үйренеміз.
Объект дегеніміз немене?
Газеттерде уақты уақтымен қандай да бір қалада танылмаған ұшқыш
объект (ТҰО) көрінді деп жазады. “Түсті оттарын мөлтілдетіп жақпас
дыбысымен ТҰО горизонтқа таман өтіп кетті”. Атауына объект сөзі кіреді.
Немене тұрасында әңгіме кетуін ойлап көрейік. Таныссыз – демек ешкім не
екендігін білмейді. Ұшқыш – демек ТҰО ауада көрінген. Ал объект дегеніміз
ше? ТҰО тұрасында еш нәрсе білмегенімізден объект немене екендігін
айқындатуға әрекет жасайық.
Біріншіден объект нақты бір нәрсе. Біз ол қай жерде басталуын, қай
жерде аяқталуын, объектке немене кіруін немене кірмеуін айта аламыз.
Екіншіден ол қандай да бір ішкі құрамына ие. Ол тұрасында біз білмеуіміз
де мүмкін. Үшіншіден объект қандай да бір қүлқымен характерленеді, оны
күзетуге болады, айрым уақытта әсер етсе де болады.
Қосылыңыздар бұндай баяндау өте түсінікті де, пайдалы де емес, бірақ
өмірде бізді жоғарыдағы баяндамаға тура келетін өте көп түрлі заттар
қоршайды. Бұл заттар бізге үйреншікті, біз олардан ойланбастан
пайдаланамыз. Мысалы, ертелеп бізді будильник оятады. Жақпас қоңырауды
тоқтату үшін кнопканы басамыз, ал ертесіне қайтадан есіту үшін қоңырау
бұрамасын бұрауымыз керек.
Мынадай айтса да болады: “будильник” объектіні бұрау үшін “ручка”
объектіні бұраймыз. “Будильник” объектіні тоқтату үшін “кнопка” объектіні
басамыз. Объект көз қарасының пайдасы объектілерді бір бүтін зат күйінде
қабылдап олардың құрылысын білмесек те болады. Будильниктен пайдалану үшін
ол қандай дөңгелектерден және пружиналардан құрастырғандығын және олар
қалай бір біріне байланғандығын білмесек те болады. Егер біз будильникті
қалай бұрауын, оның жәрдемінде уақытты анықтауды, қоңырауды қандай
басқаруды білсек, біз будильник турасында пайдаланушыға керекті барлық
нәрсені білген боламыз.
Айналаңызға қараңыз. Бізді мыңдап объектілер қоршап алған. Біз
олардың құрылысын бұл бізге өмір сүруге және оқуға тосық бола алмайды. Міне
телевизор. Біз оны қосуды, өшіруді, басқа программаға өтуді білеміз. Міне
мұздатқыш. Оның іші суық, сондықтан ішіндегі азық-түліктер бүзылмайды. Міне
азық-түліктер. Біз оларды жеу мүмкіндігін білеміз. Айрымдарын пісіруге тура
келеді. Ал міне біздің жолдастарымыз. Біреулері футболды, біреулері сурет
салуды, үшіншілері күні-түні кино көруді жақсы көреді. Неге олар осындай әр
түрлі екендігін білмейміз, бірақ бұл бізге олармен алақада болуға тосық
болмайды.
Объектілер қасиеттері
“Объект” сөзі - өмірде жиі кездесетін нәрселерді ішкі түзулуіне және
әрекеттеріне мән берместен қысқа белгілеуге өте ыңғайлы, бірақ бұл
объектілер бізді түк қызықтырмайды емес. Керісінше өте қызықтырады. Егер
мысалы объект “шегені” объект “қабырғаға” қақпақшы болсақ біз әлбетте
олардың қасиеттерін анықтауымыз қажет. Егер қабырға ағаштан жасалса шеге
темірден болуы керек, кері емес.
Барлық объектілер түрлі қасиеттерге ие. Егер біз ұшып жүрген жәндіктер
қасиеттерін ажыратпасақ олар объектілер емес қарапайым жәндәктер болады.
Егер біз олардың қасиеттерін ажыратсақ, онда алдымызда шыбын, маса,
көбелек, ара екендігін білемізде әр жағдайға қарай өзімізді түрліше
тұтамыз. Объектілер қасиеттері объектінің өзімен тығыз байланысты. Бетсіз
жылмайу болмағандай объектсіз қасиет бола алмайды.
False және True мәндері – логикалық атаулы мәндер. Олар екі жағдайда
бола алады: Ия (True – Шындық) және Жоқ (False - Өтірік). Өмірде біз екі
мәнді объекттермен немесе қасиеттермен жиі кездесіп тұрамыз, мысалы: Түн –
Күн, Ыстық – Суық, Бала – Қыз, Қара – Ақ.
Бұндай мәндерді компьютер жадыны жүктемеу және процессорды артықша
жұмыс істетпеу үшін сандармен бергілеу мәнге ие емес. Сонымен айрым
программалау тілдерінің компиляторлары бұндай мүмкіншілікке ие болып,
мысалы мынадай синтаксис ережелерін енгізуге болады: 0 = False, ал 1 =
True деп.
Объектты-бағытталған таяу (жақындау)
Осылардың программалауға қандай қатысы бар? деген сұрау келіп шығады.
Мәселе бұнда – программамызда біз объектілерді қолданамыз. Программадағы
объектілер өмірдегі объектілерге ұқсас – олар ішкі түзулуімен және
мінезімен демек қасиеттерімен бір бірінен ажырап тұрады.
Программалық объектіні программалауды бастамастан көре аламыз ба? Ия,
және біз бұны орындадықта. Бүгін экранда көруге мүмкін болған нәрселер
программаларда объектілер түрінде амалға асырылған. Экрандағы ықтияры
терезе – бұл объект. Ықтияры белгі – бұл объект. Ықтияры басқару элементі
де – бұл объект. Ықтияры меню де – объект.
25 жыл ілгерігі өткен уақытқа қайтайық. Айтайық компьютер ойындарын
жасаушы жас адам компанияға келсін. Оған осы ойында бір кнопканы ғана жасау
тапсырылсын.
Алдымен ол үш күн кнопка суретін салатын код жазып шықты. Кейіннен екі
күн кнопка басылғанда орындалатын жұмыс кодын жазды. Бір апта сарыптап ол
өзінің программасын басшы программистке тапсырды.
- Бұл барлығы әлбетте жақсы, бірақ біздің программамызда он мыңдап
түрлі кнопкалар күтпеген жерден шығатын болады. Олармен не істеуіміз
керектігін ойлайық.
Біздің программист ойлап шығып барлығын подпрограмма (процедура)
ретінде хаттап шықты, басқа ойын жасаушы программистер керек кезінде
шақырып алатын етіп. Басқа программистерге бір түр кнопкалар емес, әр
түрлі: өлшемдері, түстары, түрлі жазуларға ие, түрлі амалдарды орындайтын
кнопкалар керек екендігі сонда мәлім болды.
Тағыда программист ойлап көріп егер осының барлығын параметрлер
көрінісінде шақыратын процедураға енгізілсе, әр бір әріптес оның жасаған
кнопкасын қалағанша істете алады деген пікірге келді. Қүрсан болды, бірақ
күннен бүрын. Әр бір әріптесімен шыдамды және көп уақыт байланыста болуға
тура келді. Біреуіне кнопканы басқанда дыбыс шағаруы, басқасына кнопкада
арнайы сурет болуы талап етілді. Біреумен келісіп шықса, екіншісінде
проблемалар басталады. Бір жыл қиыншылықтарды жеңуге және түрлі
программистер мен байланыстыруға кетті. Ал осы кезде фирма жаңа компьютер
ойынын программалауды бастады. Онда дизайнер пікірі бойынша кнопка төрт
бұрышты емес домалақ болуы керек. Сонымен барлық жұмысты қайтадан бастауға
тура келді. Программистымыз программа мен айланыспастан шексіз тартысулар
және келісімдерге уақыт кеткізгенін түсініп басқа фирмаға өтуге шешімге
келді.
Бірақ ол жердеде дұрыс емес екен, оданда жаман екен. Ол жердегі
программистер жылдар жұмыс істеп өте көп түрлі процедуралар жасап шығыпты.
Бірақ олар бір бірімен сай келмейді екен. Оларды талқылап көріп қолын бір
сілтеп қайтадан бастауға тура келіпті.
Осындай жағдай процедуралық программалау уақытында болып тұрған. Сол
жылдардағы ұтымды проекттер бір неше мың код қатарларына ие болып оларды
жасаған коллективтер әдетте екіден беске дейін адам санынан түзілген.
Программа өлшемдерін он мыңдап қатарға жеткізудегі әрекет жұмыс коллективын
өсіп кетуіне алып келіп қарсыластар сонша көбейіп кетер едікі оларды шешу
орнына тастаған дұрыс еді.
Объектті-бағытталған программалау тілдерінің пайда болуы көп
проблемаларды шешуге мүмкіндік берді. Программалы объекты, мысалы
кнопкадағы жазуды, немесе кнопка өлшемдеріні өзгерту керек болса, еш қандай
процедуралар жазылмай объект қасиеттеріні өзгерту жеткілікті болып қалды –
керекті өзгерістер процедураларда автоматик орындалады – оған объектті-
бағытталған программалау жүйесі жауап береді.
2.4. Delphi ортасында программалау әдістері
Объектілердің қасиеттері және әдістері
Әдеттегі өмірде біз өте көп түрлі объекттерден олардың құрылымын
білмесек те пайдаланамыз. Тағыда олар ішіне кірмегенді дұрыс: мысалы
отверткамен телевизорды шұқып оны жұмыстан шығаруға болады.
Бірақ біз объектілердің қасиеттерін өзгерте аламыз. Мысалы телевизорды
алайық. Телевизор негізгі қасиеті – телеарнаны экранда көрсету. Қайсы
программаны көрсету телевизор ішінде жайласқан. Біз қалай сақталуын
білмейміз де білгіміз де келмейді. Бізге егер телепрограмманың мазмұны
жақпай қалса оны оңай өзгерту мүмкіншілік талап етіледі. Бұл үшін түрлі
амалдар болуы мүмкін. Әдеттегі уй телевизорында алдынғы панелінде жайласқан
кнопкалар немесе қашықтан басқару пункті жәрдемінде программалар
ауыстырылады. Ақырында бізге еш бір программа жақпаса видеомагнитофонды
қосып өткен аптадағы жазған программаны көруге болады. Бірақ
видеомагнитофонды телеқабылдағышқа қосу үшін ол арнайы қасиеттерге, мысалы
арнайы кабель және разъем (қосылатын жай) ге ие болу тиіс.
Программалық объектілер де қасиеттерге ие – олар сол параметрлер, біз
оларды программа жасағанымызда таңдауымыз және ол жұмыс орындағанда
өзгертуіміз мүмкін. Объекттің қалған құрылымы біз үшін жабық, біз қандай да
бір мүмкін болмаған жұмыс орындай алмаймыз.
Объект қасиеттерін тексеру және өзгерту үшін арнайы процедуралар -
әдістер қолданады. Оларда объект құрылымында болады. Объект қасиеттерімен
бір нәрсе істеу үшін объекттің өзінен қабарландыруды немесе өзгертуді талап
етуіміз мүмкін деп айтуға болады.
Телевизордың қасиеттер саны көп емес. Программадағы объектілер
қасиеттері одан көп. Мысалы, терезедегі командалық кнопка өлшем, жайласуы,
түс, жазу және басқа қасиеттерге ие бола алады. Біз керекті қасиеттерімен
жүмыс істейміз. Басқа қасиеттеріне бір рет керекті мәндер беріп программа
жасағандан кейін естен шығарсақ та болады.
Бір программада қолданған объектті басқасында да қолдануға болады.
Мұнда:
• объект қосылуы программада бар басқа объектілердің жұмысын
өзгертпейді,
• қойылған объектің құлқы басқа объектілер болсада өзгермейді.
Еңбексіз программалау
Егер біз объектілермен жұмыс істесек, бұл дегеніміз біз өзіміз барлық
объектілерді жасап отыруымыз шарт емес. Түрлі адамдар әрекет облыстарында
еңбек бөлінуінен көптен бері пайдаланады.
Мысалы, құрушылар кім және қандай кірпіштерді жасауын білуі шарт
емес. Олардың жұмысы – дайын құру материалдарын алып олардан үй жасау
Айрым кезде үй жалпы дайын панельден жиналады, ол қамыртұрышта өскендей
көтеріледі.
Осыған ұқсас әдісті, мысалы, алма бауына өсіретіндер де қолдайды.
Барлығы біледі – алма ағашы ұрығынан шығады. Бірақ кім және қашан бауда
алма тұқымын еккенін көрді. Алма ағашы өсіп шығу үшін үш жылдық арнайы
питомниктен алынған көшет егіледі.
Бақшашы үшін көшет – бұл объект, себебі ол бір бірінен ажыратушы
қасиетке ие – ол алма сорты деп аталады. Ұрық объект емес, себебі бақшашы
үшін ажыратушы қасиетке ие емес. Ұрықтан жабайы алма өсіріп шығаруға
болады. Алма сортты болуы үшін оны арнайы операциядан өткізу керек. Ол
ұластыру делінеді де питомниктерде өткізіледі.
Кұру кірпіштері барлығы бір, ал олар жәрдемінде немене болсада құруға
болады. Егер біз құрылысты дайын бөлме блоктарынан бастасақ онда үйлер ғана
құра алар едік, бірақ театрлар, стадиондар емес. Сондықтан программалауда
біз өзіміздің программа жасауын сондай объекттерден бастауымыз керек олар
біздің мүмкіншіліктерімізді шектемесін, сонымен әр дайым басынан бастауға
алып келмесін.
Осындай рольға экрандық басқару элементтеру өте көп келеді. Олар
өздері де олармен жұмыс орындау тәсілдеріде стандарт, ал орындайтын
амалдары түрліше. Программалаумен біз Visual Basic жүйесі негізінде
танысамыз. Бұл жүйе пайдаланушыға келешек объетілер үшін көп дайын жиындар
ұсынады. Оларды компоненталар деп атайды. Немене істемекші болсақ біз
керекті компонентаны таба аламыз.
Сонымен, сіздер әлбетте көрген шығарсыздар барлық пайдалы программалар
мақсаттары түрліше болсада көрінісі бір біріне ұқсас. Осылай болуы құрулуы
бір түр компоненталардан болғандықтан. Бұндай программалар түрлі
компьютерлерде де істей береді, проблемалар кем кездеседі.
Керісінше, компьютер ойындары бір бірінен өте көп парықталады: тыс
көрінісімен де басқару тәсілдерімен де. Бұның себептері, осы программалар
авторлары бізді бір нәрсемен таң қалдыруға әр дайым әрекет еткенінде.
Компьютер ойындары ұрықтан өсіріледі деседе болады. Сондықтан барлық
ойындарда басынан аяғына дейін бір қалыпты болмайды, оларды орнатуда да
жеткілікті терлеу керек болады.
2.5. Программаны оқиғалы басқару
Үақиға және оларды өңдеу
Біз кәзірше бір өте керекті фактты көз қарастан шығарып жібердік.
Будильник тұрасында сөйлегенде біз будильник өзі біздің араласымызсыз жұмыс
орындайды – біз ол кезде ұйықтап жатамыз. Бұл нәрсе будильник икемделген
уақыт келісімен орындалады. Будильник үшін бұл фактты үақиға деп қарауға
болады. Нақты уақиғаларға жауап қайтару мүмкіндігі - бұл қасиеттің бір
түрі. Үақиға болуымен оны өңдеу басталады. Будильнік үшін – бұл қоңыраудың
қосылуы.
Компьютер программаларында пайдаланған объектілер де үақиғаға жауап
бере алады. Үақиғаның пайда болуымен арнайы әдіс нақты үақиғаның өңдеушісі
автоматик жұмысқа түседі. Ереже бойынша түрлі уақиғалар түрлі әсерге алып
келеді, бірақ қандай да бір үақиғаларға бір өңдеуші болсада. Сонымен
программа объектілер құрамына подпрограммалар – үақиғаны өңдеуші әдістер
кіреді.
Үақиғалар жәрдемінде программаның пайдаланушы мен өзара әсер
орнатылады. Тышқаншаны қозғатқанымызда немесе клавишты басқаны-мызда
басқару элементі үақиға деп біледі, ал керекті әдістер өңдеушіде
орнатылады. Пайдаланушы амалдарына байланыс үақиғалар пайдаланушының деп
аталады. Пйдаланушының үақиғаларынан басқа программаның үақиғалары болады.
Мысалы, танк минамен кездескенде “мина” атаулы өңдеу жұмыс орындайды. Осы
подпрограмма нәтижесінде мина өз жағдайын өзгертеді (жоқ болады), ал танк
қопарылыс үақиғасыны алады. Нәтижеде әдіс-өңдеу танк объекті жұмысқа
түседі. Осы подпрограмма танканың алған зақымдарын есептеп объект танкты
жоқ қылуы немесе тоқтатып қоюы мүмкін – сонда танк объектінің жылдамдық
қасиеті 0 мәнін алады.
Сіздер сезіп жатырсыздар ма? Экранда өте күрделі шайқастар болып
жатқанда да программаларда өте қарапайым операциялар орындалып жатады:
үақиғалардың процедуралар-өңдеушілер жұмысқа түседі, объектілердің
қасиеттері өзгереді, жаңа үақиғалар басталады, жаңа өңдеушілер қосылады
тағын басқалар.
Мынадай үақиғалар: зеңбіректің оқ атуы, танканың жарылуы, оқтың
тосықпен кездесуі үшін өңдеу әдістеріні программист өзі жазады – бұл қол
жұмысын талап етеді. Осы жағдай командалы кнопканың типтық объектілеріне де
тиісті. Кнопка үшін негізгі үақиға кнопканың шертілуі. Біз білеміз шерту
жалғасы әр түрлі болу мүмкін – барлығы кнопканың өзіне байланысты. Шертуге
жауапты беру үшін программист кнопканы шерту өңдеушісіні жасауы керек.
Программаны басқару оқиғалы механизмы
Біз кәзір ғана программаны орындау жаңа үақиғалы механизмымен
таныстық. Атака гипотетік тілінде программаланған автоматик тышқаншамыздың
әрекеттерін естейік.
Ол кезекпен программадағы бар командаларды алып “ойламастан” орындай
берген. Алдында айланып өтілетін тосық барлығыны танк білген бе еді? Жоқ
білген емес – ол амалда көр және керең еді. Бірақ бұны программист білген,
ол алдын-ала танк минамен кездеспеуін және зеңбірек оғына ілінбеуін қарап
шыққан.
Ал танкты қалай “ақылды” етуге болады, ол айналадағы болып
жатқандарды көру және есіту қабілетіне ие болуы, жау зеңбірегінің ату
дыбысыны есітіп сол бағытта бұрылып оны нысанға алуы мүмкін. Әттең бұған
біздің Атака программалау тіліміз жарамайды. Онда танка қасиеттерін
икемдейтін еш нәрсе жоқ. Қасиеттері болмағандықтан үақиғалар да жоқ, себебі
әр бір объект үшін мүмкін болған үақиға – бұл қасиеттің бір түрі. Үақиғалар
болмаса оларға жауапта жоқ. Атака тілінде жазылған программа танканы
программист көрсеткендей өрісте жүргізеді де, ада болғанда өшіріледі.
Казіргі заман программалары бұндай істемейді. Мысал ретінде Windows
операциялық жүйесіні алыңыздар, бұл да программа. Ол компьютер жұмысқа
қосулуымен іске түседі де өзінің жұмысыны компьютер өшірілгенше
тоқтатпайды. Windows’тың ішінде экран объектілер және басқару элементтері
мен немене болуын тексеріп түратын процесс түрақты істеп тұрады. Нәтижеде
жүйе біздің тышқанша жылжуына, кнопкалардың немесе клавиатура клавишасының
басылуына жауап беруге әр дайым дайын болып тұрады.
Қандай үақиғалар болады?
Үақиғалы басқару механизмы Windows жүйесіне тиісті осы жүйеде істеуші
барлық программаларға таратылады. Программа оны жасаушы ойлағанынан басқа
пайдаланушы қалағанын орындау үшін ол өзінің басқару элементтерінің қалын
тексеріп тұруы шарт.
Нақты уақиғалар әдеттегі басқару тәсілдеріне тиісті. Мысалы,
кнопкалар, жалаушалар және ауыстырғыштар тышқанша шертуіне жауап береді.
Программа бір немесе екі шертулерді ажыратып түрлі өңдеушілерден
пайдаланады. Пуск кнопкасына тышқан көрсеткішін дәлдегенде қалқыған жазу
шығуын естеңдер. Көрсеткіштің дәлдеуін үақиға деп қарауға болады, оған
объект жауап қайтара алады. Айрым жағдайларда күрделі басқару элементтері
үшін тышқанша кнопкасының басылуын және жіберілуін ерекше өңдеу талап
етіледі. Сонымен қайсы кнопка басылғанын немесе жіберілгенін тексеріледі.
Тағыда операцияның орындалуын өзгертетін Shift, Ctrl немесе Alt
клавишаларының басылып тұруына да қаралады.
III-тарау. Модульдер
Паскаль стандарттық тілі программа бөлімдерін ажыратып компиляция ету
кейіннен оларды орындау алдынан жинау механизмін алдын ала ескермейді. Одан
басқа қалаған объектті оны қолданудан алдын әлбетте сипаттау қажеттілік
принципы түрлі қолданбалы программалар кітапханаларын жетілдіруге жол
бермейді. Анығырағы Паскаль стандартты тілі ортасында мұндай кітапханалар
бастапқы текст түрінде болуы мүмкін болып программист өзі программасына кей
кездері түрлі сүйемелдейтін процедураларының, мысалы, матрицалық алгебрасы,
санды интегралдау, математикалық статистика процедураларының өте үлкен
текстерін енгізуге мәжбұр болды.
Сондықтан коммерциялық Паскаль компиляторлардың жетілдірушілері
Паскаль тіліне оның модульдігін дамытатын құрал-саймандарды енгізулері
түсінікті болады. Жиі мұндай сайман болып сыртқы процедураларды және
функцияларды қолдануға рұхсат механизмы болып табылады. Олар тәні стандарт
External директивасымен алмастырылады. Осы бағытта Delphi жетілдірушілері
модульдер деп аталушы механизмін тілге енгізіп әрі өтті.
Модуль — бұл автаном компиляция етілетін программа бірлігі болып
интерфейс бөлімінің түрлі компоненттерін (типтерді, константаларды,
айнымалылырды, процедураларды және функцияларды) және мүмкін болса
инициализация етуші бөлімнің айырым орындалатын операторларын өз ішіне
алады. Интерфейстік бөлімінде объекттердің пайда болуы оларға басқа
модульдердің және негізгі программаның қол жетуіне мүмкіндік жасайды.
Процедуралар және функциялар тәндері модульдің орындалатын бөлімінде
жайғасады. Олар пайдаланушыдан жасырылып қойылуы мүмкін.
Delphi-де модульдердің рольі бөліп компиляция ету механизмімен
шектелмейді. Delphi әрбір енгізілген тереземен өзінің модулін байлайды да
сонымен терезенің барлық қасиеттерін ерекше программалық бірлікте
ерекшелейді. Негізгі программа (проекттің DPR-файлы) өте спецификалық болып
ол барлық программадағы қолданатын модульдер тізімінен және бірнеше
орындалатын операторлардан құрастырылады. Олар керекті терезелерді жасайды
да олардың Windows пен байланысын орнатады. Программаның барлық негізгі
жұмысы модульдердегі кодтармен басқарылады.
3.1. Модульдер структуралары (құрылымдары)
Модуль төмендегі құрылымға ие:
Unit аты;
interface интерфейстік бөлімі
implementation орындалатын бөлімі
initialization инициализациялаушы бөлімі
finalization қорытушы бөлімі
end.
Осы жерде Unit —резервтелген (кейінге сақталған) сөз (бірлік) болып,
модуль басын бастайды, аты — модуль аты (дұрыс идентификатор); interface
—резервтелген сөз (интерфейс), ол модульдің интерфейстік бөлімін бастайды.;
implementation —резервтелген сөз (орындалуы), ол орындалатын бөлімді
бастайды; initialization — резервтелген сөз, модульдің инициализация етуші
(модуль жұмысын бастауға дайындаушы) бөлімін бастайды; finalization
—резервтелген сөз (қорыту), модульдің қорытушы бөлімін бастайды; end
—резервтелген сөз, модульдің соңын көрсетуші сөз.
Сонымен модуль бас тақырыптан және төрт бөлімдерінен құрастырылады,
олардың қалағаны бос болуы мүмкін.
Модуль бас тақырыбы және модульдердің бір-бірімен байланысы
Модульдің бас тақырыбы Unit резервтелген сөзден және оның артынан
жүруші модуль атынан құрастырылады. Delphi ортасының дұрыс жұмыс орындауы
үшін және үлкен программалардың жұмысын жеңілдету ұшін қосылатын
саймандардың мүмкіндіктерін арттыру үшін бұл ат модульдің бастапқы тексті
жайласқан дисктегі файл атымен сай келуі керек. Мысалы, мынадай бас
тақырыпқа ие болайық:
Unit Global;
Сонда сай келген модульдің бастапқы тексті GLOBAL.PAS атауға ие
дискідегі файлда жайласу керек. Модуль аты оның басқа модульдермен және
негізгі программамен байланыстыру үшін қызмет етеді. Бұл байланыс арнайы
сөйлеммен орнатылады:
Uses модульдер тізімі
Осы жерде Uses —резервтелген сөз қолданады ; модульдер тізімі —
байланыс орнататын модульдер тізімі, тізім элементтері болып бір бірінен
үтірмен ажыратылатын модульдер аттары болады, мысалы:
Uses Windows, SysUtils, MyUnit;
Егер Uses жарнамасы қолданса, ол негізгі программаның сипаттама
бөлімін бастау керек. Модульдер басқа модульдерді қолдануы мүмкін. Uses
сөйлемі модульдерде тікелей interface резервтелген сөзден кейін немесе
implementation сөзінен кейін немесе екеуінен кейінде кездесуі мүмкін (яғни
модульде Uses сөзі екі рет қолдануы мүмкін).
Интерфейстік бөлімі
Интерфейстік бөлімі interface резервтелген сөзбен ашылады. Бұл бөлімде
модульдің барлық негізгі программаға және модульдерге жетуге болатын глобал
объектілерінің жарнамалары келтіріледі (типтер, константалар, айнымалылар
және подпрограммалар). Глобал подпрограмманы жарнама еткенде интерфейстік
бөлімінде олардың бас тақырыптары ғана көрсетіледі, мысалы:
Unit Cmplx;
interface
type
Complex = record
re,im: Real
end;
function AddC(x,y: Complex): Complex;
function MulC(x,y: Complex): Complex;
Егер енді басқа модульде төмендегі сөйлемді жазсақ, онда Complex типі
және Cmplx модуліндегі екі процедуралар AddC және Мu1С қолдануға мүмкін
болып қалады:
Uses Cmplx;
Орындалатын бөлім
Орындалатын бөлімі резервтелген implementtation сөзінен басталып
интерфейстіқ бөлімінде келтірілген қосалқы программалардың
(подпрограммалардың) сипаттамаларына ие. Онда модульдің локал объекттері –
жәрдемші типтер, константалар, айнымалылар, подпрограммалар, сонымен
инициализациялайтын бөлімінде қолданылатын белгілер - жарнама етілуі
мүмкін.
Модульдың интерфейстік бөлімінде жарнама етілген подпрограмманы
баяндамалаудан алдын орындалатын бөлімінде басты тақырып келтірілген болуы
керек, онда формал айнымалылардың тізімі (және функция нәтижесінің типі де)
жазылмаса да болады, себебі олар интерфейстік бөлімінде келтірілген. Бірақ
подпрограмма басты тақырыбы тола келтірілсе, яғни формал параметрлердің
тізімімен және нәтижені жариялап та, ол интерфейстік бөлімінде келтірілген
бас тақырыппен сай келуі керек, мысалы:
Unit Cmplx;
Interface
type
Complex = record
re,im: real end;
function AddC(x,y: Complex): Complex;
function MulC(x,y: Complex): Complex;
Implementation
function AddC(x,y: Complex): Complex;
begin
... ...
end;
function MulC; подпрограмманы параметрлер тізімін қайталамастан
баяндау
Begin
... ...
end; end.
Подпрограмма басты тақырыбын қысқа етіп жариялау мүмкін болса да
(жоғарыдағы мысалда - MulC функциясын) мұндай форманы қатал программаларда
қолдану ұсынылмайды: подпрограмма басты тақырыбында параметрлердің тікелей
келтірілуі кодты оқуды оңайлатады да алгоритмдің амалға асыру детальдарін
түсінуге жол ашады. Подпрограмманың анық бас тақырыбын орындаушы бөлімінде
дәл көрсету үшін код редакторының мүмкіндіктерінен пайдаланып, курсорды
интерфейстік бөліміндегі подпрограмма басты тақырыбының қалаған жерінде
орнатып Ctrl+Shift+C клавиштерін басып – кодтық редактор подпрограмма
нұсқасын модуль орындалатын бөлімінде жасайды.
Орындалатын бөлімінде бас тақырып толасымен және дәл қайталану керек.
Егер біз төмендегі бас тақырыпты қолдансақ еді компилятор тез арада функция
бас тақырыбының интерфейстік бөлімінде жарияланғаны мен сай келмеуін
хабарлар еді (екінші параметр y атына ие болуы керек):
function AddC(x, z: Complex): Complex;
begin
... ... ...
end;
Инициализациялаушы және қорытындылаушы бөлімдері
Инициализациялаушы және қорытындылаушы бөлімдер оларды бастаушы
initialization және finalization сөздерімен бірге жиі болмауы мүмкін.
Инициализациялаушы бөлімінде негізгі программаға басқару берілгеннен
алдын орындалатын операторлар жайластырыладыда олар әдетте негізгі
программаны іске салуды дайындайды. Мысалы, оларда айнымалылар
инициализация етіледі, керекті файлдар ашылады ж.б. Қорытындылаушы
бөлімінде негізге программа жұмысын аяқтағандан соң орындалатын операторлар
жайластырылады (оларда программаға берілген ресурстар босатылады, файлдар
жабылады ж.б.). Егер бірнеше модульдер инициалаушы бөліміерге ие болса бұл
бөлімдер кетпе ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz