Автор работы: Пользователь скрыл имя, 17 Октября 2011 в 21:02, курсовая работа
Паскаль программалау тілінің алғашқы нұсқасын 1968-1970 жылдары Стэнфорд университетінің информатика кафедрасының профессоры,швейцариялық ғалым Никлаус Вирт жасады.Оны Borland корпорациясының қызметкерлері жетіл- дірді (олардың құрған тілдері Turbo Pascal,Borland және Pascal Object Pascal деп аталады).
І.КІРІСПЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..... . . . 3
ІІ. НЕГІЗГІ БӨЛІМ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..... . . 6
2. 1 Қосалқы программалар . . . . . . . . . . . . . . . . . . . . . .... . . . . 6
2. 2 Процедура . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....... . . 7
2.3 Функция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..... . .9
2.4 Функцияның процедурадан айырмашылығы. . . . . . . .11
ІІІ. ЕСЕПТІҢ ҚОЙЫЛЫМЫ. . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1. 1-Есеп . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
3.1.2 Берілгені. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... . .14
3.1.3 Есептің алгоритмі . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... . . 14
3.1.4 Программала бөлімі . . . . . . . . . . . . . . . . . . . . . . . . . . .... . .14
3.2. 2-Есеп . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.2 Берілгені . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 16
3.2.3 Есептің алгоритмі . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . 16
3.2.4 Программа бөлімі . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 16
IV. ПРОГРАММА ЛИCТИНГІ . . . . . . . . . . . . . . . . . . . . . . . . . .17
V. ҚОРЫТЫНДЫ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
VI. ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР . . . . . . . . . . . . . . . . . . 21
For j :=1 to n do read (A[i]);
MIN;(*MIN-процедурасын шақыру*);
Writeln;Writeln(‘мин.
Writeln (‘мин. элемент нөмірі K=’,K:3);
End.
2.3 Функция
Басқа да тілдер тәрізді Pascal тілінде де функцияны арнайы программа ретінде жеке жазуға болады. Сондықтан оны қосалқы программа ретінде қарастыра аламыз.
Функцияның процедурадан ерекшелігі мынада:
1) Функция
бір ғана белгілі мән
қабылдайды және функцядан
алынатын нәтиже біреу;
2) Нәтиже
функция аты арқылы алынады
да негізгі программада
қолданылады.
Функцияның
жалпы түрі:
FUNCTION
FUNC_NAME (A1, A2, . . .:TYPE_1): TYPE2;
[процедурада
қолданылатын айнымалыларды сипаттау
бөлімі ]
BEGIN
Процедураның
негізгі бөлігі
END;
Мұндағы:
FUNC_NAME
– функцияның атауы. Функция
атауына бос орын белгісі
қолданылмай символдар тізбегінен
құра алады. Функция атауы әріптен
басталуы тиіс ( мысалы, sum, prl, user 2 ).
A1, A2, . . . –
қосалқы программада
TYPE_1 – айнымалылар типтері ( мысалы: x:integer; y:real; және т. б.);
TYPE2 – функцияның типі;
BEGIN – функцияның басы.
END – функцияның
соңы.
Функция
нақтылы параметрлердің мәндерін
бергеннен кейін өз аты арқылы
шақырылады. Сонымен қатар функцияны
тікелей өрнектің ішінде шақыруға
болады. Функцияның операторлар
бөлімінде бір арнайы меншіктеу
операторы болуы керек. Оның
сол функцияның аты жазылады,
оң жағында нәтиже келтіріледі.
Функцияда есептелген нәтиже
функцияның атына меншіктеледі.
Ал нәтиженің типі функцияның
мәнін тек функция атауы
арқылы пайдаланылады.
1-мысал.
z= 7(3x+4y-1) +5/(3x+4y-1)- 2sinx+10 функциясының мәнін есептеу керек. 3х+4у-1 өрнегінің мәні көмекші программа- function арқылы есептелсін.
Program f;
var x, y, x: real;
function fn(t, p: real):real;
begin fn:=3*t+4*p-1;
end;
begin
write (‘x, y=?’);
readln (x, y);
z :=7*fn(x, y)+5/fn(x, y)-2*sin(x)+10;
write (z);
end.
Мұндағы
у айнымалысына меншіктелген өрнекке
енгізілген fn(x, y)- fn атаулы көмекші
программа- функцияны шақыру. Шақыруды
орындау кезінде компьютер алдымен
x, y айнымалыларының типтерін t, p параметр-
лерінің типтерімен салыстырып, олардың
бірдейлігін тексерген соң, х мәнін t-ге,
y мәнін p-ге меншіктейді (t:=x, p:=y). Одан
әрі, көмекші программаны орындайды да,
есептелген fn мәнін негізгі программадағы
fn шақыруының орнына қояды.
Паскальда Sin, Cos, Arctg тригонометриялық
функциялары ғана берілген, қалғанын
өзіміз көмекші бағдарлама түрінде жазып
алуымызға болады, мысалы:
Function Arcsin (X:Real):Real;
Begin
IF Abs(x)= 1 THEN RCsIN :=0
ELSE ArcSin := ArcTan(X/Sqrt(1-Sqr(x)));
End;
Function ArcCos (X:Real)Real;
Begin
IF X=0 THEN ArcCos :=pi/2
ELSE ArcCos :=ArcTan(Sqrt(1-Sqr(xc))/X);
End;
A> 0 болғандағы A санының X дәрежесін есептеу функциясы:
Function Dareje (A, X:Real): Real;
Begin
Dareje: =Exp(X*Ln(A));
End;
Ондық логартфмді
есептету функциясы:
Function Log10(X:Real):Real;
Begin
Log10: =Ln(X)/Ln(10);
End;
Осылай
кез келген өзімізге қажетті математикалық
функцмялардан формулаларды пайдаланып,
модуль жасап, кітапхана құрып алуымызға
болады.
2.4 Функцияның процедурадан
айырмашылығы
Сонымен
процедура мен функцияны
салыстырғанда олардың мынандай
ерекшіліктері анықталды:
1) Процедура мен функцияның ұқсастығы , олардың екеуінде де айнымалыларды, белгілерді, тұрақтыларды бейнелеу бөліктері болады.
2) Олардың бір – бірінен айырмашылығы процедурада procedure, ал функцияда function қызметші сөздері қолданылады.
3) Процедурада нәтиже параметрінің типі процедура атауынан соң тұратын, жақша ішінде бейнеленсе, ал функцияда нәтиже үшін арнайы параметр алынбайды. Сондықтан функция типі аргументтер, типтері бейнеленген жақша сыртында, қос нүкте арқылы көрсетіледі.
4) Негізгі
программада функцияның мәнін
тек функция атауы
арқылы қолданылады.
Функция тақырыбының процедура тақырыбынан айырмашылықтары:
-тізім соңындағы жабу жақшасынан соң қос нүкте қойылып , одан әрі функция типі жазылады;
- формальді
параметрлер – нақты
Мұнда анықталушы функция (өрнек) мәнін есептеу опраторының жазылуында да өзгешелік бар: өрнек меншіктелетін айнымалының атауы- function тақырыбындағы атаумен бірдей болуы тиіс. Негізгі программаға енгізілетін функцияның шақыру командасы да жеке оператор түрінде емес, sin, cos,т.б. стандартты функциялар сияқты,өрнекке енгізіліп жазылады.
1-мысал.
х = 1.7, х = 3.52, х = 18.7 үшін у = 3х2 + -10
функциясы мәндерінің қосындысын табу керек (s= (x1) + y(x2)+ y(x3)?)
Функцияны пайдаланып, қосындысын табу программасы:
Program mander;
uses crt;
var x1, x2, x3, y1, y2, y3, s:real;
function espt (t:real):real;
begin espt:=3*sqr(t)+sqrt(6*t)-10 end;
begin clrscr;
write(‘x1, x2, x3=?’);
readln(x1, x2, x3);
s: =espt(x1)+espt(x2)+espt(x3);
write(‘s= ‘,s);
end.
Компьютер негізгі программадағы
espt(x1) шақыруын оқып, espt атаулы көмекші
программа- функцияға өтеді де, x1-ді t-ге
меншіктеп, өрнек мәнін есептейді. Есептелген
мәнді негізгі программадағы espt(x1) шақыруының
орнына қояды, тағы сол сияқты.
МЫСАЛЫ:
Процедура
мен функция айырмашылығы мына төменгі
екі санның қосындысын
табу программасынан түсініп
көрейік:
Program EkiCProc;
Uses Crt;
Var
Can 1, Can 2 : Real;
Summe : Real;
Procedure Summ 1 ( Var Sum : Real; Can 1, Can 2 : Real );
Begin
Sum := Can 1 + Can 2
End;
Function Summ 2 ( Can 1, Can 2 : Real):Real;
Begin
Sum := Can 1 + Can 2; {Қосындыны функциямен табу }
End ;
BEGIN
Write (‘Қосындысын табатын екі санды енгіз . . .’);
Read ( Can 1, Can 2);ClrScr;
Sum 1(Summe, Can 1, Can 2); {Қосындыны процедурамен табу }
Writeln (‘ екі сан қосындысы = ‘ , Summe : 5 : 0);
Summe := Summ 2 (Can 1, Can 2 ); { Қосындыны функциямен табу }
Writeln (‘ Екі сан қосындысы = ‘ , Summ 2 (Can 1, Cfn 2 ) :5 :0);
END.
Мысалдан функция процедураның
ерекше бір түрі екені
байқалады, яғни функция
аты шақыруға ғана
пайдалынылмай, оның мәнінің
айнымалысы сияқты да
пайдалануға болады. Сордықтан
оның атын бірден жауабын
беруге де пайдаландық.
Writeln ( ‘ Екі сан қосындысы = ‘ , Summ 2 ( Can 1, Can 2) :5 : 0);
Процедураны шақыру командасына
Summ 1(Summe, Can 1, Can 2)қосымша Summe
айнымалысын екі санның
қосындысын белгілеуге пайдалану
программамызды нақтылай
түсті. Бұл шақыру командасын
функциядағыдай Summe := Summ 2 (Can
1, Can 2); меншіктеу командасы
арқылы жауабын бергізуге
пайдалана алмайды екенбіз.
ІІІ.
ЕСЕПТІҢ ҚОЙЫЛЫМЫ
3.1.
1-Есеп
3.1.1 Берілгені
Пернетақтамен
енгізуді қамтамасыз ететін бүтін сәйкес
келетін екі таңбалы санына функция
жазу керек. Қолданушы кез-келген пернені
басқанда оған сәйкес келетін символ
экранға шығады, егер ол символ сан
болса функция арқылы қолданушы
“Back spac” пернесі мен сандарға өзгертулерді
енгізе алады. Егер қаолданушы бір сан
енгісе онда “Enter” пернесін басқанда
функция өз жұмысын аяқтап және қолданушының
енгізген, процедураға шақырған санын
қайтаруы керек.
3.1.2.Есептің
алгоритмі
Бұл есепте а саны қолданушымен енгізілген сан. GetInt функциясы бір немесе екі, бүтін және тура санды енгізуге арналған. Back space пернесінің коды болып есептеледі. Enter-ді басқан кезде функцияға енгізілген сан қайтарылады.
Var бөлімінде CH, DEC, BUF, n, x,y айнымалыларын
сипатталады. Шартты операторын қолданамыз.
3.1.3. Программалау
бөлімі
1-есеп
uses crt;
Var a:integer;
function GetInt:integer;
const
K_BACK=8;
K_ENTER=13;
VAR
CH:CHAR;
DEC:BYTE;
BUF:ARRAY [1..2] of char;
n:integer;
x,y:integer;
begin
buf[1]:=' '; buf[2]:=' ';
n:=0;
repeat
ch:=readkey;
dec:=ord(ch);
if (ch>='0') and (ch <='9') and (n<2) then
begin
write (ch);
n:=n+1;
buf [n]:=ch;
end
else
if (dec=K_BACK) AND (n>0) then
Информация о работе Паскаль жүйесінде функцияларды ұйымдастыру технологиясы