Файл қосу
Массив және функциялар
ҚАЗАҚСТАН РЕСПУБЛИКАСЫ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ Семей қаласының шәкәрім атындағы семей мемлекеттік университеті 3 деңгейлі СМЖ құжаты ПОӘК ПОӘК 042-39. 1.ХХ/01- 2013 ПОӘК <<Программалау>> пәні бойынша оқу-әдістемелік материалдар Редакция №____от_____ 5В011100 - <<Информатика>> мамандығына арналған <<Программалау>> ПӘНІНІҢ ОҚУ-ӘДІСТЕМЕЛІК КЕШЕНІ ОҚУ-ӘДІСТЕМЕЛІК МАТЕРИАЛДАР Семей 2013 МАЗМҰНЫ * Глоссарий * Дәрістер * Практикалық және зертханалық жұмыстар * Студенттің өздік жұмысы ГЛОССАРИЙ Глоссарий Арнайы символдарға пунктуация және арифметикалық операция (амалдар) белгілері жатады. Арифметикалық амал белгілері (+) қосу; (*)көбейту; (-) азайту; (/) бөлу. Атау -- идентификатор (identification -- объектінің белгілі бір символдар тіркесіне сәйкестігін бекіту) программаны және программадағы тұрақтыларды, типтерді, айнымалыларды, функцияларды, файлдарды т.б. белгілеп жазу үшін қажет. Айыру белгілеріне бос орын, барлық басқару символдары,тыныс белгілері, ENTER (келесі жолға көшіру) пернесін басу белгісі және түсініктемелер жатады. Айнымалылар деп программаның орындалу барысында әр түрлі мәндерді қабылдай алатын шамаларды айтады. Деректер -- сан мәндері мен мәтін түріндегі сөз тіркестерін мән ретінде қабылдай алатын тұрақтылар (константалар), айнымалылар т.б. осы тәрізді құрылымдар немесе солардың адрестері. Дерек енгізу -- бастапқы деректерді пернетақтадан, дискіден немесе енгізу-шығару порттарынан енгізу арқылы жүзеге асырылады. Диапазондық немесе ауқьмдық тип. Мұнда көрсетілген шама қабылдай алатын мәннің алғашқысы (ең кіші) мен соңғысы (ең үлкен) екі нүкте арқылы бөлініп көрсетіледі. Жергілікті (локальды) блок - блок ішіндегі блок - жергілікті (локальды) блок деп аталады. Жергілікті блоктарға процедуралар мен функциялар кіреді, олар кейбір программаларда болмауы да мүмкін. Қатынас таңбалары немесе салыстыру белгілері: = (тең), <> (тең емес), < (кіші), > (үлкен), < = (үлкен емес, < таңбасының орнына), > = (кіші емес, > таңбасының орнына). Көмекші программа -- алдын- ала қандай да бір атаумен аталған командалар тобы. Олар программаның кез - келген жерінен оның атауын көрсету арқылы шақырылып атқарыла береді. Логикалық амал белгілері: AND -- және (логикалык көбейту) операциясы; OR -- немесе (логикалык қосу) операциясы; NOT -- емес (терістеу немесе жоққа шығару) операциясы; XOR -- арифметикалық немесе амалы; SHL -- биттер (1 мен 0-дер) тіркесін солға ығыстыру; SHR -- биттер (1 мен 0-дер) тіркесін оңға ығыстыру. Логикалық типтегі (BOOLEAN) шамалар, негізінен, екі мән қабылдайды -- TRUE (ақиқат) және FALSE (жалған), олар компьютер жадында бір байт орын алады. Негізгі блок - негізгі программа блогы, сондықтан ол басқа блоктарға кірмеуі тиіс. Нақты сан түріндегі типтер - ондық сандар бүтіні мен бөлшегін бөлетін үтірі жылжымалы және тұрақты түрде жазылады. Үтірі тұрақты ондық сандар кәдімгі математикадағыдай жазылады, бірақ үтір орнына нүкте қойылады. Мысалы, 25.48, -127.25, 0.67, -8.0. Үтірі жылжымалы ондық сандар дәрежелік көрсеткіші берілген экспотенциалды түрде жазылады, мысалы, -1.25Е + 12 (1,25*1012), 1.3Е-05 (1,3*105) т.б. Нәтиже алу (шыгару) -- аралық немесе қорытынды мәліметтерді экранға, дискіге немесе енгізу-шығару порттарына жазу. Операциялар немесе амалдар -- берілген және есептелген мәндерді меншіктеу, соларды өңдеу, салыстыру операцияларын орындайды. Ондық цифрлар. 0,1, 2, 3, 4, 5, 6, 7, 8, 9 сан таңбалары. Оналтылық цифрлар ондық цифрлардан және А-дан Ғ-қа (немесе а-дан f-қа) дейінгі латын әріптерінен тұрады. Программа болгы - блоктар екі бөлімнен тұрады, олардың алғашқысы-мәліметтерді сипаттау бөлімі, ал екінші-сол мәліметтерді пайдаланып, әр түрлі іс-әрекеттерді (операцияларды, амалдарды) атқару бөлімі. Мәліметтерді сипаттау бөлімінің болуы міндетті емес, ал екінші негізгі бөлімнің болуы болуы мүмкін. Сандар мен айнымалылар бүтін және нақты болып бөлінеді. Бүтін сандар: +4, -100, 15743, 0 т.б. Разрядтылығы 16 биттен тұратын дербес компьютер үшін қолданылатын бүтін сандар (ағылшынша INTEGER) -32768-ден +32767 дейінгі аралықта ғана жазылады, бұдан үлкен сандар нақты сандарға айналдырылады. Символдық типтегі (CHAR) шамалар мән ретінде тек бір таңбаны ғана қабылдай алады. Мәннің символ екендігін көрсету үшін оны апостроф ішіне алып жазады. Мысалы, `а' , `һ' , `5', `*', т.б. Саналатын тип стандартты типке жатпайды, ол параметрлердің мәніне сәйкес келетін атаулар (идентификаторлар) тізімінен тұрады. Атаулар тізімі үтір арқылы ажыратылып, жай жақша ішіне жазылады. Мысалы: атау = (1-идентификатор, 2-идентификатор,..., n-идентификатор); kynder = (`дүйсенбі', ` сейсенбі `, ... , ' жексенбі `); Идентификаторлар орналасқан орны бойынша 0-ден бастап нөмірленеді. Бір идентификатор тек бір ғана саналатын типті көрсетеді. Тұрақты немесе константа деп программаның орындалу барысында мәндері өзгеріссіз қалатын шамаларды айтады. Түсініктеме -- программа жолдары соңында немесе оның түйінді сөздері арасында қазақша (орысша) түсінік беретін пішінді жақшаға алынып жазылған сөз тіркестері. Олар программа операторларының орындалуына ешқандай әсер етпейді. Тіркестік типтегі шамалар (STRING) апостроф ішіне алынған символдар тізбегін қабылдайды. Мысалы, "компьютер", "универ - ситет", "main", "#&*" т.б. Цикл -- белгілі бір шарттар орындалған (кейде егер орындалмаса) жағдайда көрсетілген командалар жиыны бірнеше рет қайталанып атқарылады. Қайталау саны бүтін санмен беріледі. Шартты турде атқарылу -- белгілі бір көрсетілген шарттың орындалуына байланысты (ақиқат болса), командалар жиыны атқарылады, әйтпесе олар аттап өтіледі немесе басқа командалар жиыны орындалады. ДӘРІСТЕРДІҢ ҚЫСҚАША КОНСПЕКТІСІ Дәріс №1 Тақырыбы: С++ программалау тілі. Мақсаты: С++ тілінде кілттік сөздер мен идентификаторларда пайдаланылатын символдар, ESC-тізбектер туралы ұғымды енгізу. Тұрақты шамалар, идентификатор, кілттік сөздер, программа мәтінінде түсініктемелерді (комментарийлерді) пайдалану ұғымдарын енгізу. Си тілі қазіргі күнгі компьютерлердің мүмкіндіктерін ашып береді. Си тіліндегі программалар ықшамдылығмен, жылдамдығымен ерекшеленеді. Тілдің құрылымы төменгі деңгей программалауын, құрылымдық программалауды, модульдік программалауды қолдануға дағдыландырады. Cи тілінің көп трансляторлары - компилятор болып келеді. Программалау жүйесіне - препроцессор, компилятор, байланыс редакторы, кітапханасы, текстік редактор, отладчик және интегралды басқару ортасы кіреді. Әріптер мен сандар 1. Кілттік сөздерді (ключевое слово) және идентификаторларды құруға пайдаланылатын символдар (1-кесте). Бұл топқа ағылшын алфавитінің бас және кіші әріптері, сонымен қатар астын сызу символы да кіреді (2-кесте). Бірдей бас және кіші әріптер әр түрлі символдар болып есептеледі. Себебі олардың кодтары әр түрлі. 1-Кесте Латын алфавитінің бас әріптері A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Латын алфавитінің кіші әріптері A b c d e f g h I j k l m n o p q r s t u v w x y z Астын сызу символы _ 2. Орыс алфавитінің бас және кіші әріптерінің тобы және араб цифрлары (2-Кесте). 2-Кесте Орыс алфавитінің бас әріптері А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Ь Э Ю Я Орыс алфавитінің кіші әріптері а б в г д е ж з и к л м н о п р с т у ф х ц ч ш щ ы ь э ю я Араб цифрлары 0 1 2 3 4 5 6 7 8 9 3. Нөмірлеу белгілері мен арнайы символдар (3-Кесте). Бұл символдар бір жағынан есептеу процесін ұйымдастыру үшін, ал екінші жағынан белгілі бір нұсқау жиынтығын компиляторға тапсыру үшін пайдаланылады. 3-Кесте Символ Аталуы (наименование) Символ Аталуы (наименование) , үтір ) оң жақ дөңгелек жақша . нүкте ( сол жақ дөңгелек жақша ; үтір нүкте } оң жақ фигуралық жақша : қос нүкте { сол жақ фигуралық жақша ? сұрақ белгісі < кіші ` апостроф > үлкен ! леп белгісі [ квадрат жақша | тік сызық ] квадрат жақша / бөлшек сызық # нөмір \ кері сызық % процент ~ тильда & амперсанд * жұлжызша ^ логикалық жоқ + плюс = тең - минус " тырнақшалар Бұл тізімде көрсетілмеген белгілер тек жолдық литералдарда, тұрақты-символдарда және комментарийлерде қолданылуы мүмкін. ESC-тізбектер Бұл топтағы арнайы символдық комбинациялар жолдарда және символдық тұрақтыларда тікелей пернетақтадан енгізуге болмайтын символдарды көрсету үшін пайдаланады. Мысалы: бос орын (пробел), табуляция символдары, жолды көшіру, каретканы қайтару символдары, жаңа бет және жаңа жол. ESC-тізбектер (\) кері бөлшек сызықтан (міндетті бірінші символ) кейін (` ") - тыныс белгілері немесе цифрлар комбинациясынан тұрады (4-кесте). Басқарушы тізбектер кең пайдаланылады, яғни ақпаратты енгізу және шығару функцияларында пайдалынылатын арнайы символдық комбинациялар. 4-Кесте Тізбек Аталуы Функциясы \a Қоңырау Дыбыс береді \b Backspase Бір қадамға қайтару \t Табуляция Табуляцияның келесі позициясына өту \n Жаңа жол Жаңа жолдың басына көшу \v Тік табуляция Курсорды бірнеше жолға төмен түсіреді. \r Каретканы қайтару Ағымдағы жолдың басына қайтару. \f Жаңа бет Жаңа экранның басы \'' Тырнақшалар Тырнақшаны шығарады. \' Апостроф Апострофты шығарады. \\ Кері бөлшек сызық Кері бөлшек сызықты шығару. \ddd Сегіздік көріністегі ДЭЕМ-нің кодтарының жиынтығының символы \xddd Оналтылық көріністегі ДЭЕМ-нің кодтарының жиынтығының символы \ddd және \xddd (мұндағы d цифрды көрсетеді ) түріндегі тізбектер ДЭЕМ-дегі кодтар жиынынан алынған символды сәйкесінше сегіздік немес оналтылық цифрлар тізбегі ретінде көруге мүмкіндік береді. Мысалы, каретканы қайтару символы әр түрлі әдістермен көрсетілуі мүмкін: \r - жалпы басқарушы тізбек, \015 - сегіздік басқарушы тізбек, \x00D - оналтылық басқарушы тізбек. Жолдық тұрақты шамаларда әрқашан барлық үш цифрды басқарушы тізбек түрінде жазу міндетті екенін ескеру керек. Мысалы, \n (жаңа жолға көшу) жеке басқарушы тізбекті \010 немесе \xA түрінде көрсетуге болады, бірақ жолдық тұрақтыларда барлық үш цифрды жазу қажет, кері жағдайда басқарушы тізбектен кейінгі символ немесе символдар оның жетіспейтін бөлігі ретінде қарастырылады. Мысалы, "ABCDE\x009FGH" берілген жолдық команда Си тілінің белгілі функцияларын пайдалану арқылы сегіз бос орынмен бөлінген ABCDE FGH екі сөз түрінде басып шығарылады, бұл жағдайда егер "ABCDE\x09FGH" толық емес басқарушы тізбекті көрсетсе, онда баспаға ABCDE=|=GH деп шығады, себебі компилятор \x09F тізбегін "=+=" символ түрінде қабылдайды. Егер кері бөлшек сызық басқарушы тізбекте жоқ (яғни 4-кестеге енгізілмеген) және цифр болмайтын символдың алдында болса, онда бұл сызық ескерілмейді, ал сызықтың өзі әріп (литерал) түрінде көрсетіледі. Мысалы, \h символы жолдық немесе символдық тұрақтыда h символымен көрсетіледі. (\) Кері бөлшек сызық символы басқарушы тізбекті анықтаудан басқа жалғастыру символы ретінде де пайдаланылады. Егер (\)-тан кейін (\n) болса, онда екі символ да ескерілмейді, ал келесі жол бұрынғының жалғасы болады. Бұл қасиет ұзын жолдарды жазуға пайдаланылады. Тұрақты шамалар Тұрақты шама деп программадағы шамалардың саналуы аталады. Си тілінде тұрақты шамалардың төрт түрін қарастырады: бүтін тұрақты шамалар, қалқыма нүктесі бар тұрақтылар, символдық тұрақты шамалар және жолдық литералдар. Бүтін тұрақты шама: бұл бүтін шаманы ондық, сегіздік немесе оналтылық түрдің біреуімен көрсететін ондық, сегіздік немесе оналтылық сан. Ондық тұрақты шама бірінші цифры нөл болмайтын (керіжағдайда сан сегіздік сан ретінде қабылданады) бір немесе бірнеше ондық цифрдан тұрады. Сегіздік тұрақты шама міндетті нөлден және бір немесе бірнеше сегіздік цифрдан (цифрлардың ішінде 8 және 9 болмауы керек, себебі бұл цифрлар сегіздік санау жүйесіне кірмейді). Оналтылық тұрақты шама 0x және 0X міндетті тізбегінен басталады және ол бір немесе бірнеше оналтылық цифрлардан (оналтылық санау жүйесінің цифрлар жиынын көрсететін цифрлар: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F). Бүтін тұрақты шамаларға мысал: Ондық тұрақты шама Сегіздік тұрақты шама Оналтылық тұрақты шама 16 020 0х10 127 0117 0х2В 240 0360 0хF0 Егер теріс бүтін тұрақты шаманы жазу керек болса, онда тұрақты шаманың алдына (унарлы минус деп аталатын) "-" белгісін пайдаланады. Мысал: -0x2A, -088, -16. Әрбір бүтін тұрақты шамаға түрлендірулерді анықтайтын тип меншіктеледі. Түрлендірулер орындалуы керек, егер тұрақты шама өрнектерде пайдаланылса. Тұрақты шаманың типі келесідей анықталады: * ондық тұрақты шамалар белгісі бар шамалар ретінде қарастырылады және оларға тұрақты шаманың мәніне сәйкес int (бүтін) немесе long (ұзын бүтін) типі меншіктеледі. Егер тұрақты шама 32768-ден кіші болса, онда оған int типі кері жағдайда long типі меншіктеледі. * сегіздік және оналтылық тұрақты шамаларға 5-кестеге сәйкес тұрақты шаманың мәніне байланысты int, unsigned int (белгісі жоқ бүтін), long немесе unsigned long типі меншіктеледі. 5-Кесте Оналтылық тұрақтылардың диапазоны Сегіздік тұрақтылардың диапазоны Типі 0x0 - 0x7FFF 0 - 077777 int 0X8000 - 0XFFFF 0100000 - 0177777 unsigned int 0X10000 - 0X7FFFFFFF 0200000 - 017777777777 long 0X80000000 - 0XFFFFFFFF 020000000000 - 037777777777 unsigned long Кез келген бүтін тұрақты шаманы long типімен анықтау үшін тұрақты шаманың соңына "l" немесе "L" әрпін қою жеткілікті. Мысал: 5l, 6l, 128l, 0105l, 0X2A11L. Қалқыма нүктесі бар тұрақты - ондық нүктесі немесе экспонентасы бар нақты шама түрінде көрсетілген ондық сан.Форматы мына түрде болады: [цифрлар].[цифрлар] [E |e[+|-]цифрлар ]. Қалқыма нүктесі бар сан бүтін және бөлшек бөліктерден және экспонентадан тұрады. Қалқыма нүктесі бар тұрақтылар екі еселенген дәлдіктің оң шамасын көрсетеді (double типін қабылдайды). Теріс шаманы анықтау үшін минус белгісінен және оң тұрақты шамадан тұратын тұрақтылық өрнегін құру қажет. Мысалдар: 115.75, 1.5Е-2, -0.025, .075, -0.85Е2 . Символдық тұрақты шама - апострафқа алынған символдармен көрсетіледі. Басқарушы тізбек жеке символ ретінде қарастырылады. Ол символдық тұрақты шамаларда пайдаланылады. Символдық тұрақты шаманың мәні болып символдың сандық коды саналады. Мысалдар: ` ' - бос орын, `Q' - Q әрпі, `\n' - жаңа жол символы, `\\' - кері бөлшек сызық, `\v' - тік табуляция (вертикальная табуляция). Символдық тұрақты шамалар int типін қабылдайды және типтердің түрлендірілуі кезінде белгімен толықтырылады. Жолдық тұрақты шама (литерал) - тырнақшаға (`') алынған символдардың тізбегі (орыс және латын әріптерінің бас және кіші әріптерін, сонымен қатар цифрларын қосқанда). Мысал: "№17 мектеп", "Семей қаласы", "YZPT KOD". Барлық басқарушы символдар, (`') тырнақша, (\) кері бөлшек сызық және жолдық литералдағы және символдық тұрақты шамадағы жаңа жол символы сәйкес басқарушы тізбектермен көрсетіледі. Әрбір басқарушы тізбек бір символ ретінде көрсетіледі. Мысалға, "№35\n мектеп" деген литералды баспаға шығару кезінде оның "№35" деген бөлігі бір жолға, ал екінші бөлігі " мектеп " келесі жолға шығады. Жолдық литерал символдары оперативті жады облысында сақталады. Әрбір жолдық литералдың соңына компилятор \0 басқарушы тізбекпен көрсетілетін 0-дік символ қосады. Жолдық литерал char[] типті болады. Бұл жолдың символдар массиві түрінде қарастырылатынын білдіреді. Маңызды ерекшелікті байқайық. Массив элементтерінің саны плюс 1 жолындағы символдар санына тең, өйткені нөлдік символ (жол соңының символы) сонымен қатар массив элементі болып табылады. Барлық жолдық литералдар компилятор арқылы әр түрлі объектілер ретінде қарастырылады. Жолдық литералдар бірнеше жолдарда орналасуы мүмкін. Мұндай литералдар кері бөлшек сызықты және енгізу пернесін пайдалану негізінде жасалады. Кері сызығы бар жаңа жол символы ескерілмейді. Бұл мынаған әкеледі: келесі жол өткен жолдың жалғасы болады. Мысал: "белгісіз жол \n ұзындығы" мына литералға толығымен ұқсас "белгісіз жол ұзындығы". Жолдық литералдардың тұтасуы үшін бос орын символын (символдарын) пайдалануға болады. Егер программада тек бос орындармен екі немесе одан да көп жолдық литералдар кездессе, онда олар бір символдық жол ретінде қарастырылады. Бұл принципті бір жолдан көп орын алатын жолдық литералдарды жасауға пайдалануға болады. Идентификатор Идентификатор деп цифрлар және әріптер тізбегі, сонымен қатар бірінші әріп немесе арнайы символ тұратын жағдайдағы арнайы символдар тізбегі аталады. Идентификаторларды жасау үшін латын алфавитінің бас және кіші әріптері пайдаланыла алады. Арнайы символ ретінде астын сызу (подчеркивание) ( _ ) символы пайдаланылады. Жасалуына сәйкес бас және кіші әріптер пайдалынылатын екі идентификатор әр түрлі деп есептеледі. Мысал: abc, ABC, A128B, a128b. Маңызды ерекшелік компилятор идентификаторға символдардың кез келген санын беруге рұқсат береді. Дегенмен, маңызды болып бірінші 31 символ саналады. Идентификатор айнымалыларды, функцияларды, құрылымдарды жариялау кезеңінде құрылады, содан кейін оны жасалатын (разрабатываемый) программаның келесі операторларына пайдалануға болады. Идентификаторды таңдау кезінде мынандай маңызды ерекшеліктер бар: Біріншіден, идентификатор кілттік сөздермен, белгіленген сөздермен (зарезервированные слова) және Си тілінің компилятор библиотекасының функция аттарымен сәйкес келмеуі керек. Екіншіден, ( _ ) астын сызу символының идентификатордың бірінші символы ретінде пайдаланылуына ерекше көңіл аудару керек. Осылай құрылған идентификатор бір жағынан жүйелік функциялардың және немесе айнымалылардың аттарымен сәйкес келуі мүмкін, екінші жағынан мұндай идентификаторларды пайдалану кезінде программалар басқа орынға апарыла алмауы мүмкін, яғни оларды басқа типті компьютерлерде пайдалануға болмайды. ‡шіншіден, ішкі айнымалыларды анықтау үшін пайдаланылатын идентификаторларға пайдаланылатын байланыс редакторы жасайтын шектеулер салынуы тиіс (байланыс редакторының немесе әр түрлі редакторлардың әр түрлі версияларын пайдалану ішкі айнымалылардың аттарына талаптар қоятынын ескерейік). Кілттік сөздер Кілттік сөз - бұл белгілі бір мағынасы бар белгіленген (зарезервированный) идентификаторлар. Оларды Си тілінің компиляторына белгілі тек мағынасына сәйкес пайдалануға болады. Кілттік сөздердің тізімін келтірейік auto double int struct break else long switch register typedef char extern return void case float unsigned default for signed union do if sizeof volatile continue enum short while Сонымен қатар Си тілінің жүзеге асуының қарастырылатын версияларында белгіленген сөздер болып мыналар саналады: _ asm, fortran, near, far, cdecl, huge, pascal, interrupt . far, huge, near кілттік сөздері жады облысында көрсеткіш өлшемдерін анықтауға мүмкіндік береді. _ asm, cdelc, fortran, pascal кілттік сөздері басқа тілдерде жазылған функциялармен байланыс ұйымдастыру үшін қызмет етеді. Сонымен қатар Си тіліндегі құрылатын программа денесіндегі ассемблер тілінің командаларын пайдалану үшін де қолданылады. Кілттік сөздер идентификаторлар ретінде пайдаланыла алмайды. Программа мәтінінде түсініктемелерді (комментарийлерді) пайдалану. Түсініктеме - бұл символдар жиыны. Бұл символдар жиынына келесі шектеулер қойылады. Түсініктемені көрсететін символдар жиынының ішінде түсініктемелердің сәйкес (/* және */) басы мен соңын анықтайтын арнайы символдар болуы мүмкін емес. Түсініктемелер бір жол ретінде де бірнеше жол ретінде де болатынын ескерейік. Мысал: /* программаға түсініктеме */ /* алгоритм басы */ немесе /* түсініктемелерді келесі түрде жазуға болады, бірақ компилятор арқылы ескерілмейтін тізбектің ішінде программа операторлары (ол да ескерілмейді) болмауын абайлау керек */ Түсініктемелердің қате белгіленуі /* алгоритмге Түсініктеме /* шеттік есепті шешу */ */ немесе /* шешу алгоритміне Түсініктеме */ шеттік есепке */ Бақылау сұрақтары: * С++ тілінде кілттік сөздер мен идентификаторларда пайдаланылатын символдады ата. * ESC-тізбектер деген не? * Тұрақты шамалар қалай сипатталады? * Идентификатор қалай жазылады? * Кілттік сөздерді ата. * Программа мәтінінде түсініктемелерді (комментарийлерді) қалай пайдаланады? Дәріс №2 Тақырыбы: C++ тіліндегі программаның құрылымы. Енгізу-шығару функциялары. Мақсаты: Сипаттаушы, тип идентификаторы, бастаушы, жады класының спецификаторы ұғымдарын енгізу. Ең жиі қолданылатын директивалар #include және #define, негізгі функцияның тақырыбы, айнымалылыарды жариялау, амалдар мен операторлар бөлімін қарастыру. Шығару, енгізу функцияларының форматтары, олардың құрамына енетін түрлендіру амалдары, басқарушы символдар туралы ұғым енгізу. Си тілінің басқа тілдерден (PL1, FORTRAN, және т.б.) маңызды айырмашылығы программада пайдалнылатын барлық айнымалыларды (оларға сәйкес типтерін көрсету арқылы) жариялауға әкелетін жасыру принципінің (принцип умолчания) болмауында. Айнымалыны жариялау мына түрде болады: [жады класының спецификаторы] сипаттаушы (описатель) типіндегі спецификатор [=бастаушы (инициатор)] [.сипаттаушы [=бастаушы] ] ... Сипаттаушы - қарапайым айнымалының идентификаторы не тік жақшамен, дөңгелек жақшамен немесе жұлдызшамен (жұлдызшалар жиыны) берілген. Тип идентификаторы - жарияланатын айнымалының типін анықтайтын бір немесе бірнеше кілттік сөздер. Си тілінде стандартты мәліметтер типінің жиынтығы бар. Оны пайдаланып мәліметтердің жаңа бірегей (уникальный) типін құруға болады. Бастаушы - жариялау кезінде айнымалыға меншіктелетін бастапқы мәнді немесе бастапқы мәндердің тізімін береді. Жады класының спецификаторы - Си тілінің төрт кілттік сөздерінің бірімен анықталады (auto, extern, register, static) және бір жағынан жарияланатын айнымалыға жады қалай үлестірілетінін көрсетеді, екінші жағынан осы айнымалының көруге болатын облысы, яғни оған программаның қандай бөліктерімен көрінуге болады. Мәліметтер типінің категориялары. Мәліметтердің негізгі типін анықтайтын кілттік сөздер Бүтін типтер: Қалқыма (плавающие) типтер: char float int double short long double long signed unsigned Кез келген типті айнымалы модификацияланбаған түрде жариялана алады. Бұл const кілттік сөзінің тип спецификаторына қосылуымен жүзеге асады. const типті объектілер тек оқу үшін пайдалылатын мәліметтерді көрсетеді, яғни бұл айнымалыға жаңа мән меншіктеле алмайды. Егер const сөзінен кейін тип спецификаторы жоқ болса, онда int типті спецификатор деп түсінілетінін ескерейік. Егер const кілттік сөзі құрама типтерінің (массив, құрылым (структура), қоспа, санап шығу (перечисление)) жариялануның алдында тұрса, онда бұл әр сол сияқты элемент модификацияланбаған болуына әкеледі, яғни оған мән бір-ақ рет меншіктелуі мүмкін. Мысалдар: const double А=2.128Е-2ж const B=286; (const int В=286 деп түсініледі) Құрама мәліметтердің жариялануы төменде көрсетілетін болады. Мәліметтердің бүтін типі. Бүтін типті мәліметтерді анықтау үшін мәліметтер диапазонын және айнымалыға бөлінетін жады облысының өлшемін анықтайтын әр түрлі кілттік сөздер пайдаланылады. 7-Кесте Типі Жады өлшемі (байтпен) Char 1 -128-ден 127-ге дейін Int IBM XT, AT, SX, DX 2 Short 2 -32768-ден 32767-ге дейін Long 4 -2 147 483 648-ден 2 147 483 647-ге дейін Unsigned shar 1 0-ден 255-ке дейін Unsigned int IBM XT, AT, SX, DX 2 Unsigned short 2 0-ден 65535-ке дейін Unsigned long 4 0-ден 4 294 967 295-ке дейін signed және unsigned кілттік сөздері міндетті емес екенін ескере кетейік. Олар жарияланатын айнымалының нөлдік битінің қалай түсіндірілетінін көрсетеді, яғни егер unsigned кілттік сөзі көрсетілсе, онда нөлдік бит санның бөлігі ретінде түсініледі, кері жағдайда нөлдік бит таңба (знак) ретінде түсініледі. unsigned кілттік сөзі жоқ болған жағдайда бүтін айнымалы таңбалы деп саналады. Сол жағдайда, егер тип спецификаторы signed немесе unsigned кілттік типтерінен тұрса және әрі қарай айнымалының идентификаторы тұрса, онда ол int типті айнымалы ретінде қарастырылады. Мысалы: unsigned int n; unsigned int b; int c; (signed int с деп түсініледі); unsigned d; (unsigned int d деп түсініледі) ; signed f; (signed int f деп түсініледі). char типті модификатор символды (символдардың массивтен көрінуі) көрсету үшін немесе жолдық әріптерді (литералдарды) жариялау үшін пайдаланылатынын ескерейік. char типті объектінің мәні болып көрсетілетін символға сәйкес код (1 байт өлшемімен) саналады. Орыс алфавитінің символдарын көрсету үшін мәліметтер идентификаторының типінің модификаторы unsigned char түрінде болатындықтан, орыс әріптерінің кодтары 127 өлшемінен асып кетеді. Ескерту: Си тілінде жадыдағы көрініс және int unsigned int типті модификаторлы идентификаторлар үшін мән диапазоны анықталмаған. signed int типті модификаторлы айнымалы үшін жады өлшемі әр машинада әр түрлі өлшемде болатын машина сөзінің ұзындығымен анықталады. Осылай 16-разрядты машиналарда сөз өлшемі 2 байтқа тең, 32-разрядты машиналарда сәйкесінше 4 байтқа, яғни int типі пайдаланылатын ДЭЕМ-нің архитектурасына байланысты short int немесе long int типтеріне эквивалентті. Осылайша сол бір программа бір компьютерде дұрыс, ал басқа компьютерде қате жұмыс істеуі мүмкін. Орын алатын айнымалының жады ұзындығын анықтау үшін көрсетілген тип модификаторының ұзындығының мәнін қайтаратын Си тілінің sizeof операциясын пайдалануға болады. Мысалға: a=sizeof(int); b=sizeof(long int); c=sizeof(unsigned long); d=sizeof(short). Сонымен қатар сегіздік және оналтылық тұрақтылар да unsigned модификаторына ие бола алады. Бұл u немесе U префиксін (бұл префикссіз тұрақты таңбалы деп саналады) тұрақтыдан кейін көрсету арқылы орындалады. Мысалға: 0xA8C (int signed); 01786l (long signed); 0xF7u (int unsigned). Қалқыма типті мәліметтер (данные плавающего типа). Қалқыма нүктесі бар санды көрсететін айнымалылар үшін келесі тип модификаторлары пайдаланылады: float, double, long double (Си тілінің кейбір жүзеге асыруларында long double жоқ). float типті модификатордың өлшемі 4 байт орын алады. Оның 1 байты таңба үшін, 8 биті артық экспонентаға және 23 биті мантисса үшін кетеді. Мантиссаның үлкен биті әрқашан бірге тең екенін ескерейік, сондықтан ол толтырылмайды, осыған байланысты қалақыма нүктесі бар айнымалының мәнінің диапазоны шамамен 3.14Е-38-ден 3.14Е+38-ге дейін. Double типінің өлшемі жадыдан 8 бит орын алады. Оның форматы float форматына ұқсас. Жадының биттері келесі түрде үлестіріледі: 1 бит таңба үшін, 11 бит экспонента үшін және 52 бит мантисса үшін. Мантиссаның үлкен битінің түсірілуінің есебінен мән диапазоны 1.7Е-308-ден 1.7Е+308-ге дейін болады. Мысалдар: float f, a, b; double x, y. Си тілінде жазылған программа препроцессорлар директивасынан, бас айнымалыларды жариялаудан, бір немесе бірнеше функциядан(ішінде біреуі негізгі - main), функция программаның жұмысын басқарады. Программаның жалпы құрылымы мынадай: < препроцессорлар директивасы > < typedef қолданушының типін анықтау> < функция прототиптері > <бас объектілерді анықтау> <функциялар> Функциялар өз алдына мынадай құрылыммен жазыладыу: <жады класы> <тип> < функция аты> (<параметрлерді жариялау>) { - функция басы <локальндық объектілерді жариялау> <амалдар мен операторлар> } - функция соңы Негізгі бөлімдерінің жалпы құрылымдарын қарастырайық. Си тіліндегі программаны компиляциялау кезінде алдымен (препроцессорная) автоматты түрде программаның текст өңделеді. Препроцессорлар директивасының көмегімен программаның тексін өңдеу жолдары беріледі. Директивалар мынадай тәртіппен жазылады: * барлық препроцессорлы директивалар # символынан бастап жазылады. * Барлық директивалар бірінші позициядан басталады. * # символынан кейін бірден препроцессордың жұмысын тағайындайтын директива аты жазылады. Ең жиі қолданылатын директивалар #include және #define. #include директивасы стандартты функцияларды жариялауға мүмкіндік беретін тақырып файлдарын қосуға қолданылады. Файлдың аты үшбұрышты жақшаға < > алынған жағдайда сол файл стандартты директориядан (каталог) ізделінеді. Файлдың аты тырнақшаға "аты" алынғанда файл ағымдағы директориядан ізделінеді. Мысалы: #include- файлдық енгізу-шығарудың стандартты функцияларын жариялайтын файлды қосады. #include - консольмен жұмыс істеу функцияларын қосады; #include - графиктік функцияларды қосады. #include - математикалық жункцияларды қосады. #define (определить) директивасы макроконстанта құрады және оның әсері бүкіл файлға беріледі. Мысалы: #define PI 3.1415927 Препроцессорлық өңдеу кезінде PI идентификаторы 3,1415927 шамасымен ауыстырылады. . Программа мысалы: #include #include < conio.h> /* препроцессор директивасы */ #define PI 3.1415927 void main() // Негізгі функцияның тақырыбы { // функция басы int num; // num айнымалысын жариялау num=13 ; // меншіктеу амалы clrscr(); // экранды тазарту printf(" \n Тұрақты pi=%7.5f\n %d - бақытты \n", PI, num); } // функция соңы Нәтижесі: Тұрақты pi =3.1415927 13 - бақытты сан Программаның тексінен көріп отырғанымыздай амалдар мен операторлар жиыны үтірлі нүктемен аяқталып отырады. Түсініктемелер /* */ символдарының арасына немес // символынан басталып жолдың соңына дейін жазылады. Шығару функциясы Информацияны шығару үшін Си тілінде мына функциялар қолданылады. putchar() функциясы бір орынды сиволды басады. puts() функциясы символдар жолын шщығарып, курсорды жаңа жолға көшіреді. printf() функциясы форматталған мәндерді шығарады. Оның форматы: рrintf (<басқарушы жол>, <агументтер тізімі>); Басқарушы жол тырнақшаға алынып, компиляторға шығарылатын информацияның типін білдіреді. Оның құрамына түрлендіру амалдары, басқарушы символдар кіруі мүмкін. Тү.рлендіру форматы: % <флаг> <өріс өлшемі. Дәлдігі> спецификация мұндағы флаг мына мәндерді қабылдауы мүмкін: - шығатын санның сол жағына түзулеу; + оң сан таңбасы; өріс ұзындығы - санның ұзындығы, санға орын жетпегенде автоматты түрде ұзарады. Дәлдік - санның бөлшек бөлігінің ұзындығы; Спецификация- шығатын информация түрі. Баспаға шығару функциясының негізгі форматтарын келтірейік: 6-Кесте Формат Информации типі %d Ондық бүтін сан (десятичное целое число) %c Бір символ %s Символдар жолы %e Жылжымалы үтірлі сан (экспоненциалдық жазылуы) %f Жылжымалы үтірлі сан (ондық жазылуы) %u Таңбасыз ондық сан %o Таңбасыз сегіздік сан. %x Таңбасыз оналтылық сан Ұзын сандар(long, double) үшін қосымша l форматы қолданылады . Мысалы: %ld - ұзын бүтін, %lf - екі еселі дәлдікпен нақты сан. % символының өзін шығару қажет болғанда оны екі рет жазу қажет. Мысалы: printf("Жалақының %d%% салыққа кетеді.\n",30); Нәтижесі: Жалақының 30% салыққа кетеді. Басқарушы жолға мына басқарушы символдар қатыса алады: \n - жаңа жолға көшу; \t - көлденең және \v - тік табуляция; \b - бір символ кейін; \r - жолдың басына қайту; \f - қағазды жаңа парақтың басына қайтару; \a - дыбыстық сигнал; \ddd - 8-дік ASCII-код; \xhhh - 16-тылық код; \? - сұрақ белгісі. Аргументтер тізімі - баспаға шығарылатын объектілер қатарын тұрақтылар, айнымалылар, өрнектер жатады. Мәндері алдын ала есептеледі. Аргументтер саны мен типтері басқарушы жолдағы форматқа сәйкес болуы тиіс. Мысалы: #include #define PI 3.1415926 main() { int number=5, cost=1000, s=-777; float bat=2500, x=12.345; printf ("%d студент %f стипендия алады.\n", number, bat); printf ("pi саны тең%f.\n", PI); printf ("Си тілін оқы.\n"); printf ("Заттың бағасы %d%s.\n", cost,"Тенге."); printf ("x=%-8.4f s=%5d%8.2f ", x, s, x); } Енгізу функциялары getch () функциясы бір орынды символды енгізуге қолданылады. gets () функиясы символдар жолын ENTER басылғанша енгізеді. scanf функциясы кез-келген типті информацияны форматтап енгізуге қолданылады. Жалпы түрі: scanf (<басқарушы жол>, <адрестер тізімі>); scanf үшін де printf () функциясы сияқты басқарушы жол жазылады. Обірақ scanf()функциясы адрестер тізімінде айнымалылардың көрсеткішін қамтиды. Көрсеткішті белгілеу үшін & белгісі айнымалының алдына жазылады. Символдар жолын енгізу үшін & белгісі қолданылмайды. %s форматын қолданғанда жол бірінші пробелға дейін қабылданады. Мәндерді бір жолда пробел арқылы немесе әр жолда енгізуге болады. Енгізу ерекшелігін мына программа үзіндісімен көрсетейік. int course; float grant; char name[20]; printf ( "Оқитын курсынды, стипендияңды, атыңды көрсет, \n"); scanf ( "%d%f", &course, &grant); scanf ( "%s", name); /* & символдар жолы үшін жазылған жоқ */ Стандартты функциялар Математическая функция Имя функции в языке С 1 2 Sqrt(x) |x| Fabs(x) e[x] Exp(x) x[y] Pow(x,y) Ln(x) Log(x) Lg10(x) Log10(x) Sin(x) Sin(x) Cos(x) Cos(x) Tg(x) Tan(x) Arcsin(x) Asin(x) Arccos(x) Acos(x) Arctg(x) Atan(x) Arctg(x/y) Atan2(x,y) Sh(x)=1/2 (e[x]-e[-x]) Sinh(x) Ch(x)=1/2 (e[x]+e[-x]) Cosh(x) Tgh(x) Tanh(x) X - ті y-ке бөлгендегі қалдық Fmod(x,y) Х-тан үлкен ең кішібүтін >=x Ceil(x) Х-тан кіші ең үлкен бүтін <=x Floor(x) Бақылау сұрақтары: * #include директивасы туралы айтып бер. * #define директивасы туралы айтып бер * Негізгі функцияның тақырыбы қалай? * Айнымалылыларды жариялау, амалдар мен операторлар бөлімін қарастыру. Шығару, енгізу функцияларының форматтары, олардың құрамына енетін түрлендіру амалдары, басқарушы символдар туралы ұғым енгізу. Дәріс №3 Тақырыбы: С++ тіліндегі операторлар. Мақсаты: Оператор, бос оператор, құрама оператор ұғымдарын енгізу. Си тілінің барлық элементтері келесі категорияларға шартты түрде бөліне алады: * шартты операторлар, оған if шартты операторы және switch таңдау операторлары жатады; * циклдік операторлар (for, while, do while); * көшу операторлары (break, continue, return, goto); * басқа операторлар (оператор "өрнек", бос оператор). Программадағы операторлар құрама операторларға фигуралық жақшалар көмегімен біріктіріле алады. Программадағы кез келген оператор аттан және одан кейін келетін қос нүктеден тұратын таңбамен (метка) белгілене алады. Си тілінің барлық операторлары құрама операторлардан басқасы ";" үтір нүктемен аяқталады. Өрнек оператор (оператор выражение). ‡тір нүктемен аяқталатын кез келген өрнек оператор болып табылады. Өрнек оператордың орындалуында, өрнектің есептелуінде өрнектің алынған мәні ешбір пайдаланылмайды, сондықтан қағида бойынша мұндай өрнектер жанама эффектілерді тудырады. Мәндерді қайтармайтын функцияны тек өрнек оператордың көмегімен шақыруға болатынын байқайық. өрнектерді есептеу ережелері жоғарыда тұжырымдалған. Мысалдар: ++i; Бұл оператор i айнымалысының мәнін бірге өсіретін өрнекті көрсетеді. a=cos(b*5); Бұл оператор өзіне меншіктеу және функцияны шақыру операцияларын қосатын өрнекті көрсетеді. a(x,y); Бұл оператор функцияны шақырудан тұратын өрнекті көрсетеді. Бос оператор Бос оператор тек үтір нүктеден тұрады. Бұл операторды орындау кезінде ештеңе болмайды. Ол әдетте келесі жағдайларда пайдаланылады: * оператор орны керек етілмегенде жолдарда do, for, while, if операторларында, бірақ синтаксис бойынша ең болмағанда бір оператор талап етіледі; * қажеттілік туғанда фигуралық жақша белгілеу. Си тілінің синтаксисі таңбадан кейін міндетті түрде оператор болғанын талап етеді. Фигуралық жақша оператор болмайды. Сондықтан да, егер басқаруды фигуралық жақшаға беру керек болса, бос операторды пайдалану қажетті. Мысал: int main() { : {if (...) goto a; /* жақшаға көшу */ {... a: ;} return 0; } Құрама оператор Құрама оператор фигуралық жақшаларға алынған бірнеше операторлар мен жариялаулар болып көрінеді: {[жариялау] : оператор; [оператор]; : } Құрама оператордың соңына үтір нүкте қойылмайтынын ескерейік. Құрама оператордың орындалуы оны құрайтын операторлардың жүйелі орындалуынан тұрады. Мысал: int main() { int q,b; double t,d; : if (...) { int e,g; double f,q; : } : return(0); } e, g, f, q айнымалылары құрама оператор орындалғаннан кейін жойылады. q айнымалысы құрама операторда локальды болып саналатынын айта кетейік, яғни оның int типті main функциясының басында жарияланған q айнымалысымен ешқандай байланысы жоқ. return - нан кейін тұрған өрнек дөңгелек жақшаларға алына алады, соңғы жақшаның болуы міндетті емес екенін де айта кетейік. Бақылау сұрақтары: * С++ тілінде өрнек қалай жазылады? * Бос оператор не үшін қажет? * Құрама оператор деген не? * Құрама оператордың жазылу тәртібі қандай? Дәріс №4 Тақырыбы: If операторы, switch таңдау операторы. Мақсаты: шартты оператор мен таңдау операторларының форматтарымен, орындалу схемасымен таныстыру. Оператордың форматтары: if (өрнек) оператор-1;[else оператор-2;] if операторының орындалуы өрнектің есептелуінен басталады. Әрі қарай орындалу келесі схема бойынша жүреді: * егер өрнек ақиқат (яғни нөлден айрықша) болса, онда оператор-1 орындалады; * егер өрнек жалған (яғни нөлге тең) болса, онда оператор-2 орындалады; * егер өрнек жалған және оператор-2 жоқ болса (квадраттық жақшаға міндетті емес конструкция алынған), онда if-тен кейінгі орындалады. if операторы функциясынан кейін мән программаның келесі операторына беріледі, егер программаның операторлардың орындалу тізбегі көщу операторларының пайдалануымен мәжбүрсіз бұзылса. Мысал: if(i b) { if (b b) if (b 10) return; else { c=a+b; if ((2*c-b)==11) return; } } Бұл мысалда return операторы тексерілетін шарттың біреуі орындалған жағдайда шығу үшін пайдаланылады. goto операторы goto шартсыз көшу операторын Ситілінде программалау практикасында пайдалану аса міндетті емес, себебі ол программаның түсінілуін және олардың модификациялану мүмкіндігін қиындатады. Бұл оператордың форматы келесідей: goto белгі-аты; белгі аты: оператор; goto операторы басқаруды белгі аты белгісімен белгіленген операторға береді. Белгіленген оператор goto операторы орналасқан функцияда болуы керек, ал пайдаланылатын белгі ерекше болу керек, яғни бір белгі-аты программаның әр түрлі операторларына пайдаланыла алмайды. Белгі-аты - бұл идентификатор. Құрама оператордағы кез келген оператордың өзінің белгісі бола алады. goto операторын пайдалана отырып басқаруды құрама оператордыңішіне беруге болады. Бірақ инициализацияланған айнымалылардың жариялануы бар құрама операторға кіру кезінде абай болу керек, себебі жариялаулар орындалатын операторлардың алдында орналасады және мұндай көшуде жарияланған айнымалылардың мәндері анықталмайды. Бақылау сұрақтары: * С++ тілінде цикл қалай ұйымдастырылады? * for операторының форматы қандай? * while операторының форматы қандай? * do while операторының форматтары қандай? * continue операторы не үшін қажет? * return операторы не үшін қажет? * goto операторы қандай жағдайда қолданылады? Дәріс №6 Тақырыбы: Массивтер, функциялар және көрсеткіштерді жариялау. Мақсаты: Бірөлшемді массивтерді жариялау форматтары, массивтер және көрсеткіштер, массивтер және жолдар ұғымдарын енгізу. Көпөлшемді массивтерді жариялау форматтары, массивтер мен функциялар ұғымдарын енгізу. Көрсеткіштер, саналынатын типті айнымалылар, массивтер ұғымдарын енгізу. Берілгендердің бір өлшемді массиві типі аты [өлшемі]; түріндегі оператормен жазылады. Программаның мысалы: # include # define KO 3 main() { int mas[KO], i; mas[0]=123; mas[1]=456; mas[2]=2001; printf("Айнымалылар адресі:"); for (i=0;i main() { int a[3] [4]= { {5, 2, -4, 3}, {4, 9, 0, 6}, {7, -1, 8, 3} }; int b[4] [2]= { {1, -2}, {-3, 4}, {5, -6}, {-7, 8} }; int c[3] [2], i, j, k; for (i=0; i<4;i++) for (j=0; j<2; j++) { c[i][j]=0; for (k=0; k<4;k++) c[i][j]+=a[i][k]*b[k][j]; }; for (i=0; i<3; i++) for (j=0; j<2; j++) printf("c[%d][%d]=%d\n", c[i][j]); } Индекстелген айнымалылардың келесі индексі алдыңғыға қарағанда "жылдамырақ" алмасады, яғни ЭЕМ-нің жадысында c[3][2] массив элементтері келесі тәртіпте орналасады: c [0][0] c [0][1] c [1][0] c[1][1] c[2][0] c [2][1] Массив және функциялар Массивтің ақиқат (фактически) параметрлері ретінде ішкі программаға (функцияға) беру үшін оның басының адресін көрсету жеткілікті. Мысал (бүтін санды бірөлшемді массивтің минималды элементінің нөмірін анықтау функциясы): int min_index (int sp[], int ras) { int i, mindx, m; mindx=0; m=sp[mindx]; for (i=1; i main() { # define dlina 150 int k, list[dlina]; for (k=0; k p> үш компоненттен тұрады. Атауды құрылым типімен ассоциациялаудың басқа тәсілі де бар, ол құрылым тегін пайдалануға негізделген. Құрылым тегі саналымды тип тегіне ұқсас. Құрылым тегі келесі үлгіде анықталады: struct тег {түсіндірме тізімі (список описаний);}; мұндағы тег идентификатор болып табылады. Төменде көрсетілген мысалда student идентификаторы құрылым тегі ретінде жазылады: struct student {char name[25]; int id, age; char prp; }; Құрылым тегі берілген түрдің құрылымының кезекті жариялануы үшін мына формада пайдаланылады: struct тег идентификаторлар тізімі; Мысал: student st1, st2; Құрылымның тегтерін пайдалану рекурсивті құрылымдарды жазу үшін қажет. Төменде құрылымның рекурсивті тегтерін пайдалну қарастырылады. struct node {int data; struct node *next; } st1_node; Құрылым тегі node шынында рекурсивті, себебі ол өзінің жеке жазылуында пайдаланылады, яғни next көрсеткішінің құрылуында. Құрылымдар рекурсивті бола алмайды, яғни node құрылымында node құрылымы болатын компонент болмауы керек, бірақ кез келген құрылымда келтірілген мысалда жасалғандай өз типіне көрсеткіш болатын компонент бола алады. Құрылым компоненттеріне құрылым атын көрсету арқылы және келесі нүкте арқылы компоненттің атын белгіленген көрсету арқылы жол ашылады. Мысалға: st1.name="Мұхаметжанова "; st2.id=st1.id; st1_node.data=st1.age Біріктіру (қоспаларды) Біріктіру құрылымға ұқсас, бірақ әрбір уақыт мезгілінде тек біріктіру элементтерінің біреуі пайдаланыла алады (немесе басқа сөзбен айтқанда жауапты болу). Біріктіру типі келесі түрде беріле алады: union {1 элементтің жазылуы; ... n элементтің жазылуы; }; Біріктірудің басты ерекшелігі жарияланған әрбір элемент үшін жадының бір облысы бөлінгендігі, яғни олар қайта жабылады (перекрываются). Дегенмен, жадының осы облысына элементтердің кез келгенін пайдалану мүмкіндігі бар, бұл мақсат үшін элемент алынған нәтиже мағынасыз болмайтындай етіп таңдалуы керек. Біріктіру элементтеріне құрылымдар жүзеге асырылатын тәсілдер арқылы мүмкіндік бар. Біріктіру тегі құрылым тегі сияқты құрылады. Біріктіру келесі мақсаттар үшін қолданылады: * жадының пайдаланылатын объектісінің инициализациясы, егер әрбір уақыт мезгілінде көп объектілердің ішіндегі тек біреуі белсенді болса; * бір типті объектінің негізгі көрінісінің интерпретациясы, егер осы объектіге басқа тип меншіктелсе. Біріктіру типті айнымалыға сәйкес келетін жады біріктірудің ең ұзын элементін орналастыру үшін қажет шамамен анықталады. Ұзындығы қысқа элемент пайдаланылса, онда біріктіру типті айнымалыларда пайдаланылмаған жады болады. Біріктірудің барлық элементтері жадының бір адрестен бастап бір ғана облысында сақталады. Мысал: union { char fio[30]; char address[80]; int vozrast; int telefon; } inform; union { int ax; char al[2]; } ua; union типті infor объектісін пайдалану кезінде тек мән алған элементті ғана өңдеуге болады, яғни inform.fio элементіне мән меншіктелгеннен кейін басқа элементтерге мән берудің мағынасы жоқ. ua біріктіруі ua.ax екі байтты санның кіші ua.al[0]-ге және үлкен ua.al[1] байттарына жеке жол ашуға мүмкіндік береді. Биттер өрісі Құрылымның элементі жадының жеке биттеріне жолды ашатын биттік өріс болуы мүмкін. Құрылымнан тыс биттік өрістерді жариялауға болмайды. Сонымен қатар биттік өрістердің массивін ұйымдастыруға және өрістерге адресті анықтау операциясын қолдануға болмайды. Жалпы жағдайда биттік өрісі бар құрылым типі келесі түрде беріледі: struct {unsigned идентификатор1: 1-өрістің ұзындығы; unsigned идентификатор2: 2-өрістің ұзындығы; } өрістің ұзындығы бүтін өрнекпен немесе тұрақтымен беріледі. Бұл тұрақты сәйкес өріске бөлінген биттер санын анықтайды. Нөлдік ұзындықтың өрісі келесі сөздің шекараға теңестірілуін білдіреді. Мысал: struct {unsigned a1: 1; unsigned a2: 2; unsigned a3: 5; unsigned a4: 2; }prim; Биттік өрістердің құрылымында таңбалы компоненттер де болуы мүмкін. Мұндай компоненттер автоматты сөздердің сәйкес шекараларына орналасады, сонымен қатар сөздердің кейбір биттері пайдаланылмай қалуы мүмкін. Биттер өрісіне сілтеме жалпы құрылым компоненттері орындалған сияқты тура солай орындалады. Ал биттік өрістің өзі максималды мәні өрістің ұзындығымен анықталатын бүтін сан ретінде қарастырылады. Құрылымы өзгеретін айнымалылар Программаның кейбір объектілері өте жиі кейбір бөлшектерімен ғана өзгешеленетін бір ғана класқа жатады. Мысалға геометриялық фигуралардың көрінісін қарастырамыз. Фигуралар туралы жалпы ақпарат аудан, периметр сияқты элементтер туралы болуы мүмкін. Дегенмен, сәйкес геометриялық өлшемдер туралы ақпарат олардың формасына байланысты әр түрлі болуы мүмкін. Геометриялық фигуралар туралы ақпарат құрылым мен біріктіруді қиыстырып пайдалану негізінде көрсетілетін мысалды қарастырамыз. struct figure { double area, perimetr; /* жалпы компоненттер */ int type; /* компонент белгісі */ union /* компоненттердің саналуы */ { double radius; /* шеңбер */ double a[2]; /* тікбұрыш*/ double b[3];/* үшбұрыш*/ } geom_fig; } fig1, fig2; Жалпы жағдайда figure типті әрбір объект үш компоненттен тұратын болады: area, perimetr, type. type компоненті белсенді компоненттің белгісі (метка) деп аталады, өйткені ол geom_fig біріктіру компоненттерінің қайсысы берілген мезгілде белсенді екенін көрсету үшін пайдаланылады. Мұндай құрылым айнымалы құрылым деп аталады, өйткені оның компоненттері белсенді компоненттің белгісінің мәніне байланысты өзгеріп отырады (мәні type). int типті type компонентінің орнына саналынатын типті пайдаланған жөн. Мысалы, мынандай enum figure_chess {CIRCLE, BOX, TRIANGLE }; CIRCLE, BOX, TRIANGLE тұрақтылары сәйкесінше 0, 1, 2 -- ге тең мәндерді қабылдайды. type айнымалысы саналынатын тип ретінде жариялана алады: enum figure_chess type; Бұл жағдайда Си компиляторы программиске потенциалды қате меншіктеулер жөнінде ескерту жасайды. Мысалға, figure.type=40; Жалпы жағдайда құрылым айнымалысы үш бөліктен тұратын болады: ортақ компоненттер жиынтығы, белсенді компоненттің белгілері және компоненттері өзгеріп отыратын бөліктер. Құрылым айнымалысының жалпы формасы келесі түрде болады: struct {ортақ компиляторлар; белсенді компилятордың белгісі; union {1-компилятордың жазылуы; 2-компилятордың жазылуы; ... ... n-компилятордың жазылуы; } біріктіру идентификаторы } құрылым идентификаторы; Аты helth_record болатын құрылым айнымалысы анықтауға мысал struct {/* жалпы ақпарат */ char name [25]; /* аты */ int age; /* жасы */ char sex; /* жынысы */ /* белсенді компилятор белгісі */ /* (отбасы жағдайы)*/ enum merital_status ins; /* айнымалы бөлік */ union {/* бойдақ */ /* компиляторлар жоқ */ struct {/* некелескен */ char marripge_date [8]; char spouse name [25]; int no_children; } marriage_info; /* айрылысқан */ char date_divorced [8]; }marital_info; }health_record; enum marital_status {SINGLE, /* бойдақ */ MARRIGO, /* үйленген */ DIVOREED /* айрылысқан */ }; Құрылым компьютерлеріне сілтемелер көмегімен қарауға болады: helth_record.name, helth_record.ins, helth_record.marriage_info.marriage_date. Дәріс №8 Тақырыбы: Объектілер мен типтерді анықтау. Мақсаты: С++ тілінде жарияланған айнымалының типі, тип спецификаторы, идентификатор, модификаторы бар идентификатор комбинациясы, ұғымдарын енгізу. Жоғарыда айтылғандай, Си тілінде жазылған программаларда пайдаланылатын барлық айнымалылар жариялануы тиіс. Жарияланатын айнымалының типі типтің спецификаторы ретінде қай кілттік сөз пайдаланылатынына және түсіндіруші қарапайым идентификатор немесе модификаторы бар идентификатор комбинациясы, массив (квадрат жақшалар) немесе функциялар ма, соған байланысты. Қарапайым айнымалыны, құрылымдарды қоспаларды немесе біріктірулерді, сонымен қатар саналуларды жариялау кезінде түсіндіруші - бұл қарапайым идентификатор. Көрсеткішті, массивті немесе функцияларды жариялау үшін идентификатор мына үлгіде өзгереді: сол жағында жұлдызша, оң жағында квадрат немесе дөңгелек жақшалар. Си тілінің маңызды ерекшелігі мынада: жариялау кезінде әр түрлі күрделі типтер түсіндірушілер жиынын құруға мүмкіндік беретін модификаторды бір мезгілде бірнеше рет пайдалануға болады. Дегенмен, модификаторлардың кейбір комбинациялары мүмкін емес екенін есте ұстау керек: * функциялар массив элементтері бола алмайды, * функциялар массивтерді немесе функцияларды қайтара аламайды. Күрделі түсіндірушілерді инициализациялау кезінде квадраттық және дөңгелек жақшалар (идентификатордың оң жағындағы) жұлдызшаларға қарағанда басымырақ (идентификатордың сол жағынан). Квадраттық немесе дөңгелек жақшалардың басымдығы бірдей және солдан оңға қарай ашылады. Тип спецификаторы түсіндіруші толығымен талданып болған кезде соңғы қадамда қарастырылады. Дөңгелек жақшаларды талдау тәртібін қажеттіге ауыстыру үшін пайдалануға болады. Күрделі түсіндірмелерді талдау үшін "іштен сыртқа" (изнутри наружу) деп естілетін және төрт қадамнан тұратын қарапайым ереже ұсынылады. * Идентификаторын бастау керек және квадраттық немесе дөңгелек жақшалар бар ма сол үшін оңға қарау керек. * Егер олар бар болса, онда түсіндірушінің осы бөлігін талдап және содан кейін жұлдызшаны іздеу үшін солға қарау керек. * Егер кез келген кезеңде оң жақтан жабатын дөңгелек жақша кездессе, онда басында барлық осы ережелерді дөңгелек жақшалардың ішінде қолдану қажет, содан кейін барып талдауды жалғастыру керек. * Тип спецификаторын талдау керек. Мысалдар: int * ( * comp[10]) ( ); 6 5 3 1 2 4 Берілген мысалда comp (1) айнымалысы функцияны (4) көрсететін он (2) көрсеткіштен тұратын массив ретінде және бүтін мәндерге (6) қайтаратын көрсеткіштер жарияланған. char * ( * ( * var ) ( ) ) [10]; 7 6 4 2 1 3 5 var (1) айнымалысы char типті мәндерге көрсеткіш (6) болатын он элементтен тұратын массивке (5) көрсеткішті қайтаратын функцияға көрсеткіш ретінде жарияланады. Әр түрлі типті айнымалыларды жариялаудан басқа типтерді жариялау мүмкіндігі бар. Мұны екі тәсілмен істеуге болады. Бірінші тәсіл - құрылымдарды, біріктірулерді немесе саналуларды жариялау кезінде тег атын көрсету керек, ал содан кейін осы атты осы тегке сілтеме ретінде айнымалылар мен функцияларды жариялау кезінде пайдалану. Екінші тәсіл - типті жариялау үшін typedef кілттік сөзін пайдалану. typedef кілттік сөзімен жариялаған кезде жазылатын (баяндалатын) объектінің орнында тұрған идентификатор талдауға кіретін мәліметтер типінің аты болып табылатын және әрі қарай бұл тип айнымалыларды жариялау үшін пайдаланылуы мүмкін. Кез келген тип көрсеткіш, функциялар немесе массивтер типтерін қосқандағы typedef кілттік сөзін пайдаланып жариялана алады. Көрсеткіш, құрылымдар, біріктірулер типтері үшін typedef кілттік сөзі бар ат осы типтер анықталғанға дейін жариялануы керек, бірақ жариялаушының көріну аралығында . Мысалдар: typedef double (* MATH) (); /* MATH - double типті мәнді қайтаратын функцияға көрсеткіш болатын типтің жаңа аты*/ MATH cos; /* cos double типті мәнді қайтаратын функцияға көрсеткіш */ /* Эквивалентті жариялау жүргізуге болады */ double (*cos) ( ); typedef char FIO[40] /* FIO - 40 символдан тұратын массив */ FIO person; /* person айнымалысы 40 символдан тұратын массив */ /* Бұл жариялауға эквивалентті */ char person[40]; Айнымалылар мен типтерді жариялау кезінде мұнда тип (MATH FIO) атттары пайдаланылды. Бұдан басқа тип аттары тағы да үш жағдайда пайдаланыла алады: формалды параметрлер тізімінде, функцияларды жариялау кезінде, типтерді келтіру операцияларында және sizeof (типтің келтіру операциясы) операциясында. Негізгі типтер, саналу, құрылым және қоспа типтері үшін тип аттары болып осы типтер үшін тип спецификаторы табылады. Массив және функция көрсеткішінің типтері үшін тип аттары келесі түрде абстрактылы түсіндірушілер көмегімен беріледі: тип спецификаторы абстарктылы түсіндіруші; Абстрактылы түсіндіруші - бұл бір немесе бірнеше көрсеткіш, массив модификаторларынан тұратын идентификаторсыз түсіндіруші. Көрсеткіш модификаторы (*) әрқашан түсіндірушідегі идентификатордың алдында беріледі, ал массив [ ]және функциялар ( ) модификаторлары - содан кейін. Осылайша абстрактылы түсіндірушіні дұрыс талдау үшін талдауды жобаланған идентификатордан бастау керек. Абстрактылы түсіндірушілер күрделі болуы мүмкін. Күрделі абстрактылы түсіндірушілердегі жақшалар жариялауда күрделі түсіндірушілерді талдау кезінде жасаған сияқты талдау тәртібін береді. Мәліметтердің инициализациялануы. Айнымалыны жариялау кезінде оған бастаушыны (инициатор) түсіндірушіге қоса отырып бастапқы мәнді меншіктеуге болады. Бастаушы "=" таңбасынан басталады және келесі формаларға ие. Формат 1:=бастаушы; Формат 2:= {бастаушылар тізімі}; Формат1 негізгі типтер мен көрсеткіш айнымалыларын инициализациялау кезінде пайдаланылады, ал формат2 - құрама объектілердің инициализациясы кезінде. Мысалдар: char tol='N'; tol айнымалысы `N'символымен инициализацияланады. const long megabute=(1024*1024); Модификацияланбайтын megabute айнымалысы тұрақты өрнекпен инициализацияланады, осыдан кейін ол өзгере алмайды. static int b[2][2]={1,2,3,4}; Бүтін шамалардың екі өлшемді b массиві инициализациланады, массив элементтеріне тізімнен мәндер меншіктеледі. Осы инициализация келесі түрде орындалуы мүмкін: static int b[2][2]={{1,2},{3,4}}; Массивті инициализациялау кезінде бір немесе бірнеше өлшемдіктерді (размерность) алып тастауға болады static int b[3[ ]={{1,2},{3,4}}; Егер инициализация кезінде жол үшін аз мән көрсетілсе, онда қалған элементтер нөлге инициализацияланады, яғни жазылу кезінде static int b[2][2]={{1,2},{3}}; Бірінші жолдың элементтері 1 және 2 деген мәндерді, ал екінші жолдың элементтері 3 және 0 мәндерін алады. Құрама объектілерді инициализациялау кезінде жақшаның және инициализаторлар тізімінің пайдаланылуын қатаң қадағалау керек. Мысалдар: struct complex {double real; double imag; } comp [2][3]= {{{1,1}, {2,3}, {4,5}}, {{6,7}, {8,9}, {10,11}}}; Берілген мысалда comp екі жолдан және үш бағаннан тұратын құрылымдар массиві инициализацияланады, мұндағы әрбір құрылым real және imag екі элементінен тұрады. struct complex 2 [2][3]= {{1,1}, {2,3}, {4,5}, {6,7}, {8,9}, {10,11}}; Бұл мысалда компилятор қарастырылатын фигуралық жақшаларды келесі түрде талдайды: * бірінші сол жақ фигуралық жақша - comp2 массиві үшін құрама бастаушының басы. * екінші сол жақ фигуралық жақша - comp2[0] массивінің бірінші жолының инициализациялануының басы. 1,1 мәндері бірінші құрылымның екі элементіне меншіктеледі; * бірінші оң жақ жақша (1-ден кейін) бастаушылар тізімі массив жолы үшін аяқталғанын компиляторға нұсқайды және comp[0] жолындағы қалған құрылымдардың элементтері автоматты түрде нөлмен инициализациаланады; * алдыңғыға ұқсас {2,3} тізімі comp[1] жолында бірінші құрылымды инициализациялайды, ал массивтің қалған құрылымдары нөлге айналады; * {4,5} инициализаторлардың келесі тізіміне компилятор мүмкін қателер туралы хабарлайды, өйткені copm2 массивінде үшінші жол жоқ. Біріктіруді инициализациялау кезінде біріктірудің оның типіне сәйкес бірінші элементінің мәні беріледі. Мысал: union tab {unsigned char name[10]; int tab1; } pers={`С', `А', `Л', `Е', `М'}; pers.name айнымалысы инициализацияланады және бұл массив болғандықтан оның инициализациялануы үшін фигуралық жақшаға алынған мәндермен, ал қалғандары нөлмен инициализацияланады. Символдар массивінің инициализациялануын жолдық литералды пайдалану жолымен орындауға болады. char stroka[]="привет "; Жеті элементтен тұратын символдар массиві инициализацияланады, оның соңғы элементі (жетінші) барлық жолдық литералдар аяқталатын `\0' символы болады. Егер массив өлшемі берілсе, ал жолдық ле\итерал массив өлшеміне қарағанда ұзынырақ болса, онда артық символдар алынып тасталады. Келесі жариялау stroka айнымалысын жеті элементтен тұратын массив ретінде инициализациялайды. char stroka[5]="привет"; stroka айнымалысына литералдың алғашқы бес элементі түседі, ал `T' және `\0' символдары алынып тасталады. Егер жол массив өлшеміне қарағанда қысқа болса, онда массивтің қалған элементтері нөлмен толтырылады. tab типті айнымалының инициализациялануы келесі түрде бола алатынын ескерейік: union tab pers1="Айман "; және осылайша символдық массивке символдар түседі: `А', `Й', `М', `А', `Н', `\0', ал қалған элементтер нөлмен инициализацияланады. Дәріс №9 Тақырыбы: С++ тіліндегі файлдар. Мақсаты: С++ тілінде файлдардан енгізу, файлдарға шығару, файлдарға жазбаларды толықтыруды ұйымдастыру ұғымдарын енгізу. Файл - сыртқы жинақтауыштарда орналасып, өңдеу процессінде және сілтеме кезінде тұтас болып қарастырылатын мәліметтер жиынтығы. Жұмыс істемес бұрын оған қол жеткізу үшін файлды ашу керек, яғни файл туралы информация дан тұратын мәліметтер облысын жасап, инициализациялау керек. Си алгоритмдік тілінде оны fopen функциясы атқарады. Ол жинақтауыштағы физикалық файлды программадағы логикалық атымен байланыстырады. Логикалық аты - бұл файлға, яғни файл туралы ақпарат орналасқан жады облысына көрсеткіш. Файлдарға көрсеткіштерді жариялау керек. Мұндай көрсеткіштің форматы келесідей: FILE * файлға көрсеткіш; Мысал: FILE *f; f=fopen("B:\BC.CPP", "w"); "w" символы ашылатын файлға қол жеткізу құқығын анықтайды. Осы мысалда В: дискісіндегі BC.CPP файлы тек қана оқу ашылады. Си тілінде ашылатын файлдарға қол жеткізу режимдерін орнататын келесі кодтар қолданылады: Символ Сипатталуы R Файл тек оқу үшін ашылады, егер дискіде файл болмаса қателік туады. W Файл тек жазуға ашылады. Егер осы атаумен берілген файл болмаса, жасалады. Егер осы атаумен файл бар болса ашылмас бұрын ол файлдағы ақпарат өшіріледі. A Файл соңына ақпарат толықтырылуға ашылады. r+ Файл ондағы мәліметтерді редакртрлеуге ашылады. Файлды жазуға да, оқуға да болады. w+ r+ режиміндегідей. a+ А режиміндегідей, тек жазбаны файлдың кез-келген орнына жазуға болады. Файлды оқуға да болады. T Файл текстік режимде ашылады. r, w,a,r+,w+,a+ өрістері көрсетіледі. B Файд екілік режимде ашылады. . r, w,a,r+,w+,a+ өрістері көрсетіледі. Үнсіз келісім бойынша файл текстік режимде ашылады. Си тілінде файлды жабу үшін fclose функциясы пайдаланылады. Олдыңғы мысалдарғы файл fclose(f) функциясымен жабылады. Бірнеше файлды жабу үшін Си тілінде төмендегідей жарияланған функция пайдаланылады: Void fcloseall(Void); Мәліметтерді файлдарға жазу/файлдардан оқу әрекеттерін үш топқа бөлуге болады: - Символ бойынша енгізу/шығару операциялары. - Жол бойынша енгізу/шығару операциялары. - Блок бойынша енгізу/шығару операциялары. Төменде көрсетілген үш топ бойынша қолданылатын негізгі функциялар көрсетілген. Символ бойынша енгізу/шығару Символ бойынша енгізу/шығару операцияларында файлға бір символды жіберу немесе файлдан бір символды алу операциялары орындалады. Функция Функция әрекеті int fgets(FILE*fp) Ашық тұрған файлдан бір символды оқу немесе қайтару. int fgetchov(void) stdin файлынан символды оқиды және қайтарады. Int ungetc(int ch, FILE *fp) сh символын файлға қайтарады. Келесі файлдан оқу операциясы символды қайта қайтарады. Int fputs(int ch, FILE *fp) Файлға сh символының кодын жазады. Жол бойынша енгізу/шығару Функция Функция әрекеті int gets(char *S) stdin файлынан символды оқиды және нуль-терминатормен ауыстырылатын `\n' символын кездестіргенше S жолына жазады. int fgets(char *S int m, FILE *fp) fp сипатталған файлдан символды алады және `\n' символын кездестіргенше немесе m байт оқылғанша S жолына жазады. int fputs(char *S, FILE *fp) Файлға көшірілмейтін және`\n' символын ауыстырылмайтын нуль-терминатор кездестірмейінше S жолынан файлға жазады. int puts(char *S) Файлға көшірілмейтін және`\n' символын ауыстырылмайтын нуль-терминатор кездестірмейінше S жолынан stdout байттарын файлға жазады. Блок бойынша енгізу/шығару Блок бойынша енгізу/шығару операцияларында жұмыс бүтін блоктарға жүргізіледі. Функция Функция әрекеті int fread (void *ptv, int size, int n, FILE *fp) ptv көрсеткіші көрсететін жады облысына әрбір fp файлынан size байттан n блок оқиды. int fwrite(void * ptv, int size, int n, FILE *fp) ptv көрсеткіші көрсететін жады облысынан әрбір fp файлына size байттан n блок жазады. Дәріс №10 Тақырыбы: С++ тілінде графикалық режимде жұмыс істеу. Мақсаты: С++ тілінде графиктік операторлармен танысу. Графикалық режимде жұмыс істеу барысында дисплей экраны нүктелер(пикселдер) матрицасы ретінде көрсетіледі. Мұнда пикселдер бағаны мен жолының саны (дисплей экранының шешімі) видеоадаптер жұмысына байланысты. Әрбір пикселдің түсін басқаруға болады: экран дисплейіндегі тұйықталған облысты түсін толтыру, суреттің фонының түсін беру бейненің қозғалыс эффектісін жасау және т.б. Экран координаттарының басы ретінде x=0, y=0 координаталарымен жоғарғы сол жақ бұрыш қабылданған, мұндағы х - көлденең координаталық түзу, у - тік координаталық түзу. Си тіліндегі графикалық функциялар кітапханасы қамтитын барлық функциялар мобильдік емес (адаптер типіне тәуелді функциялар) және мобильдік топтарға бөлінеді. Мобильдің емес графикалық программаларды BGI (Borland Graphics Interface) драйвері көрсетеді. Драйвер дегеніміз - 10h үзілісін өңдеуші, ол жүйелік өңдеушіні мобильдік графикалық функциялар қолданылғанша толықтыру керек. Программа жұмысын аяқтау алдында үзіліс векторларының кестесі қалпына келтіріледі. Адаптерлердің әртүрлі типтеріне әртүрлі драйверлер қолданылады: CGA.BGI драйвері - CGA және MCGA адаптерлері үшін, EGAVGA.BGI драйвері - EGA, VGA адаптерлері үшін. HERC.BGI драйвері Hercules монохромды адаптері үшін. Мобильді топтың графикалық функциялары төмендегідей бөлінеді: oo Графикалық жүйені дайындауға және текстік режимге көшуге арналған функциялар. oo Дисплей экранында бейнелерді алуға арналған функциялар. oo Бейнелеу параметрлерін орнатуға арналған (штрихтеу түрі, сызықтың қалыңдығы және т.б.) функциялар. oo Режимдер мен бейнелеу параметрлерін анықтайтын функциялар. Графикалық жүйені дайындауға арналған функциялар Графикалық функцияларды қолданбас бұрын графика жүйесін инициализациялау қажет. Графика кітапханасымен қамтылатын графикалық режимдер файлында сипатталған символдық тұрақтылармен беріледі. Графикалық жүйенің инициализациясы initgraph() функциясымен жасалады. Ол графикалық драйверді жүктеп, дисплей экранын өажетті графикалық режимге қосады. initgraph функциясының прототипі: Initgraph(&g_driver, &g_mode, " "); Тырнақшаның ішінде графикалық драйвердің жолын көрсету керек. Егер бос орын қалдырса, онда графикалық драйвер ағымдағы каталогта болуы керек. Бірінші параметр - (&g_driver - графикалық драйвер типі: 1- CGA, 3- EGA, 9- VGA және т.б. Екінші параметр - &g_mode - граикалық режим. VGA драйвері үшін қарастырайық: VGA 0 640х200 VGAMED 1 640x350 VGAHI 2 640x480 640x200 типті жазбалар графикалық режимдегі дисплей экранының шешім қабілеті (бағандар санын жолдар санына көбейту). Графиканың автоматты режимін беру үшін төмендегідей жазба қажет: Int g_driver=DETECT, g_mode; Графикалық режимде жұмысты аяқтау үшін closegraph() функциясын қолдану керек. Бейнені алуға арналған негізгі функциялар - circle(x,y,r) - шеңбер сызу; - bar(x1,y1,x2,y2) - боялған тіктөртбұрыш сызу; - bar3d(x1,y1,x2,y2, тереңдігі, р), р=0 р=1жоғарғы шекара бейнелену/бейнеленбеу - параллелепипед сызу. - line(x1,e1,x2,y2) - сызық сызу; - putpixel(x,y, түсі) - нүкте сызу; - rectangle(x1,y1,x2,y2) - тіктөртбұрыш сызу; - outtext(x,y, <<текст>>) - текст енгізу; - moveto(x,y) - диспдей экранында көрсеткіш орнату; - cleardevice(void) дисплей экранын тазарту; - floodfill(x,y,c); с - сызық түсі, - алдын-ала дайындалған толтырғышпен тұйық облысты толтыру; Бейнелеу параметрлерін орнатуға арналған функциялар oo setcolor(n) - сызық түсін орнату; oo setbkcolor(n) - фон түсін орнату; oo setfillstyle(толтырғыш номері 0-12, түсі) - тұйықталған сызықтың толтырғышының стилін орнату; oo setlinestyle(сызық стилі, 0, қалыңдығы); 0-үздіксіз, 1 - нүктелерден, 2,3-штрих - сызықтың қалыңдығын орнату; oo settextstyle(шрифт 0-4, бағыты; 0-көлбеу, 1-тігінен, өлшем 1-0) - текст стилін орнату; Қолдануға ұсынылған әдебиеттер тізімі * Березин Б.И., Березин С.Б. Начальный курс С и С++. - М:Диалог-МРТИ, 1999. -288с. * Керниган Б., Ритчи Д. Язык программирования Си. - М:Финансы истатистика, 1992. * Касаткин А.И., Вольвачев А.Н. Профессиональное программирование на языке Си: От Turbo-C к Borland C++: Справочное пособие - Мн: Вышейшая школа., 1992. * В.В.Тимофеев. Программирование в среде С++ Builder 5. М.:БИНОМ, 2000. ЗЕРТХАНАЛЫҚ ЖҰМЫСТАРДЫ ЖҮРГІЗУГЕ АРНАЛҒАН ӘДІСТЕМЕЛІК НҰСҚАУЛАР Зертханалық жұмыс №1 Сызықтық және тармақталған есептеу процесстері Жұмыстың мақсаты: С++ тілінде программа мәтіндерін құру ережелерін үйрену: базалық мәліметтер типтері, мәліметтерді енгізу-шығару, негізгі математикалық функциялар; шартсыз өту және тармақталу операторлары (шарт бойынша таңдау операторы if, ауысытрғыш-оператор switch). Сызықтық және тармақталған алгоритмдерді программалауды үйретну. Программалаудың интегралдық ортасы Borland C++ -да жұмыс істеу барысында программа мәтінін енгізу, компиляциялау, редактрлеу, трансляциялау және программаны орындау амалдары орындалады. * 320040204470жаңа файл құру үшін File New Text Edit * ...\bin\*.cpp тақырыпты терезеде программа мәтінін тереміз. * Alt+F9 клаввиштері немесе ProjectCompilе командаларын орындап компиляция жасаймыз. * Компиляция нәтижесінде табылған қателерді түзетеміз ( редактрлейміз) . * Синтаксистік қатеден тазарған программаны (run) батырмасы арқылы орындауға жіберміз . * Программаның соңғы жолында getch( ); функциясын жазсақ нәтиже терезесі басқа клавишті басқанша жабылмайды. СЫЗЫҚТЫҚ АЛГОРИТМ МЫСАЛЫ Есептеу керек , мұндағы x=2,444, y=0,00869, z=-130, нәтиже: -0.49871. Программа мәтіні келесі түрде болуы мүмкін: #include #include #include #define x 2.444 #define y 0.00869 #define z -130.0 void main(void) { double rezult,dop,a,b,c; clrscr( ); /* ЭКРАНДЫ ТАЗАРТУ */ puts(" ЗЕРТХАНАЛЫҚ ЖҰМЫС №1 - СЫЗЫҚТЫҚ ПРОГРАММА"); puts("========================================="); dop=fabs(y-x); a=pow(x,y+1)+exp(y-1); b=1+x*fabs(y-tan(z)); c=0.5*pow(dop,2)-pow(dop,3)/3; rezult=a/b*(1+dop)+c; printf("\a\n ОТВЕТ: rezult=%lf, Press any key...", rezult); getch( ); /* КЕЗ-КЕЛГЕН ПЕРНЕНІ БАСҚҚАНҒА ДЕЙІН КҮТУ*/ } IF ОПЕРАТОРЫН ҚОЛДАНУ МЫСАЛЫ F функциясының мәнін есептеу. Есептеу қай тармақ бойынша жүргізілгендігі туралы хабарламаны шығаруды қарастыру. Программа мәтіні келесі түрде болуы мүмкін: #include #include #include #include #define A 1 #define C 3 double max(double m,double n) /* МАКСИМАЛ МӘНДІ ІЗДЕУГЕ АРНАЛҒАН*/ { /* m ЖӘНЕ n ПАРАМЕТРЛЕРІ БАР */ if (m>n) return m; /*max ФУнкцияСЫ*/ else return n; } double min(double m, double n) /* МИНИМАЛ МӘНДІ ІЗДЕУГЕ АРНАЛҒАН*/ { /* m ЖӘНЕ n ПАРАМЕТРЛЕРІ БАР */ if (m 0)&&(y<0)) { f=(A*x+tan(C*y))/(5-2*x); puts("F=(а*x+tg(c*y))/(5-2*x)"); } else if ((x<0)&&(y>0)) { f=max(pow(x,2.0/3.0),cos(y*y)); /* max ФУНКЦИЯСЫН ШАҚЫРУ*/ puts("F=max(pow(x,2/3),cos(y*y))"); } else if ((x>0)&&(y>0)) { f=min(0.5*x-2*pow(sin(y),2),exp(y)); /* min ФУНКЦИЯСЫН ШАҚЫРУ*/ puts("F=min(0.5*x-2*pow(sin(y),2),exp(y))"); } else { puts("Функция F не определена\n Press any key..."); getch(); exit(1); /* ПРОГРАММАНЫ МӘЖБҮРЛЕП АЯҚТАУ*/ } printf("ОТВЕТ: F=%lf,\n Press any key...\n",f); /* НӘТИЖЕНІ ШЫҒАРУ*/ getch(); } Жеке тапсырмалар: У функциясының мәнін х аргументінің мәніне байланысты есепте. Функцияның х аргументінің мәні қай тармақ бойынша жүргізілгендігі туралы хабарлама шығаруды қарастыру. * , егер * егер * егер * егер * егер * егер * егер * егер * егер * егер * егер * , егер * , егер * , егер * , егер * , егер F функциясының мәнін х аргументіне байланысты есептеп, есептеудің қай тармақ бойынша орындалғанын баспаға шығар. , * , * , * , * , * * * * 3 нүкте берілді А(х1,y1), B(х2,y2), C(х3,y3). * y=kx+1 түзуіне қатысты нүктелердің қалай орналасқанын тап (асты, үсті, бойы). * Әр нүктемен координат басының арақашықтығын тап. Нәтижені өсу ретімен шығар. * Нүктелердің жазықтықтағы орынын анықта. Қандай ширектерде жатқанын шығар. * Осы нүктелер төбелері болатн үшбұрыш салуға бола ма? Болса қандай үщбұрыш? * Радиусы r центрі координаттар басы болатын шеңберге қатысты нүктелердің орынын анықта. Сұрақтар: * С алгоритмдік тілінде айнымалылардың қандай типтері қолданылады. * printf() және scanf() функциялардың негізгі ерекшеліктері.. * if операторының қандай түрлері қолданылады. * if операторы мен switch операторының айырмашылығы? Зертханалық жұмыс №2. Циклдық есептеу процесстерін программалау 1.Жұмыстың мақсаты: С++ тілінде циклдық алгоримтдермен танысу және олармен жұмыс істеу дағдысын қалыптастыру. 2. Есептің шарттары: [Хбас; Хсоңы] аралығында һ қадаммен f(x) функциясын жазып шығу. a-x/(10+b) егер x<0 и b=-10 f(x)= lgx+7 егер x>0 и b=10 3x+2/c қалған жағдайларда 3. Есептің шешуі: 1) Есепті шешу алгоритмінің блок-схемасы: БАСЫ a, b, c, h, xn, xk енгіз x=xn;x<=xk;x=x+h x<0,b!=-10 y=a-x/(10+b) x>0,b==10 y=log10(x)+7 y=3*x+2/c y шығар СОҢЫ 2) С++ тіліндегі бағдарлама мәтіні: #include #include void main() { double y,a,b,c,h,xn,xk,x; cin>>a>>b>>c>>h>>xn>>xk; for (x=xn;x<=xk;x=x+h) { if(x<0,b!=-10) y=a-x/(10+b); if(x>0,b==10) y=log10(x)+7; else y=3*x+2/c; cout<<"y="< void main () { int a,s,m,n; cin>>m; s=a=0; for(n=1;n<=m;n++) { a=n*n; s=s+a; } cout< void main () { const int N=5; double a[N],b[N],s; int i; for(i=0;i>a[i]; for(i=0;i >b; s=a[1]*b[1]; cout<<"a[1]*b[1]="< void main () { const int M=10; int i,a[M],max; long int N; cin>>N; if(N<0)N=-N; for(i=0;i<=M;i++) { a[i]=N%10; N=N/10; } max=a[0]; for(i=0;i<=M;i++) { if(max<=a[i])max=a[i]; } cout<<"\n"<void main () { const int M=3; int i,j,a[M][M],b[M],S,P; for(i=1;i<=M;i++) for(j=1;j<=M;j++) cin>>a[i][j]; for(j=1;j<=M;j++) { P=1; for(i=1;i<=M;i++) P=P*a[i][j]; for(j=1;j<=M;j++) b[j]=P; } S=0; for(j=1;j<=M;j++) S=S+b[j]; cout<<"\n"< #include#include #include int i; const int N=3; void input(double a[],double b[],double c[], int k); void mult(double s[],double a[],double b[],double c[],int k); void main() { double a[N],b[N],c[N],S[N]; input (a,b,c,N); mult(S,a,b,c,N); cout<<"Summa ="; for(i=0;i >a[i]; for(i=0;i >b[i]; for(i=0;i >c[i]; } void mult(double S[],double a[],double b[],double c[],int k) { for(i=0;i #include #include #include struct flat { char adres[30]; int kolvo; long int stoimost; double ploshad; }; int main() { const n=3; int i,j; flat s[n],t; cout.setf(ios::left); clrscr(); for(i=0;i<=n-1;i++) { cout<<" Vvedite adress\n"; cin>>s[i].adres; cout<<" Vvedite kolichestvo komnat\n"; cin>>s[i].kolvo; cout<<" Vvedite ploshad\n"; cin>>s[i].ploshad; cout<<" Vvedite stoimost\n"; cin>>s[i].stoimost; cout<<"\n"; } cout<<"\n Adress Kolichestvo_komnat Ploshad Stoimost\n\n"; for(i=0;i<=n-1;i++) { cout.width(20);cout< >stoimost; for(i=0;i<=n-1;i++) if(s[i].stoimost<=stoimost) { cout.width(20);cout<#include#include #include #include #include struct book {char avtor[15]; char name[15]; char izdat[15]; int god; }; struct avtor {char avtor[15]; int kolvo; }; book *inputbookfile(int &k); avtor *perech(book x[],int k,int &kk); void outputperech(avtor y[],int kk); void outputperechfile(avtor y[],int kk); book *inputbookfile(int &k) {int i; book t; book *ps; ifstream fin; char file[10]; cout<<"Name of input file:\n"; cin>>file; fin.open(file); if (fin==NULL) {cout< >t.avtor>>t.name>>t.izdat>>t.god; k++; }while (fin.good()); k--; fin.close(); fin.open(file); ps=new book[k]; if(ps==NULL){cout<<"No memory\n";getch();exit(1);} for (i=0;i >ps[i].avtor>>ps[i].name>>ps[i].izdat>>ps[i].god; fin.close(); return ps; } avtor *perech(book x[],int k,int &kk) { int i,j,fl; avtor *t; t=new avtor[k]; if(t==NULL){cout<<"No memory";getch();exit(1);} kk=0; for(i=0;i >file; fout.open(file); if (!fout.good()) {cout< #include #include #include #include #include struct book {char avtor[15]; char name[15]; char izdat[15]; int god;}; struct avtor {char avtor[15]; int kolvo;}; class dmassiv {private: book *pst; int n; avtor *pz; int k; public: dmassiv(){n=0;pst=NULL;k=0;pz=NULL;} ~dmassiv(); void inputbookfile(); void outputbook(); void perechavtor(); void outputperechavtor(); void outputperechfile(); }; void dmassiv::inputbookfile() {ifstream fin; char file[15]; book t; int i; cout<<"File name:\n"; cin>>file; fin.open(file); if(fin==NULL){cout<<"File not open\n";getch();exit(1);} n=0; do{fin>>t.avtor>>t.name>>t.izdat>>t.god; n++;}while(fin.good()); n--; fin.close(); pst=new book[n]; if(pst==NULL){cout<<"No dinamic memory\n";getch();exit(1);} fin.open(file); if(fin==NULL){cout<<"File not open\n";getch();exit(1);} for(i=0;i >pst[i].avtor>>pst[i].name>>pst[i].izdat>>pst[i].god;} fin.close();} void dmassiv::outputbook() {int i; cout<<"Ishodnik \n\n"; cout<<"ABTOP Ha3BaHiE I/I3DaHiE God\n"; for(i=0;i >file; fout.open(file); if(!fout.good()){cout<<"File not created\n";getch();exit(1);} for(i=0;i >j; switch(j) {case 1: a.inputbookfile();break; case 2: a.outputbook();getch();break; case 3: a.perechavtor();break; case 4: a.outputperechavtor();getch();break; case 5: a.outputperechfile();break; case 6: cout<<"3ABEPIIIEHIE PAboT6I";getch();return; default: cout<<"ERROR.Repeat Please";getch(); } } } 3)Бағдарламаны тестілеу нәтижесі: Мәтіндік файл: Бағдарлама жұмысы: Алынған мәтіндік файл: Зертханалық жұмыс №7. Файлдар 1.Жұмыстың мақсаты: С++ тілінде файлдармен танысу және олармен жұмыс істеу дағдысын қалыптастыру. 2. Есептің шарттары: Квартира туралы мәлімететр адрестен, бөлмелер санынан, ауданынан және бағасынан тұрады. Бірнеше квартиралар туралы мәліметтерден тұратын массив берілген. Ақпаратты файлға жазу керек. Бағасы бойынша квартиларадың адрестерін және олардың санын анықтау керек. 3. Есептің шешуі: * Есепті шешу алгоритмінің блок-схемасы: input(a) fin.open("flat.txt"); i = 0 i < n - + a[i].adres a[i].kolvo a[i].ploshad a[i].stoimost flat.txt i ++ fin.close(a) return output(а) fout.open(''new_flat.txt''); i=0 i 0 - + t=a[i]; a[i]=a[j]; a[j]=t j++ i++ fin.close(a) return БАСЫ input(b) sort(b) output(b) Vvedite stoimost stoim k=0;i=0; i #include #include #include #include const n=5; struct flat {char adres[20]; long int kolvo; long int stoimost; long int ploshad; }; void input(flat a[n]) {ifstream fin; int i; fin.open("flat.txt"); for(i=0;i >a[i].adres>>a[i].kolvo>>a[i].ploshad>>a[i].stoimost; fin.close(); } void sort (flat a[n]) {int i,j; flat t; for(i=0;i 0) {t=a[i]; a[i]=a[j]; a[j]=t; } } void output(flat a[n]) {ofstream fout; fout.open("new_flat.txt"); int i; for(i=0;i >stoim; cout<<"\nAdress/------/Kolichestvo_komnat/----/Ploshad/----/Stoimost/\n\n"; int i; for(i=0;i #include #include #include #include #include struct nodebook { char author[21]; char name[41]; char publisher[21]; double year; nodebook *next;}; struct nodeyear { double year; int nob; nodeyear *next;}; class books { private: nodebook *bb,*enb; nodeyear *by,*eny; int n,m; public: books(){n=m=0; bb=enb=NULL; by=eny=NULL;} ~books(); void input(); void outpu(); void yearlist();}; books::~books() { nodebook *t_b; nodeyear *t_y; if(bb!=NULL) {while(bb!=NULL) {t_b=bb; bb=bb->next; delete t_b;} enb=NULL; n=0;} if(by!=NULL) {while(by!=NULL) {t_y=by; by=by->next; delete t_y;} eny=NULL; m=0;} } void books::input() { ifstream fin; int i; nodebook *pb,t; fin.open("books.txt"); do { fin>>t.author>>t.name>>t.publisher>>t.year; n++; } while(fin.good()); n--; fin.close(); fin.open("books.txt"); pb=new nodebook; fin>>pb->author>>pb->name>>pb->publisher>>pb->year; pb->next=NULL; bb=pb; enb=pb; for(i=1;i >pb->author>>pb->name>>pb->publisher>>pb->year; enb->next=pb; pb->next=NULL; enb=pb;} fin.close(); } void books::outpu() { ofstream fout; nodebook *i; fout.open("authors.txt"); for(i=bb;i!=NULL;i=i->next) fout< author<<" "< name<<" "< publisher<<" "< year< year=bb->year; py->nob=0; py->next=NULL; by=py; eny=py; for(i=bb;i!=NULL;i=i->next) {fl=0; for(k=by;k!=NULL;k=k->next) if(i->year==k->year) {k->nob++; fl=1;} if(fl==0) { py=new nodeyear; py->year=i->year; py->nob=1; eny->next=py; py->next=NULL; eny=py;} } for(k=by;k!=NULL;k=k->next) cout< year<<" "< nob< >. Электронный задачник по программированию. * Begin 20, Integer 290, Boolean 20 * Begin 30, Integer 280, Boolean 30 * Begin 40, Integer 270, Boolean 40 * Begin 50, Integer 260, Boolean 50 * Begin 60, Integer 250, Boolean 60 * Begin 70, Integer 240, Boolean 70 * Begin 80, Integer 230, Boolean 80 * Begin 90, Integer 220, Boolean 90 * Begin 100, Integer 210, Boolean 100 * Begin 110, Integer 200, Boolean 110 * Begin 120, Integer 190, Boolean 120 * Begin 130, Integer 180, Boolean 130 * Begin 140, Integer 170, Boolean 140 * Begin 150, Integer 160, Boolean 150 * Begin 160, Integer 150, Boolean 160 * Begin 170, Integer 140, Boolean 170 * Begin 180, Integer 130, Boolean 180 * Begin 190, Integer 120, Boolean 190 * Begin 200, Integer 110, Boolean 200 * Begin 210, Integer 100, Boolean 210 * Begin 220, Integer 90, Boolean 220 * Begin 230, Integer 80, Boolean 230 * Begin 240, Integer 70, Boolean 240 * Begin 250, Integer 60, Boolean 250 * Begin 260, Integer 50, Boolean 260 * Begin 270, Integer 40, Boolean 270 * Begin 280, Integer 30, Boolean 280 * Begin 290, Integer 20, Boolean 290 * Begin 300, Integer 10, Boolean 300 СОӨЖ №2 Тақырыбы: С++ тілінде тармақталған құрылымды программа құру Тапсырмалар: Нұсқа Тапсырмалар Әдебиет * If 10, Case 300 Т.Э.Абрамян < >. Электронный задачник по программированию. * If 20, Case 290 * If 30, Case 280 * If 40, Case 270 * If 50, Case 260 * If 60, Case 250 * If 70, Case 240 * If 80, Case 230 * If 90, Case 220 * If 100, Case 210 * If 110, Case 200 * If 120, Case 190 * If 130, Case 180 * If 140, Case 170 * If 150, Case 160 * If 160, Case 150 * If 170, Case 140 * If 180, Case 130 * If 190, Case 120 * If 200, Case 110 * If 210, Case 100 * If 220, Case 90 * If 230, Case 80 * If 240, Case 70 * If 250, Case 60 * If 260, Case 50 * If 270, Case 40 * If 280, Case 30 * If 290, Case 20 * If 300, Case 10 СОӨЖ №3 Тақырыбы: Циклдық құрылымды программаларды ұйымдастыру Нұсқа Тапсырмалар Әдебиет * For 1, While 30, Series 1 Т.Э.Абрамян < >. Электронный задачник по программированию. * For 2, While 29, Series 2 * For 3, While 28, Series 3 * For 4, While 27, Series 4 * For 5, While 26, Series 5 * For 6, While 25, Series 6 * For 7, While 24, Series 7 * For 8, While 23, Series 8 * For 9, While 22, Series 9 * For 10, While 21, Series 10 * For 11, While 20, Series 11 * For 12, While 19, Series 12 * For 13, While 18, Series 13 * For 14, While 17, Series 14 * For 15, While 16, Series 15 * For 16, While 15, Series 16 * For 17, While 14, Series 17 * For 18, While 13, Series 18 * For 19, While 12, Series 19 * For 20, While 11, Series 20 * For 21, While 10, Series 21 * For 22, While 9, Series 22 * For 23, While 8, Series 23 * For 24, While 7, Series 24 * For 25, While 6, Series 25 * For 26, While 5, Series 26 * For 27, While 4, Series 27 * For 28, While 3, Series 28 * For 29, While 2, Series 29 * For 30, While 1, Series 30 СОӨЖ №4 Тақырыбы: С++ тілінде массивтермен орындалатын амалдар Нұсқа Тапсырмалар Әдебиет * Array 1, Array 31 Т.Э.Абрамян < >. Электронный задачник по программированию. * Array 2 Array 32 * Array 3 Array 33 * Array 4 Array 34 * Array 5 Array 35 * Array 6 Array 36 * Array 7 Array 37 * Array 8 Array 38 * Array 9 Array 39 * Array 10, Array 40 * Array 11, Array 41 * Array 12, Array 42 * Array 13, Array 43 * Array 14, Array 44 * Array 15, Array 45 * Array 16, Array 46 * Array 17, Array 47 * Array 18, Array 48 * Array 19, Array 49 * Array 20, Array 50 * Array 21, Array 51 * Array 22, Array 52 * Array 23, Array 53 * Array 24, Array 54 * Array 25, Array 55 * Array 26, Array 56 * Array 27, Array 57 * Array 28, Array 58 * Array 29, Array 59 * Array 30, Array 60 Екіөлшемді массивтер Нұсқа Тапсырмалар Әдебиет * Matrix 1, Matrix 31 Т.Э.Абрамян < >. Электронный задачник по программированию. * Matrix 2, Matrix32 * Matrix 3, Matrix33 * Matrix 4, Matrix34 * Matrix 5, Matrix35 * Matrix 6, Matrix36 * Matrix 7, Matrix37 * Matrix 8, Matrix38 * Matrix 9, Matrix39 * Matrix 10, Matrix40 * Matrix 11, Matrix41 * Matrix 12, Matrix42 * Matrix 13, Matrix43 * Matrix 14, Matrix44 * Matrix 15, Matrix45 * Matrix 16, Matrix46 * Matrix 17, Matrix47 * Matrix 18, Matrix48 * Matrix 19, Matrix49 * Matrix 20, Matrix50 * Matrix 21, Matrix51 * Matrix 22, Matrix52 * Matrix 23, Matrix53 * Matrix 24, Matrix54 * Matrix 25, Matrix55 * Matrix 26, Matrix56 * Matrix 27, Matrix57 * Matrix 28, Matrix58 * Matrix 29, Matrix59 * Matrix 30, Matrix60 Мәліметтердің жолдық типтері Нұсқа Тапсырмалар Әдебиет * String1, String31 Т.Э.Абрамян < >. Электронный задачник по программированию. * String2, String32 * String3, String33 * String4, String34 * String5, String35 * String6, String36 * String7, String37 * String8, String38 * String9, String39 * String10, String40 * String11, String41 * String12, String42 * String13, String43 * String14, String44 * String15, String45 * String16, String46 * String17, String47 * String18, String48 * String19, String49 * String20, String50 * String21, String51 * String22, String52 * String23, String53 * String24, String54 * String25, String55 * String26, String56 * String27, String57 * String28, String58 * String29, String59 * String30, String60 СОӨЖ №5 Тақырыбы: С++ тілінде құрылымдармен жұмыс Құрылымданған мәліметтер типі. Жиындар. Нұсқа Тапсырмалар Әдебиет * Matrix1 Т.Э.Абрамян < >. Электронный задачник по программированию. * Matrix2 * Matrix3 * Matrix4 * Matrix5 * Matrix6 * Matrix7 * Matrix8 * Matrix9 * Matrix10 * Matrix11 * Matrix12 * Matrix13 * Matrix14 * Matrix15 * Matrix16 * Matrix17 * Matrix18 * Matrix19 * Matrix20 * Matrix21 * Matrix22 * Matrix23 * Matrix24 * Matrix25 * Matrix26 * Matrix27 * Matrix28 * Matrix29 * Matrix30 Құрылымданған мәліметтер типті. Жазбалар. Нұсқа Тапсырмалар Әдебиет * Matrix61 Т.Э.Абрамян < >. Электронный задачник по программированию. * Matrix62 * Matrix63 * Matrix64 * Matrix65 * Matrix66 * Matrix67 * Matrix88 * Matrix69 * Matrix70 * Matrix71 * Matrix72 * Matrix73 * Matrix74 * Matrix75 * Matrix76 * Matrix77 * Matrix78 * Matrix79 * Matrix80 * Matrix81 * Matrix82 * Matrix83 * Matrix84 * Matrix85 * Matrix86 * Matrix87 * Matrix88 * Matrix89 * Matrix90 СОӨЖ №6 Тақырыбы: С++ тіліндегі графика Нұсқа Тапсырмалар Әдебиет * Graf1 Т.Э.Абрамян < >. Электронный задачник по программированию. * Graf2 * Graf3 * Graf4 * Graf5 * Graf6 * Graf7 * Graf8 * Graf9 * Graf10 * Graf11 * Graf12 * Graf13 * Graf14 * Graf15 * Graf16 * Graf17 * Graf18 * Graf19 * Graf20 * Graf21 * Graf22 * Graf23 * Graf24 * Graf25 * Graf26 * Graf27 * Graf28 * Graf29 * Graf30 СӨЖ ОРЫНДАУ БОЙЫНША НҰСҚАУЛАР Тақырыптар Тапсыру формасы Программалау ғылым әне практикалық қолданба ретінде. Реферат Программалау технологиясы. Реферат Программалық өнім және и оның сипаттамасы. Реферат Программалаудың формальды жүйелері (тілдер). Реферат Программалау тілдерінің классификациясы. Реферат Мәліметтерді типтендіру. Реферат Программалаық өнімді жобалау әдістемесі. Реферат Құрылымдық программалау, жобалау, процедуралық декомпозиция Реферат Теориялық программалау: нысан және зерттеу пәні, есептері. Реферат Программалық өнімдерді жасаудың инструменталдық құралдары. Реферат Метатілдер. Реферат Программалау тілінің грамматикасы. Реферат Мәліметтер құрылымдары. Реферат Программалау парадигмалары: директивті, логикалық, функционалдық және нысанды-бағдарланған. Реферат Модульдік программалау, модульдер кітапханасы. Реферат Нысанды-бағдарланған программалау, негізгі принциптері. Реферат БАҚЫЛАУШЫ - ӨЛШЕМДІК ҚҰРАЛДАР 1. Тест тапсырмалары: 1-нұсқа 1.Кестенің сыртқы кілті деп: А)атрибуттардың көптеген мәндері В)кез келген атрибут С)әруақытта бірінші атрибут D)атрибуттардың кез келген комбинациясы E)кестенің сол сыртқы байланысқан басты кілтті алаңы болатын, атрибут немесе атрибуттар жиыны 2. Өңдейтін деректер қоры ақпараттық құрылысты бейнелейтін схема қалай аталады A)блок-схемалық B)графикалық C)алгоритмдік D)концептуалдық Е)логикалық 3. Сәйкес артибут мәндерімен кестенің бағаны қалай аталды: A)домен B)кортеж C)файл D)кестенің кілті Е)маска 4. Файлдық структура ол: A)Желілік. B)Иерархиялық. C)Сызықтық. D)Кестелік. Е)Графикалық. 5. <<Бірге-бір>> қатынастарына келетін обьектілерді көрсетіңіз: A)староста аты-группа студенттері B)группа номері-студент фамилиясы C)оқытушылар-студенттер D)товар коды-сатып алушы Е)сынақ кітапшасының номері - төл құжаттың нөмері 6. Мәлімет анықтамасына не кірмейді? A)белгілі бір мәні бар әңгіме В)Келесі өңдеуге келетін, белгілі бір формада берілген ақпарат C)белгілі бір мәні бар әңгіме D)Бұл ақпарат тасушы Е)Алфавиттегі бір сөз 7. Мәліметтердің байланысқан структурасының жиыны мен бұл структураларға операциялар қолдану қалай аталады. A)кілт B)кесте C)мәліметтердің моделі D)жазба Е)фильтр 8.Ақпараттық жүйедегі толықтылықтың шегі деген не? A)Ақпараттық жүйенің толықтығын бұзатын мәліметтерді сақтау ережелері B)Мәліметтерге манипуляцияны жасатуға тиым C)Ақпараттық жүйенің толықтығын жасайтын мәліметтерді сақтау ережелері D)Ақпараттық жүйенің толықтығын жасайтын анықтау ережелері және мәліметтерге манипуляция жасау Е)Сақтауға болатын мәліметтерге толықтық шектеу қояды 9.Екі кестенің арасында <<бірге көп>> қатынасы болсын, онда <<бір>> бөлімін құрайтын және алғашқы кілті бар кесте қалай аталады: A)Функционалды кесте B)Жалғыз кесте C)Бағынышты кесте D)Көп кесте Е)Басты кесте 10.Мәліметтерді сорттау не үшін жасалады: A)Мәліметтерді дискіде оптимальді түрде сақтау. B)Мәліметтерді тез табу үшін. C)Мәліметтерді өңдеудің жылдамдығын көбейту. D)Мәліметтердің структурасын өңдеу үшін Е)Мәліметтерді сақтаудағы экономикалық шығынды азайтып және ақпараттық процессті қорғау үшін. 11.Кез келген ақпаратқа қатынау алу жағдайы: A)Ақпараттың ашықтығы B)Ақпараттың актуалдығы C)Ақпараттың обьективтілігі. D)Ақпараттың толықтығы Е)Ақпараттың ақиқаттылығы 12.Кілт мәні бойынша реттелген, кестенің керекті бағанына сілтемелердің жиыны. A)файлмен B)кодпен C)индекспен D)фильтрмен Е)реквизитпен 13.Есептеуіш системада сақталатын және обьектілердің жағдайын, олардың қарастырып отырған ортаны көрсететін, арнайы жиналған мәліметтердің жиыны ені береді A)Операциялық жүйені B)деректер банкін C)СУБД D)Деректердің моделін Е)деректер қорын 14.Бір типті мәліметтердің екінші типті мәліметтер арқылы берілу қалай аталады: A)Қорғау B)Кодтау амалы C)Атын өзгерту D)Көшірмесін алу Е)Шифрлау 15.Информатикада ақпарат қабылдағышты қалай атайды: A)Жинағыш B)Сервер C)Клиент D)Сақтаушы Е)Жұмыс станциясы 16.Информатикада ақпарат жинағышты қалай атайды: A)Клиент B)Жинағыш C)Сервер D)Жіберу каналом Е)Жұмыс станциясы. 17.Деректер қоры сияқты текстік файлдардың кемшілігі A)текстік мәліметтердің шрифтері әртүрлі болады B)тексттік мәліметтерге структуирование жасалмаған C)тесттік мәліметтердің көлемі үлкен болады D)сақтау форматы Е)компактілігі 18.Логикалық алаң нені сақтайды A)Бір символдан тұратын тексттік мәліметтер B)ИӘ немесе ЖОҚ деген мәндердің тек біреуін қабылдайтын, логикалық мәліметтер C)Кестедегі жазбалардыңномерлері D)Сандық мәліметтер Е)Комментарийлер 19.14.Қатынас келесі түрде беріледі:A)мәліметтер типімен B)тек атымен C)тек кілтімен D)өз атымен және атрибуттар тізімімен Е)компьютерде мәліметтерді орналастыру құқығы 20.Windows қолданбаларымен құрылған, обьектілерді ендіру және байланыстыру спецификациясын қолданатын обьектілер қалай аталады A)ClipArt B)MEMO C)OLE D)подстановки Е)индексация 21.Ақпараттық жүйе үшін интерфейстің анқытамасы. A)Ақпараттық жүйенің клиенттік бөлімі B)Тұтынушы мен операциялық жүйе арасында байланысты орнататын программа C)Windows терезесі D)Тұтынушыға информацияондық системаның кез келген функциясына қатынауға мүмкіндік беретін программа Е)Ақпараттық жүйенің серверлік бөлімі 22.Тұтынушыға ақпараттық өнімге қатынау беру: A)консалтингтік қызмет B)финанстық қызмет C)юристік қызмет D)транспорттық қызмет Е)ақпараттық қызмет 23.Өтіп жатқан моменттегі ақпарат дәлдігінің дәрежесі:A)Ақпараттың актуалдығы B)Ақпараттың толықтығы C)Ақпараттың ақиқаттылығы D)Ақпараттың обьективтілігі Е)Ақпараттың адекваттылығы 24.Реляционды деректер қорын құрудағы негізгі түсініктер A)қатынас, атрибут, жазбалар B)кітап, парақ,жол,баған,ұяшық C)документ,абзац,шрифт D)блок-схема,алгоритм Е)файл,папка,диск 25.Бір компьютерде барлық функционалдық бөліктері орналасқан СУБД A)желілік D)жалғыз В)локальді Е)глобальді С)жіберілген 26.Әрбір жазу үшін құрамы уникалды болатын алаңдар нені береді A)компакті кілт D)алғашқы кілт В)сырқы кілт Е)механикалық кілт С)электрлі кілт 27. Мәліметтерді не үшін структуралау етеді: A)Мәліметтерді сақтау үшін B)Мәліметтерді дұрыс орғау үшін C)Мәліметтерге операция қолдану үшін D)Кодтау мүмкіндігін оңайлату Е)Шифрлау мүмкіндігін оңайлату . 28.Текстік мәліметтерді қодтау қалай орындалады:A)кез келген бүтін сандар B)Бір килобайтпен өрнектелген екілік код C)Бір байтпен өрнектелген екілік код D)Сезігдік санау системасымен Е)Морзе азбукасы 29.Кестелер арасындағы байланыс қалай орындалады:A)мәліметтердің қайталануы C)әрбір кестенің бірінші алаңдары кездесетін алаңдар D)әрбір кестенің соңғы алаңдары В)кез келген алаң Е)екеуіне байланысты алаңдар 30.Деректер қорын құратын ақпараттық структураны көрсететін схема қалай аталады: A)концептуалды схема D)қадамды схема В)алгоритмді схема Е)теориалық схема С)графикалық схема 2-нұсқа 1. Кестелік структура неден тұрады A)байланысқан графиктерден B)жол мен бағандардан C)тек жолдардан D)тек бағандардан Е)түйін мен қабырғалардан 2.Тұтынушы қойған белгілі бір шарт бойынша мәліметтерді таңдау әдісі A)отчет B)сұраныс C)макрос D)кесте Е)модуль 3.Файлдардың архивациясы не үшін жасалады:A) Мәліметтерді өңдеудің жылдамдығын көбейту B) Мәліметтерді дискіде оптимальді түрде C)Мәліметтерді сақтаудағы экономикалық шығынды азайтып және ақпараттық процессті қорғау үшін D)Мәліметтерді тез табу үшін Е)Мәліметтердің структурасын өңдеу үшін 4.Бір немесе бірнеше кестеден тұтынушыға мәлімет алуға мүмкіндік беретін обьект: A)макростар B)кесте C)формалар D)отчеттар Е)сұрастар 5.Ақпараттық жүйесі арқылы шешілетін есептер неге байланысты болады. A)Есептеу жылдамдығына байланысты B)Сақтау ортасына байланысты C)Қатынау деңгейіне байланысты D)Қолданба ортасына байланысты Е)Интерфейске байланысты 6.Элементінің адресі оның номерімен анықталатын структураны көрсет: A)Иерархиялық B)Сызықтық C)Иерархиялық D)Адрестік Е)Кестелік 7.Кестенің әр бағанның: A)уникалды аты болу керек B)аты болмаса аты болмау керек C)уникалды аты болмау керек D)кестенің кілті болу керек Е)кез келген жолмен алмастыруға болады 8.Серверге қосылатын жұмыс станциялары қалай аталады: A)басты B)серверлер C)клиенттер D)орталық Е)көмекші 9.Екі кесте арасындағы қатынасты құру үшін келесі жолдарды көрсету керек:A)бірдей тип және бірдей размерден тұратын B)кез келген жол C)әр кестеде алғашқы кілт болып табылатын D)барлық мәліметтерден тұратын Е)электронды кілттерден тұратын 10. <<Бірге-көп>> қатынастарына келетін обьектілерді көрсетіңіз: A)группа номері-студент фамилиясы B)сынақ кітапшасының номері - төл құжаттың номері C)пәндер бойынша бағалар - студент фамилиясы D)староста фамилиясы - группа студенттері Е)сынақ кітапшасының номері - пәндер бойынша бағалар 11.Мәліметтердің толықтығын сақтау информациондық системаның негізгі есебі. Мәліметтердің толықтығының анықтамасын бер: A)Сыртқы тұтынушылардың актуалды информациондық сұраныстарын орындау. B)Үлкен көлемді көпаспекті информацияны бір уақытта модификациялуға мүмкіндік. C)Ақпараттық жүйенің бағыты бойынша жасалған ыңғайлы тұтынушы интерфейсі. D)Информация мен сақталатын мәліметтердің қателері болмайды Е)Ақпаратты жинау сақтау 12.Өзінің ресурстарын көптеген тұтынушыларға қолдануға мүмкіндік беретін компьютер қалай аталады A)жұмыс станциясы B)клиент C)сервер D)түйін Е)маршрутизатор 13.Деректер қорын жүргізіп және құратын, программалық жабдықтауды қалай атаймыз. A)кестелік процессор B)операциондық система C)деректер қорын басқару системасы D)утилита Е)тексттік редактор 14.Кестедегі баған сәйкес атрибут мәнімен келесі түрде аталады: A)сервер B)кортеж C)файл D)код Е)домен 15.Ортаның анализі қалай жасалады:A)ақпараттық қадамда B)мәліметтерді физикалық орналастыруға дайындау C)механикалық қадамда D)физикалық қадамда Е)шартты қадамда 16.Реттелген мәліметтердің негізгі ерекшелігі:A)Мәліметтер жақсы қорғалған . B)Керекті мәліметтерді тез табу мүмкіндігі. C)Мәліметтер жадыда аз орын алады. D)Кодтау мүмкіндігінің оңайлығы. Е)Шифрлаудың сапалылығы. 17.Мәліметтердің физикалық организациясын анықтайды A)конструкторда мәліметтер структурасын құру әдісі B)мәліметтерді машиналық жинағыштарда орналастыру әдісі C)қолданатын мәліметтер моделінің түрі D)мәліметтердің файлдық моделі Е)барлық жауаптар дұрыс емес 18.Деректер қорын жобалаудың алғашқы қадамы A)ақпараттық B)логикалық C)физикалық D)техникалық Е)шартты 19.Деректер қорының негізгі түсінігі A)файл B)қатынас(кесте) C)граф D)желі Е)документ 20.Мәліметтердің тутастігін сақтайтын A)мәліметтердің нақтылығы B)мәліметтерге дублирование жасау C)байланысқан кетедегі мәліметтердің келсушілігі және дұрыстығы D)кестедегі мәліметтердің компактілігі Е)байланыспаған кестелердегі қорғау 21. <<Көпке-көп>> қатынастарына келетін обьектілерді көрсетіңіз: A)староста фамилиясы-группа студенттері B)сынақ кітапшасының номері-төл құжаттың номері C)сынақ кітапшасының номері-төл құжаттың номері D)товар коды- сатып алушы Е)пәндер-бағалар 22.Мәлімет бұл: A)Обьектілердің қасиеттері. B)Текст. C)Сақталған сигналдар. D)Адамдар арқылы берілетін мағлұмат. Е)Кесте. 23.Кесте атрибуттары арасында тәуелділік түрлері A)физикалық B)алгоритмді C)функционалды, транзитивті D)аналитикалық Е)комплекстік 24.Мәліметтер типі келесі түрде анықталады:A)көрсетілімдердің жаңарту заңы B)таралудың тәуелсіздік заңы C)нақтылық шарты D)қандай мәліметтер жолда тұратындығымен Е)мәліметтердің шығарылу заңы 25.Қай жол жазбаның дұрыс анықтамасын береді A)жазба-элементтердің файлының структурасы бірдей кез келген мәліметтердің жиыны B)жазба-элементтердің структурасы бірдей кез келген мәліметтердің жиыны C)жазба - дискідегі минималды аталған мәліметтердің структурасы. D)жазба-мәліметтерді. Е)жазба-алаңдардан құралған структура. 26.Кестенің кілтті алаңы қалай анықталады, мәліметтері қандай болу керек. A)мәні бар мінездеме B)қайталанады C)деректер қоры үшін аса маңызды D)сондай маңызды емес Е)қайталанбайды 27.Желілік модельде мәліметтер мына түрде беріледі A)кестелер жиынымен B)ағаш структирасымен C)графпен D)қатынастар жиынымен Е)сызықтық структурамен 28.Деректер қорының реляциондық моделін жасаған: A)Герц B)Форд C)Ньютон D)Смит Е)Кодд 29.СУБД-ғы мәліметтер типі <<тескттік>> қолданылады: A)тізбектерден мәндердің таңдалуы B)мәліметтер сандығында C)мәліметтер логикасында D)басқа программаларда құрылған обьектілерде Е)мәліметтер текстінде 30.Иерархиялық модельдерде берәлгендердің ең жоғарғы деңгейі:A)бұтағы B)бағынышты C)жапырағы D)түбірі Е)паутина 2.Емтихан сұрақтары: * Мәліметтер қоры. Файлдық құрылым мәліметтері. * Мәліметтер қоры. Негізгі ұғымдар. * Мәліметтер қорының модельдері. * Иерархиялық модель. * Желілік модель. * Мәліметтердің реляциялық моделі. * Реляциялық алгебра. Біріктіру, қиылысу, айыру, көбейту амалдары. * Реляциялық алгебра. Таңдау, проекцияны құру амалдары. * Реляциялық алгебра. Қосу (жалғау) амалы. * Реляциялық алгебра. Бөлу, меншіктеу амалы. * Реляциялық есептеу. * Қалыптандыру. * Постреляциялық модель. * Көпөлшемді модель. * Объектілі-бағытталған модель. * Мәліметтер қорының үшдеңгейлі архитектурасы. * Мәліметтер қорын тұғырнамалық жобалаудың ұстанымдары. * Ақпараттық жүйелер. * Ақпараттық жүйенің архитектурасы. * Жергілікті ақпараттық жүйелер. * Клиент-сервер архитектурасының модельдері. * Мәліметтер қоры және интернет. * Мәліметтер қорын басқару жүйелері. * Транзакция. * МҚ қорғау құралдары. * Қолданбалы программалық қамтамасыз ету. * Мәліметтер қорын жобалауды автоматтандыру құралдары. CASE-технология. * SQL-тілі. Жалпы мәліметтер. * SQL стандарттары. * Компьютерлік желідегі SQL. * SQL тілінің элементтері. * SELLECT операторы. * FROM сөйлемі. * WHERE сөйлемі. Салыстыру. * WHERE сөйлемі. Диапазонға жататындығын тексеру. * WHERE сөйлемі. Жиынға жататындығын тексеру. * WHERE сөйлемі. Шаблонға сәйкес болуын тексеру. * WHERE сөйлемі. NULL мәніне тең болуын тексеру. * Агрегаттық функциялар. * GROUP BY сөйлемі. * HAVING сөйлемі. * ORDER BY сөйлемі. * Бір-біріне салынған сұраныс. * Бір-біріне салынған сұраныстың нәтижесімен салыстыру. * Жату-жатпауды тексеру. * Бар-жоғын тексеру. * Бейнелеу. * INSERT * DELETE * UPDATE * CREATE TABLE * DROP TABLE * ALTER TABLE * Индекстер. * SQL және мәліметтер қорының қауіпсіздігі. * Мәліметтер қорын басқару жүйесі. Жалпы сипаттама. * Кесте, форма, сұраныс, есеп. * Макрос, модуль, мәліметтерге қол жеткізу беттер
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz