Жау кемесі


Пән: Информатика, Программалау, Мәліметтер қоры
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 18 бет
Таңдаулыға:
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 18 бет
Таңдаулыға:
Кіріспе
Бұл курстық жұмыста қазіргі кезде кеңінен қолданылатын программалау
жүйесінің бірі – Turbo Pascal тілі. Программа Turbo Pascal тілі Borland
корпорациясының 7.0 нұсқалы 16 байттық Turbo Pascal капиляторын және MS DOC
операциялық жүйесін қолдану арқылы Turbo Pascal тілінде жазылған.
Бұл курыстық жұмыс ойын болғандықтан негізінен Turbo Pascal тілінің
графиктік модулын көп қолдандым. График модуль кез келген геометриялық
бейнелерді сызғанда негізінен әр түрлі процедуралар мен функцияларды
қолданады.
Функция түсінігі жалпы процедурамен бірдей, бірақ қолдануының мынадай
ерекшелігі бар: функция өзінің нәтижесінде шақыру нүктесіне белгілі бір мән
қайтарады; фукция атауы өрнектерде операнда есебінде қолданыла алады.
Паскаль тілінде процедура мен функциялар екі топқа бөлінеді: тілге
енгізілген немесе стандартты, қолданушы құрастырған немесе жасанды.
Бұл курстық жұмыстың мақсаты: Негізгі сандық әдістерінің,
комбинаторлық ойындарының алгоритмдері мен программасын құруды үйрену.
Қайталану нұсқауын күрделі есептерге қолдану және есептің математикалық
моделін құру. Осы жұмыстарды орындай отырып, “Алгоритмизация және
программалау тілдері” курсынан алған білімді, пайдалану деңгейін
компьютермен іс-тәжірибелік жұмыс барысында нығайту.
1 Ойынның берілуі
Ойынның мақсаты экранда қозғалып бара жатқан жау кемесін ату. Кеменің
жылдамдығын программа кездей соқ таңалады. Кемені дәлдеу дүрбінің көмегімен
жүріледі. Дүрбіні перне арқылы басқарамыз. Кеменің жылдамдығын компьютер 1-
5 бірлігіндегі жылдамдық бойынша өзі таңдап алады және кез келген жағдайда
да, кеме жылдамдығы торпеда жылдамдығынан төмен. Ойын барысында барығы 5
кеме болады. Бес кеме шығып болған соң ойын бітеді.
2 Операторлар мен функциялардың қолданлуы
Есептің алгоритмін құру барысында Repeat қайталану нұсқауы, шартты нұсқау,
меншіктеу нұсқауы, Randomize процедурасы, Random математикалық функциясы
қолданылады.
Repeat қайталану нұсқауы
Repeat қайталану нұсқауы – мұнда шарт логикалық өрнек.Ең алдымен цикл
денесіндегі ңұсқаулар орындалады.Сонан кейін until нұсқауындағы шарт
орындалады.Егер бұл өрнектің нәтижесі жалған болса онда цикл денесіндегі
нұсқаулар қайталанып орындалады.Eгер шарт өрнегінің нәтижесі ақиқат болса
онда repeat цикл операторы өз жұмысын аяқтайды.Яғни программаның орындалу
бағыты untilнұсқауынан кейінгі орналасқан нұсқауға ауысады.Repaet және
until түйінді сөздері нұсқаулық жақшаның қызметін атқарады.Сондықтан begin
және end нұсқаулық жақшаларын қолдану қажет емес. Repeat операторының
жалпы жазылуы:
Repeat statement until expession;
Мұндағы : Repeat – қайталау
Statement - нұсқау
Until – дейін
Expession – шарт,логикалық өрнек.
Бұл нұсқауда бірінші statement операторы орындалады, содан кейін барып
логикалық өрнек тексеріледі. Сол үшін бұл нұсқауды келесі шарт бойынша
орындалуын қайталау деп атайды. Бұл процесс expession жалған болғанға дейін
орындалады. Ал, қалай оның мағынасы ақиқат болғанда, цикл тоқтайды.
Statement операторы құрамды нұсқау болуы да мүмкін.
Begin
Statement_1;
Statement_2;
. . . . . . . . . ..;
Statement_n;
End;
Repeat . . . Until циклінде Begin . . . End операторлары болмауы да мүмкін.
Онда, Repeat . . . Until операторы жалпы жағдайда мына түрде жазылады:
Repeat
Statement_1;
Statement_2;
. . . . . . . . . ..;
Statement_n;
Until expession;
Кейбір жағдайларда цикл шексіз орындалады:
Repeat
Statement_1;
Statement_2;
. . . . . . . . . ..;
Statement_n;
Until False;
Шартты көшу операторы
Алгоритмдік тілде қойылған шартқа байланысты екі немесе екіден көп
тармақтары бар алгоритм – тармақталған алгоритм деп аталады. Осындай
тармақталған алгоритмді программалауға шартты көшу операторы қолданылады.
Жалпы жазылуы:
If expression then statement1 else statement2;
Мұндағы : If – “егер” қызметші сөзі
Then – “онда” қызметші сөзі
Else – “әйтпесе” қызметші сөзі
Бұл оператор мына жағдайда орындалады: Егер expression ақиқат болса, онда
басқару statement 1-ге беріледі, ал жалған болса else сөзінен кейінгі
statement 2 орындалады. Ал, берілген нұсқаудың қате варианты:
If expression then statement1 else; statement2;
Мұнда бірінші нүктелі үтір If . . . then . . . else операторын else
оператоындағы жағдайды қарастырмай орындайды, сосын (кез-келген жағдайда)
statement 2 операторын орындайды. Бұл мысалдың синтаксисі формальді түрде
дұрыс саналғанымен, алгоритмдік орындалудың логикасы бұзылады да, логикалық
қате пайда болады. Ал, логикалық қатені программадан табу синтаксистік
қатені табудан күрделірек. Күрделі болу себебі, синтаксис автоматты
транслятормен тексіріледі де, ал программаның логикалық жұмысымен өзіміз
айналысамыз.
Меншіктеу операторы
Негізгі операторлардың бірі. Ол қарапайым операторлар тобына жатады.
Меншіктеу операторының жалпы жазылуы:
Variable:=expression
Мұндағы: Variable – айнымалы атауы
Expression - өрнек
: - меншіктеу амалының таңбасы
Randomize процедурасы:
Қарастырылатын есепте берілетін сандарды міндетті түрде кездойсоқ сандар
жиыны деп алу керек. Ол үшін бізге кездойсоқ сандар инилизациясының
генераторы Randomize процедурасын шақыру керек.
Бұл процедураның жалпы жазылуы: Procedure Randomize;
Random функциясы
Random – математикалық функцияға жатады. Паскаль тілінде математикалық
функциялардың мәні тек нақты және бүтін типті болады. Бұл функция
Randomize процедурасынан кейін шақырылады.
Математикада жазылуы Паскальда жазылуы Нәтиже типі
0 мен 1-дің арасындағы
кез-келген нақты сан Random Нақты (Real)
0-ден х-ке дейінгі Random (х) Бүтін(Integer)
кез-келген бүтін сан
Random математикалық функциясының жалпы жазылуы
function random [(диапазон :word)];
1.1- кестедегі Random (х) функциясы 0 мен Х арасындағы кез-келген бүтін
оң санды береді, яғни 0=YX. Мысалы, Random (3) болғанда 0 мен 3 саны
аралығындағы бүтін сандар, яғни Y=0,1,2. Егер, a=xb аралықтағы кез
келген санды алу қажет болса, өрнекті Random (b-a)+a түрінде жазамыз.
Random функциясы х параметрінсіз жазылса, нәтиже 0 мен 1-дің арасындағы
кез-келген нақты санды береді, яғни 0=X1. (Word типті).
3 Сұрыптау әдістері
3.1 Ауыстырып сұрынтау (обменная сортировка)
“Көпіршік” әдісі: Ол жіктеудің ең қарапайым түрі болып саналады. Ол әдіс
К1 мен салыстырып, егер R1 мен R2 жазба кілттері тізбектелмеген болса, онда
оларды өзара орындарын ауыстырамыз. Содан кейін ол операцияны R2 мен R3
, R3 пен R4 - ke қолданылады. Ең соңында ол операциялар орындалып
болғаннан соң үлкен кілтті жазбалар оң жақ бағытта жылжи береді де, ең
үлкен кілтті жазба 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 қадамына қайтып ораламыз.
I=jbound
J = Bound ИӘ
жоқ
3.2 Хоар сұрыптауы
Бұл сұрыптауды жылдам сұрыптау деп те атайды. Әдiстi 1962 жылы Оксфорд
университетiнiң профессоры К.Хоар жасаған болатын. N бүт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 есепшеге бөлуге болады.
Берiлген рекурсивтi алгоритмнiң бiр шақырылуының есептеу қиындығы
сұрыпталатын массив үзiндiсiндегi элементтер санына пропорционал.
Мыс: N бүтiн сандардан құралған А массивiн жылдам сұрыптау арқылы өсу
ретiмен орналастыру.
Program Quick_Sort;
Var a:array[1..20] of integer;
N,i : integer;
{Процедураға сұрыпталатын үзiндiнiң оң және сол шекаралары берiледi}
Procedure QSort(L,R:integer);
Var X,y,i,j:integer;
Begin
X:=a[(L+R) div 2];
i:=L; j:=R;
while i=j do
Begin
while a[i]X do i:=i+1;
while a[j]X do j:=j-1;
if i=j then
Begin
y:=a[i]; a[i]:=a[j]; a[j]:=y;
i:=i+1; j:=j-1;
end;
end;
if Lj then QSort(L,j);
if iR then QSort(i,R);
end;
Begin
write('Массив элементтерiнiң саны');
read(N);
For i:=1 to n do
writeln('Массивтi енгiзiңiз');
read(a[i]);
QSort(1,n); {бiрiншiден n-шiге дейiнгi элементтердi реттеу}
for i:=1 to n do
write(a[i],' '); {реттелген массив}
end.
4 Қосалқы программалар
Практикалық есептерде программаны құрганда, ол программаның белгілі
бір бөлігін бір неше рет қайталауға тура келеді. Мұндай типтес программа
бөлігін қайталап жаза бермеу мақсатында оны жеке қосалқы программа ретінде
бөліп жазып, оған атау қойылады. Осындай атауы арқылы бір не бір неше рет
іске қосцға болатын программа бөлігін қосалқы программа деп атаймыз.
Қосалқы программаның Turbo Pascal тілінде екі түрі бар:
• Процедура
• Функция
Қосалқы программаға автоматты түрде енуге және одан шығуға болады. Қосалқы
программаны пайдалану төмендегідеймүнкіндік береді :
• Негізгі программаның көлемін кішірейтеді.
• Негізгі программада пайдаланган айнымалыларды қосалқы программада
пайдалануға болады.
• Қосалқы программаны пайдалану құрлымдық программалауға мүнкіндік
береді.
Turbo Pascal тілінде айнымалылар негізгі бөлімде сипатталса, онда олар
глобальды, егер айнымалылар қосалқы программада сипатталса олар локальды
айнымалылар болады. Ал қосалқы программаның атауында берілген айнымалылар
формальды айнымалылар болады.
Әрбір қосалқы программаның атауы боладыжәне олар айнымалыларды сипаттау
бөлімінен құралып, операторлық жақшаларда орналасқан командалар жиынынан
турады.
Процедура
Кез келген процедураның жазылуы программаға ұқсас. Олар атау сипаттау және
оператор бөлімінен тұрады. Процедураның жалпы жазылуы түрі:
Procedure proc_аты [(формальды операторлар тізбегі )];
Var сипаттау бөлімі
Begin
операторлар бөлімі
End.
Программаның орындалуы негізгі программаның операторларының орындалуынан
басталады. Негізгі программа қажет болған жағдайда процедураға көшеді. Яғни
процедура шақырлады. Бұл кезде программаға берілген айнымалылар негізгі
программадан процедураға беріледі. Процедура орындалын болған соң, оның
нәтижесі негізгі программа қай жерден көшті сол жерге беріледі. Содан
негізгі программаның орындалуы жалғаса береді. Негізгі программада
процедураның шақырлу түрі:
процедура аты [(параметрлер тізбегі)];
Процедураны шақырғанда басқарлу процедураға беріледі, және процедурадағы
формальды параметрлер сәйкес нақты параметрлерге ауысады. Формальды және
нақты параметрлер үшін келесі шарттар орындалатын болу керек:
• Формальды және нақты параметрлер саны бірдей болу.
• Формальды және нақты параметрлердің типі және орналасу реті бірдеі
болу.
Егер формальды параметрлер айнымалы ретінде анықталса онда формальды
параметрлер алдыны VAR түйін сөзі, ал формальды параметрлер тұрақты ретінде
анықталса CONST сөзі жазылады. Мыс:
Procedure PR1( x:real; var y: real; const st: string );
Стандартты Halt және Exit процедуралары
Бұлар программадан және процедурадан шығуға арналған. Halt – тоқта, Exit
– шығу деген мағана береді.
Функция
Функцияның процедурадан ерекшелігі:
• Функциябір ғана белгілі менді қабылдайды, яғни нәтиже ретінде бір
мәнді қайтарады.
• Нәтиже функция аты арқылы алынады.
Turbo Pascal тілінде функцияның жалпы жазылуы:
Function fun_аты (параметрлер тізбегі ) : нәтиже типі;
Var сипаттау бөлімі
Begin
операторлар бөлімі
End.
Функция нақты параметрлерге мәндер берілгеннен кейін өз аты арқылы
шақырлады. Сонымен қатар функцияны тікелей өрнек ішіне шақыруға болады.
Функция денесінде арнайы меншіктеу операторы болу керек.
Мыс: Max:= M; Яғни функцияда есептелген нәтиже функция атына меншіктеледі.
Негізгі программада функция мәні тек функция атауы арқылы пайдаланылады.
4.1 Дауыс
Егер программаның орындалу барсында дауыстың болуы қажет болса онда,
программаның алғашқы жолына USES CRT; - ты жазу керек. Sound(300) операторы
компьютерге бір қалыпты 300гц жиліктегі дауысты шығартады. Дауыстың қатты
болуы ... жалғасы
Бұл курстық жұмыста қазіргі кезде кеңінен қолданылатын программалау
жүйесінің бірі – Turbo Pascal тілі. Программа Turbo Pascal тілі Borland
корпорациясының 7.0 нұсқалы 16 байттық Turbo Pascal капиляторын және MS DOC
операциялық жүйесін қолдану арқылы Turbo Pascal тілінде жазылған.
Бұл курыстық жұмыс ойын болғандықтан негізінен Turbo Pascal тілінің
графиктік модулын көп қолдандым. График модуль кез келген геометриялық
бейнелерді сызғанда негізінен әр түрлі процедуралар мен функцияларды
қолданады.
Функция түсінігі жалпы процедурамен бірдей, бірақ қолдануының мынадай
ерекшелігі бар: функция өзінің нәтижесінде шақыру нүктесіне белгілі бір мән
қайтарады; фукция атауы өрнектерде операнда есебінде қолданыла алады.
Паскаль тілінде процедура мен функциялар екі топқа бөлінеді: тілге
енгізілген немесе стандартты, қолданушы құрастырған немесе жасанды.
Бұл курстық жұмыстың мақсаты: Негізгі сандық әдістерінің,
комбинаторлық ойындарының алгоритмдері мен программасын құруды үйрену.
Қайталану нұсқауын күрделі есептерге қолдану және есептің математикалық
моделін құру. Осы жұмыстарды орындай отырып, “Алгоритмизация және
программалау тілдері” курсынан алған білімді, пайдалану деңгейін
компьютермен іс-тәжірибелік жұмыс барысында нығайту.
1 Ойынның берілуі
Ойынның мақсаты экранда қозғалып бара жатқан жау кемесін ату. Кеменің
жылдамдығын программа кездей соқ таңалады. Кемені дәлдеу дүрбінің көмегімен
жүріледі. Дүрбіні перне арқылы басқарамыз. Кеменің жылдамдығын компьютер 1-
5 бірлігіндегі жылдамдық бойынша өзі таңдап алады және кез келген жағдайда
да, кеме жылдамдығы торпеда жылдамдығынан төмен. Ойын барысында барығы 5
кеме болады. Бес кеме шығып болған соң ойын бітеді.
2 Операторлар мен функциялардың қолданлуы
Есептің алгоритмін құру барысында Repeat қайталану нұсқауы, шартты нұсқау,
меншіктеу нұсқауы, Randomize процедурасы, Random математикалық функциясы
қолданылады.
Repeat қайталану нұсқауы
Repeat қайталану нұсқауы – мұнда шарт логикалық өрнек.Ең алдымен цикл
денесіндегі ңұсқаулар орындалады.Сонан кейін until нұсқауындағы шарт
орындалады.Егер бұл өрнектің нәтижесі жалған болса онда цикл денесіндегі
нұсқаулар қайталанып орындалады.Eгер шарт өрнегінің нәтижесі ақиқат болса
онда repeat цикл операторы өз жұмысын аяқтайды.Яғни программаның орындалу
бағыты untilнұсқауынан кейінгі орналасқан нұсқауға ауысады.Repaet және
until түйінді сөздері нұсқаулық жақшаның қызметін атқарады.Сондықтан begin
және end нұсқаулық жақшаларын қолдану қажет емес. Repeat операторының
жалпы жазылуы:
Repeat statement until expession;
Мұндағы : Repeat – қайталау
Statement - нұсқау
Until – дейін
Expession – шарт,логикалық өрнек.
Бұл нұсқауда бірінші statement операторы орындалады, содан кейін барып
логикалық өрнек тексеріледі. Сол үшін бұл нұсқауды келесі шарт бойынша
орындалуын қайталау деп атайды. Бұл процесс expession жалған болғанға дейін
орындалады. Ал, қалай оның мағынасы ақиқат болғанда, цикл тоқтайды.
Statement операторы құрамды нұсқау болуы да мүмкін.
Begin
Statement_1;
Statement_2;
. . . . . . . . . ..;
Statement_n;
End;
Repeat . . . Until циклінде Begin . . . End операторлары болмауы да мүмкін.
Онда, Repeat . . . Until операторы жалпы жағдайда мына түрде жазылады:
Repeat
Statement_1;
Statement_2;
. . . . . . . . . ..;
Statement_n;
Until expession;
Кейбір жағдайларда цикл шексіз орындалады:
Repeat
Statement_1;
Statement_2;
. . . . . . . . . ..;
Statement_n;
Until False;
Шартты көшу операторы
Алгоритмдік тілде қойылған шартқа байланысты екі немесе екіден көп
тармақтары бар алгоритм – тармақталған алгоритм деп аталады. Осындай
тармақталған алгоритмді программалауға шартты көшу операторы қолданылады.
Жалпы жазылуы:
If expression then statement1 else statement2;
Мұндағы : If – “егер” қызметші сөзі
Then – “онда” қызметші сөзі
Else – “әйтпесе” қызметші сөзі
Бұл оператор мына жағдайда орындалады: Егер expression ақиқат болса, онда
басқару statement 1-ге беріледі, ал жалған болса else сөзінен кейінгі
statement 2 орындалады. Ал, берілген нұсқаудың қате варианты:
If expression then statement1 else; statement2;
Мұнда бірінші нүктелі үтір If . . . then . . . else операторын else
оператоындағы жағдайды қарастырмай орындайды, сосын (кез-келген жағдайда)
statement 2 операторын орындайды. Бұл мысалдың синтаксисі формальді түрде
дұрыс саналғанымен, алгоритмдік орындалудың логикасы бұзылады да, логикалық
қате пайда болады. Ал, логикалық қатені программадан табу синтаксистік
қатені табудан күрделірек. Күрделі болу себебі, синтаксис автоматты
транслятормен тексіріледі де, ал программаның логикалық жұмысымен өзіміз
айналысамыз.
Меншіктеу операторы
Негізгі операторлардың бірі. Ол қарапайым операторлар тобына жатады.
Меншіктеу операторының жалпы жазылуы:
Variable:=expression
Мұндағы: Variable – айнымалы атауы
Expression - өрнек
: - меншіктеу амалының таңбасы
Randomize процедурасы:
Қарастырылатын есепте берілетін сандарды міндетті түрде кездойсоқ сандар
жиыны деп алу керек. Ол үшін бізге кездойсоқ сандар инилизациясының
генераторы Randomize процедурасын шақыру керек.
Бұл процедураның жалпы жазылуы: Procedure Randomize;
Random функциясы
Random – математикалық функцияға жатады. Паскаль тілінде математикалық
функциялардың мәні тек нақты және бүтін типті болады. Бұл функция
Randomize процедурасынан кейін шақырылады.
Математикада жазылуы Паскальда жазылуы Нәтиже типі
0 мен 1-дің арасындағы
кез-келген нақты сан Random Нақты (Real)
0-ден х-ке дейінгі Random (х) Бүтін(Integer)
кез-келген бүтін сан
Random математикалық функциясының жалпы жазылуы
function random [(диапазон :word)];
1.1- кестедегі Random (х) функциясы 0 мен Х арасындағы кез-келген бүтін
оң санды береді, яғни 0=YX. Мысалы, Random (3) болғанда 0 мен 3 саны
аралығындағы бүтін сандар, яғни Y=0,1,2. Егер, a=xb аралықтағы кез
келген санды алу қажет болса, өрнекті Random (b-a)+a түрінде жазамыз.
Random функциясы х параметрінсіз жазылса, нәтиже 0 мен 1-дің арасындағы
кез-келген нақты санды береді, яғни 0=X1. (Word типті).
3 Сұрыптау әдістері
3.1 Ауыстырып сұрынтау (обменная сортировка)
“Көпіршік” әдісі: Ол жіктеудің ең қарапайым түрі болып саналады. Ол әдіс
К1 мен салыстырып, егер R1 мен R2 жазба кілттері тізбектелмеген болса, онда
оларды өзара орындарын ауыстырамыз. Содан кейін ол операцияны R2 мен R3
, R3 пен R4 - ke қолданылады. Ең соңында ол операциялар орындалып
болғаннан соң үлкен кілтті жазбалар оң жақ бағытта жылжи береді де, ең
үлкен кілтті жазба 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 қадамына қайтып ораламыз.
I=jbound
J = Bound ИӘ
жоқ
3.2 Хоар сұрыптауы
Бұл сұрыптауды жылдам сұрыптау деп те атайды. Әдiстi 1962 жылы Оксфорд
университетiнiң профессоры К.Хоар жасаған болатын. N бүт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 есепшеге бөлуге болады.
Берiлген рекурсивтi алгоритмнiң бiр шақырылуының есептеу қиындығы
сұрыпталатын массив үзiндiсiндегi элементтер санына пропорционал.
Мыс: N бүтiн сандардан құралған А массивiн жылдам сұрыптау арқылы өсу
ретiмен орналастыру.
Program Quick_Sort;
Var a:array[1..20] of integer;
N,i : integer;
{Процедураға сұрыпталатын үзiндiнiң оң және сол шекаралары берiледi}
Procedure QSort(L,R:integer);
Var X,y,i,j:integer;
Begin
X:=a[(L+R) div 2];
i:=L; j:=R;
while i=j do
Begin
while a[i]X do i:=i+1;
while a[j]X do j:=j-1;
if i=j then
Begin
y:=a[i]; a[i]:=a[j]; a[j]:=y;
i:=i+1; j:=j-1;
end;
end;
if Lj then QSort(L,j);
if iR then QSort(i,R);
end;
Begin
write('Массив элементтерiнiң саны');
read(N);
For i:=1 to n do
writeln('Массивтi енгiзiңiз');
read(a[i]);
QSort(1,n); {бiрiншiден n-шiге дейiнгi элементтердi реттеу}
for i:=1 to n do
write(a[i],' '); {реттелген массив}
end.
4 Қосалқы программалар
Практикалық есептерде программаны құрганда, ол программаның белгілі
бір бөлігін бір неше рет қайталауға тура келеді. Мұндай типтес программа
бөлігін қайталап жаза бермеу мақсатында оны жеке қосалқы программа ретінде
бөліп жазып, оған атау қойылады. Осындай атауы арқылы бір не бір неше рет
іске қосцға болатын программа бөлігін қосалқы программа деп атаймыз.
Қосалқы программаның Turbo Pascal тілінде екі түрі бар:
• Процедура
• Функция
Қосалқы программаға автоматты түрде енуге және одан шығуға болады. Қосалқы
программаны пайдалану төмендегідеймүнкіндік береді :
• Негізгі программаның көлемін кішірейтеді.
• Негізгі программада пайдаланган айнымалыларды қосалқы программада
пайдалануға болады.
• Қосалқы программаны пайдалану құрлымдық программалауға мүнкіндік
береді.
Turbo Pascal тілінде айнымалылар негізгі бөлімде сипатталса, онда олар
глобальды, егер айнымалылар қосалқы программада сипатталса олар локальды
айнымалылар болады. Ал қосалқы программаның атауында берілген айнымалылар
формальды айнымалылар болады.
Әрбір қосалқы программаның атауы боладыжәне олар айнымалыларды сипаттау
бөлімінен құралып, операторлық жақшаларда орналасқан командалар жиынынан
турады.
Процедура
Кез келген процедураның жазылуы программаға ұқсас. Олар атау сипаттау және
оператор бөлімінен тұрады. Процедураның жалпы жазылуы түрі:
Procedure proc_аты [(формальды операторлар тізбегі )];
Var сипаттау бөлімі
Begin
операторлар бөлімі
End.
Программаның орындалуы негізгі программаның операторларының орындалуынан
басталады. Негізгі программа қажет болған жағдайда процедураға көшеді. Яғни
процедура шақырлады. Бұл кезде программаға берілген айнымалылар негізгі
программадан процедураға беріледі. Процедура орындалын болған соң, оның
нәтижесі негізгі программа қай жерден көшті сол жерге беріледі. Содан
негізгі программаның орындалуы жалғаса береді. Негізгі программада
процедураның шақырлу түрі:
процедура аты [(параметрлер тізбегі)];
Процедураны шақырғанда басқарлу процедураға беріледі, және процедурадағы
формальды параметрлер сәйкес нақты параметрлерге ауысады. Формальды және
нақты параметрлер үшін келесі шарттар орындалатын болу керек:
• Формальды және нақты параметрлер саны бірдей болу.
• Формальды және нақты параметрлердің типі және орналасу реті бірдеі
болу.
Егер формальды параметрлер айнымалы ретінде анықталса онда формальды
параметрлер алдыны VAR түйін сөзі, ал формальды параметрлер тұрақты ретінде
анықталса CONST сөзі жазылады. Мыс:
Procedure PR1( x:real; var y: real; const st: string );
Стандартты Halt және Exit процедуралары
Бұлар программадан және процедурадан шығуға арналған. Halt – тоқта, Exit
– шығу деген мағана береді.
Функция
Функцияның процедурадан ерекшелігі:
• Функциябір ғана белгілі менді қабылдайды, яғни нәтиже ретінде бір
мәнді қайтарады.
• Нәтиже функция аты арқылы алынады.
Turbo Pascal тілінде функцияның жалпы жазылуы:
Function fun_аты (параметрлер тізбегі ) : нәтиже типі;
Var сипаттау бөлімі
Begin
операторлар бөлімі
End.
Функция нақты параметрлерге мәндер берілгеннен кейін өз аты арқылы
шақырлады. Сонымен қатар функцияны тікелей өрнек ішіне шақыруға болады.
Функция денесінде арнайы меншіктеу операторы болу керек.
Мыс: Max:= M; Яғни функцияда есептелген нәтиже функция атына меншіктеледі.
Негізгі программада функция мәні тек функция атауы арқылы пайдаланылады.
4.1 Дауыс
Егер программаның орындалу барсында дауыстың болуы қажет болса онда,
программаның алғашқы жолына USES CRT; - ты жазу керек. Sound(300) операторы
компьютерге бір қалыпты 300гц жиліктегі дауысты шығартады. Дауыстың қатты
болуы ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.

Ақпарат
Қосымша
Email: info@stud.kz