курсовая. Программа ру ерекшеліктері курсты Жмыс орындаан
Скачать 173.15 Kb.
|
2 Си тілінің қолданылуы және пайда болу кезендері 2.1 Жаңа проект құру Жаңа проектті бірнеше жолмен құруға болады. Бірі – File | New|Application командасы немесе File| New Application. Тағы бір жолы – File| New| Other командасы арқылы. Бұл команданы таңдағанда New Items терезесі ашылады. Бұл объектілер Депозитарийінің сөресі болып табылады, яғни компоненттер, формалар және проектлер үлгісінің сақтау қоймасы. Жаңа проектіні ашу үшін New бетінде орналасқан Application(қосымша) пиктограммасын шерту керек. Application пиктограммасы бос формалы қосымшаны құрады.Бұдан басқа MDI Application пиктограммасы бар проект болады. Бұл MDI қосымшаларындағы секілді барлық стандартты функциялар жүзеге асырылған көптерезелі текстілік редактор. Одан бөлек Application Wizard пиктограммасы бар. Оны таңдау арқылы қолданушыға Мастер(Wizard) диалогтық терезелерден өткізіп,соңында менюі, инструментальды панелі,диалогтары бар қосымша құруға көмек береді. Нәтижесінде формада файлдарды ашу және сақтау, басып шығару және принтерді орнату компонент-диалогтары болады. Сонымен қатар модуль текстіне сәйкесінше комментарийлермен дайын кодтар енгізіледі. С++ Builder арқылы консольдық проектлерді – Win32 қолданатын және Windows-тағы DOS терезесінде жіберілетін бағдарламаларды құруға болады. Ол үшін Депозитарий терезесінде New бетінде Console Wizard пиктограммасын таңдау керек. Проектіні сақтау. Жаңа проектні құрғаннан соң екінші жасайтын қадам – оны сақтау. Егер қолданушы жұмысын проектні сақтаудан бастайтын болса, одан кейін компьютермен болған келеңсіз жағдайлардан қорықпауына болады. Сонымен қатар бірден сақтаудың артықшылығын растайтын тағы аргумент бар. Көптерезелі қосымшаларда ,сақтау арқылы әрбір модульге атауларды беріледі, олар бағдарламада өзара сілтемелер үшін қажет болады. Объектіні File | Save All командасы арқылы сақтауға болады. Және де сәйкес тез кнопканы да басу арқылы сақтауға болады. Бірінші сақтау түрінде сақталатын модуль файлының атауы сұралады,ал содан кейін проект файлының атауы. Бұл жерде модуль атауы мен проект атаулары бірдей болмауын қадағалау керек. Себебі, модуль файлы мен проектінің негізгі файлының кеңейтілулері бірдей - .срр, сол үшін бір-бірін жойып жібермес үшін әр түрлі аттармен сақталуы керек. С++ Builder-дің үнсіз келісім бойынша Unit1, Unit2 сияқты атауларды беру дұрыс емес. Себебі, егер сізде бір емес бірнеше проектлер болатын болса, онда олардың қандай проект екенін атауынан білу мүмкін болмайды. Және де сіздің проектілеріңізбен жұмыс жасағысы келетін басқа адамдарға да түсіну күрделі іс болады. Жаңа проект құрған кезде:1) Жаңа проектіге жаңа каталог құру керек. 2) File| Application командасы арқылы жаңа проект құру қажет. 3) File| Save All командасы арқылы проектті бірден сақтау керек. Келесі жұмыс сеанстарында сақталған проектілерді File| Open Project командасы көмегімен ашуға болады. Бірақ егер ол проектмен жақында жұмыс жасалған болса File|Reopen командасы арқылы ашқан ыңғайлы. Тағы тез кнопкалардың көмегімен де ашуға мүмкіндік бар. Тағы бір ыңғайлы әдіс болып С++ Builder ашылған уақытта автоматты түрде cоңғы сеанста қолданылған проект ашылатын болса. Ол үшін Tools|Environment Options командасын орындау керек. Ашылған көпбетті терезеден Preferences бетіне өтіп, Autosave options автосақтау опциясының Project desktop индикаторын қосу керек.Сол кезде С++ Builder-дің кезекті қосылуларында соңғы сеанста жұмыс жасаған проектілер мен барлық терезелер ашылатын болады. Қолданушы өз проектін Депозитарийде сақтауына болады. Кейін керек кезде оны қайта алып отыруға,падалануға болады. Форманың жеке көшірмесін жасау Басқа қосымшадан жаңа қосымшаға форманы қосқаннан кейін бірнеше қосымшалардың бірігіп форманы қолдануды болдырмау үшін Код Редакторы терезесінде осы форманың модуліне өтіп, модульді жаңа қосымшаның каталогында сақтай отырып File| Save As командасын орындау керек.Бұл кезде әр тұрлі қосымшалар бір форманың әр түрлі копиясын қолданады және олардың біреуінің өзгеруі қалғандарына әсерін тигізбейді. Форманың копиясын басқа да әдістермен құруға болады. Біріншіден, оны Windows немесе MS DOS құралдарымен құруға болады, жай ғана сәйкес файлдарды бір каталогтан екіншісіне көшіреміз. Бұл кезде форманың тек қана .срр модуль файлы емес, оның тақырыптық .һ файлы және бейне файлы .dfm екенін ұмытпау керек.Сол үшін барлық үш файлды көшіру қажет. Объектілік модуль файлын көшіресе де болады, себебі ол бағдарламада компиляция кезінде құрылады. Форманың автономды копиясын жасаудың келесі тәсілі – C++ Builder менюін қолдану. Кез келген уақытта ашылатын форманың файлын көрсетіп File| Open командасын және File| Save As командасын тізбектей орындауға болады. Бұл командалардың алғашқысы форманы ашады, ал екіншісі қолданушы көрсететін орын мен беретін атаумен сақталады. Мұндай операцияның артықшылығы-сақталатын файлдың жиынтығын ойлаудың қажеті болмайды. C++ Builder автоматты түрде тек .срр файлды емес, .һ және .dfm файлдарын көшіреді. 2.2 Депозитариядан форманы уақытша алу(заимствование) C++ Builder-да тағы бір мүмкіндік бар – Депозитариядан проектке қосылатын форманы уақытша алу. Ол үшін File| New| Other командасын орындау керек,бұл кезде New Items(жаңа элементтер) терезесі ашылады. Forms және Dialogs беттерінде проектіңізге уақытша формалар алуға болады. Уақытша алынған форма терезенің төменгі бөлігінде орналасқан үш радиокнопка арқылы анықталады:Copy – көшіру, Inherit-мұрагерлікпен алу, Use-қолдану. Егер Copy кнопкасы қосулы болса файлдар жай ғана қосымшаға көшіріледі. Ол көшірмені өзгертуге бола береді,себебі ол Депозитариядағы формаға әсер етепейді.Осы режимді C++ Builder құрушыларымен Депозитарияға қосылған форманың бірін проектке қосу үшін қолдануға болады.Депозитариядағы кейбір дайын формалар өте қарапайым, орындалатын кодтары болмайды. Кейбіреулерінде қиын кодтар болады,оларды қолдануға болады. Шаблондарды қолдану қосымшаңыздың индивидуалдығынан айырады.Ал бұл жақсы қосымшаның өте маңызды критерийі болып саналады. C++ Builder-дің дайын формаларын тек қарап шығу үшін, кодтардың кейбір фрагменттерін немесе терезенің кеңістігін ұйымдастырылу принципін уақытша алу үшін қолдануға болады. Егер есепте қосымшаның тез прототипін құру керек болса,онда дайын форманы қолданып,соңғы вариантында өзінікіне ауыстыруға болады. C++ Builder анықтамалық жүйесі және оның OpenHelp кескіндеулер программасы. C++ Builder анықтамалық жүйесі Help мәзірінен шақырыла алады. Ол мәзірдің бөлімдері бар: Анықтаманы тек Help мәзірінен ғана емес С++Builder-дің кез келген терезелерінен алуға болады. Формада кез келген компонентті белгілеп, F1бассақ анықтаманың тақырыбы көрсетіледі. Егер де Код Редакторы терезесінде тұрып курсорды кез келген компонент функциясына қойып ,F1 –ді бассақ та бізді қызықтыратын анықтама шығады. Сәйкес, компоненттің қасиеті туралы контексті анықтама алуға болады. Ол үшін Объектілер инспекторы терезесінен сәйкес қасиетті белгілеп алу қажет. Өкінішке орай, кейде контексті анықтама дұрыс жауап бермейді. Кейде жауапта мұндай тақырып жоқ деген сияқты хабарламама жіберуі мүмкін. Ал кейде тіптен басқа тақырыпқа қарай ауытқып кетеді. Егер де бізді С++ немесе С++Builder жайлы анықтама қызықтырса, онда мұндай жағдайда қажетті тақырыпқа анықтама алу үшін Содержание яғни мазмұны деген беттен анықтама алуға болады. Ал егер де компонент , қасиеттер, әдістер жайлы анықтама қажет болса,онда сол бетте “Visual Component Library Reference” (Обзор библиотеки визуальных компонентов) кiтабын ашу, содан соң “Alphabetical Object and Component Listing”(Алфавитный список объектов и компонентов) ашу ыңғайлы болып келеді. Бұл тізімнен алфавит бойынша қажетті компонентті іздеп тауып алуға болады. Ал анықтама терезесінен әрқашан да компоненттің қасиеті, әдістері мен оқиғалары жайында табуға болады. Егер С немесе С++ -тің типтері және функциялары туралы анықтама табу керек болса, онда анықтама бетінде Содержание/Мазмұнынан “C Runtime Library Reference” (Обзор библиотеки С)немесе “Standart C++Library” деген кітаптардың біреуін ашу ыңғайлы. Сәйкес бөлімдерден барлық типтер мен функциялар тізімін аламыз. Енді анықтамалар жүйелеріне түзету жасауға болатын өте қызықты құрал Borland OpenHelp жайлы айта кетейік. Оны шақыру үшін Help| Customize командасын орындаймыз. OpenHelp жобада анықтамалық жүйе туралы ақпаратты сақтайды. Бұл жобаның файлының кеңейтілуі .ohp және ол / Help каталогында сақталған. OpenHelp-тің тағы да ескіріп кеткен анықтамалық файлдарды жуйелік реестрдағы сілтемелерді жою мүмкіндігі бар. Ол үшін OpenHelp терезесінде File| Clean Registry командасын орындау арқылы іске асыруға болады. Проектіні құрастыру және компиляцияға жіберу. Қосымшаны компилациялау әр түрлі әдіспен орындалуы мүмкін. Компиляция Run|Run командасы арқылы немесе жедел батырма немесе Ғ9 батырмасы арқылы орындалады. Осы жағдайда бағдарламаның компиляциясы, компоновкасы орындалады және орындалу модулі .exe жасалынады сосын ол орындалуға жіберіледі. Алайда .exe модулінің жасалуы компиляция кезінде қате болмағанда ғана құрылады. Егер компиляциядагы файлда жөнделмейтін қателер болса, онда орындалатын файл құрылмайды. Ал егер де қателер болмаса, онда фай құрылады, бірақ та мұндай жағдайдың өзінде де компиляторда ескертулері болуы мүмкін. Run командасын орындау кезінде командалық жолды шақыра аламыз. Ол үшін алдымен Run| Parameters командасын орындаймыз және ашылған терезеге командалық жол қажет ететін команданы жазамыз. Жобаны құрып оны бірден компиляцияга жібере бермейміз. Тек соңғы өзгертулерде қате бар жоғын тексеру маңыздырақ. Өйткені ол үшін уақыт жұмсамаған абзал. Одан да мәзірдің басқа да командаларын қолданған дұрыс: Project| Compile Unit, Project| Make Project немесе Project| Build Project. Compile командасы компиляцияны тек Код Редакторы терезесінде немесе Жоба менеджерінде біз белгілеген модуль үшін ғана орындайды. Егер компиляция сәтті өтсе, онда объекті файл .objқұрылады. Make командасы мәтіндері өзгертілгеннен алдыңғы жобаның компоновкасынан бастап барлық модуль үшін компиляция жасайды. Егер компиляция сәтті өтсе, онда модульдің объктілі файлы .objқұрылады және программаның компоновкасы жасалынады. Егер ол да сәтті өтсе, онда орындалу модулі .exeқұрылады. Яғни Make пен Run командасының айырмашылығы тек компоновкадан кейін приложениенің орындалуы жүрмейтіндігінде. 2.3 Құрастырушы және компилятор хабарламасы Компилятор қандай қателіктер мен ескертулер туралы хабарламалар беретініндігі жайлы қарастырайық. Ол үшін қарапайым қате операторы бар приложение/қосымша құрап көрейік. Жаңа приложение/қосымша бастап, формаға Labelбелгісін Button батырмасын көшіреміз. Батырма шертпесіне келесі операторды жазамыз: void_fastcall TForm1::Button1Click(Tobject *Sender) . { int i,j; double A; for (i=0; i<50; i++) A *= 10000; // A 10000 есе өседі Label1->Caption = “A= ” +B; Бұл код 50 рет орындалатын және әр итерацияда А айнымалысын 10000-ға өсіретін forциклын қамтиды. Енді Run| Run немесе жедел батырманы немесе F9 батырмасын басайық. Код Редакторы терезесінен суреттегідей бейнені көреміз: Терезенің төмен жағында қателіктер мен ескертулер туралы хабарлама көрінеді. Бірінші хабарлама : [C++ Warning] Unit1.cpp(23): W8013 Possible use of ‘A’ before definition ([C++ предупреждениеъ модуль Unit1.cpp, строка 23: W8013 переменная А, возможно, используется до того, как ей присвоено значение) Бұл ескерту А айнымалысының бастапқы мәнін бермегеніміз жайлы және 23 жолда анықталмаған. Бұл компилятор үшін қателік емес тек Warning- ескерту. Осыны түзету үшін А айнымалысын 1 ге теңестіруіміз керек: double A=1; Екінші хабарлама: [C++Error] Unit1.cpp(24) : E2451 Undefined symbol ‘B’ ([C++ Ошибка] модуль Unit1.cpp, строка 24: E2451 Необъявленный идентификатор В) Бұл қателік туралы хабарлама. Бұл жағдайда мына операторда: Label1->Caption= “A= ”+ B; Бұл жерде А айнымалысымен қоса мүлдем хабарланбаған В айнымалысы көрсетілген. Үшінші хабарлама: [C++ Warning] Unit1.cpp(25): W8080 ‘j’ is declared but never used ([C++Предупреждение)] модуль Unit1.cpp, строка 25: W8080 Переменная ‘j’ объявление, но нигде не используется) Шынында да ‘j’ айнымалысын хабарлап, оны еш жерде қолданған жоқпыз. Сондықтан оны өшіріп тастауға болады. Соңғы хабарлама: [C++Warning] Unit1.cpp(25): W8057 Parametr ‘Sender’ is never used Sender –компонент болып табылады. Ол бізге керек емес, яғни бұл ескертуді қайтарып тастауға болады. Мысалдың дұрыс нұсқасы мынындай: double A=1; void_fastcall TForm1::Button1Click(TObject *Sender) . { int i; for(i=0; i<50; i++) A *= 10000; // A 10000 есе өседі Label1->Caption = “A= ” + FloatToStr(A); } 2.4 Си тілінің қолданылуы және пайда болу кезендері Си тілі өткен ғасырдың 70-жылдары басында АҚШ-та Bell Telephon Laboratories компания-сының қызметкері Дэннис Ритчидің бастауы-мен дүниеге келді. Бұл тілдің негізі Алголдан басталып, Си және ПЛ/1 тілдерімен қатар пайда болды. Си тілінің шығуы UNIX операциялық жүйесін-де программалаумен тығыз байланысты, өйт-кені бұл жүйе ассемлерде және осы Си тілінде жазылып шыққан болатын. Бұл тілде жазылған программаны компьютерде орындау кезінде ол алдымен трансляция сатысынан өтіп (машина тіліне аударылып), объектілік программа түріне ауысады да, сонан кейін барып орындалады. Осы сәтте компьютерде программаның екі нұсқасы болады, оның біріншісі –Cи тіліндегі алғашқы нұсқасы, ал екіншісі –объектілік кодтағы машина тілінде жазылған программа. Есептің нәтижесін тек машиналық кодта жазылған программа арқылы аламыз, ал программаны түзету қажет болғанда оның алғашқы нұсқасы өңделіп, оны қайта түрлендіру сатысы жүзеге асырылады. Жалпы Си тілінің даму жолына қарасақ: 1. Алгол-60 -1960-ж. халықаралық комитет жасап шығарды 2. CPL -(Combined Programming Language) Кембриджде және Лондон университетінде 1963 ж. қатарласа жасалды 3. BCPL -(Basic Combined Programming Language) Кембриджде Мартин Ричардс 1967 ж. жасап шығарды 4. B -Bell Labs қызметкері Кен Томпсон 1970 ж. жасады 5. С -Bell Labs қызметкері Дэннис Ритчи 1972 ж. жасады 6.Сонымен, 1983 ж. Си тілі стандартын жасау үшін (ANSI C) Америка ұлттық стандарттар институты (ANSI) құрылды. Кез келген Си-программа бір немесе бірнеше функциялардан тұрады. Олар программа құруға керекті негізгі модульдер болып табылады. Келесі суретте Си программасының жалпы құрылымы көрсетілген. Си тілі Си тіліндегі программа жеке-жеке жолдардан тұрады. Оларды теру, түзету арнайы мәтіндік редакторлар арқылы атқарылады. Программа қатарларының алдындағы азат жол немесе бос орындар саны өз қалауымызша алынады. Бір қатарға бірнеше командалар немесе операторлар орналаса алады, олар бір бірінен нүктелі үтір (;) арқылы ажыратылып жазылады, бірақ бір жолда бір ғана оператор тұрғаны дұрыс, әрі түзетуге жеңіл, әрі ыңғайлы болып саналады. Программалар мысалы: /* х-тің оң және мәндері үшін төмендегі функцияны есептеу y = sqrt(x*x+1) +abs(x), егер x y = 3*x+4, егер x> =0 */ #include /* экранмен жұмыс істеу директивасы*/ #include /* енгізу-шығару директивасы */ #include /* матем. функциялар директивасы*/main () {int x; float y; textcolor(GREEN); /* жасыл мәтін*/ textbackground(BLACK); /* қара фон*/ clrscr(); /* экранды тазалау*/ printf("\nx,y енгіз:"); scanf("%d", &x); if (x else y=3*x+4; printf("Нәтиже=%f\n", y); printf("Аяқтау үшін Enter басу керек"); getch(); /* нәтиже экранын көрсету */ return 0; } Си тілінің алфавиті. Тілдің алфавиті программаның элементтерін құруда қолдануға болатын символдар жиынынан тұрады. Оған әріптер, цифрлар және арнайы белгілер кіреді. Тіл ерекшеліктеріне қарай символдар тобын шартты түрде төмендегі топтарға жіктеуге болады, олар атау (идентификатор) ретінде қолданылатын символдар (a,b,c,...,z және цифрлар ); цифрлар ( 0,1,2,...,9 ) ; айыру белгілері (, . : ; “ _ ); арнайы символдар (#, &, *...). а) Әріп ретінде латын алфавитінің бас және кіші әріптері қолданылады, олар: A B C D E F G H І J K LM N O P Q R S T U V W X Y Z a b c d e f g h і j k l m n o p q r s t u v w x y z және астын сызу таңбасы (_) әріпке саналады; Бас әріптер мен кіші әріптер бірдей болып саналмайды, мысалы, Х пен х екі айнымалы атауы, дәл сол сияқты ALFA1, aLfA1 және alfa1 де әр түрлі атаулар түрлері болып саналады. Атауларда әріптер цифрлармен араласып жазыла береді, бірақ атаудың алғашқы символы міндетті түрде әріп болуы тиіс, мысалы, VES1, SALMAK2, Baga_5, cena7, T7S25, ART25var8,т.с.с. Ұлттық әріптер (қазақ, орыс, араб т.с.с.) атау ретінде қолданылмайды, олар тек тырнақшаға (“) алынған тұрақты сөз тіркестері немесе /* және */ таңбаларымен қоршалған түсініктеме ретінде ғана кездеседі /* бұл түсініктеме */. ә) Ондық цифрлар: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 тәрізді сан таңбалары. Он алтылық цифрлар ондық цифрлардан және A-дан F-қа (немесе a-дан f-қа) дейінгі латын әріптерінен тұрады. Арнайы символдарға пунктуациялау және операциялар (амалдар) белгілері жатады. б) Арифметикалық амалдардың белгілері: + -қосу; -көбейту; –-алу; / -бөлу; % -қалдық табу; 10 % 3 -нәтижесі 1; в) Логикалық амалдардың белгілері: && -және (екі шарт қатар орындалады A && B); || -немесе (екі шарттың бірі орындалады A || B); ! -емес (шартқа кері -терістеу амалы! A); г) Айыру белгілеріне бос орын, ЕNTER (келесі жолға көшіру) пернесін басу белгісі және үтір, нүктелі үтір таңбалары жатады. Айыру белгілері атауларды, сандарды, түйінді сөздерді бір-бірінен бөліп тұрады. Түсініктеме // таңбасынан кейін жол соңына немесе /* және */ белгілерімен қоршалып, солардың ішіне жазылады, соңғысы –бір немесе бірнеше жолдардан тұруы мүмкін. Сонымен, айыру белгілері: _ (бос орын), (үтір) . (нүкте) : (қос нүкте) ; (нүктелі үтір) ' (апостроф) “(қостырнақша) (,), [,], {,} таңбалары. д) Қатынас таңбалары немесе салыстыру белгілері: = = (тең), != (тең емес), (үлкен), = (кіші емес таңбасының орнына) Әрбір символдың өзінің реттік нөміріне сәйкес белгіленген коды болады, ол стандарт түрінде бекітілген. Әр елдің стандарттары негізінде америкалық кодтар стандарты жатады (Amerіcan Standart Code for Іnformatіon Іnterchange -ASCІІ), компьютерде жұмыс істеу кезеңінде оларды да білген абзал. Си тілінің түйінді сөздері –программада алдын ала анықталған белгілі бір мағынасы бар сөз тіркестері. Си тілінің түйінді сөздері (служебные или ключевые слова) мәліметтер типтері, операторлар мен стан-дартты функциялар атаулары, жады кластары, моди-фикаторлар (толықтырғыштар), т.с.с., олардың тіл-дің әр түрлі нұсқаларында аздап айырмашылықтары болуы мүмкін. Қордағы (резервтегі) сөздер: auto double int struct break else long switch register tupedef char extern return void case float unsigned default for signed union do if sizeof volatile continue enum short while, т.б. Бұл келтірілген түйінді сөздерді айнымалыаттары немесе тұтынушы қойған бейстандарт атаулар ретінде қолдануға болмайды. Cи тілінің қарапайым объектілері Тілдің қарапайым объектілеріне тип, сан, идентифи-катор, константа, айнымалы және функция, өрнек ұғымдары кіреді. Тілдің ары қарай бөлінбейтін ең қарапайым бірлігі лексем (token деп те айтады) деп аталады. Лексемнің 5 типі бар: операциялар (operator), айыру таңбалары (separator), идентификаторлар (identifier), түйінді сөздер (keyword) және константалар (constant). Біз лексемдерді дұрыс жазуға мүмкіндік беретін объ-ектілерді қарастырып, программаның жалпы құрылы-мынан мәліметтер берейік. Константалар және кез келген айнымалылар бүтін саннан, нақты саннан, символдан немесе сөз тіркесте-рінен құралады. С++ тіліне қатысты берілген тапсырмалардың орындалуы2-нің 1000 дәрежесінің барлық санын шығару. #include |