Жау кемесі



Кіріспе
1 Ойынның берілуі
2 Операторлар мен функциялардың қолданлуы
3 Сұрыптау әдістері
3.1 Ауыстырып сұрынтау (обменная сортировка)
3.2 Хоар сұрыптауы
4 Қосалқы программалар
4.1 Дауыс

5 Turbo Pascal графиктік режимі
GRAPH модулы

6 Қорытынды
Бұл курстық жұмыста қазіргі кезде кеңінен қолданылатын программалау жүйесінің бірі – Turbo Pascal тілі. Программа Turbo Pascal тілі Borland корпорациясының 7.0 нұсқалы 16 байттық Turbo Pascal капиляторын және MS DOC операциялық жүйесін қолдану арқылы Turbo Pascal тілінде жазылған.
Бұл курыстық жұмыс ойын болғандықтан негізінен Turbo Pascal тілінің графиктік модулын көп қолдандым. График модуль кез келген геометриялық бейнелерді сызғанда негізінен әр түрлі процедуралар мен функцияларды қолданады.
Функция түсінігі жалпы процедурамен бірдей, бірақ қолдануының мынадай ерекшелігі бар: функция өзінің нәтижесінде шақыру нүктесіне белгілі бір мән қайтарады; фукция атауы өрнектерде операнда есебінде қолданыла алады.
Паскаль тілінде процедура мен функциялар екі топқа бөлінеді: тілге енгізілген немесе стандартты, қолданушы құрастырған немесе жасанды.
Бұл курстық жұмыстың мақсаты: Негізгі сандық әдістерінің, комбинаторлық ойындарының алгоритмдері мен программасын құруды үйрену. Қайталану нұсқауын күрделі есептерге қолдану және есептің математикалық моделін құру. Осы жұмыстарды орындай отырып, “Алгоритмизация және программалау тілдері” курсынан алған білімді, пайдалану деңгейін компьютермен іс-тәжірибелік жұмыс барысында нығайту.
1. Немнюгин С.А.Turbo Pascal.Программирование на языке высокого уровня.2-е издание.Питер-Пинкт.Санкт-Петербург,2004.
2. Культин Н. Самоучитель.Программирование в Turbo Pascal 7.0. БХВ- Санкт-Петербург,2005
3. Фаронов В.В. Turbo Pascal 7.0. Начальный курс:Учебное пособие.-Москва,Нолидж,1998
4. Ә.Ө.Мұртазина, М.А. Сыдыбаева. Алгоритмдерден программаны құру және талдау.- Алматы:ҚазҰТУ,2003
5. Ж.Қ. Масанов, Б.А. Бельгибаев, А.С. Бижанова, Қ.Қ. Мақұлов. Turbo Pascal. Алматы,2004
6. С.Н.Лукин Turbo Pascal 7.0 Самоучитель для начинающих Москва,2004

Кіріспе
Бұл курстық жұмыста қазіргі кезде кеңінен қолданылатын программалау
жүйесінің бірі – 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-консул
Наполеонның басқыншылық саясаты
Әскери- техникалық модельдеу
Мағжан Жұмабаев шығармаларындағы тарихи шындық және көркемдік шешім
Кейінгі орта ғасырдағы испан абсолютизмінің саясаты
Жұмыстың ғылымилығы
Бiрiншi дүниежүзiлiк соғыс. Дүниежүзiн қайта бөлiске салу
ОРЫС - ЖАПОН СОҒЫСЫ
Ежелгі аңыздар немесе қазақ халқының әлемдік өркениетпен жапсарласатын тұсы
Инфрадыбыстың нормалануы
Пәндер