Паскаль тілі туралы мәлімет
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...3
1. Қолданылған әдістер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .4
1.1 Сұрыптау алгоритмдері ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...4
1.1.1 Таңдау арқылы сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...4
1.2.2 Айырбаспен сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 6
1.2.3 Шейкерлі сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 6
1.1.4 Қосу арқылы сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .7
1.1.5 Хоар сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..9
1.2 Іздеу алгоритмдері ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..10
1.2.1 Сызықты іздеу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..10
1.2.2 Тосқауылы бар іздеу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 11
1.2.3 Екілік (бинарлы) іздеу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .15
2. Есептің алгоритмі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .14
3. Бағдарламаның баяндалуы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .17
3.1. Жалпы мағлұматтар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..17
3.2. Функциялдық тағайындалуы (қолдануы) ... ... ... ... ... ... ... ... ... ... ...17
3.3. Логикалық құрылымның баяндалуы ... ... ... ... ... ... ... ... ... ... ... ... ...17
3.4. Блок схема ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .19
5. Қортынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..20
6. Қолданылған әдебиеттер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .21
7. Қосымша ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...22
1. Қолданылған әдістер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .4
1.1 Сұрыптау алгоритмдері ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...4
1.1.1 Таңдау арқылы сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...4
1.2.2 Айырбаспен сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 6
1.2.3 Шейкерлі сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 6
1.1.4 Қосу арқылы сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .7
1.1.5 Хоар сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..9
1.2 Іздеу алгоритмдері ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..10
1.2.1 Сызықты іздеу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..10
1.2.2 Тосқауылы бар іздеу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 11
1.2.3 Екілік (бинарлы) іздеу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .15
2. Есептің алгоритмі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .14
3. Бағдарламаның баяндалуы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .17
3.1. Жалпы мағлұматтар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..17
3.2. Функциялдық тағайындалуы (қолдануы) ... ... ... ... ... ... ... ... ... ... ...17
3.3. Логикалық құрылымның баяндалуы ... ... ... ... ... ... ... ... ... ... ... ... ...17
3.4. Блок схема ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .19
5. Қортынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..20
6. Қолданылған әдебиеттер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .21
7. Қосымша ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...22
Паскаль тілі ХХ ғасырдың 60-шы жылдарының аяғы мен 70-ші жылдарының басында Швейцарлық жоғарғы политехникалық мектептің Информатика Институның директоры, профессор Никлаус Вирт тарапынан студенттерді программалау тілі бастамаларына үйрету үшін ойлап табылды. Автор тілді алғашқы арифметикалық есептеу машинасын жасаған француздың ұлы ғалымы Блез Паскальдың құрметіне Паскаль деп атап, тіл атауын үнемі бас әріппен жазылуын сұраған.
Ал Паскаль тілінің трансляторының бірінші нұсқасы 1970 жылы Н.Вирттың шәкірттерімен PDP-11 машинасы үшін жасалды. Кейіннен тілдің көптеген нұсқалары жарық көрді.
Соның ішінде, 1983 жылы американдық Borland корпорациясының талантты қызметкері, Н.Вирттың шәкірті Андерсон Хейлсбергтің жасаған жаңа үлгісі – Turbo Pascal программалаушылар арасындаүлкен сұранысқа ие болды. Оның бұл нұсқасы CP/M операциялық жүйесіне негізделген. 1984 жылдың басында MS DOS жүйесіне ауыстырылғалы бері пайдалану қарқыны артты.
Turbo Pascal –дың жоғарғы деңгейлі логикалық құрылымы әр түрлі есептерді дәл шешуге көмегін тигізеді. Turbo Pascal жүйесінде қарапайым есептерді шешудің программасынан бастап, күрделі мәліметтер қорын құрудың сан қырлы жұмыстары жүргізіледі.
Қазіргі таңда миллиондаған програмистер Паскаль тілін күрделі және үлкен проектілер үшін пайдаланғанмен, ол түп негізінде оқушыларды жаңа заманғы программалауды қыр-сырына үйрету үшін ойлап табылған болатын. Және де қазіргі таңда бұл тіл программалауда алғашқы қадамын жасаушыларға ең ыңғайлы тіл болып табылады.
Turbo Pascal тілінде біз массивтермен, файлдармен, процедуралармен және басқа да операциялармен жұмыс істей аламыз.
Паскаль тілінде – файл деп, сыртқы жады құрылғысының деректерді сақтауға дайындалған бөлігін айтады.
Паскаль программассындағы файлдарға қолданылатын амалдар сыртқы жады құрылғысында деректерді сақтаумен қатар, оларды оқып – жаңартуына да мүмкіндік береді. Файлға қолданылатын бұл амалдар енгізіп шығару амалдары деп аталады.
Ал Паскаль тілінің трансляторының бірінші нұсқасы 1970 жылы Н.Вирттың шәкірттерімен PDP-11 машинасы үшін жасалды. Кейіннен тілдің көптеген нұсқалары жарық көрді.
Соның ішінде, 1983 жылы американдық Borland корпорациясының талантты қызметкері, Н.Вирттың шәкірті Андерсон Хейлсбергтің жасаған жаңа үлгісі – Turbo Pascal программалаушылар арасындаүлкен сұранысқа ие болды. Оның бұл нұсқасы CP/M операциялық жүйесіне негізделген. 1984 жылдың басында MS DOS жүйесіне ауыстырылғалы бері пайдалану қарқыны артты.
Turbo Pascal –дың жоғарғы деңгейлі логикалық құрылымы әр түрлі есептерді дәл шешуге көмегін тигізеді. Turbo Pascal жүйесінде қарапайым есептерді шешудің программасынан бастап, күрделі мәліметтер қорын құрудың сан қырлы жұмыстары жүргізіледі.
Қазіргі таңда миллиондаған програмистер Паскаль тілін күрделі және үлкен проектілер үшін пайдаланғанмен, ол түп негізінде оқушыларды жаңа заманғы программалауды қыр-сырына үйрету үшін ойлап табылған болатын. Және де қазіргі таңда бұл тіл программалауда алғашқы қадамын жасаушыларға ең ыңғайлы тіл болып табылады.
Turbo Pascal тілінде біз массивтермен, файлдармен, процедуралармен және басқа да операциялармен жұмыс істей аламыз.
Паскаль тілінде – файл деп, сыртқы жады құрылғысының деректерді сақтауға дайындалған бөлігін айтады.
Паскаль программассындағы файлдарға қолданылатын амалдар сыртқы жады құрылғысында деректерді сақтаумен қатар, оларды оқып – жаңартуына да мүмкіндік береді. Файлға қолданылатын бұл амалдар енгізіп шығару амалдары деп аталады.
1. Фаронов В.В. Turbo Pascal 7.0. Начальный курс: Учебное пособие.-
Москва.:Нолидж, 1998
2. Культин Н.Б. Turbo Pascal в задачах и решениях.-
СПб.:БХВ-Петербург, 2003
3. Муртазина А.У., Тусупова Б.Б. Основы программирования на языках Паскаль и Си. Методические указания к лабораторным работам по курсу “Языки и технология программирования”.- Алматы: КазНТУ, 2000
Москва.:Нолидж, 1998
2. Культин Н.Б. Turbo Pascal в задачах и решениях.-
СПб.:БХВ-Петербург, 2003
3. Муртазина А.У., Тусупова Б.Б. Основы программирования на языках Паскаль и Си. Методические указания к лабораторным работам по курсу “Языки и технология программирования”.- Алматы: КазНТУ, 2000
Пән: Информатика, Программалау, Мәліметтер қоры
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 21 бет
Таңдаулыға:
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 21 бет
Таңдаулыға:
Мазмұны
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ... ... ...3
1. Қолданылған
әдістер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ..4
1.1 Сұрыптау
алгоритмдері ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... .4
1.1.1 Таңдау арқылы
сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .4
1.2.2 Айырбаспен
сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
..6
1.2.3 Шейкерлі
сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ..6
1.1.4 Қосу арқылы
сұрыптау ... ... ... ... ... ... ... ... ... ... .
... ... ... ... ... ... .7
1.1.5 Хоар
сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... 9
1.2 Іздеу
алгоритмдері ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... 10
1.2.1 Сызықты
іздеу ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ...
... ... .10
1.2.2 Тосқауылы бар
іздеу ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ...1
1
1.2.3 Екілік (бинарлы)
іздеу ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... 15
2. Есептің
алгоритмі ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... 14
3. Бағдарламаның
баяндалуы ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ...
... ... 17
3.1. Жалпы
мағлұматтар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ...17
3.2. Функциялдық тағайындалуы
(қолдануы) ... ... ... ... ... ... . ... ... ... ... ..17
3.3. Логикалық құрылымның
баяндалуы ... ... ... ... ... ... .. ... ... ... ... ... ... .17
3.4. Блок схема
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ...19
5.
Қортынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ..2 0
6. Қолданылған
әдебиеттер ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ...
... ... ... .21
7.
Қосымша ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ... ... .22
Кіріспе
Паскаль тілі ХХ ғасырдың 60-шы жылдарының аяғы мен 70-ші жылдарының
басында Швейцарлық жоғарғы политехникалық мектептің Информатика Институның
директоры, профессор Никлаус Вирт тарапынан студенттерді программалау тілі
бастамаларына үйрету үшін ойлап табылды. Автор тілді алғашқы арифметикалық
есептеу машинасын жасаған француздың ұлы ғалымы Блез Паскальдың құрметіне
Паскаль деп атап, тіл атауын үнемі бас әріппен жазылуын сұраған.
Ал Паскаль тілінің трансляторының бірінші нұсқасы 1970 жылы Н.Вирттың
шәкірттерімен PDP-11 машинасы үшін жасалды. Кейіннен тілдің көптеген
нұсқалары жарық көрді.
Соның ішінде, 1983 жылы американдық Borland корпорациясының талантты
қызметкері, Н.Вирттың шәкірті Андерсон Хейлсбергтің жасаған жаңа үлгісі –
Turbo Pascal программалаушылар арасындаүлкен сұранысқа ие болды. Оның бұл
нұсқасы CPM операциялық жүйесіне негізделген. 1984 жылдың басында MS DOS
жүйесіне ауыстырылғалы бері пайдалану қарқыны артты.
Turbo Pascal –дың жоғарғы деңгейлі логикалық құрылымы әр түрлі
есептерді дәл шешуге көмегін тигізеді. Turbo Pascal жүйесінде қарапайым
есептерді шешудің программасынан бастап, күрделі мәліметтер қорын құрудың
сан қырлы жұмыстары жүргізіледі.
Қазіргі таңда миллиондаған програмистер Паскаль тілін күрделі және
үлкен проектілер үшін пайдаланғанмен, ол түп негізінде оқушыларды жаңа
заманғы программалауды қыр-сырына үйрету үшін ойлап табылған болатын. Және
де қазіргі таңда бұл тіл программалауда алғашқы қадамын жасаушыларға ең
ыңғайлы тіл болып табылады.
Turbo Pascal тілінде біз массивтермен, файлдармен, процедуралармен және
басқа да операциялармен жұмыс істей аламыз.
Паскаль тілінде – файл деп, сыртқы жады құрылғысының
деректерді сақтауға дайындалған бөлігін айтады.
Паскаль программассындағы файлдарға қолданылатын амалдар
сыртқы жады құрылғысында деректерді сақтаумен қатар, оларды оқып –
жаңартуына да мүмкіндік береді. Файлға қолданылатын бұл амалдар
енгізіп шығару амалдары деп аталады.
Паскаль тілінде, файлдардың келесі екі түрі бар:
- типтік файлдар
- тексттік файлдар
1. Қолданылған әдістер
1.1 Сұрыптау алгоритмдер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 сұрыпттау мысалында көрсетемiз.
1.1.1 Таңдау арқылы сұрыптау
Тәсiл идеясы массивтiң максималды элементiн тауып, оны соңғы элемент
(N номерлi) орнымен ауыстырылады. Содан кейiн максималды элемент N-1 орынға
дейiн iзделiп, сол N-1 орынға қойылады және т.с.с. Максимум емес, минимум
элемент iзделiп, оны бiрiншi, екiншi және т.с.с. орынға қоюға болады.
Сонымен қатар бұл әдiстiң модификацияланған түрi – бiр мезетте максимум
және минимум элементтердi iздеу қолданылады. Бұл жағдайда сыртқы циклдың
қадамдар саны N div 2.
Мысалы: a массивiнiң N бүтiн сандарының өсуi бойынша таңдау арқылы
сорттау.
Program Sort_Tandau1;
Var a:array[1..20] of integer;
N,i,m,k,x : integer;
Begin
write('Массив элементтерiнiң саны');
read(N);
For i:=1 to n do
writeln('Массивтi енгiзiңiз');
read(a[i]);
For k:=n downto 2 do { k – max-ты iздеуге қажеттi элементтер саны }
begin
m:=1; { m - max орны}
For i:=2 to k do if A[i]A[m] then m:=i;
{ m және k номерлi элементтердi орындарымен ауыстырамыз}
x:=a[m]; a[m]:=a[k]; a[k]:=x;
end;
for i:=1 to n do write(a[i],' '); {реттелген массив}
end.
Мысалы: Жоғарыдағы есеп, бiрақ бiр мезеттегi max пен min таңдау
арқылы.
Program Sort_Tandau2;
Var a :array[1..100] of integer;
N,i,m,k,x,p : integer;
Begin
write('Массив элементтерiнiң саны');
read(N);
For i:=1 to n do
writeln('Массивтi енгiзiңiз');
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 элементтер арасында iзделедi }
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 номерлi элементтердi орындарымен ауыстырамыз }
x:=a[p]; a[p]:=a[k]; a[k]:=x;
if m=k then m:=p;
{егер max k орында тұрса, ендi ол p орында тұр }
{ m және n-k+1 номерлi элементтердi орындарымен ауыстырамыз }
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.
1.1.2 Айырбаспен сұрыптау (“көбiкше” тәсiлiмен)
Тәлiл идеясы рет бойынша массивтiң көршiлес жұптары тексерiлуiнде
құрылған. Егер олар олар керектi реттiлiкте болмаса, онда көршiлес
элементтер жұбын орындарымен ауыстырамыз. Мұндай бiр өтуден кейiн N номерi
орынында максимал элемент орналасады (бiрiншi көбiкше “қалқып” шықты).
Келесi өту N-1 элементке дейiн қарастыру керек және т.с.с. Барлығы N-1 өту
қажет болады.
Мысалы: a массивiнiң N бүтiн сандарының өсуi бойынша айырбаспен
сұрыптау. (Негiзгi вариант)
Program Sort_Auis1;
Var a:array[1..20] of integer;
N,i,k,x : integer;
Begin
write('Массив элементтерiнiң саны');
read(N);
For i:=1 to n do
writeln('Массивтi енгiзiңiз');
read(a[i]);
For k:=n-1 downto 1 do { k – салыстырылатын жұптар саны }
For i:=1 to k do
If a[i]a[i+1] then
{көршiлес элементтердi орындарымен ауыстырамыз}
Begin x:=a[i]; a[i]:=a[i+1]; a[i+1]:=x;
End;
For i:=1 to n do
write(a[i],' '); {реттелген массив}
end.
1.1.3 Шейкерлi сұрыптау
Бұл алгоритм негiзiнен айырбас арқылы сұрыптаудың модификациясы болып
табылады. Айырмашылығы айырбас арқылы сұрыптауда өтулер бiр жақты ғана
болса, мұнда бағыт әрбiр рет сайын өзгерiп отырады. Сонымен қатар шейкерлi
сұрыптауда айырбас фактi мен айырбастың соңғы орнын анықтауға болады.
Негiзгi алгоритмде екiлiк өтулер саны N div 2-ге теi.
Мысалы: N бүтiн сандардан құралған А массивiн Шейкерлi сорттау арқылы
өсу ретiмен орналастыру.
Program Shaker;
Var a:array[1..20] of integer;
N,i,k,x,j,d : integer;
Begin
write('Массив элементтерiнiң саны');
read(N);
For i:=1 to n do
writeln('Массивтi енгiзiңiз');
read(a[i]);
d:=1; i:=0;
For k:=n-1 downto 1 do { k – салыстырылатын жұптар саны }
Begin
i:=i+d;
For j:=1 to k do
Begin
If (a[i]-a[i+d])*d0 then
{көршiлес элементтердi орындарымен ауыстыру}
Begin x:=a[i]; a[i]:=a[i+d]; a[i+d]:=x; end;
i:=i+d;
end;
d:=-d;
{қозғалыс бағытын қарама-қарсыға өзгертемiз}
end;
For i:=1 to n do write(a[i],' '); {реттелген массив}
end.
1.1.4 Қосу арқылы сұрыптау
Бер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здеуi бар қосу
арқылы сұрыптау арқылы өсу ретiмен орналастыру.
Program Sort_Include1;
Var a:array[1..20] of integer;
N,i,k,x : integer;
Begin
write('Массив элементтерiнiң саны ');
read(N);
writeln('Массивтi енгiзiңiз');
read(a[1]); {For i:=1 to n do read(a[i]);}
{k – массивтiң реттелген бөлiгiндегi элементтер саны}
For k:=1 to n-1 do
Begin
read(x); {x:=a[k+1];}
i:=k;
while (i0)and(a[i]x) do
begin
a[i+1]:=a[i];
i:=i-1;
end;
a[i+1]:=x;
end;
For i:=1 to n do write(a[i],' '); {реттелген массив}
end.
Мысалы: N бүтiн сандардан құралған А массивiн екiлiк iздеуi бар қосу
арқылы сұрыптау арқылы өсу ретiмен орналастыру.
Program Sort_Include2;
Var a :array[1..20] of integer;
N,i,k,x,c,left,right : integer;
Begin
write('Массив элементтерiнiң саны');
read(N);
writeln('Массивтi енгiзiңiз');
read(a[1]); {For i:=1 to n do read(a[i]);}
{k - массивтiң реттелген бөлiгiндегi элементтер саны }
For k:=1 to n-1 do
Begin
read(x); {x:=a[k+1];}
left:=1; right:=k;
{iздеуге керектi фрагменттiң оң және сол шекарасы}
while leftright do
{соңғы кiрудiң екiлiк iздеуi}
begin
c:=(left+right+1) div 2;
{ үлкен жаққа дөңгелектенген ортасы }
if x=a[c] then left:=c
{ортасы мен оң жағын аламыз}
else right:=c-1; {ортасыз сол жағын аламыз}
end;
if x=a[left] then left:=left+1;
{х қосылуға орын босата отырып, массивтi 1 орынға оңға жылжытамыз}
for i:=k downto left do a[i+1]:=A[i];
a[left]:=x;
end;
For i:=1 to n do write(A[i],' '); {реттелген массив}
end.
1.1.5 Хоар сұрыптауы
Бұл сұрыптауды жылдам сұрыптау деп те атайды. Әд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.
1.2 Iздеу алгоритмдерi
Iздеу алгоритмдерi мысалы массивте белгiлi қасиеттерi бар
элементтердi табу үшiн қолданылады. Әдетте элементтiң алғашқы және соңғы
кiрулерiн iздеудегi есеп берiлгендерiмен ажыратады. Төменде келтiрiлген
барлық алгоритмдерде N бүтiн санды a массивiнде Х-қа тең элемент iздеу
керек деп есептеледi.
1.2.1 Сызықты iздеу
Сызықты iздеу екi еселi шарты бар циклмен (while немесе repeat -
until) орындалады. Бiрiншi шарт индекстiң массивке тиiстiлiгiн тексередi,
мысалы, (i=N). Екiншi шарт – бұл iздеудiң шарты. Бiздiң жағдайда while
циклiнде бұл iздеудi жалғастыру шарты: (A[i]X), ал repeat – until
циклiнде бұл iздеудi аяқтау шарты: (A[i]=X). Цикл денесiнде әдетте тек
жалғыз оператор: массивтегi индекстiң өзгеруi ғана жазылады.
Циклдан шыққаннан кейiн қай шарт бойынша шыққанымызды тексеруiмiз
керек. Әдетте if операторында циклдiң бiрiншi шартын қайталайды. Бұл шарт
орындалуын while циклi жағдайында шарттың орындалуын, ал repeat – until
циклiмен оның бұзылуы кезiнде сәттi iздеу деп айтуға болады.
Мысалы: Сызықты iздеу.
Program Poisk1;
Var a:array[1..20] of integer;
N, X, i:integer;
begin
read(N); {N=20}
For i:=1 to N do
writeln('Массивтi енгiзiңiз');
read(a[i]);
writeln('Iзделiнетiн санды енгiзiңiз');
read(X);
i:=1; {i:=0;}
while (i=N) and (a[i]X) do i:=i+1;
{repeat i:=i+1; until (iN) or (a[i]=X);}
if i=N then write(' a массивiне ', i,' орында', X ,' санының бiрiншi
кiруi ')
else write('тапқан жоқпыз');
end.
Соңғы кiрудi iздеу кезiнде енгiзгеннен кейiн келесi операторлар жүру
керек.
i:=N; {i:=N+1;}
while (i=1) and (a[i]X) do i:=i-1;
{repeat i:=i-1; until (i1) or (a[i]=X);}
if i=1 then write(' a массивiне ', i,' орында', X ... жалғасы
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ... ... ...3
1. Қолданылған
әдістер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ..4
1.1 Сұрыптау
алгоритмдері ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... .4
1.1.1 Таңдау арқылы
сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .4
1.2.2 Айырбаспен
сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
..6
1.2.3 Шейкерлі
сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ..6
1.1.4 Қосу арқылы
сұрыптау ... ... ... ... ... ... ... ... ... ... .
... ... ... ... ... ... .7
1.1.5 Хоар
сұрыптау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... 9
1.2 Іздеу
алгоритмдері ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... 10
1.2.1 Сызықты
іздеу ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ...
... ... .10
1.2.2 Тосқауылы бар
іздеу ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ...1
1
1.2.3 Екілік (бинарлы)
іздеу ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... 15
2. Есептің
алгоритмі ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... 14
3. Бағдарламаның
баяндалуы ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ...
... ... 17
3.1. Жалпы
мағлұматтар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ...17
3.2. Функциялдық тағайындалуы
(қолдануы) ... ... ... ... ... ... . ... ... ... ... ..17
3.3. Логикалық құрылымның
баяндалуы ... ... ... ... ... ... .. ... ... ... ... ... ... .17
3.4. Блок схема
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ...19
5.
Қортынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ..2 0
6. Қолданылған
әдебиеттер ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ...
... ... ... .21
7.
Қосымша ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ... ... .22
Кіріспе
Паскаль тілі ХХ ғасырдың 60-шы жылдарының аяғы мен 70-ші жылдарының
басында Швейцарлық жоғарғы политехникалық мектептің Информатика Институның
директоры, профессор Никлаус Вирт тарапынан студенттерді программалау тілі
бастамаларына үйрету үшін ойлап табылды. Автор тілді алғашқы арифметикалық
есептеу машинасын жасаған француздың ұлы ғалымы Блез Паскальдың құрметіне
Паскаль деп атап, тіл атауын үнемі бас әріппен жазылуын сұраған.
Ал Паскаль тілінің трансляторының бірінші нұсқасы 1970 жылы Н.Вирттың
шәкірттерімен PDP-11 машинасы үшін жасалды. Кейіннен тілдің көптеген
нұсқалары жарық көрді.
Соның ішінде, 1983 жылы американдық Borland корпорациясының талантты
қызметкері, Н.Вирттың шәкірті Андерсон Хейлсбергтің жасаған жаңа үлгісі –
Turbo Pascal программалаушылар арасындаүлкен сұранысқа ие болды. Оның бұл
нұсқасы CPM операциялық жүйесіне негізделген. 1984 жылдың басында MS DOS
жүйесіне ауыстырылғалы бері пайдалану қарқыны артты.
Turbo Pascal –дың жоғарғы деңгейлі логикалық құрылымы әр түрлі
есептерді дәл шешуге көмегін тигізеді. Turbo Pascal жүйесінде қарапайым
есептерді шешудің программасынан бастап, күрделі мәліметтер қорын құрудың
сан қырлы жұмыстары жүргізіледі.
Қазіргі таңда миллиондаған програмистер Паскаль тілін күрделі және
үлкен проектілер үшін пайдаланғанмен, ол түп негізінде оқушыларды жаңа
заманғы программалауды қыр-сырына үйрету үшін ойлап табылған болатын. Және
де қазіргі таңда бұл тіл программалауда алғашқы қадамын жасаушыларға ең
ыңғайлы тіл болып табылады.
Turbo Pascal тілінде біз массивтермен, файлдармен, процедуралармен және
басқа да операциялармен жұмыс істей аламыз.
Паскаль тілінде – файл деп, сыртқы жады құрылғысының
деректерді сақтауға дайындалған бөлігін айтады.
Паскаль программассындағы файлдарға қолданылатын амалдар
сыртқы жады құрылғысында деректерді сақтаумен қатар, оларды оқып –
жаңартуына да мүмкіндік береді. Файлға қолданылатын бұл амалдар
енгізіп шығару амалдары деп аталады.
Паскаль тілінде, файлдардың келесі екі түрі бар:
- типтік файлдар
- тексттік файлдар
1. Қолданылған әдістер
1.1 Сұрыптау алгоритмдер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 сұрыпттау мысалында көрсетемiз.
1.1.1 Таңдау арқылы сұрыптау
Тәсiл идеясы массивтiң максималды элементiн тауып, оны соңғы элемент
(N номерлi) орнымен ауыстырылады. Содан кейiн максималды элемент N-1 орынға
дейiн iзделiп, сол N-1 орынға қойылады және т.с.с. Максимум емес, минимум
элемент iзделiп, оны бiрiншi, екiншi және т.с.с. орынға қоюға болады.
Сонымен қатар бұл әдiстiң модификацияланған түрi – бiр мезетте максимум
және минимум элементтердi iздеу қолданылады. Бұл жағдайда сыртқы циклдың
қадамдар саны N div 2.
Мысалы: a массивiнiң N бүтiн сандарының өсуi бойынша таңдау арқылы
сорттау.
Program Sort_Tandau1;
Var a:array[1..20] of integer;
N,i,m,k,x : integer;
Begin
write('Массив элементтерiнiң саны');
read(N);
For i:=1 to n do
writeln('Массивтi енгiзiңiз');
read(a[i]);
For k:=n downto 2 do { k – max-ты iздеуге қажеттi элементтер саны }
begin
m:=1; { m - max орны}
For i:=2 to k do if A[i]A[m] then m:=i;
{ m және k номерлi элементтердi орындарымен ауыстырамыз}
x:=a[m]; a[m]:=a[k]; a[k]:=x;
end;
for i:=1 to n do write(a[i],' '); {реттелген массив}
end.
Мысалы: Жоғарыдағы есеп, бiрақ бiр мезеттегi max пен min таңдау
арқылы.
Program Sort_Tandau2;
Var a :array[1..100] of integer;
N,i,m,k,x,p : integer;
Begin
write('Массив элементтерiнiң саны');
read(N);
For i:=1 to n do
writeln('Массивтi енгiзiңiз');
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 элементтер арасында iзделедi }
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 номерлi элементтердi орындарымен ауыстырамыз }
x:=a[p]; a[p]:=a[k]; a[k]:=x;
if m=k then m:=p;
{егер max k орында тұрса, ендi ол p орында тұр }
{ m және n-k+1 номерлi элементтердi орындарымен ауыстырамыз }
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.
1.1.2 Айырбаспен сұрыптау (“көбiкше” тәсiлiмен)
Тәлiл идеясы рет бойынша массивтiң көршiлес жұптары тексерiлуiнде
құрылған. Егер олар олар керектi реттiлiкте болмаса, онда көршiлес
элементтер жұбын орындарымен ауыстырамыз. Мұндай бiр өтуден кейiн N номерi
орынында максимал элемент орналасады (бiрiншi көбiкше “қалқып” шықты).
Келесi өту N-1 элементке дейiн қарастыру керек және т.с.с. Барлығы N-1 өту
қажет болады.
Мысалы: a массивiнiң N бүтiн сандарының өсуi бойынша айырбаспен
сұрыптау. (Негiзгi вариант)
Program Sort_Auis1;
Var a:array[1..20] of integer;
N,i,k,x : integer;
Begin
write('Массив элементтерiнiң саны');
read(N);
For i:=1 to n do
writeln('Массивтi енгiзiңiз');
read(a[i]);
For k:=n-1 downto 1 do { k – салыстырылатын жұптар саны }
For i:=1 to k do
If a[i]a[i+1] then
{көршiлес элементтердi орындарымен ауыстырамыз}
Begin x:=a[i]; a[i]:=a[i+1]; a[i+1]:=x;
End;
For i:=1 to n do
write(a[i],' '); {реттелген массив}
end.
1.1.3 Шейкерлi сұрыптау
Бұл алгоритм негiзiнен айырбас арқылы сұрыптаудың модификациясы болып
табылады. Айырмашылығы айырбас арқылы сұрыптауда өтулер бiр жақты ғана
болса, мұнда бағыт әрбiр рет сайын өзгерiп отырады. Сонымен қатар шейкерлi
сұрыптауда айырбас фактi мен айырбастың соңғы орнын анықтауға болады.
Негiзгi алгоритмде екiлiк өтулер саны N div 2-ге теi.
Мысалы: N бүтiн сандардан құралған А массивiн Шейкерлi сорттау арқылы
өсу ретiмен орналастыру.
Program Shaker;
Var a:array[1..20] of integer;
N,i,k,x,j,d : integer;
Begin
write('Массив элементтерiнiң саны');
read(N);
For i:=1 to n do
writeln('Массивтi енгiзiңiз');
read(a[i]);
d:=1; i:=0;
For k:=n-1 downto 1 do { k – салыстырылатын жұптар саны }
Begin
i:=i+d;
For j:=1 to k do
Begin
If (a[i]-a[i+d])*d0 then
{көршiлес элементтердi орындарымен ауыстыру}
Begin x:=a[i]; a[i]:=a[i+d]; a[i+d]:=x; end;
i:=i+d;
end;
d:=-d;
{қозғалыс бағытын қарама-қарсыға өзгертемiз}
end;
For i:=1 to n do write(a[i],' '); {реттелген массив}
end.
1.1.4 Қосу арқылы сұрыптау
Бер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здеуi бар қосу
арқылы сұрыптау арқылы өсу ретiмен орналастыру.
Program Sort_Include1;
Var a:array[1..20] of integer;
N,i,k,x : integer;
Begin
write('Массив элементтерiнiң саны ');
read(N);
writeln('Массивтi енгiзiңiз');
read(a[1]); {For i:=1 to n do read(a[i]);}
{k – массивтiң реттелген бөлiгiндегi элементтер саны}
For k:=1 to n-1 do
Begin
read(x); {x:=a[k+1];}
i:=k;
while (i0)and(a[i]x) do
begin
a[i+1]:=a[i];
i:=i-1;
end;
a[i+1]:=x;
end;
For i:=1 to n do write(a[i],' '); {реттелген массив}
end.
Мысалы: N бүтiн сандардан құралған А массивiн екiлiк iздеуi бар қосу
арқылы сұрыптау арқылы өсу ретiмен орналастыру.
Program Sort_Include2;
Var a :array[1..20] of integer;
N,i,k,x,c,left,right : integer;
Begin
write('Массив элементтерiнiң саны');
read(N);
writeln('Массивтi енгiзiңiз');
read(a[1]); {For i:=1 to n do read(a[i]);}
{k - массивтiң реттелген бөлiгiндегi элементтер саны }
For k:=1 to n-1 do
Begin
read(x); {x:=a[k+1];}
left:=1; right:=k;
{iздеуге керектi фрагменттiң оң және сол шекарасы}
while leftright do
{соңғы кiрудiң екiлiк iздеуi}
begin
c:=(left+right+1) div 2;
{ үлкен жаққа дөңгелектенген ортасы }
if x=a[c] then left:=c
{ортасы мен оң жағын аламыз}
else right:=c-1; {ортасыз сол жағын аламыз}
end;
if x=a[left] then left:=left+1;
{х қосылуға орын босата отырып, массивтi 1 орынға оңға жылжытамыз}
for i:=k downto left do a[i+1]:=A[i];
a[left]:=x;
end;
For i:=1 to n do write(A[i],' '); {реттелген массив}
end.
1.1.5 Хоар сұрыптауы
Бұл сұрыптауды жылдам сұрыптау деп те атайды. Әд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.
1.2 Iздеу алгоритмдерi
Iздеу алгоритмдерi мысалы массивте белгiлi қасиеттерi бар
элементтердi табу үшiн қолданылады. Әдетте элементтiң алғашқы және соңғы
кiрулерiн iздеудегi есеп берiлгендерiмен ажыратады. Төменде келтiрiлген
барлық алгоритмдерде N бүтiн санды a массивiнде Х-қа тең элемент iздеу
керек деп есептеледi.
1.2.1 Сызықты iздеу
Сызықты iздеу екi еселi шарты бар циклмен (while немесе repeat -
until) орындалады. Бiрiншi шарт индекстiң массивке тиiстiлiгiн тексередi,
мысалы, (i=N). Екiншi шарт – бұл iздеудiң шарты. Бiздiң жағдайда while
циклiнде бұл iздеудi жалғастыру шарты: (A[i]X), ал repeat – until
циклiнде бұл iздеудi аяқтау шарты: (A[i]=X). Цикл денесiнде әдетте тек
жалғыз оператор: массивтегi индекстiң өзгеруi ғана жазылады.
Циклдан шыққаннан кейiн қай шарт бойынша шыққанымызды тексеруiмiз
керек. Әдетте if операторында циклдiң бiрiншi шартын қайталайды. Бұл шарт
орындалуын while циклi жағдайында шарттың орындалуын, ал repeat – until
циклiмен оның бұзылуы кезiнде сәттi iздеу деп айтуға болады.
Мысалы: Сызықты iздеу.
Program Poisk1;
Var a:array[1..20] of integer;
N, X, i:integer;
begin
read(N); {N=20}
For i:=1 to N do
writeln('Массивтi енгiзiңiз');
read(a[i]);
writeln('Iзделiнетiн санды енгiзiңiз');
read(X);
i:=1; {i:=0;}
while (i=N) and (a[i]X) do i:=i+1;
{repeat i:=i+1; until (iN) or (a[i]=X);}
if i=N then write(' a массивiне ', i,' орында', X ,' санының бiрiншi
кiруi ')
else write('тапқан жоқпыз');
end.
Соңғы кiрудi iздеу кезiнде енгiзгеннен кейiн келесi операторлар жүру
керек.
i:=N; {i:=N+1;}
while (i=1) and (a[i]X) do i:=i-1;
{repeat i:=i-1; until (i1) or (a[i]=X);}
if i=1 then write(' a массивiне ', i,' орында', X ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz