Лабиринт
Кiрiспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .2
1 Есептiң математикалық қойылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .3
2 Есептiң баяндалуы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .4
2.1.Сұрыптау әдісі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..4
2.1.1 Таңдау арқылы сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...4
2.1.2 Ауыстыру жіктеуі (обменная сортировка) ... ... ... ... ... ... ...5
2.3 Екілік іздеу әдісі (бинарды іздеу, екіге бөлу арқылы іздеу) ... .6
2.4 Қосалқы программалар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .8
2.5 Рекурсия ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .9
2.6 Паскаль тіліндегі графикалық режим ... ... ... ... ... ... ... ... ... ... 10
3.Алгоритмнiң негiзгi ойын баяндау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...11
4.Программаның баяндалуы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 15
4.1 Жалпы мәлімет ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 15
4.2 Функционалды қолдану ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..15
4.3 Қолданылатын техникалық жабдықтар ... ... ... ... ... ... ... ... ... ... ... ...15
4.4. Логикалық құрылымның баяндалуы ... ... ... ... ... ... ... ... ... ... ... ... ... 15
4.5 Жүктеу мен шақыру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 16
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 18
Әдебиеттер тізімі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...19
Косымшалар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..20
1 Есептiң математикалық қойылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .3
2 Есептiң баяндалуы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .4
2.1.Сұрыптау әдісі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..4
2.1.1 Таңдау арқылы сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...4
2.1.2 Ауыстыру жіктеуі (обменная сортировка) ... ... ... ... ... ... ...5
2.3 Екілік іздеу әдісі (бинарды іздеу, екіге бөлу арқылы іздеу) ... .6
2.4 Қосалқы программалар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .8
2.5 Рекурсия ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .9
2.6 Паскаль тіліндегі графикалық режим ... ... ... ... ... ... ... ... ... ... 10
3.Алгоритмнiң негiзгi ойын баяндау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...11
4.Программаның баяндалуы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 15
4.1 Жалпы мәлімет ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 15
4.2 Функционалды қолдану ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..15
4.3 Қолданылатын техникалық жабдықтар ... ... ... ... ... ... ... ... ... ... ... ...15
4.4. Логикалық құрылымның баяндалуы ... ... ... ... ... ... ... ... ... ... ... ... ... 15
4.5 Жүктеу мен шақыру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 16
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 18
Әдебиеттер тізімі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...19
Косымшалар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..20
Ойын деген – ойын сауық, демалыс, спорттық жарысқа нег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.
Лабиринт ойындары ең ежелгі ойындардың бірі болып табылады. Олардың мағынысын қысқартылған түрде келтірсек: сіз лабиринт бойынша жүресіз, бір жерлерде кедергілер болады т.с.с. Олардың алғашқылары екі өлшемді графика жабдықтарымен жасалса, ал қазір үш өлшемді ойындарға айланып отыр.
Бұл ойынның аты ежелден атақты ойшылдармен, ежелгі грецияның мифтеріндегі кейбір ертегілермен байланысты. Солардың бірі - «Менатавр» жайлы аңыз - әңгіме. Бұл аңыз - әңгімеде бұқа басты адам жайлы баяндалады. Соған сенсек Менатавр Лабиринттің қарауылы және тұтқыны болған. Сол жерге оны құдайлар қамап қояды. Лабиринтке әр- түрлі адамдар сынақтан өту үшін жіберіліп отырылған. Бірақ, шын жүзінде ол Лабиринтен шығу мүмкін емес, себебі оның ең алдымен шығу жолын табу керек болатын, бірақ ол уақыт ішінде Менатавр кез-келген адамды тауып алып, өлтіретін. Сондықтан бұл жерге көптеген күш иелері кейбіреуді өлтіргілері келген болса, оларды сынақ ретінде Лабиринтке жіберген. Кейіннен Лабиринт ойын ретінде тарихта шығады. Лабиринтті көптеген адамдар уақыт өткізу үшін пайдаланған. Мысалға Европаның ортағасырлық қалаларындағы аристократтық үйлерді алайық. Үлкен үйлерінің қасында европалықтар өздерінің бақшаларын өсірген. Оларда әдетте бақшаның арнайы гүлдерін өсіріп, лабиринтті істеп, кей – кездерде ойнап, дем алатын. Олардың кесілген гүлдерінің биіктігі соншалықты биік– ол шынымен де нағыз үлкен Лабиринт. Уақыт өте ондай лабиринттер сиректеніп кетті, бірақ қазір де ондай лабиринттерді ескі қалпында қалған үйлерде кездестіруге болады.
Қазіргі заманда Лабиринт өзінің маңызын жоғалтқан жоқ. Лабиринттер балалардың логикаларының дамуын күшейтеді, оларды кішкентай балаларға арналған кітаптарда жиі кездестіруге болады.
Шелест В. Программирование. – Санкт-Петербург, BHV, 2001.
Роджерс Д. Алгоритмические основы машинной графики. – Москва, “Мир”, 1989.
Вирт Н. Алгоритмы + структуры данных = программы. – Москва, “Мир”, 1985.
Вирт Н. Алгоритмы и структуры данных. – Москва, “Мир”, 1989.
Лахтин А.С., Искакова Л.Ю. Языки и технология программирования. Начальный курс. Учеб. пособие. Екатеринбург, 1998.
Бондарев В.М., Гублинский В.И., Качко Е.Г. Основа програмирования – Ростов Н/Д: Феникс, 1997.
Турбо Паскаль 7.0 – К.: торгово – издательское бюро BHV, 1996 – 448с.: ил. Т. Рюттяна.
Фаронов В.В. Turbo Pascal 7.0. Начальный курс. – Москва, “Нолидж”, 2001.
Н.Ы. Омарова, К.У. Тұрмағамбетова, К.Н. Нүриденова. Паскаль тiлiнде программалау негiздерi. Алматы, “Бiлiм”, 1996.
Шаметов Ералы Бақтайұлы. Паскаль тiлiн үйренейiк. Шымкент, 1993.
Роджерс Д. Алгоритмические основы машинной графики. – Москва, “Мир”, 1989.
Вирт Н. Алгоритмы + структуры данных = программы. – Москва, “Мир”, 1985.
Вирт Н. Алгоритмы и структуры данных. – Москва, “Мир”, 1989.
Лахтин А.С., Искакова Л.Ю. Языки и технология программирования. Начальный курс. Учеб. пособие. Екатеринбург, 1998.
Бондарев В.М., Гублинский В.И., Качко Е.Г. Основа програмирования – Ростов Н/Д: Феникс, 1997.
Турбо Паскаль 7.0 – К.: торгово – издательское бюро BHV, 1996 – 448с.: ил. Т. Рюттяна.
Фаронов В.В. Turbo Pascal 7.0. Начальный курс. – Москва, “Нолидж”, 2001.
Н.Ы. Омарова, К.У. Тұрмағамбетова, К.Н. Нүриденова. Паскаль тiлiнде программалау негiздерi. Алматы, “Бiлiм”, 1996.
Шаметов Ералы Бақтайұлы. Паскаль тiлiн үйренейiк. Шымкент, 1993.
Пән: Информатика, Программалау, Мәліметтер қоры
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 21 бет
Таңдаулыға:
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 21 бет
Таңдаулыға:
Мазмұны
Кiрiспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... 2
1 Есептiң математикалық
қойылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..3
2 Есептiң
баяндалуы ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ..4
2.1.Сұрыптау
әдісі ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ... 4
2.1.1 Таңдау арқылы
сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 4
2.1.2 Ауыстыру жіктеуі (обменная
сортировка) ... ... ... ... ... ... ...5
2.3 Екілік іздеу әдісі (бинарды іздеу, екіге бөлу арқылы
іздеу) ... .6
2.4 Қосалқы
программалар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
...8
2.5
Рекурсия ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ...9
2.6 Паскаль тіліндегі графикалық
режим ... ... ... ... ... ... ... .. ... ... ..10
3.Алгоритмнiң негiзгi ойын
баяндау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 11
4.Программаның
баяндалуы ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... .15
4.1 Жалпы
мәлімет ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ...15
4.2 Функционалды
қолдану ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... .15
4.3 Қолданылатын техникалық жабдықтар
... ... ... ... ... ... ... ... ... ... ... ... 15
4.4. Логикалық құрылымның
баяндалуы ... ... ... ... ... ... ... ... ... ... ... ... ... 15
4.5 Жүктеу мен
шақыру ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ..16
Қорытынды ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ..18
Әдебиеттер
тізімі ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... .19
Косымшалар
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ..20
Кіріспе
Ойын деген – ойын сауық, демалыс, спорттық жарысқа негiзделген жұмыс түрi.
Ойын адамның көңiлiн өсiрiп, ойын сергiтiп қана қоймай, сонымен қатар оның
таным-түсiнiгiн арттырады.
Қазір компьютерлік ойындарды жасау кең ауқымды болып отыр. Қазiргi
кездегi бағдарламалау тiлдерi көмегiмен бағдарламаларда ойындарды санаулы
сағаттар ішінде жасауға болады, көптегкн компьютерлiк ойындарды жасайтын
фирмалар бар. Бұл бағдарламалар осындай мақсаттарға арналған құралдары
жақсы дамытылған. Онда ойын жасап жүрген шеберлер өздерінің барлық
мүмкіндіктерін көрсете алады, ал жас бағдарламалаушылардың үйренуіне
болады.
Бүгінгі күнде компьютерлік ойындардың көптеген түрлері бар. Олар
типіне, әдістеріне қарай бірнеше топқа бөлiнедi.
Лабиринт ойындары ең ежелгі ойындардың бірі болып табылады. Олардың
мағынысын қысқартылған түрде келтірсек: сіз лабиринт бойынша жүресіз, бір
жерлерде кедергілер болады т.с.с. Олардың алғашқылары екі өлшемді графика
жабдықтарымен жасалса, ал қазір үш өлшемді ойындарға айланып отыр.
Бұл ойынның аты ежелден атақты ойшылдармен, ежелгі грецияның
мифтеріндегі кейбір ертегілермен байланысты. Солардың бірі - Менатавр
жайлы аңыз - әңгіме. Бұл аңыз - әңгімеде бұқа басты адам жайлы баяндалады.
Соған сенсек Менатавр Лабиринттің қарауылы және тұтқыны болған. Сол жерге
оны құдайлар қамап қояды. Лабиринтке әр- түрлі адамдар сынақтан өту үшін
жіберіліп отырылған. Бірақ, шын жүзінде ол Лабиринтен шығу мүмкін емес,
себебі оның ең алдымен шығу жолын табу керек болатын, бірақ ол уақыт ішінде
Менатавр кез-келген адамды тауып алып, өлтіретін. Сондықтан бұл жерге
көптеген күш иелері кейбіреуді өлтіргілері келген болса, оларды сынақ
ретінде Лабиринтке жіберген. Кейіннен Лабиринт ойын ретінде тарихта
шығады. Лабиринтті көптеген адамдар уақыт өткізу үшін пайдаланған. Мысалға
Европаның ортағасырлық қалаларындағы аристократтық үйлерді алайық. Үлкен
үйлерінің қасында европалықтар өздерінің бақшаларын өсірген. Оларда әдетте
бақшаның арнайы гүлдерін өсіріп, лабиринтті істеп, кей – кездерде ойнап,
дем алатын. Олардың кесілген гүлдерінің биіктігі соншалықты биік– ол
шынымен де нағыз үлкен Лабиринт. Уақыт өте ондай лабиринттер сиректеніп
кетті, бірақ қазір де ондай лабиринттерді ескі қалпында қалған үйлерде
кездестіруге болады.
Қазіргі заманда Лабиринт өзінің маңызын жоғалтқан жоқ. Лабиринттер
балалардың логикаларының дамуын күшейтеді, оларды кішкентай балаларға
арналған кітаптарда жиі кездестіруге болады.
1. Есептің математикалық қойылымы
Лабиринт ойынын программалау. Әр бөлмелерді бір – бірімен
біріктіретін, әрқайсысы кем дегенде бір және үштен артық емес есіктері бар
бөлмелерден тұратын лабиринт берілген. Есіктердің біреуі лабиринтке
кіретін, екіншісі шығатын. Лабиринттің кірісінен шығысына баратын қысқа
жолды табу.
2. Есептi шығарудың тәсiлдерiн баяндау.
2.1Сұрыптау әдісі
Сұрыптау дегеніміз баламалар арасынан таңдау, шақырулардың сұрыптаулық
тізбегіне қосылған терминалды немесе оның құрауышын адрестеу, белгілі бір
ережеге сәйкес жиын элементтерін топ бойынша үлестіру. Сұрыптаудың бір түрі
– мәліметтерді сұрыптау нышанының мәндерінің өсуі немесе кемуі бойынша
ретке келтіру.
Сұрыптау программасы – реттеудің берілген қатынасына сәйкес мәліметтерді
реттеуге арналған программа. Сұрыптау – біріктіру (сортировка объединение)
командасының программалық жасақтама құрамына кіретін арнайы сұрыптау –
біріктіру программаның көмегімен орындалатын мәліметтерді сұрыптау мен
жинақтау.
2.1.1 Таңдау арқылы сұрыптау
Тәсіл идеясы массивтің максималды элементін тауып, оны соңғы элемент
(N номерлі) орнымен ауыстырылады. Содан кейін максималды элемент N-1 орынға
дейін ізделіп, сол N-1 орынға қойылады және т.с.с. Максимум емес, минимум
элемент ізделіп, оны бірінші, екінші және т.с.с. орынға қоюға болады.
Сонымен қатар бұл әдістің модификацияланған түрі- бір мезетте максимум және
минимум элементтерді іздеу қолданылады. Бұл жағдайда сыртқы циклдың
қадамдар саны N div 2.
Мысалы: а массивінің N бүтін сандарының өсуі бойынша таңдау арқылы
сорттау.
Program Sort_Tandau1;
Var a:array[1..20] of integer;
N,I,m,k,x: integer;
Begin
Write(‘Массив элементінің саны’);
Read(N);
For i:=1 to n do
Writeln(‘Массивті енгізіңіз’);
Read(a[i]);
For k:= n downto 2 do {k- max-ты іздеуге қажетті элементтер саны}
Bedin
m:=1; {m-max орны}
For k:=2 to k do if A[i]A[m] then m:=I;
{m мен k номерлі элементтерді орындарымен ауыстырамыз}
x:=a[m]; a[m]:=a[k]; a[k]:=x;
End;
For i:=1 to n do write(a[i],’’); {реттелген массив}
End.
Мысалы: Жоғарыдағы есеп, бірақ бір мезеттегі max пен min таңдау
арқылы.
Program Sort_Tandau2;
Var a:array[1..100] of integer;
N,i,m,k,x,p: integer;
Begin
Write(‘Массив элементтерінің саны’);
Read(N);
For i:=1 to n do
Writeln(‘Массивті енгізіңіз’);
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элементтер арасында ізделеді}
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 номерлі элементтерді орындармен ауыстырамыз}
x:=a[p]; a[p]:=a[k]; a[k]:=x;
If m=k then m:=p;
{егер max k орында тұрса, енді ол p орнында тұр}
{m және n-k+1 номерлі элементтерді орындарымен ауыстырамыз}
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.
2.1.2 Ауыстыру жіктеуі (обменная сортировка)
“Пузырек” әдісі: Ол жіктеудің ең қарапайым түрі болып саналады. Ол әдіс К1-
мен салыстырып, егер R1 мен R2 жазба кілттері тізбектелмеген болса, онда
оларды өзара орындарын ауыстырамыз. Содан кейін ол операцияны R2 мен R3, R3
пен R4-кe қолданылады. Ең соңында ол операциялар орындалып болғаннан соң
үлкен кілтті жазбалар оң жақ бағытта жылжи береді де, ең үлкен кілтті жазба
Rn орнында орналасады, сонда жазбалар Rn-1, Rn-2 позициясында орналасады,
сонда барлық жазбалар тізбектеледі.
Бұл әдістің “Пузырек” деп аталу себебі, орын ауыстыру процесі іске
асқаннан соң, Rn жазбасы жоғарыда, ал R1 жазбасы төменде
орналасады да, үлкен элементтер “Пузырек” тәрізді жоғарғы жаққа ұмтылады,
сәйкес позицияға орналасады, “Пузырек” әдісі “Бату” (погружение) әдісіне
қарама-қарсы болып саналады да, ол әдіс тағы “таралу” әдісі деп те аталады.
R1 ... Rn жазбалардың кілттері жіктеу аяқталғаннан соң K1= ... Kn
түрде тізбектеледі.
B1 [Алғашқы Bound орнатқыш] Bound(n орнатамыз. (Bound – ең жоғарғы
элементтің индексі,оның соңғы позицияда тұрғанын әлі білмейміз)
B2 [j бойынша цикл]t(0 орнатамыз. j=1,2, ... Bound – 1 болса, B3 қадамын
орындаймыз. Кейін B4 қадамына өтеміз (Егер Bound=1 болса, онда B4-ke
ойлабастан қолма-қол өтеміз).
B3 [Салыстыру R; мен Rj+1орын ауыстыру]
Егер Kjkj+1 болса, онда Rj(Rj+1 орынын ауыстырып, t(j орнатамыз.
B4 [ауыстырулар болды ма?] Егер t=0 болса, алгоритм жұмысын аяқтайды. Кері
жағдайда Bound ( t орнатып, B2 қадамына қайтып ораламыз.
Мысал: A(100) массив элементтерін кему реті бойынша реттеу.
Program missal;
Const n=100;
Var a:array[1..n] of integer;
I,b,pr,k:integer;
Begin
For i:=1 to n do
Read(a[i]);
Pr:=1; k:=1;
While (pr=1) do
Begin
Pr:=0;
For i:=1 to n-k do
If a[i]a[i+1] then
Begin
B:=a[i];
A[i]:=a[i+1];
A[i+1]:=b;
Pr:=1;
End;
Inc(k);
End;
For i:=1 to n do
Writeln(a[i]);
End.
2.3Екілік іздеу әдісі (бинарды іздеу, екіге бөлу арқылы іздеу)
Жұмыс принціпі: массив екіге бөлінеді және салыстыру үшін ортаңғы элемент
алынады. Бұл элемент ізделінетін элементпен бірднй болса, онда іздеу жұмысы
бітеді. Егер ортаңғы элемент ізделінетін элементтен кіші болса, онда осы
элементтің сол жақтағы элементтер де ізделінетін элементтен кіші болады.
Сондықтан оларды іздеу ортадан алып тастауға болады, тек қана оң жақтағы
элементтерді қалдырып. Ал егер ортаңғы элемент ізделінетін элементтен үлкен
болса, онда осы элементтің оң жақтағы элементтер де ізделінетін элементтен
үлкен болады. Мұндай жағдайда сол жақтағы элементтер іздеу ортада қалады.
Келесі этапта осы әрекеттер қалған бөлігіне орындалады. Нәтижесінде
массивтің 14 бөлігі қалады. Және осындай әрекеттер элемент табылғанға
дейін немесе іздеу ортасы нолге тең болғанға дейін орындалады.
Бинарды іздеу әдісінің схемасы.
Ізделінетін элемент Х
Бастапқы массив Vector
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 n=16
1 4 7 11 14 18 20
L=1 R=7
i:=(L+R) div 2 = 4
Vector[i]x
L:=i+1=5
5 6 7
14 18 20
L=5 R=7
i:=(L+R) div 2 = 6
Vector[i]x
R:=i-1=5
5
14
L=R=5
i:=(L+R) div 2 = 5
Vector[i]=x
Ізделінген элемент 5 позицияда табылды
Жоғарыда көрсетілген алгоритмнің программасы мынындый:
...
L:=1; R:=n;
While (L=R) do
Begin
i:=(L+R) div 2;
if Vector[i]=x then
Break
Else
If Vector[i]x then L:=i+1 else R:=i-1;
End;
If Vector[i]=x then writeln(‘Ізжелінген элемент’,i:3,’ позицияда табылды’)
else writeln(‘Ізжелінген элемент табылған жоқ’);
...
2.4 Қосалқы программалар
Практикалық есертерге программалар құрғанда ол үшін программаны белгілі-бір
бөлігін әр түрлі мәндер бойынша бірнеше рет қайталап, пайдалануға тура
келеді. Мұндай бір типтес программа бөлігін программа әр бөлігінде қайталап
жаза бермеу мақсатында, оны жеке программа ретінде бөліп жазған қолайлы.
Жеке программа ретінде бөлек жазылған қажет кезінде оған оралып, оны
пайдаланып отыруға болатын негізгі программаның арнайы бөлігін қосалқы
программа деп аталады. Қосалқы программадан автоматты түрде шығуға және
енуге болады. Қосалқы программаның екі түрі бар: процедуралар мен
функциялар.
Кез-келген процедура программаға ұқсас түрде жазылады. Олардың тақырыбы,
баяндау және оператор бөлімдері болады. процедураның жалпы түрі:
Procedure [процедураның аты] ([формальды параметрі]);
[баяндау бөлімі]
Begin
[операторлар бөлімі]
End;
2.6 Паскаль тіліндегі графиктік режиммен жұмыс.
Компьютердің мониторы нүктелердің (пиксельдардың) жиынтығынан тұрады.
Ал символдарды нүктелердің жиынтығы құрайтыны алдыңғы тарауда қарастырылды.
Егер тиісті режимде тек символдармен ғана жұмыс жасалса, графиктік режимде
әрбір нүктелермен жұмыс жасауға болады. Мысалы текстік режимде символдар
түсін өзгертуге болатын болса, графиктік режимде әрбір нүктенің түсін
немесе нүктелерден құралған әртүрлі фигуралар мен текстердің түстерін
әртүрлі қылып шығаруға болады. Компьютердің графиктік режимдегі жұмысы
монитор мен оның видеоадаптерімен тығыз байланысты. Монитор кәдімгі
телевизор секілді жұмыс істейді. Экрандағы бейнелер секундына 25 рет жоқ
болып кетіп қайта құралады. Адамның көзі мұндай кадрлардың тез ауыстырылып
жатқанын сезбейтіндіктен, оған экрандағы бейне бір орында тұрғандай болып
әсер етеді.
Графиктік режимде экранға бейнелер шығару үшін координаталр жүйесі
қолданылады. Бейнелерді құрайтын нүктелер экранда қатарлар бойынша реттеліп
орналасатындықтан, бір қатардағы нүктелер Х осі бойынша солдан оңға қарай
өзгереді деп, ал қатарлар - Y осі бойынша жоғарыдан төмен қарай өзгереді
деп алынады. Нүктелердің басы ретінде экранның сол жақ жоғарғы бұрышынан
x=0 және y=0 деп алынады. Ал барлық қатарлар (MaxY) мен ондағы орналасқан
нүктелер саны (MaxX) видеоадаптердің типі мен оның жұмыс режиміне
байланысты болады.
Turbo Pascal - да графиктік режимде жұмыс істеуге арналған арнаулы
функциялар мен процедуралар GRAPH модулі 80-ге жуық графиктік функциялар
мен процедуралардан және оншақты стандартты тұрақтылардын тұрады. Оларды
текстік режимде пайдалану үшін программаның басында келесі амалдар орындау
қажет:
1. USES қызметші сөзінде GRAPH млдулі жазылады; USES GRAPH
2. Графиктік режим орнатылады:
Var d1, d2 : integer;
Begin d1:=Detect; InitGraph(d1, d2, ‘C:\Turbo\Graph’);
Мұндағы: InitGraph - графикалық режимді орнату процедурасы, d1-
графиктік режим драйверінің типін, d2 - видеоадаптердің жұмыс режимінің
нөмірін анықтайтын тұрақтылар. Бұл шамалар монитор мен видеоадаптер
типтеріне байланысты болады. Егер программада графиктік режим драйверінің
типіне Detect стандартты тұрақты шамасы берілсе, онда InitGraph процедурасы
автоматты түрде өзіне керекті графиктік драйвердің типін және монитор мен
видеоадаптердің типтеріне сәйкес келетін графиктік жұмыс режимін анықтап
алады. Апострофтардың ішінде орналасқын үшінші параметр Graph.tpu файлының
дискіде орналасқан жолын көрсетеді. Егер ол Turbo Pascal терезесін ашқан
Turbo.exe файылымен бірге каталогта орналасатын болса, жол орнына іші бос
екі апостроф қойылып кетеді
2.Алгоритмнiң негiзгi ойын баяндау
Тurbo Pascal тілінде 8 стандартты модульдер бар.Осы стандартты
модульдерге көптеген әртүрлі типтер, тұрақтылар, процедура мен функциялары
келтірілген. Тurbo Pascal тілінде келесі стандартты модульдер
пайдаланады:System, Dos, Crt, Printer.Graph, Overlay, turbo3, graph3.
Graph, turbo3, graph3 модульдері бөлек TRU файлында орналасқан, ал
қалған модульдер Turbo.tpl кітапханалық файлдың құрамына кіреді. Тек System
модулі ғана кез келген программаға автоматты түрде қосылады, ал қалған
модульдерді қосу үшін олардың аттарын USES деген сөзден кейін көрсету
керек. Бұл ойынға пайдаланған стандартты модуль Crt-ны қарастырайық.
CRT модулі. Экранмен жұмыс істеу үшін тексттік режимнің басқаруын
қамтамасыз ететін процедура мен функциялары осы модульге жатады. CRT
модулініңқосалқы программалар көмегімен курсорды экранның кез келген
позициясына жылжытуға, шығарылатын символдардың және олардың фонының түсін
өзгертуге терезелерді ұйымдастыруға болады. Мысалы,
а)GOTO XY (X,Y:byte)-курсорды экранның немесе терезенің қажетті
орнына жылжытады;
б)TextСolor(color:byte)-символдың түсін анықтайды.
в)TextBackGround(color:byte)-фонның түсін анықтайды.
г)Clrscr-экранды немесе терезені тазалайды және курсорды экранның сол
жақ жоғарғы бұрышына орналастырады.
д)readkey-клавиатурадан символды оқиды. Кез келген клавиша басылғанға
дейін программаның орындалуы уақытша тоқтатылады.
е)keypressed- TRUE-ді қайтарады, егер клавиша басылған болса және
FALSE-ті қарсы жағдайда қайтарады. Программаның орындалуы
тоқтатылмайды.
ж)window(x1,y1,x2,y2:byte)-экранда тексттік терезені анықтайды. x1,y1-
терезенің сол жақ жоғарғы бұрышының координатасы, x2,y2-оң жақ
төменгі бұрышының координатасы.
Мысал,
Uses crt;
Var ch:char;
Begin
Repeat
Ch:=readkey;
If ch=chr(0) then {қызметтік клавиша басылған}
Begin
Writeln(‘қызметтік клавиша’);
Ch:=readkey;
End;
Writeln(ord(ch));
Until ord(ch)=27; {Esc клавишасы басылғанға дейін}
End.
Шарт бойынша орындалатын қайталау операторы. Бұл нұсқау көп жағдайда
қайталаудың саны белгісіз болған жағдайда пайдаланады. Оның жалпы түрі:
Repeat
... жалғасы
Кiрiспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... 2
1 Есептiң математикалық
қойылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..3
2 Есептiң
баяндалуы ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ..4
2.1.Сұрыптау
әдісі ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ... 4
2.1.1 Таңдау арқылы
сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 4
2.1.2 Ауыстыру жіктеуі (обменная
сортировка) ... ... ... ... ... ... ...5
2.3 Екілік іздеу әдісі (бинарды іздеу, екіге бөлу арқылы
іздеу) ... .6
2.4 Қосалқы
программалар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
...8
2.5
Рекурсия ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ...9
2.6 Паскаль тіліндегі графикалық
режим ... ... ... ... ... ... ... .. ... ... ..10
3.Алгоритмнiң негiзгi ойын
баяндау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 11
4.Программаның
баяндалуы ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... .15
4.1 Жалпы
мәлімет ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ...15
4.2 Функционалды
қолдану ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... .15
4.3 Қолданылатын техникалық жабдықтар
... ... ... ... ... ... ... ... ... ... ... ... 15
4.4. Логикалық құрылымның
баяндалуы ... ... ... ... ... ... ... ... ... ... ... ... ... 15
4.5 Жүктеу мен
шақыру ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ..16
Қорытынды ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ..18
Әдебиеттер
тізімі ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... .19
Косымшалар
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ..20
Кіріспе
Ойын деген – ойын сауық, демалыс, спорттық жарысқа негiзделген жұмыс түрi.
Ойын адамның көңiлiн өсiрiп, ойын сергiтiп қана қоймай, сонымен қатар оның
таным-түсiнiгiн арттырады.
Қазір компьютерлік ойындарды жасау кең ауқымды болып отыр. Қазiргi
кездегi бағдарламалау тiлдерi көмегiмен бағдарламаларда ойындарды санаулы
сағаттар ішінде жасауға болады, көптегкн компьютерлiк ойындарды жасайтын
фирмалар бар. Бұл бағдарламалар осындай мақсаттарға арналған құралдары
жақсы дамытылған. Онда ойын жасап жүрген шеберлер өздерінің барлық
мүмкіндіктерін көрсете алады, ал жас бағдарламалаушылардың үйренуіне
болады.
Бүгінгі күнде компьютерлік ойындардың көптеген түрлері бар. Олар
типіне, әдістеріне қарай бірнеше топқа бөлiнедi.
Лабиринт ойындары ең ежелгі ойындардың бірі болып табылады. Олардың
мағынысын қысқартылған түрде келтірсек: сіз лабиринт бойынша жүресіз, бір
жерлерде кедергілер болады т.с.с. Олардың алғашқылары екі өлшемді графика
жабдықтарымен жасалса, ал қазір үш өлшемді ойындарға айланып отыр.
Бұл ойынның аты ежелден атақты ойшылдармен, ежелгі грецияның
мифтеріндегі кейбір ертегілермен байланысты. Солардың бірі - Менатавр
жайлы аңыз - әңгіме. Бұл аңыз - әңгімеде бұқа басты адам жайлы баяндалады.
Соған сенсек Менатавр Лабиринттің қарауылы және тұтқыны болған. Сол жерге
оны құдайлар қамап қояды. Лабиринтке әр- түрлі адамдар сынақтан өту үшін
жіберіліп отырылған. Бірақ, шын жүзінде ол Лабиринтен шығу мүмкін емес,
себебі оның ең алдымен шығу жолын табу керек болатын, бірақ ол уақыт ішінде
Менатавр кез-келген адамды тауып алып, өлтіретін. Сондықтан бұл жерге
көптеген күш иелері кейбіреуді өлтіргілері келген болса, оларды сынақ
ретінде Лабиринтке жіберген. Кейіннен Лабиринт ойын ретінде тарихта
шығады. Лабиринтті көптеген адамдар уақыт өткізу үшін пайдаланған. Мысалға
Европаның ортағасырлық қалаларындағы аристократтық үйлерді алайық. Үлкен
үйлерінің қасында европалықтар өздерінің бақшаларын өсірген. Оларда әдетте
бақшаның арнайы гүлдерін өсіріп, лабиринтті істеп, кей – кездерде ойнап,
дем алатын. Олардың кесілген гүлдерінің биіктігі соншалықты биік– ол
шынымен де нағыз үлкен Лабиринт. Уақыт өте ондай лабиринттер сиректеніп
кетті, бірақ қазір де ондай лабиринттерді ескі қалпында қалған үйлерде
кездестіруге болады.
Қазіргі заманда Лабиринт өзінің маңызын жоғалтқан жоқ. Лабиринттер
балалардың логикаларының дамуын күшейтеді, оларды кішкентай балаларға
арналған кітаптарда жиі кездестіруге болады.
1. Есептің математикалық қойылымы
Лабиринт ойынын программалау. Әр бөлмелерді бір – бірімен
біріктіретін, әрқайсысы кем дегенде бір және үштен артық емес есіктері бар
бөлмелерден тұратын лабиринт берілген. Есіктердің біреуі лабиринтке
кіретін, екіншісі шығатын. Лабиринттің кірісінен шығысына баратын қысқа
жолды табу.
2. Есептi шығарудың тәсiлдерiн баяндау.
2.1Сұрыптау әдісі
Сұрыптау дегеніміз баламалар арасынан таңдау, шақырулардың сұрыптаулық
тізбегіне қосылған терминалды немесе оның құрауышын адрестеу, белгілі бір
ережеге сәйкес жиын элементтерін топ бойынша үлестіру. Сұрыптаудың бір түрі
– мәліметтерді сұрыптау нышанының мәндерінің өсуі немесе кемуі бойынша
ретке келтіру.
Сұрыптау программасы – реттеудің берілген қатынасына сәйкес мәліметтерді
реттеуге арналған программа. Сұрыптау – біріктіру (сортировка объединение)
командасының программалық жасақтама құрамына кіретін арнайы сұрыптау –
біріктіру программаның көмегімен орындалатын мәліметтерді сұрыптау мен
жинақтау.
2.1.1 Таңдау арқылы сұрыптау
Тәсіл идеясы массивтің максималды элементін тауып, оны соңғы элемент
(N номерлі) орнымен ауыстырылады. Содан кейін максималды элемент N-1 орынға
дейін ізделіп, сол N-1 орынға қойылады және т.с.с. Максимум емес, минимум
элемент ізделіп, оны бірінші, екінші және т.с.с. орынға қоюға болады.
Сонымен қатар бұл әдістің модификацияланған түрі- бір мезетте максимум және
минимум элементтерді іздеу қолданылады. Бұл жағдайда сыртқы циклдың
қадамдар саны N div 2.
Мысалы: а массивінің N бүтін сандарының өсуі бойынша таңдау арқылы
сорттау.
Program Sort_Tandau1;
Var a:array[1..20] of integer;
N,I,m,k,x: integer;
Begin
Write(‘Массив элементінің саны’);
Read(N);
For i:=1 to n do
Writeln(‘Массивті енгізіңіз’);
Read(a[i]);
For k:= n downto 2 do {k- max-ты іздеуге қажетті элементтер саны}
Bedin
m:=1; {m-max орны}
For k:=2 to k do if A[i]A[m] then m:=I;
{m мен k номерлі элементтерді орындарымен ауыстырамыз}
x:=a[m]; a[m]:=a[k]; a[k]:=x;
End;
For i:=1 to n do write(a[i],’’); {реттелген массив}
End.
Мысалы: Жоғарыдағы есеп, бірақ бір мезеттегі max пен min таңдау
арқылы.
Program Sort_Tandau2;
Var a:array[1..100] of integer;
N,i,m,k,x,p: integer;
Begin
Write(‘Массив элементтерінің саны’);
Read(N);
For i:=1 to n do
Writeln(‘Массивті енгізіңіз’);
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элементтер арасында ізделеді}
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 номерлі элементтерді орындармен ауыстырамыз}
x:=a[p]; a[p]:=a[k]; a[k]:=x;
If m=k then m:=p;
{егер max k орында тұрса, енді ол p орнында тұр}
{m және n-k+1 номерлі элементтерді орындарымен ауыстырамыз}
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.
2.1.2 Ауыстыру жіктеуі (обменная сортировка)
“Пузырек” әдісі: Ол жіктеудің ең қарапайым түрі болып саналады. Ол әдіс К1-
мен салыстырып, егер R1 мен R2 жазба кілттері тізбектелмеген болса, онда
оларды өзара орындарын ауыстырамыз. Содан кейін ол операцияны R2 мен R3, R3
пен R4-кe қолданылады. Ең соңында ол операциялар орындалып болғаннан соң
үлкен кілтті жазбалар оң жақ бағытта жылжи береді де, ең үлкен кілтті жазба
Rn орнында орналасады, сонда жазбалар Rn-1, Rn-2 позициясында орналасады,
сонда барлық жазбалар тізбектеледі.
Бұл әдістің “Пузырек” деп аталу себебі, орын ауыстыру процесі іске
асқаннан соң, Rn жазбасы жоғарыда, ал R1 жазбасы төменде
орналасады да, үлкен элементтер “Пузырек” тәрізді жоғарғы жаққа ұмтылады,
сәйкес позицияға орналасады, “Пузырек” әдісі “Бату” (погружение) әдісіне
қарама-қарсы болып саналады да, ол әдіс тағы “таралу” әдісі деп те аталады.
R1 ... Rn жазбалардың кілттері жіктеу аяқталғаннан соң K1= ... Kn
түрде тізбектеледі.
B1 [Алғашқы Bound орнатқыш] Bound(n орнатамыз. (Bound – ең жоғарғы
элементтің индексі,оның соңғы позицияда тұрғанын әлі білмейміз)
B2 [j бойынша цикл]t(0 орнатамыз. j=1,2, ... Bound – 1 болса, B3 қадамын
орындаймыз. Кейін B4 қадамына өтеміз (Егер Bound=1 болса, онда B4-ke
ойлабастан қолма-қол өтеміз).
B3 [Салыстыру R; мен Rj+1орын ауыстыру]
Егер Kjkj+1 болса, онда Rj(Rj+1 орынын ауыстырып, t(j орнатамыз.
B4 [ауыстырулар болды ма?] Егер t=0 болса, алгоритм жұмысын аяқтайды. Кері
жағдайда Bound ( t орнатып, B2 қадамына қайтып ораламыз.
Мысал: A(100) массив элементтерін кему реті бойынша реттеу.
Program missal;
Const n=100;
Var a:array[1..n] of integer;
I,b,pr,k:integer;
Begin
For i:=1 to n do
Read(a[i]);
Pr:=1; k:=1;
While (pr=1) do
Begin
Pr:=0;
For i:=1 to n-k do
If a[i]a[i+1] then
Begin
B:=a[i];
A[i]:=a[i+1];
A[i+1]:=b;
Pr:=1;
End;
Inc(k);
End;
For i:=1 to n do
Writeln(a[i]);
End.
2.3Екілік іздеу әдісі (бинарды іздеу, екіге бөлу арқылы іздеу)
Жұмыс принціпі: массив екіге бөлінеді және салыстыру үшін ортаңғы элемент
алынады. Бұл элемент ізделінетін элементпен бірднй болса, онда іздеу жұмысы
бітеді. Егер ортаңғы элемент ізделінетін элементтен кіші болса, онда осы
элементтің сол жақтағы элементтер де ізделінетін элементтен кіші болады.
Сондықтан оларды іздеу ортадан алып тастауға болады, тек қана оң жақтағы
элементтерді қалдырып. Ал егер ортаңғы элемент ізделінетін элементтен үлкен
болса, онда осы элементтің оң жақтағы элементтер де ізделінетін элементтен
үлкен болады. Мұндай жағдайда сол жақтағы элементтер іздеу ортада қалады.
Келесі этапта осы әрекеттер қалған бөлігіне орындалады. Нәтижесінде
массивтің 14 бөлігі қалады. Және осындай әрекеттер элемент табылғанға
дейін немесе іздеу ортасы нолге тең болғанға дейін орындалады.
Бинарды іздеу әдісінің схемасы.
Ізделінетін элемент Х
Бастапқы массив Vector
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 n=16
1 4 7 11 14 18 20
L=1 R=7
i:=(L+R) div 2 = 4
Vector[i]x
L:=i+1=5
5 6 7
14 18 20
L=5 R=7
i:=(L+R) div 2 = 6
Vector[i]x
R:=i-1=5
5
14
L=R=5
i:=(L+R) div 2 = 5
Vector[i]=x
Ізделінген элемент 5 позицияда табылды
Жоғарыда көрсетілген алгоритмнің программасы мынындый:
...
L:=1; R:=n;
While (L=R) do
Begin
i:=(L+R) div 2;
if Vector[i]=x then
Break
Else
If Vector[i]x then L:=i+1 else R:=i-1;
End;
If Vector[i]=x then writeln(‘Ізжелінген элемент’,i:3,’ позицияда табылды’)
else writeln(‘Ізжелінген элемент табылған жоқ’);
...
2.4 Қосалқы программалар
Практикалық есертерге программалар құрғанда ол үшін программаны белгілі-бір
бөлігін әр түрлі мәндер бойынша бірнеше рет қайталап, пайдалануға тура
келеді. Мұндай бір типтес программа бөлігін программа әр бөлігінде қайталап
жаза бермеу мақсатында, оны жеке программа ретінде бөліп жазған қолайлы.
Жеке программа ретінде бөлек жазылған қажет кезінде оған оралып, оны
пайдаланып отыруға болатын негізгі программаның арнайы бөлігін қосалқы
программа деп аталады. Қосалқы программадан автоматты түрде шығуға және
енуге болады. Қосалқы программаның екі түрі бар: процедуралар мен
функциялар.
Кез-келген процедура программаға ұқсас түрде жазылады. Олардың тақырыбы,
баяндау және оператор бөлімдері болады. процедураның жалпы түрі:
Procedure [процедураның аты] ([формальды параметрі]);
[баяндау бөлімі]
Begin
[операторлар бөлімі]
End;
2.6 Паскаль тіліндегі графиктік режиммен жұмыс.
Компьютердің мониторы нүктелердің (пиксельдардың) жиынтығынан тұрады.
Ал символдарды нүктелердің жиынтығы құрайтыны алдыңғы тарауда қарастырылды.
Егер тиісті режимде тек символдармен ғана жұмыс жасалса, графиктік режимде
әрбір нүктелермен жұмыс жасауға болады. Мысалы текстік режимде символдар
түсін өзгертуге болатын болса, графиктік режимде әрбір нүктенің түсін
немесе нүктелерден құралған әртүрлі фигуралар мен текстердің түстерін
әртүрлі қылып шығаруға болады. Компьютердің графиктік режимдегі жұмысы
монитор мен оның видеоадаптерімен тығыз байланысты. Монитор кәдімгі
телевизор секілді жұмыс істейді. Экрандағы бейнелер секундына 25 рет жоқ
болып кетіп қайта құралады. Адамның көзі мұндай кадрлардың тез ауыстырылып
жатқанын сезбейтіндіктен, оған экрандағы бейне бір орында тұрғандай болып
әсер етеді.
Графиктік режимде экранға бейнелер шығару үшін координаталр жүйесі
қолданылады. Бейнелерді құрайтын нүктелер экранда қатарлар бойынша реттеліп
орналасатындықтан, бір қатардағы нүктелер Х осі бойынша солдан оңға қарай
өзгереді деп, ал қатарлар - Y осі бойынша жоғарыдан төмен қарай өзгереді
деп алынады. Нүктелердің басы ретінде экранның сол жақ жоғарғы бұрышынан
x=0 және y=0 деп алынады. Ал барлық қатарлар (MaxY) мен ондағы орналасқан
нүктелер саны (MaxX) видеоадаптердің типі мен оның жұмыс режиміне
байланысты болады.
Turbo Pascal - да графиктік режимде жұмыс істеуге арналған арнаулы
функциялар мен процедуралар GRAPH модулі 80-ге жуық графиктік функциялар
мен процедуралардан және оншақты стандартты тұрақтылардын тұрады. Оларды
текстік режимде пайдалану үшін программаның басында келесі амалдар орындау
қажет:
1. USES қызметші сөзінде GRAPH млдулі жазылады; USES GRAPH
2. Графиктік режим орнатылады:
Var d1, d2 : integer;
Begin d1:=Detect; InitGraph(d1, d2, ‘C:\Turbo\Graph’);
Мұндағы: InitGraph - графикалық режимді орнату процедурасы, d1-
графиктік режим драйверінің типін, d2 - видеоадаптердің жұмыс режимінің
нөмірін анықтайтын тұрақтылар. Бұл шамалар монитор мен видеоадаптер
типтеріне байланысты болады. Егер программада графиктік режим драйверінің
типіне Detect стандартты тұрақты шамасы берілсе, онда InitGraph процедурасы
автоматты түрде өзіне керекті графиктік драйвердің типін және монитор мен
видеоадаптердің типтеріне сәйкес келетін графиктік жұмыс режимін анықтап
алады. Апострофтардың ішінде орналасқын үшінші параметр Graph.tpu файлының
дискіде орналасқан жолын көрсетеді. Егер ол Turbo Pascal терезесін ашқан
Turbo.exe файылымен бірге каталогта орналасатын болса, жол орнына іші бос
екі апостроф қойылып кетеді
2.Алгоритмнiң негiзгi ойын баяндау
Тurbo Pascal тілінде 8 стандартты модульдер бар.Осы стандартты
модульдерге көптеген әртүрлі типтер, тұрақтылар, процедура мен функциялары
келтірілген. Тurbo Pascal тілінде келесі стандартты модульдер
пайдаланады:System, Dos, Crt, Printer.Graph, Overlay, turbo3, graph3.
Graph, turbo3, graph3 модульдері бөлек TRU файлында орналасқан, ал
қалған модульдер Turbo.tpl кітапханалық файлдың құрамына кіреді. Тек System
модулі ғана кез келген программаға автоматты түрде қосылады, ал қалған
модульдерді қосу үшін олардың аттарын USES деген сөзден кейін көрсету
керек. Бұл ойынға пайдаланған стандартты модуль Crt-ны қарастырайық.
CRT модулі. Экранмен жұмыс істеу үшін тексттік режимнің басқаруын
қамтамасыз ететін процедура мен функциялары осы модульге жатады. CRT
модулініңқосалқы программалар көмегімен курсорды экранның кез келген
позициясына жылжытуға, шығарылатын символдардың және олардың фонының түсін
өзгертуге терезелерді ұйымдастыруға болады. Мысалы,
а)GOTO XY (X,Y:byte)-курсорды экранның немесе терезенің қажетті
орнына жылжытады;
б)TextСolor(color:byte)-символдың түсін анықтайды.
в)TextBackGround(color:byte)-фонның түсін анықтайды.
г)Clrscr-экранды немесе терезені тазалайды және курсорды экранның сол
жақ жоғарғы бұрышына орналастырады.
д)readkey-клавиатурадан символды оқиды. Кез келген клавиша басылғанға
дейін программаның орындалуы уақытша тоқтатылады.
е)keypressed- TRUE-ді қайтарады, егер клавиша басылған болса және
FALSE-ті қарсы жағдайда қайтарады. Программаның орындалуы
тоқтатылмайды.
ж)window(x1,y1,x2,y2:byte)-экранда тексттік терезені анықтайды. x1,y1-
терезенің сол жақ жоғарғы бұрышының координатасы, x2,y2-оң жақ
төменгі бұрышының координатасы.
Мысал,
Uses crt;
Var ch:char;
Begin
Repeat
Ch:=readkey;
If ch=chr(0) then {қызметтік клавиша басылған}
Begin
Writeln(‘қызметтік клавиша’);
Ch:=readkey;
End;
Writeln(ord(ch));
Until ord(ch)=27; {Esc клавишасы басылғанға дейін}
End.
Шарт бойынша орындалатын қайталау операторы. Бұл нұсқау көп жағдайда
қайталаудың саны белгісіз болған жағдайда пайдаланады. Оның жалпы түрі:
Repeat
... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz