1 билет Алгоритм ұғымы. Алгоритмнің анықталу жолдары. Алгоритмнің графигі

Loading...


Дата13.02.2020
өлшемі55.45 Kb.

1 билет Алгоритм ұғымы. Алгоритмнің анықталу жолдары. Алгоритмнің графигі.

Алгоритм алгорифм (ағылшынша: algorіthm, algorіsmus — Әл-Хорезмидің атынан шыққан) — бастапқы берілген мәліметтермен бір мәнде анықталатын нәтиже алу үшін қай амалды (жұмысты) қандай ретпен орындау қажеттігін белгілейтін есептерді (мәселелерді) шешу (математикалық есеп-қисаптар орындау, техникалық объектілерді жобалау, ғылыми-зерттеу жұмысын жүргізу т.б.) тәсілдерінің дәл сипаттамасы. Алгоритм — математика мен кибернетиканың негізгі ұғымдарының бірі. Агоритмді орындау алгоритмдік процесс деп аталады.

алгоритм дегеніміз – жеке қадамдардан тұратын, формальды түрде жазылған реттелген нұсқаулар тізбегі. Алгоритм сөзі IX ғасырда өмір сүрген ұлы өзбек математигі Әл-Хорезмидің атымен аталған жазудың латындық формасы. Әл-Хорезми бірінші рет арифметикалық амалдарды орындаудың ережелерін тұжырымдаған ғалым. Алгоритм ұғымы кез-келген программа құру кезінде негізгі орын алады, себебі программа – енгізілген берілгендерді өңдеу үшін арнайы және қатаң түрде қандай да бір программалау тілінде дайындалған алгоритм. Кез-келген алгоритм қандай да бір орындаушыға негізделген. Орындалған командалар жиынтығы орындаушының командалар жүйесі болып табылады. Орындаушы ретінде – адамдар және техникалық құрылғылар, яғни роботтар, компьютерлер және автоматтар болуы мүмкін.

Алгоритмнің графиктік түрде кескінделуі

               Алгоритмнің графиктік түрде кескінделуі – кең таралған әдіс. Бұл – жазудың түсінікті, анық, көрнекі түрі болып табылады. Алгоритмдерді графиктік жолмен жазудың мемлекеттік стандарты анықталған. Онда кез-келген амал белгілі бір геометриялық фигурамен өрнектеледі. Олар фигуралар немесе блоктар, амалдар немесе операциялар символы деп те аталады. Блоктар бағытталған сызықтармен байланысып, бірінен соң бірі ретімен орналысады. Ақпарат өңдеудің әрбір буыны немесе орындалатын операциялар реті алгоритм схемасымен айқындалады. Алгоритм схемасын оның блок схемасы деп аталады. Алгоритм блоктарының ішінде орындалатын іс-әрекеттің мазмұны жазылады. Блок схемада пайдаланатын фигуралар оның блоктары, ал оларды бір-бірімен қосатын сызықтар байланыс сызықтары деп аталады.


2 билет Алгоритмнің негізгі құрылымдары

Алгоритм негізгі 3 базалық құрылымға бөлінеді:

1)     сызықтық

2)     тармақталушы

3)     циклдік.

Сызықтық алгоритмдерде есеп шешімінің қадамдары бірінен кейін бірі тізбектей орындалады. 

  Тармақталушы алгоритмдерде алдымен қандайда бір шарт тексеріледі және шарттың орындалуына немесе орындалмауына сәйкес есептеу процесінің бірі орындалады.

4 билет

Алгоритмдік тіл (ағылш. algorіtmіc — алгоритмдік және language — тіл) — ЭЕМ-мен шығарылатын есептердің алгоритмін бірмәнді түрде жазуға арналған жасанды тіл. Ол белгілер(символдар) жиынтығынан (Алгоритмдік тіл алфавитінен), синтаксистік ережелер мен семантикалық анықтамалардан құралған. Алгоритмдік тілдің негізгі белгілері латын не орысалфавиттері әріптері, қандай да бір таңбалар мен шартты белгілер болуы мүмкін. Сөздер, сөз тіркестері (фразалар, сөйлемдер) , кестелер мен кестелер жүйесі Алгоритмдік тілдің құрылымы болып табылады. Түсіндіру ережелері ЭЕМ-де аппараттармен жүзеге асырылатын Алгоритмдік тіл машиналық тіл деп аталады. Алгоритмдік тіл табиғи тілден бірмәнділігі мен айқындылығы жағынан ерекшеленеді. Есептеу машинасына Алгоритмдік тілін пайдаланғанда бағдарламалау мен машина жұмысын үйлестіретін арнайы бағдарламалаушы —процессор қолданылады. Ол бағдарламаны енгізу, машиналық, синтаксистік, семантикалық талдаулар, формальды қателерді анықтау, бағдарламаны орындау т.б. жұмыстарды атқарады. Алгоритмдік тілдің бірнеше түрі бар. Олардың кейбіреулері ғана (мыс., алгол, кобол, лисп, Пл/1, Фортран, Паскаль т.б.) кең тараған.

ЭЕМ-дер пайда болғаннан кейiн оларға сәйкес келетiн бағдарлама керек болды. ЭЕМ әр түрлi жаңа есептердi шешуiне байланысты бағдарламалық қамсыздандыру да дами түстi.

Бiр мәселенi компьютерде шешу үшiн оның алгоритмiн жасап, бұл алгоритмдердi компьютер түсiнетiн нұсқаулар және заң-ережелер негiзiнде жазуымыз керек болады. ЭЕМ-де есептердi шешу үшiн қарапайым бағдарламаларды құрып бiлудiң өзi компьютерлiк сауаттылықтың бiр бөлiгi болып саналады.

Бағдарлама дегенiмiз –бұл компьютер орындайтын командалар жиынтығы. Басқаша айтқанда, алгоритмдi машина түсiнетiн тiлде жазу.

ЭЕМ көмегімен есептерді шешу үшін бағдарламалық тіл қажет болды. Машиналық кодпен бағдарламалау деп нақты алгоритмді машиналық бұйрық тілінде сипаттауды айтады. Программистер машиналық операциялардың барлық кодтарын, олардың қолдану ерекшеліктерін және оларды сақтайтын жадының нақты ұяшықтарының адресін білу керек. Мұндай бағдарламаларды құру кезінде өте қиын болды. Сондықтан, программистер өздерінің жұмыстарын жеңілдету үшін машиналық кодтарға символдық аттарды аударатын тіл ойлап тапты. Бір сөзге сәйкес келетін екілік кодты есте сақтағаннан көрі, сол сөздің өзін есте сақтаған оңай. Символдық белгілермен жұмыс істейтін бағдарламаларды ассемблер деп атайды. Мұндай машиналық бағдарламалық тілдер төменгі деңгейдегі тілдерге жатады.

1955ж. ең бірінші жоғарғы деңгейдегі тіл пайда болды. Мұндай тілде жазылған бағдарламалар жеке машиналар бұйрықтарының жиынтығынан емес,операторлар деп аталатын ірі элементтерден тұрады. Осындай тілдер алгоритмді сипаттауға бағытталған. Сондықтан, олар алгоритмдік тілдер деп те аталады. ЭЕМ тек машиналық тілді түсінетін болғандықтан алгоритмдік тілде жазылған бағдарлама орындалар алдында транслятор деп аталатын арнайы бағдарлама арқылы машиналық тілге аударылады. Translator ағылшын тілінен аударғанда “аудармашы” дегенді білдіреді. Трансляторда бағдарламадағы алгоритмдік тілдің барлық ережелері және оны машиналық тілге аударатын құрылғы енгізілген. Транслятордың екі түрі бар:

1) Интерпретатор (Interpretation) – бағдарламалау тілінде берілген бағдарламаны аудара отырып орындау әдісі.

2) Компилятор (Compile-собирать) – бағдарламаның барлық мәтіндері аударылып, жинақталғаннан кейін орындалатын әдіс.

Ең алғашқы алгоритмдік тіл 1955 ж. пайда болды. Ол Фортран тілі. Ол ғылыми-техникалық және инженерлік есептерді шешуде қолданылды. Фортранды (Formula translator ағылшын сөзінің алғашқы буындарынан құрылған – формулалар аудармасы) Джон Бэкусаның басқаруымен IBM фирмасының қызметкерлері құрды. Көп жылдар өте келе Фортранның көптеген нұсқалары пайда болды. Осы тілмен көптеген тілдердің кітапханасы жазылды.

1960ж. Алгол (Algoritmic language – алгоритмдік тіл) пайда болды. Бұл тіл де ғылыми жұмыстарға арналды және соңғы тілдердегі блоктық құрылым түсінігі енгізілді.

IBM фирмасыныңі қолдауымен Кобол (Cobol ағылшынның Comnon business oriented language – жұмысқа бағытталып жалпы қабылданған тіл) тілі пайда болды. Ол экономикалық есептерді шешуге, ақпараттарды өңдеуге арналған.

1961ж.американдық профессор Джон Маккарти “ЛИСП” (List procssing language – тізім өңдеу тілі) бағдарламалау тілін ойлап тапты.

1965ж. Бейсик тілі пайда болды.

1967-1968жж. PL/1 (Programming language – бағдарламалық бағытталған әмбебап тіл) бағдарламалау тілі IBM фирмасында пайда болды. Бұл тіл қуатты, қиын тіл. Ол жоғарғы оқу орындарында, ғылыми зерттеу орталықтарында қолданылды.

1970ж. Никлаус Вирт Цюрих политехникалық университетінде Паскаль тілін ойлап тапты. Бұл тіл бағдарламаларды үйренуге жақсы бағытталған және қазіргі заманғы ЭЕМ-де әртүрлі есептерді тиімді шешуге мүмкіндік береді.

1973ж. Франциядағы Люммин университетінің Колмероэ және басқа да ғалымдары “Пролог” (Prolog-programmation en logique – логикалық бағдарламалау) бағдарламалау тілін ойлап тапты

1980ж. Ада бағдарламалау тілі пайда болды. Бұл тіл ағылшын поэты Лорд Байронның қызы, есептеуіш техника тарихындағы алғашқы программист Ада Лавлейс атына берілді. Ада тілі американың қорғаныс министрінің сұранысы бойынша әмбебап бағдарламалау тілі ретінде Францияда құрылды. Ол ең жаңа, қуатты бағдарламалау тілі болды. Оны Паскаль мен Алгол-68 тілдерінің ортақ қасиеттерінен құрған және ол қосымша қаситтерге де ие.

2, Алгоритмдік тіл (ағылш. algorіtmіc — алгоритмдік және language — тіл) — ЭЕМ-мен шығарылатын есептердің алгоритмін бірмәнді түрде жазуға арналған жасанды тіл. Ол белгілер (символдар) жиынтығынан (Алгоритмдік тіл алфавитінен), синтаксистік ережелер мен семантикалық анықтамалардан құралған. Алгоритмдік тілдің негізгі белгілері латын не орыс алфавиттері әріптері, қандай да бір таңбалар мен шартты белгілер болуы мүмкін. Сөздер, сөз тіркестері (фразалар, сөйлемдер) , кестелер мен кестелер жүйесі Алгоритмдік тілдің құрылымы болып табылады. Түсіндіру ережелері ЭЕМ-де аппараттармен жүзеге асырылатын Алгоритмдік тіл машиналық тіл деп аталады. Алгоритмдік тіл табиғи тілден бірмәнділігі мен айқындылығы жағынан ерекшеленеді. Есептеу машинасына Алгоритмдік тілін пайдаланғанда бағдарламалау мен машина жұмысын үйлестіретін арнайы бағдарламалаушы — процессор қолданылады. Ол бағдарламаны енгізу, машиналық, синтаксистік, семантикалық талдаулар, формальды қателерді анықтау, бағдарламаны орындау т.б. жұмыстарды атқарады. Алгоритмдік тілдің бірнеше түрі бар. Олардың кейбіреулері ғана (мыс., алгол, кобол, лисп, Пл/1, Фортран, Паскаль т.б.) кең тараған



5 сурак

Деннис Ритчи жазған Си тілінің таралу себебі: салыстырмалы түрде «төмен деңгейлі» тіл, сондықтан алгоритм жұмысының әрбір бөлімін бақылау мүмкіндігі бар және жоғары деңгейлі тілдер принцптері енгізілгендіктен, нақты бір компьютердің архитиктурасы ерекшелітерінен тәуелсіздігін қамтамасыз ету мүмкін болды. Жоғарғы деңгейлі тілдерден Си тілінің ерекшелігі: - операторлар түрі өзгеше; - көрсеткіштер жиі қолданылады; - басқа тілдерге қарағанда синтаксикалық ережелері аз, нәтижесінде компилятор тиімді жұмыс жасау үшін 256 Кб оперативті жады жеткілікті; - қызметші сөздерге қарағанда операторлар мен олардың комбинациялары көп; - алғашқыда Си тілінде 27 қызметші сөз ғана болған. Кейін ANSI Си тіліне және Microsoft C тіліне қызметші сөз қосылды, жалпы саны шамамен 50; - Көп программалау тілдерінде бар функциялар Си тілінде жоқ; - Си тілінде қосалқы енгізу шығару функциялары, математикалық функциялары және жолдармен жұмыс жасау функциялары жоқ, бірақ сол функциялардан және басқа функциялардан тұратын жеке кітапханалардан алу мүмкіндігі қарастырылған; - мәліметтер типін бақылау жеңіл, яғни программаның бір жерінде айнымалыны символ түрінде , екінші бір жерінде осы символдың ASCII коды ретінде қарастыруға болады; - Си тілінде қазіргі тілдері секілді барлық басқарушы конструкциялары бар(For, if / else,….); - Cи тілінде модулдік программалауға болады, яғни программаның әртүрлі бөлігін жеке копиляциялауға болады; - Ассемблер тілінде жазылған ішкі программаларды шақыруға болады; - көрсеткіштер яғни жады аймақтарынан берілген адрес бойынша қарау программаны орындау жылдамдығын арттырады. Көрсеткіштер көп тілде қолданылады, ал көрсеткіштерге арифметикалық амалдар тек Си тілінде қолданылады. - Си тілінде барлық массивтер бір өлшемді, бірақ Си тілінде бір өлшемді массивтерден тұратын конструкциялар бар, яғни көп өлшемді массивтер құрылады; - тек қажетті кітапханалар шақырылатын болғандықтан жады тиімді қолданылады; - басқа тілдердегідей қосалқы функциялар; - көптеге мамандандырылған функциялар кітапханаларының жинытығы бар. Кемшілігі: - Си тілінде мәліметтер типі қатаң қадағаланбайды, сондықтан Си тілінде тәжірибелі программист байқағанмен жаңа үйренуші байқамайтын айнымалы мәндеріне өзгерістер болуы мүмкін. 36 Мысалы, бір өрнекте (=) меншіктеу операторы бірнеше рет қолданылуы мүмкін. Сондықтан нәтижесінің типі түсініксіз және қиын анықталады. Бірақ оны қолдану арқылы тілдің қуаты арттырылған. С++ тілі Си тілінің толықтырылған, яғни объектілі бағытталған программалау(ОБП) құралдарымен толықтырылған жиыны деуге болады. Си және С++ тілдерінің айырмашылығы: -құрылымдар мен класстар аттары мәләметтер типтерінің аттары болып табылады. С- де класс түсінігі жоқ.



С/С++ тіліндегі программаның жалпы құрылысы

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

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

Программа құрылымы: Кез-келген программа комментарийден басталады. Комментарийді Си тілінде «/*» , «*/» белгілеріне алынып жазылған блок түрінде беруге болады. Содан кейін препроцессор дерективасы орналасады. Препроцессор директивасы берілгенде кітапханалық файлда –тақырыптық файлда орналасқан кодты программаға қою нұсқауын береді. Мұндағы .h кеңеймелі файлдар тақырыптық файлдар деп аталады. Тақырыптық файлдарда әртүрлі тұрақты мен таулар сипатталады. Функциялар прототиптері сақталады. Препроцессор дерективасынан кейін main функциясы сипатталған бөлігі

орналасады. Main функциясы барлық программада міндетті түрде болуы тиіс, одан программа орындалуы басталып, Return инструкциясы шақырылғанда аяқталады. Main функциясының денесі фигуралық жақшада орналасады. Си тілінде барлық айнымалы оған программаның қандайда бір бөлігінен сілтеме жасалғанға дейін сипатталуы тиіс.

4.5. Меншіктеу операторлары және шартты өрнек

Біріктірілген меншіктеу операторы және өрнек.

Біріктірілген бинарлық операторға <ор>= меншіктеу операторы сәйкес келеді, мұндағы <ор> – мына операторлардың бірі: +, -, *, /, %, <<, >>, &, ^, | бола алады. Мына жазба < өрнек1> ор = <өрнек2> төмендегі өрнекпен эквивалентті: <өрнек1> = <өрнек1> ор <өрнек2> .

Мысалы,

x+=5; {x=x+5 өрнегімен эквивалентті }

y*=2; {y=y*2 өрнегімен эквивалентті }

Шартты өрнек. «?=» тернарлық операторының көмегімен шартты өрнек құруға

болады. Жалпы жазылу форматы мынадай:

«өрнек1» ? «өрнек2» : «өрнек3»

Алдымен «өрнек1» есептелінеді, егер оның мәні нөлге тең емес болса, яғни

ақиқат мән қабылдаса, онда «өрнек2» есептелінеді де оның мәні шартты өрнек мәні

болып табылады, әйтпесе «өрнек3» орындалады да, соның мәні қабылданады.

Мысалы, z=(a>b)?a:b өрнегі z=max(a,b) математикалық өрнегін программалауда

қолданылады.



7билет

Таңдау операторы

If шартты операторы есептеу процесін екі бағытта тармақтау үшін қолданылады.Алдымен арифметикалық типте немесе нұсқауыш типте болатын өрнек есептеледі.Егер ол 0 ге тен болмаса , 1-ші оператор,кері жағдайда 2-ші оператор орындалады. Осыдан кейін шартты оператордан кейін орналасқан келесі операторлар атқарылады.Тармақтардың else түйінді сөзінен басталатын бөлігі болмауыда мүмкін.



1-мысал if(a++) b++ ; if операторында шартты өрнектер ретінде сәйкесе қатынас операторлары қолданылатынына қарамастан,бұлай істеу міндетті емес екендігін білдіреді.

2-мысал if(b>a) max=b ; else max=a

Операторларға ұқсас конструкцияларды шартты операция түрінде жазған ыңғайлы және көрнекірек болады,мұндағы мысал үшін: max=(b>a)? b:a;

Swich операторы(ауыстырғыш)операторы есептеу процесіне бірнеше бағытта тармақтауға арналған.Оператордың орындалуы Swich сөзінен кейін тұратын өрнекті есептеуден басталады(ол бүтін сан түрінде болуы керек) Ауыстырғыштан шығу break ,return операторының көмегімен орындалады

8билет

Қайталану операторы басқару операторы с++ тілінде программа опреаторларының (break,continue,goto)бекітілген табиғи орындалу ретімен өзгертетін 4оператор бар: break-циклден шығу операторы

Continue-циклдін келесі итерациясына көшу операторы

Goto- шартсыз көшу операторы

Return-функциядан негізгі программаға қайту оралу операторы

Goto операторы шартсыз көшу операторын қолдану төмендегі 2 жағдай а)бірнеше қабаттасқан циклдерден немесе ауыстырғыштан тұратын программа ішінен одан кейінгі бөліктерге (төмен қарай) мәжбүрлі түрде шығу керек болған жағдайда; б)функцияның бірнеше жерінен көрсетілген 1 орынға көшу (мысалы,функциядан шығу алдында әрқашанда кез келген 1 әрекеттер тізбегін орындау керек болса) break операторы цикл тұлғасынан немесе if.swich операторларының ішінен программаның одан кейінгі бөлігіне бірден көшуді жүзеге асыру үшін қолданылады.Return операторы функциядан қайтып оралу операторы Return функцияның орындалуын аяқтап,басқаруды оның шақырылу нүктесін береді.оператордың жазылуы: Return[өрнек]; өрнек скаляр типте болуы керек. Continue операторы циклдың келесі итерациясына көшу операторы continue цикл тұлғасындағы (оның соңына дейінгі) қалған барлық операторларды аттап өтіп,басқаруды циклдың келесі интерацияның басына береді.

9билет

Бір және көп өлшемді массивтер

Бір өлшемді массивтерден басқа көп өлшемді соның ішінде 2 өлшемді массивтер көп қолданылады. 2 өлшемді массивтер матрица деп аталады.Көпөлшемді жиымдар оның әрбір өлшемін жақшалар ішіне жазу арқылы беріледі int matr[6][8]

Операторы 6жолдан және 8бағанадан тұратынын 2өлшемді жиымды сипаттайды көпөлшемді жиымды инициалдау кезінде ол жиымдардан құралған жиым ретінде беріледі де оның әрбір жиымы өз жүйелі жақшаларымен қоршалып тұрады(мұндағы сипаттау кезінде өрнектің сол жағында жиым өлшемдерін көрсету міндетті емес)

Int mass2[] [2]={{1,1}, {0,2},{1,0}};

Int mass2[3] [2]={1,1,0,2,1,0};

10 сурак

Массив дегеніміз не? Массив қызметтері және сипатталуы

Массив дегеніміз - бір атпен аталған, әртүрлі индекстелген бір типті

элементтер жиынтығы.

Қасиеттері:

Массивтің қасиеттерін анықтайтын 4 негізгі принципі бар:

-массивте элементтер деп аталатын мәндер сақталады;

-массивтің барлық элементтері бір типті болуы керек;

-жадыда массивтің барлық элементі тізбектеліп орналасады және бірінші

элемент адрестің нөлдік индексін білдіреді;

-массив атауы тұрақты болып табылады және массивтің бірінші элементінің

адресінен тұрады.

Mассивтің сипатталуы:

<элементтің типі><массив аты> [<элементтер саны>];

Мысалы, int a[12]; {12 элементтен тұратын массив}

char s[20]; {20 элементтен тұратын массив}

#define KOL 10 {}

int [KOL];

6.2. Массивтің инициялизациялануы

Массивті инициялизациялау 3 тәсілмен анықталады:

- массивті құру барысында;

- массивті құру барысында бастапқы тұрақтыларды көрсету;

- программаның орындалу барысында;

- құру барысында массивтің бастапқы мәндері берілмесе, онда автоматты түрде

массив 0-мен толтырылады(NULL). 59

Мысалдар:

int a[3]={-1,0,1};

char buk [ ]={‘A’,’.’,’*’,’-‘,’!’,’i’,’u’};

float x[4]={0,1.5,7.55,-3.3E1,0,1.1457890,-1.1};

Массив элементінің саны мәндер санына сәйкес келмесе (3-ші мысал) көпшілік

компиляторда қате хабарланады, ал кейбірі автоматты түрде өлшемін үлкейтеді

немесе жетпесе (мән) 0-мен толықтырылады.

2-ші мысалда массивтің элементтер саны мәндері санына қарай анықталады.

6.3. Массив элементтерімен жұмыс жасау

Массив элементтерін қолдану үшін квадрат жақшада бүтін мәнді индекс

көрсетіледі. Мұндағы индекс массивтің базалық адресіне қарағанда элементтің

орнынының ығысу адресін анықтайды. С/С++ машиналық-бағытталған тіл

болғандықтан массивтің бірінші элементті 0-ші индекстен басталып нөмірленеді,

себебі массивтің бірінші элементті оның базалық адресінің басынада орналасады да

бірінші элементтің адресін алу үшін ешқандай ығысу жасалудың қажеті жоқ.

Мысалы, 5-ші элементтің адресін алу үшін базалық адрестен бастап, 4 элементке

ығысу орындалуы тиіс.

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

жақшада оның элементтерінің саны көрсетіледі, ол өз кезегінде жадыдан бөлінетін

ұяшықтар санын анықтайды.

Мысалы:

Int imas[6];

Сипатталуына сәйкес анықталған массивтің элементтерінің саны -6 және элементтері 0-ден 5-ке дейін индекстелгендіктен мынадай қолданылу жолы дұрыс болмайды:

Imas[6]=3667;

Массив элементін қолданғанда индекс ретінде үш түрлі мән беруге болады:

1. Сандық тұрақты.

2. Айнымалы.

3. Өрнек.

Мұндағы мәндердің нәтижесі массивтің сипаттамасындағы мәліметтерге

сәйкес логикалық корректі сан болуы тиіс.

Қолданылу мысалдары:

#define K 8

int imas[k]; /*8 элементтерен тұратын массив сипаты */

int w=6; /* w бүтін типті айнымалысының сипаты*/

imas[3]; /*массивтің 4-ші элементті */

imas[w]; /* массивтің 7-ші элементі */ 60

imas[k-6]; /*массивтің 3-ші элементі */

Индекс массивтің жадыдан қанша байт орын алатынынан тәуелсіз тікелей реттік нөмініне сілтейді.

6.4. Символдық массивтер

Егер программада жолдық мәліметтерді өңдеу қажет болса, онда оны символдар массив ретінде қарастыру қажет. Мұндай массивте жолдың әрФ элементі үшін жеке ұяшықтар бөлінеді және ең соңғы элементі ретінде жолдың соңы таңбасы (\о) қойылуы тиіс.

Символдық массивті енгізу және инициализациялау мысалдарына

программа келтірейік:

#include

main ()

{

char pan[12], razm[5];



static char opr[11]=”информация”;

razm[0]=’б’;

razm[1]=’а’;

razm[2]=’й’;

razm[3]=’т’;

razm[4]=\o’;

printf(“\n информатика сөзін енгізіңіз:“);

scanf(“%s”, pan);

printf(“\n %s \n”, pan);

printf(“\n %s \n”, razm);

printf(“\n %s \n”, opr);

}


Көріп отырғанымыздай символық массивке енгізілетін жолдық мәннің ұзындықтары бірге арттырылып алынып отыр. Ол орын жолдың соңы таңбасына

арналады. Инициализациялау барысында ол таңб арнайы қойылады.

6.5. Көп өлшемді массивтер

Бір типті элементтер жиынтығын өңдеуде олардың жадыда санына қарай және элементтерін қолдану моделіне қарай анықтап сипаттау мүмкіндігі бар. Соған байланысты массивтің өлшемі анықталады деп есептеледі. Демек, индекстерінің 61

көрсетілуіне қарай бір өлшемді, екі өлшемді т.с.с. массивтерді анықтауға болады. Екі немесе одан да көп өлшемді массивтеркөп өлшемді массивтер деп аталады. Сәйкес өдшемде сипаттау үшін квадрат жақшаларда олардың өлшемдері көрсетіледі. Мысалы, екі өлшемді массив екі квадрат жақшамен анықталып төмендегідей сипатталады: float massiv[3][4]; Мұндағы massiv массив атауы, ал массивтің 12 элементі бар, массив 0-ден 2-ге дейін индекстелетін 3 жолдан және 0-ден 3-ке дейін индекстелетін 4 бағаннан тұрады.

Пратикада массив өлшемі көбінесе үш өлшемдіден аспайды.

Масиивті екі өлшемді түрде сипаттағанмен ол ЭЕМ жадысында тізбектелген бірдей типті мәндер тізбегі ретінде орналатырылады да, массивтің алғашқы элементінің орынының адресі-базалық адресі массив атуына беріледі. Жалпы массив атауы - өз бетінше көрсеткіш болып табылады. С/С++ тілдерінде праткиада математикалық моделі матрица түрінде анықталатын есептерді қарастырғанда көп өлшемді массив құру міндетті емес. Оны

бір өлшемді массив түрінде ұйымдастыруға болады. Ал, элементтерін ретімен қолдану үшін оның реттік нөмірін сәйкес анықтау формуласын дәл анықтаса жеткілікті. Себебі компьютерде көп өлшемді массив түрінде сипатталғанымен бірдей элементтер тізбегі басқарылады. Мысалы, a[3,4] массивінің a[і,j] –ші элементін қолдану ретін қарастырайық. Ол үшін 12 элементтен тұратын бір өлшемді массивті төмендегідей сипаттайық: Float a[12];

Ал, a[і,j] –ші элементін мына түрде өрнектеледі - a[i*4+j].

Мысалы, 2 жолы мен 3 бағанының қиылысуындағы элементті қолдану үшін оның a[1][2] индекстерімен анықталатыны белгілі. Ал жоғарыдағы a[i*3+j] өрнегіне қоятын болсақ a[1*4+2]=a[6] болады. Бұдан екінші жолдың 3-ші элементті тізбекте 7-ші екендігін, ал оны қолдану үшін массивтің базалық адресіне қарағанда 6 элементке жылжу қажеттігін аңғару қиын емес.




12 билет

Статикалық шамалар,inline функциялары

Кластың ішінде анықталған фукциялар inline функциялары


16 билет

Ерекше жағдайларды өндеу Ерекше жағдай немесе аластама аппаратураны дұрыс қолданбаудан туындайтын көзделмеген және төтенше жағдайлардың пайда болуы.мысалы,0 бөлу немесе жадының жоқ адресіне хабарлау.с++ тілінің аластамалары құрал-жабдықтардың қателіктері немесе программа узілістерін өңдеу,мысалы ctrl+c батырмаларын басуды өңдеу сияқты асинхронды оқиғаларды өңдеуді қолдамайды.Аластамалар есептеу процесін логикалық түрде 2 бөлікке бөлуге мүмкіндік береді,олар-төтенше(аноттық)жағдайды анықтау және оны өңдеу.Аластамалардың 1 артықшылығы –шақырушы функцияға қате туралы ақпаратты беру үшін қайтарылатын мәнді;параматрлердің немесе ауқымды айнымалыларды қолданудың қажеті жоқ,сондықтан функцияның интерфейсі кеңейтілмейді.

17 билет Динамиқалық бөлінетін жады


Win32 есте сақтау қабілетін үймелер сияқты сақтайды. Процесте бірнеше үймелер болуы мүмкін. Солардан жазаушы жадыны бөліп

шығарады. Көбінесе бір үймежеткілікті, бірақ астында келтірілген жағдайларға қарап олар көп үймемен жұмыс жасайды.Егерде тек қана бір үйме жеткілікті болса, онда жадымен басқаруға С кітапханасының қызметін қолданыңыз(malloc, free, calloc, realloc).Үймелер Win32-гің объектісі болып табылады. Сондықтан олардың дискрепторлары бар. Жадыны бөлу кезінде үйме дискрепторын білуіңіз қажет.HANDLE GetProcesssHeap(VOID) 
Қайтарылатын мәні: үйме процессінің дискрепторы; NULL егер сәтсіз жағдайда.
Бұл жағдайда қатені көрсету үшін Create File қызметіндегі сияқты қайта INVALID_HANDLE-ға емес, ал NULL-ға ораламыз. Сонымен қатар бағдарламалар ерекше үймелер жасай алады.Бұл бөлек құрылымдардың сақталуына арналған бөлек үймелерді қажет ететін жағдайларға жатады. Келесіде бөлек үймелердің артықшылықтары суреттелген. 
Тарату әдеттілігі. Сол үймеге сақталған жадыдан көп ешбір ағын ала алмайды. Көбінесе бағдарламамен шақырылған жадының кемуі бос және қолданылмайтын мәлімет элементі тек қана процесс ағынына ғана әсеретеді. 
Көпағындық тез әрекеттер. Әрбір ағынға бөлек үймелерді беру арқасында айтарлықтай ағындар арасында жарыс азайғандықтан тез әрекетті жоғарлатады.

Сақтау эфектісі. Бекітілген көлемді мәләметтер элементтерін кіші үймешікте сақтаудың маңызы әртүрлі көлемді көп элементтерді бір үлкен үймеде сақтаудан көбірек болып табылады.Сонымен қатар жадыны үзінділеу азаяды. Тағы да, боліс, әрбір апғынға айтарлықтай үймелер синхронизациясын оңайлатқан үшін оған қосымша ұтыс береді.

Жадыны босату нәтижелігі.Сол жерде орналастырынған бүкіл үймелер мен мәліметтердің құрылымдары тек қана функция шақырушы мен босатыла алады.Сонымен қатар үйменің бүкіл бөлінген, бірақ жоғалтылған жадысы босатылады.Осылардың құндылық артықшылдықтары қосымшанің тәуелділігінде өзгері және көптеген бағдарламашылау үймелер процесімен және C кітапханасымен ғана қолданады.Қалай болған жағдайда да осы екі қызмет үймелерді құрып және жояды.Үймлердің бастапқы нөл бола алатын және әрқашан беттердің еселі сан мөлшеріне дейін дөңгелектенеді.Тағы алғашқы белгіленген үйменің физикалық жадысының көлемін анықтайды.Бағдарламаның бастапқы өлшемінің шекарасынан шығып кеткенде қосымша беттерді максималды мәнге дейін автоматты түрде белгілейді.Файл көшіргіш ішек қойылған қор болғандықтан, кейін қалдырған үйме мөлшері алдын ала белгілі белгілі болмаған оқиғаларға ыңғайлы болады. DwMax imum Size айнымалысының нөлдік мағынасы үйме мөлшерінің динамикалық үлкейінің шегін анықтайды. Үйме процессі сол сияқты динамикалық өседі.
HANDLE HeapCreate(DWORD f1 Options, 
SIZE_T dwInitialSize, SIZE_T dwMaxixumSize);
Екі мөлшер аймағы DWORD емес, ал SIZE_T типіндей болады. SIZE_T типі компилятор жалаушаларына байланысты 32- разрядты немесе 64- разрядты белгісіз бүтін арқылы WIN32 немесе WIN64 анықталады. SIZE_T типі WIN64-ің мүмкіндіктерін қамтамасыз ету үшін еңгізген болатын. FlOptions айнымалысы екі жалаушаның комбинациясы болып табылады.HEAP_GENERATE_EXEPTION – сонымен қатар белгілеудің сәтсіз мүмкіншілігін шығарулар деп атайды. Олар құрылысты өңдеушімен өңделеді(StructuredExceptionHandler- SEH). HeapCreate функциясы өзімен өзі шығаруды шақырады; егер де осы жалауша орнатылған болса, ол сәтсіз жағдайында HeapAlloc сияқты функциясының шығаруын шақырады. HEAP_NO_SERIALIZE-Осы жалаушаның орнатуы кейбір кездерде тез жұмыс істеудің кішкене үлкеюін рұқсат етеді. DwMaximumSize туралы бірнеше сөз айтып кетейік.Егер де DwMaximumSize- дің мәні 0-ге тең болмаса, онда виртуалды мекен-жайлы аймақ бүкіл белгіленген аймақты белгілей алмаса, онда ол ерекшелінеді. Бұл үйменің максималды мөлшері, оны артпайтын деп атайды. Басқа жағынан қарасақ, егер де DwMaximumSize – дің мәні 0-ге тең болса, онда . Бұл шекара қолайлы иртуалы мекен-жайлы ауданымен белгіленеді. Соның жартысы басқа үймелерге және сақтау файлының аймағына беріледі.Бүкіл үймені жою үшін Heap Destroy қызметі қолданылады, ал Close Handle қызметі бәрін керек етпейтін дескрипторларын жоюға қолданады.BOOL Heap Destroy (HANDLE hHeapt);hHeaptайнымалысы HEAP Create қызметімен құрылған үймеге көрсету керек. Абайлаңыз үйме процесін жойып қойып жүрмеңіз (Get Process HEAP қызметімен алынған). Үймелерді жою сақтау файлында виртуады жадыда және физикалық жадыда кеңістікті боматады.Үймелерді жою – бұл тағы да әр жеке элементтердің қажеттіліксіз жоюын тез босатуыдың әдісі болып табылады, бірақ та Си ++ объектілерінің экземплиярлары жоюылмайды, сондықтан олардың деструктурасы шақырылмайды. Үйме жоюының арттықшылыққатары болмайды. 
1.Құрылымда аралап шығу элементтерімен арналған кодты жазу қажеттілігі жоқ.2.Әрбір бөлек элементті босату қажеттілігі жоқ.3.Жүйе бүкіл мәлімет құрылғысы бір жүйелік шақырумен бостылғанша үймеге көмек беруге уақыты берілмейді.

18 билет

Динамикалық массивтерді қолдану және босату.

Динамикалық жиымдар new операциясының көмегімен құрылады,мұнда оның типі мен өлшемін көрсету керек,мысалы:int n=100;float*p=new float[n];Динамикалық жиымдар құру кезінде инициалдауға болмайды және олар 0 ге теңестірілмейді.Комп.жадын бөлу және босату тәсілдері сәйкес келмеген жағдайда тундайтын нәтиже белгісіз б.т.Delate операциясында жиын өлшумі кқрсетілмейді,бірақ тек жақшалар міндетті түрде көрсетілуі тиіс.

19 билет

  1. С++ тілінің математикалық функциялары.

21 билет


Обьектіге бағытталған программалау.Класстар.Класс әдістері мен шамалары.

Обьектіге бағытталған программалау-обьектілердің көмегімен бағдармаларды жобалау,жазу.

Обьект деп-мәліметтер және олармен жұмыс істеу әдістерінің жиынтығы аталады.

Обьектілі бағытталған бағдармалаудың негізгі принциптері:

1.Полиморфизм.2.Инкапсуляция.3.МұрагерлікПолиморфизм-1иерархиядағы обьектілер үшін бір атаумен берілген әдістерді қолдану мүмкүндігі.Инкапсуляция-1 обьектілік типте мәліметтерді біріктіру.Мұрагерлік -1класстың мінездемелерін баска класс арқылы қолдану мүмкіндігі.Класс-берілгендер мен оларға әрекет жасайтын арнайы тип.Ол өріс,әдіс және қасиеттерден тұрады.Класстың данасы болып обьект табылады.Класс әдістері мен шамалары.public(ашық)шамалар әдістер.Protected(қорғалған)мұрагерлікпен деген сиякты.Private(меншікті жабық)Классты құрушы әдіс конструктор деп аталады.Конструктордың аты класстың атымен бірдей болу керек .Класс түріндегі айнымалыны жоюшы әдіс диструктор деп аталады.class A{public

Int x,y

A( ){x=2,y=3}

A(int b){x=b;y=b+1;} };

Voit main( ) {A p,q(1);cout<


Класс әдістері класстан тыс анықтауға болады.Класс адресіне нұсқаушы болады this д.а. class-әдістерді,шамаларды біріктіру.class екі сөзбен анықталады.Class=> Private,struct=>public.

22 билет

Класс конструкторы және деструкторы.

Конструктор обьектіні инициалдау үшін қажет және ол құрылған кезде автоматты түрде шақырылады.Қасиеттері:1)Конструктор мән қайтармайды,типті void типті мәнді де конструкторға нұсқауыш алу мүмкін емес.2)Класстың құрамында әртүрлі инициалдау түрлеріне арналғын әртүрлі параметрлі бірнеше конструкторлар болуы мүмкін.(мұндайда асыра жүктеу механизмі қолданылады).3.Параметрсіз шақырылатын констурктор келісім бойынша құрылған констурктор д.а. 4.Конструктор мұраланбайды.5.Конструкторларды const,virtual,static модификаторлары арқылы сипаттауға болмайды.Деструктор –констуркторға карама карсы ұғым.Ол класстың данасын жоюға арналған,яғни жадының обьектіні бұзу және жойылатын обьектімен бос емс бөлігін босату.Обьект көріну аймағынан шыққан кезде деструктор автоматты түрде шақырылады.1)Жергіліті обьетілер үшін –олар жарияланған блоктан шығу кезінде.2)Оқытуды обьектңлер үшін- main функциясынан шығу процессінің бір бөлігі ретінде. 3.Нұсқауыштар арқылы берілегн обьекті үшін деструктор delete операциясын қолдану кезінде тікелей емес түрде шақырылады.Қасиеттері:1.Аргументтері және қайтарылатын мәні болмайды.2.const немесе static ретінде жариялануы мүмкін емес.3.Мұраланбайды.4.Виртуалды болуы мүмкін.

23 билет


Аргументсіз конструктор.Көшіруші конструктор.

Көшіруші(көшірме)-бұл жалғыз параметр ретінде дәл осы класстың обьектісіне сілтемені қаблдайтын конструктордың арнайы түрі.T::T(constT&){…/*констурктор тұлғасы*/}мұндағы Т-класстың атауы.Егер класстың құрамында ешқандай конструтор болмаса ,компилятор класстың құрамына аргументсіз конструкторды өзі қосады.Аргументсіз конструктор бар деп есептейді.


24 билет

Бір немесе екі орынды амалдарды қайталап анықтау.

1.С++ қайталанып анықталатын амалдар + , - , * , /, %,&,+,=,*,=,<,>,>>,<<,++,--,->,[ ] new delete

Түр.Класс аты:: operator # (аргументтер)


  1. 1)орынды амал #a

a operator #( ) {---}

operator # (a) {---}

2) Орынды амал а#b

A operator # (b) {---}

Operator # (a,b){---}

25 билет

Статикалық мүшелер. Жолдас функциялар.

Класстың статикалық мүшелері класс айнымалысынан бөлек анықталады.Жалпы программалауда глобальді шамалар түрінде анықталады.Класстың анықтамасында класстың құрамына кірмейтін функцияны осы класстар жолдас функцияны көрсетуге болады.Жолдас функция класстың кез келген шамалары мен әдістерін қолдана алады.

26 билет

Туынды класстар. Мұрагерлік.

Кез келген анықталған класстан туынды класс алуға болады.Туынды класс аталық класстың кеңейтілуі немесе өзгертіуі болады.Туынды класс аталық кластың барлық мүшелері болады.Туынды класстың констуркторы аталық класстың констукторын шақырады.Егер туынды класстың конструкторда аталық класстың конструкторы анық қолданылмаса аталық класстың аргументсіз констуктор шақырылады.Мұрагерлік (аталық класс-figure,туынды класстар-circle және rec tangle).Мұралау бұл- ұрпақтары өздерінің ата тектерінің барлық қасиеттерін мұралайтындай,оларды өзгерту және жаңа қасиеттер қосу мүмкіндіктеріне ие болатындай класстар иерархиясын құру мүмкіндігі.Мұралау кезінде қасиеттер қайталап сипатталмайды,сол себепти олпрограмма колемин қыскартады.

27 билет

Виртуалды функциялар.Полиморфизм.

Виртуалды әдісті анықтау үшін virtual спецификаторы қолданылады.Виртуалды әдістерді сипаттау және пайдалану ережелері:егер базалық класста әдіс виртуалды ретінде анықталған болса ,туынды класста дал осындай атаумен парметрлер жиынтыгынын аныкталган әдіс автоматты турде виртуалды болады,ал параметр жиынтыгы артурли болса ,адис карапайым болады.Виртуалды адис мураланады,ягни оларды класста кайта аныктау тек айрыкша арекеттерди тагайныдау кажет болганда орындалады.Виртуалды адисти static модификаторы аркылы жариялауга болмайды,бирак олар достас адиси ретинде жариялануы мумкин.Полиморфизм –аталык класска нускаулар аркылы virtual функция колдануга туынды класста кайталап аныкталган сайкес функцияларды колдану жане шакыру.

28 билет


Абстракт класстар.

Кем дегенде бир таза виртуалды адиси бар класс абстрактылы деп аталады.Абстрактылы класстар туынды класстарда нактылауды талап ететин жалпы угымдарды тагайындау ушин кажет.Абстрактылы класс баска класстар ушин тек базалык класс ретинде колданыла алады-абстратылы класс обьектилерин куруга болмайды,ойткени таза виртуалды адисти тикелей немесе жанамалы турде шакыру олардын кезиндеги кателиктерге алып келеди.Абстрактылы классты аныктау кезинде келеси жагдайларды ескеру керек:1.Абстрактылы классты накты турде типтерди турлендиру кезнде параметр типн жане функциянын кайтаратын манини типн сипаттау ушин колдануга болмайды.2.егер инициалдау кезнде уакытша обьект курудын кажети жок болса абстрактылы класска силтемелерди жане нускауыштарды жариялауга руксат берилген. 3.Егер абстрактылы класстар туындаган жане барлык таза виртуалды функцияларды аныктамайтын болса.олда абстрактылы класс болып табылады.

30 билет

Агым класстары.Файлдарды оку жане жазу.

Агым – бул малиметтердин шыккан жеринен кабылдаушысына кез-келген турде тасымалдануына байланысты айтылатын абстрактылы угым.Агыннан малиметтерди оку оны агымнан шыгарып алу деп,ал агымга малимет жазу оны орналастырк не кириктиру д.а.Агын жумыс истейтин курылгылар турлери бойынша оларды стандартты ,файлдык жане тиркестик деп болуге болады.Стандартты агымдар малиметтерди пернетактадан дисплей экранына жиберуге ,ал файлдык агындар сырткы малимет жинактауыштардагы (мысалы магнитик дискдеги) файл мен аппарат алмасуга ал тиркестик агымдар компьютер жедел жадында символдар жиынымен жумыс жасауга арналган.

Файлдык агымдар оку жане жазу.

Әдетте файл ретинде сырткы малимет жинактауышта сакталган белгили бар акпаратты айтады,мысалы,катты немесе иелгиш магниттик дискдеги малиметтер жиыны .

Of stream (const char name int mode =ios out).Конструктордын параметри файлды ашу режимин (тартиби)орнатады.Егер алдын ала келисим бойынша орнатылган ман программалаушынын конилинен шыкпаса онда ios класында аныкталган беттик массалардан олардын баскасын куруга болады.Жазу мен оку агымдык класстардыг сиакты малимет оку жане шыгарып алу операцияларынын комегимен жане класстар адистери аркылы орындалады.




Достарыңызбен бөлісу:
Loading...


©melimde.com 2019
әкімшілігінің қараңыз

    Басты бет

Loading...