Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Процедура
Ішкі программа мына екі жағ дайда процедура тү рінде болады: 1) Ішкі программа негізгі программағ а ешқ андай мә ліметтерді қ айтармағ ан жағ дайда процедура тү рінде болады. 2) Ішкі программа оны шақ ырғ ан программағ а бірден артық мә н қ айтарғ анда процедура ү рінде болады. Жалпы тү рде процедураны сипаттау: Procedure Аты (var 1 параметр: 1-тип;..., var к-параметр: к-тп); Var // жергілікті айнымалыны сипаттау; begin // процедура инструкциясы жазылады; end; к -параметр – формальді параметр, ол процедура ішә інде қ олданылады. Процедураны шақ ыру. Аты (параметрлер тізімі); Аты – шақ ырылатын процедура аты. Параметр тізімі – ү тірмен ажыратылатын нақ ты параметрлер. Енді процедуралар мен функцияларғ а мысалдар келтірейік.
1-есеп. Ү ш бү тін санның кө бейтіндісін еептейтін процедура жазып, оны негізгі программада шақ ырып, нә тижесін экранғ а шығ ару. Есептің шығ арылуы (1 - ә діс). 1. Формағ а нә тижені шығ ару ү шін Memo1 компонентін жә не процедура денесін жазуғ а Button1 компонентін орналастырайық. Компоненттер ү шін ө згеретін қ асиеттерді былай сипаттауғ а болады:
5 «Есептеу» батырмасын екі рет басып, программа код терезесіне ө ту. Сонда OnClick оқ иғ асы процедурасының дайындамасы шығ ады. 6 Процедура дайындамасына процедура денесін жазу: Tform.Button1.Click(Sender: TObject); Var m: integer; Procedure kob(a, b, c: integer; var nat: integer); Begin nat: =a*b*c; End; Begin kob(9, 7, 5, m); Memo1.Lines.Add(IntToStr(m)); End; End. 7 «Шығ у» батырмасын екі рет басып, программа код терезесіне процедура денесін жазу: Tform.Button2.Click(Sender: TObject); Begin Form1.close; End; 8 Іске қ осу командасын орындау. Ол ү шін Run пункті арқ ылы немесе F9 басу арқ ылы іске асыру. 9 «Есептеу» батырмасын басу. Нә тиже форм терезесінде кө рінеді. 10 «Шығ у» батырмасын басып, шығ ып кету.
2-ә діс. Функцияның кө мегімен ү ш санның кө бейтіндісін табу. 1. Функцияның процедурадан айырмашылығ ы бірінші тақ ырыптарының жазылуында; екінші айырмашылығ ы, функция денесінде функция атына функция нә тижесі меншіктеледі. Формағ а 1-ә дістегі компоненттер қ асиеттерімен орналастырылады. 2. «Есептеу» батырмасын екі рет басып, программа код терезесіне ө ту. Сонда OnClick оқ иғ асы процедурасының дайындамасы шығ ады. 3. Процедура денесі тө мендегідей болады: Tform.Button1.Click(Sender: TObject); Var M: integer; Function kob(a, b, c: integer): integer; Begin Kob: =a*b*c; End; Begin M: =kob(9, 7, 5); Memo1.Lines.Add(IntToStr(m)); End; End. 4. Іске қ осу командасын орындау. Ол Run мә зірінің Run пункті арқ ылы немесе F9 пернесін басу ароқ ылы іске асырылады. 5. «Есептеу» батырмасын басу. Мұ ндағ ы a, b, c – формальді параметрлер, 9, 7, 5 - нақ ты параметрлер. Нақ ты параметрлер тізімінің саны жә не типі формальді параметрлердің тізімімен сә йкес болу керек. Ішкі программалардың параметрлері мә ндер, айнымалылар, тұ рақ тылар болуы мү кін. Сондық тан оларды параметр-мә н, параметр-айнымалы, параметр-тұ рақ тылар деп атайды. Параметр-мә нге мысалы a, b, c жатады. Параметр-айнымалы var қ ызметші сө зінен кейін сипатталады. Параметр-тұ рақ ты ішкі программада, егер берілетін мә н ө згермейтін болса const қ олданылады.
2-есеп. Екі бү тін санның қ осындысын табуғ а процедура жазып, негізгі программада процедураны шақ ырып, нә тижені экранғ а шығ ару. Есептің шығ арылуы. 1. Формағ а нә тижені шығ ару ү шін Memo1 компонентін жә не процедура денесін жазуғ а Button1 компонентін алдың ғ ы мысалда кө рсетілгендей орналастырып, қ асиеттерінің мә ндерін қ ойып шығ у. 2. «Қ осынды» батырмасын екі рет басып, программа код терезесіне ө ту. Сонда OnClick оқ иғ асы процедурасының дайындамасы шығ ады. 3. Процедура дайындамасына процедура денесін жазу: Tform.Button1.Click(Sender: TObject); Var m: integer; Procedure min(a, b: integer; var c: integer); Begin If a> b then c: =b else c: =a; End; Begin Min(7, 5, m); Memo1.Lines.Add(IntToStr(m)); End; end. 4. Іске қ осу командасын орындау. 5. «Қ осынды» батырмасын басу.
3-есеп. Жиын элементтерінің қ осындысын есептеуге функция жазу. Негізгі программада жиын элементтерін енгізіп, нә тижені экранғ а шығ ару. Есептің шығ арылуы. 1. Формағ а нә тижені шығ ару ү шін Memo1 компонентін жә не процедура денесін жазуғ а Button1 компонентін алдың ғ ы мысалдарда кө рсетілгндей орналастырып, қ асиеттерінің мә ндерін қ ойып шығ у. 2. «Қ осынды» батырмасын екі рет басып, программа код терезесіне ө ту. Сонда OnClick оқ иғ асы процедурасының дайындамасы шығ ады. 3. Процедура дайындамасында программа модулін жазу: Procedure Tform.Button1.Click(Sender: TObject); Type Massiv=array[1..50] of integer; Var Mass: massiv s, i: integer; function sum(m: massiv; k: integer): integer; var nat, I: integer; begin nat: =0; for I: =1 to k do nat: =nat+m[i]; sum: =nat; end; begin for I; =1 to 7 do mass[i]: =I+5; s: =sum(mass, 7); memo1.Lines.Ad(IntToStr(s)); end; 4. Іске қ осу командасын орындау. Ол Run мә зірінің Run пункті арқ ылы немесе F9 пернесін басу ароқ ылы іске асырылады. 5. «Қ осынды» батырмасын басу. Ішкі программа ө зін-ө зі шақ ыра алады, Object Pascal-да оны басқ аша рекурсивті ішкі программа деп атайды. Рекурсивті ішкі программағ а мысал келтірейік.
4-есеп. Факториалды есептеу. Факториалды есептеуге функция жазу. Негізгі программада (Edit1)е нгізу ө рісінен санды алып, функцияны шақ ыру жә не алынғ ан нә тижені Memo1 ө рісіне шығ арады. Есептің шығ арылуы. 1. Формағ а енгізу ү шін Edit1 ө рісін, нә тижені шығ ару ү шін Memo1 компонентін жә не функция денесін жазуғ а Button1 компонентін орналастырып, қ асиеттерінің мә ндерін қ ойып шығ у. 2. «Есептеу» батырмасын екі рет басып, программа код терезесіне ө ту. Сонда OnClick оқ иғ асы процедурасының дайындамасы шығ ады. 3. Программа модулін жазу: Procedure Tform.Button1.Click(Sender: TObject); Varn: byte; Function fac(n: byte): extended; Var nat: extende; Begin If n in [0..1] then nat: =1 else nat: =n*fac(n-1); fac: =nat; End; Begin n: =StrToInt(Edit1.text); Memo1.lines.Add(FloatToStr(fac(n))); End; End.
|