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

Автор работы: Пользователь скрыл имя, 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 элемент 2 элементтен кіші болса, олар орындарымен ауысады. бұл процес көрші элементтер арасында қайталанады. осылай барлық элементтер өңделеді. басқа оын ауыстырулар болмаса, алгоитм өз жұмысын аяқтайды.

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

- Латын алфавитінің  әріптері цифрлар астын сызу белгілері .

-  Идентификатор цифрдан басталмайды .

-  Хордағы сөздік  идентификатор ретінде қолдануға болмайды .

- Идентификатор ұзындығын еркін таңдауға болады . Әріптердің үлкен кішісінің ешқандай роль атқармайды .

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

Курстық жұмыс екі  бөлімнен, кіріспеден, қорытындыдан, пайдаланған  әдебиеттер тізімінен және қосымшалардан  тұрады.

Бұл курстық жұмыстың мақсаты:

1) Паскаль тілінде екі өлшемді массивпен жұмыс;

2) бағдарламалау тілінің элементтеріне шолу;

3) берілген тапсырма бойынша бағдарламаға сипаттама беру ;

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

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

Жұмыстың териялық базасы Заурбеков Н.С., Жұмажанов Б.Ж., Наумова А.Н.,Фаронов, Культин ,Халыкова К.З. еңбектері болып табылады.

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

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

 

 

1 Жалпы бөлім

1.1 Пәндік аумақты сипаттау

 

Паскаль тілінде матрица негізгі екі өлшемді массивпен беріледі. Матрицаны қарастырмас бұрын массивтерге тоқталайық.

Массив дегеніміз – бір типтегі берілгендер жиыны. Басқаша айтқанда, массив – бір атауға біріктіріліген айнымалылардың реттелген тізбегі. Айнымалылардың – массив элементтерінің типтері бірдей болады. Массив бір ғана атпен беріледі. Сөйтіп, Паскаль тіліндегі массив ұғымы алгоритмдік тілдегі кесте ұғымына сәйкес келеді. [1, б 201-203]

Индекс типі стандартты, бүтін немесе нақты тип бола алмайды. бағдарламада «индекс» және «индекстің типі» . Ғымдарын шатастыруға болмайды.

Индекс типі массивті бейнелегенде пайдаланылса, индекс массив элементтерін белгілеу үшін операторлық  бөлікте пайдаланылады. Индексті бейнелегенде қандай тип берілсе, индекс сол типте ғана болуы тиіс.

Индекс өрнек, айнымалы немесе тұрақты болып берілуі  мүмкін.

Сондықтан да көп жағдайларда  массивтерді индексті айнымалылар  деп те атайды. Ал индекссіз айнымалыларды  массивтерден ажырату үшін қарапайым айнымалылар дейді. Базалық типтегі айнымалыларға қандай амалдар қолданылса, массив элементтеріне де сондай амалдар қолдануға болады.

Егер массив атауында бір ғана индекс болса, онда ол массивті бір өлшемді, ал екі индекс болса  – екі өлшемді және т.с.с. n инедексті болса, n өлшемді массив дейді. Бір өлшемді массив элементтері вектор, ал екі өлшемді массив элементтері матрица деп аталады.

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

- массивті толтыру;

- массив элементтерін алмастыру;

- массив элементтерін өшіру;

- массивке элементтер қосу;

- массив элементтерін сұрыптау;

- массивтерді түрлендіру. 

ЭЕМ-нің жадында сандардың бір-бірімен  байланысқан көптеген мәндерін сақтау үшін индексті айнымалылар, яғни массивтер қолданылады. Массив дегеніміз – бірыңғай шамалар тізбегінің бір атаумен аталып реттелген жиыны. Математикадағы вектор, матрица осы массивке мысал бола алады. Тізбектің айнымалылары бір индексті элементтерден тұрса, онда бір өлшемді массив болады. Олардың индекстері сандармен немесе белгілі бір әріптермен жақша ішінде жазылады, мысалы: А(1), С(12), К(100). Массивпен жұмыс істеу үшін оның әр элементінің мәні белгілі болуы тиіс. Сондай-ақ массивтің идентификаторы /аты/ да жай айнымалының идентификаторы сияқты белгіленеді.

Паскаль тілінде массивтің номері /индексі/ тік жақшаға алынып, жазылады, мысалы: 1,6; 4,9; 5; 8,9; 0,47 – мәндерінен тұратын  А массивін былай жазамыз: А[1]=1,6; А[2]=4,9; А[3]=5; А[4]=8,9; А[5]=0,47. Егер есептеу барысында А1, А2, А3, ... А25 массиві кездессе, онда оны бағдарлама барысында А[25] түрінде жазамыз. Мұндағы А-массив аты болады, 25-оның индексінің қабылдайтын ең үлкен мәні болып есептеледі. [2, б 123-126 ]

Паскаль тілінде массивті бағдарламада қолдану үшін алдымен оларды міндетті түрде арнаулы ARRAY /ағылшын тілінен аударғанда - массив/ - операторы арқылы сипаттап жазу керек. Ол айнымалы – VAR немесе TYPE – тип бөлігінде көрсетіледі. VAR арқылы жазылуы:

VAR массив аты: ARRAY [бастапқы номері...соңғы номері] OF типі;

Көп жағдайда массивтің  номері /индексі/ 1-ден басталады, бірақ  бұл міндетті емес. Сондай-ақ массив символдық типтен де тұрады. Символдық  жол – STRING үшін массив келесі түрде өрнектеледі:

TYPE

STRING: ARRAY [0..255] OF CHAR;

Массивтің номерінің  санына қарай қанша элементті массив екенін байқауға болады. Егер бірнеше массивтер бір ыңғай типті және элементтер саны тең болса, онда оларды бағдарламада бір жолда сипаттауға болады, мысалы:

VAR A, B, C: ARRAY [1..25] OF REAL;

Мұнда А, В, С – массивтерінің мәндері 25 элементтен тұратын нақты сандар.

A[1], A[2], A[3], … , A[25],

B[1], B[2], B[3], … , B[25],

C[1], C[2], C[3], … , C[25].

Паскаль тілінде массивтер  арасында «тең», «тең емес» немесе «меншіктеу операторы» амалдарын қолдануға  болады. Мысалы, егер А және В массиві  былай берілсе:

VAR

A, B: ARRAY [1..10] OF REAL;

Бұған үш амалды қолданғанда  төмендегідей нәтиже береді:

 

Кесте 1 - Амалдарды қолдану

 

Өрнек

Нәтиже

А=В

Егер әрбір А массиві  элементінің мәні сәйкес В массиві  элементтерінің мәніне тең болса.

А<>B

Егер А массиві элементінің  ең болмағанда бір мәні сәйкес В  массиві элементінің мәні тең  болмаса.

A:=B

В массиві элементінің  барлық мәні сәйкес массиві элементінің  мәні меншіктеледі. В массиві элементінің  мәндері өзгеріссіз қалады.


 

Көп тапсырмалар мәліметердің көпөлшемді массивтерін өңдеумен байланысты. Ең көп таралғаны екі өлшемді массивтер. [3, б.265-269]

Математикада екі өлшемді  массивтер матрица түрінде:

 

 

немесе қысқаша беріледі,

 

,

 

мұнда n – матрицаның жол саны, m – бағандар саны, i, j - Қиылысында элементі жататын ағымдағы жол мен баған индекстері.

Мәліметтердің басқа  объектілері сияқты, матрица да var бөлімінде бейнеленеді. Оның бейнеленуі вектордан айырмашылығы квадрат жақшада диапазонның екі операторы жазылады. Олар матрицаның сәйкес жолы мен бағанын көрсетеді.

var Матрица Аты: array

  [n1..n2, m1..m2]  of  Тип;

Мұнда n1..n2 – жол нөмірінің мән диапазоны, n1 и n2–бүтін санды константалар, m1..m2 - баған нөмірінің мән диапазоны,  m1 және m2 – бүтін сандар.

Векторлар сияқты матрицалар мәліметтер типінің кез келген тілінің  элементтерінен болуы мүмкін.

n жол және m баған матрицасынан столбцов  n*m*k байт өлшемдегі жады аймағы ерешеленеді, мұнда k – бір элементтің байтпен берілген өлшемі. Бұл өлшемді арнай кестеден білуге болады. Оперативті жадыда матрица үнемі жолмен(построчно) сақталады.

Мысалы, A матрицасы үшін оператор жазған түрі

var A:array [1..5,1..4] of real;

Жадының  20 ұяшығы 6 байттан  бөлінеді және келесі A1,4 элементінен ұяшықта A2,1 элементінің мәні сақталады.

Матрицаның жеке элементіне нұсқау екі индексі бар айнымалы көмегімен жүзеге асырылады, мысалы:

ai,j   a[i,j]

a2,1   a[2,1]

a2n,k   a[2*n,k]

Бірінші индекс математикадағыдай  жол нөмірін көрсетеді, ал екінші –баған нөмері.

Жадының адресациясы  әрдайым сызықты болатындықтан, матрицаны мәліметтердің құрылымдық түрі(тип) деп түсінуге болады. Жеке  жағдайда матрицаны қолдану сонша элементі бар вектормен алмастырылуы мүмкін: так An,m матрицасына n*m элементінен b векторы үнемі қойылуы мүмкін, ал  жол мен бағанды бірлікпен нөмерлеу кезінде  A[i,j] элементіне бағыттау  b[(i-1)*m+j] элементіне бағыттаумен алмастырылуы мүмкін..

Вектордың кез келген кезекті өңдеуі for циклінде орындалады, матрицаны өңдеу for екі циклінде жүзеге асады:

 

for i:=1 to n do

for j:=1 to m do

{A[i,j] элементін өңдеу}

Бүтін циклдарды орындау  ережесі бойынша j айнымалы екілік циклде i айнымалысына қарағанда жылдам өзгереді. Осылайша, матрицаның барлық элементтерін өңдеу баған бойынша орындалатын болады. Баған бойынша матрицаның барлық элементін кезекті өңдеу үшін i және j бойынша цикл орындарын ауыстыру жеткілікті:

for j:=1 to m do

for i:=1 to n do

{ A[i,j] элементін өңдеу}

Теория жүзінде бұл  тапсырманы матрицаның элементіне (A[i,j] орнына A[j,i] қолданып) бағыттауда индекстердің орындарын ауыстырумен шешуге болады, алайда түсінбестіктер болмас үшін олай істеу талап етілмейді. [3, б 265-269]

Матрицаны өңдеудің базалық алгоритмдерін  шартты түрде екі типін қарастыруға болады:

- алгоритмдер матрицаның барлық элементтерін өңдеу кезінде жүзеге асады;

- алгоритмдер матрицаның жеке жолдарын және жеке бағандарын өңдеу кезінде жүзеге асады;.

Бірінші жағдайда вектордан екі  цикл болғандықтан ерекшеленеді.

1. бірінші типтегі алгоритмге мысал келтірейік

A матрицасында 4*4 өлшемінде оның оң элементтерінің қосындысын және екі шаманың қатынасын табу керек. Мәндері [2, 10] интервал арасында жаты.

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

i,j:integer;

s,p,z:real;

begin

{енгізу циклі }

writeln (4*4'өлшемдегі матрицаны енгізу);

for i:=1 to 4 do

for j:=1 to 4 do read (a[i,j]);

{өңдеудің бастапқы мәні және циклі}

s:=0;

p:=1;

for i:=1 to 4 do

for j:=1 to 4 do begin

if a[i,j]>0 then s:=s+a[i,j];

if (a[i,j]>=2) and (a[i,j]<=10)

then p:=p*a[i,j];

end;

{нәтижені шығару}

writeln ('Сумма=',s:6:2);

writeln ('Туынды=',p:6:2);

if p<>0 then begin

z:=s/p;

writeln ('Қатынас=',z:6:2);

end

else writeln ('p=0, қатынас ',

'бөлу мүмкін емес');

reset (input); readln;

end.

Шартында матрица түрі айтылмағандықтан, «жалпылау» түрі real.таңдалған. енгізу әдісі де үнсіз таңдалған. Ізделінген суммасы, туындысы, бөлімі сәйкесінше s, p и z белгіленген..

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

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