Автор: Пользователь скрыл имя, 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 Дербес орындайтын жаттығулары
Қорытынды
Пайдаланылған әдебиеттер тізімі
Нақты сан типіндегі мәлімет 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 |
Extended
3.4E-49321 ... 1E4932
19-20 |
Мысалы. Нақты типтегі айнымалыларды сипаттау керек болсын:
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..
мұнда 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-кесте. Кейбір стандартты функциялар
Белгіленуі |
Аргумент типі |
Нәтиже типі |
Қызметі |
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 рет көбейтеміз немесе төмендегі формуланы пайдаланамыз:
.
Бұл формула Паскаль тілінде стандартты функциялар көмегімен төмендегідей программаланады:
Бұл формуланы 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 |
Информация о работе Паскаль тілінің көмегімен сұрыптау және іздеу алгоритмдерін құрастыру