Паскаль жүйесінде функцияларды ұйымдастыру технологиясы

Автор работы: Пользователь скрыл имя, 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

Работа состоит из  1 файл

Курсовая ’’Паскаль жүйесінде.doc

— 180.00 Кб (Скачать документ)

      For j :=1 to n do read (A[i]);

      MIN;(*MIN-процедурасын шақыру*);

      Writeln;Writeln(‘мин.элемент M=’,M:5:2);

      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

Информация о работе Паскаль жүйесінде функцияларды ұйымдастыру технологиясы