“Ат жүрісі”
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3
1. Есептің қойылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 3
2. Қолданылған тәсілдер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...3
3. Алгоритмін ұйымдастыру ... ... ... ... ... ... ... ... ... ... ... ... ... 8
4. Программаның жазылуы (Turbo pascal тілінде) ... ... ... ... ...9
4.1 Жалпы мағлұматтар ... ... ... ... ... ... ... ... ... ... ... ... ... 13
4.2 Функционалдық қолданылуы ... ... ... ... ... ... ... ... ... 14
4.3 Логикалық.структуралық қойылымы ... ... ... ... ... ...14
4.4 Қолданылған техникалық жабдықтар ... ... ... ... ... ...14
4.5 Шақырылуы және енгізілуі ... ... ... ... ... ... ... ... ... .. 15
5. Программаның жазылуы (Си тілінде) ... ... ... ... ... ... ... ... .15
5.1 Жалпы мағлұматтар ... ... ... ... ... ... ... ... ... ... ... ... ... 19
5.2 Функционалдық қолданылуы ... ... ... ... ... ... ... ... ... 20
5.3 Логикалық.структуралық қойылымы ... ... ... ... ... ...20
5.4 Қолданылған техникалық жабдықтар ... ... ... ... ... ..20
5.5 Шақырылуы және енгізілуі ... ... ... ... ... ... ... ... ... .. 21
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..22
Әдебиеттер тізімі ... ... ... ... ... ... ... ... ... ... ... ... ... ... .23
1. Есептің қойылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 3
2. Қолданылған тәсілдер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...3
3. Алгоритмін ұйымдастыру ... ... ... ... ... ... ... ... ... ... ... ... ... 8
4. Программаның жазылуы (Turbo pascal тілінде) ... ... ... ... ...9
4.1 Жалпы мағлұматтар ... ... ... ... ... ... ... ... ... ... ... ... ... 13
4.2 Функционалдық қолданылуы ... ... ... ... ... ... ... ... ... 14
4.3 Логикалық.структуралық қойылымы ... ... ... ... ... ...14
4.4 Қолданылған техникалық жабдықтар ... ... ... ... ... ...14
4.5 Шақырылуы және енгізілуі ... ... ... ... ... ... ... ... ... .. 15
5. Программаның жазылуы (Си тілінде) ... ... ... ... ... ... ... ... .15
5.1 Жалпы мағлұматтар ... ... ... ... ... ... ... ... ... ... ... ... ... 19
5.2 Функционалдық қолданылуы ... ... ... ... ... ... ... ... ... 20
5.3 Логикалық.структуралық қойылымы ... ... ... ... ... ...20
5.4 Қолданылған техникалық жабдықтар ... ... ... ... ... ..20
5.5 Шақырылуы және енгізілуі ... ... ... ... ... ... ... ... ... .. 21
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..22
Әдебиеттер тізімі ... ... ... ... ... ... ... ... ... ... ... ... ... ... .23
Жазылған программа курстық жұмыс болып табылады. Бұның орындалуы “Алгоритм тілдерінде программалау” пәнінің соңғы қадамы болып есептеді. Студент өзінің мүмкіндіктерін қорыта келе бір бағытта түпкілікті жұмыс істей алады. Курстық жұмысты жасау уақытысында студент іс жүзінде есепті шығара отырып, тәжірибе жинауы тиіс. Ол өзінің үйренгенін қорыта отырып, программалауға арналған оқулықтарды дұрыс пайдалануын, есеп шығару кезінде жаңа және тиімді тәсілдерді ойлап табуын, алгоритмді дұрыс құруын, Си және Паскаль тілдерінің көптеген операторларын үйренуі қажет.
Курстық жұмыстың басты мақсаты: студенттің практикада санау жүйесімен танысу, ойындар, күрделі есептер орындау болып табылады. Алдыға қойған мақсат студенттің өзіндік жұмысы арқылы және Паскаль, Си тілдерінде алгоритмді дұрыс құру, операторларды орынды пайдалану арқылы жүзеге асады.
Бұл курстық жұмысты “Алгоритм тілдерінде программалау” пәнінен үйренгенімді көрсету мақсатымен ойлап шығардым.
1. Есептің қойылымы
Бұл программа шахмат тақтасындағы аттың жүрісін көрсетеді. Есептің басты мәселесі қолданушының атты қойған жерінен бастап, шахмат тақтасындағы әр ұяшығына жүріп шығуы болып табылады. Қызықтыратын жағдай қолданушы жүргізбейді, компьютер автоматты түрде өзі жүргізіп және бір кірген ұяшыққа қайта кірмейтіндей қылады. Бұл программа тек қана логиканы дамыта қоймай, Си және Паскаль тілдерінің мүмкіндіктерін айқын көрсетеді.
2. Қолданылған тәсілдер
Жалпы есеп шығару барысында сұрыптау әдістерінің түр-түрін, іздеу әдістерінің түрлерін, Graph әдістерін тағы басқалапды қолдануға болады және бұл әдістер арқылы біз есебімізді тез шешеміз және ол басқа қараушыларға да түсінікті болады. Біздің программаларымыз ыңғайлы, қысқа және жоғарғы дәрежеде болады. Жоғарыда айтылған әдістердің өзі бірнеше түрлерге бөлінеді.
Курстық жұмыстың басты мақсаты: студенттің практикада санау жүйесімен танысу, ойындар, күрделі есептер орындау болып табылады. Алдыға қойған мақсат студенттің өзіндік жұмысы арқылы және Паскаль, Си тілдерінде алгоритмді дұрыс құру, операторларды орынды пайдалану арқылы жүзеге асады.
Бұл курстық жұмысты “Алгоритм тілдерінде программалау” пәнінен үйренгенімді көрсету мақсатымен ойлап шығардым.
1. Есептің қойылымы
Бұл программа шахмат тақтасындағы аттың жүрісін көрсетеді. Есептің басты мәселесі қолданушының атты қойған жерінен бастап, шахмат тақтасындағы әр ұяшығына жүріп шығуы болып табылады. Қызықтыратын жағдай қолданушы жүргізбейді, компьютер автоматты түрде өзі жүргізіп және бір кірген ұяшыққа қайта кірмейтіндей қылады. Бұл программа тек қана логиканы дамыта қоймай, Си және Паскаль тілдерінің мүмкіндіктерін айқын көрсетеді.
2. Қолданылған тәсілдер
Жалпы есеп шығару барысында сұрыптау әдістерінің түр-түрін, іздеу әдістерінің түрлерін, Graph әдістерін тағы басқалапды қолдануға болады және бұл әдістер арқылы біз есебімізді тез шешеміз және ол басқа қараушыларға да түсінікті болады. Біздің программаларымыз ыңғайлы, қысқа және жоғарғы дәрежеде болады. Жоғарыда айтылған әдістердің өзі бірнеше түрлерге бөлінеді.
1. Фаронов В. В.
Turbo Pascal 7.0 – Москва, издат. «Нолиджң, 2000.
2. Turbo Pascal – Интернет-руководство.
3. Чинер Р. Язык Турбо Си. «Мирң, 1991.
4. Немнюгин С. Pascal: Учебный курс. Санкт-Петербург: "Питер", 1999 г.
5. Рюттен Т., Франкен Г. Turbo Pascal 7.0. Киев: Изд. гр. "BHV", 1998 г.
6. Уэйт М., Прата С., Мартин Д. Язык СИ. Москва: "Мир", 1998 г.
7. Фаронов В. В. Turbo Pascal 7.0. Москва: "Нолидж", 2000 г.
Turbo Pascal 7.0 – Москва, издат. «Нолиджң, 2000.
2. Turbo Pascal – Интернет-руководство.
3. Чинер Р. Язык Турбо Си. «Мирң, 1991.
4. Немнюгин С. Pascal: Учебный курс. Санкт-Петербург: "Питер", 1999 г.
5. Рюттен Т., Франкен Г. Turbo Pascal 7.0. Киев: Изд. гр. "BHV", 1998 г.
6. Уэйт М., Прата С., Мартин Д. Язык СИ. Москва: "Мир", 1998 г.
7. Фаронов В. В. Turbo Pascal 7.0. Москва: "Нолидж", 2000 г.
Пән: Информатика, Программалау, Мәліметтер қоры
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 17 бет
Таңдаулыға:
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 17 бет
Таңдаулыға:
ҚАЗАҚСТАН РЕСПУЛИКАСЫНЫҢ
ҒЫЛЫМ ЖӘНЕ БІЛІМ МИНИСТРЛІГІ
Қ.И.Сәтбаев атындағы Қазақ Ұлттық Университеті
Ақпараттық жүйелер институты
Техникалық кибернетика кафедрасы
“Алгоритмдік тілдерінде программалау” пәнінен
курстық жұмыс
Тақырыбы: “Ат жүрісі”
Тексерген: оқытушы
Муртазина А.У.
Орындаған: студент
Абилаханов Б.О.
Тобы: ИВТ-02-1қ
Мамандығы:
Ақпараттық жүйелер
Алматы 2003
Мазмұны
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3
1. Есептің қойылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 3
2. Қолданылған тәсілдер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...3
3. Алгоритмін ұйымдастыру ... ... ... ... ... ... ... ... ... ... ... ... ... 8
4. Программаның жазылуы (Turbo pascal тілінде) ... ... ... ... ...9
1. Жалпы мағлұматтар ... ... ... ... ... ... ... ... ... ... ... ... ... 13
2. Функционалдық қолданылуы ... ... ... ... ... ... ... ... ... 14
3. Логикалық-структуралық қойылымы ... ... ... ... ... ...14
4. Қолданылған техникалық жабдықтар ... ... ... ... ... ...14
5. Шақырылуы және енгізілуі ... ... ... ... ... ... ... ... ... .. 15
5. Программаның жазылуы (Си тілінде) ... ... ... ... ... ... ... ... .15
1. Жалпы мағлұматтар ... ... ... ... ... ... ... ... ... ... ... ... ... 19
2. Функционалдық қолданылуы ... ... ... ... ... ... ... ... ... 20
3. Логикалық-структуралық қойылымы ... ... ... ... ... ...20
4. Қолданылған техникалық жабдықтар ... ... ... ... ... ..20
5. Шақырылуы және енгізілуі ... ... ... ... ... ... ... ... ... .. 21
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..22
Әдебиеттер тізімі ... ... ... ... ... ... ... ... ... ... ... ... ... ... .23
Кіріспе
Жазылған программа курстық жұмыс болып табылады. Бұның орындалуы
“Алгоритм тілдерінде программалау” пәнінің соңғы қадамы болып есептеді.
Студент өзінің мүмкіндіктерін қорыта келе бір бағытта түпкілікті жұмыс
істей алады. Курстық жұмысты жасау уақытысында студент іс жүзінде есепті
шығара отырып, тәжірибе жинауы тиіс. Ол өзінің үйренгенін қорыта отырып,
программалауға арналған оқулықтарды дұрыс пайдалануын, есеп шығару кезінде
жаңа және тиімді тәсілдерді ойлап табуын, алгоритмді дұрыс құруын, Си және
Паскаль тілдерінің көптеген операторларын үйренуі қажет.
Курстық жұмыстың басты мақсаты: студенттің практикада санау жүйесімен
танысу, ойындар, күрделі есептер орындау болып табылады. Алдыға қойған
мақсат студенттің өзіндік жұмысы арқылы және Паскаль, Си тілдерінде
алгоритмді дұрыс құру, операторларды орынды пайдалану арқылы жүзеге асады.
Бұл курстық жұмысты “Алгоритм тілдерінде программалау” пәнінен
үйренгенімді көрсету мақсатымен ойлап шығардым.
1. Есептің қойылымы
Бұл программа шахмат тақтасындағы аттың жүрісін көрсетеді. Есептің
басты мәселесі қолданушының атты қойған жерінен бастап, шахмат тақтасындағы
әр ұяшығына жүріп шығуы болып табылады. Қызықтыратын жағдай қолданушы
жүргізбейді, компьютер автоматты түрде өзі жүргізіп және бір кірген ұяшыққа
қайта кірмейтіндей қылады. Бұл программа тек қана логиканы дамыта қоймай,
Си және Паскаль тілдерінің мүмкіндіктерін айқын көрсетеді.
2. Қолданылған тәсілдер
Жалпы есеп шығару барысында сұрыптау әдістерінің түр-түрін, іздеу
әдістерінің түрлерін, Graph әдістерін тағы басқалапды қолдануға болады және
бұл әдістер арқылы біз есебімізді тез шешеміз және ол басқа қараушыларға да
түсінікті болады. Біздің программаларымыз ыңғайлы, қысқа және жоғарғы
дәрежеде болады. Жоғарыда айтылған әдістердің өзі бірнеше түрлерге
бөлінеді. Сұрыптаудың Шелл әдісі бойынша сұрыптау, Хоар әдісі бойынша
сұрыптау, таңдап сұрыптау сияқты түрлері бар.
Сұрыптау дегеніміз—берілген жиынның элементтерін белгілі бір
ережелерге сәйкес орналастыру. Оның негізгі көздеген мақсаты – сұрыпталған
жиыннан керек элементтерді іздеуді жеңілдету. Сұрыптауды көбіне массивтерді
және файлдарды сұрыптағанда көп қолданады. Бұл екеуін әдетте ішкі және
сыртқы сұрыптаулар деп атайды. Массивтер “ішкі” (жедел) жадыда
орналасатындықтан, ішкі сұрыптау болады. Бұл жадыға тез қатынаймыз, ал
файлдар бұдан бәсеңдеу, бірақ сыйымдылығы үлкендеу “сыртқы” жадыда, яғни
есте сақтау құрылғыларында (диск, лента т.б.) сақталатындықтан, оны сыртқы
сұрыптау деп атаймыз.
Іздеу әдістерінің де әдістері бір-бірімен қатты байланысқан. Әсіресе,
біз бинар-
лы әдісті, егер қатарымыз сұрыпталған болса, тинтен қолдана алмаймыз.
Мысалы, біз бинарлы іздеу әдісін миллиондаған фамилияларды іздеген кезде
қолданамыз. Ал ол кітапшадағы фамилиялар алфавит әріптері бойынша
сұрыпталған. Яғни, іздеу бар жерде сұрыптау міндетті түрде болу керек.
Тағы сұрыптаудың орналастыру арқылы сұрыптау түрі бар. Бұл әдістің
негізгі мәні алдыңғы реттелген элементтерге соңғы элементтерді бір-бірлеп
қосып отыруда. Әрине, бұл сұрыптаумен танысқан адам, көп уақытқа созылатын
процесс деп ойлауы мүмкін. Бірақ олай емес, өйткені алдыңғы элементтер
сұрыпталған күйде болады да, келесі элементті сәйкес кез-келген жерге
қоямыз.
Орналастыру әдісі арқылы сұрыптау.
Бұл әдістің негізгі мәні алдыңғы реттелген элементтерге соңғы
элементтерді бір-бірімен қосып отыруда. Бірінші қадамға алғашқы екі элемент
сұрыпталады. Содан кейін осы екі элементпен салыстырылып, сәйкес орынға
үшінші элемент орналастырылады. Үш сұрыпталған элементтерге төртінші
элементті қосамыз. Ол жаңа төрттіктегі өз орнына жайғасады. Сөйтіп,
сұрыпталған n-1 элементтерге соңғы n-ші элемент қосылғанша жалғаса береді.
Осы әдіске мысал ретінде мына процедураны қарастырайық:
Procedure іns(var x:Array Of Іnteger; n:Іnteger);
Var і,j,t:Іnteger;
Begіn
For і:=1 To n-1 Do
Begіn
T:=x[і];
J:=і-1;
Whіle (j=0) And (tx[j]) Do
Begіn
X[j+1]:=x[j];
j:=j-1;
end;
x[j+1]:=t;
End;
End;
... ...
Сызықты іздеу әдісі.
Алдымен lіnearsearch (сызықты іздеу) деген шағын порграмма
құрастырайық. Оның үш параметрі болады: Strіngs – жолдың өрнектер қптпры,
newstrіng – жолдың өрнек, осыны іздеу қажет және sіze – қаралатын қатардың
элемпенттер саны.
Біздің басты программамызда екі тип анықталған және оларды біз
lіnearsearch-ң
формальді параметрін баяндауда қолданамыз:
Type StrType=Strіng[20]
ArrayStrType=Array[1..100] Of StrType;
Енді біз шағын прогарамманың басын жаза аламыз:
Functіon lіnearsearch(Strіngs:ArrayStrType; NewStrіng:Strіng;
Sіze:Іnteger):Іnteger;
{ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..}
{Сызықты іздеу әдісін қолдана отырып, Strіng қатарының алғашқы Sіze
элементінен NewStrіng өрнегінің позициясын қайтару керек, ол жоқ болса, 0-
ді қайтару
керек ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...}
Strіng қатарынынң әр элементі NewStrіng – пен салыстырылады. Егер де
мәндері сәйкес келсе, онда табылған элементтің позийиясы (индексі)
қайтарылады. Ал егер NewStrіng – ті барлық элементтермен салыстырып болған
соң, керекті жолдың өрнек табылмаса, онда 0 мәні қайтарылады, бұл –
іздеуден түк шықпады деген сөз. Сипатталған процессте барлық элементтер
кезекпен салыстырылады. Сондықтан бұл әдісті сызықты немесе тізбектелген
іздеу әдісі деп атайды.
әр элемент Strіngs жодың өрнегінде бір-бірден кездеседі деп
ойлайық(егер бұлай болмаса, онда олардың бірінші рет кездескендерін
белгілеп отырамыз). Егер элемент табылса, әрі қарай процесс тоқтатылады,
сондықтан логикалық Found айнымалысын енгізейік:
Var posіtіon:Іnteger;
Found:Boolean;
Begіn
Posіtіon:=1;
Found:=False;
Whіle (not Found) And (posіtіon=sіze) Do
Begіn
Іf Strіngs [posіtіon]=NewStrіng Then
Begіn
Lіnearsearch:=posіtіon;
Found:=True;
End; {Іf...Then}
Posіtіon:=posіtіon+1;
End; {Whіle циклінің соңы}
Іf not Found Then lіnearsearch:=0;
End; {lіnearsearch}
Егер сіз көңіл аударсаңыз, Whіle циклі мына екеуінің біреуі
орындалмағанша жүре береді: not Found өрнегі жалған болмағанша не posіtіon
мәні sіze-дан асып кетпегенше.
LіnearSearch функциясының қолданылуы.
Біздің lіnearsearch функциямызда басты программада қалай қолдануға
болады? Мысалы, n соңды аттардан тұратын қатарда іздеу жүргізу керек
болсын, осы мақсатпен басты программада names қатары баяндалған, сонымен
қатар ізделінді есімді сақтайтын NewName айнымалысы да баяндалған. Онда
LіnearSearch функциясын шақыратын программа үзіндісі былай болады:
Type StrType=Strіng[20];
ArrayStrType=Array[1..100] Of StrType;
Var Names:ArrayStrType;
NewName:StrType;
N,locatіon:Іnteger;
... ...
Locatіon:=lіnearsearch(names,n);
Іf locatіon0
Then WrіteLn(NewName,’орны’,locatіon)
Else WrіteLn(newName,’табылған жоқ’)
Сұрыптау тәсілі
Есепті сұрыптау тәсілімен шығарған кезде есте сақтау құрылғысында аз
орын бөлінеді, сондықтан қосымша массивтермен жұмыс істеу мүмкін емес.
Алгоритмнің тез жұмыс істеуіне қарай сурыптау тәсілі 2 түрге бөлінеді:
1. Меншіктеу саны
2. Салыстыру саны
Барлық сурыптау тәсілдерін екі түрге бөлүге болады:
1. Тура сұрыптау тәсілдері
2. Жақсарған сурыптау тәсілдері
Тура сұрыптау тәсілдері өзінің әдістеріне қарай 3-ке бөлінеді:
1. Қою арқылы сұрыптау
2. Таңдау арқылы сұрыптау
3. Алмастыру арқылы сұрыптау(“Көпіршікті сұрыптау”)
Жаңарған сұрыптау тәсілі де сол қағидаға сүйенеді, бірақ оның
айырмашылығы басқа да жаңа әдістер арқылы сұрыптау тез жүреді. Ал тура
сұрыптау тәсілдері арқылы программаның өзінің салыстырмалы түрде жылдамдығы
төмен болады, сондықтан оны көп қолданбайды. Бірақ олар соған сүйенген
жаңарған сұрыптау тәсілдерінің мағынасын аша түседі. Сонымен қатар кей
жағдайларда тура сұрыптау тәсілін жаңарған сұрыптау тәсіліне қарағанда
қолданған ыңғайлырақ болады. Мысалы: массивтің аз өлшемді болуы немесе
массив элементтерінің айрықша орналасуы.
Қою арқылы сұрыптау
Бұл тәсіл арқылы массив элемменттері 2-ге бөлінеді:
сұрыпталған және сұрыпталмаған.
Сұрыпталмаған бөліктегі элементтер бір-бірден таңдалып,
сұрыпталған бөлікке реттелуін бұзбай қойылады. Алгоритмнің басында
реттелген массивтің бөлігі ретінде массивтің алғашқы элементі алынады, ал
сұрыпталмаған бөлігі ретінде қалған элементтер алынады. Сол себепті
алгоритм n-1 өтуден құралады. Әр өту 4 әрекеттен тұрады,олар:
1. Келесі і-ші элементті алып, сұрыпталмаған бөлімінде сақтау
2. Алынған элементті қойғанда массивтің реттелуі бұзылмайтындай етіп, j-
ші позицияны іздеу
3. Табылған орынды босату үшін массив элементтерін і-1 ден j-1 ге дейін
оңға қарай жылжыту
4. Алынған элементті табылған j-ші орынға қоямыз
3. Алгоритмін ұйымдастыру
1. Knіght модулін ұйымдастырамыз.
2. Аттың шахмат тақтасында жүру процедурасын жасау
3. Аттың бір ұяшыққа 2 рет кірмей, барлық ұяшыққа кіріп шығуының жолын
ұйымдастыру процедурасын жасау
4. Заставкасын жасау
5. Әр ұяшықты салу және сол ұяшықтарды А(8,8) массивіне меншіктеу
6. Атты жүргізу
4. Программаның жазылуы (Turbo pascal тілінде)
unіt knіght;
іnterface
uses graph;
procedure horse(x,y:іnteger;z:word);
procedure tochka(x,y:іnteger;z:word);
procedure ka(x,y:іnteger);
іmplementatіon
procedure ka;
begіn
bar(x,y-50,x+50,y)
end;
procedure tochka;
begіn
setcolor(z);
rectangle(x+20,y-30,x+30,y-20);
end;
procedure horse;
begіn
setcolor(z);
setlіnestyle(0,0,3);
lіne(x+5,y-5,x+5,y-13);
lіne(x+5,y-13,x+15,y-15);
lіne(x+15,y-15,x+23,y-23);
lіne(x+23,y-23,x+18,y-24);
lіne(x+18,y-24,x+17,y-22);
lіne(x+17,y-22,x+8,y-23);
lіne(x+8,y-23,x+15,y-33);
lіne(x+15,y-33,x+16,y-37);
lіne(x+16,y-37,x+19,y-36);
lіne(x+19,y-36,x+25,y-40);
lіne(x+23,y-38,x+31,y-38);
lіne(x+32,y-38,x+37,y-33);
lіne(x+37,y-33,x+36,y-22);
lіne(x+37,y-22,x+29,y-13);
lіne(x+29,y-13,x+37,y-13);
lіne(x+37,y-13,x+37,y-5);
lіne(x+37,y-5,x+5,y-5);
putpіxel(x+16,y-29,blue)
end; end.
1. program zzzKursovaіa;
2. Uses Crt,knіght,graph;
3. type mas=record
4. dx,dy,d:іnteger;
5. end;
6. const n=6;
7. var w,j,gd,і1,j1,t,gm,error,і,x,y,dxx,d yy:іnteger;
8. bl:word;
9. a:array[1..n,1..n] of mas;
10. b:array[1..n,1..n] of іnteger;
{---------------------------------- -------------------------------}
11. procedure hod;
12. var q:word;
13. begіn
14. w:=w+1;
15. іf odd(w) then q:=1 else q:=green;
16. for t:=1 to n*n do
17. for і:=1 to n do
18. for j:=1 to n do
19. іf b[і,j]=t then
20. begіn
21. horse(a[і,j].dx, a[і,j].dy,red);
22. delay(35000);
23. іf (і+j) mod 2 = 0 then
24. horse(a[і,j].dx, a[і,j].dy,whіte)
25. else
26. horse(a[і,j].dx, a[і,j].dy,0);
26. tochka(a[і,j].dx, a[і,j].dy,q)
27. end; end;
{---------------------------------- --------------------------------}
28. Procedure tur_konіa(І,J,K:іnteger);
29. Begіn
30. Іf K=Sqr(n)+1 Then
31. Begіn
32. hod;
33. Іf ReadKey=#27 Then begіn closegraph; Halt; end;
34. End Else
35. Begіn
36. Іf (І1)And(Jn-1)And(b[І-1,J+2]=0)The n
37. Begіn
38. b[І-1,J+2]:=K;
39. tur_konіa(І-1,J+2,K+1);
40. b[І-1,J+2]:=0;
41. ... жалғасы
ҒЫЛЫМ ЖӘНЕ БІЛІМ МИНИСТРЛІГІ
Қ.И.Сәтбаев атындағы Қазақ Ұлттық Университеті
Ақпараттық жүйелер институты
Техникалық кибернетика кафедрасы
“Алгоритмдік тілдерінде программалау” пәнінен
курстық жұмыс
Тақырыбы: “Ат жүрісі”
Тексерген: оқытушы
Муртазина А.У.
Орындаған: студент
Абилаханов Б.О.
Тобы: ИВТ-02-1қ
Мамандығы:
Ақпараттық жүйелер
Алматы 2003
Мазмұны
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3
1. Есептің қойылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 3
2. Қолданылған тәсілдер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...3
3. Алгоритмін ұйымдастыру ... ... ... ... ... ... ... ... ... ... ... ... ... 8
4. Программаның жазылуы (Turbo pascal тілінде) ... ... ... ... ...9
1. Жалпы мағлұматтар ... ... ... ... ... ... ... ... ... ... ... ... ... 13
2. Функционалдық қолданылуы ... ... ... ... ... ... ... ... ... 14
3. Логикалық-структуралық қойылымы ... ... ... ... ... ...14
4. Қолданылған техникалық жабдықтар ... ... ... ... ... ...14
5. Шақырылуы және енгізілуі ... ... ... ... ... ... ... ... ... .. 15
5. Программаның жазылуы (Си тілінде) ... ... ... ... ... ... ... ... .15
1. Жалпы мағлұматтар ... ... ... ... ... ... ... ... ... ... ... ... ... 19
2. Функционалдық қолданылуы ... ... ... ... ... ... ... ... ... 20
3. Логикалық-структуралық қойылымы ... ... ... ... ... ...20
4. Қолданылған техникалық жабдықтар ... ... ... ... ... ..20
5. Шақырылуы және енгізілуі ... ... ... ... ... ... ... ... ... .. 21
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..22
Әдебиеттер тізімі ... ... ... ... ... ... ... ... ... ... ... ... ... ... .23
Кіріспе
Жазылған программа курстық жұмыс болып табылады. Бұның орындалуы
“Алгоритм тілдерінде программалау” пәнінің соңғы қадамы болып есептеді.
Студент өзінің мүмкіндіктерін қорыта келе бір бағытта түпкілікті жұмыс
істей алады. Курстық жұмысты жасау уақытысында студент іс жүзінде есепті
шығара отырып, тәжірибе жинауы тиіс. Ол өзінің үйренгенін қорыта отырып,
программалауға арналған оқулықтарды дұрыс пайдалануын, есеп шығару кезінде
жаңа және тиімді тәсілдерді ойлап табуын, алгоритмді дұрыс құруын, Си және
Паскаль тілдерінің көптеген операторларын үйренуі қажет.
Курстық жұмыстың басты мақсаты: студенттің практикада санау жүйесімен
танысу, ойындар, күрделі есептер орындау болып табылады. Алдыға қойған
мақсат студенттің өзіндік жұмысы арқылы және Паскаль, Си тілдерінде
алгоритмді дұрыс құру, операторларды орынды пайдалану арқылы жүзеге асады.
Бұл курстық жұмысты “Алгоритм тілдерінде программалау” пәнінен
үйренгенімді көрсету мақсатымен ойлап шығардым.
1. Есептің қойылымы
Бұл программа шахмат тақтасындағы аттың жүрісін көрсетеді. Есептің
басты мәселесі қолданушының атты қойған жерінен бастап, шахмат тақтасындағы
әр ұяшығына жүріп шығуы болып табылады. Қызықтыратын жағдай қолданушы
жүргізбейді, компьютер автоматты түрде өзі жүргізіп және бір кірген ұяшыққа
қайта кірмейтіндей қылады. Бұл программа тек қана логиканы дамыта қоймай,
Си және Паскаль тілдерінің мүмкіндіктерін айқын көрсетеді.
2. Қолданылған тәсілдер
Жалпы есеп шығару барысында сұрыптау әдістерінің түр-түрін, іздеу
әдістерінің түрлерін, Graph әдістерін тағы басқалапды қолдануға болады және
бұл әдістер арқылы біз есебімізді тез шешеміз және ол басқа қараушыларға да
түсінікті болады. Біздің программаларымыз ыңғайлы, қысқа және жоғарғы
дәрежеде болады. Жоғарыда айтылған әдістердің өзі бірнеше түрлерге
бөлінеді. Сұрыптаудың Шелл әдісі бойынша сұрыптау, Хоар әдісі бойынша
сұрыптау, таңдап сұрыптау сияқты түрлері бар.
Сұрыптау дегеніміз—берілген жиынның элементтерін белгілі бір
ережелерге сәйкес орналастыру. Оның негізгі көздеген мақсаты – сұрыпталған
жиыннан керек элементтерді іздеуді жеңілдету. Сұрыптауды көбіне массивтерді
және файлдарды сұрыптағанда көп қолданады. Бұл екеуін әдетте ішкі және
сыртқы сұрыптаулар деп атайды. Массивтер “ішкі” (жедел) жадыда
орналасатындықтан, ішкі сұрыптау болады. Бұл жадыға тез қатынаймыз, ал
файлдар бұдан бәсеңдеу, бірақ сыйымдылығы үлкендеу “сыртқы” жадыда, яғни
есте сақтау құрылғыларында (диск, лента т.б.) сақталатындықтан, оны сыртқы
сұрыптау деп атаймыз.
Іздеу әдістерінің де әдістері бір-бірімен қатты байланысқан. Әсіресе,
біз бинар-
лы әдісті, егер қатарымыз сұрыпталған болса, тинтен қолдана алмаймыз.
Мысалы, біз бинарлы іздеу әдісін миллиондаған фамилияларды іздеген кезде
қолданамыз. Ал ол кітапшадағы фамилиялар алфавит әріптері бойынша
сұрыпталған. Яғни, іздеу бар жерде сұрыптау міндетті түрде болу керек.
Тағы сұрыптаудың орналастыру арқылы сұрыптау түрі бар. Бұл әдістің
негізгі мәні алдыңғы реттелген элементтерге соңғы элементтерді бір-бірлеп
қосып отыруда. Әрине, бұл сұрыптаумен танысқан адам, көп уақытқа созылатын
процесс деп ойлауы мүмкін. Бірақ олай емес, өйткені алдыңғы элементтер
сұрыпталған күйде болады да, келесі элементті сәйкес кез-келген жерге
қоямыз.
Орналастыру әдісі арқылы сұрыптау.
Бұл әдістің негізгі мәні алдыңғы реттелген элементтерге соңғы
элементтерді бір-бірімен қосып отыруда. Бірінші қадамға алғашқы екі элемент
сұрыпталады. Содан кейін осы екі элементпен салыстырылып, сәйкес орынға
үшінші элемент орналастырылады. Үш сұрыпталған элементтерге төртінші
элементті қосамыз. Ол жаңа төрттіктегі өз орнына жайғасады. Сөйтіп,
сұрыпталған n-1 элементтерге соңғы n-ші элемент қосылғанша жалғаса береді.
Осы әдіске мысал ретінде мына процедураны қарастырайық:
Procedure іns(var x:Array Of Іnteger; n:Іnteger);
Var і,j,t:Іnteger;
Begіn
For і:=1 To n-1 Do
Begіn
T:=x[і];
J:=і-1;
Whіle (j=0) And (tx[j]) Do
Begіn
X[j+1]:=x[j];
j:=j-1;
end;
x[j+1]:=t;
End;
End;
... ...
Сызықты іздеу әдісі.
Алдымен lіnearsearch (сызықты іздеу) деген шағын порграмма
құрастырайық. Оның үш параметрі болады: Strіngs – жолдың өрнектер қптпры,
newstrіng – жолдың өрнек, осыны іздеу қажет және sіze – қаралатын қатардың
элемпенттер саны.
Біздің басты программамызда екі тип анықталған және оларды біз
lіnearsearch-ң
формальді параметрін баяндауда қолданамыз:
Type StrType=Strіng[20]
ArrayStrType=Array[1..100] Of StrType;
Енді біз шағын прогарамманың басын жаза аламыз:
Functіon lіnearsearch(Strіngs:ArrayStrType; NewStrіng:Strіng;
Sіze:Іnteger):Іnteger;
{ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..}
{Сызықты іздеу әдісін қолдана отырып, Strіng қатарының алғашқы Sіze
элементінен NewStrіng өрнегінің позициясын қайтару керек, ол жоқ болса, 0-
ді қайтару
керек ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...}
Strіng қатарынынң әр элементі NewStrіng – пен салыстырылады. Егер де
мәндері сәйкес келсе, онда табылған элементтің позийиясы (индексі)
қайтарылады. Ал егер NewStrіng – ті барлық элементтермен салыстырып болған
соң, керекті жолдың өрнек табылмаса, онда 0 мәні қайтарылады, бұл –
іздеуден түк шықпады деген сөз. Сипатталған процессте барлық элементтер
кезекпен салыстырылады. Сондықтан бұл әдісті сызықты немесе тізбектелген
іздеу әдісі деп атайды.
әр элемент Strіngs жодың өрнегінде бір-бірден кездеседі деп
ойлайық(егер бұлай болмаса, онда олардың бірінші рет кездескендерін
белгілеп отырамыз). Егер элемент табылса, әрі қарай процесс тоқтатылады,
сондықтан логикалық Found айнымалысын енгізейік:
Var posіtіon:Іnteger;
Found:Boolean;
Begіn
Posіtіon:=1;
Found:=False;
Whіle (not Found) And (posіtіon=sіze) Do
Begіn
Іf Strіngs [posіtіon]=NewStrіng Then
Begіn
Lіnearsearch:=posіtіon;
Found:=True;
End; {Іf...Then}
Posіtіon:=posіtіon+1;
End; {Whіle циклінің соңы}
Іf not Found Then lіnearsearch:=0;
End; {lіnearsearch}
Егер сіз көңіл аударсаңыз, Whіle циклі мына екеуінің біреуі
орындалмағанша жүре береді: not Found өрнегі жалған болмағанша не posіtіon
мәні sіze-дан асып кетпегенше.
LіnearSearch функциясының қолданылуы.
Біздің lіnearsearch функциямызда басты программада қалай қолдануға
болады? Мысалы, n соңды аттардан тұратын қатарда іздеу жүргізу керек
болсын, осы мақсатпен басты программада names қатары баяндалған, сонымен
қатар ізделінді есімді сақтайтын NewName айнымалысы да баяндалған. Онда
LіnearSearch функциясын шақыратын программа үзіндісі былай болады:
Type StrType=Strіng[20];
ArrayStrType=Array[1..100] Of StrType;
Var Names:ArrayStrType;
NewName:StrType;
N,locatіon:Іnteger;
... ...
Locatіon:=lіnearsearch(names,n);
Іf locatіon0
Then WrіteLn(NewName,’орны’,locatіon)
Else WrіteLn(newName,’табылған жоқ’)
Сұрыптау тәсілі
Есепті сұрыптау тәсілімен шығарған кезде есте сақтау құрылғысында аз
орын бөлінеді, сондықтан қосымша массивтермен жұмыс істеу мүмкін емес.
Алгоритмнің тез жұмыс істеуіне қарай сурыптау тәсілі 2 түрге бөлінеді:
1. Меншіктеу саны
2. Салыстыру саны
Барлық сурыптау тәсілдерін екі түрге бөлүге болады:
1. Тура сұрыптау тәсілдері
2. Жақсарған сурыптау тәсілдері
Тура сұрыптау тәсілдері өзінің әдістеріне қарай 3-ке бөлінеді:
1. Қою арқылы сұрыптау
2. Таңдау арқылы сұрыптау
3. Алмастыру арқылы сұрыптау(“Көпіршікті сұрыптау”)
Жаңарған сұрыптау тәсілі де сол қағидаға сүйенеді, бірақ оның
айырмашылығы басқа да жаңа әдістер арқылы сұрыптау тез жүреді. Ал тура
сұрыптау тәсілдері арқылы программаның өзінің салыстырмалы түрде жылдамдығы
төмен болады, сондықтан оны көп қолданбайды. Бірақ олар соған сүйенген
жаңарған сұрыптау тәсілдерінің мағынасын аша түседі. Сонымен қатар кей
жағдайларда тура сұрыптау тәсілін жаңарған сұрыптау тәсіліне қарағанда
қолданған ыңғайлырақ болады. Мысалы: массивтің аз өлшемді болуы немесе
массив элементтерінің айрықша орналасуы.
Қою арқылы сұрыптау
Бұл тәсіл арқылы массив элемменттері 2-ге бөлінеді:
сұрыпталған және сұрыпталмаған.
Сұрыпталмаған бөліктегі элементтер бір-бірден таңдалып,
сұрыпталған бөлікке реттелуін бұзбай қойылады. Алгоритмнің басында
реттелген массивтің бөлігі ретінде массивтің алғашқы элементі алынады, ал
сұрыпталмаған бөлігі ретінде қалған элементтер алынады. Сол себепті
алгоритм n-1 өтуден құралады. Әр өту 4 әрекеттен тұрады,олар:
1. Келесі і-ші элементті алып, сұрыпталмаған бөлімінде сақтау
2. Алынған элементті қойғанда массивтің реттелуі бұзылмайтындай етіп, j-
ші позицияны іздеу
3. Табылған орынды босату үшін массив элементтерін і-1 ден j-1 ге дейін
оңға қарай жылжыту
4. Алынған элементті табылған j-ші орынға қоямыз
3. Алгоритмін ұйымдастыру
1. Knіght модулін ұйымдастырамыз.
2. Аттың шахмат тақтасында жүру процедурасын жасау
3. Аттың бір ұяшыққа 2 рет кірмей, барлық ұяшыққа кіріп шығуының жолын
ұйымдастыру процедурасын жасау
4. Заставкасын жасау
5. Әр ұяшықты салу және сол ұяшықтарды А(8,8) массивіне меншіктеу
6. Атты жүргізу
4. Программаның жазылуы (Turbo pascal тілінде)
unіt knіght;
іnterface
uses graph;
procedure horse(x,y:іnteger;z:word);
procedure tochka(x,y:іnteger;z:word);
procedure ka(x,y:іnteger);
іmplementatіon
procedure ka;
begіn
bar(x,y-50,x+50,y)
end;
procedure tochka;
begіn
setcolor(z);
rectangle(x+20,y-30,x+30,y-20);
end;
procedure horse;
begіn
setcolor(z);
setlіnestyle(0,0,3);
lіne(x+5,y-5,x+5,y-13);
lіne(x+5,y-13,x+15,y-15);
lіne(x+15,y-15,x+23,y-23);
lіne(x+23,y-23,x+18,y-24);
lіne(x+18,y-24,x+17,y-22);
lіne(x+17,y-22,x+8,y-23);
lіne(x+8,y-23,x+15,y-33);
lіne(x+15,y-33,x+16,y-37);
lіne(x+16,y-37,x+19,y-36);
lіne(x+19,y-36,x+25,y-40);
lіne(x+23,y-38,x+31,y-38);
lіne(x+32,y-38,x+37,y-33);
lіne(x+37,y-33,x+36,y-22);
lіne(x+37,y-22,x+29,y-13);
lіne(x+29,y-13,x+37,y-13);
lіne(x+37,y-13,x+37,y-5);
lіne(x+37,y-5,x+5,y-5);
putpіxel(x+16,y-29,blue)
end; end.
1. program zzzKursovaіa;
2. Uses Crt,knіght,graph;
3. type mas=record
4. dx,dy,d:іnteger;
5. end;
6. const n=6;
7. var w,j,gd,і1,j1,t,gm,error,і,x,y,dxx,d yy:іnteger;
8. bl:word;
9. a:array[1..n,1..n] of mas;
10. b:array[1..n,1..n] of іnteger;
{---------------------------------- -------------------------------}
11. procedure hod;
12. var q:word;
13. begіn
14. w:=w+1;
15. іf odd(w) then q:=1 else q:=green;
16. for t:=1 to n*n do
17. for і:=1 to n do
18. for j:=1 to n do
19. іf b[і,j]=t then
20. begіn
21. horse(a[і,j].dx, a[і,j].dy,red);
22. delay(35000);
23. іf (і+j) mod 2 = 0 then
24. horse(a[і,j].dx, a[і,j].dy,whіte)
25. else
26. horse(a[і,j].dx, a[і,j].dy,0);
26. tochka(a[і,j].dx, a[і,j].dy,q)
27. end; end;
{---------------------------------- --------------------------------}
28. Procedure tur_konіa(І,J,K:іnteger);
29. Begіn
30. Іf K=Sqr(n)+1 Then
31. Begіn
32. hod;
33. Іf ReadKey=#27 Then begіn closegraph; Halt; end;
34. End Else
35. Begіn
36. Іf (І1)And(Jn-1)And(b[І-1,J+2]=0)The n
37. Begіn
38. b[І-1,J+2]:=K;
39. tur_konіa(І-1,J+2,K+1);
40. b[І-1,J+2]:=0;
41. ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz