УМК ВП. казПОС. Пніні Оу программасы syllabus оытушы жнінде мліметтер
Скачать 6.17 Mb.
|
Procedure TForm1.FormClick(Sender: TObject); var a, b, с, p : real; Procedure PifagPr(a1, b1 : real; var c1 : real); // қосалқы // процедура begin c1 := sqrt(sqr(a1)+sqr(b1)) // гипотенуза end; begin // негізгі процедура a:=4.5; b1 := 5.2; PifagPr(a,b,c); p := a+b+c; ShowMessage(FloatToStr(p)); end; 2. Программаны сақтап, іске қосу. Көрінген форманы шерткен кезде шығару терезесінде нәтиже көрінеді (2.23-сурет). Piffunc функңиясы енгізілген программа: Procedure TForml.FonnCliek(Sender : TObject); var a, b, p : real; Function Piffunc(a1, b1 : real) : real; // қосалқы функция begin Piffunc := sqrt(sqr(al)+sqr(bl)) end; begin // негізгі процедура a :=4.5; b1 :- 5.2; p := a+b+Piffunc(a, b); ShowMessage(FloatToSir(p)); end; 2.23-сурет. Нәтиже Кейде программаны рекурсия тәсілін пайдаланып құру да мүмкін (рекурсия - операторларының орындалуы кезінде ішкі программаның қайта айналып орындалуы). 2-мысал. n! мәнін рекурсияны пайдаланып табу керек (n! = 1*2*3*...*n). Жаңа проект формасына Edit1, Label1, Button1 компоненттерін орнатып, Edit1 компонентінің Text жөне Label 1 компонентінің Caption қасиеттерін тазалау; Button1 компонентінің факториал мәні есептелетін функция енгізілген on Click оқиғасын өндеуіш құру: function fact (k : integer) : integer; begin if k>1 then fact := k * fact(k - 1) else fact := 1 end; procedure TForm1.Button1Click(Sender : TObject); var n : integer; // факториал мәнін есептейтін сан man : integer; // n! мәні begin n:= StrToInt(Editl.Tеxt); man := fact(n); // fact — функцияны шақыру Label1.Caption := IntToStr(man); end; Программаны іске қосып және көрінген форманың Edit1 өрісіне 5 санын енгізіп, Button 1 түймесі шертілгенде label1 өрісінде 120 саны көрінеді. т.с.с. 3-мысал. Формаға Edit1, Button1 компоненттерін орнатып, Edit1 өрісіне төрт бүтін саннан тұратын массив енгізу (5, 24, -128, 40) және элементтерді кемімелі түрде ретімен кезекті қатарларға шығатын етіп, шығару терезесінде көрсету керек.
Button1 түймесін екі шертіп, код терезесінде оның ОпСІіск оқиғасын өңдеуіш дайындамасын орнату. Дайындама ішіне процедура мәтінін енгізу және оның ішіне екі бос орын символдарының аралығына енгізілген ішкі жолды ерекшелейтін GetSubStr атаулы функция енгізу: Procedure TForm1.Button1Click(Sender: Object); const n=4; // массив өлшемІ var a : array [1..n] of integer; k: integer; // цикл параметрі st: string; // үзінді ерекшеленетін жол Function GetSubStr(st:string; n1 : integer): string; var m : integer; // үзінді алып тасталатын символ нөмірі k : integer; // цикл параметрі begin for k := 1 to n1-1 do begin m := pos(' ', st); st := copy(st, m+1, length(st)-m); while (pos(' ', st)=1) and (length(st)>0) do delete(st,1,1); // бос орынды алып тастау end; m := pos('', st); // қажетті үзіндінің соңғы нөмірі if m>0 then result := copy(st,1,m-1) else result := st; end; begin // негізгі программа st := ''; for k := 1 to n do st := st+IntToStr(k)+' '+GetSubStr(Edit1.text, k)+#13; ShowMessage(st); end;
2.24-сурет. Editl өрісіне енгізілген массив элементтері 4. Ок түймесін шерту. Шығару терезесінде қатарлары номірленген элементтер кемімелі түрде бір баған бойында көрінеді ( 2.25-сурет). ОК түймесі шертілген соң программаға енгізілген фикция алдымен бірінші ішкі жолды (5) ерекшелейді. Программа оны бүтін санға түрлендіріп, шығару терезесінде көрсетеді, т.с.с 2.25-сурет. Нәтиже Программадағы Edit1.Text, k - нақты параметрлер; Result - стандартты айнымалы. Оған функция қайтарып беретін нәтиже меншіктеледі. Негізгі әдебиеттер: 2[37-56], 12[15-35], 7[17-32] Бақылау сұрақтары:
13-Дәріс. TOLEContainer компоненті. OLE технологиясы. Жалпы, OLE технологиясы офистік қосымшаларда кеңінен пайдаланылады. Мысалы, Word мәтіндік редакторы терезесіне ClipArt-тан сурет кірістіру үшін Вставка-Рисунок-Картинки (Кірістіру-Сурет-Картинкалар) командасын беру жеткілікті екені белгілі. OLEContainer (OLE контейнер) компоненті арқылы Delphi-мен байланыстырылатын, автоматты турде жұмыс істейтін қосымшалар жеткілІкті. Мұндай тәсіл OLE автоматтандыруы делінеді. Мысалы, OLE автоматтандыруын пайдаланып, Excel-де мынадай есепті шешу керек болсын. Есеп. Фирма кенсесінде 1 кеңсе бастығы, 2 орынбасар, 3 бөлім бастығы, 15 қызметкер, 4 лаборант, 5 тазалаушы кызмет істейді. Алғашқыда кызметкерлерге берілетін айлық жоспары 281750 т. болып белгіленген. Алатын айлықтары: тазалаушы - 3500 т., лаборант - тазалаушыдан 1.5 есе артық, қызметкерлер - тазалаушыдан 3 есе артық, бөлім бастықтары - қызметкерлерден 20%-ке артық, орынбасарлар - тазалаушыдан 4 есе көп, кексе бастығы - орынбасарларға Караганда 20% көп алады. Егер фирма айлық жоспарын 300 000 т. етсе, жоғарыдағы коэффициенттерді өзгертпей, олардың айлығын қалай өзгерту керек?
2.26-сурет. Алғашқы айлық 2.27-сурет. Параметрді іріктеу терезесі 5. Терезенің Мән өрісіне 300 000 санын, төменгі өріске $B$3 адресін енгізіп, ОК түймесін шерту. Автоматты түрде Айлық кестесі сәйкес түрде өзгертіліп қойылады (2.28-сурет). 2.28-сурет. Автоматты түрде есептелген жаңа айлық Консольдық қосымша Delphi-де берілгендерді енгізу мен шығару үшін Турбо Паскальда пайдаланылатын read (оқу) және write (жазу) оператсрларын пайдалану тәсілі де бар. Оларды пайдаланып құрылатын программалар, осы үшін арналған, MS-DOS операциялық жүйесінде жұмыс істейтін консолдық қосымша терезесіне енгізіледі. Қосымшаны іске қосу тәсілі:
Program MyProgr; {SAPPTYPE CONSOLE} Uses SysUtils; var x,y : real; begin Write('x=?'); readln(x); y := 3*x+5; writeln(‘y=’, y : 6 : 3); readln; end.
Негізгі әдебиеттер: 2[37-56], 12[15-35], 7[17-32] Бақылау сұрақтары: 1. OLE технологиясы 2. OLEContainer компонентін 3. Консольдық қосымша 14-Дәріс. Программаны дұрыстау. Ерекше жағдайлар. Программа құруда семантикалық (магыналық), синтаксистік және алгоритмдік қателер жиі кездеседі. Программаны компиляциялау кезінде синтаксистік қателерді компилятор өзі табады да, машина жұмысын тоқтатады. Aл, 15 орнына 25 енгізілген сияқгы қатені компилятор еске алмай, программаның орындалуы аяқталған кезде қате нәтиже шығады. Программада кате жазылған оператор сиякты алгоритмдік кате ле программаның орындалу нәтижесін дұрыс көрсетпейтіні сөзсіз. Сондықтан программаны құрып болған соң оны мұқият қайта тексеріп шығу керек. Программаның синтакситік түрде жазылу дұрыстығын комптятордың өзі қадағалап отыруы және терезесін экранда көрсету үшінәдетте Delphi орнатылған сон ол күйге кел-тіріліп қойылады. Онын бірі — Project-Options (Проект-Күйге келтіру) командасын беріп, ашылған терезенің Compiler бетіндегі жалаушаларды 2.30-суреттегі сияқты орнатып кою керек. 2.30-сурет. Компиляторды күйге келтіру терезесі Ерекше жағдайлар Программаға нөлге бөлу және т.с.с. орындалмайтын қате әрекеттердің кездейсоқ енгізілуі де мүмкін. Олар ерекше жагдайлар делінеді. Ерекше жағдайларды өңду үшін Delphi-ге стандартты еңдеуіштер класы енгізілген. Өңдеуіштер атаулары Е әрпінен басталады: EZeroDivide — нөлге бөлу; ElntError — бүтін сандармен жұмыс кезінде кездесетін қателер; EConvertError — мәннің типін түрлендіру қатесі, т.б. Мысалы, мынадан программа үзіндісін х:= 5; for k := -2 to 2 do begin y:=x/k; ShowMessage(FloatToStr(y)); end; орындау кезінде нөлге бөлуге болмайтыны жазылған хабар шығады (k=0 болған кезде). Ерекше жағдайды өңдеу үшін Delphi ортасында блокты қорғау механизмі қарастырылған. Оның жазылу түрі: try <операторлар>; except <ерекше жағдайларды өңдеуіштер> else <операторлар>; end; Блокты қорғау блогы try (байқап көру) қызметші сөзінен басталып, end сөзімен аяқталады. Мұнда алдымен try ... except бөлімінің операторлары орындалады. Егер операторлар ерекшеліксіз орындалса, қорғалған блоктың жұмысы осымен аяқталып, басқару end операторынан соң жазылған операторға беріледі. Егер ерекшелік бар болса, басқару except-тен соң жазылған бөлімге беріледі (блокқа else бөлімін енгізу міндетті емес). 1-мысал. һ=1 қадам бойынша, [-2;2] кесіндісінде y=2х/(х+1) функциясының мәңдерін есептеу керек. Ол үшін формата Button1 компонентін енгізіп, Button1Click процедурасын мынадай түрде қуруға болады: procedure TForm1.Button1Click(Sender : Tobject); var у : real; x:integer; y1: string; begin try for x:=-2 to 2 do begin y:=2*x/(x+l); yl:=FloatToStr(y); ShowMessage(y1); end; except on EZeroDivide do begin ShowMessage('Нөлге бөлу мүмкін емес'); Close; end; end; Программаны іске қосылған кезде, алдымен сұхбат терезе шығады. Ал программа қайта қосылса типті турленді кате сөйлемі жазылған шығару терезесі көрініп, программа жұмысы тоқтатылады. 2-мысал. ‘Ermek1’ файлы дискіде жазулы болсын. Оны ашу операторын try блогын енгізіп жазу керек. Программа үзіндісі: var F : TextFile; begin AssignFile(F, 'Ermek1'); try Reset(F); except //файл табылған жоқ ShowMessage( ‘Файлды ашу мүмкін емес’ ); end; end; Мұнда Reset опараторы бойынша файл ашылады, егер ол жоқ болса, try блогының екінші бөлімі орындалады (файлдар жөніңде төртінші тарауды қараңыз). Негізгі әдебиеттер: 2[37-56], 12[15-35], 7[17-32] Бақылау сұрақтары:
2. Ерекше жағдайлар дегеніміз не? Оны Delphi - дің хабарлау түрі 3. try ... except операторлары 15-Дәріс. Принтерде басып шығару. А1. Форманы ішіндегілерімен қоса принтерде басып шығу ушін TForm1 объектісінің Print атаулы әдісін шақыру жеткілікті (не File - Print командасын беруге болады) А2. Программа мәтінін басып шығару үшін алдымен формаға Button 1 компонентін орнатып, ОпСІіскоқиғасын өндеуіш процедурасын мынадай түрде толтыру керек: |