5 ферзі



Мазмұны

1. Кiрiспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3

2. Есептiң математикалық қойылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .6

3. Есептi шығарудың тәсiлдерiн баяндау ... ... ... ... ... ... ... ... ... ... ... ... ... ... 7
3.1. Iздеу алгоритмдерi ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 7
3.1.1. Сызықты iздеу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..7
3.1.2. Тосқауылы бар iздеу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...8
3.2.Сорттау алгоритмдерi ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .9
3.2.1. Таңдау арқылы сорттау ... ... ... ... ... ... ... ... ... ... ... ... ... ... 9
3.2.2. Айырбаспен сорттау (“көбiкше” тәсiлiмен) ... ... ... ... ... 10

4. Алгоритмнiң негiзгi ойын баяндау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 12
4.1. Қайталану операторлары ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..12
4.2. Графиктік режиммен жұмыс істеу ... ... ... ... ... ... ... ... ... ... ... ... ... ...13

5. Блок.схема ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...17
6. Қолданылған техникалық жабдықтар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...22
7. Бағдарламаны шақыру және жүктеу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .22
8. Есептi шығару алгоритмнiң программалық жазбасы (Паскаль тiлiнде) ... ...23
9. Енгізілген мәліметтер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .27
10. Шығарылған мәліметтер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..27

11. Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 27

12. Пайдаланылған әдебиеттер тiзiмi ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 28
1. Кiрiспе

Ойын деген – ойын сауық, демалыс, спорттық жарысқа негiзделген жұмыс түрi. Ойын адамның көңiлiн өсiрiп, ойын сергiтiп қана қоймай, сонымен қатар оның таным-түсiнiгiн арттырады.
Осындай ойындардың бірі – шахмат ойны!!!
Шашмат ойнын кім білмейді, бәрі біледі, кішкентайынан үлкеніне дейін. Бірақ айтып өткенім жөн. Бұл өте қызықты ойын өзінің бастауын Үндістаннан алады. Бұл ойынды сол жердегі ойшылдар махараджаларға арнап жасаған да оларға бұл ойын өте қатты ұнады. Содан бастап бұл ойынды тек қана махараджалар ғана ойнай алды, егер қарапайым адам оны ойнаса ол адам өлім жазасына кесілді. Себебі махараджалар шахмат ойнының арқасында үлкен қолбасшы болуға және соғыста шебер соғысуды үйренуге болады деп есептеді. Сөйтір егер біреулер бұл ойынды үйренсе олар менен асып түседі деп қауіптенде. Шынында да шахмат ойыны өте қызықты және ойлау қабілетін арттыратын ойындардың арасындағы ең күштімі және де көлемді. Шахматта шексіз санды бір – біріне ұқсамаған ойындар ойналу мүмкін. Бұл ойынның түбіне дейін жету мүмкін емес, тек қана жақсы ойыншы шығу үшін бұл ойынды көр ойнау керек оны үйрену керек, омен көп айналасу керек, қысқасы миді істету керек.
Осы шахматтың шығуының бір көп тараған хикаясы бар. Оған сенсек бұл ойынды шығарған адам оны мажараджаға сыйға тартады. Оған бұл ойын қатты ұнап ол бұл адамға сый тартқысы келеді, оған қалаған нәрсесін бермекші болады. Бірақ ол адам көп уақыт қарсы болады, сонда махараджа ренжиді сонда адам келіседі де өзінің тілегін айтады. Оның тілегі бойынша шахматтың 1-ші клеткасына 1 дана күріш салсын дейді, 2-сіне екі есе көп,..., сөйтіп әр клеткаға екі есе көбейте берсін және соңғы клеткаға жеткенде шыққын өнімді алайын дейді. Махараджа кідірместен, ойланбастан өзінің узірлеріне адамның қалауын орындауға бұйрық береді де бір аптадан олардан мәнісін сұрайды, сөйтсе олар санап бітпепті. Тағы да бір айдан ке»н сұраса, олар тағы да сондай жауап қайтарады. Ақыры бір жылдай уақыт өткенде сұраса, олар шамамен санап біттік те сізге жаубымызды айтайық дейді. Махараджа оларды тыңдауға келңседі. Сонда олар сенің қазынаңда бұл адамның тілеін беретіндей байлығың жоқ деп мәнісін түсіндіре бастайды. Егер сен барлық жерді жаулап алып сол жердің бәрін жыртып оғын күрішті 9 жыл бойында егіп өнімін жемей жинасаң онда сен бұл адамның тілеуін орындайсың деп жауап береді. Сонда махараджа ойланып қалады да өзінің қателігіне қайран қалады. Сонда сол адам махараджаға бұл тілегін оның бұл ойыны қандай қиын екенін, және онда қаншалықты көп әртүрлі жағдайлар болу мүмкіндігін көрсету үшін жасырғанын айтады. Сол кезден бастап бұл ойынды махараджаның рұқсатымен барлық адамдар ойнай алатын болды.

Қазіргі кезеңде шахмат ойыны биік шыңға жетті. Оны миллиондаған санды адамдар күнделікті ойнайды. Бұл ойын соншалықты зор – шахмат ойыны олимпичдалық ойындырдың біріне айналды. Шахматтан әлем чемпионаттары да, және де көптеген басқа, әртүрлі жарыстар өткізіледі. Бұл ойынды жақсы меңгерген жас өспірімдер әдетте сабақтан үздік болады. Және бұл ойын адамның болашағына көп – көп көмектеседі.
Жаңа технологиялардың дамуына байланысты компьютерлік шахматтар пайда болды және де енді шахматты Интернет жүйесі арқылы ойнауға болады.
Бұл шахматтың адам баласына қаншалықты маңызды екенін көрсетеді.
Шахмат тақтасы 8 × 8 клеткалы болып келеді. Оның екі жағында ақ және қара түсті екі қарсы жақ болады. Ойынның мақсаты қарсыласын жеңу немесе мат қою.
Негзінен алты түрлі фигуралар бар, олар: пешка, ат, піл, тура, ферзь және король.
1. Шелест В. Программирование. – Санкт-Петербург, BHV, 2001.
2. Роджерс Д. Алгоритмические основы машинной графики. – Москва, “Мир”, 1989.
3. Вирт Н. Алгоритмы + структуры данных = программы. – Москва, “Мир”, 1985.
4. Вирт Н. Алгоритмы и структуры данных. – Москва, “Мир”, 1989.
5. Лахтин А.С., Искакова Л.Ю. Языки и технология программирования. Начальный курс. Учеб. пособие. Екатеринбург, 1998.
6. Бондарев В.М., Гублинский В.И., Качко Е.Г. Основа програмирования – Ростов Н/Д: Феникс, 1997.
7. Турбо Паскаль 7.0 – К.: торгово – издательское бюро BHV, 1996 – 448с.: ил. Т. Рюттяна.
8. Фаронов В.В. Turbo Pascal 7.0. Начальный курс. – Москва, “Нолидж”, 2001.
9. Н.Ы. Омарова, К.У. Тұрмағамбетова, К.Н. Нүриденова. Паскаль тiлiнде программалау негiздерi. Алматы, “Бiлiм”, 1996.
10. Шаметов Ералы Бақтайұлы. Паскаль тiлiн үйренейiк. Шымкент, 1993.
11. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль.
М.: Наука, 1988.
12. Х.М. Дейтел, П.Дж. Дейтел. Как программировать на С++. Москва,
“Бином”, 2000.
13. Программирование на С и С++ для Windows 95. Киев, BHV, 1996.
14. «Язык программирования для персонального компьютера Си»,
© С.О. Бочков, Д.М. Субботин, М.: Диалог-МИФИ, 1990.
15. Turbo C++ (Version 1.0). Руководство для программиста.

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

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

Программалау пәнi бойынша

КУРСТЫҚ ЖОБАҒА ТҮСIНIК

Тақырыбы:

“5 Ферзі”

Мазмұны

1.
Кiрiспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ...3
2. Есептiң математикалық
қойылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..6
3. Есептi шығарудың тәсiлдерiн
баяндау ... ... ... ... ... ... ... ... ... ... ... ... ... ... 7
3.1. Iздеу
алгоритмдерi ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
..7
3.1.1. Сызықты
iздеу ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... 7
3.1.2. Тосқауылы бар
iздеу ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... .8
3.2.Сорттау
алгоритмдерi ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . ... .9

3.2.1. Таңдау арқылы
сорттау ... ... ... ... ... ... ... ... ... ... ... ... ... ... 9

3.2.2. Айырбаспен сорттау (“көбiкше”
тәсiлiмен) ... ... ... ... ... 10

4. Алгоритмнiң негiзгi ойын
баяндау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .1
2
4.1. Қайталану
операторлары ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ..12
4.2. Графиктік режиммен жұмыс
істеу ... ... ... ... ... ... ... .. ... ... ... ... ... ... .13
5. Блок-
схема ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... .17
6. Қолданылған техникалық
жабдықтар ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ..22
7. Бағдарламаны шақыру және
жүктеу ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... .22
8. Есептi шығару алгоритмнiң программалық жазбасы (Паскаль
тiлiнде) ... ...23
9. Енгізілген
мәліметтер ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ...27
10. Шығарылған
мәліметтер ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... 27
11.
Қорытынды ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ..27
12. Пайдаланылған әдебиеттер
тiзiмi ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... 28

1. Кiрiспе

Ойын деген – ойын сауық, демалыс, спорттық жарысқа негiзделген жұмыс
түрi. Ойын адамның көңiлiн өсiрiп, ойын сергiтiп қана қоймай, сонымен қатар
оның таным-түсiнiгiн арттырады.
Осындай ойындардың бірі – шахмат ойны!!!
Шашмат ойнын кім білмейді, бәрі біледі, кішкентайынан үлкеніне дейін.
Бірақ айтып өткенім жөн. Бұл өте қызықты ойын өзінің бастауын Үндістаннан
алады. Бұл ойынды сол жердегі ойшылдар махараджаларға арнап жасаған да
оларға бұл ойын өте қатты ұнады. Содан бастап бұл ойынды тек қана
махараджалар ғана ойнай алды, егер қарапайым адам оны ойнаса ол адам өлім
жазасына кесілді. Себебі махараджалар шахмат ойнының арқасында үлкен
қолбасшы болуға және соғыста шебер соғысуды үйренуге болады деп есептеді.
Сөйтір егер біреулер бұл ойынды үйренсе олар менен асып түседі деп
қауіптенде. Шынында да шахмат ойыны өте қызықты және ойлау қабілетін
арттыратын ойындардың арасындағы ең күштімі және де көлемді. Шахматта
шексіз санды бір – біріне ұқсамаған ойындар ойналу мүмкін. Бұл ойынның
түбіне дейін жету мүмкін емес, тек қана жақсы ойыншы шығу үшін бұл ойынды
көр ойнау керек оны үйрену керек, омен көп айналасу керек, қысқасы миді
істету керек.
Осы шахматтың шығуының бір көп тараған хикаясы бар. Оған сенсек бұл
ойынды шығарған адам оны мажараджаға сыйға тартады. Оған бұл ойын қатты
ұнап ол бұл адамға сый тартқысы келеді, оған қалаған нәрсесін бермекші
болады. Бірақ ол адам көп уақыт қарсы болады, сонда махараджа ренжиді сонда
адам келіседі де өзінің тілегін айтады. Оның тілегі бойынша шахматтың 1-ші
клеткасына 1 дана күріш салсын дейді, 2-сіне екі есе көп,..., сөйтіп әр
клеткаға екі есе көбейте берсін және соңғы клеткаға жеткенде шыққын өнімді
алайын дейді. Махараджа кідірместен, ойланбастан өзінің узірлеріне адамның
қалауын орындауға бұйрық береді де бір аптадан олардан мәнісін сұрайды,
сөйтсе олар санап бітпепті. Тағы да бір айдан кен сұраса, олар тағы да
сондай жауап қайтарады. Ақыры бір жылдай уақыт өткенде сұраса, олар шамамен
санап біттік те сізге жаубымызды айтайық дейді. Махараджа оларды тыңдауға
келңседі. Сонда олар сенің қазынаңда бұл адамның тілеін беретіндей байлығың
жоқ деп мәнісін түсіндіре бастайды. Егер сен барлық жерді жаулап алып сол
жердің бәрін жыртып оғын күрішті 9 жыл бойында егіп өнімін жемей жинасаң
онда сен бұл адамның тілеуін орындайсың деп жауап береді. Сонда махараджа
ойланып қалады да өзінің қателігіне қайран қалады. Сонда сол адам
махараджаға бұл тілегін оның бұл ойыны қандай қиын екенін, және онда
қаншалықты көп әртүрлі жағдайлар болу мүмкіндігін көрсету үшін жасырғанын
айтады. Сол кезден бастап бұл ойынды махараджаның рұқсатымен барлық адамдар
ойнай алатын болды.

Қазіргі кезеңде шахмат ойыны биік шыңға жетті. Оны миллиондаған санды
адамдар күнделікті ойнайды. Бұл ойын соншалықты зор – шахмат ойыны
олимпичдалық ойындырдың біріне айналды. Шахматтан әлем чемпионаттары да,
және де көптеген басқа, әртүрлі жарыстар өткізіледі. Бұл ойынды жақсы
меңгерген жас өспірімдер әдетте сабақтан үздік болады. Және бұл ойын
адамның болашағына көп – көп көмектеседі.
Жаңа технологиялардың дамуына байланысты компьютерлік шахматтар пайда
болды және де енді шахматты Интернет жүйесі арқылы ойнауға болады.
Бұл шахматтың адам баласына қаншалықты маңызды екенін көрсетеді.
Шахмат тақтасы 8 × 8 клеткалы болып келеді. Оның екі жағында ақ және
қара түсті екі қарсы жақ болады. Ойынның мақсаты қарсыласын жеңу немесе мат
қою.
Негзінен алты түрлі фигуралар бар, олар: пешка, ат, піл, тура, ферзь
және король.

Тақтайдың көрінісі келесідей.

Бұл тақтада 8 жол және 8 баған бар.
Жолдары: 1,2,3,4,5,6,7,8.
Бағандары: a,b,c,d,e,f,g,h.
Ал енді олар қалай жүреді? Пешка 1 қадам алға, піл диогональ бойынша,
ат Г әрпі тәрізді, тура перпендикуляр немесе параллель,король жан –
жағына бір клеткаға, ал ферзь болса піл және тура сияқты жүре алады.
Сондықтан ол ең күшті фигура. Міне сол себепті біз өзіміздің курстық
жұмысымызда осы ферздерге арналған программа құрамыз.

2. Есептiң математикалық қойылымы

Бұл курстық жұмыста 5 Ферзі тапсырмасы қарастырылған. Бұл ойын
тек қана программа құру ғана емес және де графикалық режимді пайдаланып,
оны экранда шығару-бұл деген сөз графикалық режиммен де жұмыс істей білу.
5 Ферзінің тапсырмасы виртуалды шахмат тоқтасында 5 ферзіні бір
ферзі жейтіндей орналастыру. Және де осы көріністі графикалық режимді
пайдаланып оны экранға шығару.

3. Есептi шығарудың тәсiлдерiн баяндау

3.1. Iздеу алгоритмдерi

Iздеу алгоритмдерi мысалы массивте белгiлi қасиеттерi бар
элементтердi табу үшiн қолданылады. Әдетте элементтiң алғашқы және соңғы
кiрулерiн iздеудегi есеп берiлгендерiмен ажыратады. Төменде келтiрiлген
барлық алгоритмдерде N бүтiн санды А массивiнде Х-қа тең элемент iздеу
керек деп есептеледi.

3.1.1. Сызықты iздеу

Сызықты iздеу екi еселi шарты бар циклмен (while немесе repeat -
until) орындалады. Бiрiншi шарт индекстiң массивке тиiстiлiгiн тексередi,
мысалы, (i=N). Екiншi шарт – бұл iздеудiң шарты. Бiздiң жағдайда while
циклiнде бұл iздеудi жалғастыру шарты: (A[i]X), ал repeat – until
циклiнде бұл iздеудi аяқтау шарты: (A[i]=X). Цикл денесiнде әдетте тек
жалғыз оператор: массивтегi индекстiң өзгеруi ғана жазылады.
Циклдан шыққаннан кейiн қай шарт бойынша шыққанымызды тексеруiмiз
керек. Әдетте if операторында циклдiң бiрiншi шартын қайталайды. Бұл шарт
орындалуын while циклi жағдайында шарттың орындалуын, ал repeat – until
циклiмен оның бұзылуы кезiнде сәттi iздеу деп айтуға болады.
Мысалы: Сызықты iздеу.
program Poisk1;
var A:array[1..100] of integer;
N, X, i:integer;
begin
read(N); {N=100}
for i:=1 to N do
writeln('Массивтi енгiзiңiз');
read(A[i]);
writeln('Iзделiнетiн санды енгiзiңiз');
read(X);
i:=1; {i:=0;}
while (i=N) and (A[i]X) do i:=i+1;
{repeat i:=i+1; until (iN) or (A[i]=X);}
if i=N then write(' A массивiне ', i,' орында', X ,' санының бiрiншi
кiруi ')
else write('тапқан жоқпыз');
end.
Соңғы кiрудi iздеу кезiнде енгiзгеннен кейiн келесi операторлар жүру
керек.
i:=N; {i:=N+1;}
while (i=1) and (A[i]X) do i:=i-1;
{repeat i:=i-1; until (i1) or (A[i]=X);}
if i=1 then write(' A массивiне ', i,' орында', X ,' санының соңғы кiруi
')
else write('тапқан жоқпыз');

3.1.2. Тосқауылы бар iздеу

Тосқауылы бар iздеу әрбiр рет массив шекарасымен байланысқан циклдегi
шартты iздей бермеу идеясынан тұрады. Бұны массивке тосқауыл орнату: iздеу
шартын қанағаттандыратын кез-келген элемент орнату арқылы жүзеге асыруға
болады. Бұл жағдайда индекстiң өзгеруiне шек қойылады.
Ендi тек iздеу шарты ғана қалып, табылған элементте немесе тосқауылда
циклдан шығуға болады. Мұндай жағдайда циклдан шыққаннан кейiн бiз
тосқауылды тапқан жоқ па екендiгi тексерiледi. Тосқауылы бар iздеудi
есептеу қиындығы сызықтыға қарағанда төмен, бiрақ сондай тiзбектi өлшемiдi,
N – массив элемент саны бар.
Тосқауылды орнатудың екi тәсiлi бар: қосымша элемент немесе массивтiң
ең шеткi элементiнiң орнына.
Мысалы: Тосқауылы бар iздеу
program Poisk2a;
var A:array[1..101] of integer;
N,X,i:integer;
begin
read(N); {N=100}
for i:=1 to N do
writeln('Массивтi енгiзiңiз');
read(A[i]);
writeln('Iзделiнетiн санды енгiзiңiз');
read(X);
A[N+1]:=X; {қосымша элемент арқылы тосқауыл қою}
i:=1; {i:=0;}
while A[i]X do i:=i+1;
{repeat i:=i+1; until A[i]=X;}
if i=N then write(' A массивiне ', i,' орында', X ,' санының бiрiншi
кiруi ')
else write('тапқан жоқпыз');
end.
program Poisk2b;
var A:array[1..100] of integer;
N,X,i,y:integer;
begin
read(N); {N=100}
for i:=1 to N do read(A[i]);
read(X);
y:=A[N]; {соңғы элементтi сақтау}
A[N]:=X; {тосқауылды массивтiң соңғы орнына орнату}
i:=1; {i:=0;}
while A[i]X do i:=i+1;
{repeat i:=i+1; until A[i]=X;}
if (iN) or (y=X) then
write(' A массивiне ', i,' орында', X ,' санының бiрiншi кiруi ')
else write('тапқан жоқпыз');
A[N]:=y; {массивтiң оңғы элементiн қалпына келтiру}
end.

3.2. Сорттау алгоритмдерi

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

3.2.1. Таңдау арқылы сорттау

Тәсiл идеясы массивтiң максималды элементiн тауып, оны соңғы элемент
(N номерлi) орнымен ауыстырылады. Содан кейiн максималды элемент N-1 орынға
дейiн iзделiп, сол N-1 орынға қойылады және т.с.с. Максимум емес, минимум
элемент iзделiп, оны бiрiншi, екiншi және т.с.с. орынға қоюға болады.
Сонымен қатар бұл әдiстiң модификацияланған түрi – бiр мезетте максимум
және минимум элементтердi iздеу қолданылады. Бұл жағдайда сыртқы циклдың
қадамдар саны N div 2.
Таңдау арқылы сорттаудың есептеу қиындығы - N*N шамасының өлшемi,
әдетте оны O(N*N) деп жазады. Бұл салыстырулар саны бiрiншi максимумды
iздегенде N-1-ге тең, содан кейiн N-2, N-3 және т.с.с. 1-ге дейiн, соымен
N*(N-1)2 болумен түсiндiрiледi.
Мысалы: А массивiнiң N бүтiн сандарының өсуi бойынша таңдау арқылы
сорттау.
program Sort_Vybor1;
var A:array[1..100] of integer;
N,i,m,k,x : integer;
begin
write('Массив элементтерiнiң саны');
read(N);
for i:=1 to n do
writeln('Массивтi енгiзiңiз');
read(A[i]);
for k:=n downto 2 do { k – max-ты iздеуге қажеттi элементтер саны }
begin
m:=1; { m - max орны}
for i:=2 to k do if A[i]A[m] then m:=i;
{ m және k номерлi элементтердi орындарымен ауыстырамыз}
x:=A[m]; A[m]:=A[k]; A[k]:=x;
end;
for i:=1 to n do write(A[i],' '); {реттелген массив}
end.
Мысалы: Жоғарыдағы есеп, бiрақ бiр мезеттегi max пен min таңдау
арқылы.
program Sort_Vybor2;
var A:array[1..100] of integer;
N,i,m,k,x,p : integer;
begin
write('Массив элементтерiнiң саны');
read(N);
for i:=1 to n do
writeln('Массивтi енгiзiңiз');
read(A[i]);
for k:=1 to n div 2 do { k - max және min жұбының орны }
begin
m:=k; { m - max орны }
p:=k; { p – min орны }
{max және min k-дан n-k+1 элементтер арасында iзделедi }
for i:=k+1 to n-k+1 do
if A[i]A[m] then m:=i
else if A[i]A[p] then p:=i;
{ p және k номерлi элементтердi орындарымен ауыстырамыз }
x:=A[p]; A[p]:=A[k]; A[k]:=x;
if m=k then m:=p;
{егер max k орында тұрса, ендi ол p орында тұр }
{ m және n-k+1 номерлi элементтердi орындарымен ауыстырамыз }
x:=A[m]; A[m]:=A[n-k+1]; A[n-k+1]:=x;
end;
for i:=1 to n do write(A[i],' '); {реттелген массив}
end.

3.2.2. Айырбаспен сорттау (“көбiкше” тәсiлiмен)

Тәлiл идеясы рет бойынша массивтiң көршiлес жұптары тексерiлуiнде
құрылған. Егер олар олар керектi реттiлiкте болмаса, онда көршiлес
элементтер жұбын орындарымен ауыстырамыз. Мұндай бiр өтуден кейiн N номерi
орынында максимал элемент орналасады (бiрiншi көбiкше “қалқып” шықты).
Келесi өту N-1 элементке дейiн қарастыру керек және т.с.с. Барлығы N-1 өту
қажет болады. Айырбаспен сорттаудың есептеу қиындығы O(N*N).
Мысалы: А массивiнiң N бүтiн сандарының өсуi бойынша айырбаспен
сорттау. (Негiзгi вариант)
program Sort_Obmen1;
var A:array[1..100] of integer;
N,i,k,x : integer;
begin
write('Массив элементтерiнiң саны');
read(N);
for i:=1 to n do
writeln('Массивтi енгiзiңiз');
read(A[i]);
for k:=n-1 downto 1 do { k – салыстырылатын жұптар саны }
for i:=1 to k do
if A[i]A[i+1] then
{көршiлес элементтердi орындарымен ауыстырамыз}
begin x:=A[i]; A[i]:=A[i+1]; A[i+1]:=x; end;
for i:=1 to n do write(A[i],' '); {реттелген массив}
end.

4. Алгоритмнiң негiзгi ойын баяндау

Бұл бағдарлама негiзiнен бiрнеше функция мен процедура, шартты
операторлардан,графиктік функция мен процедураларданқұралған. Әрқайсысын
бөлек-бөлек қарастырайық.

Қайталану командалары
Программаның белгілі бір бөлігінің орындалуын бірнеше рет қайталану
үшін қолданылатын командаларды қайталану командалары деп атайды. Көптеген
есептеулерде айнымалылардың әртүрлі мәндері үшін кейбір операторлар бірнеше
рет қайталанып орындауды қажет етеді.Программалық текстер қықа әрі оқуға
ыңғайлы болуы үшін қайталану процесін циклдік операторлар қолданып
ұйымдастырады.
Түрлері:
1. For – параметрлі циклдік оператор;
2. While – алдын – ала циклдің орындалу шартын тексеретін оператор;
3. Repeat – соңында циклдің тоқтау шартын тексеретін оператор;
For циклдік операторы (Үшін циклі).
Параметрлі циклдік операторлар цикл денесінің қайталануы алдын – ала
белгілі болғанда қолданылады. Жалпы жазылу түрі төмендегідей:
For K:=M to N do
Цикл денесі;
Бұндағы: К – циклдік айнымалы (есептеуіш), әр цикл орындалғанда K – ға 1
қосылыптұрады. M – K айнымалысының алғашқы мәні. N – K айнымалысының соңғы
мәні.
Мысалы: Экранға X – тің барлық 1-ден 100-ге дейінгі бүтін мәндері
үшін Y=(x*x)-50*x-30 - өрнегінің шығару программмасы.
Program Tend;
Var x:byte; y:longint;
Begin for x:=1 to 100 do
Begin y:=SQR(x)+50*x-30;
Writeln(‘y=’,y); end;
Readln
End.

Repeat...Until циклдік операторы (Дуйін циклі).
Бұл оператор да While операторы сияқты қайталану саны алдын –
ала белгісіз болған жағдайлара қолданылады. Оның While-дан айырмашылығы
циклді орындау шарты цикл денесінен кейін тексеріледі. Цикл денесі жай
немесе құрама операторы болцы мүмкін. Ондағы операторлар repeat және while
қызметші сөздерінің арасында орналасқандықтан, цикл денесі операторлық
жақшаларға алынбай жазылады.Жазылу түрі:
Repeat
Цикл денесі;
Until шарт;
Until операторында жазылған шарт орындалмағанға дейін цикл денесінің
орындалуы қайталанып тұрады. Егер ондағы шарт орындалса, онда қайталану
процесі тоқтап, басқару цикл денесінен кейін тұрған операторға беріледі.
Шарттағы есептеуіш параметр мәні циклде дейін беріліп, оның жаңа мәнінің
өсімі цикл денесінде беріледі.
Мысалы: s=1+2+3+4+5 қатарын есептеу программасын құру.
Program Summa;
Var s,k:intrger;
Begin s:=0; k:=1;
Repeat
S:=s+k;
K:=k+1;
Until K5;
Writeln (‘s=’,s);
Readln
End.

Графиктік режиммен жұмыс істеу

Компьютердің мониторы нүктелердің (пиксельдардың) жиынтығынан тұрады.
Ал символдарды нүктелердің жиынтығы құрайтыны алдыңғы тарауда қарастырылды.
Егер тиісті режимде тек символдармен ғана жұмыс жасалса, графиктік режимде
әрбір нүктелермен жұмыс жасауға болады. Мысалы текстік режимде символдар
түсін өзгертуге болатын болса, графиктік ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
8 Ферзі
Хоной башнясы
Жиындарға қолданатын амалдар қасиеттері
Т.Ахтановтың өмір жолы және шығармаларының көркемдік қасиеті
Юлиан күндері, юлиан дәуірлері
Жылыту жүйесін гидравликалық есептеу
Қабырға жылу техникалық шешімі
Әскери қызметкерлердің эмоционалды қиындықтарының психологиялық ерекшеліктерін зерттеу
ЦОТШЛ әдісі бойынша ерлер киімінің үлгісін жобалау. (168-94-82 типтік өлшемі бойынша)
ЭЛЕКТРОНДЫҚ ВОЛЬТМЕТРЛЕР
Пәндер