Си тіліндегі циклдік алгоритм және циклдік алгоритмді бағдарламау



Батыс Қазақстан инженерлік-технологиялық университеті

КУРСТЫҚ ЖҰМЫС
тақырыбы:
Си тіліндегі циклдік алгоритм және циклдік алгоритмді бағдарламау

орындаған:
тексерген:

Орал, 2012ж.

МАЗМҰНЫ

Кіріспе
1 бөлім. Алгоритм және оның қасиеттері
Алгоритмнің маңызды қасиеттері
Циклдік алгоритм
Циклдік алгоритмдік құрылым
Күрделі циклдар
2-бөлім. Шартты цикл операторлар
Қайталану командалары
Параметрлі For операторы
While операторы
Do-while операторы
Қорытынды
Қолданылған әдебиеттер
Кіріспе

Белгілі бір мақсатқа жету үшін қажетті әрекеттер тізбегі алгоритмдер
аталады. Алгоритм – орындаушы үшін мүмкін болатын әрекеттер тізбегі, ал
программа нақтылы ойланбайтын орындаушылар тілінде жазылған алгоритм.
Әдетте алдымен алгоритм құрылады, содан соң ол программа түрінде жазылады.
Алгоритмнің әр әрекетінің орындалу ережесін кез келген орындаушы бір мәнді
түсінуі қажет. Бұл алгоритмнің бірмәнділік қасиеті болып табылады.
Көптеген есептерде бір формуланы бірнеше рет қайталап, есептеулер жүргізуге
тура келеді. Бұл жағдайда, қайталау алгоритмін қолдану тиімді болады.
Қайталанатын алгоритмдерде программаның белгілі бір бөлігі қандай да
шарттың орындалуына байланысты бірнеше рет қайталанылады. Олар итерациялық
және санаулы болып екіге бөлінеді.
- санаулы қайталану алгоритмі қайталау процесінің саны алдын-ала белгілі
болғанда, Цикл-үшін пайдаланылады;
- қайталану саны алдын-ала белгісіз болған жағдайда итерациялық қайталау
алгоритмін қолданады.
Итерациялық қайталану алгоритмінде Цикл-әзір, Цикл-дейін түрлері
қолданылады. Цикл-әзір құрылымында алдын-ала шарт тексеріледі, шарт
сақталудан қалғанша қайталану денесіндегі командалар сериясы қайталана
береді. Егер шарт басынан сақталмаса, онда қайталану денесінде командалар
сериясы бірде-бір рет орындалмайды. Цикл-дейін құрылымында қайталану
денесі командалар сериясының әр қадамы орындалып барып, шартты соңынан
тексереді де, қайталану денесіндегі командалар сериясы кемінде бір рет
орындалады.
Бір әрекеттің бірнеше рет қайталануы цикл деп аталады. Циклдік алгоритм
үшін, әзір, дейін деп үшке бөлінеді. Математикада,экономикада көптеген
есептерді шығару кезеңінде бір теідеуді пайдаланып, ондағы айнымалының
өзгеруіне байланысты оны бірнеше рет қайталап есептеуге тура келетін сәттер
де жиі кездеседі. Осындай қайталап орындалатын есептеу процесінің белгілі
бір бөліктерін цикл деп атайды. Осы бірнеше рет қайталанатын бөлігі бар
алгоритмдер тобы циклдік алгоритмдерге жатады.Циклдік алгоритмдерді
пайдалану оларды кейіннен программаларда цикл операторы түрінде қысқартып
жазу мүмкіндігін береді.Циклдер қайталану санының алдын ала белгілі және
белгісіз болуына байланысты екітопқа бөлінеді.
Бұл курстық жұмыстың басты мақсаты С++ тіліндегі цикл операторларын
зерттеу, яғни оларды анықтау және есептерде қолдану болып табылады.
Курстық жұмыстың басты міндеттері:
- Циклдік алгоритмдерді есептерде немесе тапсырмаларда қолдану.
- СИ++ тілінде циклдік алгоритмдерді қолданудың әдістерін көрсету.
- СИ++ тілінде циклдік алгоритмнің мүмкіндіктері турары толық мағлұмат
беру.
Курстық жұмыстың құрылымы: курстық жұмыс кіріспеден, екі тараудан және
қорытын мен пайдаланылған әдебиеттер тізімінен тұрады.

1 тарау. Алгоритм және оның қасиеттері
1.1. Алгоритмнің маңызды қасиеттері

Егер сіз берілген есепті шешу үшін қандай да бір программалау тілінде
программа жазғыңыз келсе, онда алдымен есепті шешудің алгоритмін құруыңыз
керек. Алгоритм – математикадағы ең бір іргелі ұғымдардың бірі. Алгоритм
сөзі ІХ ғасырда өмір сүрген, адамдардың квадрат теңдеулерді жүйелей құрып
оны шеше білуге үйреткен ұлы математик Әл- Хорезмидің атының латынша
жазылуы algorithmi сөзінен алынған. Осылайша алгоритм ұғымы математикада
ертеден қолданыла бастағанымен, математикалық теорианың объектісі ретінде
кейбір проблемаларды зерттеуге байланысты ХХ ғасырдың 30-шы жылдарында
зерттеле бастады.
Алгоритм деп берілген есепті шешудегі жасалатын әректтерді дәл және
қарапайым етіп жазуды айтамыз. Басқаша айтқанда алға қойылған мақсатқа
жетуде немесе берілген есепті шешуде орындаушыға біртіндеп қандай әректтер
жасау керектігін дәл көрсететін нұсқауларды немесе іздеп отырған нәтижені
алу мақсатында деректермен атқарылатын әрекеттерін орындалу реттілігін
анықтайтын жарлықты алгоритм дейміз. Алгоритм белгілі бір реттіліепен
бірінен соң бірі орындалатын бірнеше қадамдардан тұрады. Алгоритмнің әрбір
қадамы бір немесе бірнеше қарапайым операцияларды қамтиды. Алгоритм ұғымның
мәнін аша түсетін оның мынадай қасиеттері бар:
1. Алгоритм дискретті информациялармен жасалатын әрекеттерді тағайындайды
және өрнектейді. Алгоритмге қатысты әрекеттердің бәрі дискретті болады.
Алгоритмнің жұмысына қажетті материалдар ретінде символдық мәтіндер және
сандар пайдаланылады.
2. Алгоритм біздің қалауымызға қарай өзгертуге болмайтын нақты нұсқау
алгоритмде не істеу керектігі алдын-ала айқын береді. Мысалы, бір есепті
шешудің алгоритмі берілсе онда ойланбай-ақ алгоритмде қандай нұсқаулар
берілсе, сол нұсқауларды берілу ретімен орындасақ, есеп шығады. Алгоритмнің
осы қасиетін оның анықталғандық қасиеті дейміз. Бұл жағдай адам сияқты емес
ойлау қабілеті жоқ құрылғылардың мысалы, компьютердің көмегімен есептерді
шешу мүмкіндігіне кепілдік берді. Мұндай құрылғылар алгоритмнің жарлықтарын
ойланбастан формальды орындайды. Сондықтан алгоритмді есепті шығаруға
қажеттінің бәрі бір мәнді анықталу және атқарушыға түсінікті әрі нақты
болуы тиіс.
3. Бір алгоритмнің өзін бірнеше есептің шешімін табу үшін пайдалану
мүмкіндігі, яғни бастапқы деректер мәндерінің жиынына пайдаланылу
мүмкіндігі бар.
Алгоритмнің мұндай қасиетін көпшілікке бірдейлік, басқаша айтқанда,
жалпылық қасиеті деп атайды.
4. Әрбір алгоритм белгілі бір бастапқы деректердің болуын талап етеді және
іздеген нәтижені алуға жеткізеді. Мысалы, екі санды қосу алгоритмнде
қосылғыштар бастапқы деректерге, ал қосынды нәтижеге жатады. Осылайша,
алгоритмдегі әрекеттердің белгілі бір санның орындалуынан кейін қажетті
нәтиже алу мүмкіндігі алгоритімнің нәтижелілігі деп аталады.
Осы айтылғандардан алгоритім бастапқы деректерді пайдаланып іздеген
нәтижеге қол жеткізетін реттелген әрекеттер тізбегі деген қлрытынды жасруға
болады. Мұндай әректтер тізбегінің орындалуы алгоритмдік процесс, ал әрбір
әрекет оның қадамы, әрбір нұсқау алгоритмнің қалыптасуы болып табылады.
Алгоритмнің ең маңызды қасиеті жоғарыда анықталғандық қасиетінде
айтылғандай оның орындалу нәтижесінің атқарушыға тәуелсіздігі.
Сонымен алгоритм туралы мына төмендегідей тұжырымдар жасауға болады:
• алгоритмдер әртүрлі есептерді шешу үшін пайдаланылады;
• алгоритмді атқарушыдан аз білім талап етілетіндіктен есеп шығаруды
айтарлықтай оңайлатады;
• әрбір алгоритм толық аяқталған әрекеттерді орындайтын атқарушыға
арналған командалардан тұрады;
• атқарушы орындайтын командалардың жиынын атқарушының командалар жүйесі
д.а.
• алгоритмдегі командалар атқарушының командалар жүйесінен алынады;
• алгоритмдегі командалар тізбегінің орындалуы алгоритмдік процесс д.а;
• алгоритмдегі әрбір команда оның қадамы д.а;
• санаулы әрекеттен кейін ғана алгоритмде іздеген нәтижеге қол жетеді;
• алгоритмдегі әрбір әрекет атқарушыға түсінікті және нақты болуы керек;
• бірнеше есептің шешімін табу үшін бір ғана алгоритмді пайдалануға
болады;
• құрылған алгоритмді атқару есептің мазмұнына ой жүгіртіп оны талдауды
қажет етпейді, тек командаларды формальді орындай береді;
• алгоритм әрбір атқарушыға арналып құрылады;
• алгоритмнің командалары атқарушыға түсінікті және орындалатын болуы
тиіс;
• алгоритмді атқаруды тек адамға емес компьютерге де жүктеуге болатындығы
есептеу процесін автоматтандыруға мүмкүндік береді;
Алгоритмнің құрамы дараланып және оның әрекеттері анықталғаннан кейін
алгоритмді жазып көрсету тәсілін және тілін білу керек
Алгоритмдік тілді падалану оны құрушының өзіне ғана түсінікті командаларды
көпшілік қауымның пайдалануына мүмкіндік береді.
Алгоритмді жазудың бірнеше тәсілдері бар.Төменде алгоритмді бейнелеу
әдістерінің логикалық құрылымы көрсетілген.
Алгоритмді бейнелеу әдістерінің ішінен біз блок – схема мен мектептік
алгоритмдік тілді пайдаланамыз.
Блок-схема. Блок схема компьютерге программалар жасау практикасында кеңінен
қолданылатын алгоритмдерді жазудың графикалық тәсілі, басқаша айтқанда,
алгоритмнің логикалық құрылымын график түрінде бейнелейтін тіл десек
болады. Есепті шешу алгоритімінің блок схемасын құрған кезде есепті шығару
процесі кезең дерге бөлініді. Әрбір кезең есептелетін операцияның сипатына
байланысты белгілі конфигурациясы бар бір геометриялық фигурамен (блокпен)
белгіленеді. Мысалы, жұмыр (сопақ), параллелограмм, тіктөртбұрыш, ромб
т.с.с.
Блок деп аталатын мұндай фигуралардың ішіне кезеңдердің мазмұны жазылады.
Есептелу процесінің бағыты блоктарды қосатын стрелкалармен көрсетіледі. Осы
аталғандардың бәрі блок – схема тілінің алфавитін құрайды және олардың
мағынасы алдын ала келісілген келісім бойынша беріледі.
Төмендегі 1-кестеде стандартты блок – схема тілінің алфавиті берілген.
Әрбір блок схеманың басы және соңы деп аталатын блоктары болады.
Басы, соңы блоктарынан басқа әрбір блоктың бір ену және бір – екі шығу
сызықтары болады.
Атқаратын қызметі жағынан блоктар негізгі және қосымша болып бөлінеді.
Негізгі блоктар енгізіу мен баспаға шығару және информацияларды өңдеу
әрекеттерін білдіреді, ал қосымша блоктар блок – схеманы түсіндіру және
байланыстарды таңбалау үшін пайдаланылады.
Блоктардың анықтайтын әрекеттері, яғни түсініктер блокты бейнелейтін
геометриялық фигураның ішіне жазылады.
Деректерді енгізу блогы есептеу есептерін шешуде айнымалылардың сандық
мәндерін компьютердің жадына енгізу үшін қолданылады.
Деректерді өңдеу блогы қандай да бір формула бойынша айнымалының мәнін
есептеу процесін білдіреді. Мұнда есептелген шамалар оларға сәйкес
айнымалылар жаңа мәндер қабылдағанша сақталады.
Бұл блокта формуланың сол жағында тұрған айнымалылар оның жағына да қатыса
алады, бұл дегеніміз айнымалының жаңа мәнін бұрын есептелген ескі мәнінен
шығарып алудың қажеттігін көрсетеді.

1.2. Циклдік алгоритм

C++ программалау тілінде басқа программалау тіліндегідей шартты цикл
операторларымен жұмыс жасауға болады. Цикл немесе қайталану командалары
деп, берілген тапсырмалардағы, логикалық өрнектің мәні, ақиқаттылығын
сақтағанша, іс-әрекеттің қайталануын айтады. Шартты цикл операторлары
программалау тілінің аса қуатты құралы болып табылады. Цикл мәліметтер
жиынтығына итерациялық операцияларды жасауға мүмкіндік береді. Цикл
операторы, цикл денесіндегі іс-әрекеттерді, берілген есептегі шарт
орындалғанша қайталай береді. Сол іс-әрекеттерді орындау үшін, қайталану
командаларын қолданамыз. С++ тілінде басқа тілдердегідей сияқты, циклдің үш
түрі бар: For, While және Do-while параметрлі цикл операторлары және
операторлар ішінде қолданылатын break және continue операторлары бар.
Егер берілген шамаға тәуелді алгоритмнің белгілі бір тізбектелген
қадамдарды бірнеше рет орындалатын болса, онда ондай алгоритмді қайталанушы
(циклдік) алгоритм дейміз. Бұл берілген шама цикл параметрі деп аталады.
Кез келген қайталанушы алгогритмде ол аяқталу үшін параметр болуы тиіс.
Параметр белгілі бір мәнге ие болған кезде цикл аяқталатын болады.
Мына төменде циклдің басында параметр үшін қойылған шартты тесеруге
арналған қайталаушы алгоритмнің алгоритмдік тілде жазылуы және блок –
схемасмының жалпы түрі берілген.
Әзір шарт
ЦБ
команадалар тізбегі
ЦС
Мұнда әзір, ЦБ (циклдің басы), ЦС (циклдің соңы) – қызметші сөздер, ЦБ және
ЦС әзірше шарт орындалғанға дейін орындалатын командалар тізбегін
таңбалайды.
Ал мына суретте циклдің соңында параметр үшін қойылған шартты тексеруге
арналған қайталанушы алгоритмнің блок – схемасының жалпы түрі бейнеленген.
Алгоритмдерді құрылымын негізге ала отырып құрастыру. Компьютер есеп
шығару үшін алгоритм құру арнайы дағдыны талап ететін жұмыс. Бұл жағдайда
әсіресе бөтен алгоритмдерді оқуда алгоритм мынандай талаптарды
қанағаттандыруы тиіс:
• Түсінікті әрі өте жеңіл қабылданатын болуы;
• Алгоритмнің жеңіл тексерлетін болуы;
• Құрылымын түгел өзгерпей-ақ өзін модификациялауға мүмкіндік беруі.
Осы аталғандарға қол жеткізу үшін алгоритмдерді құруда оның құрылымы
жағынан келу деп аталатын ерекше тәсілді башылыққа алу керек. Алгоритмдерді
құрастыруға құрылымы жағынан келгенде оның жоғарыда қарастырылған үш
базалық құрылымы:
Ілесу, тармақталу және қайталану негізге алынады, яғни кез келген күрделі
алгоритм осы құрылымдардан құрастырылады. Мысал ретінде үш санның ішінен
үлкенін іздеу алгоритмін қарастырайық.
Блок-схемадан көрініп тұрғанындай бұл алгоритм екі тармақталудың ілесуі
болып табылады. Бірінші ілесуде (тармақталу командасының толық үлгіде
жазылуы) а және в сандарының үлкені ізделінеді және олардың үлкені у-ке
меншіктеледі.
Екінші ілесуде (тармақталу командасының қысқаша түрде жазылуы) у-тің мәні
үшінші сан с-мен салыстырылады. Егер ус болса, онда у-ке с меншіктеледі,
ал керісінше болса, онда у өзгерісіз қалады. Осылайша алгоритм орындалғанда
айнымалы у өзінің мәні етіп а,в және с сандарының ең үлкенін қабылдайды.
Қайталану сандары алдын ала белгілі болып келетін циклдер тобы
арифметикалық цикл болып есептеледі,ал орындалу саны белгісіз циклдер
қадамдық цикл болып аталады. Цикл орындалуы алдында оның айнымалы аргументі
параметрі алғашқы мәнге ие болуы керек,сонан кейін қайталану кезеңінде цикл
параметрі белгілі бір шамаға өзгере отырып,ол алдын ала берілген ең соңғы
мәнге дейін жетуі керек.Алгоритмнің орындалу барысында
циклпараметрі,мысалы, х өзінің ең алғашқы х0 мәнінен ең соңғы хk мәніне
дейін тұрақты шамаға (dx) өзгеріп отырады.Осының нәтижесінде х мынадай
мәндерді қабылдайды: x0, x0+dx,x0+2dx,..,x0+(n-1)dx,xk,мұнда ғы n циклдің
қайталану саны,ол былай анықталады.

1.3. Циклдік алгоритмдік құрылым

Циклдік алгоритмдік құрылымның үш түрі бар: параметрлі цикл (үшін), кейінгі
шартты цикл (дейін), алғы шартты цикл (әзірше).
Егер алгоритмде қайталану саны алдын ала белгілі үрдісті ұйымдастыру қажет
болса, онда параметрлі цикл (үшін) қолданылады. Ондай алгоритмде цикл
параметрінің бастапқы мәні, соңғы мәні және өзгеру қадамы алдын ала айқын
болады.
Егер алгоритмде қайталану саны алдын ала белгісіз болса, онда кейінгі
шартты цикл немесе алдыңғы шартты цикл қолданылады. Бұл циклдерде
қайталану шарты басқарылуы қажет. Әйтпесе қайталану тоқтамай цикл шексіз
орындала береді.
Мысал. Екi санның ең үлкен ортақ бөлгішін табу (Евклид алгоритмі).

басы
енгізу А,В
әзір А ≠В
цб
егер А В
онда А := А-В
әйтпесе В := В-А
бітті
цс
шығару А
соңы
Евклид алгоритмінің блок-схемасы



әзір шарт
цб цб
цикл денесі цикл денесі
цс цс
дейін шарт





і үшін n1 бастап n2
дейін қадам h
цб
цикл денесі
цс

Үшін циклінің блок схемасы.
үшін 1-ден n-ге дейін
цб
Цикл денесі
Цс

1.4. Күрделі циклдар

Егер бір цикл, басқа циклдың ішіне орналастырылса, ол күрделі цикл
деп аталады. Күрделі цикл - өз денесінде орналасқан келесі циклге қатысты
ішкі цикл болып есептеледі, және керісінше өзінің денесінде күрделі циклы
бар, цикл ішінде орналасқан циклға қатысты сыртқы цикл болып есептеледі.
Күрделі циклдың ішінде тағы бір цикл орналастырылып, қабаттасудың келесі
дәрежесін құрау мүмкін. Әдетте, қабаттасу дәрежесінің саны шектелмейді.
Ішкі циклдың дене орындалымының жалпы саны, ішкі цикл итерация
сандары мен барлық сыртқы циклдар сандарының көбейтіндісінен аспайды.
Мысалы, әрбіреуінде 10 итерация бар, бір-біріне қабаттастырылған үш циклді
алсақ, сыртқы цикл үшін 10 дене орындалымдарын, екінші дәрежелі цикл үшін
100 дене орындалымын және ең ішкі цикл үшін 1000 дене орындалымын аламыз.
Күрделі циклдармен байланысты проблемалардың бірі – олардан уақытынан
ерте шығуды ұйымдастыру. Көптеген бағдарламалау тілдерінде циклды уақытынан
ерте аяқтау операторлары бар ( Си тілінде break, Паскаль тілінде exit, Perl
тілінде last т.б), бірақ ол әдетте, қай цикл дәрежесінде шақырылса содан
ғана шығуды қамтамасыз етеді. Күрделі циклдың ішінде осы операторды
қолдансақ, ол тек сол күрделі циклдан шығуды ғана қамтамасыз етеді, ал
жалпы сыртқы көлемді цикл орындала береді. Бұл проблема ойдан шығарылған
сияқты болып көрінуі мүмкін, бірақ мұндай жағдай күрделі мәліметтерді
өңдеуді, бағдарламалау кезінде туындау мүмкін. Өйткені, өте тереңде күрделі
кейбір шарттар кезінде, барлық алгоритмдерді тоқтату қажет болуы мүмкін.
Күрделі циклдан шығу проблемасының бірнеше шешімі бар:
Қарапайым – күрделі циклдан кейін орналасқан бағдарлама нүктесіне goto
шартсыз ауысу операторын қолдану арқылы шығу. Бұл нұсқаны және goto
операторы қолданылатын барлық нұсқаларды құрылымдық бағдарламаны
жақтаушылар көп сынға алады. Modula-2 секілді кейбір бағдарламалау
тілдерінде мұндай шартсыз ауысу операторлары мүлдем жоқ, сондықтан оларда
осындай конструкция мүмкін емес.
Альтернативті – ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Алгоритм қасиеттері
Алгоритм жазу жолдары
Алгоритм, программа ұғымдары
Паскаль тілінде сызықтық программалармен жұмыс
Массив элементіне қатынас жасау тәсілі
Алгоритмнің күрделілігі - осы алгоритмді есептеу процесінде қолданылған элементарлы қадамдар саны
Алгоритмдердің концепциялары мен қасиеттері
Алгоритмдік тілдердің құрылымы
Алгоритм және алгоритмдеу ұғымдары
Визуалды тілдерде графиканы программалау. Нұсқаулық
Пәндер