- •Қазақстан Республикасы Білім және ғылым министрлігі
- •Алғысөз
- •Қазақстан Республикасы Білім және ғылым министрлігі
- •Түсінік хат
- •Курс мазмұны
- •Практикалық сабақтардың болжамдық тақырыптары
- •Пәннің оқу-әдістемелік қамтамасыз етілуі
- •Қазақстан Республикасы Білім және ғылым министрлігі
- •Түсінік хат
- •Оқу жоспарынан көшірме
- •Модуль бойынша пәннің тақырыптық жоспары
- •Пән мазмұны
- •1 Модуль. Delphi ортасында құрылымдық және модульдік бағдарламалау
- •2 Модуль. Графика, динамика және мультимедия. Интерфейсті қосымшалар құру.
- •Бақылау түрі
- •Негізгі әдебиет
- •Қосымша әдебиет
- •Алғысөз
- •Оқу жоспарынан көшірме:
- •Бекітілген кестеге сәйкес курс бойынша сабақ кестесі
- •Бағалау саясаты
- •Оқытудың кредиттік технологиясы бойынша студенттердің білімін бағалау шкаласы
- •Пән мазмұны
- •Сөж тақырыптары
- •Рефераттар тақырыптары
- •Негізгі әдебиет
- •Қосымша әдебиет
- •Пәннің оқу-әдістемелік қамтамасыз етілу картасы
- •Пән бойынша тапсырмаларды орындау және тапсыру кестесі
- •Практикалық сабақтар
- •1Модуль. Delphi ортасында құрылымдық және модульдік бағдарламалау №1.1 практикалық сабақ
- •1.1. Delphi бағдарламаны құрастырудың интегралданған ортасы
- •1.2. Delphi бағдарламаларының құрылымы
- •Interface
- •1.3.4. Жазбаларды орналастыру (tLabel)
- •1.3.5. Нәтижені шығарудың көпжолды терезесін орналастыру (tMemo)
- •1.3.6. Форма құру жағдайын өңдеу бағдарламасын жазу (FormCreate)
- •1.3.7. Батырманы басу жағдайын өңдеу бағдарламасын жазу (ButtonClick)
- •1.3.8. Бағдарламаны орындау және онымен жұмыс жасау
- •1.4. Өзіндік жұмысты орындау
- •№1.2 Практикалық сабақ
- •2.1. Паскаль тілінің if және case операторлары
- •2.2. Delphi-дегі ауыстырғыш-батырмалар
- •2.3. Бағдарлама жазудың мысалы
- •2.3.1. Форманы құру
- •2.3.2. TСheckBox компонентімен жұмыс жасау
- •2.3.3. TRadioGroup компонентімен жұмыс жасау
- •2.3.4. FormСreate және Botton1Сlick жағдайларын өңдеуді құру
- •№1.3 Практикалық сабақ
- •3.1. Pascal тіліндегі циклдерді ұйымдастыру операторлары repeat, whіle, for
- •3.2. Delphi-дегі бағдарламаларды өңдеу құралдары
- •3.3. Тапсырманы орындау реті
- •3.4. Жеке тапсырманы орындау
- •№1.4 Практикалық сабақ
- •4.1. Массивтермен жұмыс
- •4.2. TStringGrid компоненті
- •4.3. Тапсырманы оырндау реті
- •4.4. TStringGrid компонетін баптау
- •№1.5 Практикалық сабақ
- •5.1. TListBox компоненті
- •5.2. TComboBox компоненті
- •5.3. TBitBtn компоненті
- •5.4. Жеке тапсырманы орындау тәртібі
- •№1.6 Практикалық сабақ
- •6.1. Жазба типті айнымалыны қолданып программалау
- •6.2. Файлдармен жұмыс
- •Файлдармен жұмыс жасайтын процедуралар және функциялар:
- •6.3. Файлдармен жұмыс жасайтын ішкі программалар
- •6.4. TOpenDialog және tSaveDialog компоненттері
- •6.5. Тапсырманы орындау реті
- •6.5.1.TOpenDialog және tSaveDialog компоненттерін күйге келтіру
- •6.1-Сурет
- •6.5.2. Программамен жұмыс
- •6.2-Сурет
- •6.6. Жеке тапсырмалар
- •№1.7 Практикалық сабақ
- •7.1. Ішкі программалардың қолданылуы
- •7.2. Модульдердің қолданылуы
- •7.3. Тапсырманы орындау мысалы
- •7.3.1. Модульді құру
- •7.3.2. Модульді іске қосу
- •7.1 - Сурет
- •7.4. Жеке тапсырмалар
- •2 Модуль. Графика, динамика және мультимедия. Интерфейсті қосымшалар құру.
- •№2.2 Практикалық сабақ
- •9.2 Динамикалық тізімдерді қолдану
- •9.2-Сурет Edit Button Модуль тексті
- •9.3. Жеке тапсырманы орындау
- •№2.3 Практикалық сабақ
- •Бұрыштары дөңгеленген тіктөртбұрыш
- •№2.4 Практикалық сабақ
- •І. Мәліметтерді файлдан оқу және файлға жазу. Тестілеу программасын құру
- •№2.7 Практикалық сабақ
- •№2.8 Практикалық сабақ
- •Төмендегі компоненттердің қайсысы визуальды компонентке жатпайды?
- •Осөж-ды орындауда қолданылатын әдебиеттер тізімі:
- •Үй тапсырмалары
- •1 Модуль. Delphi ортасында құрылымдық және модульдік бағдарламалау
- •1.1 Тапсырма.
- •1.2 Тапсырма.
- •1.3 Тапсырма.
- •1.4 Тапсырма.
- •1.5 Тапсырма.
- •1.6 Тапсырма.
- •1.7 Тапсырма.
- •1.8 Тапсырма.
- •Арнайы кабинеттер, аудиториялар мен зертханалар тізімі.
- •Мазмұны
№1.4 Практикалық сабақ
Тақырыбы: Массивтерді қолданып бағдарламалау.
Мақсаты: TStringGrid компонетінің қасиеттерін оқып үйрену. Массивтерді қолданып бағдарлама құру.
Қажетті құралдар мен материалдар: ДК, Delphi ортасы.
Мазмұны мен жұмысты орындау реті
1. Теориялық материалды қайталау.
4.1. Массивтермен жұмыс
Массив бұл бір атаумен аталатын бірдей типті элементтердің реттелген жиыны. Массивтің әрбір элементі атауымен және одан кейін квадрат жақшада көрсетілетін бір немесе үтірмен бөлінген бірнеше индекстермен белгіленеді, мысалы: a[1], bb[I], c12[I,j*2], q[1,1,I*j-1].. Индекс ретінде LongInt типінен басқа кез келген реттік типтер қолданылуы мүмкін.
Массив типі немесе массивтің өзі сәйкесінше типтерді сипаттау бөлімінде (Type) немесе айнымалыларды сипаттау бөлімінде (Var) Array қызметші сөзінің кмегімен келесі түрде сипатталады:
Array [индекстердің сипатталуы] of <массив элементінің типі>
Массивтерді сипаттау мысалдары:
Const N=20; // Индекстің максимал мәнін сипаттау;
Type TVector=array[1..N] of real; // Бір өлшемді массив типін сипаттау;
Var a:TVector; // А –Tvector типті массив;
Ss:array[1..10] of integer; // Ss – он бүтін саннан тұратын массив;
Y:array[1..5,1..10] of char; // Y – символдық типті екі өлшемді массив.
Массив элементтері өрнектерде қарапайым айнымалылар секілді қолданылуы мүмкін, мысалы:
F:=2*a[3]+a[ss[I]+1]*3;
A[n]:=1+sqrt(abs(a[n-1]));
4.2. TStringGrid компоненті
Массивтермен жұмыс жасағанда экраннан ақпаратты енгізу немесе шығару кезінде кестелерді пайдаланған ыңғайлы. TStringGrid компоненті әрбір ұяшығы біржолдық мәтіндік редакторды (Tedit терезесіне ұқсас) бейнелейтін, ақпаратты екі өлшемді кесте түрінде бейнелеуге арналған. Ақпаратқа ену Cells[ACol, ARow: Integer]: string қасиеті арқылы жүзеге асырылады, мұндағы ACol, Arow – екі өлшемді массив элементінің индексі. ColCount және RowCount қасиеттері кестедегі бағандар саны мен жолдар санын тағайындайды, ал FixedCols және FixedRows қасиеттері тұрақты аймақтың бағандар мен жолдар санын тағайындайды. Тұрақты аймақ басқа түспен ерекшеленген және оған пернетақтадан ақпарат енгізуге болмайды.
4.3. Тапсырманы оырндау реті
Тапсырма: векторын анықтайтын бағдарлама құрыңыз, мұндағы А – NxN өлшемді квадрат матрица, ал Y, B – N өлшемді бір өлшемді массивтер. Y векторының элементтері мына формуламен анықталады. N мәндерін TEdit компонентіне, ал А және B – TstringGrid компонентіне енгізіңіз. Нәтижені TButton типті батырманы басқан кезде, TStringGrid компонентіне шығарыңыз.
Сұхбаттасу панелі 4.1-суретте көрсетілген.
4.4. TStringGrid компонетін баптау
TStringGrid компонентін формаға орналастыру үшін компоненттері мәзірінің Additional бетінен белгісін таңдау керек. Сосын тышқанмен форманың қажетті жеріне шертіңіз. Компонент жақтауларынан ұстап оның өлшемін реттеңіз. Объектілер инспекторының терезесінде ColCount және RowCount қасиеттеріне 2 мәнін (екі баған және екі жол), ал FixedCols және FixedRows қасиеттеріне 1 мәнін (тұрақты аймағы бір баған мен бір жол) тағайындаңыз. StringGrid2 және StringGrid3 компоненттері бір бағаннан тұратындықтан: ColCount= 1, RowCount=2, FixedCols=0 және FixedRows=1. Үнсіз жағдайда TStringGrid компонентіне енгізуге болмайды, сондықтан StringGrid1 және StringGrid2 компоненттері үшін Options goEditing қасиетіне True мәнін тағайындаңыз.
Бағдарлама мәтіні төменде келтірілген.
unit tem4;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
Nmax=10; // Массивтің максимал мәні
Type
Mas2 = array[1..Nmax,1..Nmax] of extended; // Nmax өлшемді екі өлшемді массив типін сипаттау
Mas1 = array[1..Nmax] of extended; // Nmax өлшемді бір өлшемді массив типін сипаттау
var
Form1: TForm1;
A: Mas2; // Екі өлшемді массивті сипаттау
B,Y: Mas1; // Бір өлшемді массивті сипаттау
N,i,j: integer;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
N:=3; // Массвитің өлшемі
Edit1.Text:=FloatToStr(N);
{Кестелердегі бағандар саны мен жолдар санын тағайындау}
StringGrid1.ColCount:=N+1;
StringGrid1.RowCount:=N+1;
StringGrid2.RowCount:=N+1;
StringGrid3.RowCount:=N+1;
{Кестенің жоғары сол жақ ұяшығына массив атын енгізу}
StringGrid1.Cells[0,0]:='Массив A:';
StringGrid2.Cells[0,0]:='Массив B:';
StringGrid3.Cells[0,0]:='Массив Y:';
{Жоғарғы және сол жақ бағандарын түсіндірме жазбалармен толтыру}
for i:=1 to N do begin
StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);
StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
N:=StrToInt(Edit1.Text);
{Задание числа строк и столбцов в таблицах}
StringGrid1.ColCount:=N+1;
StringGrid1.RowCount:=N+1;
StringGrid2.RowCount:=N+1;
StringGrid3.RowCount:=N+1;
{ Жоғарғы және сол жақ бағандарын түсіндірме жазбалармен толтыру}
for i:=1 to N do begin
StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);
StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);
end; end;
procedure TForm1.Button2Click(Sender: TObject);
var s: extended;
begin
{ А массивін StringGrid1 кестесінің элементтерімен толтыру}
for i:=1 to N do
for j:=1 to N do
A[i,j]:=StrToFloat(StringGrid1.Cells[j,i]);
{ B массивін StringGrid2 кестесінің элементтерімен толтыру}
for i:=1 to N do
B[i]:=StrToFloat(StringGrid2.Cells[0,i]);
{А массивін В масивіне көбейту}
for i:=1 to N do begin
s:=0;
for j:=1 to N do s:=s+A[i,j]*B[j];
Y[i]:=s;
{StringGrid3 кестесіне нәтижені шығару}
StringGrid3.Cells[0,i]:=FloatToStrf(y[i],fffixed,6,2);
end;
end; end.
Студенттердің өз бетінше орындауға арналған тапсырмалар:
«Массивтер» тақырыбындағы барлық тапсырмаларда скаляр айнымалыларды TEdit көмегімен енгізілетін және TLabel компонентісінің көмегімен түсініктеме берілетін болсын. Скаляр нәтиже TLabel компонентіне шығарылсын. Формада массивтер TStringGrid компонентімен бейнеленсін, және кестенің 0-ші бағаны мен 0-ші жолында массив индекстері көрсетілсін. Есептеулер TВutton компоненті басылғанда орындалсын.
1. NxM өлшемді матрица берілген. Егер матрицаның k-шы бағанының барлық элементтері нольге тең болса, k-шы элементіне 0 мәнін, әйтпесе 1 мәнін меншіктеп B массивін алыңыз.
2. NxM өлшемді матрица берілген. Егер матрицаның k-шы жолының элементтері кему ретімен реттелген болса, k-шы элементіне 1 мәнін, әйтпесе 0 мәнін меншіктеп B массивін алыңыз.
3. NxM өлшемді матрица берілген. Егер матрицаның k-шы жолы симметриялы болса, k-шы элементіне 1 мәнін, әйтпесе 0 мәнін меншіктеп B массивін алыңыз.
4. NxM өлшемді матрица берілген. Матрицаныі «ерекеше» элементтерінің санын анықтаңыз. Элемент «ерекше» деп есептеңіз, егер ол өзінің бағанындағы қалған элементтерінің қосындысынан үлкен болса.
5. NxM өлшемді матрица берілген. Матрицаныі «ерекеше» элементтерінің санын анықтаңыз. Элемент «ерекше» деп есептеңіз, егер оның жолында сол жағында одан кіші элементтер, ал оң жағында одан үлкен элементтер орналасатын болса.
6. NxM өлшемді символдық матрица берілген. Матрицаның k – әртүрлі элементтер санын есептеңіз (яғни қайталанатын элементтерді бір реттен есптеңіз).
7. NxM өлшемді матрица берілген. Оның жолдарын бірінші элементтерінің өсу ретімен реттеңіз.
8. NxM өлшемді матрица берілген. Оның жолдарын элементтері қосындысының өсу ретімен реттеңіз.
9. NxM өлшемді матрица берілген. Оның жолдарын ең үлкен элементтерінің өсу ретімен реттеңіз.
10. Берілген n-шы ретті квадрат матрица қосалқы диагоналға порядка қатысты симметриялы болатынын тексеріңіз.
11. NxM өлшемді матрица үшін оның барлық ерше нүктелерін табыңыз. Матрицаның элементі ерше нүкте деп аталады, егер ол өз жолында ең кішісі және өз бағанында ең үлкені, немесе керісінше болса.
12. Берілген n-шы ретті матрицаның бас диагоналында абсолют шамасы бойынша ең үлкен элементтер орналасатындай жолдарының орындарын ауыстырңыз
13. Берілген n-шы ретті матрицасында қосалқы диагоналдың төменгі бөлігіндегі ең үлкен элементті және бас диагоналдың жоғарғы бөлігіндегі ең кіші элементті табыңыз.
14.NxMөлшемді матрицаның ең үлкен элементі орналасқан жолды ең кіші элемент орналасқан жолмен орын ауыстырыңыз.
15. n-шы ретті матрицасынан модулі бойынша ең үлкен элемент орналасқан жол мен бағанды жойып, n-1-ші ретті матрицаны алыңыз.
16. k символдан тұратын массив берілген. Экрнаға алдымен барлық цифрларды, сосын қалған символдарды шығарыңыз. Әрбір екі топтағы символдар реті сақталсын.
17. Соңына нүкте қойылған 1менkсимволдан тұратын массив берілген. Осы мәтінді кері ретпен шығарыңыз.
18. Цифрлардан тұратын бос емес массив берілген. Экранға осы массивте жиі кездесетін цифрды шығарыңыз.
19. X массивінің элементтерін өсу ретімен сұрыптаңыз.
20. X масивінің элементтерін кері ретпен орналастырыңыз.
21. X массивінің элементтерін солға қарай k позицияға ығыстырыңыз.
22.Xмассивінің элементтерін оңға қарай n позицияға ығыстырыңыз.
23. Xмассивін келесі ереже бойынша түрлендіріңіз: массивтің барлық теріс элементтерін басына, ал қалғандарын – аяғына орналастырыңыз.Теріс элементтер мен қалған элементтердің реті сақталсын.
24. X және Y массивтерінің әрқайсысының элементтері өсу реті бойынша реттелген. Осы екі массивтің элементтерін өсу реті бойынша орналасатындай Z массивіне біріктіріңіз.
25.k символдан тұратын массив берілген. Симметриялы болатынын тексеріңіз, яғни солдан оңға және оңнан солға бірдей оқылатынын тексеріңіз.
26. Екі массив берілген. Екінші массивке кірмейтін бірінші массив элементтері арасынан ең кіші элементті табыңыз.
27.X массивіндегі инверсиялар санын анықтаңыз(яғни үлкен сан кіші санның сол жағында орналасатын элементтер жұбы:i<j болғанда xi>xj).
28. Кіші латын әріптерінен тұратын массив берілген. Осы мәтінде бір реттен кездесетін әріптерді алфавит бойынша экранға шығарыңыз.
29. Қайталанып кездесетін символдарды жойып, k символдан тұратын массивті қайта экранға шығарыңыз.
30. Соңында нүкте қойылған k символдан аспайтын мәтінде неше әртүрлі символ бар екенін анықтаңыз.
Бақылау сұрақтары:
Массив дегеніміз не?
Массив қалай сипатталады?
Массивті енгізу және шығару үшін Delphi ортасында қандай компонент қолданылады?
TStringGrid компонентінің жолдар және бағандар санын қандай қасиеті көрсетеді?
Блиц-тест:
Кестені бейнелейтін компонент:
StringGrid.
String.
Columns.
Statusbar.
Chart.
TStringGrid кестесінің қандай мәні арқылы бағандарының санын өзгертуге болады?
ColCount.
TopRow.
LeftCol.
VisibleColCount.
RowCount.
Standard парақшасына кірмейтін компонентті көрсетіңіз:
Bitbtn.
Frame
Button
Timer
Combobox
Форма модулі файлының кеңеймесін атаңыз?
PAS.
EXE.
DPR.
DCU.
RES.
Қандай команда программаны компиляциялайды және оның орындалуын жүзеге асырады:
Run.
Edit.
Transe into.
Run to cursor.
Step over.
Глоссарий
Массив бұл бір атаумен аталатын бірдей типті элементтердің реттелген жиыны.
TStringGrid компоненті әрбір ұяшығы біржолдық мәтіндік редакторды (Tedit терезесіне ұқсас) бейнелейтін, ақпаратты екі өлшемді кесте түрінде бейнелеуге арналған.
Ақпаратқа ену Cells[ACol, ARow: Integer]: string қасиеті арқылы жүзеге асырылады,
Әдебиеттер: [1], [4], [10], [11], [13]