Ханой мұнарасы



Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 4.5
1 Есептің қойылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 6
2 Әдістердің баяндалуы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 6.9
3 Программаның алгоритмі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..9.12
4 Программаның блок сұлбасына түсінік ... ... ... ... ... ... ... ... ... ... ... ... ... ...12.14
5 Turbo Pascal графикалық функциялары ... ... ... ... ... ... ... ... ... ... ... ... ... ..15.16
6 Программаның баяндалуы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 17
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 18
Пайдаланылған әдебиеттер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 19
Қосымша Pascal тіліндегі программа ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 20.22
Менің бүгінгі жазып отырған курстық жұмысым 1-семестрдегі өткен “Алгоритм және программалау тілі” пәнінің соңғы деңгейі болып есептеледі. Мен өз мүмкіндіктерімді қорыта келе бір бағытта түпкілікті жұмыс істей алдым. Курстық жұмыс жасау уақытысында мен іс жүзінде есепті шығара отырып, көптеген қосымша мәліметтер және тәжірибе жинақтадым. Өзімнің үйренгендерімді қорыта отырып, программалауға арналған оқулықтарды және Интернет желісін дұрыс пайдаланып, есеп шығару кезінде тиімді тәсілдерді қолдануды, алгоритмді дұрыс құруды, Паскаль тілінің көптеген операторларын кеңірек үйренуі көмегі тиді.
Курстық жұмысымның басты мақсаты: практикада санау жүйесімен танысып, ойындар, күрделі есептер орындауда тәжірибе жинақтауыма негізделген.
Бұл курстық жұмысты “ Алгорит және программалау тілі ” пәнінен үйренгенімді кеңрек пайдалану мақсатымен жазып шықтым.
Turbo Pascal - жоғары деңгейлі программалау тілі. Жоғарғы программалау тілдері менің бүгінгі курстық жұмысымдағы есеп немесе ойын секілді күрделі де қызықты программалар жазуға ыңғайлы тілдер болып табылады.
Алгоритмдік немесе программалау тілі жазу ережелері қарапайым жасамды тіл. Сондықтан, алгоритмдік тілде программа жасау әрі жеңіл, әрі ыңғайлы болып келеді.
Бұл курстық жұмыста ойын жазу қарастырылған. Ойын ерте заманнан келе жатқан ең қызықты уақыт өткізудің бір түрі. Жалпы ойынның шығуы адам өмірімен тығыз байланысты. Ойындар адамның демалуына әсер етеді. Әлемде әр түрлі ойындар бар. Физикалық қимылдарды көп талап етпейтін логикалық ойындар да өте көп.
1. Фаронов В.В. “Turbo Pascal” М.:2000ж.
2. О.А.Меженный. Turbo Pascal. –М.:Издательский дом «Вильямс», 2001. -448 с.
3. Мұртазина Ә.Ө., Сатпаева А.К. “Pascal тілінде программалаудың негіздері” Алматы: ҚазҰТУ, 2002ж.
4. А.М.Епанешников, В.А.Епанешников. Turbo Pascal для студентов и школьников – Санкт петербург, 2002
5. Культин Н. “Turbo Pascal” М:2001ж.
6. Бочков С.О, Субботин Д. М «Язык программирования для персонального компьютера СИ и Паскаль», Диалог-МИФИ, 1990
7. Шаметов Е. Б, «Паскаль тілін үйренейік», Шымкент, 1993
8. Абрамов В.Г, Трифонов Н.П; Трифонова Г.Н «Введение в язык Паскаль» Наука, 2000

ҚАЗАҚСТАН РЕСПУБЛИКАСЫ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ

Қ.И.Сәтпаев атындағы Қазақ ұлттық техникалық университеті

Ақпараттық технологиялар институты

Техникалық кибернетика кафедрасы

КУРСТЫҚ ЖҰМЫСҚА ТҮСІНІКТЕМЕ ҚАҒАЗ

Тақырыбы: ХАНОЙ МҰНАРАСЫ

Жетекші: доцент

Муртазина А. У

____ _________ 2005 ж.

Норма бақылаушы: доцент

Муртазина А. У

____ _________ 2005 ж.

Студент: Сұлтанбекова Д.А

Мамандығы: 050703

Оқу тобы: ИСб – 05 – 1 қ

АЛМАТЫ 2005

КУРСТЫҚ ЖҰМЫСТЫ ОРЫНДАУҒА ТАПСЫРМА

Студент: Сұлтанбекова Дурия Асылбекқызы
Тақырыбы: ___Ханой мұнарасы___________________________ _____________
___________________________________ ________________________________
Аяқталған жұмысты тапсыру уақыты:
____ ______________ 2005 ж.
Жұмыс барысында қолданылатын бастапқы мәліметтер мазмұны, жұмысты
сипаттайтын негізгі бөлім қорытынды:
___________________________________ _________________________________________
___________________________________ _________________________________________
___________________________________ _________________________________________
___________________________________ _________

Сызба материалдар саны: _____

Жұмыс жетекшісі: Муртазина Алия Утебаевна
Тапсырманы орындауға қабылдап алған студент:
Сұлтанбекова Дурия Асылбекқызы
____ ______________ 2005 ж.
МАЗМҰНЫ

Кіріспе
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... 4-5

1 Есептің қойылымы
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... . 6

2 Әдістердің баяндалуы
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... . 6-9

3 Программаның
алгоритмі ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ...9-12

4 Программаның блок сұлбасына
түсінік ... ... ... ... ... ... ... ... ... ... ... ... ... ...12-14
5 Turbo Pascal графикалық функциялары
... ... ... ... ... ... ... ... ... ... ... ... ... ...15-16
6 Программаның баяндалуы
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
17
Қорытынды ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... 18
Пайдаланылған әдебиеттер
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
.. 19
Қосымша Pascal тіліндегі
программа ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .20-
22

Кіріспе

Менің бүгінгі жазып отырған курстық жұмысым 1-семестрдегі өткен
“Алгоритм және программалау тілі” пәнінің соңғы деңгейі болып есептеледі.
Мен өз мүмкіндіктерімді қорыта келе бір бағытта түпкілікті жұмыс істей
алдым. Курстық жұмыс жасау уақытысында мен іс жүзінде есепті шығара отырып,
көптеген қосымша мәліметтер және тәжірибе жинақтадым. Өзімнің
үйренгендерімді қорыта отырып, программалауға арналған оқулықтарды және
Интернет желісін дұрыс пайдаланып, есеп шығару кезінде тиімді тәсілдерді
қолдануды, алгоритмді дұрыс құруды, Паскаль тілінің көптеген операторларын
кеңірек үйренуі көмегі тиді.
Курстық жұмысымның басты мақсаты: практикада санау жүйесімен танысып,
ойындар, күрделі есептер орындауда тәжірибе жинақтауыма негізделген.
Бұл курстық жұмысты “ Алгорит және программалау тілі ” пәнінен
үйренгенімді кеңрек пайдалану мақсатымен жазып шықтым.
Turbo Pascal - жоғары деңгейлі программалау тілі. Жоғарғы
программалау тілдері менің бүгінгі курстық жұмысымдағы есеп немесе ойын
секілді күрделі де қызықты программалар жазуға ыңғайлы тілдер болып
табылады.
Алгоритмдік немесе программалау тілі жазу ережелері қарапайым жасамды
тіл. Сондықтан, алгоритмдік тілде программа жасау әрі жеңіл, әрі ыңғайлы
болып келеді.
Бұл курстық жұмыста ойын жазу қарастырылған. Ойын ерте заманнан келе
жатқан ең қызықты уақыт өткізудің бір түрі. Жалпы ойынның шығуы адам
өмірімен тығыз байланысты. Ойындар адамның демалуына әсер етеді. Әлемде әр
түрлі ойындар бар. Физикалық қимылдарды көп талап етпейтін логикалық
ойындар да өте көп.

1 Есептің қойылымы

“Ханой мұнарасын” Turbo Pascal тілінде жазу. Мұнда бізге үш баған
берілген. Олардың біріншісінде бірнеше шаршы фигуралары бар, қалған екеуі
бос. Жұмыстың мақсаты сол шаршы фигураларды сандық пернелер арқылы
ауыстырып ойналатындай программа құру. Берілген шаршы фигураларды бірінші
екінші бағанға, содан соң үшінші бағанға ауыстырып ойнайды. Ойынды ойнаудың
негізгі шарты:
1. үлкен фигураны кіші фигураның үстіне қоюға болмайды;
Алдымен программа іске қосылғанда, “graph” модулі арқылы интерфейс
жасалады. Экранның жоғарғы жағында “Hanoi towers” (ойын және курстық
жұмыстың аты) жазулары бар. Ойын басталғанда экранға үш таяқша шығады.
Олардың біріншісінде бірнеше диск немесе шаршы фигуралар орналасқан.
Есептің шарты бойынша дискілердің диаметрі жоғары қарай кішірейеді. Осыдан
кейін ойыншы іске қосылуы керек. Сонан соң ғана дискілерді бір таяқшадан
келесі таяқшаға көшіреміз.

2 Әдістің баяндалуы

Сонымен үлкен диаметрлі дискі кіші диаметрлі дискіге қойылмайтындықтан
шарт қойылады: қойылатын дискінің мәні кеміме екені тексеріледі. Сонымен
қатар дискілер таяқшалардың бос екендігін тексереді, егер таяқша бос болса,
онда диск жерге (бұл дегеніміз үшінші таяқшаны қолдану) қойылады.
Компьютерлік есептерді шешкенде, компьютерлік ойындар құрастырғанда
көптеген әдістер қолданады. Бұл әдістер жылдан жылға көбейіп келеді және
бұрынғысынан гөрі дами түскен. Бірақ, сол көп жылдар бойы қалыптасқан
әдістер осы күнге дейін кең қолданады.
Есеп шығарғанда сұрыптау әдістерін , іздеу әдістерін қолдануға болады.
Бұл әдістер біздің есебімізді жеңілдетеді және түсінкіті болады
2.1.Сұрыптау тәсілдерінің классификациясы
Сұрыптау (реттеу) – бұл берілген жиын элементтердің белгілі бір ретпен
орналасуы: кілттердің кему немесе арту ретінде. Сұрыптау үшін жиындар -
массив элементтері немесе файлдар болуы мүмкін. Ал кілт - сұрыптау болып
жатқан жазба элементі болуы мүмкін, және сұрыпталған жиындағы іздеу болуы
мүмкін. Мысалы, стунденттердің фамилиясы немесе сынақ кітапшасының
номерімен сұрыптауға болады.
Сұрыптау мынау үшін керек:
1. үлкен мәліметтерде оңай жұмыс істеуді қамтамасыз ету (мысалы, іздеу);
2. адамдардың массив мәліметтеріне оңай анализ жасау үшін, мысалы
студенттер тізімі;
3. үлестіру мәліметтеріне гистограмма жасау.
Сұрыптау – бұл мәліметтерді өңдеудегі ең қызықты да және маңызды
процедура. Мәліметтерді өңдеу есептеріндегі мәліметтерді сұрыптау уақыты
жалпы өңдеу уақытының 35-70% құрайды.
2.1.1.Сұрыптау тәсілдері
Кестелермен жұмыс істегенде – оның негізгі опреациялары – ол жазбаларды
реттеу және берілген шарт бойынша жазба кестелерінде барлау жасау. Сұрыптау
- бұл кейбір критерийлері бойынша жазбаны кестелерде нақты бір тәртіппен
реттеу операциясы. Сұрыптау барлық жазбалар кілттерінің мәндерімен сәйкес
іске асады (мыс,. Алфавит бойынша аттарын реттеу немесе сандарды өсу
бойынша реттеу). Сұрыптаудың көптеген бір – бірінен айрықша тәсілдері бар.
Егер де кесте бүтіндей ЭЕМ – нің жедел жадында орналастырса, онда оның
реттелуі ішкі деп аталады. Ал егер де реттелген мәліметтерді сақтау үшін
сыртқы есте сақтау құрылғысы пайдаланса, онда бұндай реттелу сыртқы деп
аталады. Операцияларды салыстырудың орташа саны, сұрыптаудың тәсілінен
байланысты, және де рационалды тәсілді таңдаған кезде кейбір минимумға
жетеді. Ішкі сұрыптау тәсілдерін екі топқа бөлуге болады:
• Разервтік жадыны қажет ететін тәсілдер
• Резервтік жадыны қажет етпейтін тәсілдер
Бірінші топқа таңдау, енгізу, көпіршік (пузырька), Шелл тәсілдері
жатса, екінші топқа квадраттық таңдау, қосылу тәсілі және т.б. Қарапайым
сұрыптау тәсілдері (таңдау, енгізу, ауыстыру) шамамен n**2 салыстыруын
талап етеді. Әдетте одан да қиынырақ алгоритмдер орташа n*log2(n)
салыстыруларында нәтиженің берілуін қамтамасыз етеді. Бірақ та кез келген
жағдайларда қолайлы сұрыптау жоқ, себебі олардың тиімділігі кестедегі
кілттердің түріне және олардың алдын ала реттелуіне байланысты. Ішкі
сұрыптаудың ең кең қолданылатын тәсілдерінің алгоритмін қарастырайық:
2.1.2.Таңдау сұрыптауы
(тік таңдау, сызықты таңдау)
Осы метод бойынша, кестедегі бірінші жазбадан бастап, ең кішкентай мәні бар
кілттің элементтерін іздеуге болады. Осындай орын-ауыстырудың нәтижесінде,
кілттің ең кішкентай мәні бар жазбаны кестедегі бірінші позицияға
орналасытырылады. Одан кейін кестедегі екінші элементтен бастап, екінші ең
кіші мәні бар кілттің ізденуі жүзеге асады. Табылған элемент кестедегі
екінші элементпен орын ауыстырады. Бұл процесс кілттің кодтары өсу реті
бойынша реттелмейінше тоқтамайды. Осы тәсілдегі салыстыру саны n(n-1)2 –ге
тең, мұндағы n – кестедегі жазбалардың саны. Осындай сұрыптау кезінде орын
ауыстырудың ең үлкен саны (n-1) – ге тең. 2.3.Модификацияланған енгізу
тәсілі (бинарлық кірістіру)
Тура қосу тәсілін жақсарту үшін, кестенің кезекті элементін реттелген
қосалқы кестеге енгізу, оны бинарлық іздеу тәсілінің (дихотамикалық,
екілік, логарифмдік) көмегімен жүзеге асыруға болады.
Сұрыптаудың j-ші қадамы:
5 6 8 10 14 18 9 2 ¦ i = 62 = 3; 9 8
~~~ ~~~~~~ ~~ ¦
тасталынады қарасытырлады ¦
--¬ ¦
. . . 10 14 18 9 2 ¦ i = (4+6)2 = 5;
~~ ~~~~~ ¦ 9 14
тасталынады қарасытырлады ¦
. . . 9 10 14 18 2 ¦ i = 4; 9 10

2.2.Бірігу тәсілі

Негізгі жадыда тұтастай сыймаған кезекті файлды сұрыптау керек болса
бірігу тәсілін қолданамыз. Бірігумен ішкі сұрыптаудың ең таралған алгоритмі
келесі ойларға негізделген (массивтің лементтеріндегі саны 2 санның
дәрежесіне тең деп аламыз). Ең біріншіден бірігудің не екенін түсіндіріп
кетейік. P[1],p[2],...,p[n] және q[1],q[2],...,q[n] екі өсу бойынша реттелген
массив берілсін және r[1],r[2],...,r[2 ?n] деген бір бос массив берілген,
сол массивті біз p және q массивтері арқылы өсу бойынша толтыруымыз
керекпіз Бірігу үшін келесі әрекеттер жасалады: p[1] және q[1]
салыстырылады да, ең кішкентай мән r[1]-ге жазылады. Бұл p[1] – ң мәні деп
алайық. Онда p[2] q[1] – мен салыстырылады да, ең кішкентай мәні r[2] – ге
енгізіледі. Бұл q[1] – ң мәні деп алайық. Онда келесі қадамда p[2] және
q[2], және т.с.с. массивтердің біруінің шегін жеткенге дейін мәндері
салыстырылады. Онда басқа массивтің қалдығы r массивінің соңына жазылады.
3 Программаның алгоритмі
Алгоритм дегеніміз есепті шешетін операциялар тізімі. Ол есепті
шешу процесі. Есептің программасын жазып, оның түбіне жету үшін қолдануға
қажетті немесе жеткілікті процедуралар мен функциялар жиыны.

1. Стандартты және графикалық модульдерді сипаттау
2. Айнымалыларды хабарлау бөлімі
3. Айнымалыларды бүтін типте сипаттау
4. Символдық айнымалыны сипаттау
5. 2 өлшемді массивті сипаттау
6. 1 өлшемді массивті сипаттау
7. Айнымалыларды логикалық типте сипаттау

8. Prover процедурасы
9. Бастау
10. Меншіктеу (test1:=true;)
11. ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Резервтік көшірме жасаудың стратегиясы
Резервтік копия жасаудың стратегиясы туралы
Вьетнам елді мекені
Бейінді оқытуды ұйымдастыру жолдары
Адам баласы жасанды интеллект дамуының қай кезеңінде
Ойындар
Робототехникадағы жасанды интеллект
БАСТАУЫШ МЕКТЕПТЕ ИНФОРМАТИКАНЫ ШЫҒАРМАШЫЛЫҚҚА НЕГІЗДЕП ОҚЫТУ
Оңтүстік – Шығыс Азия туралы ақпарат
Информатика пәнінен лекциялық сабақтардың тезистері
Пәндер