Студопедия
rus | ua | other

Home Random lecture






Goto, Label операторлары. Бос оператор.


Date: 2014-02-27; view: 1173.


Repeat

Begin

Begin

Begin

Begin

Begin

Begin

ЦИКЛ

Begin

N-тізім: begin

Тізім: begin

Тізім: begin

Begin

Begin

{Белдеуше төбесінен қашықтық}

gaz:=100 – ScrollBar1.Position;

{Газ мәні бойынша ағымдық жылдамдық }

jld:=gaz*4;

 

{Жылдамдықты Label1 өрісінде көрсету}

Label1.Caption:= ‘Ағымдық жылдамдық’+

IntToStr(jld);

If jld >=350 then

ShowMessage(‘Газды төмендет,’ +#13

+’жылдамдық артық’);

end;

Procedure TForm1. FormCreat (Sender : TObject);

ScrollBar1.Position :=100;

end;

 

4. Проектіні сақтау (мысалы, Jildamd11), іске қосу.

 

Программаға ұшаққа газ беретін тұтқамен жұмыс істеу тәсілі енгізілген (тұтқа баламасы – тік белдеуше). Программа іске қосылған соң ағымдық жылдамдық мәтіні жазылған форма көрінеді.Көрсеткішті не белдеушенің жоғарғы түймесін басу арқылы тік белдеушенің сырғытпа түймесін жоғары жылжыту керек. Формада көрінген ағымдық жылдамдық 350-ден кем болмаған кезде формада ескерту енгізілген ShowMessage терезесі көрінеді (2.4-сурет).

 

2.9. Таңдау командасы. Сase операторы

 

Таңдау командасы – көп сериялы тармақталу командасы. Әдетте ол Сase (қорап)операторын пайдаланып құрылады. Оператордың жазылу үлгісі:

 

Сaseөрнек of

S1

end;

S2

end;

....................

Sn

end;

end;

мұндағы

өрнек – мәні бойынша сәйкес тізім нұсқаулары (S1, S2,...,Sn) орындаоатын өрнек. Көбінесе, ол мәні сaseоператорының алдында енгізілетін айнымалы түрінде алынады;

k – тізім сұрыптаушы (таңдаушы) делінеді. Ол үтір арқылы ажыратылып жазылатын тұрақтылар тізімі (k = 1,2,...,n). Тізім орнына бір тұрақтыны не тұрақтылар аралығын алуға болады. Аралық екі нүкте арқылы ажыратылып жазылады. Мысалы, 3,4,5,6 тізімін 3 .. 6 аралығымен ауыстыру мүмкін; егер айнымалы (х) мәні (-∞;2) аралығында алынса, таңдаушыны х<2 деп жазуға болады. Сәйкес тізім нұсқаулары орындалып болған соң басқару сaseоператорынан соңғы нұсқауға беріледі. Егер өрнек не өрнек орнына жазылған айнымалы мәні бірде-бір таңдаушыға сәйкес келмесе, сaseоператоры орындалмай тастап кетіледі.

Ескерту. Сaseоператорының құрылымын if (егер) қызметші сөзін пайдаланып дайындау да мүмкін, бірақ құрылымды біріншісі арқылы дайындау көрнекі, әрі оқуға жеңіл.

 

1-мысал. Үшбұрыш, трапеция, дөңгелек аудандарының формулаларының қажеттісін формаға шығаратын анықтамалық программа құру керек.

1. Жаңа проект ашу;

2. Формада Label1…Label4, Button1 компонеттерін орнату (2.5-суретті қараңыз).

3. Label өрістерінің Caption қасиеттерінің мәндерін өшіріп, Button1 түймесінің Caption қасиетіне ОК мәнін меншіктеу;

4. ОК түймесін екі рет шертіп, код терезесінде процедура құру:

 

Procedure TForm1.Button1Click(Sender: TObject);

Var n : integer; n1 : string;

Label1.Caption := ‘1.Үшбұрыш ауданы’;

Label1.Caption := ‘2. Трапеция ауданы’;

Label1.Caption := ‘3. Шеңбер ауданы’;

n1 :=InputBox(‘Формула’,’нөмірі : 1,2,3 - ?’,’’);

n := StrToInt(n1);

Label14.Color := ‘c1White’;

Сasen of

1: Label1.Caption := ‘S=ah/2; a - табаны , h - биіктігі ’;

2: Label1.Caption := ‘S=(a+b)h/2; a,b - табандары , h - биіктігі ’;

3: Label1.Caption := ‘S=Pi*r*r; Pi=3.14…, r - радииус’;

end;

end;

 

5.Проектіні сақтап, іске қосу. Форма көрінеді.

6. Форманың ОК түймесін шшерту. Енгізу терезесі көррінеді;

7. Оған 1,2,3 сандарының бірін енгізіп, ОК түймесін шерту. Label4 өрісіне сәйкес формула жазылып қойылады. (2.5-сурет).

Келесі фигура ауданының формуласы қажет болса, форманың ОК түймесін қайта шерту керек.

 

Тапсырма. Бақылау сұрағы берілген: Төмендегі төрт өрнектің қайсысы sin2x функциясына тең?

1: sinx+sinx;

2: 2sinxcosx;

3: 2(sinx+cosx);

4: sinxcosx;

Сұрақты тестілеу программасын сaseоператорын пайдаланып құрыңыз.

2.10 TbitBtn, Tpanel, TСomboBox компоненттері

Сәйкес компоненттер компоненттер панелінің Standard, Aditional беттеріне орналастырылған.

TbitBtn –Tbutton сияқты түйме компоненті. Айырмашылығы – ол формада орнатылған соң, үстіне таңдалған сурет енгізіп қоюға болады. Мысалы, Kind (түрлі бейнелі) қасиетінің bkOK мәні таңдалса, оның көріну түрі оң жақта кескінделген.

Tpanel (панелі) компоненті – ол формада орнатылған соң бетіне орнатылған бірнеше компонентті байланысты бір топ ретінде топтастырушы (контейнер қызметін атқарушы) тік төртбұрышты объект ретінде пайдаланылады.

TСomboBox (құрастырылған өріс) – формада тізім енгізілетін өріс түрінде көрінетін компонент. Программаның орындалу барысында тізімнен қажеттісі таңдалса, ол орнатылып қойылады (келесі мысалды қараңыз).

Калькулятoр программасы

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

1. Жаңа проект ашу.

2. Формаға Standard бетіне Рanel1, Memo1 компоненттерін орнату.

3. Компоненттер қасиеттеріне мәндер меншіктеу.

 

компаненттер Қасиет Мән Мағынасы
Form1     Рanel1   Memo1 Name Caption Height Width Position   Caption Align     BevelOuter Height   Name Align   Lines ScrollBars (белдеуше)     WordWrap frForm1 Калькулятoр poScreenCenter бос ету alBotton byNone mmOutput alClient Tstring ssBoth (екеу) False Атау Тақырып Биіктік Ен Экран ортасына орнату   ... Форманың төменгі жағына жылжытып, барынша созу Панел жиегін көрсетпеу Биіктік   Атау Терезені бойынша кеңейту (ол панельдің үстіңгі жағына орналасады)   Memo терезесін шығару Memo терезесін екі сырғытпа (белдеуше) орнату Тасымалдауды болдырмау

 

  1. Панель бетіне Label1, Edit1, Edit2, BitBtn1, BitBtn2 компоненттерін орнатып, олардың қасиеттеріне мәндер меншіктеу.

 

компаненттер Қасиет Мән Мағынасы
Label1   BitBtn1   BitBtn2     Edit1   Edit2   ComboBox Name Caption Align   Kind     Name Left Top Kind Name Left Top   Name Text Left Top Width   Name Text Left Top Width   Name Width Items (таңдама) lbOutput <бос ету> alBotton   bkOK   bbRun   bkClose bbClose   edInput1 < бос ету > edInput2 < бос ету > cbSign +, -, *, / Атау   Төменгі қатарға жылжытып ,барынша кеңейту Авиоматты түрде шартбелгі орнатып, ОК сөщін жазу (тізімнен таңдап алынады) Атау Сол шеттен қашықтық Жоғарғы жиектен қашықтық ... Атау   Атау   Атау   Програма іске қосылған кезде ComboBox компонентіне енгізілген тізімнен қажеттісі таңдалады.

 

Қасиеттер орнатылған соң форманың көрінісі 2.6-суретте көрсетілген.

 

 

2.6-сурет. Калькулятор программасы үшін дайындалған форма

 

(Түрлі атаулардың алдында жазылған қосымшалар (префикстер) – олардың типтерін ажырату үшін қойылған символдар тіркесі, мысалы, ed – Edit үшін, lb – Label үшін т.б. )

  1. ОК түймесінің onClick оқиғасын өңдеуіш процедурасын құру:

 

Procedure Tform1.BitBtn1Click (Sender: TObject);

Var x,y,z: real;

Begin

x:= StrToFloat(edInput1.Text);

y:= StrToFloat(edInput2.Text);

Case cbSign.ItemsIndex of

0: z:= x+y;

1: z:= x-y;

2: z:= x*y;

3: z:= x/y;

end;

IbOutPut.Caption:= Trim (edInput1.Text) +’ ’+

cbSign.Items[cbSign.ItemsIndex]+’ ’+Trim(edInput2.Text)+’=’+FloatToStr(z);

mmOutput.Lines.Add(obOutput.Caption);

// енгізілген мәндерді алып тастау

edInput1.Text:=’’;

edInput2.Text:=’’;

cbSign.ItemsIndex:=-1;

end;

мұндағы cbSign.ItemsIndex – формада орнатылған ComboBox компонентінен таңдалатын нөмір (индекс). Компонентке нөмірлер тізімін кірістіру тәсілі: ComboBox компонентінің Items (пункт) қасиетінің TString қатарын екі рет шерту. String List editor терезесі көрінеді. Терезенің сол жақ жоғары бұрышын бастап баған бойынша +, -, *, / символдарын енгізіп, ОК түймесін шерту. Программа іске қосылған кезде тізім формада орнатылған ComboBox (cbSign) компонентінде көрінеді.

СbSign.ItemsIndex-тің программа қосылмай тұрып бойында сақтайтын нөмірі: -1. Программа іске қосылған кезде орын сақтайтын нөмірлері: 0, 1, 2, ... . Яғни, нөмірлер нөлден бастап есептеледі ( программаның Саsе операторына осы нөмірлер енгізіледі );

Trim (кесінді)-массивтен не жолдан алынған кесіндіні анықтау;

CbSign.Items[cbSign.ItemIndex]-Combo Box компоненті өрісінен таңдалған таңба.

6.Проектіні сақтап,іске қосу.Форма көрінеді.

7.Форманың Edit 1өрісіне 1 ші санды, Edit 2 өрісіне ComboBox өрісіне енгізілген тізімнен қажетті символды(+,-,*,/ символдарының түрін) таңдау және ОК түймесін шерту.Нәтиже Label 1 өрісімен Memo терезесінде көрінеді.Мысалы,12,3+18,9 үшін көрінетіні:12,3+18,9=31,2

 

Циклдерді қолдану тәсілдері стандартты Турбо Паскальдағы сияқты. While(әзірше),Repeat(дейін),For(үшін) циклдік құрылымдардың жазылу үлгілері:

1) WhileP do

S

End;

2) Repeat

S

Until (not P);

3) Fork:=k0 to kn do

S

End;

Мұндағы Р – шарт; do – орындау (кілттік сөз);

S – цикл денесі;

Until – дейін (кілттік сөз) ;

K – бүтін типті есептегіш (цикл параметрі);

k0, kn – есептегіштің бастапқы,соңғы мәндері.

 

Мысал. Жалпы мүшесі ак=1/к2 (к =1,2...) болатын тізбектің алғашқы бес мүшесінің қосындысын табу керек (n=5;Sn=?). Нәтиже шығару терезесінде көрсетілсін. (2,8-сурет).

1. Жаңа форма ашу;

2. Форманы екі рет шертіп, FormCreate процедурасын мынадай нұсқалар бойынша құруға болады;

 

1-НҰСҚА (for циклін пайдалану):

ProcedureTForm1.FormCreate(Sender : TObject);

vars,a : real; k, n : integer; s1: string;

n := StrToInt(InputBox(“,’Мүшелер саны =’,”));

s := 0; k := 0;

fork:=1 to n do

a:=1/(k*k); s:=s+a;

end;

s1:=FloatToStrF(s,ffFixed,7,3); Show Message(s1);

end;

 

 

2-нұсқа (while циклін пайдалану):

ProcedureTForm1.FormCreate(Sender : TObject);

vars,a : real; k,n : integer; s1 :string;

n:=StrToInt(InputBox(“,’Мүшелер саны =’,”));

s:=0; k:=1;

 

whilek<=n do

a:=1/(k*k);

s:=s+a;

k:=k+1;

end;

s1:=FloatToStrF(s,ffFixed,7,3); Show Message(s1);

end;

3-нұсқа (Repeat циклін пайдалану):

Whileциклі денесін төмендегі циклмен алмастыру:

a:=1/(k*k);

s:=s+a;

k:=k+1;

untilk>n;

 

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

Goto М – М арқылы таңбалаған (ен салынған) жолға сөзсіз өту операторы (Goto – өту, М – ен. Ен сан не символ болуы). Ен программаның Label бөлігінде сипатталып қойылуы тиіс: Label М;

1-мысал. 2.11-тақырыпта берілген мысалды Goto операторын пайдаланып шешу керек.

Prodcedure TForm1.FormCreat(Sender:TObject);

Label 5;

var s,a : real; k,n : integer; s1 : string;

begin

n :=StrToInt(InputBox(“,’Мүшелер саны=’,”));

s :=0; k :=1;

5: a :=1/(k*k); s :=s+a; k :=k+1;

If k<=n then goto 5;

s1 :=FloatToStrF(s,ffFixed,7, 3);

ShowMessage(s1);

end;

 

Ескерту. 1. Программа бөлімінде label операторы енгізілсе, ен белгісі программа денесінде кездесуі міндетті.

  1. Күрделі программаларда Goto операторын жиі пайдалану программаны оқуды қиындатып жібереді, сондықтан оны мүмкіндігінше аз пайдалану керек.

 

2-мысал. Енгізілген бүтін n санының жай сан не құрама сан екекнін анықтау керек. (n>=3).

1. Жаңа проект ашу;

2. Формаға Edit1, Label1, Button1 компонеттерін орнату;

3. Edit1-дің Text, Label1-дің Caption қасиеттерінің мәндерін тазалау (бос ету), Button1-дің Caption қасиетіне OK мәнін меншіктеу;

4. OK түймесін екі шертіп, көрінген код терезесінде процедура құру:

 

Prodcedure TForm1.Button1Click(Sender:TObject);

Label 10;

var n,b,q : integer;

begin

n :=StrToInt(Edit1.Text);

If n<=3 then

begin

ShowMessage(‘n>=3 оң сан болуы тиіс’);

Edit1.Text:=”;

Goto 10;

end;

{оң сан енгізілген}

b :=2; // алдымен екіге бөлу

repeat

q := n mod b;

if q<>0 // n екіге бүтін бөлінген жоқ

then b := b+1; // бөлгішті 1-ге өсіру

until q=0;

Label1.Caption := Edit1.Text;

Label1.Font.Name := ‘Times Kaz’;

If b=n then

Label1.Caption := Label1.Caption+’ – жай сан’

else

Label1.Caption := Label1.Caption+’ – құрама сан’;

10: ;

end;

 

5. Проектіні сақтап, іске қосу командасын беру. Форма көрінеді.

6. Оның Edit1 өрісіне сан енгізіп, OK түймесін шерту.

 

Өріске 89 саны енгізілген кезде форманың көрінісі 2.9-суретте бейнеленген.

 

Ескерту. Delphi-де жолдық типті мәндер аралығына қойылған плюс (+) таңбасы –– оларды біріктіру (конкатенация) операциясы.

 

Программаның 10 арқылы таңбаланған жолына оператор жазылмай, тек нүктелі үтір (;) символы қойылған. Мұндай мәтіні енгізілмей, соңына ; таңбасы қойылған операторды бос оператор деп атайды. Ол осы операторға сілтеме орнату үшін енгізіледі.

 

 

2.13. Random функциясы. Const операторы

 

Random(m) – 0.. m-1 аралығында кездейсоқ санды тудыратын функция.

Мысал. Random функциясын пайдаланып, тиын ақшаны n рет лақтырғанда цифр жағымен түсудің салыстырмалы жиілігін (w) жуық шамамен анықтау программасын құру керек (n рет сынақ жүргізілген кезде күтілген оқиға m рет пайда болса, w=m/n ).

Тиын ақшаның цифр жағымен түсу мен түспеу оқиғаларын 1, 0 арқылы белгілеп, программаны мынадай түрде құруға болады.

1. Жаңа проект ашу;

2. Формада Label1, Label2, Label3, Button1 компоненттерін орнату;

3. Label өрістерінің Caption қасиеттерінің мәндерін бос ету;

Button1 түймесінің Caption қасиетіне ОК мәнін меншіктеу.

4. ОК түймесін екі рет шертіп, программалық код құру:

Prodcedure TForm1.Button1Click(Sender:TObject);

Var n, m, k, r: integer; w: real; n1, m1: string;

begin

n:=StrToInt (InputBox (‘’,’n=’,’’)); //сынақ саны

m:=0;

for k:=1 to n do

begin

r:= round (random (2)); // r=0 нe 1

if r=1 then m:=m+1;

end;

w:= m/n;

m1:=IntToStr (m); n1:= IntToStr (n);

Label1.Font.Name:=’Times Kaz’;

Label2.Font.Name:=’Times Kaz’;

Label3.Font.Name:=’Times Kaz’;

Label1.Caption:=n1+’сынақта цифрдың көрінуі’+m1+’рет’;

Label1.Caption:= ‘Жиіліктік’+FloatToStr(w);

Label1.Caption:= ‘Басқа сынақ санын енгізу үшін’+#13+’Okклавишін басыңыз’;

end;

5. Проекті сақтап, іске қосу. Формада көрінеді;

6. Оның ОК түймксін шерту. Енгізу терезесі көрінеді;

Терезеге сынақ санын (мысалы, 150) енгізіп, ОК түймесін шерту. Сынақ саны мен жиілік енгізілген форма көрінеді (2.10-сурет).

Программаға енгізілген r – n сынақтың әрқайсысында 0 не 1 кездейсоқ санын қабылдайтын айнымалы; Round – нақты санды бүтінге дейін дәлдіктеу функциясы (2.3-кестені қараңыз);

Түрлі сынақтар саны үшін программаның орындалу нәтижесі 2.5-кестеде көрсетілген. Цифрдың көріну жиіліктігі (w) сынақ саны көбейген сайын осы оқиғаның пайда болу ықтималдығына (0.5) бірте-бірте жақындай түсетіні математикалық статистика курсынан белгілі. Ол кестеден де көрініп тұр.

2.5-кесте

Сынақтар саны –n Цифрлық беттің көріну саны – m Салыстырмалы жиілік – w
0,57 0,46 0,51 0,51 0,507

Ескерту. Random функциясы кездейсоқ санды өндіретіндіктен кестеде көрінетін сандар әр жолы әр түрлі болуы мүмкін.

 

2.14. Массивтермен жұмыс

2.14.1. Сандық массивтің ең кіші, ең үлкен және орта мәнін табу.

 

Бір атау арқылы байланыстырылған бір типті айнымалылардың (не олардың мәндерінің) жиынтығы массив деп аталады. Сызықтық массив және матрицамен жұмыс істеу негіздері Паскальдағы сияқты.

1-мысал. 0..99 аралығындағы бүтін типті кездейсоқ n саннан тұратын сызықтық массив құрып, оның минимумын, максимумын және орта мәнін табу керек (n=500).

1. Жаңа проект ашу;

2. Формаға Label1, Button1 компоненттерін орнатып, олардың Caption қасиеттеріне мәндер меншіктеу (біріншісін бос ету, екншісіне ОК мәнін меншіктеу);

3. ОК түймесінің OnClick оқиғасын өндейтін программа құру:

Prodcedure TForm1.Button1Click(Sender:TObject);

Сonst n=500; //массив элементтерінің саны

m=100; // кездейсоқ сандар алынатын

// аралықтың жоғары шегі

var ms: array [1..n] of integer; // бүтін сандар массиві

k: integer; // массив индексі

min, max: integer; //ең кіші және ең үлкен сан

sum: real; // сандар қосындысы

begin

for k:=1 to n do

ms[k]:=round(random(m)); // массивті кездейсоқ

// бүтін сандармен толтыру

min:=ms[1]; max:=ms[1]; sum:=0;

for k:=1 to n do

begin

sum:=sum+ms[k];

if ms[k]<min then min:=ms[k];

else if ms[k]>max then max:=ms[k]

end;

sum:=sum/n; Label1.Color:=clWhite;

Label1.Caption:=’min=’+IntToStr(min)+#13

+’maxs’+ IntToStr(max)+#13+’orta man=’+FloatToStr(sum);

еnd;

 

4. Проектіні сақтап, іске қосу. Көрінген форманың OK түймесін шерту. Нәтижелік форма 2.11-суретте көрсетілген.

 

 

2.14.2. Матрицамен жұмыс

2-мысал. 100 метрлік қашықтыққа жүгіру барысында үш топтың әрқайсысынан төрт студент іріктеп алынды.Олардың секонтпен өлшенген жүгіру нәтижелері 2,6-кестеге енгізілген.Қайсы топтың студенттері бірінші орынға шықты?Орта есеппен олардың әрқайсысы 100 метрді қанша уақытта өтті?

2.6-кесте 1-топ 2-топ 3-топ

12,69 13,25 12,98
14,05 13,16 13,08
13,32 14,27 14,02
14,00 12,01 13,88

 

  1. Жаңа проект ашу;
  2. Формаға Label 1,Label 2 өрістері мен Button 1 түймесін орнату;
  3. Label 1,Label 2 компонеттерінің Caption қасиеттерінің мәндерін тазалау (бос ету) Button1 түймесінің сәйкес қасиетіне ОК мәнін,форманың сәйкес қасиетіне Нәтижесөзін меншіктеу.
  4. Код терезесінде Button1 түймесінің onClick оқиғасын өңдеуіш процедурасын құру.

 

 

ProcedureTform1.ButtonClick(Sender:TObject);

vara:array [1..4, 1..3] of string; // матпица

s:array [1..3] of real; nomer,k,j:integer;

min:real; nomerT: string;


<== previous lecture | next lecture ==>
TScrollBar компоненті | OnEZeroDivide do
lektsiopedia.org - 2013 год. | Page generation: 0.084 s.