Программа денесі(операторлар тізбегі)



бет17/21
Дата16.03.2018
өлшемі5,46 Mb.
#39417
түріПрограмма
1   ...   13   14   15   16   17   18   19   20   21
Зертханалық жұмыс №8

Тақырыбы: Массив.

Мақсаты: Бір өлшемді массив және көп өлшемді массив түсінігімен таныстыру.

Бір өлшемді массив

     ЭЕМ-нің жадында сандардың бір-бірімен байланысқан көптеген мәндерін сақтау үшін индексті айнымалылар, яғни массивтер қолданылады. Массив дегеніміз  бірыңғай шамалар тізбегінің бір атаумен  аталып  реттелген жиыны. Математикадағы вектор, матрица осы массивке мысал бола алады. Тізбектің айнымалылары массив элементтері деп аталады. Оның элементтері индекстері бойынша ажыратылады. Егер айнымалы бір индексті элементтерден тұрса, онда бір өлшемді массив болады. Олардың индекстері сандармен немесе белгілі бір әріптермен жақша ішінде жазылады, мысалы

                               А(І),  С(12),  К(100)  

Массивпен жұмыс істеу үшін оның әр элементінің мәні белгілі болуы тиіс. Сондай-ақ массивтің идентификаторы /аты/ да жай айнымалының идентификаторы сияқты белгіленеді.

    Паскаль тілінде массивтің нөмері тік жақшаға алынып, жазылады, мысалы

      1,6; 4,9;  5;  8,9;  0,47 мәндерінен тұратын А массивін былай жазамыз:

        A[1]=1,6; A[2]=4,9; A[3]=5;  A[4]=8,9;  A[5]=0,47

Мұндағы А- массив аты болады да, 25-оның индексінің қабылдайтын ең үлкен мәні болып есептеледі.

     Паскаль тілінде массивті программада қолдану үшін алдымен оларды міндетті түрде арнаулы  ARRAY /ағылшын тілінен аударғанда - массив/ -операторы арқылы сипаттап жазу керек. Ол айнымалы - VAR немесе TYPE тип бөлігінде көрсетіледі, VAR  арқылы жазылуы:

      VAR массив аты : ARRAY  [бастапқы нөмері .. соңғы нөмері]  OF типі;

 Мәселен алдыңғы мысалдағы А массиві үшін:

                VAR  А : ARRAY  [1 .. 5]  OF REAL;

 мұндағы, А - массив аты, элементтері нақты шама  - REAL типін қабылдайды. Нөмері /индексі/ 1-ден 5-ке дейін.

Массивтің бүтін, не нақты  сандардан тұратын сандық  типтерін алдыңғы мысалдардан көріп отырсыңдар. Сондай-ақ массив  символдық типтен де тұрады. Символдық жол - STRІNG үшін массив келесі түрде өрнектеледі:

            TYPE

              STRІNG : АRRAY [0 .. 255] OF CHAR ;

      Массивтің нөмерінің санына қарай қанша элементті массив екенін байқауға болады. Алдыңғы мысалда STRІNG массиві 255 элементті болады.

      Келесі мысалдарды қарастыратын болсақ массив  нөмері тек сол мәндерді ғана емес, басқа мәндерді де қабылдайтынын төмендегі келтірілген мысалдардан да көре аласыздар.

1.     Текстегі латын әріптерін шығару:

            VAR  әріп : ARRAY  [‘A’ .. ‘Z’]  OF  ІNTEGER;

 2.     Құрлықтағы бір жылдағы ауаның орташа температурасы:

         TYPE  құрлық =(Гаити, Таймыр, Ява, Тасмания Сицилия, Фемарн);

        VAR  T : ARRAY  [құрлық]  OF  REAL;

 3.     Келесі  адамдардың қайсысының бойы ең ұзын:

        TYPE aты =( Қарлығаш, Қадыр, Ақын, Жанар, Бақыт );

    VAR   a : ARRAY[ аты ] OF (ұл, қыз);

          b: ARRAY [ аты ] OF 140 .. 240;

 Осы мысалдарға қарай отырып, массивтің дұрыс /қатесіз/ жазылуын келесі түрде көрсетуге болады:

          VAR  M : ARRAY [1 .. N] OF REAL;

          jyl : ARRAY [қаңтар .. желтоқсан ] OF  ІNTEGER;

          L : ARRAY [Жол] OF BOOLEAN;

          M1: ARRAY [Шеңбер] OF  CHAR;

        Егер бірнеше массивтер бірыңғай типті және элементтер саны тең болса, онда оларды программада бір жолда  сипаттауға болады, мысалы

 

           VAR   A, B, C : ARRAY [1 .. 25]  OF   REAL;



 Мұнда, А, В, С - массивтерінің мәндері 25 элементтен тұратын нақты сандар.

                            A[1], A[2], A[3], ? , A[25],

                           B[1], B[2], B[3], ? , B[25],

                           C[1, C[2]], C[3], ?, C[25]

       Паскаль тілінде масивтер арасында “тең”, ”тең емес” немесе “ меншіктеу операторы ” амалдарын  қолдануға  болады. Мысалы: егер А және В массиві былай берілсе,

 VAR


A, B : ARRAY[1..10]  OF   REAL;

 Бұған үш амалды қолданғанда төмендегідей нәтиже береді:



 Өрнек

Нәтиже

А = В

 

 



Егер  әрбір  А  массиві  элементінің   мәні сәйкес В массиві элементерінің мәніне тең болса.

А<>B

 Егер А массиві элементінің  ең болмағанда  бір мәні сәйкес В массиві элементінің мәні тең болмаса.

A:= B

 В массиві элементінің барлық мәні сәйкес А массиві элементінің  мәніне  меншіктеледі.  В массиві  элементінің  мәндері  өзгеріссіз  қалады.

   Массивті программаға енгізу мен оны одан шығару үшін  цикл қолданылады, мысалы

                     FOR   І:=1  TO  9  DO

                     READ(А[І]);

 бұл жол  тоғыз  элементтен тұратын А[I] массивін енгізеді, ал цикл

                     FOR   І:=1  TO  9  DO

                     WRІTE(A[І]);

 тоғыз элементтен тұратын массивті шығарады.

Массивпен жұмыс істеуді төмендегі  есептерде  қарастырамыз.



Мысал: Бүтін он санның қосындысын табамыз. Х[I] массиві элементтерінің нөмері - І, ал қосындысы  SUM- ға меншіктелсін. Сонда  

           SUM=X[1]+X[2]+X[3] ? + X[10]     табу керек.

 

PROGRAM MATRІX_1;



  CONST N=10;

   VAR


      І, SUM : ІNTEGER;

      A: ARRAY [1..N] OF ІNTEGER;

BEGІN

        FOR І: = 1TO N DO



BEGІN

       WRІTE(‘ Массив элементтерін енгіз’  );

       READ (A  [І]);

END;


SUM: =0;

       FOR І: = 1TO N DO

SUM: = SUM+A[І];

WRІTELN(‘ 10 элементтен тұратын А-массивінің қосындысына тең’ );

END.

 Программаның орындалуына талдау. Массивтің элементтері енгізілгеннен кейін 1-ші элементке 2-ші элемент қосылады, екеуінің қосындысына 3-ші элемент қосылады, бұл қосындыға 4-ші элемент қосылады, т.с.с. 10-шы  элементке жеткенше осылай орындалады. Сонда цикл он рет орындалады.



Көп өлшемді массив

Математикада көп өлшемді массивтер, яғни массивтердің массиві жиі қолданылады. Әсіресе, көп өлшемді массивтер, басқаша айтқанда матрицалар кең көлемде қолданылады. Мысалы, бірнеше жолға жазылған бүтін сандар тізбегі матрица болады.

5 4 3 6

2 8 1 7


4 3 9 5

Берілген матрицаның өлшемі 3х4, яғни ол үш жолдан жәнене төрт бағаннан тұрады. Егер берілген матрицаны қандай да бір А деген атаумен белгілесек,онда матрицаның әрбір элементі екі индекспен белгіленеді. Мысалы А(і,j). Мұндағы бірінші индекс і- жол номері (і-1,2,3,4). Мұндай матрицаны төмендегіше сипаттауға болады (тип атауын Т деп аламыз):

1) type t= array [1..3,1..4] of integer;

var a:t;


2) type t= array [1..3] of array [1..4] of integer;

var a:t;


бірінші жағдайда әрбір индекстін типі сипатталыпсонан соң массив элементтерінің негізгі типі integer көрсетіледі. Екінші жағдайда алдымен [1..3] индексінің мәндерін типі сипатталып, сонан кейін құрамында integer жай негізгі типті және басқа индекстің типінсипаттайты, күрделі негізгі типі array [1..4] of integer; көрсетіледі.

Егер программада матрицаның жеке жолдарын бөлу керек болса, онда сипаттауды былайша берген ынғайлы:

Type

t1=array[1..4] of integer;



t=array[1..3] of t1;

var


a:t

b:t1;


Мұнда алдымен бір жолдың типі t1 сипатталады, сонан соң жол типі t1 арқылы барлық матрица t типі сипатталады. Айнымалылар бөлімінде А екі өлшемді массив, яғни матрица деп, ал В бір өлшемді массив деп көрсетілген. Екіөлшемді массивтер көп кездеседі. Олармен арифметикалық амалдарды орындауға болады. Екі матрицаны қосуға, көбейтуге, ең үлкен, ең кіші элементтерін, олардың орнын табуна болады.

Бақылау сұрақтары

1.     Массив дегеніміз не?

2.     Массив нөмері /индексі/ ретінде көп жағдайда алынатын қандай тип?

3.     Массивтегі жол символдарын  қалай сипаттауға болады?

4.     Программада массивті енгізу және шығару қалай іске асады?

5.     Массивтің қанша элементтен тұратынын қалай білуге болады?

6. Көпөлшемді массивке нені мысал етіп алуға болады?

7. Көпөлшемді массивті қалай сипаттаймыз?

8. Жалпы массивтермен қандай амалдар орындауға болады?

 

 



Тапсырмалар

  1. Екі массивтің қосындысын үшінші массив түрінде шығарыңыз.

  2. В[І] массиві берілген. С[І] массивін келесі формула бойынша есептеңіз. C[і]=(2,6+B[і])/2

  3. A[і] массиві берілген. Ең кіші және ең үлкен элементтерін табатын программа құр.

  4. А[к] массиві берілген. Оның оң элементтері мен олардың рет санын табу программасын жаз (5, 6, -2, -3, 1, 6. 6, -2, 3, -4, 9, 12)

  5. А[n] массивін 2-ден 2n-ге дейінгі сандармен толтыру программасын жаз.

  6. а={2, 5, -4, 3} және  в={6, 8, 7, -2} векторларының скалярлық көбейтіндісін табу программасын жаз.

  7. Элементтен тұратын A(n) сандық массиві берілген. Оның элементтерінің мәндерін қалағанша таңдап алып, келесі тапсырмаларды орындаңдар:

а) мәндері жұп сан болатын элементтердің санын табу керек;

б) мәндері 8-ге тең элементтердің нөмірлері мен осы мәндердің қосындысын табу керек;

в) ең кіші және ең үлкен элементтер мәндерін іздеуді бір циклге енгізіп, олардың қосындысын табу керек;

г) мәндері қайталанбайтын элементтердің санын табу керек.

8. A(n), B(n), C(n) үш массиві берілген. Осы массивтердің барлығына ортақ элементті табу программасын жаз.

9. 3х3 өлшемді А және В массивтері берілген. Екеуінің қосындысын тап.

10. 4х4 өлшемді А матрицасының ең кіші элементін тау программасын құр.

Зертханалық жұмыс №9

Тақырыбы: Жолдар

Мақсаты: Жолдар түсінігімен таныстыру, жолдармен орындалатын процедураларды меңгерту.

Программалау тілдерінде көптеген жағдайларда символдар тізбектерін қолдану қажет болады. Ол үшін Char типін пайдалану тиімсіз. Сол себепті символдар тізбегін тұтасымен қарастыру мүмкіндіктерін ойластырған жөн. Бұл жағдайда Pascal-да жолдық тип String пайдаланылады. Жол-белгілі бір символдар тізбегі. Өрнекте жол екі жағынан апострофқа алынып, жолдық тұрақты ретінде қарастырылады. Жолдық символдар саны 0..255 дейінгі аралықта жатады. Жолдық типін сипаттау үшін String қызметші сөзі жазылып, тік жақша ішінде қарастырылып отырған жолдың ең үлкен ұзындығы келтіріледі.String типті айнымалыны тип бөлігінде сипаттау арқылы немесе бірден айнымалылар бөлігінде сипаттауға болады.

Жазылуы:

Type<тип аты>=String[жолдың ең үлкен ұзындығы];

Var<айнымалы>:<тип аты>;

Немесе:


Var <айнымалылар>:String [жолдың ең ұлкен ұзындығы];

Мысалы:

Type ts=String[30];

Var tz:ts;

немесе


Var ts:String[30];

Жолдық байтпен есептелетін ұзындығын апықтау үшін оның ең үлкен ұзыпдығына 1-ді қосамыз. Бұл қосымша байт жолдың ењ алғашқы позициясына (0-дiк) орналасады да, ord функциясыныњ көмегімен жолдың ұзындығын табуға пайдаланылады. Жолдың ұзындығын анықтау үшін арнайы Length

функциясы да бар.
Символдық өрнек.

Операндалары(тұрақтылар, айнымалылар, функциялар) жолдық жєне символдық типті өрнектер символдық өрнектер деп аталады. Символдық өрнектерде біріктіру(+) жєне қатынас амалдары(=,<=,>=,<,>,<>) қолданылады. Біріктіру амалы (+) бірнеше жолдарды біріктіріп, нәтижесінде тұтас бір жолды алуға пайдаланылады.

‘A’+’B’+’C’+’D’+’G’ ‘ABCDG’

‘1’+’-’+’топ’+’студенті’ ‘1-топ студенті’


Нәтижесі жол болғандықтан, 255 символдан аспау керек. Қатынас амалдары екі жолды салыстырады жєне біріктіру амалына қарағанда орындалу үстемділігі төмен, яғни алдымен барлық біріктіру амалдары сонан соң салыстыру амалдары қолданылады. Салыстыру солдан оңға қарай жүреді.
‘Cosm1’<=’Cosm2’ true

‘a’<’A’ false

‘Dos1.0’<’Dos1.0’ true

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

z1:=’3-курс’;

z2:=z1+’студенттері’;

Меншіктеу операторындағы өрнектің нәтижесінің ұзыпдығы мепшіктеу айнымалысының ұзындығы артып кетсе, артылған символ қолданылмайды.

Сипатталуы Меншіктеу Нәтиже

А String[6]; 3-курс студенті 3-курс

А String[5]; 2-топ студенті 2-топ

A String[2]; 1 топ студентi 1
Символдық айнымалыға мепшіктелетін жолдық типті тұрақты шаманың ұзындығы бір символдан аспауы қажет.Олай болған жағдайда қателік туады да, программаның орындалуы үзіледі. Мысал үшін келесі программа үзіндісін келтірейік:

Var ch:char;

Z1:string[12]: z2 : string[30];

Begin


Ch:=a

Z1:=’класы’;

Z2:=ch+Z1; (нәтижесі а класы)

Z1:=’*’;


ch:=Z1;

Соңғы меншіктеу операторы дұрыс емес, себебі Z1-дің кезекті мәніьір символдан тұрғанымен, string типті болғандықтан, ұзындығы 2 байт, ал char типті айнымалының ұзындығы 1 байт.

Жолдың символын оның реті (индексі) арқылы табуға болады.Индекс бүтін типті өрнек түрінде жолдың идентификаторынан соң тік жақшаға алынып жазылады.Мысалы, Z1[1+2], Z2[7] жазулары Z1 және Z2 жолдарындағы үшінші ‘a’ символын және жетінші ‘c’ символын көрсетеді.

String типті мәліметтерді өңдеуге келесі стандартты процедуралар мен функциялар қолданылады.



Процедуралар:

Delete (z,m,n) - z жолының m орнынан бастап n символын өшіреді.Егер m>255 болса, онда қателік туады.

d:=’1-топ’ delete(d,3,3) ’1-’

d:=’1-класс’ delete(d,1,2) ’класс’

d:=’1-топ’ delete(d,2,1) ’1 топ’



Insert (d1,d2,m) - d1 жолын d2 тізбегіне m орыннан бастап сыналап қосады.
Мысалы:

Var …


t1,t2,t3:string[11];

t1:=’АБДХ’;

t2:=’ВГЕ’;

t3:=Insert (t2,t1,3);

Соңғы функцияның нәтижесінде t3 жолы ‘АБВГЕДХ’ жолына тең болады.

Str (s,t)-s айнымалысының сандық мәнін жолға айналдырып, string типті ts айнымалысына меншіктейді.

S:=1500 str(S:6,tz) ts ‘1500’

S:=4.8E+0.3 str(S:10,tz) ts ‘4800’

S:=76854 str(-S:3,tz) ts ‘-76854’

Функциялар:

Copy(ts,m,n)-ts жолынан m позициясынан бастап n символын бөліп алады.Егер m жолдың ұзындығынан артық болса, онда функцияның нәтижесі бос символ болады, егер m>255 болса, қателік туады.

Tz:=’ABCDEFG’ Copy(tz,2,3) ‘BCD’

Tz:=’ABCDEFG’ Copy(tz,4,10) ‘DEFG’

Concat(tz1,tz2,…tzN)-tz1,tz2,…,tzN жолдарын көрсетілген ретпен біріктіреді.Біріктірілген жолдың ұзындығы 255-тен аспауы керек.

Concat(‘AA’,’XX’,’Y’) ‘AAXXY’

Concat(‘IBM’,’PC’) ‘IBMPC’

Length(tz)-tzжолының ұзындығын анықтайды.

Tz:=’123456789’ Length(tz) 9

Tz:=’IBM PC’ Length(tz) 6

Pos(tz1,tz2)-tz1 жолы tz2 жолында кездессе, қай жерден басталатынын көрсетеді.Нәтиже бүтін типті.tz2 жолында tz1 тізбегі кездеспесе, онда нәтиже 0-ге тең.

Tz2:=’abcdef’ Pos(‘de’, tz) 4

Tz2:=’abcdef’ Pos(‘r’, tz) 0

Val(st,n,code)-st жолдық типіндегі деректі бүтін немесе нақты типке ауыстырып, n айнмалысына меншіктейді, ал осы түрлендіру процедурасының дұрыс орындалғандығын туралы ақпарат code беріледі.

St:=1450 Val(st,n,code) code=0

Upcase(st)-қатарлы әріпті бас әріпке ауыстыру функциясы.

St:=program Upcase(st) PROGRAM

St:=turbo pascal Upcase(st) TURBO PASCAL

St:=begin Upcase(st) BEGIN

Жолдық типтегi Delete,Insert процедураларын және Pos функциясын қолданып, мысал келтiрейiк:

Program op;

Var

T,T1,T2:string[255];



I:integer;

begin


Writeln (‘текстi енгiз:’);

Readln (T);

Writeln (‘қандай символ ауыстыру керек’);

Readln (T1);

Writeln (‘ауыстыратын символ’);

Readln (T2);

While Pos (T1,T)>0 do

Begin


I:=Pos (T1,T);

Delete (T, I , Length(T1));

Insert (T2, T,I);

End;


Writeln(‘жаңа текст:’,t)

End.
Бақылау сұрақтары 

1.     Литерлік шамалармен қандай амалдарды орындауға болады?

2.     Жолдық символ қандай айнымалымен сипаталады?

3.     Жолдағы текст бөлігін көшіруге бола ма?

4.     Pos функциясының қызметі қандай? Мысал келтір.

5.     Жолдағы текстің ұзындығын қалай анықтайды? Мысал келтір.

Тапсырмалар

1.     “Аласапыран” сөзінде қанша символ бар екенін анықтау.

2.     “Келешек” сөзінен “кеше” сөзін шығару.

3.     Жолдағы текстің бөлігін кері оқу.

4.     Тексте қанша әріп  және қанша  “а” әрпі бар екендігін анықтау? 

5.   “Алауласын” сөзінен келесі жолдарды шығар:

Лаула, алау, лаула,

Алауласын аула.

 6.  Гүлдер, гүлдер, шоқ гүлдер,

Тұра берші нұрланып. - деген жолдардан келесі өлең шумағын шығар:

    Гүлдер, гүлдер, шоқ гүлдер,

Қызыл гүлдер, көк гүлдер,

Тұра берші ырғалып,

Тұра берші нұрланып.


  1. Бес адамның фамилиясы енгізілген. Осылардың ішінен ең ұзағын анықтаңыз.

  2. «қазақстан» сөзін кіші әріптермен енгізіңіз. Программаның орындалу нәтижесінде ол сөздер бас әріптермен жазылсын.

  3. «Мен» және «студентпін» сөздері берілген. Осы сөздерді бір сөйлем етіп шығарыңыз.

  4. «Аласапыран» сөзіндегі а әрібінің санын анықтаңыз және оларды о әрібіне ауыстырыңыз.



Зертханалық жұмыс №10
Тақырыбы: Iшкi программалар. Процедура. Функция.

Мақсаты: Ішкі программа түсінігімен танысу. Процедураны, функцияны қолданып есептер шығаруды мегеру.
Программалау барысында жиi кездесетiн жағдайлардың бiрi, программаның орындалуы барысында бiр ғана есептеу жұмысын әр түрлi мәндер үшiн бiрнеше рет есептеуге тура келедi. Осы бiр есептеу жұмысын программада бiрнеше рет жаза бермей қажеттi кезiнде қолдану үшiн программаның жеке бөлiгiне жазып қоюға болады. Қандайда бiр алгоритм бойынша жұмыс жасайтын және өзiне негiзгi программаның кез келген бөлiгiнен қатысуға болатын программаның жекелеме бөлiгiн iшкi программа деп атаймыз.

Iшкi программалар негiзгi программаның iшiндегi кiретiн және шығатын орындары бар тұйықталған бөлiгi болып табылады. Негiзгi программа мен iшкi программадағы айнымалылар бiр-бiрiне бағынышты емес.

Паскаль тiлiнде iшкi программаның екi түрiн бөлiп көрсетедi:


  1. процедура (procedure)

  2. функция (function)

Кез келген программада бiрнеше процедура немесе функция қолданылуы мүмкiн. Процедура мен функция сипаттау бөлiгiнде айнымалылар бөлiгiнен кейiн хабарланады.
program <атау> (input,output);

(*негiзгi программаның сипаттау бөлiгi*)

label – белгiлер бөлiгi

const – тұрақтылар бөлiгi

type – тип тер бөлiгi

var – айнымалылар бөлiгi

Iшкi программа Р1

Iшкi программа Р2

(*негiзгi программаның операторлар бөлiгi*)

begin


операторлар;

Р1 iшкi програмасын шақыру;

операторлар;

Р2 iшкi программасын шақыру;

операторлар;

end.


Программаның орындалуы негiзгi программаның операторларынан басталады. Қажет жағдайда iшкi программа шақырылып он операторлары орындалады. Сонан соң басқару негiзгi программаға берiлiп программаның орындалуы жалғасады.

Процедуралар
Процедура құрылымы төмендегiдей болады:

procedure атауы (формальды параметрлер);

<сипаттау бөлiгi>

begin


<операторлар бөлiгi>

end;


Тақырыпта procedure қызметшi сөзi көрсетiлгеннен кейiн оның атауы жазылып, жақша iшiнде формальды параметрлер көрсетiледi.

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

Операторлар бөлiгi begin-end операторлық жақшасына алынады.

Процедура өзiнiң атауымен шақырылады:

атауы (iс жүзiндегi параметрлер)

Формальды және iс жүзiндегi параметрлердiң көмегiмен, мәндер программадан процедураға және керiсiнше процедурадан программаға беріледі. Әрбiр формальді параметрлер өзiнiң типімен бiрге көрсетiледi. Оған сәйкес келетiн iс жүзiндегi параметрлер типсiз көрсетiледi. Формальді және iс жүзiндегi (фактылы) параметрлердiң жазылу ретi мен типтерi сәйкес келу керек.

Мысалы:

procedure summa (A,B,C: integer);

мұндағы А, В, С – формальді параметрлер.

Процедураны орындауға шақыру түрi:

summa(5,M,7)

5,m,7 – фактылы параметрлер

сонда A=5, B=M, C=7 болады
Процедура параметрлерi iшiнде мәндер параметрлерi және айнымалылар параметрлерi болып бөлiнедi. Мәндер параметрi процедураның кiру параметрлерi боып табылады. Олар фактылы параметрлердiң мәнiн өзiне қабылдай алады, бiрақ оған өз мәндерiн бере алмайды. Айнымалы параметр процедураның кiру және шығу параметрi болып табылады. Олар iс жүзiндегi параметр мәнiн қабылдап, оны процедура типіне өзгертiп шыққан жаңа мәндi iс жүзiндегi процедураға қайта қайтара алады.

Айнымалы параметрді бөлiп көрсету үшiн формальды параметрі алдана var сөзi жазылады.
Procedure s1(a,b,c:real; var x,y:real);

var z:real;

begin

z:=a+b+c;



x:=sqr(z);

y:=sqrt(z)

end;
Процедураны шақыру s1(25.4,44.6,30,x1,y1)

A=25.4, B=44.6, C=30 Осы қабылданған мәндер бойынша процедура орындалады.

Процедураның орындалу нәтижесiнде X,Y өз кезегiнде өз мәндерiн X1,Y1 фактылы параметрлерге бередi. Процедураның орындалу нәтижесiнде негiзгi программада X1=10000, Y1=10 деген мәндi аламыз.
Функциялар
Iшкi программаның екiншi бір түрi-функциялар программа iшiнде процедура сияқты бері леді. Функцияның ерекшелiгi ол орындалуы барысында бір ғана нәтиже шығады, бiрақ кiру параметрлерi бiрнешеу болуы мүмкiн. Нәтиже функция атауымен белгiленiп негiзгi программаға беріледі.

Функция құрылымы:

Function атауы( формальды параметрлер ): тип;

<сипаттау бөлiгi>

begin


<операторлар бөлiгi>

end;
Функция iс жүзiндегi параметрлерi көрсетiлiп өзiнiң атауымен шақырылады. Функцияны шақыру кезiнде типi көрсетiлмейдi.

Атаудың жұмыс iстеу аймағы негiзгi программаның сипаттау бөлiгiнде хабарланған атаулар, негiзгi программаның операторлар бөлiгiнде және кез келген iшкi программада жұмыс iстейдi. Бұл атаулар глобальды деп аталады. Iшкi программада хабарланған атаулар тек қана осы iшкi программада және осында хабарланған процедура мен функцияда жұмыс iстейдi. Бұл атаулар локальдық деп аталады. Бұларды негiзгi программаның операторлары басқара алмайды.

Мысал: f=m!-k! мәнiн табу керек.
Program F1;

var f,m,k: integer;

function fact(n: integer): integer;

var p,i: integer;

begin

P:=1;


for i:=2 to n do

p:=p*i;


fact:=p

end;


begin

read(m,k);

f:=fact(m)-fact(k);

writeln(‘f=’,f)

end.


Бақылау сұрақтары.


  1. Ішкі программа деген не?

  2. Ішкі программаны процедура түрінде жазғандағы ерекшеліктерін көрсетіңіз.

  3. Формальді параметрлер және іс жүзіндегі параметрлер айырмашылығы

  4. Процедураны параметрсіз құруға бола ма?

  5. Глобальдік жєне локальдық мәндер дегенді қалай түсiнесіз?


Тапсырмалар



  1. Төмендегі мәліметтер бойынша берілген үшбұрыштың сүйір бұрышының мәнін анықтаңыз.

а) катеттерінің ұзындығы бойынша;

є) катеті мен гипотенузасының ұзындығы бойынша.




    1. а жєне b сандары берілген. Анықтау керек:

u=min(a,b), v=min(ab, a+b), min(u+v2,3.14)

      1. Процедураны қолданып квадрат теңдеуді шешіңіз:

  1. Функция мәндерінің кестесін құрыңыз: , . У мәнін келесі функция арқылы есептеу керек, соған процедруа құрыңыз.


    Достарыңызбен бөлісу:
1   ...   13   14   15   16   17   18   19   20   21




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет