Бағдарламалау тілін сипаттау
Delphi – де программалау екі процестің өзара тызыз әрекеттесуінен тұрады: прогамманың визуалдық көрінісін құру және программаға толық қажетті басқаруды беру үшін программа кодын жазу процесі. Код жазу үшін код терезесі пайдалынылады, программа құру үшін қалған терезелер, оның ішінде форма терезесі пайдалынады.
Форма мен код терезесінің мазмұның арсында үздіксіз байланыс болады. Формаға компонентті орналастыру программа кодының автоматты өзгеруіне әкеледі және керісінше автоматты немесе қолмен қойылған код фрагменттерін өшіру сәйкес компоненттерді өшіруге әкеледі. Сондықтан програмистер алдымен форма құрады, қажет болған жағдайда код фрагментін жазуға көшеді.
Aйтылғaн тaлaптapды ecкepe oтыpып, қoйылғaн eceптi шeшyдiң кeлeci инcтpyмeнтaлдық құpaлдapы мeн әдicтepi aнықтaлды:
Қолданушының идентификаторы белгінің атын, тұрақты (констант), айнымалы, процедура, функция және мәліметтер типін белгілеу үшін қолданылады. Бұл аттар бағдарламашының (программист) өзі береді және ол келесі ережелерге сай келу керек:
Идентификатор әріп немесе санмен (цифр) құрылады.
Идентификатор барлық уақытта әріппен басталады, тек 0 – 9999 диапазонында орналасқан бүтін сан болатын белгі кірмейді.
Идентификаторда кіші және бас әріптерді қолдануға болады, компилятор оларды бірдей қабылдайды. Арнайы символдарды пайдалануға болмағандықтан оларды әдемілік үшін басты әріптермен жазуға болады. Мысалы, NumberLmes немесе btnOpen.
Бағдарламада екі идентификаторлардың арасына ең кемінде бір бөлгіш (разделитель) болуы керек.
Кесте 1 Бағдарламада қолданылатын нысаналар жайлы нысана кестесі
Нысана атауы | Нысана типі (класс) | Нысанның атқаратын қызметі | Нысанның қолданылған қасиеттері мен әдістері | Қасиеттер мен әдістердің сипаттамасы |
Button1, | TButton | Қарапайым батырма | Caption | Батырманың мәтіндік белгішесі |
OnClick | Батырманы басқандағы іс-әрекет | |||
Label1, Label2, | TLabel | Мәтінді жазып, пішінге шығару. | Caption | Жазбаның мәтіндік белгішесі |
SrtingGrid1 SrtingGrid2 | TSrtingGrid | Экранғамассивэлементтеріненгізужәнешығару | Name | компонент аты |
ColCount | Кесте бағандарының саны. | |||
RowCount | Кесте жолдарының саны. |
НББ – дың негізінде класс (class) және объект деген ұғымдар жатыр. Object Pascal – да класс деп - өріс, әдіс және қасиет деген ұғымдардан тұратын арнайы типті айтамыз. Кластың арғы- тегі болып объект деп аталатын, ескірген Turbo Pascal тілінің типі жатады. Объект Turbo Pascal тіліне Delphi-ді құрғанға дейін кіргізілген ұғым. Object Pascal тілінің жаңа нұсқасында пайда болған Delphi ортасында объектілер ескі бағдарламалық өніммен үйлесімділік үшін сақталған. Қазір объектіні қолдану маңызды емес.
Класс өз кезегінде нұсқағышты береді. Бірақ ол дәстүрлік нұсқағышқа қарағанда ерекше типтің нұсқағышы: онда класқа қатынағанда "^" символын қолдануға болмайды.
Класс –берілгендер мен оларға қолданылатын әрекеттерден тұрады.
Объект – кластың физикалық іске асырылуы (кластың экземпляры).
Класс өзінше бір сипатталатын тип болып табылады және типтерді жариялау бөлімінде жарияланады.
Аталық класс нұсқалған |
type
TForm1 = class(TForm) { TForm1- TForm класының ұрпақ - класы}
{Аталық кластың өрісін, әдісін және қасиеттерін иемденеді}
Button1: TButton; {өріс}
Button2: TButton; {өріс}
L1: TLabel; {өріс}
L2: TLabel; {өріс}
procedure Button1Click(Sender: TObject); {әдіс}
procedure FormActivate(Sender: TObject); {әдіс}
private
{ Private declarations }
public
{ Public declarations }
end;
Класс бір жағынан жазба (record) – типіне де ұқсайды, ол берілгендердің өрісінен ғана емес,
Мысалы:
private
FCaption: String; {жолдық типтің өрісі}
FModified: Boolean; {логикалық типтің өрісі}
Сол себепті класта оның сипаттамалары мен тәртібі сипатталған.
Объект – белгілі бір класқа сай келетін айнымалыны береді және айнымалыны жариялау бөлімінде сипатталады. Мысалы:
var
Form1: TForm1;
Барлық кластарға сай келетін объектіні құра беруге болмайды. Олардың бірқатары әсіресе барлық кластардың иерархиялық ағашының басында орналасқаны бұны орындауға мүмкіндік бермейді, немесе олардың негізінде құрылған объектілер жұмыс істеуге қабілетсіз болып келеді, мысалы TObject ағымды класы. Ол мынамен байланысты, мұндай кластар сол немесе басқа аяқталған объектінің жан – жақты сипаттамасын бермейді (мысалы үшін, жиһаздың тек үлгісін ғана құруға болмайды, ал нақты стөл, нақты орындық және т.б. құруға болады). Мұндай кластар абстрактілі кластар деп аталады, сондықтан оларға абстрактілі әдістер сай келеді. Бұл ерекшелігіне қарамастан, мұндай кластарды құру тиімді, өйткені бұл кластарда барлық ұрпақтарында көп рет қайталамайтындай барлық кластарға тиісті жалпылықты жинақтауға болады.
НББ үш негізгі қасиеттермен сипатталады:
- инкапсуляция (encapsulation),
- туындау (inheritance),
- полиморфизм (polymorphism).
Әрбір класс екі ерекше әдістен тұрады – конструктор және деструктор. Конструктор объектіні құру және оны инициализациялау үшін тағайындалған. Мәселен, Object Pascal тілінде объект динамикалық құрылым болып табылады және айнымалы-объект берілгендерден емес оларға сілтемеден тұрады. Конструктор объектіні динамикалық жадыда үлестіреді және объектінің өрісіне алғашқы мәнін меншіктейді. Соған байланысты тізбектелген типтің өрісі алғашқы мән ретінде 0 – ді алады, жолдық тип ретінде – бос жол, нұсқағыш өрістер - nil мәнін, таңдау - өрісі - Unassigned мәнін алады. Одан басқа, конструктор динамикалық жады бөлінгеннен кейін құрылған объектіге сілтемені Self айнымалысына орналастырады. Барлық класс үнсіздікпен Self айнымалысынан тұрады, ол автоматты түрде класта жарияланады.
Деструктор, конструкторға қарама – қарсы ұғым, ол кластың данасын жоюға арналған, яғни жадының объектіні бұзу және жойылатын объектімен бос емес бөлігін босату. TObject базалық класының және оның ұрпақтарында конструктор мен деструктор Create (құру) және Destroy (жою) сәйкес аталады. Бұл класта сонымен қатар Free әдісі жарияланған, ол алдымен адрестің корректілігін тексереді (объект шын мәнінде жүзеге асырылған ба ?) және содан кейін барып қана Destroy әдісін шақырады. Егер объект конструктормен құрылмаған болса, онда деструкторға қатынау ерекше жағдайдың генерациясына әкеп соғады. Мұндай байланыста Destroy әдісінің орнына Free әдісін қолданған жөн болады.
АРНАЙЫ БӨЛІМ
2.1 Бағдарлама сипаттамасы
Формаға Label1, Label2, StrіngGrіd1, , StrіngGrіd2, Button1компоненттерін орналастыру. StrіngGrіd1 компонентінің қасиеттерінің мәндерікестеде көрсетілген.
«Массивті еңгізу және min max орнын ауыстыру» батырмасын басу нәтижесінде автоматты түре StrіngGrіd1 және StrіngGrіd2 толтырылады.
Массив элементтері қайталанбауы үшін арнайы функция пайдаланды (сурет 5).
Begin
Repeat
StringGrid1.Cells[I, j]:=IntToStr(Random(300));
A[i, j]:=StrToInt(StringGrid1.Cells[I, j]);
Until not (a[I, j] in d);
D:=d+[a[I, j]];
End;
Сурет 5 Массивтегі эллементтердің қайталанбауын қамтамассыз ететін бағдарламалық код
Шығыс ақпарат ретінде пайда болған екінші массивті алуға болады. Бұл массивтіңmax және min элементтердің орнын ауыстырлып, жаңа массивке нәтижені қанағаттандырып шығып тұрғанын көруге болады.
2.2 Бағдарламаның жұмыс істеу сызбасы
Программаның блок-схемасы (сурет 6).
Басы
For(i=0;I<n;i++)
For(j=0;j<n;j++)
max=a[0][0] min=a[0][0]
max_i=0 max_j=0
енгізу a[i][j] min_i=0 min_j=0
For(i=0;I<n;i++)
For(j=0;j<n;j++)
max<a[i][j] a[ max_i][max_j]=min
a[ min_i][min_j]=max
max=a[i][j]
max_i=i
max_j=j
min>a[i][j]
For(i=0;I<n;i++)
min=a[i][j]
min_i=i
min_j=j For(j=0;j<n;j++)
шығару a[i][j]
еңгізу с
с=1
соңы
Сурет 6. Берілген есептің блок сызбасы
Блок-схема; flowchart — енгізу-шығару және шешім қабылдау операциялары үшін стандартты графикалық кескіндер жинағын пайдаланатын программаны әзірлеу тәсілі. Блок-схемасы әрекеттердің жүзеге асырылу тізбегін көрсетеді.
Блок-схемасы көбінесе басқа әдістер (мысалы, шешімдер бұтағы немесе шешімдер кестелері) арқылы дайындалады.
Жүйелі талдауда қандай да бір үлкен жобаны әзірлеудің алғашқы сатысында блок-схема пайдаланылады. Мысалы,үлкенэлектрондық машинаныәзірлеу кезінде. Мұндай блок-схемада машинамен де,операторменде жүзеге асырылуға тиісті әрекеттердің тізбегі көрсетіледі.
Блок-схемасы программа жүзеге асыруға тиісті қадамдарды анықтау үшін қызмет етеді.
Әдетте, блок-схема кіріс-шығыс сигналдарын, іске асыратын әрбір алуан түрлі кіріс мәліметтерінің әрекеттерін, программаны секцияға бөлуді және пернетақтадан берілетін команда бойынша программа үзілетін нүктелерді белгілеуден басталады.
2.3 Идентификатор кестесі
Идентификатор әріп немесе санмен (цифр) құрылады.
Идентификатор барлық уақытта әріппен басталады, тек 0 – 9999 диапазонында орналасқан бүтін сан болатын белгі кірмейді.
Идентификаторда кіші және бас әріптерді қолдануға болады, компилятор оларды бірдей қабылдайды. Арнайы символдарды пайдалануға болмағандықтан оларды әдемілік үшін басты әріптермен жазуға болады. Мысалы, NumberLmes немесе btnOpen.
Бағдарламада екі идентификаторлардың арасына ең кемінде бір бөлгіш болуы керек.
Кесте 2
Идентификатор | Мақсаты | Типі | Дәрежесі |
a:array[1..10,1..10] | Массив | Сандық | 100(2) массивтің бір элементі үшін |
I | Циклді басқару айнымалысы | Сандық | |
min | Массив элементтерінің ең кішісі | Сандық | |
max | Массив элементтерінің ең үлкені | Сандық | |
n | Жолдар саны | Сандық | |
m | Бағандар саны | Сандық | |
buf | Қосымша айнымалы | Сандық | |
imax | Ең үлкен санның жол бойынша орналасу орны | Сандық | |
jmax | Ең үлкен санның баған бойынша орналасу орны | Сандық | |
imin | Ең кіші санның жол бойынша орналасу орны | Сандық | |
jmin | Ең кіші санның баған бойынша орналасу орны | Сандық |