Паскаль тілінің көмегімен сұрыптау және іздеу алгоритмдерін құрастыру

Автор: Пользователь скрыл имя, 19 Февраля 2013 в 21:07, курсовая работа

Описание работы

Паскаль тілін 1968-71 жылдары Швейцарияда профессор Никлаус Витр оқып үйренуге қолайлы программалау тілі ретінде ұсынған болатын. Паскаль тілі өзінің қарапайымдылығының және тиімділігінің арқасында дүние жүзіне өте тез тарады. Қазіргі кезде барлық дербес компьютерлер осы тілде жұмыс атқара алдады. Паскаль тілінде жазылған программаның дұрыстығы компьютерде жеңіл тексеріледі және жіберілген қате тез түзетіледі.

Содержание

Кіріспе
І. Паскаль программалау тілі туралы жалпы мағлұмат
1.1 Turbo Pascal жүйесiнiң программалау ортасы
1.2 Паскаль тіліндегі мәліметтер
1.2.1 Турбо Паскаль тіліндегі константалар (тұрақты сандар)
1.2.2 Турбо Паскаль тіліндегі айнымалылар
1.2.3 Турбо Паскаль тіліндегі мәліметтер типі
1.3 Паскаль тіліндегі амалдар мен өрнектер
1.4 Массивтер
ІІ. Паскаль тілінің көмегімен сұрыптау және іздеу алгоритмдерін құрастыру
2.1 Іздеу алгоритмі
2.1.1 Сызықтық іздеу
2.1.2 Шектеу қою арқылы іздеу
2.1.3 Екілік немесе қақ бөліп іздеу
2.2 Сұрыптау алгоритмі
2.2.1 Таңдау бойынша сұрыптау
2.2.2 Айырбастау бойынша сұрыптау (“көбікше” әдісі)
2.2.3 Мойындық сұрыптау (шейкерлі)
2.2.4 Енгізу арқылы сұрыптау
2.2.5 Хоар сұрыптамасы
2.2.6 Индексті векторларды пайдалану арқылы сұрыптау
2.3 Дербес орындайтын жаттығулары
Қорытынды
Пайдаланылған әдебиеттер тізімі

Работа содержит 1 файл

Мухамадиева.doc

— 391.00 Кб (Скачать)

Нақты сан  типіндегі мәлімет 4-тен 10 байтқа дейін  тұрады. Нақты мәліметтер жылжымалы  немесе нақтыланған нүктеден тұруы  мүмкін.

Нақты сандарға мысал:

- нақтыланған  нүкте: 4.12, 6.05, -17.5489;

- жылжымалы  нүкте: -3.2Е-6(-3.2·10-6), -6.42Е+2(-6.42·102).

Барлық нақты сандар типі 1.2- кестеде көрсетілген

 

1.2- кесте.  Мәліметтердің нақты типтері

Типі                         Аралығы                     Мантисса     Байттық өлшемі

Real                2.9E-39         ...    1.7E38                 11-12                            6

Single             1.5E-45         ...    3.4E38                 7-8                                4

Double           5.0E-324        ...   1.7E308               15-16                            8

Extended        3.4E-49321    ...   1E4932                19-20                            10


 

Мысалы. Нақты  типтегі айнымалыларды сипаттау керек болсын:

Var

a,b,c: real;

d,f: double;

k: single;

Мәліметтің символдық типі дисплей экранында көрінетін кез-келген символды білдіреді. Ол 1 байт орын алады және char қызметші сөзі арқылы сипатталады, мысалы:

Var

a,b:char;

Программа мәтінінде  символдық типтегі айнымалылар  мен константалар мәні апостроф ішіне  алынып жазылады: ’a’,’b’,’+’.

Мәліметтің  логикалық (бульдік) типі. Бұл типтегі мәлімет негізінен екі мән қабылдайды: true (ақиқат) немесе false(жалған).

Мысалы:

var

a, b: boolean;

Турбо Паскальда  стандартты скалярлық типтен басқа  тізбектелген немесе аралық (интервалдық) скалярлық типтерді де енгізуімізге болады.

Тізбектелген  тип  берліген типтегі айнымалы қабылдай алатын мәндерді міндетті түрде тізбектеп береді, мысалы:

var

a,c: (red, blue, green);

b: (dog, cat);

Басында мәліметтердің  тізбектелген типін енгізіп, содан  соң осы типтің айнымалыларын  сипаттауымызға болады. Жаңа типті  құру үшін type қызметші сөзі қолданылады:

type  <тип_атауы>=<тип_анықтамасы>;

Мысалы:

type

color=(red,blue,green);

var

a,b: color;

 

Аралық  тип арқылы берілген тип айнымалыларының өзгеру шегін анықтайтын екі тұрақты санды енгізуімізге болады. Бірінші тұрақты сан екіншісінен кіші болуы қажет. Олар бүтін немесе символдық болып табылады:

var

a, b, c:  -7 .. 4;

x: ‘a’ .. ‘c’;

Алдында айтылған типтер сияқты мәліметтер типін type қызметші сөзі арқылы алдын ала енгізіп, содан  соң мәліметтер типінің айнымалыларын  сипаттауымызға болады.

Мысалы:

type

x=0..9;

var

a,b: x;

Әрбір аралық типтің айнымалысы 1 байт орын алады.

Құрылымдық  тип мәліметтеріне келесілер  жатады: массивтер, жолдар, жазбалар, файлдар, көпмүшеліктер.

Массивтер - бір тип мәліметтерінің жиынтығы. Типті сипаттау кезінде массив элементтерінің саны нақтыланады және программаны орындау барысында өзгермейді. Массив элементтерімен жұмыс жасау үшін алдымен массив аты, содан соң квадрат жақша ішінде оның нөмері көрсетіледі. Массивті сипаттау кезінде array қызметші сөзі қолданылады. Бұл мәліметтер типінің айнымалысы келесі түрдегідей жазылады:

<айнымалы_аты>:array[i..i1,j..j1,…]of <элементтер_типі>;

мұнда i, i1- бірінші массив индексінің шекарасы; j, j1 – екінші массив индексінің шекарасы.

Мысалы:

var

  a: array [1 .. 10] of integer;

Алдымен масссив  мәліметінің типін анықтап, содан соң скалярлық тип жағдайындағы сияқты айнымалылар типін сипаттауымызға болады.

Жолдар – символар тізбегі. Оларды өрнектерде қолданғанда жолдар апострофқа алынып жазылады. Оның ұзындығы 255 символмен шектеледі. Жолдық айнымалылар типін сипаттау үшін string қызметші сөзі қолданылады. Оның жазылу түрі келесідей:

<айнымалы_аты>: string[n],

мұнда n - жол  айнымалысының ұзындығы; егер n берілмесе, онда жол ұзындығы 255 символға сәйкес келеді.

 

1.3 Паскаль тіліндегі  амалдар мен өрнектер

Өрнек мәліметтермен  жұмыс жасау барысын реттеп отырады және ол операндалардан (константа, айнымалы, функцияны шақыру), жай жақшалардан және амалдар таңбасынан тұрады: a+b*sin(cos(x)).  Амалдар унарлы (мысалы, с), бинарлы (мысалы, а+в) болып және төменде көрсетілген басқа да топтарға бөлінеді.

Турбо Паскаль  тілінде қолданылатын арифиметикалық амалдар – 1.3-кестесінде көрсетілген.

 

1.3-кесте. Арифметикалық  амалдар

Амалдар

Қызметі

Операндалар типі

Тип шешімдері

+

Қосу 

Бүтін, нақты

Бүтін, нақты

-

Алу

Бүтін, нақты

Бүтін, нақты

*

Көбейту

Бүтін, нақты

Бүтін, нақты

/

Бөлу 

Бүтін, нақты

Бүтін, нақты

Div

Бүтін бөлігі

Бүтін

Бүтін

Mod

Қалдық бөлігі

Бүтін

Бүтін

And

«және»

Бүтін

Бүтін

Shl

Солға жылжыту

Бүтін

Бүтін

Shr

Оңға жылжыту

Бүтін

Бүтін

Or

Немесе

Бүтін

Бүтін

Xor

Немесені жоққа шығару

Бүтін

Бүтін

-

Жоққа шығару

Бүтін

Бүтін

Not

Логикалық жоққа  шығару

Бүтін

Бүтін


 

Қатынас амалдары екі операнданы салыстырғанда, олар ақиқат немесе жалған екендігін анықтайды. Олардың нәтижесі – логикалық. Олар келесі амалдар қатынасымен анықталады: <, >, <= ,>= ,< >.

Мысалы, қатынас  амалдары:

3.14<>2,  6>4

Қатынас амалдары символдық және жолдық айнымалылармен де анықталады:

‘a’ < ‘b’, ‘abc’ < ‘abd’.

Логикалық амалдар  логикалық мәліметтерге орындалады. Келесі логикалық амалдар анықталған:

 

1.4-кесте. Логикалық  амалдар.

A

B

Not

A and B

A or B

t

t

f

t

t

t

f

f

f

t

f

t

t

f

t

f

f

t

f

f


 

Кестеде t - true (ақиқат) f – false (жалған).

Логикалық өрнектерде логикалық және арифиметикалық қатынас амалдары да қолданылады.

Логикалық өрнекке  мысал:

(a+x)>(c+d*cos(y)) or (a>b)

Күрделі өрнектердегі амалдардың орындалатын тәртібі  қарапайым амалдар тәртібіне  сәйкес келеді. Паскальда келесі амалдар  тізімі қоланылады:

1.Унарлы амалдар

2. *, /, div, mod, and, shl, shr.

3. +, -, or, xor.

4.=, <>, <, >, >=, <=.

Өрнекте жақшаларды қолдану олардың есептелу тәртібін өзгертуге мүмкіндік береді.

 

1.4 Паскаль  тіліндегі стандартты функциялар

Турбо Паскалда арифметикалық амалдарға қолданылатын  стандартты функциялар анықталған (1.5-кестеде).

 

1.5-кесте. Кейбір стандартты функциялар

Белгіленуі

Аргумент  типі

Нәтиже типі

Қызметі

Abs(x)

Бүтін, нақты

Бүтін, нақты

Сан модулі

Sin(x)

Нақты

Нақты

Синус функциясы

Cos(x)

Нақты

Нақты

Косинус функциясы

Arctan(x)

Нақты

Нақты

Арктангенс

Pi

 

Нақты

π

Exp(x)

Нақты

Нақты

ех

Ln(x)

Нақты

Нақты

Натурал логарифм функциялары

Sqr(x)

Нақты

Нақты

х2

Sqrt(x)

Нақты

Нақты

Int(x)

Нақты

Нақты

Санның бүтін  бөлігі

Frac(x)

Нақты

Нақты

Санның бөлшек бөлігі

Round(x)

Нақты

Бүтін

х санын дөңгелектеу

Trunc(x)

Нақты

Бүтін

х санының  бөлшек бөлігінің қиылысуы

Random

Нақты

Нақты

0 ден 1 ге дейінгі кездейсоқ сандар

Random(n)

Нақты

Бүтін

0 ден n ге дейінгі кездейсоқ сандар


 

Бұлардан  басқа кездесетін өзімізге таныс  функцияларды (tg, arcsin және т.с.с.) математикалық қатынастар көмегімен жазуымызға болады, мысалы:

.

Бірақ солардың ішінде n дәрежедегі х санын табу біраз қиындықтар туғызады. Егер n дәрже  саны бүтін болса, онда х-ті n рет  көбейтеміз немесе төмендегі формуланы  пайдаланамыз:

 

.

 

Бұл формула  Паскаль тілінде стандартты функциялар көмегімен төмендегідей программаланады:

    • х оң саны үшін – exp(n*ln(x));
    • х теріс саны үшін – -exp(n*ln(abs(x))).

Бұл формуланы n бөлшек дәрежедегі х санын табу үшін пайдалануымызға болады, мұндағы n – кәдімгі k/1 түріндегі дұрыс бөлшек, ал бөліміндегі 1 тақ сан.

Егер бөлімі 1 жұп болатын болса, онда жұп дәрежедегі түбір табу мағынасын білдіреді, бұдан шығатыны бұл амалды орындауға  шек қойылады.

Жоғарыда  айтылғандары ескере отырып, дәрежені есептейтін өрнектерді программалау үшін, алдымен х және n қабылдайтын мәндерге талдау жасап алу қажет, себебі кейбір жағдайларда n дәрежедегі х санын табу орындалмайды.

Сонымен қатар random функциясын пайдаланудың ерекшеліктеріне  тоқтала кетейік: оны пайдаланар алдында кездейсоқ сандар генераторын randomize процедурасын орындап жекелеп алу қажет.

 

1.4 Массивтер

Паскаль тілінде типтер қарапайым және күрделі болып  бөлінеді. Қарапайым типке – стандартты, саналатын, шектейтін типтер жатады. Күрделі типке – массивтер, жиындар, жазулар, жолдар және файлдар жатады. Күрделі типтің элементтері қарапайым немесе күрделі типтер болуы мүмкін. Күрделі типті енгізу программаны күшейтеді және күрделі есептерді шешуге мүмкіндік береді.

Тұрмыста тізбектелген сандарды, кестелерді, фамилия тізімдерін көп пайдаланамыз, олар бір өлшемді (жатық немесе тік жол), екі өлшемді (матрица) массив болуы немесе жиын болуы мүмкін.

Паскаль тілінде жеке айнымалыларды ғана өңдеп қоймай, айнымалылардың жиынын (тобын) да өңдеуге  болады.

Паскаль тілінде жеке-дара мәліметтермен қатар қандай да бір жүйеде жинастырылған олардың топтарын да қарастыруға болады. Осындай топтардың бірі – массив. Массив дегеніміз – бір типті шамалардың реттелген белгілі бір тобы. Массивке кіретін айнымалыларды массивтің элементтері дейді, олардың саны сипаттауда анықталады да, программаның орындалу барысында өзгермейді. Массивтің элементтерінің типі, файлдан басқа, кез келген (бүтін, нақты, символдық, жолдық, массивтік т.б.) тип бола алады. Яғни Паскальда жолдар массивін, символдар массивін, массивтер массивін т.с.с. қарастыруға болады. Массив элементтерінің типін массивтің негізгі (базалық) типі деп атайды.

Массив тұтасымен бір  атпен аталады, ал элементтерінің реті индекс арқылы көрсетіледі. Индекс массивтің  индекаторынан соң тік жақшаға алынып жазылады (a[1], x[1,1], a[i], …). Индекстің типі массив элементтерінің ретінің өзгеру аралығын көрсетеді де, шектелген жай типтердің (байттық, логикалық, аралық, атау) бірімен беріледі. Массивтің типін анықтау үшін array, of қызметші сөздері қолданылады.

Сөйтіп, Паскаль тіліндегі  массив ұғымы алгоритмдік тілдегі  кесте ұғымына сәйкес келеді. Алгоритмдік  тілдегі ТИП АТАУ өлшем (мысал)

Массивтің типі алдын  ала тип тарауында жарияланып, айнымалылар тарауында сол типпен немесе бірден сипатталады.

 

Жазылуы: Type

<типтің аты>=array[<индекстердің типі>] of <элементтердің типі>;

var <айнымалылар>: <типтің аты>;

немесе

var

<айнымалылар>: array[<индекстердің типі>] of <элементтердің типі>;

 

Мысал.

Type

KLASS=(K1, K2, K3, K4);

SIMVOL=array (byte) of char;

AI=(I, II, III, IV, V, VI, VII, VIII, IX, X, XI, XII);

Var

M1: SMVOL;

M2: array [1..60] of integer;

M3: array [‘a’.. ‘d’] of klass;

VECTOR: array[1..10] of real;

M4: array[AI] of 28..31;

LOG: array [boolean] of integer;

 

М1 бұл мысалда типтер тарауында жарияланған SIMVOL типімен сипатталған, мұнда индекстің типі байттық (byte) болғандықтан М1массиві char типі 256 элементтен (М1[0], М1[1], М1[2] …, М1[255]) тұрады. М2 бірден айнымалылар тарауында сипатталған integer типі 60 элементтен (М2[1], М2[2], …, М2[60]), М3 бірден сипатталған K1, K2, K3, K4 мәндерінің бірін қабылдай алатын 4 элементтен (М3[‘a’], M3[‘b’], M3[‘c’], M3[‘d’]), VECTOR real типі 10 элементтен (VECTOR(1), VECTOR(2), …, VECTOR(10)) тұратын массивтер. М4 массивінің индексінің типі АІ аталу типімен берілген, яғни элементтері М4[І], М4[ІІ], М4[ІІІ], М4[ІV], … түрінде көрсетіледі де, 28, 29, 30, 31 сандарының бірін қабылдайды. LOG массивінің индексінің типі логикалық (boolean), яғни екі бүтін саннан тұратын массив. (LOG(True):=9; LOG(False):=4).

Массивтің индексі мен  элементтерінің мәндерін ажырата білу керек: индекстің көмегімен элементтің мәнін табамыз.

М4 массивін схема түрінде  көрсетейік:

 

31

28

31

30

31

30

31

30

31

30

31

30

І

ІІ

ІІІ

IV

V

VI

VII

VIII

IX

X

XI

XII

Информация о работе Паскаль тілінің көмегімен сұрыптау және іздеу алгоритмдерін құрастыру