Delphi программалау тілінде есепті реализациялау

Автор работы: Пользователь скрыл имя, 30 Января 2015 в 18:46, курсовая работа

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

Есептеуіш техниканың қарқынмен дамуы тиімді программалық құралдарды жасау – объектілі бағдарланған программалау жүйелерінің жасалуына әкелді. Жылдам құру жүйесінің негізіне (RAD-Rapid Application Development –қосымшаларды жылдам құру ортасы)визуалды жобалау мен оқиғалы объектілі бағдарланған программалау технологиясы алынған.

Содержание

Кіріспе
1 Теориялық негізі және ақпаратпен жабдықталуы
1.1. Объектілі бағыттылған программалау ортасының мүмкіндіктері
1.2. Delphi тілінде айнымалыларды түрлендіру функциялары
1.3 Матрицаларды өңдеуде қолданылатын компоненттер
2 Массив элементтерін ЕНГІЗУ ЖӘНЕ ШЫҒАРУ
2.1 Массивтерді сипаттау
2.2 Массив элементтерін өңдеу
2.3 Екі өлшемді массивтерді өңдеу алгоритмі
3 dELLLPHI ОРТАСЫНДА есептерді шешу және талдау
3.1 Delphi программалау тілінде есепті реализациялау
3.2 Есептің нәтижесін талдау
ҚОРЫТЫНДЫ
ҚОЛДАНЛҒАН ӘДЕБИЕТТЕР

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

ТП массивтер.doc

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

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

K:=0;

For I:=1 to 5 do

       If M[I] = 0 then K:=K+1;

Циклдік қайталану орындалып болған соң К айнымалысында нөлдік мәнде элементтер саны есептелінеді. К-ның бастапқы мәні 0-ге тең болып, программада For - операторына дейін жазылады.

Массив элементтерінің орнын ауыстыру да қосымша айнымалыны (К массивтің базалық типіне сәйкес болуы керек) енгізу арқылы шешілетін мәселе. Мысалы М массивінің төртінші және екінші элементтерінің орнын ауыстыру керек болса:

Kos:=M[4]; {Kos-қосымша айнымалы}

M[4]:= M[2];

M[2]:= Kos;

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

Программалаудағы массив типті мәліметтерді өңдеуге арналған тәсілдерін көрсету мақсатымен төмендегі бірнеше мысалдарды қарастырайық.

Бір өлшемді А(i) (мұнда i = 1, 2, …, N) массивінің элементтерінің S қосындысын және P көбейтіндісін есептейтін алгоритмін құру қажет. Есептеуде массив элементтерінің саны 20 болсын.

Осы N нақты сандар тобын А массив деп қарастырсақ, массивтің элементтері а[1], a[2], …, a[20] нақты сандар болады.

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

а)    б)


 

 

 

 

 

 

 

 

 

 

 

 

 

                жоқ  

 ия  

 

 

 

17-сурет. Бір өлшемді массив элементтерінің  қосындысы мен көбейтіндісін  табу алгоритмі (а);

модификация блогын қолданып құоылған алгоритм (б)

 

Program M61;

Var

i: integer;

A: array[1..20] of real;

S,P: real;

Begin

For i:=1 to 20 do Read(a[i]);

S:=0; P:=1;

For i:=1 to 20 do

        Begin

               S:=S+a[i]; P:=P*a[i];

        End;

Writeln (‘қосынды=’, S:6:2);

       Writeln (‘көбейтінді=’, P:6:2);

End.

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

Program M61_1;

Const

N=20;

Var

i: integer;

A: array[1..N] of real;

S,P: real;

Begin

For i:=1 to N do Read(a[i]);

S:=0; P:=1;

For i:=1 to N do

        Begin

               S:=S+a[i]; P:=P*a[i];

        End;

Writeln (‘қосынды=’, S:6:2);

       Writeln (‘көбейтінді=’, P:6:2);

End.

Енді программада массив элементтерінің санын өзгертетін болсақ, онда программаға тек бір ғана өзгеріс еңгізіледі, ол: N тұрақтысы программада қайта анықталады.

 

 

2.3 Екі өлшемді массивтерді өңдеу алгоритмі

 

Массив типін сипаттау  келесі ережемен жазыладыі:

TYPE <тип аты>= ARRAY [<инд1_тип >,< инд2_тип >]  OF < тип >

 Содан соң массив типінің айнымалылары программаның VAR бөлімінде суреттеледі, мысалы:

TYPE mas2=ARRAY [1…5, 1…5] OF ENTEGER;

VAR A,B,C: mas2;

Массив типінің айнымалыларын программаның VAR бөлімінде де сипаттауәа е болады:

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

мўнда M жјне N- массивте жол мен баәан санын анықтайтын константтар,.

Егер программада массивтің келесі сипаттамасы қолданса:

VAR A:ARRAY [1…3, 1..2] OF BYTE;

BEGIN

A[1,1]:=1;  A[2,1]:=2; A[3,1]:=3;

A[1,2]:=4;  A[2,2]:=5; A[3,2]:=6;

END.

Онда компьютер жадында 1,4,2,5,3,6 мјні бар байттар бірінің артынан бірі орналасады:

Осы зертханалық жўмыста екі өлшемді массивті қолдану тапсырмасы қарастырылады. Төменде екі өлшемді массивті енгізу жјне шығару үшін программа үзіндісі келтірілген:

{ A[N, N], мўнда N-константа}

FOR I:=1 TO N DO

FOR J:=1 TO N DO

READ (A[I, J]);

{A[N, N] массивті шығару}

FOR I:=1 TO N DO

BEGIN

FOR J:=1 TO N DO

WRITE (A[I, J]:4);

WRITELN;END;

       

Циклдік орын ауыстыру алгоритмдері. Осы есептерлің ішінде циклдік жылжытуды  (оңға, солға ) қолданатын есептерді аса маңызды деп білеміз. Осыған байланысты елесі есептерді қарастырайық.

Мысал. Циклдік жылжыту арқылы N элементтен тұратын А массивінің  элементтерінің оңға қарай М орынға (позицияға) , ал соңы М позициясында тұрған элементтерді массивтің басына жылжыту керек болсын.

Берілген мәліметтер: A(N) массив элементтері - a(i);

M – массив элементтерін неше  позицияға жылжыту керектігін  көрсететін шама;

N – А массив элементтерінің  саны;

 Қосалқы шамалар:  B - массив элементтерін уақытша сақтау үшін;

Нәтижесі:A(N) – элементтерін орын алмастыру барысында шыққан массив;

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

Ішкі  i-параметрлі цикл, кезекті i-ші элементтің орнына алдыңғы  i-1-ші орындағы элементтің мәнін жазу арқылы циклдік жылжыту ұйымдастыруға мүмкіншілік береді. Бұл цикл параметрінің бастапқы мәні n-нен басталып 2-ге дейін өзгереді. Ал қадам мөлшері 1-ге тең.

inline (ішіне орналастыру) процедурасы немесе функциясы;

interrupt (үзу) процедурасы немесе функциясы болмауы керек.

Процедураларды белгілейтін айнымалыларды пайдаланудағы сипаттаманы келтірейік:

 Type

PI = Procedure;

Р2 = Procedure(var x, y: integer);

Fl = Function(var A, B : char) : integer;

Var

Sum : PI;

Res : P2;

Kode: Fl;

Жоғарыда айтылғандарды қорытындай отырып, келесі түжырымдама жасауға болады: Паскаль тіліндегі «процедуралар мен функциялар программаның миниатюрасы деуге болады. Сондықтан күрделі мөселелерді шешуге арналған программаларда оларды программаның "құрылыс материалдары" ретінде пайдалануға болады ма, деген ой туындайды? Әрине болады, бұл жағдайда программаны түзу процессі модульдік принцип негізінде орындалады. Процедуралар мен функцияларды пайдалана отырып, түзілген программа түрлі қажетсіз қайталауларға жол бермейді де, пайдаланушыға түсінікті және көрнекі болады. Сонымен, процедуралар мен функциялар программалау технологиясының табиғи толықтауышы болып, сапалы программа жазуға мүмкіндік береді. Жоғарыда ұсынылған программалау стилін жүзеге асыру мүмкіндіктерін көрсету үшін келесі мысалды қарастырайық.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 DELPHI ОРТАСЫНДА есептерді шешу және талдау

 

3.1 Delphi программалау тілінде есепті реализациялау

 

Есептеуіш техниканың дамуы басынан бастап математикалық есептеудің ыңғайлығы мен жылдамдығына бағытталды. Математикалық есептердің  үлкен классы матрицалардың қолданылуымен тығыз байланыста: векторлық алгебра, теңдеулер жүйесін шешу, және т. б. Матрицалармен қолданатын операциялар ғылым мен техниканың көптеген салаларында қолданылады. Матрицалар және кестелер көмегімен көптеген математикалық моделдеу әдістемелері мен алгоритмдері жетілдірілді. Жаңа заманға сай көптеген бағдарламалық комплекстер матрицаларды өңдеу құралдарын қамтиды. Бағдарламаны құрған кезде, матрицаларды аңықтау барысында бағдарламалау тілдері ережеге сай екілік массивтерді қолданады. Элементтердің индекстелуі көмегімен матрицаның жазылуы мен өңделуіне жақын конструкциялар пайда болады. Массивтердің циклдік өңделуі PASCAL, C++, FORTRAN, BASIC, DELPHI және сол сияқты тағы да басқа жоғары деңгейдегі тілдер үшін компактылы және түсінікті жазбаларды қабылдауға әсерін тигізеді. Кейбір статикалық мәліметтерді қолданғанда және матрицалармен жиі жұмыс жасаған кезде элементтерді өзінің арасына қою қажет болады. Бұл жағдай экономикалық мәліметтер мен лексикалық анализдерін және криптография жасаған кезде пайда болады. Берілген жобаның мақсаты DELPHI бағдарламалау тілінде математикалық функцияларды зерттеу, дәлірек айтқанда матрица элементтерінің анализін өңдеу болып табылады. Компьютердегі есептерді дайындау және шешу процесі бірнеше этаптардан тұрады: – есептің берілуі; – моделдің құрылуы; – алгоритмнің құрылуы; – бағдарламалық тілде бағдарламаның жазылуы мен реттелуі; – бағдарламаның тестілеуі. Бұл барлық жұмыстардың негізін негізгі қасиеттері детерминанттылық, массивтілік, нәтижелілік болатын эффективтік алгоритмді құрайды. Бағдарламаны жетілдіру кезінде структуралық (құрылымдық) бағдарламалау әдісі қолданылады: есептің салыстырмалы тәуелсіз бөлімдерге бөлінуі және осы бөлімдерді баптау орындалады. Осының негізінде программалық жабдықтаудың сапасы мен жылдамдығына қол жеткіземіз.

Delphi- де авторлық батырма  жасау

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

1) батырманың қалыпты жағдайдағы  күйі

2) батырма үстіне маус көрсеткішін  жақындатқан кездегі күйі 3) батырманы шеркен жағдайдағы күйі

Осы аталған үш күйге сәйкес сурет салып, олар jpg типті файлда сақталады: 1.jpg- батырманың қалыпты жағдайдағы, 11.jpg- батырма үстіне жақындатқан жағдайдағы, 111.jpg-шеркен жағдайдағы күйлеріне сәйкес файлдар (батырма өлшемі Height =65, Width =129) .

 


 

 

 

 

Сурет1.jpg файлы                         Сурет 2.jpg файлы


 

 

 

 

                              Сурет 3.jpg файлы

 

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);

begin

Image1.Picture.LoadFromFile('c:\11.jpg')

end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);

begin

Image1.Picture.LoadFromFile('c:\111.jpg');

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);

begin

Image1.Picture.LoadFromFile('c:\1.jpg');

end;

     

Сонан соң, Delphi формасына батырма өлшеміндей (Height =65, Width =129) Image компоненті қойылып, оның Picture қасиетіне 1.jpg суреті орнатылады. Image компонентіне маусты жақындатқандағы (Image1MouseMove), оны батырма сияқты шерткендегі (Image1MouseDown) және маусты формада жылжытқандағы (FormMouseMove)оқиға өңдеушілеріне сәйкес төмендегі кодтар жазылады.

 

                              Сурет 4.Формадағы қажетті компоненттер терезесі

 

Матрицаны енгізу жол бойынша жүргізіледі, келесі жолға көшу үшін «Enter» пернесін басу керек. Жол саны орындаушы енгізген жол санына тең болғанда, матрицаның енгізілуі тоқтатылады. Енгізілген матрица тексерілу үшін экранға шығарылады. Одан кейін матрицаға енгізілген матрицаның «жарамдылық» тексерісі өтеді, егер «жарамды» болмаса, онда экранға қате туралы хабарлама жарияланады және программа мәзірге шығу немесе мәліметтерді қайта енгізуді сұрайды.

 

3.2  Есептің нәтижесін  талдау

Матрица «жарамды» болған жағдайда оған таңдалған операция орындалады да, нәтижесі экранға хабарланады. Орындаушымен «Матрицаны көбейту» операциясы орындалса, орындаушыға оның бірінші матрица мен екінші матрица мәндерін енгізу сияқты өлшемдерін енгізу ұсынылады. Одан әрі программа таңдалған операцияның матрицаға енгізген параметрлерімен орындалғандығын тексереді. Егер орындалмаса сәйкесінше экранға қате туралы хабар беріліп программа мәзірге шығуды немесе әрекетті қайталауды ұсынады. Керісінше болған жағдайда, операция орындалады да негізгі және нәтижелік марицасы экранға шығады.

 

procedure TForm1.Button4Click(Sender: TObject);

var i,j:integer;

begin

Full_0(StringGrid1);

Full_0(StringGrid2);

if  (StringGrid1.ColCount=StringGrid2.ColCount) and

(StringGrid1.RowCount=StringGrid2.RowCount)  then

  begin

    StringGrid3.RowCount:=StringGrid1.RowCount;

    StringGrid3.ColCount:= StringGrid1.ColCount;

    for j:=0 to StringGrid1.ColCount-1 do

        for i:=0 to StringGrid1.RowCount-1 do

           begin

          StringGrid3.Cells[i,j]:=IntToStr(StrToInt(StringGrid1.Cells[i,j])+StrToInt(StringGrid2.Cells[i,j]));

           end;

  end else ShowMessage('Размерности не  совпадают!!!');

end;

 

Сурет 5.Матрицаларга мәндер беру және қосу терезесі

Информация о работе Delphi программалау тілінде есепті реализациялау