Ішкі программалар, Процедураның программада ұйымдастырылуы



КІРІСПЕ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...3

І TURBO PASCAL ТІЛІНДЕГІ ІШКІ ПРОГРАММАЛАР ... ... ... ... ... ..4

ІІ ІШКІ ПРОГРАММА . ПРОЦЕДУРАНЫҢ ПРОГРАММАДА ҰЙЫМДАСТЫРЫЛУЫ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..14

ІІІ ЕСЕП ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..21

ҚОРЫТЫНДЫ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...23

ҚОЛДАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ ... ... ... ... ... ... ... ... ... ... ... .24

ҚАЗАҚСТАН РЕСПУБЛИКАСЫ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ
АҚТӨБЕ АУЫЛШАРУАШЫЛЫҚ КОЛЛЕДЖІ МКҚК

Курстық жұмыс

Мамандық: Есептеу техникасы және автоматтандырылған жүйені
бағдарламамен қамсыздандыру
Пән: Алгоритмдеу және бағдарламалау негіздері
Тақырып: Ішкі программалар. Процедура

Орындаған:
Тексерген:

АҚТӨБЕ - 2011
МАЗМҰНЫ

КІРІСПЕ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3

І TURBO PASCAL ТІЛІНДЕГІ ІШКІ ПРОГРАММАЛАР ... ... ... ... ... ..4

ІІ ІШКІ ПРОГРАММА - ПРОЦЕДУРАНЫҢ ПРОГРАММАДА ҰЙЫМДАСТЫРЫЛУЫ ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ... ..14

ІІІ ЕСЕП ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 21

ҚОРЫТЫНДЫ ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ... ... ... ..23

ҚОЛДАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ ... ... ... ... ... ... ... . ... ... ... ... 24

КІРІСПЕ

TURBO PASCAL - күрделі әрі жоғары деңгейлі программалау жүйесі. Оның тұңғыш нұсқасын 1970 жылы швейцария физигі Никлаус Вирт ұсынған.Автор тілді алғашқы арифметикалық есептеу машинасын жасаған француздың ұлы ғалымы Блез Паскальдің құрметіне Паскаль деп атаған.
Кейіннен тілдің көптеген нұсқалары жарық көрді. Солардың ішінде, 1983 жылы Borland корпорациясының талантты қызметкері Андерсон Хейлсбергтің жасаған жаңа үлгісі - Turbo Paskal арасында үлкен сұранысқа ие болды. Оның бұл нұсқасы СPM операциялық жүйесіне егізделген.
TURBO PASKAL жүйесінде қарапайым есептерді шешудің программасын бастап, күрделі мәліметтер қорын құрудың сан қырлы жұмыстары жүргізіледі. Есептерді шешу дегеніміз - берілген информацияны белгілі бір ережелерге,нұсқауларға сүйеніп құрылған программа бойынша өңдеу.
Курстық жұмыстың тақырыбы - Ішкі программалар. Процедура.
Курстық жұмыстың мақсаты - Турбо Паскаль тіліндегі ішкі программалар - процедуралар мен функциялардың ұйымдастырылуын сипаттау.
Курстық жұмыс есебі - Енгізілген сандар тізбегін өсу және кему реті бойынша жазатын, олардың қосындысын есептей алатын бағдарлама құру.
Курстық жұмыс негізгі 3 бөлімнен тұрады: бірінші бөлімде Turbo Pascal тіліндегі ішкі программалар түрлері, екінші бөлімде ішкі программа - процедураның программада ұйымдастырылуы көрсетіліп, үшінші бөлімде курстық жұмыс есебінің қойылымы
мен бағдарлама құрылымы сипатталған. Курстық жұмыс есебін шешу үшін жоғары деңгейлі бағдарламалау тілінің бірі - Турбо Паскаль таңдалды.

І TURBO PASCAL ТІЛІНДЕГІ ІШКІ ПРОГРАММАЛАР

Ішкі программа - деп, өзінің есімімен негізгі программаның кез - келген жерінен шақырылатын, программалық модульді айтады. Турбо Паскаль тілінде ішкі программаның екі түрі бар - процедуралар және функциялар. Олардың құрылымдары негізгі програманың құрылымына өте ұқсас.
Процедуралар. процедураның сипаттамасы міндетті түрде тақырыппен басталуға тиіс. Тақырыпта procedure резервтелген сөзінен кейін процедураның аты жазылады, ары қарай дөңгелек жақшаның ішінде формалды параметрлердің тізімі сипатталады. Тақырыптың соңында үтір нүкте қойылады.
Процедураның жалпы форматы:
46
a, b
b0
ЕҮОБ
а
c:=a mod b;
a:=b; b:=c;
басы
соңы
Procedure процедураның аты {параметрлері};
сипаттау бөлімі
begin
операторлар бөлімі
end;
Процедураның орындалу нәтижесінде - бір немесе бірнеше мәндер есептеледі. Ол (немесе олар), негізгі программаға оның параметрінің мәні ретінде беріледі. Процедура шақырылғанда оның формалды параметрлері, негізгі программадағы сәйкес нақты параметрлерге тізбектелу кезегімен ауысады. Нақты параметрлер - негізгі программадан процедура шақырылғанда, оған тізбектелу кезегімен мәндерін беретін параметрлер. Формалды және нақты параметрлердің саны және типтері дәлме-дәл тізбектелу тәртібімен сәйкес келу керек. Формалды параметрлер - бұл, нақты параметрлерге мәндерін беруге типін және орнын анықтайтын, процедурада қатынасушы жалған айнымалылар. Формалды параметрлер екі түрге бөлінеді: айнымалы- параметрлер және мәндік параметрлер. Айнымалы- параметрлердің алдында Var сөзі тұрады. Процедура орындалу нәтижесінде бұл айнымалы-параметрлердің мәндерінің өзгергу салдарынан, негізгі программада оған сәйкес нақты-параметрлердің мәндері өзгертеді. Мәндік- параметрлердің алдында Var сөзі тұрмайды. Процедураның ішінде мәндік- параметрлермен кез келген амалдар орындалып, мәндері өзгерседе нақты-параметрлердің мәндеріне әсері болмайды.
Программада барлық айнымалылар глобальды және жергілікті деп бөлінеді. Глобальды айнымалылар негізгі программаның сиппаттау бөлімінде жаряланады. Жергілікті айнымалылар процедураларда және функцияларда жаряланады.
Мысал
An - есептейтін программа құру керек, мұндағы a және n (n 0) бүтін сандар, клавиатурадан енгізіледі.
Шешімі
Бүтін санның дәрежеге шығаруын есептейтін процедура
құрайық.
Procedure Degree (x, y : Integer; Var st : Longint);{тақырыбы}
Var i : Integer; {сипаттау бөлімі}
47
Begin {процедураның денесі}
St := 1;
For I := 1 to do
st := st * x;
End;
Процедура Degree деп аталды. Жақшаның ішінде формалды параметрлердің тізімі типтерімен сипатталды. Үш параметр қолданылды: біріншісі - дәреже негізі, яғни дәрежеге шығарылатын сан, екіншісі - дереже, ұшіншісі - нәтиже. Бірінші екі x және y - мәндік параметрлер, үшінші st айнымалы- параметр, сондықтан алдында Var сөзі нұсқалды (st Longint типті, себебі дәрежелік функцияның нәтижесі тез өседі). Процедураның сипаттау бөлімінде цикл санын есептейтін i - айнымалысы жарияланды. Процедураның денесінде, яғни Begin және End сөздерінің арасында x санының дәрежесі For циклымен есептеледі. Degree процедурсын пайдаланып жазылған бүкіл программаныңтүрі мынадай болуы мүмкін:
Program Example_st;
Var a, n : Integer;
s : Longint;
Procedure Degree (x, y : Integer; Var st : Longint);
Var i : Integer;
Begin
St := 1;
For i := 1 to do
st := st * x;
End;
Begin
Writeln(`Вв. два числа - основание и показатель степени');
Readln(a, n);
Degree(a, n, s); {процедураны шақыру}
Writeln(`Результат ', s);
Readln;
End.
Негізгі программадан Degree процедурасы оператор сияқты шақырылды. Жақшаның ішінде нақты a, n және s параметрлері жазылған. Программа орындалғанда нақты a, n және s параметрлерінің мәндері, сәйкес формалды x, y және st параметрлеріне меншіктелді.
Процедураның жұмысы аяқталғанда a және n айнымалыларының мәндері өзгермейді, ал s айнымалысы жаңа мән қабылдайды. Енді а = 3 және n = 4 мәндері үшін программаның орындалу тәртібін көрсетейік. Программада Degree(a, n, s) процедураның аты кезіккенде компьютер мына әректтерді орындайды:
- Degree процедурасында сипатталған айнымалыларға жады ұйяшықары бөлінеді;
- нақты параметрлердің мәндерін формалды параметрлерге меншіктейді: x := a (x = 3), y := n (y = 4), st := s;
- процедураның операторлары орындалады, яғни 34 есептейді;
- табылған нәтиже s айнымалысына меншіктеледі, a және n айнымалыларының мәндері өзгерусіз қалады. Осыдан кейін программа, процедураны шақыру нүктесіне қайта барып, одан кейінгі операторлар орындалады.
Мысал
Program Example_st;
Degree(a, n, s); процедураны шақыру
n 4
s -
a 3 Procedure Degree
Begin
End;
x 3
y 4
st -
i -
Program Example_st;
Degree(a, n, s); шақырылған нүктеге қайту
n 4
s 81
a 3 Procedure Degree
Begin
End;
x 3
y 4
st
i -
81
Екі бүтін айнымалы берілген. Олардың мәндерінің орындарын ауыстыру керек.
Шешімі. Айнымалылардың мәндерінің орнын ауыстыруды екі әдіспен орындауға болады - аралық айнымалыны колданып, немесе қолданбай.
Бірінші әдіске сәйкес келетін процедураны жазайық.
Procedure Swap (Var x, y : Integer);
Var z : Integer;
Begin
z := x;
x := y;
y := z;
End;
Процедура Swap деп аталды. Оның екі формалды параметрлері айнымалы-параметрлер болады. Себебі олардың мәндерінің орны ауыстырылғаннан кейін өзгерілген мәндерді сақталуы қажет. Осы параметрлер процедураның орындалу нәтижелері болады. Процедурада сипатталған z аралық айнымалы ретінде қолданылады. Программаның тұтастай түрі мынадай:
Program Example_sw;
Var a, b : Integer;
Procedure Swap (Var x, y : Integer);
Var z : Integer;
Begin
z := x;
x := y;
y := z;
End;
Begin
Writeln(`Вв. два числа');
Readln(a, b); {мәндерді енгізу}
Swap (a, b); {процедураны шақыру}
Writeln(`a =', a, `b = `,b); {жаңа мәндерді шығару}
Readln;
End.
Мысалда процедураның айнымалы-параметрлеріне екі параметр
жіберіледі. Процедура орындалғаннан кейін олар жаңа мәндер
қабылдайды: a айнымалысының мәні b - ға тең, ал b айнымалысының
мәні a - ға тең болады.
Функциялар Функциялар бір мәнді ғана есептеуге арналған програмалық модуль. Тақырыбында function сөзінен кейін функцияның аты, жақшада формалды параметрлердің тізімі, екі нүкте, функцияның нәтижесінің типі нұсқалады.
Функцияның жалпы форматы:
function функцияның аты {параметрлері}:нәтиже типі;
сипаттау бөлімі
begin
операторлар бөлімі
функцияның аты := мәні;
end;
Функцияның денесінде міндетті түрде функцияның мәнін есептейтін бір меншіктеу операторы болуы керек: функцияның аты := мәні;
N элементтен k бойынша қайталамасыз теру санын есептейтін
программа құру керек.
Қайталамасыз теру саны мына формула бойынша есептеледі:
k!( n k )!
Ck n!
n

Белгілеулер:
n, k - енгізілген сандарды сақтауға арналған айнымалылар;
C - нәтижені сақтауға арналған айнымалы.
Қайталамасыз теру санын есептеу үшін, мынаны: n!, (n-k)!, k! есептеу қажет.
N cанының факториалын: n!=1*2*3*...*n, есептейтін функцияны сипаттайық:
Function factorial(n : integer) : Longint; {тақырыбы}
Var i : integer; {сипаттама бөлімі}
rez : Longint;
Begin {функцияның денесі}
rez := 1;
For i := 1 to n do
rez := rez * i;
factorial := rez; {нәтижені функцияның атына}
End; {меншіктеу}
Функциясының нәтижесі - ұзын бүтін сан болады. Енді осы
factorial функциясын пайдаланып программа құрайық:
Program Example_fact;
Var n, k : Integer;
a1, a2, a3, c : Longint;
Function factorial(n : integer) : Longint;
Var i : integer;
rez : Longint;
Begin
rez := 1;
For i := 1 to n do
rez := rez * i;
factorial := rez;
End;
Begin
Writeln(`Введите n и k для подсчета числа kn
C : ');
Readln(n, k);
a1 := factorial(n); {n!- есептеу}
a2 := factorial(k); {k!- есептеу }
a3 := factorial(n-k); {(n-k)!- есептеу}
c := a1 Div (a2 * a3); {нәтиже}
Writeln(C);
Readln;
End.
Программа орындалғанда функцияның сипаттамасы жадыда сақтаулы түрады. Функция өзінің атымен шақырылады, ол қандайда бір өрнектің ішінде тұруы мүмкін.
Мысалы a1:= factorial(n) - дегеніміз factorial функциясын шақыруы болады.
Функцияны шақыруында жазылған параметр - функцияның сипаттамасында жазылған параметр - формалды деп аталады.
Біздің функцияда сипатталған n - формалды параметр. Негізгі программадан сипатталған n - нақты параметр. Функцияда және негізгі программада сипатталатын параметрлердің аттары бірдей бола береді. Функция программаның дербес бөлігі болғандықтан оның айнымалыларына жадыда жеке ұяшықтар бөлінеді. Сондықтан программа орындалғанда компьютер бірдей атты айнымалыларды шатастырмайды, себебі олардың әрекет аймақтары сәйкеспейді.
Енді n = 5, k=3 мәндері үшін программаның орындалу тәртібін талдайық. Програмада бірінші a1 := factorial(n) операторы кезіккенде мына әректтер орындалады:
- factorial функциясында сипатталған формалды
айнымалыларға жадыда жеке ұйяшықтар бөлінеді;
- формалды параметрлерге нақты параметрлердің мәндері
меншіктеледі: n := n (n := 5);
- бірінші рет функцияның программасы орындалады, яғни 5
санының факториалы табылады;
- функция шақырылған жерге, функцияның мәні жіберіледі, яғни a1 айнымалысына меншіктеледі. Негізгі программаның келесі операторы a2 := factorial(k) орындалады, функция екінші рет шақырылады, т.с.
Сонымен программада factorial функциясы үш рет шақырылады. Екінші ретінде k=3, үшішіде n-k=2 мәндері жіберіліп, нәтижелері a2 және a3 айнымалыларына меншіктеледі.
Натурал санның цифрларының санын есептейтін функция жазу керек. Сол функцияны қолданып, берілген екі санның цифрларының артықтыған анықтау қажет.
Шешімі. Ол үшін сан нөлге тең болғанға дейін, соңғы цифрларын
жекелеп алып санау керек. Санағыштың мәнін цикл сайын 1-ге өседі
(алғашқы мәні - 0).
Онда мынадай функцияны сипаттауға болады:
Function Quantity(x : Longint) :Byte;
Var k : Byte; {k - санағышты сипаттау}
Begin
k := 0; {санағыштың алғашқы мәні}
While x 0 do {сан нөлге тең болғанға дейін}
Begin
Inc(k); {санағыш мәні 1-ге өседі}
x := x Div 10; {санның соңғы цифры ≪кесіледі}
End;
Quantity := k; {функцияның атына нәтиже }
End; {меншіктеледі}
Енді осы функцияны пайдаланып, берілген екі санның
цифрларының санының артықтыған анықтайтын программа ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Мультимедиялық жүйені ұйымдастыруда бағдарламалық құралдарды пайдаланып, алгоритм құру
Турбо Паскаль жүйесінде қосалқы программаларды ұйымдастыру технологиясы туралы
Turbo Pascal жүйесінде процедураларды ұйымдастыру технологиясы
Алгоритмдік тіл және программалау тілі
Көмекші бағдарламалар
Процедуралар және түрлерімен сипаты
Delphi –программалық ортасында бағдарламалау
Туре тип атауы тип мәндері
Delphi программалау тілін оқыту әдістемесі
Модульдік бағдарламалау - Модульдердің құрылымы
Пәндер