Матрицамен Жұмыс

Автор работы: Пользователь скрыл имя, 03 Января 2014 в 22:41, курсовая работа

Краткое описание

Бағдарлама жазуда «алгоритм» ұғымы басты роль атқарады. Алгоритм – орындаушыға белгілі бір мақсатқа, нәтижеге жетуге арналып жазылған нұсқаулардың жүйеленген, әр қадамында бір әрекетті іске асыратын нұсқау оператор болып табылады. Команда бірнеше операторлар қоспасынан да тұруы мүмкін. Есептерді шығарғанда, алгоритм құрғанда белгілі бір ЭЕМ мен бағдарламалау тілінің мүмкіндіктерін ескеру керек. Бағдарлама бірнеше бөлімнен құралып жазылады: сипаттау бөлімі, процедуралар мен функциялар бөлімі, негізгі бөлім. Паскаль тіліндегі бағдарламада арнайы стандартты процедуралар қолданады. Процедура - аты бойынша қатынас құруға болатын операторлар тізбегі.Writeln процедурасы Паскальдың стандартты немесе тіркелген процедурасына жатады.

Содержание

КІРІСПЕ 4
1 ЖАЛПЫ БӨЛІМ 6
1.1 Пәндік аумақты сипаттау 6
1.2 Бағдарламалау тілінің элементтеріне шолу 12
2 АРНАЙЫ БӨЛІМ 18
2.1 Тапсырманың жалпы қойылымы 18
2.2 Құрылымдық және функционалдық сұлбалар 19
2.3. Модульдерді, процедуралар мен функцияларды сипаттау 25
2.4 Идентификатор кестесі 29
ҚОРЫТЫНДЫ 31
ПАЙДАЛАНҒАН ӘДЕБИЕТТЕР ТІЗІМІ 32
ҚОСЫМША А 33
ҚОСЫМША Б 35
ҚОСЫМШ В 36

Прикрепленные файлы: 1 файл

КУРСОВАЯ_МАТРИЦАМЕН ЖҰМЫС-исправ.doc

— 455.00 Кб (Скачать документ)

Жалпы түрі:

  1. For <айнымалы аты>:=<бастапқы мән> to <соңғы мән> do <цикл денесі>;
  2. For <айнымалы аты>:=<бастапқы мән> downto <соңғы мән> do <цикл денесі>;

Мұндағы бастапқы мән және соңғы мән сан немесе өрнек болуы мүмкін.

For-do қадам оң болғанда, For-downto қадам теріс болғанда қолданылады. For...do циклінде қадам 1-ге, For...downto циклінде қадам 1-ге тең. Толығырақ  айтқанда, берілген цикл түрі  төмендегідей анықталған:

а) диапазон арқылы басқарушы  айнымалы мәні ауыспалы және бір уақытта  қайталау саны цикл ішіне жинақталады;

б) ауыспалы мән өзгеріп  отырады (өспелі немесе кемімелі);

в) жеке құбылыс әрбір  итерацияда орындалады (цикл операторының ішінде).

Үшін цикліне келесі жай мысалды қарастырайық:

For i:=1 to 10 do M[i]:=i*2

Берілген мысалда қайталау циклі 10-ды меншіктейді, сонымен бірге і басқарушы айнымалы 1,2, ..., 9, 10 мәндерін қабылдайды.

Үшін циклдің құрылымдық диаграммасы көрсетілген:

Үшін циклінің операторы:

 


 

 

 

 

 

Диапазон

 


 

 

 

 

 

 

Басқарушы айымалыны қолдану кезінде  төмендегіше шек қойылады:

  1. Басқарушы айымалыны қолдануда міндетті түрде қарапайым ағымдық блокта жазылуы керек.
  2. Басқарушы айымалы міндетті түрде дискретті тип болуы керек.
  3. Бастапқы және соңғы мән диапазонда тип және типпен бірге басқарушы айнымалы болуы керек.
  4. Басқарушы айнымалы мәнін цикл ішінде өзгертуе тыйым салады (мысалы, меншіктеу операторы).
  5. Егер де цикл операторының орындалуы шартты өту операторымен үзілмесе, онда басқарушы айнымалы мәні цикл соңында анықтамайды. [9, б 147-152 ]

Басқарушы айнымалыны әрқашан бастапқы мәнді инициализациялайды. Кей жағдайда to қызметші сөзі әрбір басқарушы айнымалының қайталау бірілігінде қолданылады. Егер бастапқы мән соңғы мәннен үлкен болса, онда for операторы ішінде бағдарлама орындалмайды. Кейде цикл операторында downto қызметші сөзін қолданса,онда басқарушы айнымалы мәні әрбір қайталау бірлігінде кемиді. Егер бастапқы мән мен соңғы мән тең болса, онда for операторы ішінде бағдарлама орындалады.

Сонымен қортындылайтын болсақ, тапсырманы шешу үшін оны құрайтын элементтерді қолдана білу керек. Ол элементтердің мүмкіншілктері мен шектеуліктерін білу керек.

 

2 Арнайы бөлім

2.1 Тапсырманың жалпы қойылымы

 

n×n квадратты матрица берілген. Келесі тапсырманы орындау керек:

1. Енгізілген мәліметтерді бақылай отырып, массив өлшемін пернетақтадан енгізу;

2. Масивтегі көрсетілген аумақтың орнын ауыстыру және өңделген матрицаны экранға шығару;

3. Көрсетілген траектория бойынша өту және пайда болған нәтижені матрица жол түрінде шығару;

4.Матрицадағы ең кіші және ең үлкен мәндерді шығару.

ai,j=xk;

xk=f(xk-1);

x0=-p;

f(x)=cos2(x+6)

2-суретте матрицада айналып өтудің аймағы мен траектория сұлбасы көрсетілген.

 

 

2-сурет. Матрицада айналып өтудің  аймағы мен траектория сұлбасы

Бағдарламаның сипаттамасы. Бағдарлама Turbo Pascal 7.0 жасалынған және тестілік интерфейске ие. Бағдарламаны жібергенде экранды тазалау жүреді, кейін бағдарлама массив өлшемін енгізуге сұраныс береді. Біздің жағдайда баған(жол) саны тақ болуы қажет. Бағдарламада қолданушы қате жібермес үшін қорғаныс қарастырылған. Егер қолданушы қателесіп бағанның(жолдың) санын жұп деп берсе, бағдарлама осы санды қайта енгізуді сұрайды. Қолданушы бағынға(жол) тақ сан бермегенше, осылай бола береді.

Өлшемді енгізгеннен  кейін бағдарлама экранға белгілі  заңдылық бойынша автоматты түрде  толтырылған бастапқы матрицаны  шығарады. Матрицада берілген аймақтардың  алмасуын жүргізеді және экранға  өзгертілген матрицаны шығарады.

Кейін бағдарлама бір  өлшемді массивке(жол-массив) мәнді  жазумен берілген траектория бойынша  матрицада айналып өтуді жүргізеді. Алынған жол-массивті бағдарлама экранға  шығарады, одан кейін өсуі және кемуі  бойынша берілген массивке іріктеу  жүргізеді, нәтижесін экранға шығарады..

Аяқталу алдында бағдарлама массивте берілген аймақтан басқа максимум және минимум элементтерді іздестіруді  жүргізеді, табылған мәнді экранға  шығарады және Enter клавишасын басуын күтеді. [11, б 345-347]

Бағдарламаның жұмыс істеу нәтижесінде экранда өзгергенге дейінгі және кейінгі матрицаны айқын көруге болады, траектория бойынша дұрыс өтуін және іріктеудің дұрыстығын тексеруге болады. Сонымен қатар бағдарлама text.txt файлға түрленген нәтижелер жазуын жүргізеді. Оның көмегімен бағдарламаның орындалу нәтижесін қарауға, басып шығаруға болады.

 

2.2 Құрылымдық және функционалдық  сұлбалар

 

Құрылымдық сұлба арқылы бағдарламаның жалпы сипатымен  танысуға болады.

 

1 Тапсырманың құрылымдық сұлбасы

 

Сипаттау бөлімі

Program P1......;{тақырыбы, бағдарлама атауы} {¥}

Uses………..; {*tpu кеңейтілуі бар ішкі модулдердің қосылуы} {¥}

Var..................;{айнымалыларды хабарлау бөлімі}{ ¥}

Procedure Pr1…… ; {процедураларды сипаттау} {¥}

Function F1……….; {функцияларды сипаттау} {¥}

Негізгі бағдарлама

Begin {негізгі бағдарлама басы} {+}

………{негізгі бағдарлама денесі} {¥}

End {негізгі бағдарлама соңы} {+}


 

Ескерту. {+} – бағдарламаның негізгі бөлігі, {¥} – бағдарламаның негізгі емес бөлігі.

Функциональды сұлбалар алгоритмнің  графикалық бейнесін ұсынады. Олар мазмұнды анықтамалардан және сызықтармен бағытталған тізбектелген блоктардан тұрады. Функциональды сұлба толығымен қалыптасқан тіл болып табылады, бірақ алгоритмнің мазмұнды бейнесінен формальдыға көшеді.

Функциональды сұлбаны  бағдарламаларға аудару үшін Паскаль тілінің басқару құрылымына (операторлар) бөлу қажет. Одан кейін бірінші оператордан бастап, синтаксисті сақтай отырып жазамыз.

Бағдарламаның блок-схемасы

Бірінші блок схемада  орындалатын есептің жалпы түрі келтірілген. Мұнда тапсырма бойынша максимум мен минимум табу жолы көрсетілген.Есептің басы, денесі, аяғы.

 


 



 



 



 

 

 

 


 

 

 

 

 

 

 

 


 


 

 



 

Блок –схемаға сәйкес бағдарламаның толық тексті:

Program matrix;

Uses crt;

var a:array[1..100,1..100] of real;

t,i,j,n:Integer;               {Бүтін сан}

tmp:real;                      {Нақты сан}

b:array[1..100] of real;{бұл  массив траектория элементімен  толтырылады}

f:text;

{+----- Массив  өлшемін енгізу -----------+}

 

 

Екінші блок-схемаға түсініктеме:

 

 


 


 

 





 

 

Блок –схемаға сәйкес бағдарламаның толық тексті:

Procedure Input;

begin

Write(' Матрица өлшемін енгізігіз ');Readln(n);

if n mod 2 = 0 then begin

Writeln(' Қате: өлшем жұп сан болуы керек ');

input;

end;

end;

{+----- Массивті толтыру-----------------+}

 

 

Үшінші блок схема:

 

 

 

 

 

 

 

 

 


 


 




 



 


 

 




 

 

 

Бағдарламаның толық тексті:

Procedure Out(var n:Integer);

begin

append(f);

writeln(f);

for i:=1 to n do begin

for j:=1 to n do

if a[i,j]<0 then begin

write(f,a[i,j]:3:3,' ');

write(a[i,j]:3:3,' ');

end

else begin

write(f,' ',a[i,j]:3:3,' ');

write(' ',a[i,j]:3:3,' ');

end;

Writeln(f,' ');

writeln;

end;

Close(f);

end;

{+----- Көрсетілген аймақтар орын алмастыру ---+}

 

 

Төртінші блок схема:

 

 

 

 

 


 











 

 








 



 

Бағдарламаның толық  тесті:

Procedure obmen(var n:integer);

Var p:Integer;

begin

p:=n div 4+1;

for i:=n div 4+1 to n div 2+1 do begin

p:=p-1;

for j:=(n div 2+1)+p to n-p do begin

tmp:=a[i,j];

a[i,j]:=a[i+(n div 2),j-(n div 2)];

a[i+(n div 2),j-(n div 2)]:=tmp;

end;

end;

end;

{+-----Берілген траектория бойынша айналып өту ------+}

 

 

Бесінші блок-схема:

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Бағдарламаның толық  тексті:

Procedure Obhod (var n :integer);

begin

t:=1;

append(f);

writeln(f);

j:=n div 4;

for i:=n div 4+1 downto 1 do begin

j:=j+1;

b[t]:=a[i,j];

t:=t+1;

end;

for i:=2 to n div 4+1 do begin

j:=j+1;

b[t]:=a[i,j];

t:=t+1;

end;

for i:=n div 4 +2 to n div 2+1 do begin

j:=j-1;

b[t]:=a[i,j];

t:=t+1;

end;

for i:=n div 2  downto n div 4+2 do begin

j:=j-1;

b[t]:=a[i,j];

t:=t+1;

end;

Writeln(' Берілген траектория бойынша айналып өту :');

for i:=1 to t-1 do begin

write(f,b[i]:3:3,' ');

write(b[i]:3:3,' ');

end;

close(f);

end;

{+----- Өсу бойынша іріктеу  ---------+}

 

Алгоритмді  бірден бағдарлама түрінде жазу алгоитмнің құрылуының өзін қиындататындықтан, функционалдық  сұлбаны қолдану тиімді.

 

2.3. Модульдерді, процедуралар мен  функцияларды сипаттау

 

 

Сипаттау бөлімі

Program  (Өзіміз қоятын бағдарлама аты жазылады)

Uses        (Кітапханалар аттары жазылады)

Label       (Бағдарламада қолданылатын белгілер бөлімі)

Const       (Тұрақты шамалар жазылады)

Type        (Өзіміз анықтайтын айнымалылар көрсетіледі)

Var        (Құратын бағдарламамызға қажетті барлық айнымалылар түрі көрсетіліп жазылады)

 

Процедуралар мен функциялар бөлімі

Procedure (Процедура мәтіні толық жазылады)

Function   (Функция мәтіні толық жазылады)

 

Негізгі бөлім

Begin

Бағдарлама денесі, яғни негізгі нәтижеге жету үшін пайдаланылатын нұсқаулар тізбесі жазылады.

End.

 

Қарапайым сәлемдесу  бағдарламасын құралық:

Program Hello_CHIKO;

Var Name: String;                     {Мәтіндік шама Name}

BEGIN

Write(‘Толық атыңыз кім?’) {Сұрақты экранға жазып шығарады}

ReadLn(Name);                         {Пернешеліктен енгізуді сұрату}

Writeln(‘Сәлем,’,Name,’!’);    {Сәлемдесуді экранға шығару}

ReadLn

END.

Бұл мысалдан мынаны байқауға болады:

1Сипаттау бөліміндегі  түйінді сөздердің қажеттісін  ғана пайдалануға ғана болатынын.

2Бағдарламаның әр  нұсқауының соңы нүктелі үтірмен  аяқталатынын.

3Соңғы END түйінді сөзінің соңына нүкте қою керектігін.

Program түйінді сөзінен кейін бағдарлама шартына байланысты өзіміз таңдап алған атты тек латын әліпбиі әріптерін пайдаланып жазамыз.

Сипаттау бөліміндегі  түйінді сөздерден кейінгі мәліметтердің  жазылуы мына төмендегідей болуы  тиіс:

Uses Crt, Graph, Printer, Overlay; т.б. кітапхана аттарының қажеттісі үтірмен ажыратылып жазылады. Кітапхананы өзіміз де жасауымызға болады.

Const Pi=3.14159; g=9.81; Тұрақты шамалар аты, содан соң теңдік таңбасы және мәні беріледі. Аралары нүктелі үтірмен ажыратылып жазылады. [12, б 98-102; 13, б 326-328]

Var A, B, C: integer; құратын бағдарламамызға қажетті барлық айнымалылар аттары және олардың қандай шама екенін көрсететін түрі жазылады. Әр түрлі шамалар бөлек-бөлек жазылып, бір тектес шамалар аттары бірнешеу болса аралары үтірмен бөлінеді де, одан соң қос нүкте (:) қойылып, түрі көрсетіледі. [14, б 256-260]Турбо Паскальда стандартты: integer, real, char, boolean сияқты шама түрлері болады.Сондай-ақ Паскальда шамалар түрлерін өзіміз анықтап, жаңа айнымалылар түрлерін көрсетуге де болады.

Информация о работе Матрицамен Жұмыс