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

 
 

Қазақстан  Республикасының  білім  және  ғылым

министрлігі 
 
 
 
 

                                     Факультет : ’’ Инженерлік Экономикалық’’

                                            Кафедрасы: ’’ Қолданбалы  Информатика’’ 
             
             
             

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

Тақырыбы:’’Паскаль жүйесінде

                функцияларды  ұйымдастыру

      технологиясы ’’ 
 
 

                    

                                              

                            Тексерген:

                   

                   Орындаған: 
             
             
             
             
             
             
             
             
             
             
             

                      Алматы 2008 жыл 
 
 
 
 

                                          МАЗМҰНЫ 

    І.КІРІСПЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..... . . . 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 
 
 
 
 
 
 
 

І.КІРІСПЕ 

        Паскаль  программалау  тілінің  алғашқы нұсқасын 1968-1970 жылдары Стэнфорд университетінің информатика кафедрасының профессоры,швейцариялық ғалым Никлаус Вирт жасады.Оны Borland корпорациясының қызметкерлері жетіл- дірді (олардың құрған тілдері Turbo Pascal,Borland және Pascal Object Pascal деп аталады).Delphi жүйесінде Object Pascal программалау тілі пайдаланылады. Turbo Pascal стандартты паскальдың барлық құралдарын қамтитын және жаңа құралдармен толықтырылған,кеңейтілген нұсқасы (біз  оны кейде  Паскаль деп те атаймыз).

       1979 жылы  қабылдаған  стандартты Паскаль тілінің кейінгі нұсқалары жетілдірілген. Қазіргі дербес компью- терлердің пайда болуына байланысты тілдің Turbo Паскаль деп аталатын нұсқасы жасалды. Қазіргі уақытта бұл жұйе- нің бірнеше  нұсқалары  бар, соңғы жасалған ең қуаттысы 7.0 нұсқасы болып табылады, бірақ, программалау баста- масын жүйенің 5.5 нұсқасынан бастап үйренген дұрыс.

       Ал 1975 жылы стандартты Паскальдің компиляторымен Турбо Паскаль программалау тілі пайда болды. Содан бері Паскаль білімдік, кәсіптік- техникалық мектептерде және жоғарғы оқу орындарында <<бірінші>> программалау тілі ретінде қолданыла бастады. Турбо Паскаль тілін пайдаланудың қарапайымдылығынан пайдаланушылар арасында кең орын ала бастады.

        Программалау тілдерін оқыту  қазіргі кездегі маңыз- ды негіздердің  біріне  айналып отыр. ЭЕМ-ді адам  қызме- тінің әртүрлі салаларында  пайдалану  үшін программалау  тілдерін  меңгеру және сол   тілдерде жазылған  програм- маларды (ЭЕМ-ді программалық қамтамасыз етудің құрамын- дағы) қолдана білу қажет. Қазіргі  кезде  программалау тілдерінің түрлері оте коп. Солардың ішіндегі бірінші деңгейдегі программалау тілі ретінде негізінен оқыты- латыны – осы Паскаль тілі. Өйткені, компьютерлік сауат- тілік пен программмалауды  алғашқы кезенде үйретуге ең қолайлы тіл. Паскаль тілі алгоритмдік тілдердің ішінде- гі кеңінен таралған тілдердің бірі болып табылады.

       Ақпаратты  өңдеу жазылған есепті шығару алго- ритмі бойынша жүзеге асады. Алгоритмді жазудың бірне- ше тәсілі бар екені белгілі. Алгоритмді жазу тәсілдерінің ішінде   компьютерде      орындалатын    программа түріндегі- оның программалау тілінде жазылуы     ерекше  орын  алады. Программалау    тілі-  комьютерге  арналған  есеп шығару   алгоритмін   жазу    үшін   пайдаланылатын  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

                
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

                   ІІ.НЕГІЗГІ БӨЛІМ 
 

                                  2.1 Қосалқы программалар 

      Программада  белгілі  бір  қайталанып  іс- әрекеттерді, атау  бойынша бөлек  жазып,  атау  арқылы  бір  немесе  бірнеше  рет  іске  қосуға  болатын программаның бөлігін  қосалқы  программа  деп атайды.

Бағдарлама  құрған кезде  кейбір  нұсқаулар  жүйесі  орындайтын  және белгілі  бір  нәтиже  беретін іс- әрекеттер  бағдарламаның  орындалу  барысында бір  немесе  бірнеше  рет  қолданылуы мүмкін. Әрине бұл  әрекеттер  тобын  қанша рет пайдалансақ сонша  рет бағдарламамызға қайталап  жазуымызға  болады, алайда  ол  тиімді  болмас еді. Осы іс- әрекеттерді  топтап,  бірақ  рет  жазып,  Паскальда  көмекші  бағдарлама ретінде  беруге  болады. Қажет  кезінде  осы   қосалқы  программаны  шақырып, программамыздың  кез келген  жеріне  пайдалана  аламыз.

       Қосалқы программаларды қолдану арқылы программаларды ықшамдауға болады.

Кез  келген  программа  жазушы  күрделі  программаларды  кішігірім  іс- әрекеттерге бөліп,  оларды  жалпы  соңғы  нәтижеге  жетуге  бейімдеп, жүйелеп  қосалқы программалар  тобын жасап,  соңынан оларды  негізгі программаға  біріктіріп  пайдаланады. Turbo  Pascal  программалау  тілінде қосалқы программаның  екі түрі  қолданылады: 

1) процедура 

2) функция 

      Turbo  Pascal  программалау  тілінде айнымалыларды  негізгі бөлімде сипаттау  түрі – ауқымды  айнымалылар  деп  аталады.  Егер  айнымалылар қосалқы  программада  сипатталса ,  онда олар  жергілікті айнымалылар  деп аталады. Сондай- ақ  негізгі  программада  қосалқы  программаны қолданылатын  айнымалыларды  нақты  айнымалылар  деп  атайды. Ал қосалқы  программаның  атауында  берілген  айнымалылар  формальді айнымалылар  деп  аталады. 

     Әрбір  қосалқы  программаның  атауы  болады  және  олар айнымалыларды  сипаттау  бөлімінен   құралып,  операторлық  жақшаларда орналасқан  командалар  жиынан   тұруы   мүмкін. 

               

 

                    2.2 Процедура 

       Атау  берілген  операторлар  тізбегін   Pascal  тілінде  процедура  деп  атайды. Кез   келген   процедура   программаға  ұқсас  түрде  жазылады, 

яғни олардың   тақырыбы   және  баяндау  бөлімі  оператор  болуы   мүмкін.

      Процедураның  жалпы  түрі:

PROCEDYRE  аты (формальдіпарамерлер: шама  түрі );

      Label

             Процедура  ішінде қолданылатын  белгілер тізбегін жазу;

      Const

             Локальді еұрақты шамаларды жазу ;

      Type

             Локальді  түрлерді  жазу;

      Var

             Локальді айнымалыларды  жазу;

      Begin

            Процедура  денесі  жазылады;

      End; 

      Программаның   орындалуы   негізінде  программаның  операторларының  орындалуынан   басталады. Процедура  орындалып  болған  соң  оның  нәтижесін   шығаратын   параметрлер  процедураға  негізгі  программадан  қай  жерден  көшті  сол  жерге  беріледі,  одан  соң  негізгі  программа  орындала  береді.

       Негізгі  программада  сипатталған   атау  негізгі  және  қосалқы  программада  да  пайдалана  алады. Осындай  атаулар  глобальді  атаулар 

деп  аталады. Қосалқы   программада   сипаттталған  атаулар   тек  қосалқы программада   ғана   пайдаланады. Осындай  атаулар  локальді  деп  аталады.

       Процедуралар  айнымалыларды  сипаттау  бөлімінен  кейін  қажет  болған  жағдайда  ішкі  процедуралар  және  ішкі  функцияларды сипаттап,  оларды  мүмкіндігінше  қолдануға  болады. 

PROCEDURE  PROC _1(A1, B1, …: TYPE_1); 
 

[PROG_1 процедурасында  қолданылатын  айнымалыларда   сипаттау бөлімі]

 

PROCEDURE  PROC_2(A2, B2, …:TYPE _2); 

[PROG_2 процедурасында  қолданылатын  айнымадыларда  сипттау  бөлімі] 

Begin  

PROC_ 2 процедурасының  негізгі бөлігі 

End; 

.

.

.

Begin 

PROC_1 процедурасының  негізгі  бөлігі 

    End; 
 
 
 
 

       Процедурада тек қарапайым айнымалыларды  ғана  емес, индексті айнымалыларды (массивтерді) пайдалануға болады. 
 

Мысал.

Нақты сандар  тізбегі (бір өлшемді кесте)Ai, i=1,n бе- рілген. осыытізбектегі ең кіші элементті және оның но- мірін табуға процедураны пайдаланып программа құрайық. 

program BK1;

Type MA=array[1..50] of integer;

Var

    A: MA;

    M:real;

    K:integer;

    N:integer;

    j:integer;

Procedure MIN;

Var i:integer;

Begin

    M:=A[1]; K:=1;

    For i:=2 to n do

    if A[i]<M then begin M:=A[i]; K:=1

End;

End;

Begin

      Writeln (‘n-массивөлшемін енгіз: ‘);

      Readln (n);

      Writeln (‘массив элем.’’ENTER’’ арқылы енгіз:’);

      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

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