BbRunClick oқиға өңдеушісінде Bbrun батырмасын жасырып, пайдаланушы екінші операнданың енгізілуін мақұлдау үшін BbResult батырмасын көрсетуі қажет.
Екінші мәселенің негізгі мәні пайдаланушының жіберген қатесіне байланысты, мысалы, бүтін сан дұрыс енгізілмейді. Бүтін санның дұрыс енгізілмеуі программа жұмысының дұрыс аяқталмауына әкеледі. Бұл мәселені шешудің тәсілдері өте көп, оның ең қарапайымы – бір жолдық қарапайым редакторды пайдаланушының енгізген мәнін қадағалап (бақылап) отыратын арнайы редактормен алмастыру. Ол үшін формадан редакторын өшіріп, оның орнына Additional бетіндегі Maskedit компонентін орналастырамыз. Бұрынғыдай Name қасиетінде атын беріп, EditMask қасиетінің сұхбат терезесін ашыңыз (4.6-сурет).
Бұл қасиет комконенттің маскасын көрсетеді, яғни пайдаланушы енгізу терезесіне қандай символды қандай ретпен енгізетінін анықтайық.
InputMask жолына #99999999;1; енгізіңіз. Character for Blanks терезесіне “-” (пробелді) бос орынды көрсетіп, ОК батырмасымен терезені жабыңыз. Құрылған маска компонентке пайдаланушының енгізген мәндерінің автоматты түрде бақылануын талап етеді және қосу (+) немесе алу (-) белгілері мен бірінші орындағы («#»)маска элементі және цифрлардан басқа белгілерді қабылдамайды.
Енді программаны кодтауға бәрі дайын. BbResult батырмасын тышқанмен екі рет белгілеп, осы батырманың OnClick оқиға өңдеушісі үшін төмендегідей код енгізіңіз:
Procedure TfmExample.BbResultClick(Sender:Tobject);
//екінші операнданы енгізуді өңдеу
Begin
//Edinput жолындағы мәтінді бүтін санға түрлендіреміз;
Y:=STRTOInt(Trim(edinput.text));
//memo-ға 2-операнданы енгізу туралы хабарлаймыз ;
mmOutput.Lines.Add(‘2-операнда:’ edinput.Text);
//нәтижені есептен шығарамыз;
mmOutput.Lines.Add(‘нәтиже’+IntTostr(x)+’*’+IntToStr(y)+’=
’Inttostr(x*y));
Edinput.Text:=’’;//енгізу жолын тазалаймыз;
Edinput.setfocus;//енгізу фокусын береміз;
Lboutput.caption:=’1-операнданы енгізіңіз:’;
BbresultHide; //Bbresult батырмасын жасырып қоямыз;
Bbrun.show //Bbrun батырмасы экранда көрініп тұрады;
End;
Bbrun батырмасының оқиға өңдеушісін енгізу үшін Объектілер Инспекторы терезесінің жоғарғы бөлігінен іздеп тауып (ол BbResult батырмасымен толық жабылған болатын), Events бетінің OnClick жолының оң жақ бағанын екі рет белгілеу қажет. Одан кейін төмендегідей мәтін енгізіледі:
Procedure TfmExample.BbRunClick(Sender:Tobject);
//1-операнданы енгізуді өңдеу
Begin
//Edinput жолындағы мәтінді бүтін санға түрлендіреміз;
x:=strtoint(Trim(edinput.text));
//memo-ға 1-операнданы енгізу туралы хабарлаймыз ;
mmOutput.Lines.Add(‘1-операнда:’ +edinput.Text);
//нәтижені есептен шығарамыз;
Edinput.Text:=’’;//енгізу жолын тазалаймыз;
Edinput.setfocus;//енгізу фокусын береміз;
Lboutput.caption:=’2-операнданы енгізіңіз:’;
Bbresultshow; //Bbresult батырмасын көрсетеміз;
Bbrun.hide //Bbrun батырмасын жасырып қоямыз
End;
Енді программаны жүргізер алдында компонентіне енгізу фокусын беріп, х,у айнымалыларын сақтайтын операндаларды анықтау ғана қалды. Программа коды терезесінің басынан TfmExample класының сипатталуын іздеп, оған төмендегідей түзетулер енгізу қажет:
Private
{Private declarations}
x,y:integer;
Объектілер инспекторы терезесінде тізімді таңдаудың көмегімен TfmExample формасын таңдап, Events бетінен OnActivate жолын тышқанмен екі рет белгілеу арқылы төмендегідей оқиғаны өңдеуші процедураны енгіземіз:
Procedure TfmExample.formActivate(Sender:Tobject);
//жұмыс басына дайындық;
Begin
Edinput.SetFocus; //Edinput редакторына енгізу фокусын береміз;
LBOutput.caption:=’1-операнданы енгізіңіз’;
End;
Программаға түсініктеме
Private
{Private declarations}
x,y:integer;
жолының көмегімен, біз TfmExample класындағы х,у бүтін айнымалыларын анықтадық, осы анықтаудан кейін олар осы кластың кез келген әдісімен, оның ішінде OnClick оқиғаны өңдеушімен де пайдалануға мүмкіндік болды. Мұндай текті айнымалылар бір-бірімен өзара әрекеттесу әдісін жеңілдетеді (оларды кластың өрістері деп атайды). Біздің жағдайда, 1-операнда х айнымалысы бір әдіспен енгізіліп (BbrunClick), (BbresultClick) әдісіне пайдаланылады.
Екі OnClick оқиғаны өңдеушінің де операторлары бірдей. Олардың әрқайсысының басына меншіктеу операторы, ал оң жағында.
Strtoint(Trim(edinput.Text))өрнегі бар.
Бұл өрнек стандартты Object Pascal үшін төмендегі функцияны шақырудан тұрады: алдымен, Trim функциясы шақырылады, ол жолға аргумент береді (біздің жағдайда edinput.text), оң жағынан да, сол жағынан да бос орын қалдырмайды. Одан кейін Strtoint функциясының көмегімен символдар жолын бүтін санға айналады.
Strtoint түрлендіру функциясы символдық берілгендерді бүтін санға айналдыруда кететін қателерге өте сезімтал. Біздің жағдайда мүмкін болатын қателер Maskedit редакторы мен Trim функциясы арқылы жойылады. Егер Bbrun немесе Bbresult батырмаларын басқанда, редакторда мәтін болмаса, программа жұмысы ақаумен аяқталады. Мұндай жағдайды болдырмас үшін Strtoint функциясының алдына
If edinput.Text=’’then exit;
Жолын енгізу қажет. Бұл оператор edinput компонентінің енгізу терезесінде мәтін болмаса, өндеушінің жұмысын аяқтайды.
Ұсынылатын әдебиеттер: [1-9]
Бекіту сұрақтары:
Форма бетіне орналасатын компоненттердің қасиеттеріне сипаттама беріңдер.
Caption қасиетінің қызметі қандай?
Name қасиеті нені сипаттайды?
Форманың өлшемдері қалай тағайындалады?
Memo көп жолдық редакторын іске қосу қалай жүзеге асырылады?
Программаны орындауды жүзеге асыру үшін қандай компоненттерді пайдалануға болады?
Формалар архивке қалай тасымалданады?
Жоба дегеніміз не және оның құрылымы қандай?
Жобаның әрбір бөліміне сипаттама беріңіз.
Қызметші сөздер дегеніміз не?
Модуль дегеніміз не және оның құрылымы қандай?
Интерфейсті хабарлау қандай сөзден басталады және онда не жазылады?
Орындау секциясы қандай сөзден басталады және қызметі қандай?
Object Pascal тіліндегі типтер дегеніміз не?
Класс, ұрпақ, аталық-класс ұғымдары нені сипаттайды?
Программа элементтері дегеніміз не?
Программа элементтеріне нелер жатады және әрқайсысына сипаттама беріңіз.
Идентификаторлар дегеніміз не?
Қосалқы программалар дегеніміз не және қандай қызмет атқарады?
Object Pascal тіліндегі типтердің атқаратын қызметі қандай?
Жолдық тип дегеніміз не және оларға қандай операциялар қолданылады?
Жолды бүтін санға және керсінше түрлендіретін функция қалай аталады? Жазылу форматы қандай?
Келтірілген мысалда MaskEdit компоненті не үшін пайдаланып отыр?
Зертханалық жұмыс №5
Тақырыбы: Тілдің операторлары
Мақсаты Delphi ортасының жұмысына жалпы сипаттама
Қолданылатын материалдар мен құрал- жабдықтар:
Компьютер, Delphi программалау ортасы
Теориялық түсініктеме:
Құрама және бос оператор
Құрама оператор дегеніміз- бұл begin … end қызметші сөздерінің арасына орналасқан программа операторларының тізбегі. Құрама операторлар Object Pascal- дың маңызды инструменті болып табылады, өйткені, құрылымдық программалаудың қазіргі технологиясы бойынша программа жазуға мүмкіндік береді.
Begin
….
begin
….
begin
…
end;
…
end;
…
end;
тұтасымен алғанда, begin … end сөздерінің арасына орналасқан барлық операторлар бөлімі бос операторды береді.
Ал бос оператор ешқандай әрекет атқармайды, тек программа жолына «;» белгісі қойылады.
Шартты оператор
Шартты оператор қандай да бір шартты тексеруге мүмкіндік береді, шартты тексеру нәтижесінде тәуелді қандай да бір әрекет орындалады. Сонымен, шартты оператор- бұл тармақталған есептеу процесінің құралы.
Шартты оператордың құрылымы төмендегідей:
If <шарт > Then <1-оператор> else <2-оператор>;
Мұнадғы If, Then, else- қызметші сөздер.
<шарт >- логикалық типті қандай да бір өрнек;
<1-оператор> және <2-оператор>- Object Pascal- дың кез келген операторлары.
Шартты оператордың орындалу алгоритмі төмендегідей. Алдымен, <шарт> шартты өрнек тексеріледі. Егер нәтиже true (ақиқат) болса, онда <1-оператор> орындалады да,<2-оператор > орындалмайды; егер нәтиже false (жалған) болса, онда керісінше <1-оператор> орындалмай,<2-оператор > орындалады. Мысалы,
Var
x, y, max :integer;
begin
…
If x>max then
y:=x;
else y:=max;
…
End;
Бұл фрагменттің орындалуы барысында Х айнымаласының мәні max-нан үлкен болса, онда У айнымалысына Х айнымалысын меншіктейді, кері жағдайда У айнымалысына max меншіктеледі.
Мүмкін болатын ақиқат немесе жалған екі мәннің біріне ие болатын өрнек шартты өрнек деп аталады. Мұндай өрнек айнымалыларды салыстыру операцияларының көмегімен жазылады: <, <= ,> ,>= , <>. Күрделі логикалық өрнектер and, or, not логикалық операцияларының көмегімен алынады.
Мысалы, if (a>b) and (b<>0) then …
Қайталау операторлары
Object Pascal тілінде қайталанатын программалар фрагментін программалауға мүмкіндік беретін үш оператор бар.
For параметрі қайталау командасы, оның құрылымы:
For < қайталау параметрі>:= <Бастапқы мән> to <соңғы мән> do <оператор>;
Мұндағы for, to, do қызметші сөздер (үшін, дейін, орында); <қайталау параметрі> -integer типті айнымалы; <бастапқы мән> және <соңғы мән>- бүтін типті айнымалылар.
<оператор>- Object Pascal-дың кез келген операторы.
Операторлың орындалуы: алдымен <бастапқы мән> өрнегі есептеліп, <қайталау параметрі>:=<бастапқы мән> меншіктелінуі орындалады.Одан кейін төмендегі опреациялар қайталанады:
<қайталау параметрі><= <соңғы мән> шарты тексеріледі;
шарт сақталмаса for операторының жұмысы аяқталады;
<оператор>- операторы орындалады;
қайталау параметрінің мәні бірге артып отырады.
Енді қарастырған екі қайталау операторлары қайталану шарттарын ғана тексереді, цикл қадамының өзгеруіне байланысты емес.
Әзір қайталану командасы While
Бұл оператордың жазылу форматы:
While <шарт> do < оператор>;
мұндағы While, do қызметші сөздер(әзір [шарт орындалатын болса], орында); <шарт>- логикалық типті өрнек; <оператор>- Object Pascal тілінің кез келген операторы.
Егер <шарт> өрнегінің мәні true болса, онда <шарт> өрнегі есептелгеннен кейін <оператор> орындалады да, тексеру қайталана береді. Егер <шарттың> мәні жалған болса ( false), онда while операторы жұмысын тоқтатады.
Таңдау операторы
Таңдау операторы бірнеше әрекеттің ішінен таңдауға мүмкіндік береді. Таңдау жүргізілетін параметр ретіндегі өрнек үшін кез келген реттелген тип алынады (реттелген типке- integer, char, логикалық типтер жатады).
Таңдау операторының құрылымы төмендегідей:
Case <өрнек> of
< таңдау тізімі> [else <операторлар>]
end;
Мұндағы case, of, else, end -қызметші сөздер (жағдай, одан, әйтпесе, соңы); < таңдау тізімі> - бір немесе бірнеше төмендегідей құрылым:
< таңдау тұрақтысы>: <оператор>;
<оператор>- Object Pascal тілінің кез келген операторы. Таңдау операторының орындалуы төмендегідей.
Алдымен өрнек есептеледі, одан кейін таңдау тізімінен есептелген өрнектің мәніне тең тұрақты ізделінеді. Табылған тұрақтыға сәйкес оператор орындалып, таңдау командасы өзінің жұмысын аяқтайды. Егер таңдау тізімінен есептелген өрнектің мәніне тең тұрақты табылмаса, онда программаны басқару else операторынан кейін тұрған операторға береді. Кейде else <операторлар> бөлігін жабуға да болады.
Таңдау тізіміндегі операторлардың кез келгеніне бір емес, бірнеше үтірмен жазылған таңдау тұрақтысы сәйкес келуі мүмкін.
Мысалы,
ch:char;
begin
...
case ch of
'n', 'N','н' ,'Н':=LbOutput.Caption:='Жоқ';
'y', 'Y', 'д', 'Д':=LbOutput.Caption:='Иә';
end;
Белгі және көшу операторы
Жоғарыда қарастырылған операторларды пайдаланып әртүрлі қиындықтағы программаны жазуға болады. Кей жағдайларда көшу операторын пайдалану программаны жеңілдетеді.
Көшу операторының жазылу форматы төмендегідей:
Goto <белгі>;
Мұндағы Goto-қызметші сөз (белгіге көшу); <белгі>- белгі. Object Pascal тіліндегі белгі- бұл программаның қандай да бір операторын белгілеуге мүмкіндік беретін, еркін алынған идентификатор. Белгі белгіленетін оператордың алдына орналасады, белгіден кейін қос нүкте (:) қойылады. Операторды бірнеше белгімен көрметуге болады, бұл жағдайда олар бір-бірінен қос нүкте арқылы ажыратылады. Программада белгіні пайдаланудан бұрын оны сипаттау бөлімінде бейнелеп жазу қажет. Белгіні сипаттау үшін Label қызметші сөзі пайдаланылады.
Мысалы,
…
Label
Bel,lb1,lb2;
…
Begin
………
Goto lb1;
………..
Bel:……….
……………
Lb1:lb2:………….
Goto lb2;
………….
End;
Goto операторының қызметші программадағы басқаруды сәйкес белгіленген операторға беру болып табылады.
Белгіні пайдалануда төмендегідей ережелерді басшылыққа алу қажет:
Goto сілтеме жасайтын белгі бейнелеу бөлімінде сипатталуы және ол программа денесінде міндетті түрде кездесуі тиіс;
Қосалқы программада сипатталған белгі сонда жергілікетенеді, сондықтан қосалқы программаның сыртынан оның ішіндегі белгіге жасалған сілтеме орындалмайды.
ТАПСЫРМА:
Тапсырма №1. Үш санның үлкенін табатын программа құру.
Тапсырма №2.. «Тексеру» оқу программасы
Бұл мысалда, «санды тап» ойынында программа кездейсоқ түрде 0...1000 аралығынан бүтін санды таңдап, есіне сақтайды. Пайдаланушы оны табуға тырысып, өзінің санын енгізеді. Енгізілген санды есте сақталған санмен салыстырып, программа компьютердің кездейсоқ таңдап, есіне сақтаған санының пайдаланушы енгізген санынан үлкен, кіші немесе тең екенін хабарлайды. Компьютердің таңдаған кездейсоқ саны табылғанша программада сан енгізу жалғастырылады.
Тапсырма №3
«Қосындыны табу» оқу программасы.
For операторының қолданылуын көрсету үшін кез келген бүтін N санын енгізіп, 1-ден N санына дейінгі барлық бүтін сандардың қосындысын есептейтін программа құр.
Тапсырма №4
EPSILON оқу программасы
Программа «машиналық элипсон» деп аталатын ең кіші, нөлге тең емес нақты санды іздейді, оған 1,0 санын қосқаннан кейін 1,0 -деп басқа нәтиже береді. Object Pascal тілінде бөлшек сандарды түрлендіріп сақтау үшін нақты типтер пайдаланылады. Ұсынылып отырған оқу программасында осы типтердің бірі -real пайдаланылады, ал аралас 8 байт орын алатын 10 -324-нен10+308 аралығында 15..,16 мәнді цифр дәлдігімен бөлшек сандарды береді.
Тапсырма №5
Calculator оқу программасы.
Тапсырма №6
Нұсқау бойынша таңдау.
Бұл мысалда inputBox функциясы арқылы енгізілген мән бойынша таңдау жүргізіледі
ТАПСЫРМАНЫ ОРЫНДАУҒА ӘДІСТЕМЕЛІК НҰСҚАУЛАР:
Тапсырма №1
Ол үшін формаға төмендегідей компоненттерді орналастырамыз.
Компоненттер:
|
Объектілер инспекторы терезесіне енгізілетін өзгертулер:
|
Label1:Tlabel;
|
Caption: X=
Font: шрифті және түсті таңдау
|
Label2:Tlabel;
|
Caption: Y=
Font: шрифті және түсті таңдау
|
Label3:Tlabel;
|
Caption: Z=
Font: шрифті және түсті таңдау
|
Edit1:Tedit;
|
Text:бос қалдыру
|
Edit2:Tedit;
|
Text:бос қалдыру
|
Edit3:Tedit;
|
Text:бос қалдыру
|
Button1:Tbutton;
|
Caption:RUN
|
Memo1:Tmemo
|
Lines: бос қалдыру
|
Button1 батырмасын жылдам екі рет басу арқылы программалар коды терезесіне өтіп, type бөлігінде төмендегі жазулардың бар екеніне көз жеткіземіз:
type
TForm=class (TForm)
Edit1:Tedit;
Edit2:Tedit;
Button1:TButton;
Label1:TLabel;
Label2:TLabel;
Label3:TLabel;
Edit3:TEdit;
Memo1:TMemo;
Procedure TForm1.Button1Click(Sender:TObject);
....
Достарыңызбен бөлісу: |