Алгоритмдеу және программалау негіздері

Page 1

АЛГОРИТМДЕУ ЖӘНЕ ПРОГРАММАЛАУ НЕГІЗДЕР І ОҚУ- ӘДІСТЕМЕЛІК ҚҰРАЛ

Алматы 2014


Дәріс сабақтарының қысқаша конспектілері 1- 2 дәрістер. Программалау технологиясы. Негізгі түсінікте р мен ұстанымдар. Программалау технологиясының даму ке зеңде рі Программалау технологиясы, бұл- программалық жабдықтарды жасау процесінде қолданылатын қолданылатын арнайы әдістер мен құр алдардың жиынтығы. Электрондық-есептеуіш машиналар алғаш қолданыла бастаған кезеңнен бастап қазіргі уақытқа дейін оларға арналған программалар жазу негізгі мәселелердің бірі болып саналады. Программалық жабдықтың өмірлік циклы деп, оны құру туралы идея пайда болған кезден бастап, оны жасаған фирманың программалық жабдықты әрі қарай қолдап жетілдіруі тоқтатылғанға дейінгі уақытты айтады. Программаның өмірлік циклының құрылымы ISO IEC 12207: 1995 Information Technologe - Software Life Cycle Processes (Информационные технологии - Процессы жизненного цикла программного обеспечения) халықаралық стандартымен анықталған, мұндағы ISO – International Organization for Standardization (Международная организация по стандартизации) және ІЕС - International Electrotechnical Commission (Международная комиссия по электротех. Аталған стандарт бойынша программалық жабдықты құру келесі процесстерден тұрады: - даярлық жұмыстары; - болашақ жүйеге немесе программаға қойылатын талаптарды анықтау; - болашақ жүйенің немесе программаның архитектурасын жобалау; - программаға қойылатын талаптарға талдау (анализ) жасау; - программалық жабдықты детальды жобалау; - программалық жабдықтың кодын жасау және тестілеу; - программалық жабдықты жүйеге кірістіру; - программалық жабдықты құжаттау; - программалық жабдықты қолдап отыру. Программалау технологиясының даму кезеңдерінің бастапқысы, стихиялы программалау кезеңі болып табылады. Бұл кезеңде, қазіргі жоғары деңгейдегі программалау тілдері болмағандықтан программалар машиналық тілде жазылды, мысалы, 1958 жылы академик С. А. Лебедевтің басшылығымен жасалған, М-20 есептеулерге арналған электронды есептеуіш машинасы номерленген командалардан тұратын программаны орындай алатын болды (3.1-сурет). Операндалар

сақталатын

жедел

жады

Номер

Команда

0100

01

1234

6543

3489

0101

02

4563

0567

3456

0102

05

3489

3456

2987

ұяшықтарының адрестері

3.1-сурет. М-20 ЭЕМ-на арналып жазылған программа мәтіні Алғашқы кезеңдерден бастап-ақ, программистердің алдындағы міндет, жадыдан аз орын алатын және тез жұмыс жасайтын программа құру әдістерін табу керек болды, мысалы, қазіргі программалау тілдерінде сирек болса да қолданылатын GOTO операторы да соның бір көрінісі болып табылады.


Мұндай тәсілдерді қолдану программаның статикалық түрінің динамикалық түрімен сәйкес келмеуіне әкеліп соқтыратын болғандықтан бұл программаларды программисттер өз тілдерінде BS-программалар (Bowl Spaghetti - блюдо спагетти) деп атайтын болған. Кейбір жағдайларда программисттің өзі құрған BS-программасының қатесін өзі таба алмай қалатын кездері болады ( 3.2-сурет):

3.2 -сурет. BS-программа листингісінің фрагменті Программалық жабдықты құрудағы негізгі міндеттердің бірі программаның статикалық күйі, яғни бастапқы жазылуымен (немесе листингісі) оның динамикалық күйі, яғни компьютердегі орындалу тәртібі сәйкес келуі керек немесе программа командалары жазылу реті бойынша орындалуы тиіс. Бұл мәселені шешу үшін жаңа тиімді программалау технологиясын жасау қажет болды. Бұл ізденістің нәтижесінде 70- жылдардың басында IBM корпорациясы ұсынған, теориялық негізін профессор Э. Дейкстра қалаған құрылымдық программалау технологиясы пайда болды. Мұнда, программалар белгілі бір ережелерге сәйкес немесе технологиялық әдістерге негізделіп құрылатын болды. Мұның негізінде күрделі программаларды кішкентай шағын программаларға жіктеп алу яғни «декомпозиция» принципі жатыр. Бұл кезеңнің программалары модульдерден құралды. Модульдерден құралған мұндай программалар көптеген мәселелерді шешкенімен, оның тиімсіз жақтары да болды. Мысалы, неғұрлым подпрограммалар көп болған сайын, ол подпрограммаларда программаға қатысатын кең ауқымды (глобалдық) мәліметтердің өзгеріп кетуі көбейеді, сондықтан әрбір подпрограмма өзі орындалып болған ортақ пайдаланылатын кең ауқымды соң мәліметті қайтадан бастапқы қалпына келтіріп қоюы қажет болды. Сондықтан әрбір подпрограмманың ішінде өзінің локальдық мәліметтерін жасау қажеттілігі туындады (3.3-сурет).


Негізгі программа Глобальды мәліметтер

Подпрограмма1

Подпрограмма2

Локальды мәлімет

Локальды Құрылымдық мәліметпрограм

3.3-

Подпрограмма3

Локальды у элементтері мәлімет


Мысалы квадрат теңдеуді шешу қажет болса, коэффициенттер ғана негізгі программадан алынады, ал дискриминантты табу ол локальдық айнымалы арқылы жасалады. Құрылымдық программалаудағы тағы бір мәселе, бір программаға қатысты әртүрліподпрограммаларды бірнеше программисттің бір мезгілде параллель құра алу мүмкіндігімен байланысты туындады. Әрине, бұл тәсіл программаны құру уақытын біраз қысқарта алады, бірақ, мұнда стихиялы түрде «төменнен жоғары» қарай программалау қағидасы қолданылды, яғни әуелі қарапайым подпрограммалар жасалып, сонан кейін оларды біріктіріп күрделі программалар жасалатын болды. Ал, бұл подпрограммаларды біріктіріп қалған кезде, ортақ ережелер болмағандықтан негізігі программаны алу өте қиын болды, яғни түрліше стильде жасалған подпрограммаларды біріктіру қиынға соқты. Мұны, ХХ ғасырдың, 60-жылдары «подпрограммалаудағы кризис» деп атады. Модульдік программалау (3.4- сурет) көп мәселелерді шешті оның тиімсіз жағы, егер программаға бірнеше модуль қатынасатын болса, онда олардың өзара байланысындағы қателер, яғни интерфейстегі қателерді тек программаның орындалуы кезінде ғана байқау мүмкін болатын болды, себебі модульдер программадан тыс өз алдына бөлек компиляцияланады. Егер программаға қатысатын модульдер саны көп болса, мұндай қателердің бәрінің алдын алу мүмкін емес екені белгілі болды.

Негізгі программа Глобальды мәліметтер

Модуль 1

Модуль 2

Мәлімет

Подпрограмма 1 мәлі мет

Келесі

Модулдік мәлімет

Подпрограмма 2

Подпрограмма 1

Подпрограмма 2

3.4-сурет. Модульдік –қ мәлі мет

ық программалау элементтері мәлі мет мәлі мет

кезеңде,

қолданыла

объектілік

ұс

бастады.

Мұнда

прог

объектілердің жиынтығынан жасалады. Бұл объектілер белгілі бір класқа жатады. Ал ол кластар белгілі бір иерархияға бағынады, және соңғысы алдынғысының барлық қасиеттерін қабылдайды, және олар өзара «оқиғалар» арқылы байланысады. Бұл кезеңдегі ең алғаш имитациялық модельдеу тілі Simula болды. Қазіргі, Delphi, Visual C++, C++ Builder, Visual Basic, Java бұлардың барлығы да RAD технологияларға жатады және объектілік ұстанымды барынша қолдайды. Бұл технологиялардың тиімсіз тұсы - компиляциялаудағы ортақ стандарттардың болмауы. Мысалы, белгілі бір алгоритмге сәйкес Visual C++ ортасында жазылған программаны, сол алгоритм үшін C++ Builder ортасында пайдалану мүмкін емес, яғни сол алгоритмді қайтадан жазу керек болады, сол сияқты объектілік компоненттің бір сипаттамасы өзгертсе болды, онда соған сәйкес программаны да қайтадан компиляциялаудан өткізу қажет болады. Жоғарыда аталған мәселені шешуді программалаудағы компоненттік ұстаным (COMтехнологияның) көмегімен шешуге болатыны қазір белгілі болып отыр. Компненттік ұстанымның мағынасы, мұнда программалар өзара бір-бірімен стандарт түрдегі екілік


интерфейс арқылы байланысады және бинарлық (екілік форматтағы) компоненттерден құралады. Мұндағы объект– компоненттердің кәдімгі объектілерден өзгешелігі оларды динамикалық кітапханаларға немесе exe- файлдарға біріктіріп екілік түрде, бастапқы мәтінсіз (без исходных текстов) тарата беруге болады және оны осы компоненттік технологияны ұстанатын кез-келген тілде пайдалана беруге болады. COM- технологияның қарапайым мысалы, Paint графиктік редакторында жасалған сурет-объектіні Word- мәтіндік редакторындағы құжатқа апарып кіріктіруге болады. 3-4 дәрістер. Программалық жабдықтардың технологиялық сипаттамаларын анықтау Жалпы «технологиялық тиімділік» деп, программалық жабдықтың жобасының сапасын түсінеді. Программалық жабдықты жасауға және оны кейіннен жетілдіріп отыруға кететін еңбек және материалдық ресурстар тікелей жобамен (проектімен) байланысты болады. Барынша жан-жақты, сауатты құрылған жобаны кодтау, тестілеу, жөндеу және және модификациялау да жеңіл болады. Программисттердің жинақталған тәжірибелері бойынша программалық жабдықтың технологиялылығы келесі факторлармен анықталады: - модельдің жан-жақты қарастырылғандығы (проработанность моделей); - модульдердің өзара тәуелсіздігінің деңгейі (уровень независимости модулей); - программалау стилі (стиль программирования); - кодтарды қайталап қолдану дәрежесі (степень повторного использования кодов). Програрммалық жабдықтың моделі неғұрлым толық зерттелген, жан-жақты ескеріліп жасалған болса, онда жалпы есепке кіретін бөлек есептерді (подзадачаларды), мәліметтердің құрылымын және т.б. анықтау да соғұрлым нақтырақ болады, оларды жобалау және жүзеге асыру жеңіл болады, қателер азаяды. Ал модульдер неғұрлым өзара тәуелсіз болса, соғұрлым олардың жүзеге асырылуы, модификациялануы, олардағы қатені іздеу және т.б. жеңіл болады. Программалау стилі деп программаны әрлеу стилін және құрылымдылығын түсінеді. Программаның құрылымдылығы оның оқылуына (читаемость программы) және программалауда қате жіберілмеуіне әсер етеді. ХХ ғасырдың 60-жылдарындағы кризис, яғни спагетти- программалар осы құрылымдылықтың болмауының нәтижесі. Кодтардың қайта пайдаланылу дәрежесі, бұл бұрыннан бар кітапханаларды, кластарды, подпрограммаларды пайдаланумен және жаңадан жасалған кодтарды унификациялаумен анықталады. Бұл барлық жағдайда тиімді болмауы мүмкін, мысалы кодтарды қайта пайдалану жасанды түрде жоғарылатылса, онда жобаның технологиялылығы да соғұрлым төмендеуі мүмкін. Программалық жабдықтың жалпы құрылымы анықталғаннан кейін, әдетте ұстаным таңдалынады: құрылымдық ұстаным немесе объектілік ұстаным немесе компоненттік ұстаным . Ұстаным анықталғаннан кейін, жоғарыдағы айтылған программаның жалпы құрылымын жеке компоненттерге декомпозициялау басталады, бұл декомпозиция мүмкін емес болғанға дейін жүреді. Мұндай декомпозицияның нәтижесі, құрылымдық ұстанымда – подпрограммалар мен модульдердің иерархиясы болып шығады, ал объектілік ұстанымды пайдаланатын декомпозиялауда, класстар түріндегі иерархия алынады. Модуль (Unit) – жеке автономды түрде компиляцияланатын программаның бірлігі. Модульдердің өзара тәуелсіздігі екі критериймен анықталды: жабысу(сцепление) және байланысу (связность). Жабысу – бұл модульдердің бір-бірінен неғұрлым алшақтығын анықтайды. Егер бір модульде екінші модуль туралы ешқандай ақпарат берілмесе, онда олар тәуелсіз, ал олар бірбірі туралы ақпарат сақтайтын болса, онда жабысқан болып есептеледі. Жабысудың келесі түрлері анықталған:


мәндер бойынша (по данным); үлгі бойынша (по образцу); басқару бойынша (по управлению); жалпы мәліметтер орналасқан облыс бойынша (по общей областей данных); ішкі компоненттері, мәліметтері бойынша (по содержимому). Егер «жабысу» жеке-жеке модульдердің бір-біріне алшақтық арақатынасын анықтаса, «байланысу» бір модуль ішіндегі программалық элементтердің өзара байланысу деңгейін анықтайды. Өзара тығыз байланыста болатын элементтерді бір модульге орналастырған тиімді болады, ал егер оларды әртүрлі модульдерге орналастырса модульдердің бір-біріне тәуелділігі артады, бұл қиынырақ болады. Әлсіз байланысқан элементтерді де бір модульде пайдалану оның технологиялылығын төмендетеді. Әзірге байланысудың келесі түрлері анықталған(кему дәрежесіне қарай): - функционалды (функциональная); - тізбектей (последовательная); - ақпараттық (коммуникативная или информационная); - процедуралық (процедурная); - уақытша (временная); - логикалық (логическая); - кездейсоқ (случайная). Программалық жабдықты құруда қолданылатын негізгі екі әдіс: - төменнен жоғары қарай жобалау (восходящий метод); - жоғарыдан төмен қарай жобалау(нисходящий метод). «Жоғары қарай жүру» әдісі бұл бірінші пайда болды, мұнда программаның ең төмені элементтері, сонан соң одан жоғары элементтері т.с. сияқты жасалады. Бұл әдістің тиімсіз жағы, кейін біріктірген кезде компоненттер өзара үйлеспей қалады, программа интерфейсі ең соңынан жасалады, яғни оны алдын-ала көрсетіп алу мүмкіндігі жоқ. Бұл әдіс өндірісте қолданылмайды, әдетте оқыту үшін қолданылады. «Төмен қарай» программалау мұнда программаның бірінші жоғары деңгейдегі компоненттері жобаланады, әрі қарай біртіндеп төменгі деңгейдегі компоненттері жасала береді, мұнда программаның жасалған бөлігін тестілеу үшін әлі жасалмаған төмендегі компоненттерді арнайы модульдермен («заглушка» программа) алмастыра тұрады. Құрылымдық программалауда, жалпы есептеу процесі үш түрлі ұйымдастырылады: ызықтық, тармақталатын және қайталанатын. Бұл процесстерді жүзеге асыру үшін жоғары деңгейдегі программалау тілдерінде арнаулы басқарушы операторлар (if, while) қолданылады, ал бұрынғы төменгі деңгейдегі тілдерде басқару жолға көшу арқылы беріліп, спагетти- программалар шығатын болды. Сонымен, 1960 жылдардан бастап осы үш конструкцияны «базалық құрылымдар» деп қабылдау келісілген, оның жазылуының бірнеше түрлі нотациялары бар: блок-схема, псевдокод, Flow-формалар, Насси-Шнейдерман диаграммасы және т.б. . Мысалы, базалық құрылымдардың блок-схема түріндегі жазылуы (3.5- сурет) : -

иә

жоқ

1-әрекет

Шарт

Шарт иә 1 - Әрекет

2-әрекет

сызықтық

2 - Әрекет

тармақталатын

Әрекет

қайталанатын

жоқ


3.5- сурет. Базалық құрылымдардың блок-схема түріндегі жазылуы Программада құрылымдық әдісті көрсету үшін жоғарыдағы блок-схемаларды пайдалану өте үлкен болады және күрделі алгоритмдерді беруде оның мағынасын жоғалтып алады, яғни детализациялау деңгейі төмендеп кетеді, сондықтан программа құрылымын көрсету үшін блок-схемадан басқа: псевдокодтар, Flow- формалар және Насси-Шнейдерман диаграммалары қолданылады. Псевдокод – бұл алгоритмді мәтін түрінде (текстовая нотация) жазып шығу. Псевдокодтарды жазудың бірнеше варианттары кездеседі. Мысалы, бір нұсқасы төмендегі кестеде берілген (3.6-сурет): Сызықтық <1- әрекет> <2- әрекет>

Тармақталған Қайталанатын егер шарт әзір шарт онда цб 1-әрекет қайталанатын әрекет әйтпесе цс 2-әрекет бітті 3.6- сурет. Базалық құрылымдардың псевдокод түріндегі жазылуы

Flow-формалар құрылымдық алгоритмдерді жазуға арналған графикалық нотация. Flow-форманың әрбір символы – бір басқарушы құрылымды білдіретін төртбұрыш түрінде болады (3.7- сурет), мысалы : әзір шарт

егер

әрекет

1 әрекет

шарт

онда

1 әрекет

2 әрекет

әйт песе

2 әрекет

3 әрекет

сызықтық

тармақталатын

қайталанатын

3.7- сурет. Базалық құрылымдардың Flow-форма түріндегі жазылуы Насси-Шнейдерман диаграммасы (3.8- сурет) , бұл Flow- формалардың жетілдірілген түрі болып табылады, егер Flow- формада бәрі төртбұрыш түрінде берілсе мұнда тармақталу шарттары үшбұрыш түрінде көрсетіледі, мысалы: 1 -әрекет 2- әрекет 3 - әрекет сызықтық

әзір шарт

Шарт иә 1 әрекет

әрекет

жо қ

2 әрекет

тармақталатын

әрекет

дейін шарт

қайталанатын

3.8- сурет. Базалық құрылымдардың Насси-Шнейдерман диаграммасы түріндегі жазылуы


Программаны әрлеу стиліне төмендегілер кіреді: программадағы объектілерге, айнымалыларға, функцияларға дұрыс, мағыналы атаулар беру, мысалы Max_Item, Next_Item; - модульді дұрыс жазу ережесі: модульдің аты, қысқаша сипаттамасы (не үшін қолданылады), кіріс және шығыс параметрлерінің қысқаша сипаттамасы, оған қатысатын модульдер тізімі алгоритмнің қысқаша сипаттамасы немесе шектеулер; - программаның авторы туралы мәліметтер; - идентификациялаушы ақпарат (сериялық номер, нұсқа номері және т.б.) - модульдің мәтінін әрлеу стилі және т.б. Жалпы программалауда программаның тиімділігі оның жылдам орындалуымен және жады көлемін аз пайдалануымен анықталады. Кейбір фрагменттердің дұрыс жазылуы, мысалы, көп қайталануы тиіс циклдер программаның орындалу уақытына тікелей әсер етеді. Қазіргі программалау жүйелерінде программалық жабдықтың тиімділігін оптимизациялауды көбінесе компиляторлар орындайды. Программаның орындалу уақытын азайту үшін қолданылатын тәсілдер де, бұл әсіресе көп қайталанатын циклдарды программалауда кездеседі: - цикл параметрлеріне тәуелсіз шамаларды, өрнектерді циклдан шығару, мысалы: for (int i=0; i<99; i++) for (int j=0; j<99; j++) a[320*i+j]=s[k,l]. -

бұл циклда *(көбейту 320*i) 10000 рет және, s[k,l] элементін шақыру, яғни массивке сұраныс жасау 10000 рет орындалады. Егер осы жазуды келесі түрде жазсақ 320=28 +26 деп алсақ , сонда келесі түрде жазуға болады: skl=s[k,l]; //массив элементін шақыруды цикл сыртына шығару for (int j=0; j<99; j++) { KomAin=j<<8+s<<6 //320*i көбейтуді жылжытумен алмастыру for (int i=0; i<99; i++) a[KomAin+i]=skl; }… - ұзақ «көбейту» амалынан құтылу, ол үшін оларды қосумен, азайтумен, жылжытумен алмастыру; - өрнектерде типтерді түрлендіруді азайту; - шарттарды тексеруде, артық тексерулер жасамау; - массив элементіне индекстері бойынша сұраныс жасамауға тырысу, себебі сол элементтің адресін табу үшін индекстердің мәніне көбейту амалы орындалады, сондықтан жадыдан массив элементтерінің мәнін бір рет оқып алып, оны бір скаляр шамаға меншіктеп, оны керек жерде пайдалана беруге болады. Программаны компиляциялау және жинау кезіндегі қателерден, яғни синтаксистік қатеден басқа программаның орындалу кезінде пайда болатын қателер болады, әдетте, оларды динамикалық қателер деп атайды. Олардың көрінуі де түрліше болады, мысалы жүйе қате туралы хабарлама береді немесе тұрып қалады, түсініксіз нәтижелер де беруі мүмкін. Сондықтан программалауда кетуі мүмкін қателерді алдын ала ескеріп, оларды уақытында табу және жою үшін арнаулы әдістер қолданылады. Мұның барлығы программалауда «ерекше жағдайларды өңдеу» (обработка исключительных ситуации) деп аталатын мәселеге әкеледі. Ерекше жағдайларды өңдеу механизмі арнаулы аппараттық немесе тілдік құралдар


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

жобалаудағы

бастапқы

Программалық жабдықтың өмірлік циклының негізгі кезеңдерінің бірі- есептің қойылуы кезеңі. Мұнда программалық жабдықтың орындайтын қызметі және программалық жабдыққа қойылатын талаптар анықталады. Бұл талаптар екіге бөлінеді: - функционалдық талаптар, яғни бұл болашақта жасалатын программаның қандай жұмыстарды, функцияларды орындайтынын анықтайды; - эксплуатациялық талаптар, бұл болашақ программалық жабдық қандай жағдайларда жұмыс жасайтынын анықтайды. Программалық жабдықтарға қойылатын негізгі эксплуатациялық талаптарға төмендегілер жатады : - дұрыстығы, техникалық тапсырмаға сәйкес жұмыс жасауы ; - универсалдығы – кез-келген мүмкін жағдайларда дұрыс жұмыс жасауы ; - сенімділігі – түрлі қателерден кейін дұрыс жауаптарды қайтара алуы; - тексерілуі - нәтижелерді тексеру мүмкіндігі; - нәтиженің дәлдігі - нәтижелер ауытқуының берілген шамадан аспауы; - қорғалған болуы - ақпараттың құпиялылығын сақтай алуы; - программалармен үйлесімділігі - басқа программалармен үйлесімді жұмыс жасау мүмкіндігі; - аппаратпен үйлесімділігі - кейбір құрылғылармен үйлесімді жұмыс жасау мүмкіндігі ; - тиімділігі - техникалық ресурстарды аз және жылдам пайдалану мүмкіндігі ; - бейімділігі түрлі жағдайларға байланысты жасалатын модификацияларға бейімділігі; - қайта пайдаланыылуы - қайта жүктемей-ақ іске қосыла беруі ; - реентерабелділігі – бірнеше процестерде параллель қолданыла беруі. Техникалық тапсырма- программалық жабдықты құру мақсаттары, оған қойылатын талаптар, жасау уақыты мен кезеңдері, тапсырыс берушіге өткізу мерзімі және т.б. көптеген мәліметтер қамтылған программалық жабдық туралы толық мәлімет беретін құжат. Техникалық тапсырманы жасауға тапсырыс беруші де және оны орындаушы да қатысуы керек. Ол келесі бөлімдерді қамтиды: - кіріспе; - программалық жабдықтар жасаудың қажеттілігін негіздеу; - программалық жабдықтардың қызметі; - программалық жабдықтарға қойылатын талаптар; - программалық жабдықтардың құжаттарына қойылатын талаптар; - техникалық-экономикалық көрсеткіштер ; - құру кезеңдерімен стадиялары; - программалық жабдықты қабылдау және бақылау тәртібі. 6,7-8 дәрістер. Құрылымдық ұстанымға негізделген программалық жабдықтардың ерекшеліктері Программалық жабдықтың өмірлік циклындағы маңызды кезеңнің бірі – бұл программалық жабдықтарға қойылатын талаптарға анализ жасау негізінде программалық


жабдықтардың ерекшелігін немесе спецификациясын анықтау болып табылады. Спецификация (specify-дәл анықтау- точно определять, spesisication- детальдары- детали, specific- ерекше сипаттамалары- особый отличительный характер) – бұл жасалатын программалық жабдықтардың және оған қойылатын шектеулердің формалды түрдегі дәл сипаттамалары. Сонымен, программалық жабдықтардың спецификациясы, бұл программалық жабдық туралы дәл және толық сипаттама. Спецификация негізгі екі бөлімнен тұрады: - функционалдық бөлім, программалық жабдықтардың орындайтын функцияларын сипаттайды; - эксплуатациялық бөлім, техникалық құрал-жабдықтарға, ақпараттық қауіпсіздікті сақтауға қойылатын талаптарды анықтайды. Спецификацияның толықтығы, мұнда болашақ жасалатын программалық жабдықтарға қатысты барлық нәрселер ескерілуі керек, яғни программалық жабдықтарды жасаушы үшін (разработчик) ешқандай кедергі, қосымша мәселе болмауы керек. Спецификацияның дәлдігі, бұл – спецификация тапсырыс (заказчик) беруші мен оны орындаушы (разработчик) тарапынан бірдей мағынада қабылдануы керек. Программалық жабдықтардың спецификацияларын көрсету үшін кәдімгі табиғи тілдер жарамайды. Сондықтан дәл спецификацияларды көрсету үшін арнайы формальды модельдер қолданылады. Спецификацияларды анықтау кезеңіндегі формальды модельдерді екі топқа бөледі: ұстанымдарға (құрылымдық, объектілік) тәуелді және тәуелсіз. Классификациясы төменде 3.9- суретте берілген. Программалық жабдықтардың спецификациясы жан-жақты көрсету үшін әдетте бірнеше модельді қатар пайдаланады. Спецификацияларды талдау және анықтау кезеңдерінің модельдері

Ұстанымға тәуелсіз модельдер Күйлер ауысуының диаграммалары

Пәндік облыстың математикалық моделі

Ұстанымға тәуелді модельдер

Құрылымдық ұстаным

Объектілік ұстаным

Функциональдық диаграммалар

Вариант қолдану диаграммалары

Мәліметтер ағыны диаграммалары

Класстар диаграммасы

Мәліметтер қатынасының

Әрекеттер диаграммасы


3.9- сурет. Спецификацияларды анықтау кезеңіндегі формальды модельдер классификациясы Құрылымдық ұстанымға негізделген программалық жабдықтарды құруда, талдауда және жобалауда негізінен келесі модельдер элементтері қолданылады: - мәліметтер ағынының диаграммасы (DFD – Data Flow Diagrams) бұл ақпарат көзі мен оны қабылдаушының арасындағы әрекетті жүйенің (программалық жабдықтардың) процесі түрінде сипаттайды; - «мәнді байланыс» диаграммасы (ERD – Entity – relationship diagrams) жүйенің (программалық жабдықтардың) деректер қорын сипаттайды; - күйлер ауысуының диаграммасы (STD –State Transition Diagrams) жүйенің уақытқа байланысты күйінің өзгеріп отыруын сипаттайды; - процестердің спецификациясы, оны көрсету үшін әдетте тексттер, псевдокодтар, Flow-формалар , Насси-Шнейдерман диаграммалары қолданылады; - терминдер сөздігі – бұл спецификациялы беруде қолданылатын терминдер, қысқартылған сөздерге берілетін түсініктемелер. Күйлер ауысуының диаграммасы (диаграмма переходов состоянии) – бұл ақырғы автоматтардың графиктік формасы болып табылады. Ақырғы автоматтар (конечные автоматы)- техникалық құрылғының дербес іс-әрекетін (детерминированное поведение) модельдеу үшін қолданылатын математикалық абстракциялық ұғым, автоматтар теориясында анықталған. Күйлер ауысуының диаграммасының қызметі басқару кезіндегі оның реакцияларын немесе поведениелерін (спецификацияны анықтау кезіндегі) көрсету болып табылады. Мұнда басқарушы сигнал немесе қолданушының командасы болуы мүмкін. Бұл команданы алғаннан кейін, жүйе оған жауап ретінде бір әрекет жасайды, яғни сол күйін сақтап қалады, не болмаса басқа күйге ауысады. Автоматтар теориясына сәйкес, мұнда диаграмма тұрғызу үшін, анықталады: бастапқы күй (терминальное состояние); әсер етуші басқарушы сигнал (немесе көшу шарты); орындалатын әрекет немесе бірнеше варианттар. Функционалдық диаграммалардың қызметі программалық жабдықтар құрамындағы функциялардың өзара байланысуын, иерархиясын көрсетеді. Функционалдық диаграммалардың функционалдық модельдер деп те атайды. Функционалдық моделдің көп тараған түрінің бірі SADT (Structured Analysis and Design Technigue –технология структурного анализа и проектирования). Оны 1973 жылы Д. Росс ұсынған. Функционалдық диаграммаларды тұрғызу келесі қағидаларға негізделген : - әрбір функция бір блок ретінде қарастырылады; - әрбір блок үшін бастапқы мәлімет, басқарушы команда, функцияны орындаушы механизм (программалық жабдық немесе техникалық құрылғы) және нәтиже анықталады. Функционалдық диаграммадағы мәлімет, басқарушы команда, функцияны орындаушы механизм және нәтиже барлығы сызықтар (дугалар) түрінде беріледі, мысалы: функция

Бұл сызықтар іс жүзінде мәліметтердің жиынтығы, нәтижелердің жиынтығы, немесе басқарушы командалар жиынтығы болып табылады (3.10- сурет), мысалы:

басқарушы команда

функция бастапқы мәлімет

нәтиже


3.10- сурет. Қарапайым функционалдық диаграммны кескіндеу Блоктар диаграммада байланысу реті бойынша сатылы түрде орналасады. SADT диаграммаларда блоктар байланысуының келесі түрлері бар: - кіріс блоктың шығыс дугасы келесі орындалатын блоктың кіріс дугасы болады:

Функция 1

-

Функция 2

басқарушы блоктын шығыс дугасы келесі блоктын басқарушы дугасы болады:

Функция 1

-

кіріс бойынша кері байланыста кіріс дугасы болады:

Функция 1

-

Функция 2

басқару бойынша кері байланыста кейінгі блоктың шығыс дугасы алдыңғы блок үшін басқарушы дуга болады:

Функция 1

-

кейінгі блокт ын шығыс Функция 2 дугасы алғашқы блоктың

Функция 2

шығыс-орындаушыда алғашқы блоктың шығыс дугасы келесі блоктың орындаушы механизмі болады: Функция 2 Функция 1

9,10-11 дәрістер. Объектілік ұстанымға негізделген программалық жабдықтардың ерекшеліктері және оларға қойылатын талаптар Объектіге бағдарланған программалау – бұл программалық жабдықты, қандай да болмасын кластың өкілі болып табылатын, объектілердің жиынтығы түрінде құратын программалау методологиясы. Объектіге бағдарланған жобалау – бұл құрылатын ақпараттық жүйенің (немесе программалық жабдықтың) барлық статикалық және динамикалық модельдерін объектілі декомпозициялау процесі мен модельдердің логикалық, физикалық тұрғыдан беру тәсілдері негізінде жобалау методологиясы. Объектіге бағдарланған талдау – бұл жобаланатын жүйеге қойылатын талаптар, пәдік облыстағы анықталған кластар мен объектілер тұрғысынан қарастырылатын методология. Объектіге бағдарланған ұстанымның концептуалдық негіздеріне объектіге бағдарланған ұстанымның моделі жатады. Объектілік модельдеудің негізгі элементтері: абстаркциялау, инкапсуляция, модульділік және иерархия. Қосымша элементтері: типтелу, паралеллизм және тұрақтылық.


Абстракциялау – бұл қандай да болмасын объектіні, өзге объектілерден ажырататын белгілері, сипаттамалары және т.б. арқылы бөліп алу, жалпы абстракциялау объектінің сыртқы ерекшеліктеріне негізделеді. Объектіге бағдарланған ұстанымда, берілген объектінің дұрыс абстракциялануы, жобалаудың негізгі міндеттерінің бірі болып саналады. Инкапсуляция – бұл объектінің, өзінің ішкі элементерінің, бір бірінен ажыратылу процесі. Бұл процесс кезінде объектінің ішкі құрылымдары мен оқиғалары бір- бірінен дұрыс ажыратылады. Инкапсуляция объектінің интерфейсін қорғау үшін қолданылады немесе объектілік ұстанымда класстың ресурстарын, тек оның өзінің ғана пайдалануын қолдайды. Абстракциялау мен инкапсуляция бірін бірі толықтырады. Модульділік – бұл программалық жабдықтың декомпозициялану кезінде өзара байланысқан, бірақ өте әлсіз байланысқан модульдерге бөліну қасиеттері. Инкапсуляция мен модульділік қасиеттері абстракцияларды бір- бірінен ажыратады. Иерархия – бұл жүйедегі абстракцияланудың бір- біріне бағынышты түрде реттеліп орналасуын тағайындайды. Бұл күрделі жүйедегі класстардың құрылымы (иерархиясы). Мысалы, жай және көп қабылдаушылықты айтуға болады. Типтелу – бұл абстракцияға байланысты класстарды бір бірінен ажырату үшін қойылатын шектеулер. Паралеллизм – бұл объектінің актив және пассив түрде болуын көрсетеді. Тұрақтылық – бұл объектінің өмір сүру уақытын көрсетеді. Объектіге бағдарланған ұстанымның негізгі түсініктері: объект, класс. Объект класстың экземпляры тұрғысынан қарастырылады. Объектінің күйі, оқиғасы және жеке қасиеттері болады. Объектіге әсер етуді әдіс деп атайды. Класс қабылдаушылық пен инкапсуляция және полиморфизмді (абстракцияны) қанағаттандыратын құрылымдық жиынтық тип ретінде қабылданған.. Объектіге бағдарланған анализ бен жобалау әдістері модельдеу тілі мен модельдеу процестерінің сипаттамаларынан тұрады. Модельдеу тілі жобаның сипаттамасын беру үшін қолданылатын нотация. Нотация – бұл модельдерде қолданылатын графиктік объектілердің жиынтығы. Модельдеу тілінің синтаксисі де нотациямен анықталады. Процесс – бұл жобаны құру кезінде жасалатын қадамдардың сипаттамалары. UML (Unified Modeling Language) – бұл 1980-1990 ж. қолданылып келген, объектіге бағдарланған анализ бен жобалаудың орнына келген әдіс болып табылады. UML алу үшін бірнеше авторлардың әдістерін біріктіруге тура келді: Boosh – авторы Гради Буч; OMT (object modeling technique) – авторы Джеймс Рамбо; OOSE (object oriented SoftWare engineering) – авторы Ивар Якобсон. UML тілінің негізгі мақсаттары мен мүмкіндіктері: - қолданушыға түсінікті болатын визуальды модельді құру; - модельдегі базалық концепциялардың кеңейтуге бейім болуы; - программалау тілдеріне, құру процессіне тәуелсіз болуы; - модельдеу тілінің формальды негізде болуын қамтамасыз етеді; - объектілік бағдарланған жабдықтар нарығына стимуляция жасайды; - практикалық тәжірибелердің ең жақсысын біріктіру және тарату; UML-дың пайда болу және даму тарихына сәйкес келесі нұсқалары белгілі (3.11- сурет. Википедия бойынша 2011 жылғы мәлімет): Нұсқа

Қабылданған уақыты

1.1

ноябрь 1997[1]


1.3

март 2000[2]

1.4

сентябрь 2001[3]

1.4.2.

июль 2004[2]

1.5

март 2003[4]

2.0

июль 2005[5]

2.1

Заңды түрде қабылданбаған [2]

2.1.1

август 2007[6]

2.1.2

ноябрь 2007[7]

2.2

февраль 2009[8]

2.3

май 2010[9]

2.4 beta 2

март 2011[10]

3.11 –сурет. UML-дың нұсқалары туралы деректер UML 1.4.2 нұсқасы халықаралық ISO/IEC 19501:2005 стандартының негізі болып саналады. UML –де қолданылатын негізгі диаграммаларды келесі топтарға бөліп қарастырады (3.12- сурет. Википедия бойынша 2011 жылғы мәлімет): Құрылымдық диаграммалар Кластар диаграммасы Компоненттер диаграммасы Композит/ құрама құрылымдар: Кооперация диаграммасы (UML2.0) немесе келісімді үйлестіруші диаграмма Таратылған диаграмма Объектілер диаграммасы Пакеттер диаграммасы Профильдер диаграммасы (UML2.2) Өзгеру диаграммалары Қызмет диаграммасы Күй ауысу диаграммасы Прецеденттер диаграммасы

Structure Diagrams: (Ағылшын тілінде) Class diagram Component diagram

Структурные диаграммы: (Орыс тілінде) Диаграмма классов Диаграмма компонентов

Composite structure diagram: Композитной/составной Collaboration (UML2.0) структуры: Диаграмма кооперации (UML2.0) или диаграмма сотрудничества Deployment diagram Диаграмма развѐртывания Object diagram Диаграмма объектов Package diagram Диаграмма пакетов Profile diagram (UML2.2) Диаграмма профилей (UML2.2) Behavior Diagrams: Диаграммы поведения: Activity diagram Диаграмма деятельности State Machine diagram Диаграмма состояний Use case diagram Диаграмма прецедентов (вартов)


Өзара әрекеттесу диаграммасы: -Коммуникация диаграммасы (UML2.0) / кооперация диаграммасы (UML1.x) -Өзара әрекеттесуді шолу диаграммасы (UML2.0) -Реттілік диаграммасы - Синхронизация диаграммасы (UML2.0)

Interaction Diagrams: - Communication diagram (UML2.0) / Collaboration (UML1.x) - Interaction overview diagram (UML2.0) - Sequence diagram - Timing diagram (UML2.0)

Диаграммы взаимодействия: -Диаграмма коммуникации (UML2.0) / Диаграмма кооперации (UML1.x) -Диаграмма обзора взаимодействия (UML2.0) -Диаграмма последовательности -Диаграмма синхронизации (UML2.0)

3.12- сурет. UML –де қолданылатын негізгі диаграммалар Мысалы, UML 2.3 нұсқасында қолданылатын диаграммалар «құрылымын» UMLдегі «класстар диаграммасын» (class diagram) пайдаланып келесі түрде көрсетуге болады (3.13 - сурет). Варианттар диаграммасы – бұл ұғымды Ивар Якобсон енгізген. Бұл варианттар диаграммасы жүйенің қандайда болмасын сыртқы әрекетіне жауап беруі. Әдетте, варианттар диаграммасы жүйе мен қолданушы арасындағы қатынасты сипаттайды. Программалық жабдықты жобалауда варианттар диаграммасы қолданушының қандай функцияларды орындау керектігін анықтау үшін жасалады. Мұнда байланыстың екі түрі қолданылады: USES (қолдану), EXTENDS (кеңейту) CASE құралдар варианттар диаграммасында детализацияны әр түрлі деңгейде қолданады. Мысалы: Якобсон он адам бір жыл жасайтын жобалардағы варианттар саны 20дан аспау керек деп есептейді.


3.13- сурет. Диаграммалар құрылымы Класстар диаграммасы – жүйедегі класстардың статикалық құрылымын модельдеу үшін және класстар арасындағы байланысты көрсету үшін жасалады. Класстар диаграммасы объектіге бағдарланған ұстанымдағы негізгі диаграмма болып табылады. Класстар диаграммасының қызметі: жүйедегі объектілердің типін анықтау және олардың арасындағы байланысты көрсету болып келеді. Байланыстың статикалық екі түрі қолданылады: ассосация және подтиптер (тума типтер). Бұлардан басқа класстар диаграммасының элементтеріне атрибуттар, операциялар және объектілер арасындағы шектеулер жатады. Класстар диаграммасын жобалаудан бұрын, ол диаграмманың қандай мақсатта қолданылатынын анықтап алу керек. Класстар диаграммасын жобалаушы үш түрлі мақсатта қолдануы мүмкін: - концептуалдық аспект – мұнда класстар даграммасы зерттелетін пәндік облыстағы негізі ұғымдарды анықтайды. Бұл ұғымдар болашақта құрылатын класстарға сәйкес болу керек, бірақ іс жүзінде ол барлық уақытта бірдей орындалмайды. Сондықтан концептуалдық модель болашақ ақпараттық жүйемен әлсіз байланыста болады және ол программалау тіліне тәуелсіз болады; - спецификациялық аспект – мұнда құрылатын диаграмма ақпараттық жүйенің (программалық жабдықтың) интерфейсі деңгейінде жасалады. Класстың өзінің ішкі құрылымы қарасытырылмайды; - жүзеге асыру аспектісі (реализация) – мұнда класстар диаграммасы ақпараттық жүйеге (программалық жабдыққа) қатысатын класстарды ішкі құрылымдарымен қоса анықтайды. Бұл аспекті программистер үшін негізгі диаграмма болып табылады. 12- дәріс. Қолданушының интерфейсін құру. Қолданушы интерфейстерінің түрлері және оларды құру кезеңдері


Программалау технологиясында, қолданушының компьютердің программалық және аппараттық жабдықтарымен жұмыс жасау үшін пайдаланатын әдістері мен құралдарының жиынтығын «қолданушының интерфейсі» деп атау келісілген. Қазіргі заманауи ақпараттық жүйелердің жұмыс жасау мүмкіндіктері қолданушының интерфейстерімен тығыз байланысты. Мысалы, қандай да болмасын объектінің (компьютер, программалық жабдық немесе подпрограмма) интерфейсі өзгермейтіндей тұрақты болса, онда объектінің өзін өзгертуге көбірек мүмкіндік болар еді, яғни оның басқа объектілермен (мысалы, қолданушымен) қарым-қатынас қағидалары қарастырылмайды. Есептеу жүйелеріндегі интерфейстерді компьютерлік техникаға қатынас тұрғысынан келесі топтарға бөледі (3.14- сурет): - аппараттық интерфейс; - программалық интерфейс; - қолданушының интерфейсі.

Есептеу жүйелеріндегі интерфейстер

аппараттық интерфейстер:

программалық интерфейстер:

Желілік интерфейс Желілік шлюз Шиналар

қолданушының интерфейстері: Командалық жол интерфейсі Графиктік интерфейс

Диалогтық интерфейс Кәдімгі тілдегі интерфейс Тактильдік интерфейс Процедураларды қашықтан шақыру Дыбыстық интерфейс СОМ- интерфейс Нейрокомпьютерлік Объектіге-бағдарланған программалаудағы интерфейс интерфейс 3.14- сурет. Есептеу жүйелеріндегі и нтерфейстер Функция интерфейсі Қосымшаны программалау интерфейсі (АРІ)

Қолданушының интерфейсі барынша қолданушыға жақын болуы қажет, себебі қолданушының назары программада емес, керісінше өзінің жасап жатқан құжатында болуы керек. Мысалы, жиі қолданылатын командалардың бірі 2-3 деңгейлерде яғни басқа бір ішкі мәзірлерде орналасса , оны іздеуге қолданушының біраз уақыты кетіп отыратын болса, онда интерфейсті қолданушыға жақын немесе ыңғайлы деп айтуға келмейді. Программалық жабдық үшін интерфейстің маңызы өте зор. Программа қанша жерден жақсы бола берсін, егер онымен жұмыс жасау ыңғайсыз болса, онда оны қолданушы қабылдай алмайды. Қолданушы интерфейстерінің қазіргі көп тарағаны- графиктік интерфейс. Мысалы, Windows операциялық жүйесінің көп таралуының бір себебі, оның қолданушыға ыңғайлы графиктік интерфейсінің болуы деп айтылып жүр. Қолданушының графиктік интерфейсі


(Graphical User Interface, GUI) 1970- ші жылдардың ортасында, Xerox Palo Alto Research Center-де (PARC), Smalltalk ортасында жұмыс істейтін Alto және Star машиналары үшін жасалған алғашқы жұмыстардан басталды. Кейде оны «визуальды интерфейс» немесе «терезелі графикалық орта» деп атайды. Қазіргі заманауи жүйелердің көпшілігінде, мысалы, Microsoft Windows, Mac OS, Solaris, GNU/Linux, NeXTSTEP, OS/2, BeOS, Android, iOS, Bada, MeeGo жүйелерінде қолданушының графиктік интерфейстері пайдаланылған. Қолданушының графиктік интерфейсі графиканы растрлық экран дисплейінде қолдануға мүмкіндік береді. Графика экранда элементтердің нақты орнын көрсетеді, ақпаратты берудің визуальды ортасы және көрнекі графика және форматталған мәтіндер барлығы бірігіп «не көрсең соны аласың» (WYSIWYG - What you see is what you get) мүмкіндігін береді. Қазіргі қолданушылар компьютерді үйрену және жаңа программаларды меңгеру үшін көп уақыт шығындамайды. Windows үшін жазылған программалық жабдықтардың көбінде дерлік бір типтес қолданушы интерфейстері пайдаланылатындықтан, олар қолданушы үшін бір мағынада қабылданады. Windows жүйесі осыған көмектеседі. Windows үшін жазылған программалық жабдықтардың қолданушыға арналған интерфейсінің негізгі элементтері: терезелер, мәзірлер, сұхбат терезелері, суретті батырмалар және т.б. болып табылады. Қолданушының интерфейсін құру кезеңдері программалық жабдықты құзу кезеңдерімен сәйкес келеді және есептің қойылуы, талаптар мен спецификацияларды анықтау, жобалау, жүзеге асыру, тестілеу мен жөндеу секілді кезеңдерді қамтиды. 13- дәріс. Программалық жабдықтарды тестілеу. Программалық жабдықтардың сапасын тексерудің түрлері Программалық жабдықтың өмірлік циклының бір кезеңін програмалық жабдықты тестілеу процесі құрайды. Программалық жабдықтарды тестілеу өте көп уақытты қажет ететін күрделі де ұзақ процесс. Программалық жабдықты тестілеудің мақсаты бұл құрылған программаның бастапқы техникалық тапсырмаға сәйкес толық орындалуын тексеру және оны қолданысқа енгізгенге дейін мүмкін болатын қателерін табу болып есептеледі. Тестілеу процесі программалық жабдыққа қатысты жасалатын валидация және верификация процесстерінің құрамына кіреді. Халықаралық ISO 9000:2000 стандарты бойынша, валидация (validation)- программалық жабдықтың қолданушының немесе тапсырыс берушінің нақты талаптарын дәл және толық қанағаттандыратындығын объективті фактілер негізінде дәлелдеу үшін жүргізілетін процесс. Верификация (verification)- программалық жабдықтың сапасына қатысты ішкі ережелер мен стандарттарға спецификациялардың сақталған- сақталмағандығына тексеру үшін жасалады. Мысалы, программалық жабдықты орындауға жіберіп, белгілі бір мәндер үшін шыққан нәтиженің дұрыс-бұрыстығын тексеру валидация процесіне жатады, ал программаны орындауға жібермей-ақ, оның кодын рецензиялау, синтаксистік жазылуларын тексеру және т.б. верификациялау процесіне кіреді. Қазіргі уақытта программалық жабдықтардың сапасын тексеру үшін жүргізілетін тестілеу процесстерін классификациялау бірнеше категориялар бойынша жасалған. Программалық жабдықтың өзін тестілеу объектісі ретінде қарастыратын тестілеу процесстеріне келесілер жатады: - функционалдық тестілеу (functional testing); - өнімділікке тестілеу (performance testing); - жүктемелерге тестілеу (load testing); - стресс-тесілеу (stress testing); - тұрақтылыққа тестілеу (stability / endurance / soak testing);


-

юзабилити-тестілеу (usability testing); қолданушының интерфейсін тестілеу (UI testing); қауіпсіздікке тестілеу (security testing); локализацияға тестілеу (localization testing); үйлесімділікке тестілеу (compatibility testing).

Тестілеу процесінің автоматтандырылу дәрежесіне байланысты келесі топтарға бөлінеді: -

қолмен тестілеу (manual testing); автоматтандырылған тестілеу (automated testing) ; жартылай автоматтандырылған тестілеу (semiautomated testing).

Тестілеу процесінде қолданылатын теориялық әдіс- тәсілдерге немесе механизмдерге байланысты төмендегідей түрлері анықталған : «қара жәшік» әдісі бойынша тестілеу (black box); «ақ жәшік» әдісі бойынша тестілеу (white box); «сұры жәшік» (grey box). Программалық жабдықтың құрамына кіретін компоненттерінің бір- біріне тәуелсіздігін немесе өзара байланыстарын тексеру мақсатында жүргізілетін тестілеу түрлері: - компоненттік (модульдік) тестілеу (component/unit testing); - интеграциялық тестілеу (integration testing); - жүйелік тестілеу (system/end-to-end testing). Программалық жабдықты уақытқа қатысты алғанда тестілеудің төмендегідей түрлері қолданылады: - альфа-тестілеу (alpha testing) - қабылдау кезіндегі тестілеу (smoke testing) - жаңа қызметтерге тестілеу (new feature testing) - регресстік тестілеу (regression testing) - тапсыру кезіндегі тестілеу (acceptance testing) - бета-тестілеу (beta testing) Программалық жабдықтардың сапасын көтеру мақсатында жыл өткен сайын тестілеу процестерінің қатары жаңа әдістермен, жабдықтармен толығып келе жатқанын байқауға болады. -

14-дәріс. Программалық жабдықтарды жөндеу. Қателердің классификациясы Программалық жабдықты құру кезіндегі маңызды кезеңдердің бірі – программаны жөндеу кезеңі. Программаны жөндеу (Debugging -отладка) кезінде, программадағы қателер табылып, бөліп алынып жөнделеді. Программаны жөндеу үшін арнайы жөндеуші- программалар (отладчиктер) қолданылады. Программалау жүйелерінде кіріктірілген жөндеуші- программалар болады. Олар программистке программаны бақылап отыру мүмкіндігін береді, яғни қажет болған кезде тоқтату , қайта жүктеу, қадамдап орындау және т.б. сияқты әрекеттерді орындауды ұйымдастырады. Программист өзінің құрған қосымшасы орындалған кезде болуы мүмкін қателерді анықтап, ол қателер бола қалған жағдайда программаның қалай жұмыс жасауы керек екенін алдын-ала қамтамасыз етуі тиіс. Жалпы программалау кезінде жіберілетін қателерді келесі топтарға бөледі: синтаксистік қателер, логикалық қателер және динамикалық қателер.


Синтаксистік қателерге программа мәтінін теру кезінде операторлардың қате жазылуы, операторларды айыру белгілерінің қойылмауы, программа соңының көрсетілмеуі және т.б. жатады. Әдеттте синтаксистік қателерді анықтау компилятордың қызметіне жатады, яғни программа синтаксистік қатесі жөнделмейінше компиляциядан өтпейді. Логикалық қателер, есеп алгоритмінің дұрыс құрылмауынан болады. Логикалық қатесі бар программалар түсініксіз жұмыс жасайды, мысалы, цикл алгоритмінде циклдан шығу шарты дұрыс құрылмаған болса, онда программа ешбір тоқтамастан қайталанып, нәтиже бермей жұмыс жасауы мүмкін, сол сияқты, есептеу алгоритмдерінде көбейтіндінің бастапқы мәнін нольге тең деп алғанда нәтижеде үнемі ноль шығуы мүмкін және т.б. . Мұндай қателерді программаны тестілеу, яғни әртүрлі мәндер үшін орындап көру арқылы табады. Динамикалық қателер бұл- программаның орындалуы кезінде пайда, болып оның орындалу тәртібінің бұзылуына немесе нәтижесіз тоқтап қалуына әкеліп соқтыратын қателер. Динамикалық қателерді немесе «орындау уақыты кезіндегі қателер» («ошибка времени выполнения», Runtime errors) деп те атайды. Динамикалық қателерге, мысалы, есептеу кезінде бөлшек бөлімінің нольге тең болуы, түбір астында теріс сан кездесіп қалуы, жады ресурстарының жетпей қалуы, программада көрсетілген маршрут бойынша файлдың табылмай қалуы, принтерде қағаздың бітіп қалуы және т.б. көптеген нәрселер жатады. Қосымшалардағы осындай динамикалық қателерге байланысты болатын жағдайларды «ерекше жағдайлар» деп атап, және олармен жұмыс жасау үшін программалау тілдерінде «ерекше жағдайларды өңдеу» түсінігі енгізілген. 15-дәріс. Программалық жабдықтарды құжаттау. Құжаттаудың ортақ жүйесі Программалық жабдықтарды құжаттау оның өмірлік циклындағы маңызды процесстердің бірі болып есептеледі. Программалық жабдықтың құжаттарына баспа түрінде немесе цифрлық түрде дайындалған программаны құрушыға арналған құжаттар, қолданушыға арналған нұсқаулықтар, анықтамалықтар, диалог түріндегі электрондық нұсқаулықтар және т.б. жатады. Қазіргі уақытта программалық жабдықтың құжаттарын қолданылу саласына қарай келесі топтарға бөліп жүр: - архитектуралық – жобалаушы құжаттар, негізінен программаны құрушыларға арналған. Мысалы, архитектура – жобалаушы құжаттарда программисттер деректер құрылымының не себепті класстар түрінде анықталғанын, немесе паттерннің не үшін таңдалғанын, немесе оларды жетілдіру үшін не істеу керек екенін баяндай алады, мұндай мәселелер программалық жабдықтың техникалық құжатына да, қолданушының құжатына да кірмейді; - техникалық құжаттар программада қолданылған алгоритмдерді, қолданушының интерфейстерін, программаның кодын анықтайтын техникалық сипаттағы құжаттар болып табылады. Қазіргі уақытта программалық жабдықтың техникалық құжатын жасаудың автоматтандырылған жүйелері (мысалы, Doxygen, javadoc, NDoc сияқты құжаттандыру генераторлары) қолданылып жүр; - қолданушының құжаттары программалық жабдықты кәсіби қызметтерінде пайдаланатын қолданушыларға арналады. Бұл құжатта программалық жабдықты қалай пайдалану қолданушыға түсінікті түрде дәл және толық берілуі тиіс; - маркетингтік құжаттар программалық жабдықты нарықта насихаттау үшін жасалады. Мұнда көпшіліктің назарын аударатын реклама түріндегі материалдар, программалық жабдықтың артықшылықтары және т.б деректер қамтылады.


Программалық жабдықтарды құжаттаудың ортақ жүйесін Қазақстан Республикасының деңгейінде және халықаралық деңгейде қабылданған стандарттар құрайды. Программалық жабдықтарды құжаттандыруға байланысты Қазақстан Республикасы деңгейінде СТ РК ИСО/МЭК 6592-2002 – « Ақпараттық технологиялар. Компьютерлік қолданбалы жүйелерді құжаттандыру бойынша нұсқаулық», СТ РК ГОСТ Р ИСО/МЭК ТО 16326-2006 «Бағдарламалық инженерия. Жобаны басқару кезіндегі СТ РК 34.019 қолдануға нұсқаулық», СТ РК ГОСТ Р ИСО/МЭК 15910-2006 (ГОСТ Р ИСО/МЭК 15910-2002, IDT)« Ақпараттық технологиялар. Бағдарламалық құралдарды қолданушыға құжат дайындау процессі» және т.б. халықаралық деңгейдегі стандарттар қолданылып жүр. IV Зертханалық және өзіндік жұмыстарға арналған әдістемелік нұсқаулар 1 - зертханалық жұмыс. Программалауда қазіргі қолданылып жүрген технологиялар. Объектіге бағдарланған программалаудың негізгі қағидалары Әдістемелік нұсқаулар Объектіге бағдарланған программалауды жүзеге асыратын программалау орталарына Visual Basic, C++ Builder және т.б. жатады. ОБП-дың мағынасы мынада: программаның құрамындағы көптеген элементтер (мысалы, терезелер, мәзірлер, батырмалар және т.б.), программаға тұтастай қойылатын және программистің басқаруына ыңғайланған белгілі бір объектілер ретінде қарастырылады. Бұл объектілердің инкапсуляция, қабылдаушылық және полиморфизм принциптеріне негізделген ерекше қасиеттері, әдістері және әрекеттері болады. Объектіге бағдарланған программалаудың негізін құрайтын да осы инкапсуляция, қабылдаушылық және полиморфизм принциптері. Класс. Инкапсуляция, қабылдаушылық және полиморфизм принциптеріне сәйкес анықталатын объектілерді программада сипаттау және қолдану үшін класс деп аталатын жаңа құрылымдық тип қарастырылады. Кез-келген объект белгілі бір кластың өкілі, бір данасы немесе айнымалысы болып есептеледі. Кластың құрамына өрістер, әдістер және қасиеттер кіреді. Тума кластар өздерінде түпкі кластың барлық өрістерін сақтап калады және оны өзгерте алмайды, алып тастауға да болмайды, тек жаңа өрістермен толықтыруға болады. Түпкі класстың программадағы сипатталуы немесе кластың жаңа данасын құру программа модулінде келесі түрде жазылады.: class кластың аты { private: < жабық элементтер немесе мәліметтер> жабық конструкторлар> < жабық функция-элементтер> рrotected: < қорғалған элементтер немесе мәліметтер>


< қорғалған конструкторлар> < қорғалған функция-элементтер> рublic: < ашық элементтер немесе мәліметтер> < ашық конструкторлар> < ашық деструкторлар> < ашық функция-элементтер> }; Мысалы: rectangle деп аталатын класты анықтау class rectangle // кластың аты { private : double length; // ұзындығы жабық элемент double width; // ені жабық элемент public: rectangle() // конструктор үнсіздік бойынша {assign(0,0);} rectangle (double Len, double Wide) //конструктор {assign(Len,Wide);} double Length() // функция -элемент {return length;} double Width() // функция -элемент {return width;} double Area() // // функция -элемент {return length*width;} void assign(double Len, double Wide); // // функция -элемент }; Мұндағы, private, protected, public бөлімдері класс құрамындағы элементтерді пайдаланудың ережелерін немесе приоритеттерін анықтайды. Ол бөлімдердің әрқайсысының қызметі бар.


Класстың функция-элементтері дегеніміз, бұл – бірнеше операторлардан тұратын, класстан тыс анықталатын функциялар. Бұл функциялар сол класс анықталған файлда болуы да мүмкін, бұл функция мен оның прототипінің берілуі сияқты болып келеді. Әдетте, функция-элементтер өз алдына бөлек *.h немесе *.сpp файлдарда жинақталады және оны анықтағанда әуелі оның класының атын жазып, сонан соң «::» /екі рет қос нүкте/ белгісін қойып, сонан соң барып функцияның аты жазылады, мысалы: class rectangle // кластың аты { private : ... ... ... public: ... ... ... void assign(double Len, double Wide); // функция -элемент }; // классты анықтау бітті void rectangle :: assign(double Len, double Wide) // функция-элементтің өзінің анықталуы { length=Len; width=Wide; } Конструкторлар классқа жататын объектілерді дұрыс құру үшін қолданылады. Конструктордың анықталуы келесі түрде болады: class rectangle // кластың аты { private : ... ...

...

public: rectangle() // конструктор үнсіздік бойынша {assign(0,0);} rectangle (double Len, double Wide) //конструктор {assign(Len,Wide);} ... };

...

...


Конструктор үнсіздік бойынша болғанда оның параметрлері берілмейді немесе оның мәні нақты көрсетіліп беріледі, мысалы: class rectangle // кластың аты { private : ... ...

...

public: rectangle() // конструктор үнсіздік бойынша {assign(0,0);} rectangle (double Len, double Wide) //конструктор {assign(Len,Wide);} rectangle (double Len=10, double Wide=12) //конструктор үнсіздік мәні бойынша ...

...

...

}; Деструкторлар классқа жататын объектілерді автоматты түрде қолданылады. Деструктордың анықталуы келесі түрде болады, мысалы: class rectangle // кластың аты { private : ... ...

...

public: rectangle(); // конструктор ... ... ... ~rectangle (); //деструктор ...

...

...

};

Жаттығу жұмыстары

жою

үшін


Төртбұрыштың берілген ұзындығы мен енін және ауданын баспаға шығара алатындай мүмкіндіктер қарастырылған rectangle класын анықтаңыз және сол класқа жататын rect объектісіне сол класта қарастырылған мүмкіндіктерді қолданатын программа жазыңыз: #include <iostream.h> #include <conio.h> class rectangle // классты анықтаудың басталуы { private: double length; double width; public: rectangle() {assign(0,0);} rectangle (double Len, double Wide) {assign(Len,Wide);} double Length() {return length;} double Width() {return width;} double Area() {return length*width;} void assign(double Len, double Wide); }; // классты анықтаудың соңы void rectangle :: assign(double Len, double Wide) { length=Len; width=Wide; } int main() { rectangle rect; // rectangle класына жататын rect объектісін анықтау double uzin, eni;


cout<<"uzindigi men enin beriniz- "; cin>>uzin>>eni; rect.assign(uzin,eni); cout<<"\n"<<"Tortbyrishtin uzindigi - "<<rect.Length(); cout<<"\n"<<"Tortbyrishtin eni - "<<rect.Width(); cout<<"\n"<<"Tortbyrishtin audani - "<<rect.Area(); getch(); //return 0; } Программаның нәтижесі: uzindigi men enin beriniz-10 12 Tortbyrishtin uzindigi - 10 Tortbyrishtin eni - 12 Tortbyrishtin audani - 120 Әдістер. Кластың немесе объектінің әдістерін осы класқа енетін, процедуралар мен функциялар құрайды. Олар кәдімгі процедуралар мен функциялар сияқты жазылады. Кластың әдістерінің немесе процедура мен функциялардың тақырыбы /мысалы, procedure Button1Click (Sender: TObject);/ программа модулінің interfase - секциясындағы класты сипаттау бөлімінде жазылады да, ал денесі әдістің қайсы класқа тиесілі екендігін көрсететін құрама атпен /мысалы, TForm1.Button1Click(Sender: TObject);/ implementation – секцияда жазылады. С++ -те кез-келген класс үшін анықталған, кластың жаңа данасын құратын конструктор және құрылған дананы жоятын деструктор деп аталатын екі әдіс қарастырылған. TОbject класы және одан тарайтын тума кластардың басым бөлігі үшін бұл әдістер сәйкесінше Create және Destroy деп аталады. Қасиеттер. Кластың қасиеттері немесе сол класқа жататын объектінің қасиеттері - бұл өрістерді пайдалануға арналған арнайы механизм. Класты сипаттауда қасиеттерді жазу үшін property, read, write қызметші сөздері қолданылады. Программа модулінде қасиеттердің мәнін көрсету келесі түрде жазылады: кластың_аты->қасиеті:= мәні; Оқиғалар. Процедура болғандықтан бұл программалық кодтарды «әдіс» деп қарастырады да, «оқиға»- қабылдайтын мәндері осы процедуралық типтер болатын «қасиет» болады. Оқиға болған кезде, шақырылатын процедураны немесе әдісті оқиға өңдеуші / Event Handler- обработчик событий/ деп атайды, С++Builder- де әрбір кластың өзіне тән оқиғаларына сәйкес, программа модуліне, визуальдық компоненттің белгісіне екі рет шерту арқылы, автоматты түрде қойылатын стандарт оқиға өңдеушілері болады,


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

Өзіндік жұмыс тапсымалары

Есепті әуелі құрылымды /struct/ пайдаланып, сонан соң class – ты пайдаланып орындаңыз: 1. ―Өте жақс ы―, ―өте жақс ы және жақсы―, ―жақс ы және қанағаттанарлық ―, ‖тек қанағаттанарлық ― бағалармен оқи тын студенттердің тізімін құру программасын жазу. 2. Фамилиялары бірдей студенттер оқитын топты анықтау программасын жазу. 3. Фамилиясы ―A‖-дан басталатын қызметкерлер тізімін және олардың орташа еңбекақысын көрсететін программа жазу. 4. Аяқ киім дүкенінің ассортименті жазба түрінде берілген, ен қымбат әйел адамынын аяқ киімін және ер адамдар аяқ киімін, олардың құнымен көрсететін программаны жазу. 5. ―Телефондық анықтаманы моделдейтін― программаны құру, әйел адамдардың телефон нөмерін және мекен жайын шығару. 6. Автомашинаны жөндеу шеберханасында машина жөніндегі мәліметтер жазба түрінде берілген, қызыл түсті машиналардың маркасын және нөмерін аңықтайын программаны жазу. 7. Мекеменің қызметтері туралы мәліметтер жазба түрінде берілген. Ер адамдардың мамандығы мен жасып көрсетіп, экранға тізім шығарыңыз. 8. Кітаптардың аты, авторы, шыққан жылы, бағасы және тиражы анықталған каталог құрыңыз. Экранға алфавитімен тиражы бойынша сұрыпталған кітаптар тізімін шығарыңыз. 9. Теміржол кассісіндегі төмендегідей мәліметтер белгілі. Поездың нөмері,баратын жері,билеттің бар жоғы анықтау. Бос билеттердегі саны 125-ке тең поездардың нөмерін, баратын жерін экранға шығарыңыз. 10. Өзініз оқитын топтың тізімін алфавитімен студенттердің туған жылы бойынша реттеу программасын жазыңыз, нәтижесін экранға шығарыныз. 2 - зертханалық жұмыс. С++ Buildеr 6 ортасының құрылымы. С++ Buildе r 6 ортасында қосымша құру. Жоба, форма, модуль, ресурс файлдары Әдістемелік нұсқаулар С++Builder программмалау ортасы іске қосылғаннан кейінгі терезелердің орналасуы келесі түрде болады /4.1-сурет/:  Негізгі терезе (С++Builder Project1);  Объектілер инспекторының терезесі ( Object Inspector);  Форма редакторының терезесі (Form1);  Код жазы;  Латын редактордың терезесі (Unit1).


Ескерту. Кеңеймелері : *.cpp, *.h, *.dfm, *.bpr, *.res. болатын файлдар маңызды болып есептеледі, себебі олар барлық жобаға қатысады. Жаттығу жұмыстары Жобамен жұмыс жасау:  Жоба құру үшін негізгі терезеде File New  Application командалары орындалады.  Жаңа құрылған жобаны толығымен сақтау үшін FilеSave All командасы орындалады. Жоба құрамына кіретін файлдардың жиынтығы бір бумада сақталуы қажет.

4.1- сурет. С++Builder программмалау ортасының негізгі терезесі  Жобаны орындау бірнеше тәсілдермен жүргізіледі.  Жобаны жабу үшін Filе Close All командалары орындалады.  Бұрыннан бар жобаны ашу үшін Filе Open командасы орындалады да, пайда болған диалогтық терезеде жоба файлының (* .bpr) аты көрсетіледі.  Жоба файлының (*.bpr- файл) мәтінін қарау үшін бас мәзірден Project View Source (Проект->Просмотр) командасы орындалады;  Жоба файлының терезесін жабу үшін терезе контекстік мәзірінен Close Page командасы орындалады;  Жоба файлын С++Builder ортасы автоматты түрде өзі құрады;  Жоба файлы С++Builder ортасының жобалар тобына (группа проектов, ProjectGroup1) кіреді. Жоба тобы - бұл өзі қамтитын бір немесе бірнеше жобалар туралы ақпараттар, сипаттаулар сақталатын *.bpg кеңеймелі файл.  Project Manager программасы жоба тобымен жұмыс жасауда қолданылады.  Жоба параметрлерін беру үшін Project Options командасы орындалады. Өзіндік жұмыс тапсымалары


1. Жай жоба құрыңыз, оны өз бумаңызда сақтаңыз. 2. Өз жобаңыздың құрамына кіретін файлдарды, олардың атын, қызметін көрсететін кесте жасаңыз. 3. С++Builder ортасының негізгі терезесіндегі (С++Builder Project1) бас мәзірдің опцияларындағы жиі қолданылатын командаларын және олардың қызметін жазып алыңыз. 3 - зертханалық жұмыс. Негізгі визуалдық компоненттер. VCL кітапханасының компоненттері. Қасиеттері, әдістері және оқиғалары

Әдістемелік нұсқаулар VCL (Visual Component Library)- визуальды компоненттер кітапханасында қосымша құруда қажет болатын компоненттер жинақталған. Компоненттердің қасиетін өзгерту екі түрлі жолмен жасалады: объектілер инспекторының (Object Inspector) терезесінде немесе программалау жолымен. Мысалы, Label1 компонентінің Caption қасиетін Object Inspector терезесінде өзгерту. Ал программалық жолмен өзгерту үшін программа мәтінінде келесі түрде жазылуы керек: Label1->Caption= "Багдарлама"; Объектінің немесе компоненттердің әдістерін шақыру келесі түрде жазылады: Объектінің аты ->әдістің аты; Memo1>Clear(); Компоненттерге тән оқиғалар функциялар /void fastcall/ түрінде анықталған, бұл функциялардың шаблондары программа мәтініне автоматты түрде бірден қойылады, бұл шаблондарды сол компоненттің белгісіне екі рет шерту немесе Object Inspector терезесіндегі Events жапсырмасындағы оқиғалар арқылы шақырып алуға болады. Мысалы, Button1 компонентінің OnClick оқиғасы: void

fastcall TForm1::Button1Click(TObject *Sender)

{ Label1->Caption= "Багдарлама"; }


4.2- сурет. Button1 компонентінің OnClick оқиғасын шақыру.

Форма. C++ Builder ортасында құрылатын қосымшаның орындалуы кезінде экранға шығатын визуальдық бөлімінің негізін TForm класының өкілі болып табылатын Form компоненті құрайды. C++ Builder ортасы жүктелгенде, құрылатын жобаға (Project1) сәйкес форма терезесі (Form1) өзі автоматты түрде пайда болады /4.3-сурет/. Форма терезесі, бұл Windows қосымшаларына тән тақырыптық зонасы, жүйелік мәзір батырмасы, басқару батырмалары және таза жұмыстық обылысы бар, өлшемі өзгеріп отыратын терезе.

4.3 –сурет. Форма терезесі Жобаға тағы да форма терезелерін қосу үшін File New Form командасы орындалады. Программа құруда Form компонентінің келесі қасиеттері мен әдістері жиі пайдаланылады:


TCaption типтер класына жататын Caption қасиеті форманың тақырыбын, яғни тақырыптық зонадағы мәтінді жазу үшін қолданылады; TComponentName типіне жататын Name қасиеті Form компонентінің атын немесе идентификаторын беру үшін қолданылады, әдетте ол Form1, Form2 ... болып кете береді, егер қолданушы қажет болған жағдайда бұл атауларды өзгерте алады және программада оны сол өзі берген атпен шақырып пайдаланады, мысалы, Name қасиетінің мәні Form1 –ден MainForm- ға өзгертілсе онда оны программада пайдаланғанда Form1 Caption:= “Форма терезесі”; деп жазудың орнына MainForm  Caption:= “Форма терезесі”; түрінде жазады. Бұл Name қасиеті C++ Builder ортасындағы қолданылатын барлық программалық компоненттерге тән қасиет. Программада Form компонентінің жаңа экземпляр-данасын құру үшін constructor Create (AOwner: TComponent); конструкторы қолданылады, егер жаңа дананы құру команда түрінде талап етілетін болса оны программа мәтінінде келесі түрде жазады: ApplicationCreateForm(TForm1, Form1); бұл программаның негізгі терезесін құру болып табылады, ал қалған терезелерін құруды, мысалы Form2=TForm2.Create(Application); түрінде беруге болады. Close функциясы форма терезесін жабуды қамтамасыз етеді, программадағы жазылуы: Form1 Close(); Hide функциясының қызметі - форманы экранда көрсетпей жасырып тұрады, жазылуы: Form1 Hide(); Show функциясы орындалғанда көрінбей тұрған форма, алдыға шығып экранда көрсетіліп тұрады, жазылуы: Form1 Show(); Форма компонентінің TNotifyEvent класына жататын OnCreate оқиғасы форма құрылған кезде бір-ақ рет орындалады, сондықтан бұл функцияға форманың құрылуымен бірге орындалатын (мысалы пароль енгізу сияқты) операциялар жазылады. OnCreate оқиғасына сәйкес функция Object Inspector терезесінің Events жапсырмасындағы OnCreate жолының терезесіне екі рет шерту арқылы шақырылады:

void {

}

fastcall TForm2::FormCreate(TObject *Sender)


Мәтінмен жұмыс жасауға арналған Standart панелінің Label, Memo, Еdit компоненттері. Қарапайым қосымшалар құру үшін Standart панелінің компоненттері қолданылады. Қосымшаларда мәтін түріндегі мәліметтерді терезелер арқылы енгізуде панелінің Label, Еdit, Memo компоненттері қолданылады.

Standart

Еdit компоненті (немесе енгізу жолағы, немесе бір жолды редактор деп те атайды) мәтінді кішкентай терезе түріндегі бір жолға енгізуді немесе мәтін түріндегі нәтижені терезеге шығарып қоюды қамтамасыз етеді. Қосымшада Еdit компонентінің терезесінде берілген мәтінді, курсорды оңға және солға жылжытатын бағыттауыштар көмегімен, символдарды өшіретін <Backspace> және <Delete> пернелерін пайдаланып және фрагменттерді бөліп алып жөндеуге болады. Еdit компонентінің терезесіне енгізілген мәтін, оның типі AnsiString болатын Text қасиетінің мәні болып табылады, яғни Еdit терезесінде берілген мәліметтер программада тек жолдық тип ретінде ғана қабылданады, ал оны әрі қарай программада сандар ретінде пайдалану үшін түрлендіру функциялары қолданылады. Терезеге енгізілген мәтінді бүтін /int/ немесе нақты /float/ типтердің біріне айналдыру үшін келесі түрлендіру функциялары қолданылады:

StrToInt (AnsiString s)- жолдық типті бүтін типке, StrToFloat(AnsiString s) - нақты типке түрлендіреді. Еdit терезесіндегі мәтіннің үлкен немесе кіші әріптермен жазылуын немесе регистрлердің ауысып отыруын оның CharCase (типі TEditCharCase) қасиеті арқылы береді, сәйкесінше ол үш түрлі мән қабылдайды:

 ecNormal – ррегистр өзермейді, сол күйінде тұрады;  ecLowerCase - төменгі регистрдің әріптеріне көшеді;  ecUpperCase - жоғарғы регистрдің бас әріптеріне ауысады. Еdit компонентінің типі Char болатын PasswordChar қасиеті осы терезеге пароль енгізу үшін қолданылады, әдетте оның мәні #0 болып тұрады да терезеге енгізілген мәтіннің өзі шығады, ал оны жасырып көрсетпеу үшін PasswordChar қасиетінің қабылдайтын мәнін басқа бір символға, мысалы «*» немесе «?» секілді мәндерге өзгерту керек, сонда енгізілген құпия мәтіннің орнына «********» немесе «?????????» түріндегі жолдар шығады. Программа терезесінде Еdit1, Еdit2, Еdit3 компоненттері арқылы берілген бірнеше терезелердің бірінен екіншісіне ENTER пернесі арқылы көшіп отыру үшін оларға басқару фокусын беруді (курсорды беретін) қамтамасыз ететін SetFocus әдісін қолдануға болады, ол әдіс осы компоненттің терезесінде тұрып басылған пернеге жауап беретін OnKeyPress оқиға өңдеушісінің денесінде шақырылады. Мысалы, Еdit2 компонентінің терезесінен ENTER пернесі арқылы Еdit3 терезесіне көшу үшін сол Еdit2–нің OnKeyPress оқиға өңдеушісіне келесі кодты жазуға болады:

void

fastcall TForm2::Edit2KeyPress(TObject *Sender,


char &Key) { if(Key>='0' || Key<='9') ; // бұл 0- 9 цифрларды көрсету if(Key==8) ; // Backspace -өшіру пернесінің ішкі коды if(Key==13) // ENTER перенсінің ішкі коды Edit3->SetFocus(); }

Ал, форма терезесіндегі барлық терезелік компоненттерде басқару фокустарының өзара ауысып отыруын ұйымдастыру үшін Form компонентінің SelectNext (TWinControl* CurControl, bool GoForward, bool CheckTabStop); әдісі қолданылады. Қосымшадағы Memo терезесін мәтіндік файлдарды ашып оқу үшін немесе терезедегі мәтінді тексттік файлға жазып сақтау үшінде қолдануға болады. Ол үшін оның LoadFromFile (FileName) әдісітерезедегі мәтінді файлға жазуды, ал SaveToFile (FileName) әдісі-керісінше файлдағы мәтінді Memo терезесіне шығаруды қамтамасыз етеді. Мысалы: ... AnsiString FileName = "C:\\WINDOWS\\WIN.INI"; // файлдың аты Form1->Memo1->Lines->LoadFromFile(FileName); Form1->Memo1->Lines->SaveToFile(ChangeFileExt (FileName, ".BAK")); ... Жаттығу жұмыстары

Үшбұрыштың ауданын, биіктігі мен табаны бойынша есептеуді орындайтын қарапайым қосымша құру. Қосымша терезесі келесі түрде болуы қажет /4.4-сурет(а,б)/.


4.4-сурет. а) Форма терезесі

4.4-сурет. в) Қосымша терезесі


Орындалуы: 1. File New  Application командалары орындалады. 2. Жаңа құрылған жобаны сақтау үшін Filе Save All командасы орындалады. Жоба құрамына кіретін файлдардың бір бумада сақталуы қажет. 3. Форма терезесіне қажет компоненттер /4.4-суреттегідей/ орналастырылып және олардың келесі қасиеттері өзгертіледі:

Form1 Memo1

Caption Lines

Label1 Label2 Label3 Edit1 Edit2 Edit3 Button1

Caption Caption Caption Text Text Text Caption

У і мен табаны бойынша есептейтін программа құрыңыз

«Есептеу» деп аталатын батырмаға екі рет шертіліп, пайда болған терезеге келесі код жазылады: void fastcall TForm1::Button1Click(TObject *Sender) { int biktik, taban; float audan; biktik=StrToInt(Edit1>Text); taban=StrToInt(Edit2>Text); audan=float(biktik*taban)/2; Edit3->Text=FloatToStr(audan); } Өзіндік жұмыс тапсымалары

Келесі мазмұндағы есептерді шеше алатын қосымша құрыңыз: 1. Пирамиданың көлемін табу. 2. Үш қабырғасы бойынша үшбұрыштың ауданын есептеу. 3. Параллелипедтің көлемін есептеу. 4. Тізбектің жалпы кедергісін есептеу (параллель қосылған). 5. Трапецияның ауданын есептеу. 6. Тізбектің жалпы кедергісін есептеу (тізбектей қосылған). 7. Екі қабырғасы және арасындағы бұрышы бойынша үшбұрыштың ауданын есептеу.


8. Бүтін сандармен арифметикалық амалдарды орындай алатын калькулятор программа жасау. 9. Тригонометриялық функцияларды және түбір табуды орындай алатын калькулятор жасау. 10. Цилиндр көлемін табу.

4 - зертханалық жұмыс. Қосымша құруда тізімдерді пайдалану

Әдістемелік нұсқаулар

C++Builder ортасында құрылатын қосымшалардағы тізімнің көмегімен таңдау жұмысын ұйымдастыру үшін Standart панелінің ListBox, ComboBox компоненттерін қолдануға болады. Standart панелінің ListBox, ComboBox компоненттері. ListBox компоненті қарапайым тізімдерді жасауда қолданылады. Мысалы, ComboBox1->Items.LoadFromFile(„с:\Gruppa\Family.txt‟);

Жаттығу жұмыстары Студент пен оқытушы туралы ақпарат бере алатын қарапайым қосымша құру керек. Әрбір студент немесе оқытушы туралы ақпарат оның фамилиясына сәйкес аталатын *.txt файлда сақталсын. Қосымша құруда тізімдерді пайдаланыңыз. Орындалуы. Қосымша үш /4.5, 4.6, 4.7 –суреттер/ терезеден тұрады. «Анықтама» терезесіндегі батырмалар көмегімен «Студенттер» немесе «Оқытушылар» терезелерінің біріне көшуге болады. Бұл терезелерде сәйкесінше студент немесе оқытушы туралы нақты мәлімет алынады. «Анықтама» терезесі (Form1) үшін жазылған программа мәтіні: #include "Unit1.h" #include "Unit2.h" #include "Unit3.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm"


TForm1 *Form1; //--------------------------------------------------------------------------fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { }

4.5-сурет. Анықтама терезесі


4.6-сурет. Студенттер терезесі


4.7 -сурет. Оқытушылар терезесі

// «Студенттер» батырмасының оқиға өңдеуші коды void

fastcall TForm1::Button1Click(TObject *Sender)

{ Form2->Show(); } // «Оқытушылар» батырмасының оқиға өңдеуші коды void

fastcall TForm1::Button2Click(TObject *Sender)

{ Form3->Show(); } //«Программаны жабу» батырмасының оқиға өңдеуші коды void

fastcall TForm1::Button3Click(TObject *Sender)

{ Form1->Close(); }

«Студенттер» терезесі (Form2) үшін жазылған программа мәтіні: #include "Unit2.h" #include "Unit1.h" #include "Unit3.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma link "SHDocVw_OCX" #pragma resource "*.dfm" TForm2 *Form2; //--------------------------------------------------------------------------fastcall TForm2::TForm2(TComponent* Owner) : TForm(Owner)


{ } // «КЕЙІН» батырмасының оқиға өңдеуші коды void

fastcall TForm2::Button1Click(TObject *Sender)

{ Form1->Show(); Form3>Hide(); Form2->Hide(); } // Студенттер тізімі жазылған ListBox1 компонентін шерту оқиғасының коды void

fastcall TForm2::ListBox1Click(TObject *Sender)

{ if (Form2->ListBox1->ItemIndex==0) M Memo1->Lines->LoadFromFile("Жаркынбек.txt"); (Form2>ListBox1->ItemIndex==1) Memo1->Lines->LoadFromFile("Жумагазы.txt"); if (Form2->ListBox1->ItemIndex==2) Memo1->Lines->LoadFromFile("Имангалиева.txt"); }

«Оқытушылар» терезесі (Form3) үшін жазылған программа мәтіні: #include "Unit3.h" #include "Unit1.h" #include "Unit2.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma link "SHDocVw_OCX" #pragma resource "*.dfm" TForm3 *Form3; //---------------------------------------------------------------------------


void

fastcall TForm3::TForm3(TComponent* Owner)

: TForm(Owner) { } // Оқытушылар тізімі жазылған ComboBox1 компоненті оқиғасының коды

void

fastcall TForm3::ComboBox1Change(TObject *Sender)

{ if(ComboBox1->ItemIndex==0) Memo1->Lines->LoadFromFile("Мухтаров.txt"); if(ComboBox1->ItemIndex==1) Memo1->Lines->LoadFromFile("Асанова.txt"); } //«КЕЙІН» батырмасының оқиға өңдеуші коды void

fastcall TForm3::Button1Click(TObject *Sender)

{ Form1->Show(); Form3->Close(); Form2->Hide(); }

Өзіндік жұмыс тапсырмалары

Тізімдерді және олардың қасиеттері мен әдістерін, уақиғаларын пайдалана отырып: 1. 2. 3. 4. 5. 6. 7. 8. 9.

Азық-түлік дүкенінің ассортименті туралы мәлімет беретін; Поликлиниканың дәрігерлері туралы мәлімет беретін; Математикалық формулалар анықтамалығының қызметін атқаратын; Кітапханадағы картотека қызметін атқаратын; Атына сәйкес түстерді көрсете алатын; Атына сәйкес фигураларды көрсете алатын; Атына сәйкес музыка ойнай алатын; Фильмдер картотекасының қызметін атқаратын; Футбол клубтары туралы анықтамалар беретін;


10. Қаладағы мәдени орталықтарда өтетін іс- шаралар туралы ақпарат беретін; 5 –зертханалық жұмыс. Қосымшадағы ауыстырғыштардың қызметі

Әдістемелік нұсқаулар

C++Builder ортасында программалауда, программа ұсынатын мүмкіндіктердің бірін немесе қатарынан бірнешеуін таңдау үшін ауыстырғыштар (переключатель, флажок) қолданылады. Программада мұндай ауыстырғыштардың қызметін Standart панелінің CheckBox, RadioButton және RadioGroup компоненттері атқарады. Ауыстырғыш екі күйде ғана бола алады: «қосылған» (ν немесе ●) және «ажыратылған» (□ немесе ○ ). Ауыстырғыштарды мүмкіндігіне қарай екі топқа бөледі: тәуелсіз және өзара тәуелді. Тәуелсіз ауыстырғыштардың жұмысы басқа ауыстырғыштарға байланыссыз, тәуелсіз болады. CheckBox компоненті. Программада CheckBox компонентінің көмегімен жасалатын ауыстырғыш, тәуелсіз ауыстырғыштар тобына жатады. Әдетте, қажет болған жағдайда бірнеше ауыстырғыштарды бір топқа біріктіріп пайдаланады, ол үшін контейнердің ролін атқаратын арнаулы GroupBox және Panel және т.б. компоненттер қолданылады. Әдетте қосымшада ауыстырғыштың күйін өзгерту үшін тышқанның сол жақ батырмасына шертеді, яғни қандай болғанына қарамастан әйтеуір күйі өзгеретін болса, онда CheckBox компоненті үшін міндетті түрде OnClick оқиғасы пайда болады. Бұл оқиғаны өңдеуге арналған функция, көбінесе ауыстырғыштың күйіне байланысты белгілі бір әрекеттердің немесе операторлардың орындалуын қамтамасыз ету үшін қолданылады. Мысалы,

void

fastcall TForm1::CheckBox1Click(TObject *Sender)

{ if (CheckBox1->Checked = = true) Memo1->Font->Size=10; }

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


Жаттығу жұмыстары 1-жаттығу. Кездейсоқ сандар генераторын (random) пайдаланып жасалған массивтің max және min элементтерін табуды және массивті сұрыптауды қолданушының сұранысына байланысты бір-біріне тәуелсіз орындай алатын қосымша құрыңыз. /4.8-суреттегідей/

4.8 -сурет. Қосымша терезесі.

#include "Unit1.h" #include "stdlib.h" TForm1 *Form1; float a[100]; int Elem_sani=0; //--------------------------------------------------------------------------fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //---Орындау батырмасының коды ---------------------------void fastcall TForm1::Button1Click(TObject *Sender) { float max=a[0]; float min=a[0]; if (Edit1->Text=="") {ShowMessage("Massiv elementterinin sanin beriniz"); Edit1>SetFocus();} if (CheckBox1->Checked == True) //max элементті табу {for (int i=0;i<Elem_sani;i++) {


if (a[i]>max) max=a[i]; } Edit2->Text=FloatToStrF(max,ffFixed,5,2); } if (CheckBox2->Checked == True) //min элементті табу {for (int i=0;i<Elem_sani;i++) { if (a[i]<min) min=a[i]; } Edit3->Text=FloatToStrF(min,ffFixed,5,2); } if (CheckBox3->Checked == True) // массивті өсу ретімен сұрыптау for(int i=0;i<Elem_sani;i++) { max=a[i]; int Nmax=i; for(int j=i;j<Elem_sani;j++) if (a[j]>max) {max=a[j]; Nmax=j;} a[Nmax]=a[i]; a[i]=max; Memo2->Lines->Add("a["+Int ToStr(i)+"]= "+FloatToStrF(max,ffFixed,5,2)); } } //------Массивті толтыру батырмасының коды----------void fastcall TForm1::Button2Click(TObject *Sender) { if (Edit1->Text=="") {ShowMessage("Massiv elementterinin sanin beriniz"); Edit1>SetFocus();} Elem_sani=StrToInt (Edit1->Text); for(int i=0; i<Elem_sani;i++) { a[i]= (float) random(100)/7-3; Memo1->Lines->Add("a["+IntToStr(i)+"]= "+FloatToStrF(a[i],ffGeneral,3,1));} } //--------------------------------------------------------------------------void fastcall TForm1::FormActivate(TObject *Sender) {Edit1->SetFocus();} //--------------------------------------------------------------------------void fastcall TForm1::Button4Click(TObject *Sender) {Form1->Close();} //--------------------------------------------------------------------------void fastcall TForm1::Button3Click(TObject *Sender) {Memo1->Clear(); Memo2->Clear(); Edit1->Clear(); Edit2->Clear(); Edit3->Clear();} //---------------------------------------------------------------------------

2-жаттығу. Студенттер туралы мәліметтер (фамилиясы, аты және туған жылы) класс түрінде анықталған. Группадағы студенттер туралы мәліметтерді сұрыптауды (фамилиясын немесе


атын алфавит бойынша, туған жылдарын кему реті бойынша орналастыру) орындайтын программа жазыңыз. Программа терезесі 4.9- суретте көрсетілген.

4.9-сурет. Студенттер туралы мәліметтер

Терезедегі компоненттер қасиеттерінің және оқиғаларының мәндері: Компоненттің аты

Қасиеттерінің мәндері, оқиғалары

Form1

Caption = 'RadioButton компонентiн пайдалану мысалы'

Label1

Caption = 'Фамилия'

Label2

Caption = 'Аты'

Label3

Caption = 'Туган жылы'

Memo1

Lines.Strings = (

Edit1

Text қасиеті тазаланады, OnKeyPress = Edit1KeyPress

Edit2

Text қасиеті тазаланады, OnKeyPress = Edit2KeyPress

Edit3

Text қасиеті тазаланады, OnKeyPress = Edit3KeyPress

Button1

Caption = 'ЕНГIЗУДI ОРЫНДАУ',

Button2

Caption = Button2Click

')

'СУРЫПТАУДЫ

OnClick = Button1Click ОРЫНДАУ',

OnClick

=


RadioGroup1

Caption = 'Сурыптау' Items.Strings = ( 'Фамилия бойынша' 'Аты бойынша' 'Туган жылы бойынша ')

Программаның мәтіні: #include "Unit1.h" #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; class stud {public: AnsiString fam, ati; int tugG; }; stud grup[10]; int n=0; //--------------------------------------------------------------------------fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //---------------------------------------------------------------------------

void

fastcall TForm1::Button1Click(TObject *Sender)

// 'ЕНГIЗУДI ОРЫНДАУ' батырмасының коды { grup[n].fam=Edit1->Text; grup[n].ati=Edit2>Text; grup[n].tugG=StrToInt(Edit3->Text);


Memo1->Lines->Add(grup[n].fam+" "+ grup[n].ati+" "+IntToStr(grup[n].tugG)); n++; Edit1->Clear();Edit2->Clear();Edit3->Clear(); Edit1->SetFocus(); } //--------------------------------------------------------------------------void

fastcall TForm1::Edit1KeyPress(TObject *Sender,

char &Key) { if(Key==13) Edit2->SetFocus(); } //--------------------------------------------------------------------------void

fastcall TForm1::Edit2KeyPress(TObject *Sender,

char &Key) { if(Key==13) Edit3->SetFocus(); } //--------------------------------------------------------------------------void

fastcall TForm1::Edit3KeyPress(TObject *Sender,

char &Key) { if(Key==13) Button1->SetFocus(); } //--------------------------------------------------------------------------void

fastcall TForm1::Button2Click(TObject *Sender)

// 'СУРЫПТАУДЫ ОРЫНДАУ' батырмасының коды { if(RadioGroup1->ItemIndex==0) //fam boinsha syriptay bastaldi { Memo1->Clear();


for(char i='А';i<='Я';i++) for (int j=0;j<n;j++) if(grup[j].fam[1]==i) Memo1->Lines->Add(grup[j].fam+" "+ grup[j].ati+" "+IntToStr(grup[j].tugG)); } // fam boinsha syriptay bitti

if(RadioGroup1->ItemIndex==1) //ati boinsha syriptay bastaldi { Memo1->Clear(); for(char i='А';i<='Я';i++) for (int j=0;j<n;j++) if(grup[j].ati[1]==i) Memo1->Lines->Add(grup[j].ati+" "+ grup[j].fam+" "+IntToStr(grup[j].tugG)); } //ati boinsha syriptay bitti

if(RadioGroup1->ItemIndex==2) //tugG boinsha syriptay bastaldi {Memo1->Clear(); for(int i=0;i<n;i++) { stud max=grup[i]; int maxI=i; for (int j=i;j<n;j++) if(grup[j].tugG > max.tugG) {max=grup[j]; maxI=j;} Memo1->Lines->Add(max.ati+" "+ max.fam+" "+IntToStr(max.tugG)); grup[maxI]=grup[i]; grup[i]=max; } }//tugG boinsha syriptay bitti }


Өзіндік жұмыс тапсымалары:

1. Қолданушының таңдауына сәйкес тізбек мүшелерін арифметикалық, геометриялық прогрессия ережелері немесе т.б. заңдылықтар бойынша құратын және алынған тізбектің min –элементін табатын және тізбек элементтерін кему реті бойынша орналастыратын программа жазыңыз. 2. Қолдануш ын ың таңдауына сәйкес ―Өте жақсы―, ―өте жақс ы және жақсы―, ―жақсы және қанағаттанарлық ―, ‖тек қанағаттанарлық ― бағалармен оқи тын студенттердің тізімін ш ыға рып беретін п рогра мма жаз ың ыз. 3. Қолданушының таңдауына сәйкес фамилиясы ―A‖-дан басталатын қызметкерлер тізімін, орташа жалақыдан жоғары жалақы алатын қызметкерлер тізімін, орташа жалақыдан төмен жалақы алатын қызметкерлер тізімін шығарып беретін программа құрыңыз. 4. Қолданушының таңдауына сәйкес аяқ киім дүкенінің ассортиментінен әйел адамның аяқ киімдерін, ер адамдар аяқ киімдерін, балалар аяқ киімдерін олардың құнымен, шығарған фирмасымен және размерімен көрсететін программаны жазыңыз. Ең қымбат және ең арзан балалар аяқ киімін де көрсететін болсын. 5. Қолданушының таңдауына сәйкес автосалондағы машиналарды маркасына, шыққан жылына және бағасына және түсіне қарай сұрыптап шығарып беретін программа жазыңыз. 6. Қолданушының таңдауына сәйкес поликлиникадағы дәрігерлердің аты-жөні бойынша, мамандығы бойынша және еңбек өтілі бойынша сұрыптап шығаратын программа құрыңыз. 7. Кітапханадағы кітаптарды, авторы, шыққан жылы, бағасы және тиражы бойынша сұрыптайтын программа құрыңыз. 8. Нақты сандардан тұратын бір өлшемді масивтегі оң және теріс элементтерді сұрыптап шығаратын және оң элементтердің ең үлкенін табатын программа құрыңыз. 9. Аэропорт анықтамалық бюросының мәліметтеріне сәйкес рейстерді бағыттары бойынша, апта күндері бойынша және номерлері бойынша сұрыптайтын программа құрыңыз. 10. Стоматологқа келушілердің тізімінен қажет фамилияларды бас әрпі бойынша, келген күні бойынша және дәрігері бойынша сұрыптап шығарып беретін программа құрыңыз.

6 - зертханалық жұмыс. Қосымшадағы терезелердің және мәзірлердің жұмысын ұйымдастыру. Форма және мәзірлер

Әдістемелік нұсқаулар


Мәзірлер. Барлық Windows қосымшаларында қолданушы интерфейсінің элементі ретінде ең көп тараған элемент – мәзір. Мәзір – қосымшада орындалатын командаларды атқаратын қызметтеріне немесе т. б. белгілеріне қарай бір топқа біріктіріп тиімді пайдалану үшін қолданылады. Windows қосымшаларында қолданылатын мәзірлерді келесі түрлерге бөледі: - Жүйелік мәзір (SystemMenu) – бұл, Windows қосымшаларының барлығына тән мәзір түрі, сондықтан C++Builder-де қосымша құрғанда жүйелік мәзір форманың өзімен қоса анықталады. Жүйелік мәзірдің сурет-таңбасы, форманың тақырыптар зонасының сол жағында, ал оның командаларына сәйкес сурет-таңбалар (,  ,немесе ) оң жағында орналасады және оларды форманың BorderIcons (типі TBorderIcons) қасиетіндегі biSystemMenu (типі Boolean) мәнін false өзгерту арқылы алып тастауға болады. Қосымшадағы негізгі мәзір (немесе оны бас мәзір, горизонталь мәзір деп те атайды) формаға MainMenu компонентінің көмегімен қойылады. Қосымшаның жекелеген элементтеріне арналып жасалатын контекстік мәзір (тышқанның оң жақ батырмасын басқанда пайда болатын мәзір) қосымшаға визуальдық емес PopupMenu компонентінің көмегімен енгізіледі. Мәзір конструкторын пайдалану. C++Builder ортасында формаға қойылған мәзірдің пункттерімен жұмыс жасау үшін Мәзір конструкторын (Menu Designer) қолданады. Оны шақыру үшін формада орналасқан MainMenu немесе PopupMenu компоненттеріне екі рет шерту керек, я болмаса олардың Items қасиеті шақырылады /4.10-сурет/.

4.10- сурет. Мәзір дизайнерінің терезесі.

Жаттығу жұмыстары

Музыка тыңдауды және суреттер қарауды орындай алатын құрыңыз. Қосымша төрт терезеден тұрады. /4.11-сурет(а,б,с,д)/

әмбебап

қосымша


4.11-сурет. а) Унерверсал программа терезесі

4.11-сурет. б) Музыка терезесі


4.11-сурет. с) Суреттер терезесі

4.11-сурет. д) Анықтама терезесі

1.«Универсал - программа» /Form1/ терезедегі компоненттер қасиеттерінің оқиғаларының мәндері:

және


Компоненттің аты

Қасиеттерінің мәндері, оқиғалары

Form1

Caption = 'Универсал-программа'

МainMenu1

N1: Caption = 'Тандау' N2: Caption = 'Музыка' OnClick = N2Click N3: Caption = 'Суреттер' OnClick = N3Click N4: Caption = 'Программа туралы' N5: Caption = 'Аныктама' OnClick = N5Click N6: Caption = 'Программадан шыгу' OnClick = N6Click

Animate1

Active = True FileName = 'D:\WINDOWS\clock.avi'

«Универсал- программа» терезесінің unit1 мәтіні: #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "Unit2.h" #include "Unit3.h" #include "Unit4.h" //---------------------------------------------------------------------------


#pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void

fastcall TForm1::N2Click(TObject *Sender)

{ Form2->Show(); } //--------------------------------------------------------------------------void

fastcall TForm1::N3Click(TObject *Sender)

{ Form3->Show(); } //--------------------------------------------------------------------------void

fastcall TForm1::N6Click(TObject *Sender)

{ Form1->Close(); } //------------------------------------------------------------------- -------void

fastcall TForm1::N5Click(TObject *Sender)

{ Form4->Show(); } //---------------------------------------------------------------------------


2. «Музыка» /Form2/ терезедегі компоненттер қасиеттерінің мәндері:

Компоненттің аты

Қасиеттерінің мәндері, оқиғалары

Form2

Caption = 'Музыка'

MainMenu1

N1: Caption = 'Файл' N2: Caption = 'Ашу' OnClick = N2Click N3: Caption = 'Жyру' N4: Caption = 'Алга' OnClick = N4Click N5: Caption = 'Кейiн' OnClick = N5Click

Label1

Caption = 'Файл' Font.Height = -13 Font.Name = 'MS Sans Serif' Font.Style = [fsBold]

MediaPlayer1

System жапсырмасында орналасқан

OpenDialog1

Dialogs жапсырмасында орналасқан

Edit1

Text қасиеті тазаланады

«Музыка» терезесінің unit2 мәтіні: #include <vcl.h> #pragma hdrstop

және оқиғаларының


#include "Unit2.h" #include "Unit1.h" #include "Unit3.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TForm2 *Form2; //--------------------------------------------------------------------------fastcall TForm2::TForm2(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void

fastcall TForm2::N2Click(TObject *Sender) // Файл ->

Ашу пунктінің коды { if (OpenDialog1->Execute()) { Edit1->Text=OpenDialog1->FileName; MediaPlayer1>FileName=OpenDialog1->FileName; MediaPlayer1->Open(); } } //--------------------------------------------------------------------------void

fastcall TForm2::N4Click(TObject *Sender)

{ Form3->Show(); } //--------------------------------------------------------------------------void

fastcall TForm2::N5Click(TObject *Sender)


{ Form1->Show(); } //----------------------------------------------------------------------------

3. «Суреттер» /Form3/терезедегі компоненттер қасиеттерінің және оқиғаларының мәндері:

Компоненттің аты

Қасиеттерінің мәндері, оқиғалары

Form3

Caption = 'суреттер'

MainMenu1

N1: Caption = 'Файл' N2: Caption = 'Ашу' OnClick = N2Click N3: Caption = 'Жyру' N4: Caption = 'Кейін' OnClick = N4Click N5: Caption = 'Программадан шығу' OnClick = N5Click

OpenPictureDialog1

Dialogs жапсырмасында орналасқан

Image1

Stretch = True

«Суреттер» терезесінің unit3 мәтіні: #include <vcl.h> #pragma hdrstop


#include "Unit1.h" #include "Unit2.h" #include "Unit3.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TForm3 *Form3; //--------------------------------------------------------------------------fastcall TForm3::TForm3(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void

fastcall TForm3::N4Click(TObject *Sender)

{ Form2->Show(); } //--------------------------------------------------------------------------void

fastcall TForm3::N5Click(TObject *Sender)

{ Form1->Close(); } //--------------------------------------------------------------------------void

fastcall TForm3::N2Click(TObject *Sender)

{ if (OpenPictureDialog1->Execute()) Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName); }


4. «Аныктама» / Form4/ терезедегі компоненттер қасиеттерінің мәндері:

Компоненттің аты

Қасиеттерінің мәндері, оқиғалары

Form4

Caption = 'Анықтама'

және оқиғаларының

BorderIcons = [biSystemMenu] biSystemMenu =true biMinimize=false biMaximize=false biHelp=false Label1

Caption = 'Программа мәзірлермен (MainMenu жане PopupMenu компоненттери ) жумыс жасауды корсететин демонстрациялык програма болып табылады. Программада музыкалык файлдарды тындау ушин MediaPlayer, Image, OpenDialog, OpenPictureDialog компоненттери пайдаланылды.' WordWrap = True

PopupMenu1

Caption = 'Бул контекстик мәзір -PopupMenu'

Button1

Caption = 'КЕЙIН' PopupMenu = PopupMenu1 OnClick = Button1Click

«Анықтама» терезесінің unit4 мәтіні: #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "Unit4.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TForm4 *Form4; //---------------------------------------------------------------------------


fastcall TForm4::TForm4(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void

fastcall TForm4::Button1Click(TObject *Sender)

{ Form1->Show(); } //---------------------------------------------------------------------------

Өзіндік жұмыс тапсырмалары

1. Бір өлшемді массив элементтерін клавиатурадан енгізу немесе кездейсоқ сандармен толтыру қажет. Алынған элементтердің ең үлкені мен ең кішісін анықтап және олардың орналасу ретін табуға программа құру керек. 2. Формаға қойылған негізгі мәзірдің «Форма түсі» пункті арқылы форманы түрлі түске бояуды, «Мәзір пунктін басқару» арқылы пункттердің қасиеттерін өзгертуді және Label компонентінің контекстік мәзірінің пункті арқылы арқылы Label компонентіне мәтін жазуға программа құру қажет. 3. Берілген бір өлшемді массивтің элементтерінің қосындысын табу программасын құрыңыз /Нұсқау: массивті енгізуде MainMenu, қосынды табуда PopupMenu компонетін пайдаланыңыз/. 4. Ақша айырбастау пунктіндегі таблонның жұмысын мәзірлер арқылы программалаңыз. 5. Бағдаршамның жұмысын түсіндіруді мәзірлерді пайдаланып программалаңыз. 6. Келушінің сұранысына қарай асхана мәзірінен ақпарат беретін программа құрыңыз. 7. Қолданушының таңдауы бойынша жазықтық фигуралардың /үшбұрыш, төртбұрыш, трапеция және т. б./ периметрі мен ауданын есептейтін программа құрыңыз. Мәзірлерді пайдаланыңыз. 8. Бір өлшем бірлігінен басқа өлшем бірлігіне көшіруді программалау (мысалы, метрді сантиметрге, килограммды тоннаға немесе т. б.). Ескі өлшем бірліктерін және қазіргі өлшем бірліктерін пайдаланыңыз. 9. Сандық массивті толтыратын және сұрыптайтын және т.б. амалдарды орындайтын программаны мәзірлер көмегімен жазыңыз. 10. Memo компонентіндегі мәтінді сақтайтын және форматтауды /шрифтіні өзгерту, түстерін өзгерту/ мәзірлер арқылы орындайтын программа құрыңыз. 7 - зертханалық жұмыс.


Массивтермен жұмыс жасауға арналған компоненттер

Әдістемелік нұсқаулар

Мәліметтерді кестелер түрінде беруді ұйымдастыру. C++ Builder ортасында қосымша құруда мәліметтерді кестелер түрінде беру үшін Additional жапсырмасындағы StringGrid және DrawGrid компоненттері /4.12-сурет/ қолданылады.

4.12-сурет. StringGrid компонентiн таңдау

Additional панелінің StringGrid және DrawGrid компоненттері. DrawGrid, StringGrid компоненттерін формаға орналастырғанда, жай ғана, бос ұяшықтары бар кестелер немесе торкөздер пайда болады, ал программманың орындалуы барысында ұяшықтардың мәліметтермен толтырылуын программист өзі ескеруі тиіс. Кесте өлшемін (баған және жол санын) Longint типті ColCount және RowCount қасиеттері анықтайды. Қалыпты күйде олардың мәндері 5-ке тең. Баған мен жолдың нөмірлері нөлден бастадады, яғни кесте өлшемі 6х6. void

fastcall TForm1::Button1Click(TObject *Sender)

{ int I, J, K; K = 0; for (I = 0; I < StringGrid1->ColCount; I++) for (J = 0; J < StringGrid1->RowCount; J++) StringGrid1->Cells[I][J] = IntToStr(++K); } Кестедегі бағандардың енін өзгерту үшін типі іnt болатын DefaultColWidth қасиеті, ал кесте жолының биіктігін өзгерту үшін DefaultRowHeight қасиеттері қолданылады. Мысалы, программада терезенің өлшемдері өзгергенде кесте ұяшықтарының /баған мен жолдың/ өлшемдерін өзгерту келесі түрде жазылады: void {

fastcall TForm1::FormCreate(TObject *Sender)


if (DrawGrid1->DefaultColWidth > 90) DrawGrid1->GridLineWidth = 2; else DrawGrid1->GridLineWidth = 1; } GridLineWidth қасиетін кесте ұяшығын көмкеріп тұрған сызықтарының қалыңдығын немесе жіңішкелігін беру үшін қолданады. Әдетте оның мәні 1- ге тең болып тұрады, егер оны 3-ке өзгертсеңіз онда кесте ұяшықтары қалың бояулы сызықпен көмкерілетін болады. Жаттығу жұмыстары

А(5,5) матрицаның бағандары мен жолдарын алмастырғанда шығатын матрицаны көрсетіңіз. Программа терезесі 4.12-суретте көрсетілген.

4.12-сурет. Программа терезесі.

Программа терезесіндегі компоненттердің қасиеттерін өзгерту:

Компонент

Компоненттің қасиеттері

Мәндері

Form1

Caption

'StringGrid мысалы'


Label1

Caption

'Бастапкы кесте'

Label2

Caption

'Сонгы кесте'

StringGrid1

ColCount

5

(бағандарының саны)

StringGrid2

RowCount

5

(жолдың саны)

FixedCols

0 (бекітілген немесе қозғалмайтын баған саны)

FixedRows

0 (бекітілген немесе қозғалмайтын жолдар саны)

Немесе StringGrid1-ді

көшіріп алып қайтадан DefaultRowHeight қоюға да DefaultColWidth болады

MainMenu1

20 (жолдың биіктігі) 50 (бағанның ені)

Height

113 ( кесте сыртындағы тіктөртбұрышты облыстың биіктігі)

Width

265 ( кесте сыртындағы тіктөртбұрышты облыстың ені)

Options->goEditing

True (ұяшыққа мәлімет енгізуге болады)

Options-> AlwaysShowEditing

True (енгізу фокусы орналасқан ұяшықты редакциялуға болады)

Options->goTabs

True (Tab пернесін басып ауысуға болады (Shift+Тab))

PopupMenu

PopupMenu1

N1: Caption = 'ТЕРЕЗЕ' N3: Caption = 'Жабу' OnClick = N3Click N2: Caption = 'КЕСТЕ' N4: Caption = 'Толтыру' OnClick = N4Click N5:


Caption = 'Тазалау' OnClick = N5Click PopupMenu1

N6: Caption = 'толтыру' OnClick = N6Click N7: Caption = 'тазалау' OnClick = N7Click

Button1

Caption = 'Алмастыруды орындау' OnClick = Button1Click

Программа мәтіні: #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "stdlib.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {


} //--------------------------------------------------------------------------void

fastcall TForm1::N3Click(TObject *Sender)

{ Form1->Close(); } //--------------------------------------------------------------------------void

fastcall TForm1::N4Click(TObject *Sender)

{ for(int i=0;i<5;i++) for(int j=0;j<5;j++) StringGrid1->Cells[i][j]=IntToStr(i+j-2); } //--------------------------------------------------------------------------void

fastcall TForm1::N5Click(TObject *Sender)

{ for(int i=0;i<5;i++) StringGrid1->Rows[i]->Clear(); } //--------------------------------------------------------------------------void {

fastcall TForm1::N6Click(TObject *Sender)


for(int i=0;i<5;i++) for(int j=0;j<5;j++) StringGrid1->Cells[i][j]=IntToStr(rand()%100-27); } //--------------------------------------------------------------------------void

fastcall TForm1::N7Click(TObject *Sender)

{ for(int i=0;i<5;i++) StringGrid1->Cols[i]>Clear(); } //--------------------------------------------------------------------------void

fastcall TForm1::Button1Click(TObject *Sender)

{ for(int i=0;i<5;i++) for(int j=0;j<5;j++) StringGrid2->Cells[j][i]=StringGrid1->Cells[i][j]; } //--------------------------------------------------------------------------Өзіндік жұмыс тапсымалары

Тапсырманы орындауға нұсқау!  Тапсырманы орындау барысында құрылатын қосымшада массив элементтерін енгізу екі түрлі жолмен жасалуы керек :  «ЕНГІЗУ» командасы арқылы қолданушы өзі енгізеді;  «ТОЛТЫРУ» командасы арқылы автоматты түрде толтырылады;


 Массив элементтерімен жасалатын операциялар мәзір командаларының көмегімен орындалуы қажет;  Массив түрлендірілген жағдайда бастапқы массив пен алынған жаңа массив екі түрл і кестеде көрсетілуі қажет;  Қосымша құруда осыған дейін қарастырылған мәтінмен жұмыс жасау компоненттері, тізімдер, ауыстырғыштар, мәзірлер, командалық батырмалар, диалогтық терезелер және олардың қасиеттері мен әдістері пайдаланылуы қажет. 1-тапсырма

Матриц а

Тапсырмалар

Шектеу

1.

A(5,7)

Матрицаның әрбір бағанының оң элементтерінің Aij>0 қосындысын және олардың санын есте сақтау. Нәтижесін екі жол түрінде шығару.

2.

A(N,M)

Матрицаның әрбір жолының оң элементтерінің қосындысын N<=4 және олардын санын есептеп есте сақтау.Нәтижесін екі M<=5 баған түрінде баспадан шығару.

3.

B(N,N)

Матрицанын бас диагоналындағы және одан төмен N<=6 орналасқан элементтердің қосындысын және элементтер санын есептеу.

4.

B(N,N)

Матрицаның бас диагоналынан төмен орналасқан оң N<=4 элементтерінін қосындысын және олардың элементтер Bij>0 санын есептеу.

5.

D(K,K)

Матрицаның жұп орындағы элементтерінің элементтерінін орнына нольдерді жазып және матрицаны баспаға шығару.

K<=5

2-тапсырма /қиынырақ есептер/

1.

А(4,3) матрицаның элементтері екі-үш таңбалы немесе одан да көп таңбалы сандар болсын. Матрицаның әрбір элементін оның цифрларының қосындысымен алмастыру керек. Шыққан матрицаны көрсетіңіз.

2.

А(4,4) матрицаны сағат тілінің бағытымен 90 градусқа бұрғанда шығатын матрицаны көрсетіңіз.

3.

А(7,5) матрицаның элементтерін жол бойынша сұрыптап орналастырыңыз.

4.

А(5,7) матрицаның элементтерін баған бойынша сұрыптап орналастырыңыз.

5.

А(10) массив элементтерін үш түрлі әдіспен сұрыптаңыз /алмастыру әдісі- метод обмена или пузырька, тікелей таңдау әдісі-метод прямого выбора, орындары


бойынша сұрыптау-сортировка с вставкой/

8 - зертханалық жұмыс. Ерекше жағдайларды өңдеу түсінігі. Ерекше жағдайлар класы

Әдістемелік нұсқаулар

Ерекше жағдайлар түсінігі қосымшаның орындалуы кезіндегі пайда болатын қателермен байланысты қарастырылады. Программист өзінің құрған қосымшасы орындалған кезде болуы мүмкін қателерді анықтап, ол қателер бола қалған жағдайда программа қалай жұмыс жасауы керек екенін алдын-ала қамтамасыз етуі тиіс. Жалпы программалау кезінде жіберілетін қателерді келесі топтарға бөледі:  Синтаксистік қателер. Синтаксистік қателерге программа мәтінін теру кезінде операторлардың қате жазылуы, операторларды айыру белгілерінің қойылмауы, программа соңының көрсетілмеуі және т.б. жатады.  Логикалық қателер, есеп алгоритмінің дұрыс құрылмауынан болады.  Динамикалық қателер бұл- программаның орындалуы кезінде пайда болып оның орындалу тәртібінің бұзылуына немесе нәтижесіз тоқтап қалуына әкеліп соқтыратын қателер. Ерекше жағдайлар класы. C++ Builder ортасындағы ерекше жағдайлардың барлығы жеке объектілер ретінде қарастырылады және бұл объектілер үшін базалық класс TObjectден тарайтын TException класы болады, программада бұл класстың сипаттамасы SysUtils стандарт модулінде беріледі. Қасиеттері. TException класынан тарайтын жоғарыда аталған тума кластар үшін анықталған қасиеттер: Message қасиеті (типі AnsiString) ерекше жағдайдың немесе қатенің сипаттамасын сұхбат терезіне шығару үшін қолданылады. property AnsiString Message = {read=FMessage, write=FMessage}; HelpContext қасиеті ( типі THelpContext) анықтама жүйесіндегі объект түрінде анықталған қатеге сәйкес бөлімнің номерін немесе идентификатор номерін көрсету үшін қолданылады. property int HelpContext = {read =FHelpContext, write=FHelpContext, nodefault}; Ерекше жағдайларды өңдеу. Қосымшаларда ерекше жағдайларды өңдеу екі түрлі жолмен жүзеге асырылады: ерекше жағдайларды жалпы өңдеуші /глобальный обработчик/ және дербес өңдеуші /локальный обработчик/. Қосымшадағы ерекше жағдайларды жалпы өңдеушінің жұмысын қамтамасыз ету Application объектісінің қызметіне жатады, Application объектісі жүйе тарапынан ерекше жағдайдың пайда болғаны жөнінде хабар алысымен


TExceptionEvent типіне жататын OnException оқиғасын генерациялайды да, осы пайда болған оқиғаның өңдеушісі, қосымшадағы ерекше жағдайларды жалпы өңдеушінің қызметін атқарады. Әдетте қосымшалардағы ерекше жағдайларды жалпы өңдеуші бұл- Application объектісінің әдісі болып есептелетін HandleException(System::TObject* Sender); функциясы. Бұл функция арқылы шақырылатын қосымшаның ShowException(System::TObject* ExceptObject, void * ExceptAddr); әдісі, пайда болған ерекше жағдайдың сипаттамасын экранға, сұхбат терезесіне шығарады, мысалы қосымшаның орындалуы кезінде «нольге бөлу немесе бөлшектің бөлімі нольге тең» болған ерекше жағдайларда жалпы өңдеуші бұл жөнінде қолданушыға хабарлайды /4.13- сурет/.

4.13-сурет. Ерекше жағдайды жалпы өңдеуші қызметінің мысалы

Программада дербес өңдеушіні қолданудың жолдары:  try ... catch блогында ерекше жағдайды өңдеу;  try ... finally блогын пайдаланып кодты «мусордан» тазалау. try ... сatch операторы. Ерекше жағдайларды өңдеуде программисттің дербес өңдеушілерді қолдануы үшін try ... сatch операторы пайдаланылады. Жалпы жазылуы: try { // «қорғалған блоктың» басы throw 1-өрнек; / / бұл оператор ерекше жағдайды оны өңдеушіге лақтырады. throw 2-өрнек; ... throw n-өрнек; } // «қорғалған блоктың» соңы catch(1-өрнектің типіне сәйкес айнымалының типі) { 1-өрнекке сәйкес ЕЖ өңдеушінің коды } catch(2-өрнектің типіне сәйкес айнымалының типі) { 2-өрнекке сәйкес ЕЖ өңдеушінің коды } catch(n-өрнектің типіне сәйкес айнымалының типі)


{ n-өрнекке сәйкес ЕЖ өңдеушінің коды } мұндағы, try («орындап көру, байқап көру» - деген мағынаны білдіреді) сөзімен басталып, {…} фигуралы жақшаға алынған программа мәтінінің фрагменттерін қорғалған блоктар немесе уақытша блоктар деп атайды, яғни ерекше жағдай туғызуы мүмкін программа коды осы қорғалған блокта орналасуы керек. Өңдеуші код catch қызметші сөзінен басталады. Содан кейін жай жақшаның ішінде ЕЖ типі көрсетіледі, егер жай жақшаның ішінде көп нүкте /... / тұрса онда ол ол кез-келген ЕЖ өңдей алады, мысалы: catch(int i) { // int типті ЕЖ өңдеуші код } catch(char* str) { // char* типті ЕЖ өңдеуші код } catch (...) { //кез-келген типті ЕЖ өңдеуші код } Жаттығу жұмыстары 1 -жаттығу. Консолдық қосымшада қарапайым ЕЖ өңдеуді орындап көру. #include <vcl.h> #include <iostream.h> #include <condefs.h> #pragma hdrstop //--------------------------------------------------------------------------#pragma argsused int main() { double d = 1.0; for (int i=0; i<4; i++) { try { cout << endl<< "try-block bastaldi..." <<endl; switch (i)


{ case 0: throw " goldi laktiru "; // char* типті жолды лақтыру case 1: throw 5; // int.-бүтінді лақтыру. default: throw d; // double –ді лақтыру. } // Келесі оператор ЕЖ байланысты орындалмай cout<< "Byl try-block-ka bailanisti orindalmaidi" << endl; } // try-блоктың соңы catch(int i) { // int типті ЕЖ өңдеуші код cout << "Int laktirildi /thrown /: " << 1 << endl; } catch(char* str) { //char* типті ЕЖ өңдеуші код cout << "string-gol laktirildi: " << str << endl; } catch (...) { //Кез-келген ЕЖ өңдеуші код cout << "kalgan type laktirildi."<< "Program will.terminate." << endl; cin.ignore () ; return -1; // Программадан шығу } cout<< "sikldin soni"<< endl; } // циклдың соңы. cout << "progr soni" << endl; // Бұл операторлар орындалмайды себебі, үшінші catch (...) //программаны аяқтап тастайды return 0; }


Бұл мысалда цикл төрт рет орындалуы керек. Цикл ішінде і- цикл параметрінің мәндеріне сәйкес int, char* және double типті ЕЖ шақыратын қорғалған блок орналасқан. і=0 болғанда throw операторы char* типті жолды лақтырады, ал оны char* типті екінші тұрған өңдеуші ұстап алады да, соған сәйкес жазуды шығарады, себебі кодта содан басқа ештеңе жазылмаған, тура сол сияқты і=1 болғанда қорғалған блоктағы throw операторы int типті ЕЖ лақтырады, оны бірінші тұрған catch(int i) өңдейді. і=2 болғанда double типті ЕЖ пайда болады, ал оған сәйкес catch қарастырылмаған, бірақ оны кез-келген жағдай үшін орындалатын үшінші catch (...) ұстайды және ондағы кодтағы cin.ignore () және return -1; командалары программадан шығуды немесе аяқтауды орындайды, яғни цикл төртінші рет і=3 үшін орындалып үлгермейді. Программаның нәтижесі:

2 -жаттығу. Windows-ға арналған қосымшада қарапайым ЕЖ-ды 1. жалпы өңдеушінің /глобальный обработчик/ көмегімен орындап көру; 2. дербес өңдеуші көмегімен орындап көру. Дербес өңдеушінің жұмысын көру үшін жалпы өңдеушіні уақытша тоқтата тұру керек, ол үшін Tools -> Debugger Options командаларын орындап, пайда болған терезеде Language Exceptions жапсырмасының Stop on Delphi Exceptions және Stop On C++ Exceptions немесе Integrated debugging опцияларындағы флажокты алу керек /4.14(А,Б,С)-4.15(А,Б,С) суреттер/ . Программа мәтіні: #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //---------------------------------------------------------------------------


fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } void

fastcall TForm1::Button1Click(TObject *Sender)

{ float a,b,c; float d,x1,x2; a=StrToInt(Edit1->Text); b=StrToInt(Edit2->Text); c=StrToInt(Edit3->Text); try { d=b/a; x1=log(c); x2= d; Edit4->Text=FloatToStrF(x1,ffGeneral,5,2); Edit5>Text=FloatToStrF(x2,ffGeneral,5,2); } catch(...) { MessageDlg("try-блокта кате бар",mtError, TMsgDlgButtons() << mbOK, 0); //return; } Edit6->Text="Мен орындалдым"; Программа орындалуының нетижелері: 1) ЕЖ –ды жалпы өңдеуші / глобальный обработчик/ ұстады.


4.14-сурет. а)Ерекше жағдайларды жалпы өңдеуші /глобальный обработчик/ ұстады.

4.14-сурет. б)Ерекше жағдайларды жалпы өңдеуші /глобальный обработчик/ ұстады.


4.14 -сурет. с)Ерекше жағдайларды жалпы өңдеуші /глобальный обработчик/ ұстады.

2) ЕЖ –ды дербес өңдеуші /локальный обработчик/ ұстады.


4.15 -сурет. а) Ерекше жағдайларды дербес өңдеуші /локальный обработчик/ ұстады және оны қолданушының коды өңдеді.

4.15-сурет. б) Ерекше жағдайларды дербес өңдеуші /локальный обработчик/ ұстады және оны қолданушының коды өңдеді.

4.15-сурет. с) Ерекше жағдайларды дербес өңдеуші /локальный


обработчик/ ұстады және оны қолданушының коды өңдеді.

try…

finally операторының (немесе қорғалған блогының) программадағы жазылуы:

try { //қорғалған блок } finally { // ерекше жағдайлар туса да орындалатын код }

Өзіндік жұмыс тапсымалары

Келесі мазмұндағы есептерді шешу программаларындағы ерекше жағдайларды анықтап оны екі жолмен өңдеуді /жалпы және дербес өңдеушілер/ қарастырыңыз. 1. Пирамиданың көлемін табу. 2. Үш қабырғасы бойынша үшбұрыштың ауданын есептеу. 3. Параллелипедтің көлемін есептеу. 4. Тізбектің жалпы кедергісін есептеу (параллель қосылған). 5. Трапецияның ауданын есептеу. 6. Тізбектің жалпы кедергісін есептеу (тізбектей қосылған). 7. Екі қабырғасы және арасындағы бұрышы бойынша үшбұрыштың ауданын есептеу. 8. Бүтін сандармен арифметикалық амалдарды орындай алатын калькулятор программа жасау. 9. Тригонометриялық функцияларды және түбір табуды орындай алатын калькулятор жасау. 10. Цилиндр көлемін табу. 9 - зертханалық жұмыс. Wіndows интерфейсінің компоненттерін қолданып файлдарды басқару

Әдістемелік нұсқаулар


Windows ОЖ стандартты диалогтық терезелерінде жұмыс жасау, мысалы файлды таңдау, сақтау, түсін өзгерту және т.б.. C++ Builder ортасында диалогты терезелермен жұмыс жасау үшін TOpenDialog, TSaveDialog компоненттері қолданылады. Компоненттердің қасиеттерімен әдістері: Filter – диалогпен көрсетілетін файл типі; FilerIndex – үнсіздік бойынша қолданылатын фильтр нөмірі; DefaultExt – стандартты кеңейтілім, қолданушы көрсетпеген жағдайда; Files – қолданушы таңдаған файл аты; Title – текст, диалог тақырыпшасында көрінетін; Execute() – диалогты шақыру. Опциялары: ofReadOnly — диалогты терезе пайда болғанда "Read only" жалаушасы белгіленген болады; ofHideReadOnly — диалогты терезе пайда болғанда "Read only" жалаушасын көрсетпейді; ofNoReadOnlyRetum — ОК батырмасын басқанда ―тек оқуға арналған‖ файлды таңдауға тиым салып, басқа файл таңдау қажеттін хабарлайды. ofPathMustExist — файл тек бар каталогтардың бірінде болатының көрсетеді. Қолданушы файлды жоқ каталогтан іздеген жағдайда қате екенін хабарлайды; ofFileMustExist — тек бар файлдардың бірін таңдауға болатынын көрсетеді; ofOverwritePrompt — егер қолданушы жазба үшін бар файлды таңдаса, оны бекітуді сұрайды; ofShowHelp — диалогқа Help батырмасын қосады; ofNo Validate — файл атын енгізгенде рұқсат етілмеген символдардын болмауын тексереді; ofAllowMultiSelect — бірнеше файлды бір мезгілде таңдауға мүмкіндік береді; ofShareAware — таңдалынған файлды басқалардың қолдануына тексеруді сөндіреді. Бұл опция болмаған жағдайда файл басқа қосымшамен ашылған болса, басқалары бұл файлды қолдана алмайды. Файлды ашу мысалы: OpenDialog1->Execute(); if (OpenDialog1->FileName!="") { Memo1->Lines->LoadFromFile(OpenDialog1->FileName);


Form1->Caption=OpenDialog1.Filename+” - My Text Editor”; } Бұл жерде файлды ашудан басқа, таңдалынған файл аты форма тақырыбында "My Text Editor" мәтінімен жазылады. TColorDialog компоненті – қолданушы түсті анықтауға арналған. Color –түстер; Опциялары: cdFullOpen — диалогты толық көрсету. Қолданушы түсті таңдағанда түстердің жүйелік палитрасынан ғана емес, өзі де түс бере алады; cdPreventFullOpen — диалогты толық көрсетуге рұқсат бермейді; cdShowHelp — Help батырмасын көрсетеді. TPrintDlalog компоненті – тексті принтерге шығару параметрлерін орнатуға арналған. TSavePictureDialog, TSavePictureDialog компоненттері –файл-бейне атын таңдауға арналған, келешекте жазу немесе оқу үшін қолдануға болатын. TFindDialog компоненті – бұл диалог арқылы мәтіндегі қажетті фрагментті іздеуді және оған дайындықты жүзеге асырады, программист жазған кодтар арқылы. Опциялары: frDown — бұл опцияны қолданған жағдайда іздеудің алғашқы бағыты – төменге (басынан аяғына дейін). Сәйкесінше радиокнопка орнатылады; frDisableUpDown — бағытты таңдауға тиым салады. Радиокнопкалар тобы сұр түспен көрсетіледі; frHideUpDown — бағытты таңдауға тиым салады және радиокнопкалар тобын көрсетпейді. Жалаушалар күйіне келесі опциялар жауапты: frHideMatchCase — регистр жалаушасын көрсетпейді; frDisableMatchCase — регистр жалаушасын көрсетеді, бірақ ол белсенді болмайды. Егер осы опциялар орнатылмаса, жалауша диалогта белсенді болады, және оның мәнін қолданушы өзгерте алады. Оның мәні Options-тағы frMatchCasc опциясына сәйкес болады. Қасиеті, әдістері және оқиғалары: FindText – ізделінетін мәтін; CloseDialog – диалогты жабады. TrayIcon – жүйелік треймен жұмыс жасауға арналған. Қасиеті:


PopupMenu – трейді контекстті мәзірмен байланыстырады, контекстті мәзір жеке компонентпен қосылған болуы керек; PopupMenuOn – контекстті мәзірді ашу; RestoreOn – басты терезені жаю. СSpinButton компоненті – жұп батырмалар қарама-қарсы бағытшамен, басқан кезде белгілі бір өлшемде арттыруға немесе кемітуге арналған. Жоғарғы немесе төменгі батырманы басқанда сәйкесінше OnDownClick, OnUpClick оқиғалары пайда болады. СDirectoryOutline – бұл компонент файлдың иерархиялық бұтағын және ағымдағы диск каталогтарын көрсетуге арналған. Қасиеті: Drive – ағымдағы диск мәні, яғни бұтақта көрсететін файлдық жүйе құрамы; Directory – ағымдағы каталог; Ауыстыру буферімен жұмыс жасайтын функциялар: CopyToClipBoard() – буферге көшіру; PasteFromClipBoard() – буферге қою; CutToClipBoard() – буферге қию;

Өзіндік жұмыс тапсымалары

Келесі нұсқалар бойынша мәтіндік редактор құру: Файлды ашу, сақтау; Файлды баспаға шығару; Фон түсін өзгерту; Буфермен жұмыс жасау функциясын қосу; Жүйелік трейге жұлдызша қосу; Контекстті мәзірді жүйелік трейге шақыру мүмкіндігін қарастыру; Жүйелік трейдегі жұлдызшаны тышқанмен бір басқанда терезенің қалпына келуін орнату; 8. Трейді контекстті мәзірмен байланысын орнату; 9. Файлдың иерархиялық бұтағын және диск каталогтарын көрсетуге арналған қосымша құру; 10. Ауыстыру буферімен жұмыс жасайтын қосымша құру. 1. 2. 3. 4. 5. 6. 7.

10 - зертханалық жұмыс. С++ Buildеr 6 ортасындағы графика. Объектіні қозғалысқа келтіру. Анимация


Әдістемелік нұсқаулар

1.Графиктік файлдардың форматтары. C++ Builder ортасында графиктік файлдардың 3 түрлі типімен жұмыс жасауға болады.

Файл типі

Кеңеймесі

Биттік матрица (Bitmaps) Пиктограммалар Метафайлдар (Metafiles) IPEG Image file EnhancidMetafiles

. bmp . ico . wmf . ipg; . ipeg . emf

Бұл файлдардың барлығында суреттер немесе кескіндер сақталады, бірақ бұлардың файлдағы сақталу тәсілдері әртүрлі болады. Мысалы, .btm; .ico - кескіндер файлға биттік матрица түрінде сақталады.Бұл биттік матрицалар кескіндегі әрбір пиксельдің (нүктенің) түсін көрсетеді. Бұл биттік матрицада сақталған кескінді кез келген компьютер өзінің мүмкіндігіне қарай көрсете алады. Келесі .іco кеңеймесімен берілген файлда пиктограммалар (значоктар) сақталады. Пиктограммалардың өлшемін өзгерту қажет емес. Метафайлдарда кескіннің биттері сақталмайды, керісінше сол кескінді салу әдістері сақталады. Яғни олар сурет салу командалары. 2.Графиктік файлдарды сақтауға арналған C++ Builder-дің класстары. C++ Builder ортасында графиктік кескінді сақтауға арналған келесі кластар қолданылады: TBitMap

Бұл кластардың барлығы үшін түпкі класс

TIco n

TGraphic.

өзінде TMetafile қалған

Мұндағы TРicture класы – 3 кластың қасиеттерін қамти

алады. TPicture Сондықтан, төмендегідей і TPicture.TІcon; TРicture.TМetafile; ТРicture.TBitMap қасиеттерін шақыру мүмкін болады.

3. Кескінді немесе суретті қарау және суретті салу. 1. Image компоненті. Бұл Additational жапсырмасында орналасқан. Мұнда жоғарыда айтылған графиктік файлдар сақталған кескінді көруге болады.


Негізгі қасиеттері: Қасиеттің аты

Қызметі және қабылдайтын мәндері

Picture(TPicture)

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

AvtoSize (Boolean)

Егер бұл қасиет true мәнге ие болса, онда іmage компонентінің өлшемдері ол көрсететін кескін өлшеміне қарай келтіріледі.

Stretch (Boolean)

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

Center (Boolean)

Егер бұл қасиет true мәнге ие болса, онда бұл кескін компонентінің ортасында орналасады.

іmage

(0,0) у

х

4.16-сурет Transparent (Boolean)

Егер бұл қасиет true мәнге ие болса, онда кескін көрінбей тұрады, (түссіз (празрачный) болып кетеді), бұл әсіресе бір кескіннің үстіне екіншісін беттестіргенде жиі қолданылады. Бұл қасиет тек биттік матрицаларға ғана жүреді.

Іmage компонентінің терезесіне кескінді жүктеу үшін немесе сақтау үшін сәйкесінше OpenPictureDialog және SavePictureDialog стандарт диалогтық терезе қолданылады. 4. Канва (Холст, кенеп, Canvаs. C++ Builder ортасында графикамен жұмыс істеу үшін кескінді орналастыратын орын немесе бет керек. C++ Builder – де ол үшін Canvаs қасиет і анықталған. Мұндай қасиет Image, Form, PaintBox, ListBox, StringGrid, BitMap, т.б. бар. Канваның өзінің қасиеттері және әдістері бар. Канва нүктелерден тұрады, бұл нүктелердің (х,у) координаталары болады. (4.16-сурет) Канваның (0,0) нүктесі оның сол жақ төбесінде орналасады. Бұл (х,у) координаталары пиксельмен есептеледі. Пиксельдің ең негізгі қасиеті - оның түсі. Канвада сурет салу үшін оның Pixels қасиеті қолданылады. Бұл екі өлшемді массив түрінде анықталады және ол пикселдің түсін береді, яғни типі Pixels[X] [Y] : clColor;


Жаттығу жұмыстары

f(x)=exp(0.5*Х) графигін [-5,5 ] аралығында h=0.01қадаммен салу керек /4.17-сурет/.

4.17 -сурет. f(x)=exp(0.5*Х) функция графигі

Программа мәтіні: #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "math.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; float f(float x) //функцияның мәндерін есептеу { float f=exp(0.5*x); return f; }


void GrafSizy() // график сызатын функция { float x1,x2,y1,y2,x0,y0; float x,mx,my;

//график салынатын облысты даярлау int Ibik=Form1->Image1->ClientHeight; // image1-дин биктги int Iyz=Form1->Image1->Width; //image1-дин узындыгы // Y осьти сызу, ол (xY,yY) басталып (xY,cY) нүктеде бітеді; float xY=Iyz/2; float yY=10; float cY=Ibik-10; Form1->Image1->Canvas->MoveTo(xY,yY); Form1->Image1->Canvas->LineTo(xY,cY); // X осьти сызу ол (xХ,yХ) басталып (сХ, yX ) нүктеде бітеді; float xX=10; float yX=Ibik/2; float cX=Iyz-10; Form1->Image1->Canvas->MoveTo(xX,yX); Form1->Image1->Canvas->LineTo(cX,yX); //бастапкы мандерди аныктау x1=5; x2=5; y1=f(x1); y2=f(x2); //масштабты тагайындау mx=Iyz/(x2x1); my=Ibik/(y2-y1); //координата бас нуктеге (xY,yX) бару x0=xY; y0=yX; Form1->Image1->Canvas->MoveTo(x0,y0); //график сызу басталды x=x1; while (x<x2) {


Form1->Image1->Canvas->Pixels[x0+mx*x][y0-my*f(x)]=clBlack; x=x+0.01; } // Form1->Image1->Canvas->TextOutA(x0,y0,'0'); Form1->Image1->Canvas>TextOutA(xY,yY,"Y"); Form1->Image1->Canvas->TextOutA(cX,yX,"X"); } //--------------------------------------------------------------------------fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void

fastcall TForm1::Button1Click(TObject *Sender)

{ GrafSizy(); } //--------------------------------------------------------------------------void

fastcall TForm1::FormCreate(TObject *Sender)

{ Memo1->Text="Программа у=ехр(х) функциясынын [-5,5] аралыгындагы графигин 0.01 кадаммен салып шыгады"; } 5. Канвада қолданылатын сурет салу құралдарын пайдалану, Pen(қалам,қарындаш, , қылқалам. Канваның Pen(ТPen) қасиеті бар. ТРen қасиеті объект ретінде қарастырылады. Бұл объектінің өзінің де қасиеттері бар. Негізгі қаситтері: Color – қалам түсі Width – қалыңдығы (қалыпты жағдайда 1 пикселге тең!) Height - биіктігі


Style – қалам стилін білдіреді Канваның келесі қасиеттерін пайдаланып суреттер салуға болады: PenPos(TPoint) – бұл қасиет канваның қаламының бастапқы позициясын анықтайды, яғни қаламның қай жерде тұрғанының координатасын көрсетеді. K=Image1->Canvas-> PenPos ; MoveTo(x,y) – қасиеті қаламды координаталары (x,y) нүктесіне апарып қояды; Draw(x,y; Graphic:); - бұл графиктік обьектіні канваға шығарады. График обьектісінің орнында .bmp, .ico немесе метафайл болуы мүмкін. 6. Суретке мәтін шығару.TextOut(x,y; const AnsiString Text); - бұл х,у нүктесінен бастап текст тұрақтысында сақталған мәтінді канваға шығарады. 7. Тұйық облыстарды бояу.FillRect(const TRect Rect); - канвада Rect төртбұрышын бояйды. Бояу үшін қылқаламның түсі және стилі қолданылды. FloodFill(x,y; TColor Color; TFillStyle FillStyle); - х,у нүктесінен бастап немесе х,у нүктесі жататын тұйық облысты Color түске FillStyle стилмен немесе өрнекпен /узор/ бояйды. Brush – бұл канваның қасиеті болып табылады. Канвадағы тұйық фигураларды бояйды. Канваның өзінің фонын көрсетеді. Brush обьектісінің негізгі қасиеттер: Color – түсін береді

Style BSSolid - тұтас бояйды; BSHorizontal – горизонталь сызықтармен бояйды. 8. Сурет салуға болатын обьектілер немесе компоненттер. Суретті салуға немесе қарауға Image компонентіне басқа Form немесе PaintBox компоненттерін де қолдануға болады. Оларда да Canvas қасиеті бар. Формада сурет салғанда оның OnPaint оқиғасы қолданылады. Image- де сурет салған кезде оның DrawIng қасиеті қолданылады. Аннимация. Аннимация – бұл кесінді немесе суретті қозғалтуды айтады. C++ Builder-де Windows -тың дайын аннимацияларын қолдануға болады немесе салынғансуреттің оның бөліктерін қозғалту арқылы жылжытуға болады. Кескінді қозғалысқа келтірудің бірнеше тәсілдері бар: 1. Timer компоненттері пайдаланылады. Мұнда уақытқа байланысты кескінді жылжытуға болады. Мұнда кескін алдын-ала процедура түрінде анықталып алынады. Уақытқа байланысты кескіннің қозғалатын бөлігінің координаталары өзгертіледі. 2. Кескіннің түсін Canva-ның түсімен сәйкестендіру. Мұнда сурет салушы қаламның түсін өзгертіп отырады.


3. Animate компоненті бар. Win32-де орналасқан.Бұл компонент Windows-тағы стандарт видеоклиптерді формада көрсету үшін қолданылады. Бұл видеоклиптердің кеңеймесі. AVI. Стандарт видеоклиптерінің Shell 32.dll библеотекасы болады. Өзіндік жұмыс тапсымалары

Тапсырмалар: a) Функцияның графиктерін салу программасын құрыңыз: 1. y=a*x^2+b*x 2. y=x^3+a*x^2+b*x 3. y=a*sinx +b 4. y=-a*x^2+b*x 5. y=a*x^5 6. y=a*cos(x-1)+|x| 7. y=a/x 8. y=(x+a)/(x-b) 9. y=a+b/x+c/x^2 10. y=a-b/x-c/x^2

b) Суреттерді салу және оларды қозғалту программасын құрыңыз: Вариант 1 –“тышқан”

Вариант 2 – “нысана”


Вариант 3 – “қорған”

Вариант 5-“танк”

Вариант 4 – “робот”

Вариант 6 –“штанга”

Вариант 7-“Саққұлақ”

Вариант 8 –“қоян”

Вариант 9- «чебурашка»

Вариант 10 – «жұлдызша»


11 – зертханалық жұмыс. С++ Buildеr 6 ортасында деректер қорын құру

Әдістемелік нұсқаулар

Borland C++ Builder қолданып, бiр қолданушылық деректер қорымен, сонымен қатар ДҚБЖ серверлерімен, яғни Oracle, Sybase, Informix, Interbase, MS SQL Server, DB2, сондай-ақ ODBC-көздерімен жұмыс жасайтын қосымша құруға болады. C++ Builder-де деректер жиыны – бұл жазбалар жиынынан тұратын объект, олардың әрқайсысы өрістерден және ағымдағы жазба көрсеткіштерінен тұрады. Деректер жиыны C++ Builder –де TDataSet абстрактілі класының (абстрактілі клас- басқа кластарды туындататын класс, бірақ берілген кластан объект экзамплярын құруға болмайды) тума класстары болады. Мысалы, Data Access парағының компоненттер палитрасындағы TQuery, TTable және TStoredProc компоненттері - TDBDataSet мұрагерлері, олар өз кезегінде TDataSet мұрагерлері. TDataSet - кестелерді ашу, сұраныстарды және жолдар бойынша ауыстыруларды орындайтын құралдармен қамтамасыз ететін, кестелерді басқару және сұраныстар абстракциясынан тұрады. TDataSource компоненті DataSource компоненті TDataSet (TTable, TQuery, TStoredProc) және Data Controls компоненттері арасындағы аралық қызметін атқарады. Data Controls компоненттері формада деректердің ұсынылуын қамтамасыз ететін басқару элементтері. TdataSet компоненттері Borland Database Engine (BDE) кітапханасымен байланысты басқарады, ал DataSource компоненті Data Controls компоненті деректерімен байланысты басқарады. ДҚ-ның қарапайым қосымшаларында DataSource компоненті - TDataSet (TTable немесе TQuery) бір компонентімен және Data Controls (DBGrid, DBEdit және т.б.) бірнеше компонентімен байланысты. DataSource компонентінің TDataSet және DataControls компоненттерімен байланысы келесі қасиеттер мен оқиғаларды қолдану арқылы жүзеге асады:


DataSet қасиеті – TDataSource компонентінің атын белгілейді. DataSet мәнін объектілер инспекторы арқылы орнатылады. Enabled қасиеті - TDataSource және Data Controls компоненттері арасындағы байланысты белсенді етеді немесе тоқтады. Егер Enabled қасиетінің мәні true болса, онда TDataSource Data Controls компоненттерімен байланысқан, яғни деректер жиыны өзгерiстерiн қабылдайды. Enabled қасиетін қолдану TDataSource пен Data Controls визуальды компоненттерiн уақытша айыруға мүмкiндiк бередi. Мысалы, іздеу жағдайында, экранда барлық кестелерді парақтағанда кестеде үлкен көлемдегі жазбаларды көрсетпеу үшін. AutoEdit қасиеті - Data Controls компоненттерінде өңдеу қалай басталатынын бақылайды. Егер мәні true болса, онда өңдеу тәртiбі TDataSet компонентімен байланысқан Data Controls компонентiнің фокус алу кезiнен басталады. Қарсы жағдайда өңдеу режимі TDataSet компонентінің Edit әдісін шақыру кезінде басталады, мысалы DBNavigator компонентіндегі Edit батырмасын қолданушы басқаннан кейін. OnDataChange оқиғасы – өрістер, жазбалар, кестелер, сұраныстар мәндерін өзгерту кезінде шақырылады. OnUpdateData оқиғасы - қолданушы TDataSet-тегі ағымдағы жазбаны өзгерткісі келгенде шақырылады. TTable компоненті Деректер қорындағы кестелерге қатынаудың ең қарапайым жолы TТable компонентін қолдану, ол бір кестеге қатынауға рұқсат береді. Осы мақсатта жиі қолданатын қасиеттері төмендегілер: Active – берілген кесте ашық (true) немесе жоқ (false) екенін көрсетеді. DatabaseName - құрамында ізделінетін кесте бар каталог аты, немесе қашықтағы ДҚ псевдонимі (alias) (Псевдонимдер BDE конфигурациясы утилиталары арқылы орнатылады, немесе мәзірдің Database/Explore пункті арқылы шақырылатын SQL Explorer арқылы орнатылады). Бұл қасиет кесте жабық (оның Active қасиеті false болғанда) болған жағдайда ғана өзгертіледі. Мысалы: Table1->Active = false; Table1->DatabaseName = "BCDEMOS" Table1->Active = true; TableName – кесте аты. Exclusive – егер бұл қасиет true мәнін қабылдаса, кесте берілген қосымшамен ашық болғанда, кестені басқа ешқандай қолданушы аша алмайды. Егер бұл қасиет false (үнсіздік бойынша) болса, онда басқа қолданушыларда осы кестені аша алады. IndexName – кестеге екінші индексті белгілейді. Бұл қасиетті кесте ашық болғанда өзгертуге болмайды. MasterFields – басқа кестемен байланыс жасау үшiн өрiстiң атын анықтайды.


MasterSource – TDataSource компонентінің аты, кестеден деректерді алады.

TTable осы арқылы байланысқан

ReadOnly - егер бұл қасиет true болса, кесте "тек қана оқу үшiн" тәртiбінде ашылған. Кесте ашық болғанда ReadOnly қасиетiн өзгертуге болмайды. Fields - TField объектілері массиві. Бұл қасиетті қолданып, кесте құрылымы алдан-ала белгілі болғанда, өрістерге нөмірі бойынша қатынауға болады: Edit1->Text=Table1->Fields[2]->AsString; TTable компонентімен жұмыс жасағанда жиі қолданылатын әдістер: Open және Close - Active қасиетіндегі True және False мәндеріне сәйкес. Refresh - ДҚ деректер жиынын қайтадан санауға мүмкiндiк бередi. First, Last, Next, Prior ағымдағы жазба көрсеткішін біріншіге, соңына, келесіге және алдынғы жазбаларға сәйкес ауыстырады, мысалы: Table1->First(); while (!Table1->Eof) { //бірнәрсе жасаймыз... Table1>Next(); }; Insert, Edit, Delete, Append – жазба қосу үшін кестелерді жазу, өңдеу, алып тастау, жазбаларды қосу режимдерiне ауыстырады Post – өзгертілген деректерді физикалық сақтауды жүзеге асырады. Мысалы, Table2->Insert(); Table2->Fields[0]->AsInteger = 100; Table2>Fields[1]->AsString =Edit1->Text; Table2->Post(); Cancel – енгізілген өзгертулерді (физикалық сақталмаған) болдырмайды. Формаға TТable компонентін енгізу үшін, келесілерді орындау қажет: Data Access парағындағы TТable компонентін формаға немесе деректер модуліне орналастыру; DatabaseName қасиетіне ДҚ орналасқан каталог немесе псевдоним атын беру; TableName қасиетіне кесте атын беру немесе тізімнен кесте атын таңдау;


Формаға DataSource компонентін орналастыру және DataSet қасиетінің мәніне TТable компоненті атына беру; Data Controls компоненттерін орналастыру және оларды DataSource компонентімен байланыстыру, яғни ДҚ кестелеріндегі деректер экранда көріну үшін. TDBGrid компоненті TDBGrid компоненті TTable немесе TQuery компоненттері деректерін экранда кестелік түрде көрсетуді қамтамасыз етеді. Қосымшада берілген ДҚ көрсету, қою, жою, өңдеу үшін TDBGrid қолданады. Әдетте TDBGrid DBNavigator-мен бірге қолданылады, сонымен қатар басқа да интерфейстік элементтерді TTable компонентінің First, Last, Next, Ptior, Insert, Delete, Edit, Append, Post, Cancel өңдеуші оқиға әдістерін қосу арқылы қолдануға болады. Кестенің сыртқы түрін (мысалы, баған тақырыбы жазуын) өңдеушінің Columns Editor қасиеті арқылы өзгертуге болады. Columns Editor шақыру DBGrid компонетінің контекстті мәзірінен сәйкес опцияны таңдау арқылы немесе объектілер инспекторы бағанынан Columns қасиетінің мәнін беру арқылы жүзеге асады.

4.18 -сурет. DBGrid бағаны қасиетін Columns Editor арқылы орнату.

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


Float, Integer және Date өрістері DisplayMask қасиетіне ие. Бұл қасиетті, деректерді DBGrid компонентінде немесе Data Controls-тың басқа компонентінде форматтау үшін қолдануға болады. Мысалы, дата типті өрістерге mm-dd-yy экрандық форматын қолдануға болады. Кейбір TField (мысалы, TStringField) компоненттері EditMask қасиетіне ие, ол DBGrid және басқа Data Controls компоненттеріне деректерді енгізуді орнатады. EditMask қасиетін орнату үшін Object Inspector-дегі Field компонентін орнатып, EditMask қасиетін таңдау керек, кейін Input Mask Editor диалогты панелі көрінеді /4.19сурет/. Өңдеу маскасын тексеру үшін Test Input өрісіне мән енгізу қажет

4.19-сурет. Input Mask Editor диалогтік панелі

Жаттығу жұмыстары

Қарапайым қосымша құру ДҚ кестелерін өңдеуге арналған қарапайым қосымша құрып көрейік. Ол үшін BCDEMOS деректер қорындағы COUNTRY кестесін қолданамыз, C++ Builder комплектісінің құрамындағы. Жаңа жоба құрамыз және оның басты формасын COUNT1.CPP деп сақтаймыз, ал жобаның өзін COUNT.MAK деп сақтаймыз. Data Access парағының компоненттер палитрасын қолдана отырып, TTable және DataSource компоненттерін формаға орналастырамыз. Table1 компонентінің Database Name қасиетіне BCDEMOS мәнін


орнатамыз, TableName қасиетіне COUNTRY.DB мәнін, Active қасиетіне true мәніне теңестіреміз. Ары қарай DataSource1 компонентінің DataSet қасиетінің мәніне Table1 теңестіреміз. Data Controls парағының компоненттер палитрасын қолданып, формаға DBGrid және DBNavigator компоненттерін орналастырамыз. Екі компоненттің DataSource қасиетіне DataSource1 мәнін меншіктейміз.

4.20-сурет. COUNT қосымшасының басты формасы

Алынған жобаны компиляциялауға және тестілеуге болады. Бұдан басқа, осындай қосымша құрудың өте қарапайым әдісі бар. Осы мақсатта мәзірден Database/Explore пунктін таңдап, SQL Explorer утилитасын қолдануға болады. SQL Explorer терезесінің сол жақ бөлігінен Databases парағын таңдап және сәйкесінше деректер қоры атының жаңындағы "+" белгісін басып, Tables опциясын таңдау қажет. Осыдан кейін терезенің оң жақ бөлігінен Summary бүктемесін таңдаймыз және қажетті кесте аты (біздің жағдайда COUNTRY.DB) жұлдызшасын тышқан арқылы бос формаға әкелеміз. Формада TDBGrid, TDataSource және TTable компоненттері пайда болады. Осыдан кейін DBNavigatorды қосып, оны TDataSource-пен байланыстырамыз және кестені белсенді етеміз.


4.21 -сурет. SQL Explorer

Өзіндік жұмысқа тапсырмалар

1. Студенттердің стипендиясын есептеу. Студенттерге төлейтін стипендияны есептейтін деректер қорын құру, онда келесі мәліметтер болуы керек: сынақ кітапшасының нөмірі, фамилиясы, аты, студенттің тегі, туған жылы, топ шифры, рейтинг, ақы коэффициенті, негізгі степендия, ақы суммасы, жалпы сумма, айлық төлем және т.б. Жоғарғы стипендия алатын студенттер санын, орташа стипендияны, стипендия алмайтындар санын анықтау (%-бен), сонымен қатар жалпы стипендиялық фондты анықтау. 2. Автотранспорттық шаруашылық жұмысының есебі. Келесі мәліметтері бар деректер қорын құру: жүргізушінің табельдік нөмірі, фамилия және инициалы, класс, дата, жүру уақыты, тоннасы, жол парағының нөмiрi, автомобил типі, нөмірі және т.б. Әрбір жүргізушіге ағымдағы айлығын есептеу, 1 км_тоннасы – 3 000 т. 3. Компьютерлік фирма жұмысы есебі. Келесі мәліметтері бар деректер қорын құру: компьютер маркасы, процессор типі, қатты диск және оперативті жады өлшемі , бағасы, бастапқы саны, сатылу датасы, сатып алушы фамилиясы, сатылғандар саны және т.б. Белгілі уақыт аралығында сатылған бір маркалы компьютерлер санын есептеу және тізімін шығару. 4. Аэропорт кассасы жұмысының есебі. Келесі мәліметтері бар деректер қорын құру: рейс нөмірі, белгіленген пункт, ұшу уақыты, жолаушылардың фамилиясы және


инициялы, документ нөмірі, рейске билет құны, рейс билеттерінің сатылу санын анықтау 5. Оқытушылардың жүктемесiн есептеу. Келесі мәліметтер бойынша деректер қорын құру: табельдік нөмірі, фамилиясы, аты, тегі, жұмысқа кірген жылы, атағы, ғылыми дәрежесі, пәндері, семестр нөмірі, сағат саны, экзамен немесе сынық және т.б. Профессорлер, доценттер және ассистенттер құрамының пайызын есептеу, сонымен қатар әр оқытушының жалпы жүктемесін сағатпен есептеу. 6. Автосалондағы машиналарды маркасына, шыққан жылына және бағасына және түсіне қарай сұрыптап шығарып беретін деректер қоры қосымшасын құру. 7. Поликлиникадағы дәрігерлердің аты-жөні бойынша, мамандығы бойынша және еңбек өтілі бойынша деректер қоры қосымшасын құрыңыз. 8. Кітапханадағы кітаптарды, авторы, шыққан жылы, бағасы және тиражы бойынша деректер қоры қосымшасын құрыңыз. 9. Аэропорт анықтамалық бюросының мәліметтеріне сәйкес рейстерді бағыттары бойынша, апта күндері бойынша және номерлері бойынша деректер қоры қосымшасын құрыңыз. 10. Стоматологқа келушілердің тізімі, келген күні бойынша және дәрігері бойынша деректер қоры қосымшасын құрыңыз.

12 – зертханалық жұмыс. С++ Buildеr 6 ортасында деректер қорын басқару

Әдістемелік нұсқаулар

Borland C++ Builder ортасы деректер қорына қатынаудың үлкен мүмкіндіктеріне ие. Деректер қоры тек сақтауға емес, сонымен қатар ақпараттарды таңдау және өңдеуге, маңызды аспектілердің бірі оларға сұраныстар құруға арналған. C++ Builder-дегі сұраныстар – өзімен бірге деректер жиынын ұсынатын объект. Әдетте сұраныстар құру үшін TQuery компоненті – TDataSet абстрактілі класының тума класстары қолданылады. TQuery компоненті TQuery компоненті TTable компоненті сияқты, TDataSet компонентінің барлық қасиеттеріне ие. TDataSource компоненті Data Controls компоненттері және TQuery компоненті арасындағы өзара әрекеттерді басқарады. Әдетте қосымшада әрбір TQuery компонентіне бір DataSource компоненті болады. TQuery компонентінің жиі қолданылатын қасиеттері: Active - берілген сұраныс ашық (true) немесе жабық (false) екенін көрсетеді.


Eof, Bof – бұл қасиеттер, ағымдағы жазба көрсеткіші деректер жиынының сәйкесінше бірінші немесе соңғы жолында болғанда true мәнін қабылдайды, яғни сұраныстың орындалу нәтижесі болатын. DatabaseName - сұраныс жүзеге асатын каталог аты немесе қашықтағы ДҚ псевдонимі (alias). DataSource – параметрленген сұраныстар үшін деректер көзін көрсетеді. Fields – бұл қасиет тек орындалу уақытында қол жетімді (run-time only) және реттік нөмірі бойынша анықталған өрісті модификациялау немесе оқу үшін қолданылады. Params – құрамында параметрленген сұраныстар үшін параметрлер болады, келес і мысалдағы SomeNo сияқты Select * from Orders where CustNo=:SomeNo SQL – жолдық массив, құрамында SQL сұраныс операторының мәтіні бар. TQuery компоненті экранда көрінетін деректер жиынын құру және анықтау, жолдарды өңдеу, жою және қою үшін SQL операторларын қолдануға рұқсат береді. RequestLive – егер бұл қасиет true мәнін иемденсе, сұраныс синтаксисінің нәтижесі, қолданушы деректер өзгерісін ДҚ-да сақтай алады. Егер RequestLive false мәнін иемденсе сұраныс нәтижесі read-only күйіне қайтарылады. TQuery компонентінің келесі әдістері жиі қолданылады: ExecSQL – SQL-сұраныстарды орындайды. Бұл әдісті деректерді жою немесе өңдеу, қою кезінде қолдану керек. SELECT (деректерді таңдау) операторы орындалғанда Open әдісін қолдану керек. Келесі мысал ExecSQL әдісін қолдануды көрсетеді: Query1->Close(); Query1->SQL>Clear(); Query1->SQL->Add("Delete emp where empno=1010"); Query1>ExecSQL(); Open - TQuery компонентін ашады. Ол Active қасиетіне true мәнін меншіктеу эквиваленті. Сұраныс нәтижесі деректер жиыны болғанда қолданылады (әдетте мұндай сұраныстар SELECT операторынан басталады). Open әдісін қолдану мысалы: Query1->Open(); Close - TQuery компонентін жабады. Close шақыру эквиваленті Active қасиетіне false мәнін меншіктеу. Close әдісін қолдану мысалы: Query1->Close(); TQuery компоненттерінің жиі қолданылатын әдістері: First, Last, Next, Prior ағымдағы жазба көрсеткішін сәйкесінше бірінші, соңғы, келесі және алдынғы жазбаларға ауыстырады.


Insert, Edit, Delete, Append, Post, Cancel – сұраныс нәтижесін түрлендіреді. Insert әдіс і жол сұранысы нәтижесіне енгізуге мүмкіндік береді, мысалы: Query2->Insert(); Query2->Fields[0]->AsInteger = 100; Query2>Fields[1]->AsString =Edit1->Text; Query2->Post(); Post әдісі Insert, Update немесе Delete операцияларын бекітеді. Cancel әдісі Insert, Delete, Edit немесе Append аяқталмаған операцияларын болдырмайды. Visual Query Builder Visual Query Builder (VQB) – SQL-ге негізделген сұраныстар құрудың визуалды құралы болып табылады. Бұл құрал арқылы комплексті сұраныстар құруға болады. Visual Query Builder –ді TQuery компонетін таңдау арқылы және тышқанның оң жағын басып, пайда болған контексті мәзірден Query Builder опциясын таңдау арқылы шақыруға болады. Ескерту. Visual Query Builder - Borland C++ Builder барлық версиясының комплектісіне кірмеуі немесе орнатылмаған болуы мүмкін. Бұл жағдайда контекстті мәзірде сәйкес опция болмайды. Query Builder таңдағаннан кейін экранда Databases диалогтік панелі пайда болады, ол ДҚ таңдауға және онымен байланысты жүзеге асыруға мүмкіндік береді /4.22-сурет/.

4.22-сурет. Деректер қоры псевдоним таңдау


Деректер қорымен байланысқаннан кейін экранда Visual Query Builder терезесі шығады және сұраныста қолданатын кестелерді таңдау диалогтық панелі пайда болады /4.23-сурет/.

4.23-сурет. ДҚ-мен байланысқаннан кейін Visual Query Builder терезесі және Add Table диалогтық панелі пайда болады.

Visual Query Builder инструменттер панелі кестеде көрсетілген.

Батырма

Міндеттері

New

Жаңа сұраныс құрады.

Open

Сұраныс файлын ашады.

Save As

Сұранысты файлда сақтайды.

Options

Options диалогтік панелін экранға орналастырады, сұраныстың әртүрлі опцияларын орнатуға мүмкіндік береді.

Table

Table диалогтік панелін экранға орналастырады, SQL операторға кестелер


енгізуге мүмкіндік береді. Expression Expression диалогтік панелін экранға орналастырады, ол есептейтін өріс құруға мүмкіндік береді. SQL

Генерацияланған SQL- сұраныстың мәтіні бар терезе шығарады.

Run

Выполняет сгенерированный запрос и выводит на экран результаты.

OK

TQuery компонентінің қасиетіне генерацияланған сұранысты меншіктейді және Visual Query Builder жабады.

Cancel

TQuery компонентінің қасиетіне генерацияланған сұранысты меншіктеуді болдырмайды және Visual Query Builder жабады.

Help

Visual Query Builder үшін жүйелік көмекті экранға шығарады.

Add Table диалогтік панелі /4.23-сурет/ Visual Query Builder ашылған кезде немесе диалогтік панелдің сәйкес батырмаларын таңдағанда пайда болады. Ол сұранысқа кестелер енгізеді, ағымдағы ДҚ барлық кестелер тізімін шығарады. Егер Include System Tables опциясын белгілесек, сұраныстар құру үшін берілген ДҚ-ның жүйелік кестелері қол жетімд і болады.


4.24 -сурет. Visual Query Builder жұмыс бетінде тізімнен таңдаған кесте пайда болады

Сұранысқа бір немесе бірнеше кесте енгізу үшін келесілерді орындау қажет:  Егер Add Table диалогтік панелі экранда жоқ болса, оны экранға шығару үшін инструменттер панелінен Table басылады.  Диалогты панелдегі кесте тізімінен кесте аты таңдалады және Add батырмасын басамыз. Таңдалған кесте құрылы сипаттамсы Visual Query Builder терезесінің жоғарғы бөлігінде көрінеді.  керекті кестелер сұранысқа енгізілгенше екінші қадам қайталана береді, соңынан Close батырмасы басылады. Кестелердің бірінің бағанын сұранысқа енгізу үшін, баған атын таңдау керек және осы бағанды терезенің төменгі бөлігіндегі кестеге орналастырады.

4.25-сурет. Аралас сұраныс құру

Бірнеше кестелер ақпараттарын араластыру үшін, әртүрлі кестелер қалай байланысатынын анықтау керек. Visual Query Builder көмегімен кестелер байланысына қызмет ететін бағандарды анықтауға болады. осы мақсатта, кестеаралық байланысты жүзеге


асыратын, байланысқан кестелердің бірінен баған атын таңдау керек, сосын тышқанның сол жағымен басып және курсорды басқа кестенің сәйкес бағанына алып барамыз. Нәтижесі – суретте көрсетілген. Кестелердің байланысу критерийін өңдеуге және көруге болады, яғни Visual Query Builder терезесінің жоғары бөлігінде байланысты көрсететін сызықты екі рет шерту арқылы. Осылай Join диалогтік блогы пайда болады /4.26-сурет/:

4.26-сурет. Кестелердің байланысу критерийін таңдау

Сұраныстың сұрыптау критерийін анықтау үшін, Visual Query Builder терезесінің төменгі бөлігіндегі кестеден Criteria жолын қолдану керек. Criteria жолы SQL операторының WHERE ұсынған сұраныс өрнектерін қабылдайды, кестеде көрсетілген: Өрнек

Сипаттамасы

=

Тең

>

Үлкен

<

Кіші

!=

Тең емес


Like

Үлгiмен салыстырылатын символдар жолы

Between

Бастапқы мәннен кіші емес және соңғы мәннен үлкен емес

In

Тізім құрамында болады

Есептейтін өріс құру үшін батырмамен инструменттер панеліндегі Expression басамыз. Expression диалогтік панелі пайда болады /4.28-сурет/.

4.28-сурет. Expression диалогтік панелін шақыру

Expression диалогтік панелі сұраныста арифметикалық операцияларды көбейту, бөлулер, қосу, алу, бағандардың аты және avg, count, min, max, sum сияқты құрама өрнектерді қолдануға мүмкіндік береді. Visual Query Builder-мен генерацияланған сұраныс орындауға болады. Сұраныс нәтижесі Result Window (нәтижелер терезесі) диалогтік панеліндегі экранда көрінеді. Бұл терезе бағандар сұранысы, таңдау критерийі, топтастыру және сұрыптау критерийлері дұрыс анықталғанына көз жеткізуге мүмкіндік береді. Сұранысты орындау үшін, батырмамен инструменттер панеліндегі Run-ды басу қажет. Result Window терезесі пайда болады /4.29сурет/.


4.29-сурет. Сұраныс нәтижесі Result Window экранында көрінеді

4.30 -сурет. SQL Statement терезесіндегі SQL генерацияланған операторы


Сұраныс мәтінін тексеруге болады, SQL Statement терезесін қарау арқылы. Бүл терезе генерацияланған SQL операторын көрсетеді. Сұраныстар бағаны, таңдау критерийі, топтастыру немесе сұрыптау критерийі өзгергенде және қосқанда SQL Statement терезесі автоматты өңделеді /4.30-сурет/. Visual Query Builder жұмысын аяқтау үшін инструменттер панеліндегі жасыл белгісі бар батырманы басу керек. Осыдан кейін TQuery компонентінің Visual Query Builder белсенді болған SQL қасиетіне SQL-сұранысының генерацияланған мәтіні меншіктеледі.

Жаттығу жұмыстары

1-жаттығу.

TQuery компонентін қолдану TTable, TQuery, TDataSource, TDBGrid компоненттерін қолданып қосымша құрып көрейік. Бұл мақсатқа Customer.db және Orders.db кестелерін пайдаланамыз, олар Borland C++ Builder комплектісіне кіретін BCDEMOS деректер қорында орналасқан. Құрылған қосымша Customer кестесінен клиенттер тізімін, Orders кестесінен олардың тапсырыстарын шығару керек, сонымен қатар клиент нөмірі диапазонын таңдауға рұқсат беруі қажет. Жаңа прект құрамыз және оның басты формасын CUST1.CPP деп, ал жобаны CUST.MAK деп сақтаймыз. Форма тақырыбын "Контроль заказов" тақырыбына өзгертеміз. Формаға TDBGrid компонентін, екі TGroupBox компонентін, бір Ttable компонентін, екі Tquery компонентін, үш TDataSource компонентін орналастырамыз. GroupBox1 компонентіне үш TRadioButton компонентін және екі TButton компонентін қоямыз. GroupBox2 компонентіне екі TEdit компонентін және бір TButton компонентін қоямыз.


4.31 -сурет. CUST қосымшасы формасына компоненттерді орналастыру

Бұл компоненттерге келесі қасиеттерді орнатамыз: Компонент аты Қасиеті Table1

Мәні

DatabaseName BCDEMOS TableName

CUSTOMER.DB

Active

False

DataSource1

DataSet

Table1

DBGrid1

DataSource

DataSource1

Query1

Database Name BCDEMOS

DataSource2

SQL

select * from orders

Active

False

DataSet

Query1


Query2

DatabaseName BCDEMOS

DataSource3

DataSet

Query2

Button1

Caption

Открыть список &клиентов

Button2

Caption

Открыть список &заказов

RadioButton1

Caption

Клиенты

Checked

True

RadioButton2

Caption

Заказы

GroupBox1

Caption

GroupBox2

Caption

Button3

Caption

Edit1

Text

Edit2

Text

Label1

Caption

Начало:

Label2

Caption

Конец:

RadioButton3

Caption

Заказы клиентов

Установить &диапазон

Button1 батырмасына OnClick оқиғасын құрамыз: void

fastcall TForm1::Button1Click(TObject *Sender)

{ if (Table1->Active) { Table1->Close(); Button1->Caption = "Ioe?uou nienie &eeeaioia"; } else { Table1->Open();


Button1->Caption= "Cae?uou nienie &eeeaioia"; } } Енді осы батырманы басқанда Customer кестесі бірде ашылады, бірде жабылады, сонымен қатар батырмадағы жазу өзгеріп отырады. Button2 батырмасына OnClick өңдеуші оқиғасын құрамыз : void

fastcall TForm1::Button2Click(TObject *Sender)

{ if (Query1->Active) { Query1->Active = false; Button2->Caption = "Ioe?uou список &caeacia"; } else { Query1->Active = true; Button2->Caption = "Заe?uou список &caeacia"; } } Button2 батырмасын басқанда Query1 сұранысы бірде ашылады, бірде жабылады, құрамында тапсырыстар тізімі бар: RadioButton1 және RadioButton2 радиобатырмаларына OnClick өңдеуші оқиғасын құрамыз: void

fastcall TForm1::RadioButton1Click(TObject *Sender)

{ DBGrid1->DataSource = DataSource1; } //-----------------------------------------------------------------------void

fastcall TForm1::RadioButton2Click(TObject *Sender)

{ DBGrid1->DataSource =DataSource2;


} Енді осы радиобатырмалар көмегімен клиенттер тізімі және тапсырыстар тізімі арасында ауысуға болады. Button3 батырмасына OnClick өңдеуші оқиғасын құрамыз: void

fastcall TForm1::Button3Click(TObject *Sender)

{ if (Table1->Active) { Table1->SetRangeStart(); Table1->Fields[0]->AsString = Edit1->Text; Table1>SetRangeEnd(); Table1->Fields[0]->AsString = Edit2->Text; Table1>ApplyRange(); } } Енді Edit1 және Edit2 өңдеу өрістері және Button3 батырмасы көмегімен клиенттер нөмірі диапазонын таңдауға болады, яғни олар туралы мәліметтер DBGrid1 көрінуі үшін. Сосын Visual Query Builder арқылы Query2 компонентінің SQL қасиетін орнатамыз. Деректер қоры аты ретінде BCDEMOS таңдаймыз және сұранысқа CUSTOMER және ORDERS кестелерін енгіземіз. Ары қарай кестелер арасында байланыс орнатамыз. Сұранысқа келесі өрістерді енгіземіз:    

Customer.CustNo Customer.Company Orders.OrderNo Orders.AmountPaid


4.32-сурет. Аралас сұраныс құру үшін Visual Query Builder қолдану

Енді сұраныс нәтижесін сатып алушы нөмірі бойынша сұрыптаймыз және Visual Query Builder –ден шығамыз. Объектілер инспекторын қолданып, Query2 компонентін таңдаймыз және Active қасиеті мәнін true теңестіреміз. RadioButton3 радиобатырмасына OnClick өңдеуші оқиғасын құрамыз: void

fastcall TForm1::RadioButton3Click(TObject *Sender)

{ DBGrid1->DataSource= DataSource3; } Қосымшаны компиляциялаймыз. Қос деректер жиынын ашу үшін. батырмамен "Открыть список заказов" басамыз. Радиобатырмаларды қолданып, олардың арасында ауысып көреміз.


4.33-сурет. Дайын қосымша осылай көрінеді

2-жаттығу

Деректер модулі. Алдынғы жаттығуда Data Access беті компоненттерін қосымшаның басты формасына орналастырдық. Бірақ мұндай жағдай, формада көп санды көрінбейтін компоненттердің болуы қолданушы интерфейсін жобалауды қиындатады. Осы мақсатта C++ Builder-де арнайы деректер модулі - TDataModule типі бар. Осы типтегі компонентті шартты түрде форма түрі деп қарастыруға болады. мұндай компонент-контейнер Data Access беті компоненттерін құрамында ұстай алады, ал өзі бағдарламаның орындалу уақытында қолданушыға көрінбейді. Жоғарыда келтірілген жаттығудың басқа нұсқасын деректер модулін қолданып құрып көрейік.

4.34-сурет. Деректерге қатынау компоненттерін DataModule-ге орналастыру


Қосымша коды: //---------------------------------------------------#include <vcl\vcl.h> #pragma hdrstop #include "cust1.h" #include "custdm1.h" // деректер модуліне сілтеме //----------------------------------------------------#pragma link "Grids" #pragma resource "*.dfm" TForm1 *Form1; //----------------------------------------------------fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) { } //----------------------------------------------------void fastcall TForm1::Button1Click(TObject *Sender) { if (DataModule1->Table1->Active) { DataModule1->Table1->Close(); Button1->Caption = "Открыть таблицу &клиентов"; } else { DataModule1->Table1->Open(); Button1->Caption= "Закрыть таблицу &клиентов"; }; } //----------------------------------------------------void fastcall TForm1::Button2Click(TObject *Sender) { if (DataModule1->Query1->Active) { DataModule1->Query1->Active = false; Button2->Caption = "Открыть таблицу &заказов";} else { DataModule1->Query1->Active = true; Button2->Caption = "Закрыть таблицу &заказов"; } } //----------------------------------------------------void fastcall TForm1::RadioButton1Click(TObject *Sender) { DBGrid1->DataSource = DataModule1->DataSource1; }


//----------------------------------------------------void fastcall TForm1::RadioButton2Click(TObject *Sender) { DBGrid1->DataSource = DataModule1->DataSource2; } //----------------------------------------------------void fastcall TForm1::RadioButton3Click(TObject *Sender) { DBGrid1->DataSource = DataModule1->DataSource3; } //---------------------------------------------------void fastcall TForm1::Button3Click(TObject *Sender) { if (DataModule1->Table1->Active) { DataModule1->Table1->SetRangeStart(); DataModule1->Table1->Fields[0]->AsString = Edit1->Text; DataModule1->Table1>SetRangeEnd(); DataModule1->Table1->Fields[0]->AsString = Edit2->Text; DataModule1->Table1>ApplyRange(); } } //-----------------------------------------------

Өзіндік жұмысқа тапсырмалар

DataModule және TQuery компоненттерін қолданып деректер қоры қосымшасын құру: 1. Жоғарғы оқу орнының студенттері туралы мәліметтер. 2. Автотранспорттық шаруашылық жұмысы. 3. Компьютерлік фирма жұмысы. 4. Аэропорт кассасы жұмысы. 5. Оқытушылардың жүктемесiн есептеу 6. Автосалон жұмысы. 7. Поликлиника дәрігерлері туралы мәліметтер. 8. Кітапхана. 9. Аэропорт анықтамалық бюросының мәліметтері. 10. Стоматология.

13 - зертханалық жұмыс. QReport парағын пайдаланып есеп беруді ұйымдастыру

Әдістемелік нұсқаулар


C++ Builder ортасында есеп беруді құру үшін компоненттер палитрасындағы QReport беті қолданылады. Бұл компоненттер жиыны кестелерді, сұраныстарды, тізімдерді, мәтіндік файлдарды, массивтерді C++ Builder дизайнер формасын қолдана отырып есеп беруді жобалайды және баспаға шығарады. C++ Builder ортасының Forms объектілер репозитариясы бетінде есеп берудің 3 шаблоны бар:

Шаблон

Сипаттамасы

QuickReport Mailing Labels

Пошталық этикеттер құру шаблоны

QuickReport List

Қарапайым шаблоны

QuickReport Master/detail

Master/Detail есеп беруін құру шаблоны.

кестелік

есеп

беруді

құру

Жаттығу жұмыстары

Қарапайым есеп беруді құру QuickReport есеп беру негізі көлденен сызық (bands) жиынында. Есеп беруді құру кезінде формаға бірнеше әртүрлі типтегі QRBand (Tpanel мұрагері) компоненттері орналасады. Қарапайым есеп беруді құру үшін формаға келесі компоненттерді орналастырамыз /4.35-сурет/: TQRBand – бұл компонент есеп берудің бір бөлігі - мәліметтерді орналастыратын контейнер болады (мысалға, есеп беру тақырыбы, беттің жоғарға немесе төменгі колонтитулы, топтың жоғарға немесе төменгі колонтитулы және т.б. ). TQRBand компоненттері олардың формада орналасуына байланысты емес, олардың қажетті жерде есеп беру типтеріне тәуелді баспаға шығарылады. Бұл компоненттің жиі қолданылатын қасиеті &ndash BandType, «сызық» типі (топтың немесе беттің колонтитулы, мәліметтер «сызығы» және т.б.). Мүмкін мәндері: : rbTitle &ndash есеп беру тақырыбы, rbPageHeader &ndash беттің жоғарғы колонтитулы, rbColumnHeader &ndash бағанның жоғарғы колонтитулы, көп бағанды есеп беруде, rbDetail &ndash кестелі мәліметтер сызығы (жолда есеп беру негізі болатын мәліметтер жинағында неше жол болса, сонша рет қайталанады), rbPageFooter &ndash беттің төменгі колонтитулы, rbOverlay &ndash беттің фоны, әр беттің сол жақ жоғарғы бұрышында баспаға басылады, rbGroupHeader &ndash топтың тақырыбы, rbSubDetail &ndash Detail-кестесі үшін кестелі мәліметтер «сызығы», rbGroupFooter &ndash топтың төменгі колонтитулы, rbSummary &ndash есеп берудің соңында баспаға басылады. Біз құрған компоненттің BandType қасиетіне rbTitle мәнін меншіктейміз. TQuickReport (бұл компонент форманың есеп беруге айналуына жауапты).


QRBand1 орналасқан TQRLabel (бұл компонент статистикалық мәтінді шығаруға арналған, және оның Caption қасиетіне болашақтағы есеп берудің тақырыбы мәтінін беруге болады).

4.35 -сурет. Есеп беру тақырыбын құру

Егер QuickReport1 компонентің тышқанның оң жақ батырмасымен басып, контекстті мәзірден Preview Report опциясын таңдасақ, тақырыбы бар есеп беру беті көрінетін көру терезесі пайда болады. Есеп беруді модификациялау үшін QRBand1 компонентінің BandType қасиетін rbDetail-ге өзгерту керек және формаға Ttable компонентің қосу қажет. Әрі қарай оның DataBase қасиетіне псевдоним атын орнату қажет, мысалға, BCDEMOS, TableName қасиетіне кесте атын, мысалға, CUSTOMER.DB, сосын Active қасиетін true өзгерту керек. Осыдан кейін формаға TDataSource компонентін қосу қажет және DataSet қасиетіне алдында қосылған Table1 компоненті атын береміз, әрі қарай QuickReport компонентінің DataSource қасиетіне құрылған DataSource1 компоненті атын береміз. Осыдан кейін QRBand1-ге TQRDBText компонентін қосуға болады, оның DataSource қасиетіне алдында құрылған DataSource1 компоненті атын береміз және DataField қасиетінің мәніне керекті жолды таңдаймыз. Егер қажет болса басқа TQRDBText компоненттерін қосуға болады және есеп беруде көрінетін кесте жолдарын басқаша етіп таңдауға болады /4.36-сурет/.

4.36-сурет. Кестелік есеп берудің модификациясы


Егер QuickReport компонентінің контекстті мәзірінен Preview Report опциясын таңдасақ, модифицирленген кестелік есеп беруді көруге болады. Енді тақырыпты есеп беру және колонтитулды есеп беруді құрып көрейік. Ол үшін есеп беруді құру кезінде TQRBand-тің бірнеше әртүрлі компоненттерін қолданамыз. Тақырыптық және колонтитулдік есеп беруді құру кезінде жаңа форма құру қажет, формаға төрт TQRBand компонентін орналастырамыз (олар үнсіздік бойынша QRBand2,...., QRBand5 атын алады) және BandType қасиетіне сәйкесінше rbTitle, rbColumnHeading, rbDetail және rbPageFooter орнатамыз. Ары қарай формаға TTable компонентін қосу қажет және DatabaseName қасиетіне BCDEMOS береміз, TableName қасиетіне Customer береміз, сосын Active қасиетіне true қоямыз. Формаға TDataSource компонентін қосу қажет және DataSet қасиетіне алдында қосылған Table1 атын береміз және QuickReport компонентінің DataSource қасиетіне құрылған DataSource1 атын береміз. Сосын есеп беру тақырыбы және сәйкесінше TQRBand компоненттері бағандары үшін бірнеше TQRLabel компонентін қосу керек, әрқайсының Caption қасиетіне қажетті мәндерін беру керек. Сосын QRBand компонентіне үш QRDBText компонентін орналастыру керек, BandType қасиетіне DetailBand меншіктеп және олардың DataSource қасиетіне DataSource1 меншіктейміз, ал DataField қасиетіне Company, Phone және Fax меншіктейміз. Беттің нөмірі көріну үшін TQRSysData компонентін (бұл компонент мәліметтер құрамына тәуелсіз, бет нөмірі, жыл, уақыт және т.б. арналған) BandType қасиеті rbPageFooter тең TQRBand компонентіне орналастыру қажет және оның Data қасиетіне qrcPageNumber, ал Text қасиетіне &ldquoСтр. &ldquo береміз. Осыдан кейін форма 3-суреттегідей болады. Қайтадан Preview Report опциясын таңдап, жаңа есеп беру мазмұнын көруге болады.

4.37-сурет. Тақырыпты және колонтитулды есеп беру

Өзіндік жұмысқа тапсырма


1. "master-detail" есеп беруін құру 2. Есеп беруде графикалық және мемо-жолдардың көрінуін қамтамасыз ету 3. Есеп беруді алдын-ала көру 14 - зертханалық жұмыс. Қосымшаның анықтамалық жүйесін құру

Әдістемелік нұсқаулар С++Builder- де жасалатын қосымшаның анықтамалық жүйесін құру келесі 4 кезеңдерден тұрады: 1. Басқару элементтерінің /форма және ондағы компоненттер/ контекст номерлерін тағайындау; 2. Мәтіндік редакторды /мысалы, Word-ты/ пайдаланып анықтамалық жүйенің мәтіндік файлын жасау; 3. Арнаулы компилятор көмегімен анықтама файлын жасау; 4. Анықтама файлын қосымша жобасына апарып қосу. Компоненттердің контексттік номерлерін тағайындау. Форма және онда орналасқан компоненттер анықтамалық жүйеге сәйкес контексттік номер ала алады, ол үшін компоненттің HelpContext қасиетіне анықтама файлындағы сәйкесінше тақырыптың номері беріледі. Қосымша орындалған кезде компонентті белгілеп алып F1 пернесін бассаңыз анықтама терезесінде сол компонентке қатысты анықтаманы көре алатын боласыз, егер оған сәйкес бөлім немесе тақырып тағайындалмаған болса сәйкесінше хабарлама шығады. Жаттығу жұмыстары Анықтамалық жүйенің мәтіндік файлын жасау. Анықтамалық жүйенің мәтіндік файлы кез-келген мәтіндік редакторда, бірақ *.rtf форматта жасалады. Мұны жасау үшін Microsoft Word процессорын да пайдалануға болады. Мәтіндік файл жеке тақырыптарды білдіретін бөлімдерден /немесе парақтардан/тұрады. Microsoft Word -та анықтама мәтіндік файлындағы бөлімдердің атрибуттары сноскалар түрінде беріледі, бөлімге сносканы қою үшін курсорды бөлімнің тақырыбының алдына /немесе соңына/ апарып, Вставка>Сноска / Word 2003/ немесе Ссылки>Вставить сноску / Word 2007/ командаларын орындайды. 1-кезең. С++Builder ортасында екі санды қосуды орындайтын қрапайым қосымша құрыңыз, қосымша терезесі келесі түрде 4.38-сурет. ProbHelp.rtf файлынын болсын /4.39-сурет/ және қосымшаны жеке бастапқы терезесі бумаға сақтап қойыңыз. Суреттегіге сәйкес форма тақырыбын, Label, Edit және

Button


компоненттерінің сәйкес қасиеттерін өзгертіңіз. Жоғарыда құрылған ProbHelp.rtf файлындағы бөлімдердің номеріне сәйкес Edit1 компоненттің контекст номеріне яғни HelpContext қасиетіне 2 мән береміз, себебі оған сәйкес анықтама бөлімі Kosilgiw1 –дің реттік номері 2-ге тең, тура сол сияқты Edit2 мен Edit3 –тің HelpContext қасиеті сәйкесінше 3 пен 4 болады да, Button1 компонентінің HelpContext қасиеті өзіне сәйкес бөлімнің реттік номері 5- ші номерді алады.

4.39-сурет. Анықтама файлын пайдаланатын қосымша терезесі

2-кезең.Бұл кезең Microsoft Word редакторын пайдаланып, бастапқы *.rtf форматтағы анықтаманың мәтіндік файлын құруды қамтиды. Программадағы элементтерге сәйкес оның жалпы көрінісі келесі түрде болады /4.38, 4.39-сурет/ және бұл файлды, қосымша үшін ашылған буманың ішінен MyHelp деген жаңа бума ашыңызда сонда ProbHelp.rtf деген атпен сақтаңыз. Бұл құжаттың терезесінде 4.38- суреттегідей мәтіндерді теру керек /анықтама терезесінде шығатын мәтін өзгеріп кетпес үшін ағылшын әріптері пайдаланылды/ және мұнда ең алғашқы бөлім «Programma turali» Word-тағы Заголовок1 стилімен теріледі, ал қалған бөлімдердің тақырыптарын жай «қалың бояулы» шрифтімен жаса жеткілікті. Мәтін теріліп болған соң әрбір бөлімге сәйкес «сноскалар» қойылады/4.40-сурет, сол жақтағы терезе/. Келесі қадамда курсорды бөлімдерде орналасқан жай мәтіндер мен келесі бөлім тақырыбының арасына қойып, Вставка->Разрыв страницы командасын орындайсыз сонда 5 бөлімге сәйкес 5 терезе шығады /4.40-сурет, ортада және оң жақтағы терезелер/. Файлды *.rtf форматта сақтауды ұмытпаңыз.


4.40 -сурет. ProbHelp.rtf файлынын «сноска» қойылғаннан кейінгі /сол

3-кезең. 3.1. Microsoft Word -та жасалған MyHelp/ProbHelp.rtf форматтағы мәтіндік файлды анықтамалық жүйенің *.hlp файлына айналдыру үшін арнаулы Microsoft Help Workshop компиляторын ашу керек, ол үшін Programm Files/Borland/СBuilder6/ HELP/TOOLS каталогында Microsoft Help Workshop компиляторының hcrtf.exe файлын іске қосамыз, сонда келесі терезе пайда болады /4.42- сурет/. 3.2. Келесі қадамда File->New командасы орындалады , пайда болған терезеден Help Project таңдалынады. 3.3. Пайда болған Project File Name терезесінде, әуелі манағы даярланған ProbHelp.rtf форматтағы мәтіндік файл сақталған MyHelp бумасын ашып алу керек, сонан соң барып Имя файла тұсындағы терезеге жоба файлының атын, мысалы HelpProjFile1 теріп жазамыз /4.43-сурет./


4.42 -сурет. Microsoft Help Workshop компиляторының бастапқы терезесі

4.43-сурет. Project File Name терезесінде жоба файлының атын беру


3.4. «Сохранить» батырмасы басылғаннан кейін пайда болған HelpProjFile1.hlp файлының параметрлерін тағайындау басталады /4.44-сурет/.

терезеде

4.44 -сурет. HelpProjFile1.hlp файлының парметрлерін тағайындау терезесінің бастапқы түрі

Бұл терезеде келесі параметрлер өзгертіледі: - Files параметрі, бұл манағы даярланған ProbHelp.rtf файлына баратын маршрутты беру үшін қолданылады, ол үшін терезедегі сол Files батырмасына шертеміз, сонда Topic Files терезесі шығады, сол терезедегі Add батырмасына шертсеңіз ProbHelp.rtf файлы сақталған MyHelp бумасы ашылу керек, сол бумадағы жалғыз файл ProbHelp файлын белгілеп «Открыть» командасын орындайсыз, нәтижесінде 4.44- суреттегі терезеде келесі жол, Files параметрі пайда болады /4.45-сурет/; - Window парметрі, бұл программадағы анықтама шығатын терезенің атын беру үшін қолданылады, бұл параметрді тағайындау үшін Window батырмасына шертіледі, пайда болған Create a Window терезесіндегі курсор тұрған жерге main деп терезенің типін жазасыз, OK басылғаннан соң келесі терезе қасиеттерін беретін Window Properties терезесіндегі Title bar text тұсына терезенің атын, мысалы «АНЫҚТАМА ТЕРЕЗЕСІ» деп жазады, нәтижесінде 4.46- терезеде Window парметрінің жолы пайда болады; - Map параметрінің терезесінде ProbHelp.rtf анықтама файлындағы әрбір тақырыпшаға « #» таңбасы арқылы берілген идентификациялық атаудың /ID_1, ID_2, ... , ID_5/ оның «+» арқылы берілген реттік номерлеріне /1,2, ... , 5/ сәйкестігі тағайындалады, ол үшін терезедегі Map батырмасына шертіп, пайда болған терезедегі Add командасы орындалады, пайда болған келесі Add Map Entry терезеде Topic ID параметріне ID_1, ID_2, ... , ID_5 идентификациялық атауларды, ал Mapped Numeric Value парметріне сәйкес 1,2, ... ,5


номерлерді бір-бірлеп жазып және олардың әрқайсысы үшін ОК орындалып отырады, нәтижесінде 4.46-терезедегі Map параметрі пайда болады; - Config параметрінің қызметі анықтама файлының конфигурациясына өзгерістер енгізу, мысалы, анықтама файлында >> немесе << батырмаларын пайдаланып алдыға не кейінге оралуды жүзеге асыру үшін ол файлға BrowseButtons() функция-макросын қосу керек болады, ол үшін терезедегі Config батырмасына шертіп, пайда болған Configuration Macros терезесінде Add командасын орындалады, сонон соң шығатын Add Macro терезеде BrowseButtons() деп жазып, ОК басылады, нәтижесінде 4.46-терезеде Config параметрі шығады; - Соңғы қадам бұл параметрлері тағайындалған анықтама файлының жобасын компиляцияға жіберу ол үшін терезедегі Save and Compile батырмасына шертесіз, егер жобада қате болмай бәрі дұрыс болса нәтижесінде 4.47-суреттегі терезе шығады.

4.46-сурет. Анықтама файлы жобасының параметрлерін тағайындау


4.47- сурет. Анықтама файлының проектісін компиляциялаудың нәтижесін көрсететін терезе

4.48- сурет. MyHelp бумада пайда болған HELPPROJFILE1.hlp анықтама файлы және HelpProjFile1.hpj проект файлы Өзіндік жұмыстарға тапсырмалары


Келесі мазмұндағы программалардың анықтамалық жүйесін құрыңыз: 1 тапсырма 1. 2. 3. 4. 5.

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

2 тапсырма 1. 2. 3. 4. 5.

Азық-түлік дүкенінің ассортименті туралы мәлімет беретін; Поликлиниканың дәрігерлері туралы мәлімет беретін; Математикалық формулалар анықтамалығының қызметін атқаратын; Кітапханадағы картотека қызметін атқаратын; Атына сәйкес түстерді көрсете алатын;

3 тапсырма

Матриц а

Тапсырмалар

1

A(5,7)

Матрицаның әрбір бағанының оң элементтерінің Aij>0 қосындысын және олардың санын есте сақтау. Нәтижесін екі жол түрінде шығару.

2

A(N,M)

Матрицаның әрбір жолының оң элементтерінің N<=4 қосындысын және олардын санын есептеп есте M<=5 сақтау.Нәтижесін екі баған түрінде баспадан шығару.

3

B(N,N)

Матрицанын бас диагоналындағы және одан төмен N<=6 орналасқан элементтердің қосындысын және элементтер санын есептеу.

4

B(N,N)

Матрицаның бас диагоналынан төмен орналасқан оң N<=4 элементтерінін қосындысын және олардың элементтер Bij>0 санын есептеу.

5

D(K,K)

Матрицаның жұп орындағы элементтерінін орнына нольдерді матрицаны баспаға шығару.

6

D(4,4)

Матрицаның теріс элементтерінің орнына нөльдерді, ал оң элементтер орнына бірлерді жазу.

7

F(N,M)

Матрицаның әрбір жолындағы максималь және N<=5 минималь элементтерді тауып оларды сәйкесінше осы жолдың бірінші және соңғы элементтерінің орнына жазу M<=3

Шектеу

элементтерінің K<=5 жазып және Dij<0


керек. Матрицаны баспаға шығару керек. 8

F(4,3)

Элементтері бүтін сан болатын матрицанын әрбір (Nij / 4)*Nij жолынын төртке еселі элементтерінің санын және нәтижелерінің ең үлкенін табу керек.

9

N(5,3)

Элементтері бүтін саң болатын матрицанын әрбір (Nij / 5)*Nij жолынын беске еселі элементтерінің санын және нәтижелерінің ең үлкенін табу керек.

10

N(5,5)

M(3,Kmax) матрицасын құру керек, мұндағы Kmax- N матрицасының оң элементтерінің ең үлкені. Мұндағы M матрица элементтері N матрицаның оң элементтерін ғана ала алады, ал теріс элементтердің орнына ноль жазу керек.

15 - зертханалық жұмыс. Қосымшаны таратуға даярлау. Дистрибутивтер. Орнатушы инсталляциялық пакетті Install Shield Express утилитасы арқылы жасау

Әдістемелік нұсқаулар

Install Shield Express - инсталлятор құрудағы қуатты және ыңғайлы құралдардың бірі. Бұл түсінікті интерфейске, және деминимальды жады көлемін алатын профессионалды инсталляторларға тән керекті функциялар жиынтығына ие. Install Shield Express арқылы инсталляциялық қосымша құру үшін Install Shield Express орындалуга жібереміз. Жаңа жоба құру кезінде жобаның атын енгізіп, қосымша файлдары орналасқан каталогты көрсету қажет /4.49-сурет/.


4.49-сурет. Жаңа дистрибутив құру

"Include custom setup type" жалаушасын таңдаймыз. Осыдан кейін InstallShield-тың басты экраны пайда болады, онда дистрибутивтi жасауы үшiн орындау керек болатын адымдардың тiзбегi көрсетiлген /4.50- сурет/.

4.50-сурет. InstallShield Express басты терезесі

Set the Visual Design бөлiмiнде қосымша туралы мәлiметтерi бар өрiстерді толтыру керек: программалық топта көрінетін қосымша аты, орындалатын файл аты, қосымша орнататын каталог /4.51-сурет/.


4.51-сурет. Қосымша параметрлерін орнату

Install Shield қолданушы компьютерінің идентифицирлейтін бірнеше айнымалыларданады:

дискілерімен

каталогтарын

- <INSTALLDIR> - қолданушы көрсетуі арқылы орнатуға арналған каталог - <WINDIR> - құрамында Windows бар каталог - <WINSYSDIR> - Windows\System каталогы - <WINDISK> - құрамында Windows бар диск - <WINSYSDISK> - Windows\System каталогы бар диск - <ProgramFilesDir> - Program Files каталогы. Main Window бүктемесі арқылы инсталляционды қосымша тақырыбын, фон түсін және логотипін орнатуға болады /4.52-сурет/.


4.52-сурет. Инсталлятор экранының ішкі түрін орнату

Features бүктемесін шерту арқылы жалғыз Automatic Uninstaller опциясын көруге болады. Оны таңдалынған түрінде қалдыру қажет. Келесі бөлім - Specify InstallShield Options for Borland C++ - BDE, SQL Links және т.б. қосымшалармен жиi қойылатын компоненттердi таңдауға арналған. Қажетті компонентті таңдап (біздің жағдайда BDE) және Settings батырмасын басу арқылы, BDE бөлімдерін таңдау және бүркеншiк аттарды жасау үшiн төрт диалогтiк терезелер тiзбегiн аламыз /4.53сурет/.


4.53-сурет. BDE-нің орнатылатын бөлімдерін анықтау

Бүркеншек ат параметрлерін орнату барысында бүркеншек ат типін және мәліметтердің орналасатын жерін таңдауға болады. Қалған параметрлерін мәтіндік редакторде көрсетуге болады /4.54-сурет/:

4.54-сурет. BDE бүркеншек атының параметрлерін орнату

Advanced Options бүктемесін шерту арқылы қосымша компоненттер (біздің жағдайда


BDE) файлы тізбегімен және олар туралы мәліметтермен танысуға болады. Келесі бөлім - Specify Components and Files - қосымшаның компоненттерi және файлдар топтарын анықтауға, орнату түрлерiне арналған. Groups бүктемесін шерту арқылы дистрибутив компоненттерін жасау үшін файлдар тобын құруға болады. Сонымен қатар Explorer қолдануға болады және одан қажетті файлдарды drag-and-drop әдісімен (ол үшін Launch Explorer батырмасын басу қажет) көшіруге болады. Топтарды бос тастап кетуге ұсынылмайды.

4.55-сурет. Файлдар тобын құру

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


4.56 -сурет. Дистрибутив компоненттерін құру

Келесі бүктеме - Setup Types –орнату түрін анықтауға арналған. Егер онда шертсе, Typical орнатудың бір варианты (мысалға, сіз "Include custom setup type" жалаушасын белгілеуді ұмыттыңыз). Бұл жағдайда Select User Interface Components бөлімін таңдау қажет және Components бүктемесін шертіп, Dialog Boxes тізімінен Setup Type және Custom Setup опцияларын белгілеу қажет. Осыдан кейін Setup Types бүктемесіне оралып, инсталляция түрін анықтауға болады. Ереже бойынша Custom және Typical құрамында барлық компоненттер, ал Compact – қосымшаның жұмыс жасауына қажетті минимальды компоненттер жинағы бар.


4.57-сурет. Орнату нұсқаларының құрамын анықтау

Select User Interface Components бөлімінде қолданушы инсталляция кезінде қажетті ақпараттарды енгізетін (мысалға, компания және өзі туралы мәліметтер, өнімдердің сериялық нөмірі) диалогтарды таңдайды, readme файлы және лицензионды келісімдермен танысады, инсталляция каталогын көрсетеді, орнату түрін таңдайды және т.б. Preview батырмасын басу арқылы диалогтарды алдын ала көруге болады. Келесі бөлім - Make Registry Changes – қолданушы компьютерінде тізілімнің жаңа кілттерін (Keys бүктемесі) және олардың мағыналарын (Values) құруға мүмкіндік береді. Бұл пайдалы болуы мүмкін, егер сіз қосымшада ActiveX компоненттері немесе OLE-сервер құруда қолдансаңыз.


4.58-сурет. Қолданушы компьютеріндегі реестр мәндерін және кілттерді анықтау

Келесі бөлім - Specify Folders and Icons – болашақ программалық топ құрамын анықтауға мүмкіндік береді, сонымен қатар командалық жол (Advanced бүктемесі) параметрлерін анықтайды.


4.59-сурет. Программалық топ құрамын анықтау Соңғы бөлім - Run Disk Builder. Инсталляциялық скрипт сақталғаннан кейін (InstallShield басты терезесіндегі инструменттер панелінен дискеттің суреті бар батырманы басу арқылы) және тасымалдаушының түрін таңдау қатқыл дискіде дистрибутивті дискет бейнесінде құрылады. Осыдан кейн Create Distribution Media бөлімін таңдап, құрылған дистрибутивті дискетке жазуға болады.

4.60-сурет. Диск бейнесін құру.


Test Run опциясын инсталляционды қосымша жұмысын тексеру үшін қолдануға болады. бірақ бұны қосымша құрылып жатқан компьютерде тексеру ұсынылмайды. Дұрысы сіздің қолданушылардың компьютеріне ұқсас компьютерлерде тексерген жөн. Бұдан басқа осы компьютерге Windows көшірмесін жасаған дұрыс, инсталлятор дұрыс жұмыс жасамаған жағдайда программалық жабдықты қайта қалпына келтіретіндей. Инсталляциялық программаны орындалуы Select User Interface Components бөлімінде таңдалған диалогтар тізбекті пайда болады /4.61-сурет/.

4.61-сурет. Орнату программасының диалогтарының біреуі осындай түрде болады

Инсталляциялық қосымша жұмысының нәтижесі қосымшаны және оның жұмысына қажетті файлдарды қолданушы компьютеріне орнату, программалық топ құру, тізілімге қажетті кілттерді енгізу /4.62-сурет/.


4.62-сурет. Инсталляциялық қосымша жұмысының нәтижесі

Егер дистрибутивті құру кезінде Automatic Uninstaller опциясын таңдасақ, орнатылған қосымшаны деинсталляциялау қажет болған жағдайда Windows панелдерін басқарудағы "Установка и удаление программ" утилитасын қолдану керек. Осындай жағдайлардан кейін InstallShield Express көмегімен функциональды және дизайны жағынан қазіргі заман талаптарына сай инсталляциялық қосымша дистрибутивтерін жылдам құруға мүмкіндік береді.

Өзіндік жұмыс тапсырмалары

1. Азық-түлік дүкенінің ассортименті туралы мәлімет беретін қосымшаға инсталляциялық қосымша дистрибутивін құру; 2. Поликлиниканың дәрігерлері туралы мәлімет беретін қосымшаға инсталляциялық қосымша дистрибутивін құру; 3. Математикалық формулалар анықтамалығының қызметін атқаратын қосымшаға инсталляциялық қосымша дистрибутивін құру; 4. Кітапханадағы картотека қызметін атқаратын қосымшаға инсталляциялық қосымша дистрибутивін құру; 5. Атына сәйкес түстерді көрсете алатын қосымшаға инсталляциялық қосымша дистрибутивін құру;

V Курстық жұмыстарды орындауға арналған әдістемелік нұсқаулар 1.

Курстық жұмыстың құрылымы


Курстық жұмыстың құрылымына курстық жұмыстың мазмұны мен графикалық бөлімінің мазмұны кіреді. Курстық жұмыстың мазмұны төмендегідей құрылымдық элементтерді қамтиды: - сыртқы беті; - тапсырма; - аннотация; - мазмұны; - белгілеу мен қысқартулар; - кіріспе; - негізгі бөлім (жұмыстың негізгі мазмұны); - қорытынды; - қолданылған әдебиеттер тізімі; - қосымшалар. Курстық жұмысқа тапсырма оқу процесінің кестесіне сәйкес ағымдағы семестрдің алғашқы аптасынан кешіктірілмей беріледі. Кафедра тапсырмасында жобаны орындау үшін негізгі қажетті мәліметтер беріледі. Тапсырмада төмендегілер көрсетілуі керек: жұмысқа байланысты, оқыту пәні; студенттердің аты–жөні мен тобы; жұмыс тақырыбы, жетілдіру кезеңдері мен орындалу мерзімдері; жетекшінің аты – жөні, оның қызметі, қолы және тапсыру мерзімі. Әрбір тапсырма әдістемелік және ғылыми негізде ойластырылуы керек және студенттердің дайындық деңгейі мен жұмысты орындауға кететін уақыты сәйкес болуы тиіс. Қажетті мәліметтерге ҚР нормативтік-заңдық актілер, оқулықтар, оқу құралдары, монографиялар, анықтамалық әдебиеттер, статистикалық материалдар, мерзімдік басылымдар жатады. Курстық жұмыстың мазмұнында төмендегідей құрылымдық элементтер айқындалуы тиіс: кіріспе, үш (екі) тарау, қорытынды, қолданылған әдебиеттер тізімі. Орындалу мерзімі төмендегідей ұсынылады: кіріспе - 1-2 апта, қорытынды - 1-2 апта, әрбір тарау - 2-3 апта, қолданылған әдебиеттер тізімі - 3-5 күн. Сонымен қатар, жұмыстың құрылымдық элементтерің көлемі: кіріспе - 2-3 бет, қорытынды - 2-3 бет, әрбір тарау - 10-15 бет, қолданылған әдебиеттер тізімі -1-2бет. Есептік – графикалық бөлімде слайдтар, плакаттар аталуы, орындалу мерзімі, беттер саны көрсетіледі. А4 парағында 3 слайдтан кем емес орындалу ұсынылады. Аннотацияда курстық жұмыс туралы негізгі мәліметтер қысқаша беріледі. Аннотацияда курстық жұмыс көлемі, кестелер, сызба, қосымшалар туралы мәліметтер қамтылады. Мазмұнында бөлімдер, тараулар, қосымшалардың аталуы мен реттік номерлері кіреді. «Мазмұны» сөзі ірі әріптермен ортадан басталып жазылады. «Белгіленулер мен қысқартулар» құрылымдық элементінде курстық жұмыста қолданылатын белгіленулер мен қысқартулар тізімі сипатталады. Сөздерді қысқарту үлгісі төмендегіше: ОБП– объектіге бағдарланған программалау. Кіріспеде автор таңдалған тақырыптың өзектілігі, ондағы мәселерді жетілдіру деңгейі мен шешу жолдарын көрсетеді. Кіріспе қысқаша болуы керек (2-3 бет). Жұмыстың негізгі бөлігінде тақырыптың мазмұны сипатталады. Бұл бөлім зерттелінетін тақырыптың мазмұнын сипатайтын 2-3 тараудан тұрады. Тарауларды артттыру қажет емес, себебі бұл курстық жұмыстың айтарлықтай көлемінің өсуіне әкеледі. Жұмыстың негізгі бөлігі компьютерлік текстпен 25-30 бет немесе қолмен жазып 30-40 бет болуы тиіс. Қорытынды бөлімінде курстық жұмыстың материалдары бойынша ұсыныстар енгізіледі. Қорытындысы 2-3 беттен тұрады. Курстық жұмыстың соңында белгілі бір тәртіппен библиографиялық тізімдер берілуі тиіс.


2. Курстық жұмыстың орындалу тәртібі. Курстық жұмыстың орындалуын төмендегідей кезеңдерге бөлуге болады: - тақырыпты таңдау; - әдебиеттерді іріктеу және үйрену; - жұмыс жоспарын құрастыру; - нақты материалдарды жинау мен жетілдіру; - курстық жұмысты жазу; - курстық жұмысты толтыру (оформление); - курстық жұмысты қорғау. 3. Курстық жұмысты әрлеу (оформление) Жұмыстың мәтіні (тексті) А4 парағының бір бетіне жазылуы тиіс, төмендегідей өлшемдерді сақтай отырып: сол жақтан -30 мм, оң жақтан -10 мм, жоғары және төменнен- 20 мм. Мәтінді компьютермен жазуда бірлік интервал, 14 кегль болуы керек. Курстық жұмыстың мәтіндегі барлық анықтамалар мен сандық мәліметтерге шыққан алғашқы дерек көздері көрсетілуі тиіс. Курстық жұмыстың беттері нөмірленуі тиіс. Жұмыстың әрбір тарауы жаңа беттен жазылуы керек. Студент жұмысты жазып және толтырған соң қорғау күнін белгілеп, қол қойып кафедрасына өткізуі тиіс. Курстық жұмыстың негізгі бөлігі, зерттеу тақырыбы мен мазмұнына байланысты, әр түрлі мәтіндер түрінде, кестелер мен суреттер түрінде (сызба, диаграммалар) өрнектелуі тиіс. Жұмыстың мәтіні зерттеу объектісі туралы ақпараттармен тиянақты және логикалық түрде қамтылуы керек. Мәтін тараулар, бөлімдерге бөлінеді, әрқайсысының өз нөмері араб цифрларымен сипатталуы тиіс. Бөлімдер атаулары тараулардың мазмұнын нақты және қысқа айқындауы тиіс. Бөлімдер атаулары ірі әріптермен орта жолдан нүктесіз, астын сызбай ірі шрифтермен жазылуы керек. Бөлімдер ішіндегі тақырыпшалар атаулары ірі әріптермен, нүктесіз, астын сызбай ірі шрифтермен жазылады. Мұнда сөздердің тасымалдауына рұқсат етілмейді. Атаулар мен мәтін арасындағы қашықтық 1 мм болуы керек. Курстық жұмыстың бөлімдері мен тараулары араб сандарымен нөмерленеді. Тараулар барлық мәтіндегі реттік номерлеу бойынша жүзеге асады. Мысалы – 1,2,3 және т.б. Бөлімдер әрбір тарау бойынша реттік номерлеу бойынша, мысалы -1.2, 2.1, 3.1. т.с.с. іске асырылады. Тараулар, бөлімдер номерлерінен соң нүкте қойылмайды.

4. Курстық жұмыстың тақырыптары 1. «Геометрия » пәні бойынша геметриялық фигуралар мен денелер жөнінде мәлімет беретін электрондық анықтамалық құру керек. 2. «Биология» пәні бойынша жан-жануарлар, құстар және т.б. жөнінде мәлімет беретін электрондық анықтамалық құру керек 3. «Сулифа» ойынының компьютерлік түрін жасау, мұнда бір ойыншының ролін қолданушы атқарады және ол компьютермен ойнауы керек. 4. «Матрицаны бұру» есептерін демонстрациялайтын және түсіндіретін программа құру. Бұл программа матрицаны белгілі бір нүктеден сағат тілінің бағытымен 90,180, 270, 360 градусқа бұруды көрсетіп түсіндіре алуы керек. 5. «Массивті сұрыптау» программасын құру крек. Бұл программа массивті сұрыптаудың кем деген де 5 әдісін және сұрыптаудың әрбір қадамын көрсетуі керек (отслеживание процесса сортировки).


6. 7. 8. 9.

10. 11.

12. 13. 14. 15. 16.

17. 18. 19. 20.

21.

22.

23.

«Мозаика» программасын құру. Программа фрагменттері бойынща сурет жинауды орындайды. «Калькулятор» программасын құру. Программа инженерлік калькулятордың қызметін атқаруы керек. «Блокнот» программасын құру. Программа стандарт «блокноттың» қызметін атқаруы керек. «Ақша айырбастау пунктінің» қызметін модельдейтін программа құру. Программа ақшаның көлемін қабылдауды, оны курсы бойынша басқа ақшаға ауыстыруды және клиентке чек беруді орындай алуы керек. «Paint» программасын құру. Программа стандарт «Paint»-тің қызметін атқаруы керек. «Электрондық сағат» программасын құру . Программа бірнеше сағаттық белдеулердегі уақыттарды көрсете алатындай болуы керек , Мысалы Астана уақыты, Алматы уақыты, Мәскеу уақыты, Владивосток уақыты және т.б. «Санау жүйелері» программасын құру, программа енгізілген санды бірнеше санау жүйелеріне аударып көрсете алатындай болуы керек. Кириллицада жазылған қазақша мәтінді латиницаға аударатын транслитератор – программаны құру. Ханойские башни‖ есебінің шешімін рекурсивті алгоритммен график түрінде көрсетілетін бағдарлама жасау. Қолданушы берген буындар және бұтақтар санын қамтамасыз ететін снежинка суретін салатын программа құру Тік төртбұрышты кесу туралы есеп. Торлы қағаздың парағынан M*N өлшемiндегі торлы фигураларды ойып кесті. Тiлудiң сызықтары торшалардың шекараларымен дәл келедi. Ойылған фигуралардың санын анықтау. Гүл өрісінің гүлдейтін (расцветают), артынан жоғалатын (увядают) кездейсоқ сандарынын суретін график түрінде шығару. Жұлдызды аспанның кейбір жұлдыздары бірде «жанып» (зажигаются), бірде «өшіп» (гаснут) тұратын кездейсоқ ретінің суретін график түрінде шығару. Фейерверк жұлдыздарының шексіз қозғалу санын моделдеу. Жұлдыздардың орны орталықта немесе графикалық экранның бір бұрышында болуы мүмкін екенін ескеру. Келесi есептiң шешiмi график түрiнде болуын қамтамасыз ету.кейбір елді мекендерде жолда жүру қозғалысында сол бұрылыстар тыйым салынған (сонымен бiрге керi бұрылыстар тыйым салынбаған). Әрбір солға бұрылуға 100 руб. көлемінде айып-пұл орнатылған. Автомобилдер қозғалысы компьютерлермен бақыланады, нәтижесінде автомобилдің бастапқы және соңғы қозғалысы, сонымен қатар автомобилдің қандай да бір бұрылыс жасауы бекітіледі (фиксируются). Автомобилдер қозғалысының координаталарын, қозғалыс маршрутын бұзушылықтарын және оның жүргізушісіне айыппұлды есептейтін программа жасау. Келесі есепті шешетін, тышқан оқиғасының тізбекті есте сақтауына арналған бағдарлама жазу. Қолданушы тышқан көрсеткішімен экранның әртүрлі орындарын көрсетеді, сонымен қатар тышқанның сол жағын басады. Бағдарлама осы айтылған қолданушы әсерінің тізбегін есте сақтап және қолданушы тышқанның оң жағын шерткенде шерту орнына цифрлар, яғни қолданушы әсерінің тиісті реттік номерін (сонымен қатар шерту нүктелерін қосатын сызықты) шығаруы керек. Пернетақтада жұмыс жасауға арналған тренажер-бағдарлама жазу. Анықталған уақыт интервалында (бiртiндеп кiшiрейтiн) бағдарлама экранға кездейсоқ символдар шығарады. Қолданушы экранға шыққан символдарға сәйкес пернетақтадағы клавишаларды басуы қажет. Ондық санды екілік санау жүйесіне стекті қолданып айналдыратын бағдарлама жазу.


24. 25.

26.

27.

28.

29.

30.

Қарапайым арифметикалық операцияларды орындайтын және алдынғы әрекеттерді болдырмайтын калькулятор-бағдарлама жазу. Ойыншыға лабиринттен өз бетінше шығуға арналған бағдарлама құру. Шарттары: 1. Тік төртбұрышты клеткалы өрісі (NxN өлшемді, N саны генератордың кездейсоқ сандарымен анықталады немесе ол 10-нан үлкен болуы керек ) бөгеулермен шектелген; 2. Бұдан басқа, кездейсоқ жағдайда өріске бастапқы немесе соңғы клеткалардың бөгеулер жүйесі беріледі; 3. Ойыншы қате шаг жасағанда бағдарлама ол туралы мәлімет беріп және ағымдағы позицияны өзгертуіне жол бермеуі қажет. Бағдарламада ойыншыға есептің дұрыс шешімін және лабиринттан шығуды (бағдарлама маршрутты өзі анықтауы қажет, егер ол бар болса) білетін режим қарастырылуы қажет. Екi ойыншыға арналған ―Морской бой‖ бағдарламаласын құру.Бірінші бағарлама қосылғаннан кейін, ойыншылар бірге ойынға арналған тік төртбұрышты өрістің өлшемін (NxM ) және кемелердің санын енгізеді.Осыдан кейін ойыншылар бір-біріне тәуелсіз өз кемелерін оқоюы туралы мәліметтерді енгізеді (бағдаралама мәліметтердің дұрыстығын тексеруі қажет). Содан кейін бағдарлама екi бiрдей таза тiк төртбұрышты клеткалы өрiстердiң график түрiнде суретiн береді және ойыншыларға кезекпен жүру құқығын береді (ойыншы тышқанмен өз оппонентiнiң өрiсiнің тиiстi торшасын көрсетедi), сонымен қатар бұл жүрістің қорытындысын бағдарлама график түрінде хабарлауы қажет. Бағдаралама ойыншылардың әрекеттеріне анализ жасап, біреуінің жеңу жағдайында жеңімпаздың атын хабарлап, ойынды тоқтатуы қажет. ―Крестики-нолики‖ ойынында, кім бірінші бес крестикті (нөлді) қатарынан горизонталь, вертикаль немесе диагональ орналастырса сол жеңеді. Осы ойынды екі ойыншыға арнап тік төртбұрышты NхN өлшемді клеткалы өрісті етіп бағдарламалау. Бағдаралама тік төртбұрышты клеткалы өрістің графикалық суретін шығарады және ойыншыларға өз кезегінде жүру құқығын береді. Бағдарлама ойыншылар әрекетіне анализ жасап, жеңіс жағдайында жеңімпаз атын хабарлап ойынды тоқтатуы қажет. NxM торшалардың өрiсi берiлген (өлшемдер кез келген) – батпақ бөлімшесі. Кейбір клеткалар – төмпешік (олардың тұрған орыны кездейсоқ сандармен генератормен анықталады). Төмпешiктердiң бiрiнде бақа (ойыншы ол секiретiн орынды тышқанмен көрсетіп басқарады) отырады. Клеткалардың бiреуінің үстiнде маса (ол бағдарламамен басқарылады) ұшады. Алғашқы жүрiс бақанікі - ол төмпешiкке төмпешiктен көлденең, тік немесе диагоналінен секiре алады, максимал секiру ұзындығы - 5 клетка. Егер бақа суға түссе, ол ең жақын төмпешiкке дейiн жүзед і (бұл бағдарламамен автоматты орындалуы керек). Бақа масаны ұшқанда немесе ол өзi оның клеткасына ұшып келгенде жей алады. Бақаның әрбiр жүрiснен кейiн масаның жүрiсi болады. Бақа масаны қуып жеткенде, бағдарлама хабарлама шығарады және өз жұмысын тоқтатады. ―Поле чудес‖ түріндегі ойын-бағдарламасын жасау. Бағдарлама сөз жасырады (генератордың кездейсоө сандары), ал екі ойыншы оны әріп бойынша ойлап табады. Бағдарлама екі режимде болуы керек – ойын және сөздікті редакциялау. Сөздiк шифрланған файл түрiнде ұйымдастырылуы керек және сөздерді алмастыру, толықтыру, түзетілу мүмкiндiгi болуы керек.Бағдарлама ойын кезінде жұмбақталған сөзді жасырын түрде және әлiпбидiң әрiптерiнiң суреттері жиынын шығаруы керек. Ойыншылар кезекпен әрiптерді тышқанмен көрсетуi керек, ал бағдарлама олардың шешуi бойынша сөздегі әріпті ашуы керек. Сөз шешкен бойда, бағдарлама жеңiмпаздың атын шығарып және өз жұмысын тоқтатуы керек. Ойыншыға жыланды басқаруға мүмкiндiк беретiн бағдарлама жазу, тік төртбұрышты өріспен қозғалатын, өрісте кейде жүлделермен қақпандар пайда болады. Бағдарлама экран бойынша кез-келген бағытта (произвольном направлении) жай қозғалатын қысқа жыланның суретiнен басталады. Жыланның қозғалу бағытын клавиш-стрелок арқылы басқаруға болады (осыдан кейін ол берілген бағыт бойынша


31.

32.

33.

34.

35.

жылжиды, және оның денесінің әрбір бөлігі бұрылу нүктесінен өтуі қажет). Ойынның мақсаты - ойын өрiсінде өз меншiктi денесінiң қиылысуына дейін жыланды ұстап қалу. Уақыт аралықтарында өрістің кейбір орындарда жүлделер мен қақпандар суреті көрінеді. Жылан аш және жүлделермен қуаттануға қарсы емес, егер жылан жүлдені жейтін болса оның денесі бір секцияға өседі. Қақпандардан жылан қашуы қажет егер ол қақпанға түссе денесі бір секцияға кемиді. Егер жылан өріс шекарасына соқтығысса, өз денесін кесіп өтсе немесе оның денесінің ұзындығы нолге тең болса хабарлама шығады және бағдарлама жұмысын тоқтатады. NxM (кез-келген өлшемді) клеткалы өрiсi берiлген. Кездейсоқ таңдалған клеткада мысық отырады (оны ойыншы басқарады, оның адымының бағытын көрсетеді, адым ұзындығы – 3 клетка), оның міндеті тышқанды ұстау. Тышқан басқа кездейсоқ клеткада болады (оны бағдарлама басқарады, оның адамының ұзындығы – 1 клетка). Мысықтың әрбір жүрісінен кейін тышқанның жүрісі болады. тышқан бір жүргенде мысықтан мүмкіндігінше алыс орналасқан клеткалардың біріне жүгіріп өтуі керек. Мысық тышқанды қуып жеткен кезде, бағдарлама хабарлама шығарып және өз жұмысын тоқтатуы қажет. 4x4 клеткалы өлшемдi өрiс берiлген. Әрбiр клеткаға ((4, 4) индекстерi бар клетканы қоспағанда) фишка орналасқан. Әрбiр фишканың өз сирек кездесетiн нөмiрiбар, 1 мен 15пен аралығында. Ойыншы фишканы 1-ден бастап 15-ке дейінгі ретімен орналасатындай етіп қозғалтуы керек. Фишкаларды орналастыру келесі түрде жүзеге асырылуы керек: бірінші ойыншы тышқанмен қозғалтқысы келетін фишканы көрсетеді, сосын бағдарлама оның жүрісінің дұрыстығын анықтайды және таңдалған фишканы бос орынға орналастырады. Бағдарлама ойыншының әрекетіне анализ жасауы керек, ойыншы барлық фишкаларды дұрыс орналастырысымен, хабарлама беріп және өз жұмысын тоқтатуы қажет. ―Прыгающий шарик‖ бағдарламасын жазу. бағдарлама іске қосылғаннан кейін экранда отцентрированная текстік жол, сонымен қатар жартылай шеңбердiң түрiндегi траектория бойынша жолдың әрiптерi бойынша секiретiн шарик көрінуі керек. Ағымдағы әрiптiң түсi, сонымен бiрге қысқа дыбыстық сигналдың берілу дауысы шарик қозғалғанда өзгерiске енедi. Бағдарлама қолданушыға шрифт өлшемін және текстті енгізуге мүмкіндік беруі керек. Суреттің шығуы енгізілген параметрлерге байланысты болуы қажет. Тышқан көрсеткіші экрандағы фондық суретті үлкейтетін үлкейткіш стекло орталығы болатын бағдарлама жазу. Бағдарлама үлкеюдi коэффициенттi(2, 4, 5, 10, 20, 25) ендiрдi және 100x100 пикселді облыстағы үлкейтілген суретті(оның орталығы тышқан нұсқағышымен белгiленедi) шығаруы қажет. Тышқанды қозғалту кезінде ―увеличительное стекло‖ экран бойынша қозғалуы керек. Интерактивті календарь шығаратын, яғни жыл бойына әрбір айдын календарын қарауға мүмкіндік беретін бағдарлама жасау. Дата апта күнінің атын анықтау үшін mktime функциясын пайдалану керек.

5. Курстық жұмысқа арналған әдебиеттер 1. Иванова Г. С. Технология программирования: Учебник для вузов.- М.: Изд-во МГТУ им. Н. Э. Баумана, 2003- 320 с. /Серия: Информатика в техническом университете/ 2. Свердлов С. З. Языки программирования и методы трансляции: Учебное пособие. – СПб.: Питер,2007-638 с. 3. Холингворт, Джаррод, Сворт и др. Borland C++Builder 6. Руководство разработчика.: Пер с англ. – М. : ИД «Вильямс», 2004- 976 с. 4. Гудман С., Хидетниени С. Введение в разработку и анализ алгоритмов. -М.: Мир, 1982. 5. Мейер Б. , Бодуэн К. Методы программирования. Т. I и 2. - М.: Мир,1984.


6. Зиглер К. Методы проектирования программных систем. - М.: Мир, 1985. 7. Молчанов А. Ю. Системное программное обепечение. Лабораторный практикум. - СПб.: Питер, 2005.- 284 с. 8.Франке. С++ . Учебный курс.- СПб.: Питер, 2003 9.Архангельский А.Я. Программирование в C++ Bulder. М.: Бином, 2003. 10. Тяпичев Г. А. Быстрое программирование на С++.– .: СОЛОН-Пресс, 2004384 с. 11. Фокс Дж. Программное обеспечение и его разработка. - М.: Мир, 1985. 12.Лингер Р. и др. Теория и практика структурного программирования. - М.:Мир, 1982. 13. Мұқашева М. Ө. Программалау /С++ Builder 6/. Оқулық. Астана, ЕҰУ -2011 ж.375 б.


VI Пән бойынша білімді бақылау материалдары

Аралық бақылау мате риалдары

1 - нұсқа 1. 2.

1. 2.

Программалау технологиясы деп нені атайды? Программалау технологиясының құрамды бөліктерін сипаттаңыз. «Аэропорт» тақырыбына класс құрыңыз. Оның ұшу бағытына және салонның түріне (мысалы, VIP, бизнес, эконом және т.б.) байланысты билет құнын анықтайтын әдісін құрыңыз. Жолаушының фамилиясы, ұшу бағыты, салон түрі және бағасы көрсетілген билетті экранға шығаратын программа құрыңыз. 2 - нұсқа Программаның өмірлік циклы деп нені айтады? Программаның өмірлік циклы құрамына кіретін процестерді сипаттаңыз. «Архитектуралық нысандар» тақырыбына класс құрыңыз. Оның әдістері мен тума класстарын анықтаңыз. Архитектуралық нысандарды салынған уақыты бойынша сұрыптап экранға шығаратын программа құрыңыз. 3 - нұсқа

1. 2.

Программалық жабдықты құру кезеңдеріне сипаттама беріңіз. «Көліктер» тақырыбына класс құрыңыз. Оның әдістері мен тума класстарын анықтаңыз. Қолданушының сұрауы бойынша көлікті іздеп тауып оны барлық мәліметтерімен қосып экранға шығаратын программа құру керек. 4 - нұсқа

1. 2.

Программаның өмірлік циклының модельдері. Каскадтық модель. «Геометриялық фигуралар» тақырыбына класс құрыңыз. Оның фигуралардың аудандары мен периметрлерін есептейтін әдістерін анықтаңыз. Қажет фигураның ауданы мен периметрін экранға шығаратын программа құру керек. 5 - нұсқа

1. 2.

Модульдер тәуелсіздігінің критериилері. Тізбектелген және ақпараттық байланыс. «Геометрия. Стереометрия» тақырыбына класс құрыңыз. Оның денелердің толық беті мен көлемдерін есептейтін әдістерін анықтаңыз. Қажет дененің бетінің ауданы мен көлемін экранға шығаратын программа құру керек. 6 - нұсқа

1. 2.

Программаның өмірлік циклының модельдері. Аралық бақылау қолданылатын модель. «Компьютердің құрылғылары» тақырыбына класс құрыңыз. Оның әдістерін және «ноутбуки», «дербес компьютер» секілді тума кластарын анықтаңыз. Ең қымбат ноутбукты табатын программа құыңыз. 7 - нұсқа


1. 2.

CASE-технологиялар деген не? Кез-келген CASE-технологияда болуы керек құрамды бөліктерін атаңыз. «Компьютердің құрылғылары» тақырыбына класс құрыңыз. Оның жинақталған компьютердің (сборки) бағасын құрылғылардың бағаларына байланысты анықтап беретін әдісін анықтаңыз. Құрылғылардың бағаларына компьютер бағасын есептейтін программа құрыңыз. 8- нұсқа

1. 2.

RAD технологияның негізгі талаптарын атаңыз? Бұл технологияны қолдануға болмайтын салаларды және оның ортақ себебін атаңыз. «Поликлиника» тақырыбына класс құрыңыз. Оның әдістерін және «Дәрігерлер», «Қаралушылар» секілді тума кластарын анықтаңыз. Бір дәрігерге жазылған қаралушылар тізімін шығаратын программа жазыңыз. 9- нұсқа

1. 2.

Программалық жабдықтың технологиялылығы деп нені айтады? Негізгі критериилеріне сипаттама беріңіз. «Футбол клубтары» тақырыбына класс құрыңыз. Оның әдістерін және тума кластарын анықтаңыз. Экранға футбол клубтарының рейтингін шығаратын программа жазыңыз. 10- нұсқа

1. 2.

Декомпозиция деген не? Декомпозицияның түрлері. «Кинопрокат» тақырыбына класс құрыңыз. Оның әдістерін және тума кластарын анықтаңыз. Қолданушының сұрауы бойынша белгілі бір жанрдағы (мысалы, мультфильм, боевик, фантастика және т.б.) фильмдер тізімін шығаратын программа құрыңыз. 11- нұсқа

1. 2.

Модуль деп нені айтады? Модульдің бұрынғы және қазіргі мағыналарының арасындағы айырмашылықтар мен ұқсастықтар және оның себептері. «Кинофильмдер» тақырыбына класс құрыңыз. Оның әдістерін және тума кластарын анықтаңыз. Бас рольде Х актер ойнайтын фильмдер тізімін экранға шығаратын программа құрыңыз. 12- нұсқа

1. 2.

Модулдер тәуелсіздігі. Жабысудың түрлері. Ішкі мәліметтері бойынша жабысу /Сцепления по содержимому/. «Азық-түлік дүкені» тақырыбына класс құрыңыз. Оның әдістерін және тума кластарын анықтаңыз. Дүкендегі сүт өнімдерін сұрыпталған түрде экранға шығаратын программа құрыңыз.


13- нұсқа 1. 2.

1. 2.

Модулдер тәуелсіздігінің критериилері. Процедуралық, уақытша, логикалық және кездейсоқ байланыстар . «Азық-түлік дүкені» тақырыбына класс құрыңыз. Класстың азық-түлік бағасын оның сақталу мерзіміне байланысты анықтайтын әдісін құрыңыз. Жылдам бұзылатын азықтүліктерді олардың бағасымен және сақталу мерзімімен қоса экранға шығаратын программа құрыңыз. 14- нұсқа Модульдердің мәліметтер бойынша және үлгілер бойынша жабысуы /Сцепление модулей по данным и по образцу/. Мысал келтіру. «Кітаптар» тақырыбына класс құрыңыз. Оның әдістерін және тума кластарын анықтаңыз. Аттары бойынша сұрыпталған кітаптар тізімін экранға шығаратын программа құрыңыз. 15- нұсқа

1. 2.

Төменнен жоғары және жоғарыдан төмен қарай программалау тәсілдері. «Мебелдер салоны» тақырыбына класс құрыңыз. Оның әдістерін және тума кластарын анықтаңыз. «Жаңғақ» түсті ас үй гарнитурын іздейтін программаны құрыңыз.. 16- нұсқа

1. 2.

Құрылымдық алгоритмерді беру тәсілдері. Насси-Шнейдерман диаграммасы. Мысал. «Бір өлшемді массив» тақырыбына класс құрыңыз. Оның массив элементтерін енгізетін және баспаға шығаратын әдістерін құрып ол әдістердің программада қолданылуын көрсетіңіз. 17- нұсқа

1. 2.

1 ден 50- ге дейінгі сандардың қосындысын табатын алгоритмді псевдокод түрінде көрсетіңіз. «Автосалон» тақырыбына класс құрыңыз. Оның әдістерін және тума кластарын анықтаңыз. Бір маркаға жататын барлық автомобильдер тізімін толық сипаттамаларымен экранға шығаратын программа құру керек. 18- нұсқа

1. 2.

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

1.

Модулдер тәуелсіздігінің критериилері. Байланыстардың түрлері. Функционалдық байланыс.


2.

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

20- нұсқа 1. 2.

Модулдердің басқару және жалпы мәліметтер облысы бойынша жабысулары. Мысалдар. «Кітаптар» тақырыбына класс құрыңыз. Оның кітап құнын белгілі бір шарттарға байланысты (мысалы, балалар кітаптары өзінің негізігі құнымен салыстырғанда 10% жеңілдікпен сатылады) анықтайтын әдісін құрыңыз. Белгілі бір автордың кітабын құнымен қоса экранға шығаратын программа құрыңыз. 21- нұсқа

1. 2.

Құрылымдық алгоритмерді беру тәсілдері. Псевдокодтар. Мысал. «Мебелдер салоны» тақырыбына класс құрыңыз . Оның әдістерін және тума кластарын анықтаңыз. Барлық мебельдерді бағалары бойынша сұрыптап шығаратын программа құру керек. 22- нұсқа

1. 2.

Құрылымдық алгоритмерді беру тәсілдері. Flow- формалар . Мысал. «Касса» тақырыбына класс құрыңыз . Оның әдістерін және тума кластарын анықтаңыз. Бір тәуліктегі түскен ақшаны есептеу программасын құрыңыз. 23- нұсқа

1. 2.

1 ден 50- ге дейінгі сандардың қосындысын табатын алгоритмді блок-схема түрінде көрсетіңіз. «Бір өлшемді массив» тақырыбына класс құрыңыз . Оның массив элементтерін өсу реті бойынша сұрыптайтын әдісін құрыңыз және пайдаланып программа жазыңыз.. 24- нұсқа

1. 2.

Модулдер тәуелсіздігінің критериилері. Байланыстардың түрлері. Функционалдық байланыс. «Студент» тақырыбына класс құрыңыз. Оның студенттің үлгіріміне байланысты стипендия көлемін анықтайтын (мысалы, үздікке - 10% үстеме ақы, бір ғана төрті барларға 5% үстеме ақы қосылады және т.б.) әдісін құрыңыз. Стипендия алатын студенттердің тізімін стипендия мөлшерімен қоса шығаратын программа құрылсын. 25- нұсқа


1. 2.

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

Қорытынды бақылауға арналған мате риалдар

Ауызша емтиханның сұрақтары

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.

24. 25.

Программалау технологиясы. Негізгі түсініктер мен ұстанымдар. Программалау технологиясының даму кезеңдері. Құрылымдық және объектілік ұстанымдар. Күрделі программалық жүйелерді құрудағы компоненттік ұстаным. Программалық жабдықтарды құру кезеңдері және оның өмірлік циклы /жизненный цикл ПО/. Программалық жабдықтардың өмірлік циклдарының модельдері: каскад тық, модель. Программалық жабдықтардың өмірлік циклдарының модельдері: спиральдік модель. Программалық жабдықтардың өмірлік циклдарының модельдері: аралық бақылау қолданылатын модель. CASE технологиялар. Қызметі. Сипаттамалары. RAD технологиялар түсінігі. Қызметі. Сипаттамалары. Программалық жабдықтарды құру процесінде қолданылатын халықаралық стандарттар. Программалық жабдықтардың технологиялық тиімділігі түсінігі. Тиімділікті анықтаушы негізгі факторлар. Модульдер қасиеттері мен өзара байланысу түрлерінің программалық жабдық тиімділігіне әсері. Жабысқан /сцеплен/ модульдер. Модульдер элементтерінің байланысу түрлерінің программалық жабдық тиімділігіне әсері. Модуль элементтерінің байланысуы. «Төменнен жоғары қарай» және «жоғарыдан –төмен қарай» программалау әдістері. Құрылымдық программалау әдісі. Блок-схемалар. Мысал. Құрылымдық программалау . Псевдокод. Мысал. Құрылымдық программалау . Flow- формалар. Мысал. Құрылымдық программалау. Насси-Шнейдерман диаграммалары. Мысал. Программаны әрлеу стилі. Программаның тиімділігі /уақытты және жадыны үнемдеу/ мен технологиялық сипаттамаларын жетілдіру, Программаны қателерден қорғауды ұйымдастыру әдістері. Программалық жабдықтарды қызметіне қарай классификациялау. Программалық жабдыққа қойылатын негізгі эксплуатациялық талаптар. Техникалық тапсырманың жасалуы. Жобалаудың бастапқы кезеңдері. Құрылымдық ұстанымды /структурный подход/ пайдаланған программалық жабдықтардың ерекшеліктері. Диаграммалар. Түрлері. Күйлер ауысуының диаграммалары. Құрылымдық ұстаным. Диаграммалар.Функционалдық диаграммалар. Құрылымдық ұстаным. Диаграммалар.Мәліметтер ағынының диаграммасы. /диаграммы потоков данных/ .


26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.

38.

39.

40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.

Құрылымдық ұстаным. Мәліметтердің құрылымы және оның компоненттерінің қатынас диаграммалары. Программалық жабдықтың құрылымдық схемасы. Құрылымдық ұстаным. Функционалдық схема. Құрылымдық ұстаным. Мәліметтер құрылымын жобалау. Құрылымдық ұстаным. Талдауы мен жобалануы құрылымдық методологияларға негізделген CASE-технологиялар. UML- объектілік ұстанымды пайдаланатын программалық жабдықтарды құруды сипаттаудың стандарт тілі. UML- да қолданылатын диаграммалардың түрлері. «Қолданылу нұсқатары» түсінігі. Қолданылу нұсқатары ның диаграммасы. UML- да қолданылатын диаграммалардың түрлері.Класстар диаграммасы. Объектілер арасындағы қатынастардың анықталуы. Класстарды жобалау. Спиральдық модельдің ерекшеліктері. Қолданушы интерфейсін құру. Қолданушы интерфейстерінің түрлері және оларды құру кезеңдері. Қолданушы интерфейсін құру. Диалогтардың классификациясы. Қолданушы интерфейстерінің интеллектуалдық элементтері. Қолданушы интерфейсін құру. Адамның ақпаратты қабылдау, есте сақтау және пайдалана білуге қатысты психофизикалық ерекшеліктерін ескеру. Программалық жабдықтарды құжаттау. Программаларды құжаттаудың ортақ жүйесі. МСТ бекіткен программалық құжаттау түрлері. Құжаттарды даярлаудың негізгі ережелері. Программалық жабдықтарды жөндеу/отладка/. Қателердің классификациясы. Программалық жабдықтарды жөндеудің әдістері / методы отладки/. Программалық жабдықтарды жөндеудің жалпы әдістемесі. Программалық жабдықтарды тестілеу. Программалық жабдықтардың сапасын тексерудің түрлері. Программалық жабдықты қолдан тексеру. Құрылымдық тексеру. Функционалдық тексеру. Модульдерді тестілеу. Кешенді тестілеу. Бағалаушы тестілеу. Label компонентінің қасиеттері мен оқиғалары. Мысал. Edit компонентінің қасиеттері мен оқиғалары. Мысал. Memo компонентінің қасиеттері мен оқиғалары. Мысал Button компонентінің қасиеттері мен оқиғалары. Мысал. Form компонентінің қасиеттері мен оқиғалары. Мысал. CheckBox компонентінің қасиеттері мен оқиғалары. Мысал. RadioButton компонентінің қасиеттері мен оқиғалары. Мысал. RadioGroup компонентінің қасиеттері мен оқиғалары. Мысал. ListBox компонентінің қасиеттері мен оқиғалары. Мысал. ComboBox компонентінің қасиеттері мен оқиғалары. Мысал. PopupMenu компонентінің қасиеттері мен оқиғалары. Мысал. MainMenu компонентінің қасиеттері мен оқиғалары. Мысал. SystemMenu компонентінің қасиеттері мен оқиғалары. Мысал. C++ Builder жобасының құрамындағы негізгі файлдар және олардың сипаттамалары C++ Builder 6. Жолдық типтерді сандық типтерге түрлендіру функциялары. Мысал SetFocus() әдісін қолданылуы және оған мысал. Экранға хабарлама шығаруды қамтамасыз ететін стандарт функциялардың қызметі, мысал. OnClick оқиғасы сипаттамасы және мысал. OnKeyPress оқиғасы сипаттамасы және мысал. OnMouseDown оқиғасының сипаттамасы және мысал. Image компонентінің қасиеттері мен оқиғалары. Мысал.


61. 62. 63. 64. 65. 66. 67. 68. 69. 70.

C++Builder 6. Object Inspector терезесінің қызметі. C++Builder 6. Object TreeView терезесінің қызметі. C++Builder 6. Class Explorer терезесінің қызметі. OnClick оқиғасы сипаттамасы және мысал. RadioGroup компонентінің қасиеттері мен оқиғалары. Мысал. OnMouseMove оқиғасының сипаттамасы және мысал. AnsiString типінің қолданылуы. Негізгі қасиеттері мен әдістері. Мысал Key айнымалысы және оның қызметі. OpenDialog компонентінің қасиеттері мен оқиғалары. Мысал. SaveDialog компонентінің қасиеттері мен оқиғалары. Мысал.

Тест түріндегі емтиханның тапсырмалары

1 A) B) C) D) E)

Программалау технологиясының ақырғы өнімі - : компьютерлер программалық жабдықтар компьютердің аппараттық жабдықтары ақырғы автоматтар кодтау жүйелері

2 A) B) C) D) E)

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

3 A) B) C) D) E)

Программалық жабдықтың өмірлік циклының кезеңдерін анықтайтын халықаралық стандарт: IES 12207:1995 «Information Technologe- SoftWare Life Cycle Prosses » ISO 12207:1995 «Information Technologe- SoftWare Life Cycle Prosses » ISO/IES 12207:1995 «Information Technologe- SoftWare Life Cycle Prosses » «Information Technologe- SoftWare Life Cycle Prosses » IES/ ISO 12207:1995 «Information Technologe- SoftWare Life Cycle Prosses »

4 A) B) C) D) E)

Программалық жабдықтың өмірлік циклының модельдері: Каскадтық, сатылы және спиральдік модель CASE , RAD және итерациялық модель сатылы, концентрлі және аралық бақылау жасалатын модель каскадтық, спиральдік және аралық бақылау жасалатын модель барлық жауаптар дұрыс

Программалық жабдықтың өмірлік циклының өтіп кеткен кезеңдеріне қайта айналып келіп, өзгерістер енгізу мүмкіндігі қарастырылған модель: A) каскадтық, B) сатылы 5


C) спиральдік D) концентрлі E) аралық бақылау жасалатын модель 6 A) B) C) D) E)

Программалық жабдықтың өмірлік циклының қандай моделінде прототиптеу (прототипті модификациялап, жетілдіріп, кеңейтіп отыру) қолданылады? каскадтық, сатылы спиральдік концентрлі аралық бақылау жасалатын модель

A) B) C) D) E)

Программалық жабдықтың өмірлік циклының бір кезеңі толық аяқталып болғаннан кейін ғана, екіншісіне көшуге болатын модель қайсы? каскадтық, сатылы спиральдік концентрлі аралық бақылау жасалатын модель

8 A) B) C) D) E)

Кез-келген CASE - технологияның негізіне алынатын парадигма: әдіснама / ұстаным, методология/, модель, нотация және орындаушы құрал /средства/ модель, әдіс және нотация нотация және орындаушы құрал ұстаным, әдіс , нотация әдіс және нотация

9 A) B) C) D) E)

RAD технология туралы пікірдің қайсысы дұрыс емес? Шағын топ жұмыс істейді (2-10 адам) Аз уақытта жасалынады (2-3 ай) Кез келген программа жасауда қолданылады Дайын шаблон негізінде жасалынады Адам өміріне қауіпсіздігінеқатысты салаларда /самолетті, кемелерді басқару, атом станциялары және т.б. дәл есептеулерді қажет ететін салаларда/ программа жасауда қолданылмайды

10 A) B) C) D) E)

Қай әдіс пен оның жетілдірілген түрі дұрыс көрсетілген? Каскадты, итерациялық Каскадты, RAD Спиралды, итерациялық Итерациялық, RAD Каскадты, итерациялық

11 A) B) C)

Компоненттік ұстанымды қолдайтын технология қайсы? Объектілік технология, CASE- технология RAD-технология, объектілік технология COM-технология, CORBA-технология

7


D) RAD-технология, CASE- технология E) OLE-технология, RAD-технология 12 A) B) C) D) E) F) 13 A) B) C) D) E)

Программалаудағы құрылымдық ұстанымның /структурный подход/ негізі болады: объектілер базалық басқарушы құрылымдар мәліметтер функциялар процедуралар Компьютерге арналған барлық жабдықтар қандай топтарға бөлінеді? жалпыға арналған қолданбалы программалар, жүйелік программалар, программалау жүйесі жалпыға арналған қолданбалы программалар, жүйелік программалар, стандартты программалар жүйелік программалар, программалау жүйесі жалпыға арналған қолданбалы программалар, жүйелік программалар утилит- программалар, жүйелік программалар, программалау жүйесі

14 Белгілі бір программалау тілінде жұмыс істеуге арналған программалық жабдықтардың құралдарының кешені қалай аталады? A) Программалау жүйесі B) Жүйелік (сервистік) программалар C) Жүйелік утилиттер D) Драйверлер E) Жалпыға арналған қолданбалы программалар 15 A) B) C) D) E)

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

16 A) B) C) D) E)

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

17 A) B) C) D)

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


E) программалау стилі 18 A) B) C) D) E)

Процедуралық декомпозициялаудың нәтижесінде не алынады? операторлардың иерархиясы процедуралардың /функциялар/ иерархиясы жекелеген объектілер мәліметттер иерархиясы тек қана шешім қабылдаушы процедуралар /функциялар/

19 A) B) C) D) E)

Программалауда қолданылатын ұстанымдар қайсы? декомпозициялық және композициялық құрылымдық және құрылымдық емес құрылымдық және объектілік компоненттік және логикалық объектілік және функционалдық

20 A) B) C) D) E)

Жеке автономиялы түрде комиляцияланатын программалық бірлік қалай аталады? код процедура функция модуль проект

21 Модульдер өзара мәліметтер бойынша жабысқан /сцеплен/ деп табылады, егер де олар : A) скаляр шама түріндегі мәліметтермен алмасатын болса B) құрылымдық типке жататын мәліметтермен алмасатын болса C) ортақ мәліметтерді бірігіп пайдаланса D) біреуі екіншісіне басқарушы ақпарат жібере алатын болса E) бір-бірінің ішіндегі мәліметттерді пайдаланса / «черный ящик» принципі сақталмайды/ 22 A) B) C) D) E)

Модульдер үлгі бойынша жабысқан /сцеплен/ деп табылады, егер де олар : скаляр шама түріндегі мәліметтермен алмасатын болса құрылымдық типке жататын мәліметтермен алмасатын болса ортақ мәліметтерді бірігіп пайдаланса біреуі екіншісіне басқарушы ақпарат жібере алатын болса бір-бірінің ішіндегі мәліметттерді пайдаланса / «черный ящик» принципі сақталмайды/

23 A) B) C) D) E)

Модульдер басқару бойынша жабысқан /сцеплен/ деп табылады, егер де олар : скаляр шама түріндегі мәліметтермен алмасатын болса құрылымдық типке жататын мәліметтермен алмасатын болса ортақ мәліметтерді бірігіп пайдаланса біреуі екіншісіне басқарушы ақпарат жібере алатын болса бір-бірінің ішіндегі мәліметттерді пайдаланса / «черный ящик» принципі сақталмайды/

24 Модульдер жалпы облыс бойынша жабысқан /сцеплен/ деп табылады, егер де олар :


A) B) C) D) E)

скаляр шама түріндегі мәліметтермен алмасатын болса құрылымдық типке жататын мәліметтермен алмасатын болса ортақ мәліметтерді бірігіп пайдаланса біреуі екіншісіне басқарушы ақпарат жібере алатын болса бір-бірінің ішіндегі мәліметттерді пайдаланса / «черный ящик» принципі сақталмайды/

25 Модульдер ішкі мәліметтер бойынша жабысқан /сцеплен/ деп табылады, егер де олар : A) скаляр шама түріндегі мәліметтермен алмасатын болса B) құрылымдық типке жататын мәліметтермен алмасатын болса C) ортақ мәліметтерді бірігіп пайдаланса D) біреуі екіншісіне басқарушы ақпарат жібере алатын болса E) бір-бірінің ішіндегі мәліметттерді пайдаланса / «черный ящик» принципі сақталмайды/ 26 Алгоритмнің графиктік тәсілмен берілуі, бұлA) программа B) граф C) блок-схема D) схема E) псевдокод

27 Блок-схемада алгоритмнің басы мен соңын көрсететін блок қайсы? A)

B)

C)

D)

Е)

28 Блок-схемада алгоритмнің тармақталуын көрсететін блок қайсы?


A)

B)

C)

D)

Е)

29 Алгоритмнің машиналық кодқа аударылған түрі қалай аталады? A) екілік код B) программа C) блок-схема D) мәтін E) псевдокод

30 Келесі блок-схемаға сәйкес алгоритмді көрсетіңіз:

s1

s2


A) тармақталатын B) қайталанатын C) көмекші D) сызықтық Е) таңдау

31 Келесі блок-схемаға сәйкес алгоритмді көрсетіңіз:

S1

S2

A) тармақталатын B) қайталанатын C) көмекші D) сызықтық Е) таңдау

32 Келесі блок-схемаға сәйкес алгоритмді көрсетіңіз:


шарт

s

A) тармақталатын B) қайталанатын C) көмекші D) сызықтық Е) таңдау

33 Тармақталу алгоритмі егер шарт 1-әрекет

онда

қай түрде берілген?

A) нотация B) график C) Flow-форма

2-әрекет


D) диаграмма Е) схема

34 Тармақталу алгоритмі иә

шарт

1-әрекет

жоқ

2-әрекет

қай түрде берілген?

A) нотация B) график C) Flow-форма D) Насси-Шнейдерман диаграммасы Е) схема

35 Псевдокод, бұлA) программа B) граф C) мәтіндік нотация D) схема E) екілік код

36 A) B) C) D) E)

Графиктік кескінді бейнелеу облысы үшін объектінің қандай қасиеті пайдаланылады? Font Реn Brush Canvas Рicture

37 Канвада салынатын суреттің сызықтарының параметрлерін беруде қолданылатын қасиет: A) Font B) Реn


C) Brush D) Canvas E) Рicture 38 Канвада салынатын суреттің тұйық облыстарын бояудың параметрлерін беруде қолданылатын қасиет: A) B) C) D) E)

Font Реn Brush Canvas Рicture

39 A) B) C) D) E)

Канвада салынған тұйық облысты бояу үшін қолданылатын әдіс: FloodFill Pie Polygon Polylin PolyBezier

40 A) B) C) D) E)

Енгізу терезесін шақыратын функция InputBox MessageBox ShowMessage Edit.Text Label.Caption

41 «Абзацтың соңы» ( немесе Enter) символының коды … A) 13 B) 32 C) 11 D) 9 E) 35 42 A) B) C) D) E)

Қаламның (Реn) ағымдағы орнын анықтайды: LineTo MoveTo FrameRect FillRect DrawFocusRect

43 A) B) C) D) E)

Тышқанды шерту кезінде пайда болатын уақиға: OnDbClick OnKeyPress OnKeyDown OnKeyUp OnClick

44 CheckBox компонентінің күйін /қосылған не ажыратылған/ анықтайтын қасиеті:


A) B) C) D) E)

Checked Caption Name ParentFont AllowGrayed

45 A) B) C) D) E)

Енгізу жолағындағы /Edit1/ текстті өзгертуге тыйым салатын қасиет: Enabled Checked Caption AllowGrayed ParentFont

46 A) B) C) D) E)

Клавиатура пернелерін басқан кезде пайда болатын уақиға (событие): OnDbClick OnKeyPress OnKeyDown OnKeyUp OnClick

47 A) B) C) D) E)

Тышқанды жылжыту кезінде пайда болатын уақиға ( событие): OnMouseUp OnMouseDown OnMouseMove OnClick OnKeyDown

48 A) B) C) D) E)

C++Builder форманың көрінбей тұруын (невидимость формы) қамтамасыз ететін әдіс: visible; enabled; hide; show; Caption;

49 A) B) C) D) E)

C++Builder – дегі форманы ерекшелеуге сәйкес оқиға (реакция на выделение формы): visible; enabled; onАctivate; hide; show;

50 C++Builder – де Borderstyle = bs Single; Bordericon = [bySystemMenu, byMinimize, byMaximize]; командаларының нәтижесі не болады:


A) B) C) D) E)

рамкасы қозғалмайтын терезе; Windows стандарт терезесі; Тұрақты рамкасы бар жылжитын терезе; Өлшемдерін кнопка арқылы басқаруға болатын терезе; Өлшемдері өзгермейтін терезе

51 A) B) C) D) E)

Жолдық типтерді бүтін сандық типтерге түрлендіру: StrToFloat () StrToInt() FloatToStr() IntToStr() RealToStr()

52 A) B) C) D) E)

Тышқанды жіберу кезінде пайда болатын уақиға: OnMouseDown OnMouseMove OnClick OnKeyDown OnMouseUp

53 A) B) C) D) E)

Формада сурет салатын оқиға: OnPaint; OnActivate; OnClick; On CanResize; OnKeyPress

54 A) B) C) D) E)

Нақты сан түріндегі жолды сандық типке айналдыру: StrToInt() IntToStr() StrToFloat () FloatToStr() FloatToStrF()

55 A) B) C) D) E)

Экранға хабарлама шығаратын терезені (окно с сообщением) шақыратын процедура: ShowMessage MessageBox InputBox Label - >Caption Edit->Text

56 A) B) C) D) E)

Бірнеше жолдан тұратын текстті өңдеу үшін қолданылатын компонент: Label Edit Memo CheckBox RadioButton


57 Командалық кнопка Button- ды пайдалануға определяющий признак допустимости) A) Enabled B) AllowGrayed C) Caption D) Checked E) ParentFont

рұқсат

беретін

қасиет

(свойства

58 Қосымша құру барысында бір топқа біріктіріліп және номерлері бойынша реттеліп тұрған ауыстырғыштар тобын беру үшін қандай қандай компонент қолданылады? A) GroupBox B) RadioGroup C) RadioButton D) Checked E) CheckBox 59 A) B) C) D) E)

ListBox компонентінің тізімдегі элементтердің (жолдардың) санын білдіретін қасиеті: Items Columns Count Sorted Selected

60 A) B) C) D) E) F) 61 A) B) C) D) E)

SetFocus() әдісін қолдануға болатын элемент қайсы? Button1 Edit1 Label1 Form1 Memo1 ОБП қандай принциптерге негізделген? Әдіс, қасиет, полиморфизм Оқиға, әдіс, қасиет Полиморфизм, инкапсуляция, қабылдаушылық Қабылдаушылық, полиморфизм, әдіс Қабылдаушылық, оқиға, әдіс, қасиет

62 Еdit терезесіндегі мәтіннің үлкен немесе кіші әріптермен жазылуын / немесе регистрлердің ауысып отыруын/ қамтамасыз ететін қасиет: A) CharCase B) PasswordChar C) ecNormal D) ecLowerCase E) ecUpperCase 63 Еdit компонентінің терезесіне енгізілген мәтіннің типін көрсетіңіз:


A) B) C) D) E)

string char[] AnsiString Text ANSI

64 A) B) C) D) E)

Memo терезесіндегі мәтінді файлға жазу үшін қолданылатын әдіс: LoadFile SaveFileTo LoadFromFile SaveToFile SaveFile

65 ComboBox компонентінің өзіне жазылған тізімдерді алфавит бойынша орналстыратын қасиеті: A) Columns B) Count C) Sorted D) Selected E) Style 66 A) B) C) D) E)

Қосымшаның негізгі менюін құру үшін қолданылатын компонент: Menu Designer MainMenu PopupMenu SystemMenu biSystemMenu

67 Қосымша элементтерінің контекстік менюін құру үшін қолданылатын компонент: A) Menu Designer B) MainMenu C) PopupMenu D) SystemMenu E) biSystemMenu

68 Меню конструкторын (Menu Designer) не үшін қолданылады? A) негізгі менюдің тақырыбын жазу үшін B) негізгі менюдің оқиғасын шақыру үшін C) контекстік менюдің тақырыбын жазу үшін D) контекстік менюдің оқиғасын шақыру үшін


E) менюдің пункттерінің қасиеттерімен, әдістерімен мен жұмыс жасау үшін.

69 С++ те мәні анықталмаған (немесе кез-келген типпен үйлесімді) тип ретінде қолданылады: А) union В) enum С) unsigned

D) Define

Е) void

70 C++ тегі мәліметтердің типіне жатпайтын типті көрсетіңіз: А) Char B) Bool C) Real D) Double E. Void

71 A) B) C) D) E)

Клавиатура басылған перненің ішкі кодын беретін глобалдық айнымалы: Click Press OnKey KeyUp Key

72 A) B) C) D) E)

Қосымша проектісіне қолданушының модулін қосу үшін орындалатын командалар: File-> New-> DataModule File-> New-> Data File-> New-> Modul File-> New-> Unit File-> New->UnitModul

73 A) B) C) D) E)

Қосымша проектісіне жаңадан форма қосу үшін орындалатын командалар: File-> New-> Form File-> NewForm File-> New->TForm File-> New-> Unit Project-> New->Form1

74 Формада орналасқан компоненттердің қолданылады? A) Object Inspectop B) Object Tree View C) Project Manager D) CodeEditor E) Form1

иерархиясын қарау

үшін

қандай терезе

75 Проект құрамына кіретін файлдарды қарау үшін қандай терезе қолданылады? A) Object Inspectop B) Object Tree View


C) Project Manager D) CodeEditor E) Form1 76 A) B) C) D) E)

Проект файлының (* .bpr- файл) текстін қарау үшін қандай команда қолданылады? Project -> View Project -> Close Page Project -> Open Page Project Options Project -> View Source

77 A) B) C) D) E)

View -> Forms командасы не үшін қолданылады? Проект файлының текстін қарау үшін Форма модулінің текстін қарау үшін Проект құрамындағы файлдар тізімін қарау үшін Проект құрамындағы формалар тізімін қарау үшін Проект құрамындағы модульдер тізімін қарау үшін

78 A) B) C) D) E)

View -> Units командасы не үшін қолданылады? Проект файлының текстін қарау үшін Форма модулінің текстін қарау үшін Проект құрамындағы файлдар тізімін қарау үшін Проект құрамындағы формалар тізімін қарау үшін Проект құрамындағы модульдер тізімін қарау үшін

79 Қосымша проектісіндегі форманың класс ретіндегі /мысалы, class TForm1/ сипаттамасы қай файлда сақталады? A) Unit1.cpp B) Unit1.dfm C) Unit1.obj D) Unit1.h E) Unit1.ddp 80 Форма мен ондағы компоненттердің өңдеуші оқиғалары /немесе функциялары, кодтары/ қай файлда сақталады? A) Unit1.cpp B) Unit1.dfm C) Unit1.obj D) Unit1.h E) Unit1.ddp 81 Формада (Form1) орналасқан Edit1 компонентінің келесі сипаттамасы object Edit1: TEdit Left = 128 Top = 96


Width = 177 Height = 21 PasswordChar = '*' TabOrder = 0 Text = 'Edit1' OnKeyPress = Edit1KeyPress End қай файлда сақталады? A) B) C) D) E)

Unit1.cpp Unit1.dfm Unit1.obj Unit1.h Unit1.ddp

82 Класс деструкторы үшін қайсы пікір дұрыс емес? A) Деструктордың типі яғни оның қайтаратын мәнінің типін көрсетуге болмайды, тіпті void типін де қолдануға болмайды B) Класста бір ғана деструктор болуы мүмкін немесе болмайды, болмаған жағдайда компилятор деструкторды өзі автоматты түрде тағайындайды C) Деструктордың параметрлері болмайды D) Деструктордың параметрлері болады E) Деструктордың аты міндетті түрде класстың атымен бірдей болады және «~» -тильда белгісінен басталады 83 Класс конструкторы үшін қайсы пікір дұрыс емес? A) Конструктордың аты міндетті түрде класстың атынан басқаша болады B) Конструктордың типі яғни оның қайтаратын мәнінің типін көрсетуге болмайды, тіпті void типін де қолдануға болмайды; C) Класста бір немесе бірнеше конструктор болуы мүмкін немесе тіпті де болмауы мүмкін; D) Конструктор по умолчанию болғанда оның параметрлері берілмейді немесе оның мәні нақты көрсетіліп беріледі E) Конструктор классқа жататын объектілердің көшірмелерін құрады 84 A) B) C) D) E)

Класс деструкторы қандай белгіден басталады? _ & ~ ^ |

85 Төменде сипатталуы берілген берілген class mashin


{ private: string marka, tysi, nom ; public: mashin() {assign("0","0","0");} ...

...

....

string NomMani() {return nom;}

void assign(string Marka, string Tysi, string Nomer); }; mashin

A) B) C) D) E)

класының жабық элементін көрсетіңіз:

public: marka mashin() NomMani() assign

86 Төменде сипатталуы берілген берілген class mashin { private: string marka, tysi, nom ; public: mashin() {assign("0","0","0");} ...

...

....

string NomMani() {return nom;}


void assign(string Marka, string Tysi, string Nomer); }; класының жарияланған /ашық/ элементін көрсетіңіз:

mashin

A) B) C) D) E)

marka private: public: NomMani() class

87 Төменде сипатталуы берілген берілген class mashin { private: string marka, tysi, nom ; public: mashin() {assign("0","0","0");} ...

...

....

string NomMani() {return nom;}

void assign(string Marka, string Tysi, string Nomer); }; mashin

A) B) C) D) E)

класының әдісі қайсы?

public: marka mashin() NomMani() assign (...)

88 Төменде сипатталуы берілген берілген class mashin {


private: string marka, tysi, nom ; public: mashin() {assign("0","0","0");} ...

...

....

string NomMani() {return nom;}

void assign(string Marka, string Tysi, string Nomer); }; mashin

класының конструкторын /конструктор по умолчанию/ көрсетіңіз:

A) B) C) D) E)

public: marka mashin() NomMani() assign (...)

89 A) B) C) D) E)

Экранға хабарлама шығаратын терезені (окно с сообщением) шақыратын процедура: ShowMessage MessageBox InputBox Label.Caption Edit.Text

90 A) B) C) D) E)

Программада кез-келген типтегі қатені өңдеу үшін қолданылады: try {...} throw {} catch(...) {} except {} finally {...}

91 A) B) C) D)

Программада қорғалған блокты жазу үшін қолданылады: try {} throw {} catch() {} except {}


E) _finally {} 92 Программадағы қорғалған блокта ерекше жағдайлар туса орындала беретін блокты жазу үшін қолданылады: A) try {} B) throw {} C) catch() {} D) except {} E) _finally {} 93 A) B) C) D) E)

Программада қатені өңдейтін кодты жазу үшін қолданылады: try {} throw {} catch() {} except {} finally {}

94 Программада нақты санды нольге бөлуде болатын қатеге сәйкес ерекше жағдайлар класы қайсы? A) EDivByZero B) ERangeError C) EInvalidOp D) EZeroDivide E) EOverFlow 95 С++Builder – дегі «ерекше жағдайлар » неге байланысты пайда болады? A) Қатеге B) Синтаксистік қатеге C) Динамикалық қатеге D) Программаға E) Логикалық қатеге 96 Қосымшаның негізгі менюін құру үшін қолданылатын компонент: A) Menu Designer B) MainMenu C) PopupMenu D) SystemMenu E) biSystemMenu 97 Қосымша элементтерінің контекстік менюін құру үшін қолданылатын компонент: A) Menu Designer B) MainMenu C) PopupMenu D) SystemMenu E) biSystemMenu


98 Меню конструкторын (Menu Designer) не үшін қолданылады? A) негізгі менюдің тақырыбын жазу үшін B) негізгі менюдің оқиғасын шақыру үшін C) контекстік менюдің тақырыбын жазу үшін D) контекстік менюдің оқиғасын шақыру үшін E) менюдің пункттерінің қасиеттерімен, әдістерімен мен жұмыс жасау үшін.

99 A) B) C) D) E)

С++Builder. Форманың баспаға шығаруды орындайтын әдісі қандай? Print; Printers; Т Print; ОnPrint; Printer

100

С++Builder .Басуға жіберілетін мәтін сақталатын компонент пен /немесе мәтіндік файлмен/ принтерді мәтіндік файлдық айнымалының көмегімен байланыстыратын процедура: AssignP; AssignPrinter; AssignPrn ; AssignF; AssignFileName;

A) B) C) D) E)


Пайдаланылған әдебиеттер

1.

Архангельский А.Я. Программирование в C++ Buіlder 6. М.: Бином, 2003.

2.

Бейзер Б. Тестирование чѐрного ящика. Технологии функционального тестирования программного обеспечения и систем. - СПб.: Питер, 2004. — 320 с.

3.

Буч Г., Рамбо Д., Якобсон И. Язык UML. Руководство пользователя. 2-е изд.: Пер. с англ. Мухин Н. – М.: ДМК Пресс, 2006. – 496 с.

4.

Вендров А. М. Практикум по проектированию программного обеспечения экономических информационных систем: Учеб. пособие. — 2-е изд., перераб. и доп. — М.: Финансы и статистика, 2006. - 192 с.

5.

Вендров А. М. Проектирование программного обеспечения экономических информационных систем: Учебник. — М.: Финансы и статистика, 2002. - 352 с.

6.

Гленфорд Майерс, Том Баджетт, Кори Сандлер. Искусство тестирования программ, 3-е издание = The Art of Software Testing, 3rd Edition. — М.: «Диалектика», 2012. — 272 с.

7.

Грекул В.И. и др. Проектирование информационных систем. 2005 г.- 304 с.

8.

Гудман С., Хидетниени С. Введение в разработку и анализ алгоритмов. -М.: Мир, 1982.

9.

Зиглер К. Методы проектирования программных систем. - М.: Мир, 1985.

10.

Иванова Г. С. Технология программирования: Учебник для вузов.- М.: Изд-во МГТУ им. Н. Э. Баумана, 2003- 320 с. /Серия: Информатика в техническом университете/

11.

Крэг Ларман. Применение UML 2.0 и шаблонов проектирования. Введение в объектно-ориентированный анализ, проектирование и итеративную разработку. М.:Вильямс, 07 – 736с.

12.

Лайза Криспин, Джанет Грегори. Гибкое тестирование: практическое руководство для тестировщиков ПО и гибких команд = Agile Testing: A Practical Guide for Testers and Agile Teams. - М.: «Вильямс», 2010. - 464 с.

13.

Лингер Р. и др. Теория и практика структурного программирования. - М.:Мир, 1982.

14.

Мейер Б. , Бодуэн К. Методы программирования. Т. I и 2. - М.: Мир,1984.

15.

Молчанов А. Ю. Системное программное обепечение. Лабораторный практикум. СПб.: Питер, 2005.- 284 с.

16.

Мұқашева М. Ө. Программалау /С++ Builder 6/. Оқулық. Астана, ЕҰУ -2011 ж.375 б.


18.

Нурманбетова Д.Н., Нефедова Л.В. Силлабустар әзірлеу бойынша әдістемелік нұсқаулар. – Астана, 2008. – 42 б. Нұрманбетова Ж.Н., Нефедова Л.В., Сарекенова Қ.Қ. Оқу-әдістемелік құралдар әзірлеу бойынша әдістемелік нұсқаулар: Екінші басылым, өңделіп, толықтырылған. – Астана: Л.Н. Гумилев атындағы ЕҰУ. – 2011. – 48 б.

19.

Оқытудың кредиттік технологиясы бойынша оқу үдерісін ұйымдастыру ережелері. ҚР БҒМ Министрінің 2011 жылғы 20 сәуірдегі № 152 бұйрығымен бекітілген.

20.

Свердлов С. З. Языки программирования и методы трансляции: Учебное пособие. – СПб.: Питер,2007-638 с.

21.

Синицын С. В., Налютин Н. Ю. Верификация программного обеспечения. - М.: БИНОМ, 2008. — 368 с.

22.

Тяпичев Г. А. Быстрое программирование на С++.– .: СОЛОН-Пресс, 2004-384 с.

23.

Фокс Дж. Программное обеспечение и его разработка. - М.: Мир, 1985.

24.

Франке. С++ . Учебный курс.- СПб.: Питер, 2003

25.

Холингворт, Джаррод, Сворт и др. Borland C++Builder разработчика.: Пер с англ. – М. : ИД «Вильямс», 2004- 976 с.

17.

6.

Руководство


Мазмұны

І

Силлабус

3

ІІ

Глоссарий

10

ІІІ Дәріс сабақтарының қысқаша конспектілері

13

IV Зертханалық және өзіндік жұмыстарға әдістемелік нұсқаулар

45

Курстық жұмыстарға әдістемелік нұсқаулар

164

VI Пән бойынша білімді бақылау материалдары

173

V

Пайдаланылған әдебиеттер

205

Мазмұны

207


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.