|
If P then beginDate: 2014-02-27; view: 1428. Begin Type Type Begin Таймер Delphi-дің негізгі ерекшелікретінің бірі - программа формада орнатылған компонеттер (пайдаланушы интерфейсі) оқиғаларын өңдеуіш процедуралар ретінде құралады. Әр компонеттің өзіне тиісті қасиеттері, оқиғалары, әдістері бар. Оны құрылатын программаның алдын ала дайындалған үзіндісі деп қарауға болады. Яғни компоненттер программа көлемін азайтып, құруды жеңілдетеді. Мысал.Компонеттер панелінің Systemбетінде орналасқан TTimerкомпонентін пайдаланып, формада жүріп тұрған электронды сағатты көрсету керек. 1.Жаңа проект ашып, формада Timer1.Label1 компонентерін орнату (Label1-ді ішіне жүріп тұрған сағат көрсетуді жоспарлау); 2.Компонентер қасиеттеріне мәндер меншіктеу:
мұндағы Label1 қасиетіне меншіктелген мәндер формада орнатылған электрондық сағат элементтерін қажетті түрде үлкейтіп, сағатты форма ортасында орналастыру үшін енгізілген Timer1 компоненті - Wіndows-тың жүйелік таймері (WM_TIMER). Ол қажетті мәліметті миллисекөнт өлшемімен периодты түрде бөліп отырады. WM_TIMER генераторын қосу үшін оның Enabled (қол жетерлік, мүмкіндік) қасиетіне true мәні, нақты уақытты бөліп беруді орындайды Interval (аралық) қасиеті мәніне 1 сек меншіктелген (1 сек =1000 миллисек.). Жалпы, TTimer компоненті өңдейтін оқиға біреу ғана – On Timer (уақыт бойынша). Код терезесінде сәйкес процедура дайындамасын шығару үшін Timer1 компонентін екі рет шерту не компоненттің қасиеттер терезесінен On Timer оқиғасын таңдап, оң бөлігін екі рет шерту керек. 3. Оқиғаны өңдеуіш құру: procedure TForm1. Timer1Timer (Sender: TObject); var DateTime: TDateTime; DateTime:= Time; label1.Caption:= TimeToStr(DateTime); end; мұндағыTime – ағымдық уақытта қайтарып қайтарып беретін стандартты функция; TimeToStr – уақытты символдық типке түрлендіру функциясы.
1.18-сурет. Формада орнатылған жүріп тұрған сағат
4. Іске қосу камандасын беру (F9). Формада жүріп тұрған сағат көрінеді (1.18-сурет).
Delphi-де компоненттердің орасан зор. Жоғарыда ТTimer копонентінің атқаратын іс-әрекеті мен OLE-Container компонентінің тек бір әдісін шақыру арқылы орындалатын күрделі жұмыс көрсетілді.
Келесі тарауларда Delphi арқылы терезеде мәзірлер орнату, мәзірлермен жұмыс, берілгендер қоры кестесін дайындау, Delphi-дің анимациялық, мультимедиалық мүмкіндіктері және т.б. қосымшалар құру тәсілдері көрсетілген. Осылардың өзі Delphi-мен жұмыс істеу салаларының орасан көп екеніне көз жеткізетіні сөзсіз.
1.12.Объектілі-бағдарлы программалау тәсілі жөнінде Бейсик, Паскаь сияқты дәстүрлі программалау тілдерінде күрделі, үлкен программаларды дайындаудың кемшілігі – ол үшін программалаушылар тобының көп күш жұмсау қажет болатын. Программалауды жеңілдеу үшін 80-жылдары объект, класс (objekt, klass) ұғымдары енгізіліп, объектілі-бағдарлы програмалау (ОБП) тәсілі негізге алынды. ОБП – Паскальда қолданылатын процедуралық және құрылымдық рпограммалаудың және модуль құрудың дамытылған түрі.Ол берілгендерді белгілі бір абстракциялық деңгейде көрсетіп, модульдік програмалауды пайдаланады. Мысалы Visual Basic програмалау жүйесі объектілі програмалау тәсілін пайдаланып, Q Basic тілі негізінде визуальды түрде құрылған. Паскальдің ОБП тәсілін пайдаланып құрылған жаңа нұсқасы Оbjekt Pascal (Объектілі Паскаль) деп аталады. Delphi осы тілдің негізінде дайындалған. Объектілі программалаудың ыңғайсыздығы – онда дәстүрлі програмалау тәсілдері пайдалана берілмейді, бірақ ондағы көп қиындықтар арнайы тәсілдерді пайдалану арқылы тез шешілген. ОБП тілінің дәстүрлі программалау тілдерінен өзгешелігі – онда, өрістерге қоса, мынадай ұғымдар негізге алынған: класс, объект, өңдеу әсі, объект қасиеті және оқиға. Өрістер –Турбо Паскальдағы жазу (rekord) типінің өрістері сияқты; Қасиеттер – объект сипаттамалары (параметірлурі); әдістер –кластың өрістері мен қасиеттерін өңдейтін процедуралар мен функциялар; объект –түрлі мәндердің қасиеттері мен әдістерінің жиынтығы; оқиға –объект жағдайының өзгеруі. Класс – өрістер, қ.асиеттер және әдістердің бірлігінен тұратын mun, не, жалпы түрде, өңдеу әдістері не қасиеттері ортақ түрде сипатталатын объектілер (нысандар) жиынтығы. Жүйе объект үшін жадтың динамикалық облысынан арнайы орын қалдырады. Яғни, шын мәнінде, объект жай айнымалы емес, ол - жадтың динамикалық облысының кездейсоқ адресін сақтайтын көрсеткіш. Бірақ программада оған Турбо Паскальда пайдалынатын көрсеткіш белгісі (^) енгізілмей жазылады. Объект құрлылған кезде автоматты түрде конструктор(constructor) деп аталатын әдіс шақырылып, ол объектіні динамикалық облыста орналастырады, динамикалық жадтан объектіні арнайы деструктор (destructor) әдісі жояды. Сонымен, ОБП-да пайдаланылатын объект сөзінің екі мағынасы бар: нақты объект (мысалы, геометриялық дене, формада орнатылған компонент, т.б.) және айнымалы (абстрактты, дерексіз объект). Delphi-де екінші объект нақты класс данасын анықтайды. Класқа иерархиялық (бағынышты, жоғарыдан төмен) кластардың енуі де мүмкін. Мысалы, геометриялық фигуралар класы жазық фигуралар және кеңістік фигуралары болатын екі ішкі кластық фигураларға бөлінеді. Ал жазық фигуралар класы төбелері бар (үшбұрыш, көпбұрыш) және төбелерсіз (шеңбер, эллипс) болатын екі ішкі класқа бөлінеді. Объкетілі программалауда барлық кластар иерархиялық түрде негізгі TОbjectкласынан тарайды (Tobject → Tpersistent → Tcomponent → ...). Әдетте негізгі класты аталық, бағыныңқы кластарды туынды не сәбилік кластар деп атайды (Tоbject – барлық кластардың арғы атасы, Tсomponent – барлық иерархиялық компоненттердің жоғарғысы (компонентдеп Tcomponent класының мұрагері болатын класс данасын атайды)). Әр ұрпақ өзінің аталық класының мүмкіндіктерін (өрістерінің, қасиеттерінің, әдістерінің сипаттамаларын) қабылдайды. Мысалы, TОbgect класының Create (бастапқы мән меншіктеу (инициалдау)) әдісі барлық туынды кластарға тиісті (TОjbect класында конструктор Create деп аталады). Әр ұрпақ өзіне қосымша жаңа мүмкіндіктер (сипаттамалар) қосып, келесі ұрпақтарға беруі мүмкін. Delphi-де класс атауын Т әрпінен бастау келісілген. Формаға енгізілген компонент данасы сандық индекс қосылған класс атауын атайды. Туынды кластың сипатталу түрі: < туынды класс атауы> =class (<негізгі класс атауы >); <класс мүшелерінің тізімі> end; var <объект>: <класс атауы>; мұндағы класс мүшелері-өрістер, қасиеттер және әдістер. Мысалы, TForm= class(TForm) Buttonl:TButton; Labell:TLabel; ProcedureButton1Clik ( Sender: Tobjeckt);end; varForml : TForm ; TForm1 = class (TForm)жазуыTForm класының үлгісімен құрылатын жаңа ( туынды ) TForm1класын анықтайды.Form1: TForm1 жолындағы Form1 айнымалысын - класс данасы Программаны дайындау барысында Delphi модульдің Interfaceбөліміне формаға енгізілген компоненттер мен оқиғасы таңдалған әдістерді сипаттауға автоматты түрдеенгізеді, әдістерді іске асыру нұсқаулары модульдің implementation бөліміне қолдан жазылады. Жалпы, Delphi-де классдеп өзіне ұқсасданаларды дайындау үшін үлгі түрінде алынатын, толық түрде дайындалған программа үзіндісін де атайды. Программалаушы бұрын дайындалған класс данасының көшірмесін түрлі программаларға не бір программаның түрлі жерлеріне енгізіп, программалауды және оның көлемін көп жеңілдетуіне болады. Delphiқұрамына жүздеген дайын кластар енгізілген. Әр компонент қатаң түрде тек бір класқа ғана тиісті . Мысалы, Delphi-де форма (TForm)компоненті – Forma класына тиісті, осы типтіайнымалы (Form1 ) – класс объектісі. Класс бөлігі ретінде сипатталып, модульдің Implementation(іске асыру ) бөлігінде мәтіні жазылатын сәйкес процедура – әдіс, мысалы, procedureTForm1. Button1Clik. Форма ішіне орналастырылған TEdit компанентінің Edit1 данасын ( объектісін ) екі рет шерткен кезде пайда болатын оқиғаны өңдеуіш әдісіне ( процедурасына ) мысал : ProcedureTForm1.Edit1Click (Sender: TObject); Edit1.Text:=’сіз редакциялау өрісін екі рет шертіңіз’; еnd; Программаны іске қосу командасы берілген соң компилятор автоматты түрде негізгі модульге енгізілген төмендегі екі әдісті орындайды: Application.CreatForm(TForm1,Form1); Application.Run; Бұлардың біріншісі жадта Form1 объектісін құрады (объектіні инициалдайды), екіншісі Application объектісіне қосымшаның негізгі формасын іске қосуға нұсқау береді (Run). Жоғарыда жазылған процедураның орындалу нәтижесінде форманың Edit1 өрісіне оның Text қасиетіне меншіктелген мәтін жазылады. Ескерту. Белгісіз жағдайда программада әдісті не қасиет орнату командасын иерархиялық түрде жазу қажет, мысалы: Form1.Button1.FontSize:=14; мұндағы иерархияның бірінші объектісі – форма (Form1), екінші объект – формада орнатылған Button1 түймесі, үшінші объект – түйменің шрифт қасиеті; команда – форманың Button1 объектісіне енгізілген FontSize (шрифт өлшемі) айнымалысына 14 мәнін меншіктеу. Яғни, объектілер арасына қойылатын нүкте сәйкес иерархиялық объектіге сілтеме.
1.13. Мұрагерлік. Инкапсуляция. Полиморфизм ОБП-да класс үшін мұрагерлік, инкапсуляция және полиморфизм принциптері енгізілген. Мұрагерлік – программада негізгі класс типінің туынды иерархиялық кластарда да сақталуы. Мысалы, автомобиль жеңіл және жүк машинасы болып бөлінеді. Олардың жұмыс істеу жағдайына байланысты, сипаттамаларына ортақ және бөлек өрістер, қасиеттер мен әдістер енгізілуі мүмкін. Әр қайсысында тип элементтерін толық сипаттау үнемді емес. Бірінің типін аталық (негізгі) етіп қабылдап, екіншісіне қосымша қасиеттерді енгізу жеткілікті. Delphi-дің барлық кластары TObject класына мұрагер. Инкапсуляция (ішінде,біртұтас). Класс өрістер, қасиеттер және әдістердің бірлігінен тұрады. Оларды біртұтас түрінде құрастыру инкапсуляция деп аталады. Әр класс аяқталған толық бір іс-әрекетті бойында сақтайды. Мысалы, TForm класы өз бойында Windows – терезені дайындау үшін барлық қажеттілерді ішінде сақтайды.Кластың мұндай принціпі өзінде инкапсульдайды делінеді. Класта инкапсульданған процедуралар мен функциялар әдістері. Полиморфизм(көп түрлік) – мұрагер кластардың аталық класқа енгізілген әдіс атауы бойынша басқа қасиеттерін енгізілген ұқсас есепті шешуіне болатындығы, яғни түрлі кластарда түрлі әрекеттерді орындайтын әдістерге бірдей атау беру мумкіндігі. Бақылау сұрақтары
Procedure Button1Click (Sender: TObject); var x,y:real; begin x:=Edit1.Text; y:=4*x+7; Label1.Caption:=y end; Процедурада синтаксистік қателер бар. Қателерді жөндеп, программаны іске қосыңыз.
II ТАРАУ. ПРОГРАММАЛАУ ЭЛЕМЕНТТЕР. 2.1. Берілгендер. Берілгендер типтері
Автоматты құрылғының не адамның өңдеуіне бейімделіп дайындалған сандық, символдық, мәтіндік т.б. информацияны (ақпаратты) берілгендер деп атайды. Программаны орындау барысында мәні программа мәтінінде көрсетілген қалпынан өзгермейтін шаманы тұрақты деп мәні өзгеріп отыратын шаманы айнымалы деп,айнымалыға берілген атауды идентификатор деп те атайты-ны бегілі. Delphi Object Pascal программалау тілін басшылыққа алып құрылған. Онда пайдаланы- латын көптеген операторлар (нұсқаулар), кілттік сөздер, айнымалыларды сипаттау және программа құрылымы Турбо Паскаль программалау тіліне негізделген. Delphi-де жиі пайдаланылатын берілгендер типтері:
Integer, Real, Char, String, Boolean (Integer-бүтін, real-нақты, char-символ, string-жол, boolean-логикалық). Бүтін және нақты типті айнымалылардың кейбірі, оларды пайдалану мүмкін аралықтар және жадта бөлінетін байттық орындар 2.1, 2.2-кестелерде көрсетілген.
2.1-кесте
2.Нақты тип: 2.2-кесте
5. Логикалық (бульдік) тип: Boolean . Логикалық типті айнымалы мәндері екеу ғана : True (ақиқат) және False (жалған). Айнымалы атауы үшін тек латын алфавитінің әріптерін және цифрлар мен кейбір басқа символдарды алуға болады, ол үшін кілттік сөздерді алуға және бос орын (‘’) символын енгізуге рұқсат етілмеген. Атау тек әріптен басталуы тиіс. Жүйе атауды оқып шыққан соң мәшине жадында ол үшін арнайы ұяшықтар блогын бөледі де, мәнді сонда сақтайды (яғни, айнымалы –берілгендер сақталатын жад облысы). Айнымалы атауы программаның var бөлімінде сипатталуы міндетті (variable-айнымалы, кілттік сөз). Мысалы прогаммаға енгізілген а1:=521; a2:= 45; a3:= 7; a4:= 5.8; simb:=’k’; меншіктеу командалары үшін айнымалылар мынадай түрде сипатталуы тиіс: Var а1: integer; а2, а3:byte; a4: real; simb:char; Бұндағы а2, а3 айнымалыларын integer арқылы сипаттап, а1,а2, а3: integer; деп жазуға болады. Ескерту. Мәндері integer типті болатын айнымалыларды бір-біріне бөлуде шығатын нәтиже real типі арқылы сипатталуы тиіс.Мысалы, а1:=40; a2:= 5; a3:= а1/а2; мешіктеу нұсқауларының орындалу нәттижесінде b мәні 8-ге тең, бірақ b-ның сипатталуы: b: real;
2.2. Стандартты функциялар. Өрнек. Delphi-де жиі пайдаланылатын стандартты функциялар мен процедуралар көп.Типтерді түрлендіру функциялары 1.5-тақырыпта берілген,математикалық функциялары кейбірі 2.3-кестеде көрсетілген.
Ескерту. 1. Егер х аргументі integer типіне жататын болса, Sqr(x), abs(x) функциялары да integer типті. 2. Round, Trunc функциялары real типті мәндерді integer типіне өзгертеді, ал int-real типінде қалдырады. 3. санды 3 не одан үлкен дәрежеге шығару оларды бір-біріне сонша рет көбейту арқылы орындалады не оны аn =exp(n*Ln(a)) формуласы арқылы есептеу де мүмкін. Өрнек – берілгендермен әрекет жүргізіліп, мән өндірілетін тұжырымды жазу. Арифметикалық өрнектің, меншіктеу операторының, т.б. жазылуы Турба Паскальдағы сияқты, мысалы y:=5/(3*x+1); z1:=’а’; . Мұндай операторлардың орындалуы үшін айнымалы атауы мен өрнек мәнінің типтері бірдей болуы тиіс. Математикалық өрнекке түрлі операциялар енгізілуі мүмкін. Мысалы, мәндерді қосу, азайту, көбейту, бөлу (+,-,*, /), т.б. ; Mod (бүтін сандарды бөлуде шығатын қалдық); Div (бүтін сандарды бүтін бөлу); And (және), or (немесе), not (емес); Chr (13) не #13 – жаңа жолдан бастау коды. Өрнекке енгізілген плюс (+) таңбасы элементтердің типіне сәйкес түрлі әрекеттер орындайды: -сандарды қосу; -жолдық типті берілгендерді біріктіру (жалғастыру). and,or,not – құрама шарттарда пайдаланылатын кілттік сөздер. Программаға енгізілген математикалық өрнекте типтерде түрлендіру функциялары жиі пайдаланылады (1.5.1-тақырыпты қараңыз).
2.3.Программаның жалпы түрде құрылымы. Түсініктеме Программаға ретімен мынадай бөлімдердің енгізілуі мүмкін (программа құрылымы): программа тақырыбы (procedure не function); ен бөлімі (label); тұрақтылар бөлімі (const); айнымалылар бөлімі (var); қосалқы программалар бөлімі (процедуралармен функциялар); операторлар бөлімі. Delphi-де тиянақты бір іс-әрекетті орындайтын программалық элемент жеке процедура арқылы жазылады. Мысалы келесі тақырыпта берілген. Түсініп оқуға жеңіл болуы үшін күрделі программаның қажетті жерлеріне түсініктеме мәтіндер енгізіліп қойылады.Түсініктеме оператор алдына енгізілсе,фигуралық жақшалар ({ }) ішінде орналастырылады.Егер ол оператор соңына енгізілсе,алдына\\ (екі теріс көлденең сызық) символдары жазылады.Соңғысын тек бір жолдық түсініктемеде пайдалану мүмкін.Мысалы, 1.{Трапеция ауданы} s:=(a+b)*h/2; 2. s:=(a+b)*h/2; \\трапеция ауданы Компьютер түсініктемені оқымай тастап кетеді,ол тек пайдаланушыға программаның жазылуын түсінуді жеңілдету үшін қажет. Ескерту.Delphi-де компонеттің Font қасиетінің TimesKas шрифтін іске қосып,қазақша жазылатын мәтіндермен жұмыс істеу мүмкін,бірақ кейбір жағдайларда ол ә,ң,ғ,ү,ұ,қ,ө әріптерін қабылдамайды.Сондықтан кітапта Delphi-ден көшірілген суреттерде жазылған мәтіндерде олар сәйкес а,н,г,у,у,к,о әріптерімен алмастырылған.
2.4 Қарапйым программа.Түс Қарпайым программа құру тәсілі бірінші тарауда көрсетілген болатын(1.5.3-тақырыпты қараңыз).Тағы бір мысал : Форманың label өрістеріне мынадай бір шумақ өлең шығару керек: Өлең сөздің патшасы,сөз сарасы, Қиыннан қиыстырар ер данасы. Тілге жеңіл,жүрекке жылы тиіп, Теп-тегіс жұмыр келсін айналасы. (Абай) 1.File-New Application (Файл-Жаңа қолданба) командасын беріп,жаңа форма ашу; 2.Формаға бір баған бойында Label1…, Label4 және кез келген бос жерінде Button1 компоненттрін орнату; 3.Компонент қасиеттеріне мәндер меншіктеу:
4.Button1 түймесін екі рет шертіп, ашылған код терезесінде түйменің OnClick оқиғасын өңдейтін процедура құру: Procedure TForm1.Button1Click(Sender : TObject); {Ұлы Абай өлеңдерінен } begin Form1.Color:=clWhite; Label1.Caption:=’Өлең сөздің патшасы сөз сарасы,’ Label2.Caption:=’Қиыннан қиыстырар ер данасы.’ Label3.Caption:=’Тілге жеңіл жүрекке жылы тиіп,’ Label3.Caption:=’Теп-тегіс жұмыр келсін айналасы.’ End; Проектіні сақтап, іске қосу.
Процедураға форманы ақ түске бояуға арналған Form1.Color:=clWhite; командасы енгізілді (color-түс; white-ақ). Жалпы , форманы не формаға енгізілген компонеттер мен кекіндерді түрлі түстерде көрсетуге болады . Түстер – обьектілердің Color қасиеттерінің мәндері. Олардың көп пайдаланылатын түрлері: 2.4-кесте. Түстер
Delphi алғашқы рет іске қосылғанда форма сұрғылт түске боялған түрде көрсетіледі. Жоғарыдағы сияқты, форманың не формаға енгізілген компоненттер мен кескіндердің түстерін программа арқылы орнату да мүмкін. Мысалы, Form1.Сolor:=clRed; – форманы қызыл түсті етіп көрсету; Label1.Сolor:=clRed; – Label1 өрісін қызылға бояу; Label1.Font.color:=clRed; – Label1 өрісіне енгізілетін мәтінді қызыл түске бояп көрсету, т.б. Соңғы команда берілмеген жағдайда мәтін қара түсте көрінеді.
2.5. Memo компоненті. Мәтінді Memo терезесінде дайындау Memo компоненті – String List Editor атаулы арнайы терезесі бар мәтіндік редактор. Терезеге көп жолдық мәтінді енгізу және оны редакциялауға болады. Мәтін TStrings класының Lines қасиетінде сақталады. Дайындалған мәтінді форма бетіне шығару қиын емес. Егер, 2.4-тақырыпта берілген өлең сияқты, мәтін көп жолдық болса, оны Memo компонентінің терезесіне енгізген дұрыс. Жұмыс тәсілі:
7. Проектіні сақтау.
2,1-сурет. Memo1 терезесінен көшірілген өлең
2.6 Тармақталу командасы. Құрама оператор Тармақталу командасының қысқа және толық нұсқалары бар. Олардың жазылу түрлері: 1) if P then S //қысқа нұсқа 2) if P then S1 else S2 // толық нұсқа
Мұндағы Р-шарт; S,S1,S2-орындауы тиіс сериялар (бір блоктық операторлар). Егер блок бірнеше операторлардан тұрса, олар бір құрама оператор ретінде қарастырылып, begin- end операторлық жақшалардың ішінде жазылады (мұндағы ескеретін жайт – программа денесі де бір сыртқы блоk ретінде қарастырылады): S1
|