UF

 Мәліметтер құрылымында қолданатын есептерді программалаудың ерекшеліктері

 

 жоспары:

1. Жиындар                     

2. Жазбалар  

3. Біріктіру операторы                      

4. Көп нұсқалы жазулар

5. Сатылы жазбалар

 

Негізгі ұғымдардың сөздігі: жиын, жазба, бос жиын, in, аралас түр, жазба, біріктіру операторы.

 

Студенттерде қалыптасу керек білім мен дағды: жиындарға, жазбаларға қолданылатын әрекеттерді программалауды меңгеру.                      

9.1. Жиындар

 

        Жиын – тұтас түрде қарастырылатын кез келген эле­менттер жиынтығы. Ол Паскальда қарастырылатын күрделi типтi бе­рiлгендердiң бiрi. Берiлгендер‚ элементтерiнiң саны 256-дан аспайтын‚ Real және Pointer’ ден басқа кез келген жай типтi болуы мүмкiн. Элементтерiнiң орналасу ретiн өзгерту мiндеттi емес.

Жиын SET операторы арқылы сипатталады (Set – орналастыру):

SET of <жиын элементтерiнiң типi>

 

       Мысалы‚   type JN = set  of  1..40;

                     Var  MN : JN;

                        J1 : set of Boolean;

                        J2 : set of ‘A’..’T’;

Мұндағы JN – жиын типiнiң аты; JN типтi MN айныма­лы­сының элементтерi  1..40  аралығындағы кез келген бү­тiн сандар болуы мүмкiн;  J1 жиыны тек TRUE және FALSE мән­дерiнен тұрады‚ т.с.с.

         Жиын элементтерi тiк жақшаларға алынып‚ үтiр арқы­лы бөлiнiп жазылады. Мысалы‚ 

         a1 := [4,18,12];  a2 := [‘a’, ‘b’, ‘f’];

         a3 := [true];  a4 := [];

(Элементтсiз жиын бос жиын деп аталады. Оның жазылуы-[ ].

Жиын элементi үшiн айнымалыны не өрнектi алу да мүмкiн.)

         Элементтiң жиынға тиiстiлiгiн анықтайтын қызметшi сөз – IN (inтиiстi (да‚ де жатыс септiгiнiң жалғауы)).

         Жиындармен орындалуы мүмкiн әрекеттер:

          - бiрiктiру (+);           мысалы‚  [3,5,9]+]7,9]=[ 3,5,9,7,9];

- қиылысын табу  ( * );  {екi жиында да бар элементтерден тұратын жиын}

         - айырмасын табу  ( - );  {соңғысында жоқ элементтер}  

- салыстыру;

            - элементтiң жиынға тиiстiсiн анықтау (IN).

           Бiрiктiрiлген  жиын – екi жиынның барлық элемент­терi­нен тұратын жиын. Мысалы‚ [3,5,9]+[7,9]=[3,5,9,7,9].

        Екi жиынның қиылысы – екi жиында да бар элемент­терден тұратын жиын. Мысалы‚ [3,5,9]*[7,9]=[9].

Екi жиынның айырмасы – соңғысында жоқ‚ бiрiншiсiнiң элементтерiнен тұратын жиын. Мысалы‚
[3,5,9]-[7,9]=[3,5].

Екi жиын  <,  >,  <=,  >=,  <>,  =   таңбаларының бiрi  ар­қылы салыстырылады. Нәтижесi – True не False. 

Мысалы: [5,2,8]<>[5,3,8] өрнегiнiң мәнi -  true.

 

9.2. Жазбалар

 

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

Деректердің мүшелерінің белгілі бір санын өріс деп атаймыз. Аралас түрдің мәні осы деректердің өрістік жиынын береді. Әрбір өріске өз атауы беріледі және қай түрде екені көрсетіледі. Сонымен әртүрлі өлшемді, шамасы да әртүрлі жазылуларды біріктіріп, белгілі бір кескін беріп тұратын – аралас түр болып табылады. Осы түр Record сөзімен басталып End сөзімен аяқталады. Да, осы екі сөз аралығында барлық мәліметтер өз түрлерімен көрсетіледі.

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

Type

<жазу типінің аты>=Record

<1 компонент аты>:<типі>

<n компонент аты >:<типі>;

End.

Var <жазу аты>:<жазу типі>;

Жазбаны Var бөлімінде сипаттауға болады:

Var жазу аты : Record

                          1-өріс аты:типі;

                           2-өріс аты: типі;

                                ...

                           n- өріс аты: типі

                           End.

Жазба және оның өріс элементтеріне атаулар беріледі.

Мысал:

Type abit= record

                  N:integer;                                {рет нөмірі}

                  Fam:string[13] ;                      {аты-жөні}

                  Ball:integer;                            {ұпай саны}

                  End;

 Var B:abit;                                                {жазу аты}

        Top: array[1..15] of abit;                   {массив}   

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

 

9.3. Біріктіру операторы

 

     Меншіктеу операторларын ықшамды түрде жазу үшін біріктіру операторы қолданылады. Оның жазылу үлгісі.

With <жазу аты> do

 <оператор> ;

With A do ST

Мұндағы A-RECORD түріндегі айнымалының аты, ST –операторлық іс-қимылдар бөлігі немесе жеке оператор.

     Бағдарлама жазу кезінде жазылуларды қолданғанда бағдарлама мәтіні ұзарып кетеді. Оған себеп: қай жерде қолдансақ та біз жазбалардың толық атын жазып отыруымыз керек. Сондықтан With қосып алу операторын қолданған ыңғайлы болады.

     Қосып алу операторы ST  операторы орындалу арқылы жүзеге асады. Осы ST  операторының ішкі құрамындағы А аралас түріндегі айнымалының белгілі бір мүшелерінің атауларын көрсету арқылы жұмысты жеңілдетеміз.

Жазба басқа айнымалыларға компонент болып кіруі мүмкін.

 

9.4. Көп нұсқалы жазулар

 

Бір типті айнымалылардың құрылымдары әр түрлі болуы мүмкін. Сондықтан аралас түрдегі жазу типін анықтағанда оған нұсқа бөлімін қосуға болады. Жазудың жалпы бөлімі сипатталып біткен соң, нұсқа бөлімі Case операторымен басталады. Одан кейін басқа өріс сипатталмайтындықтан,  Case операторы End операторлық жақшамен жабылмайды. Мысалы, қызметкерлердің анкеталық мәліметтерін сипаттағанда аты-жөні, туған жылы және егер ер адам болса онда әскери міндеттілігі және мамандығы, ал әйел болса тұрмыс құрғандығы және бала саны көрсетілуі керек.

Type Pol = (Men, Women);

         Anket= Record

         Fam: String[13];

         Tj: 1900..2000;

         MW:Pol;

         Case MW of

          Men:Askeri_m:Boolean, maman:string[15] );

          Women:(Tyrmis: Boolean; Bala:integer);

          End;

Var A1, A2:Anket;

Case операторы құрамында барлық нұсқалар сипатталады. Ал әрбір нұсқа жақшаға алынған компоненттер сипаттамасы тізімінен тұрады. Тізім алдында бір немесе бірнеше белгі қойылады. Белгілер типі типтерді сипаттау бөлімінің басында скаляр тип түрінде көрсетіледі және өз атымен беріледі. Жазудың нұсқа бөлімінің сипаттамасының қысқартылған түрі:

Case MW: Pol of

Мысалы, А1 айнымалысына қатысты келесі меншіктеу операторларын жазуға болады.

A1.Fam:=’Жандосов’;

A1.TJ:=1980;

A1.MW:=Men;

A1.Askeri_m:=True;

A1.Maman:=’математик’

 

9.5. Сатылы жазбалар

     Паскальда жазбалар сатылап та орналаса алады, яғни жазбаның кейбір өрістері жазба және олардың өрістерінің кейбірі тағы да жазба т.с.с. болуы мүмкін. Айталық, жоғарыда келтірілген Student жазбасының FIO өрісі үш өрістен (фамилиясы (F), аты (I), әкесінің аты (O)), Т өрісі екі өрістен (мамандығы (М), тобы (Т)) тұратын жазбалар болсын, онда Student жазбасы былайша сипатталады:

Var Student : Record

                                                   R : integer;

                                                   FIO : Record

                                                        F : string [20];

                                                        I : string [10];

                                                   End;

                                                   Tg : string [10];

                                                   T : Record

                                                        M : string [3];

                                                        T : integer;

                                                   End

                                                   End : (Student)

 

Student жазбасын схема түрінде келтірейік:

 

Жазбалардың кейбір өрістері массивтер де болуы мүмкін. Мысалы, студенттердің сессияда алған бағалары туралы мәліметтер үш бөліктен тұрсын : аты-жөні (FIO) - String [15]; бағалары төрт элементтен тұратын массив (Ab) – array [1..4]; орта бағасы (Ob) – Real типті.

Жүйеге сәйкес жазба (Sesst) төмендегідей сипатталады:

Var

          Sesst: Record

                                                   R : integer;

                                                   FIO : string [20];

                                                   Ab: array [1..5] of integer;

                                                   Ob: real;

                                                 End;

                                                 .  .  .

 

Жаттығу есептері

 

1-мысал. [3,5,8, 9] жиыны берiлген. [5], [6] элементтерi жиынға тиiстi ме?

          Тексеру программасы:

          Var  a: set of 1..9; t1,t2 : boolean;

         Begin a:=[3,5,8,9];  t1:=5 in a;  t2:=6 in a;

                 Writeln(t1);  writeln(t2)

         End.                                    {t1 – true; t2 – false}

2-мысал. a=[1,3,6,9,8]; b=[3,5,9]. a-b  жиынының эле-
менттерi?

         Var a,b,c : set of 1..10; k:integer;

         begin a:=[1,3,6,9,8];  b:=[3,5,9]; c;=a-b;

             For k:=1 to 10 do

             If k in c then write(k:5)

         end.  

3- Мысал. Топтағы үш алмаған студенттердің аты-жөні мен туған жылдарын экранға шығаратын программа қарастырылады.

Program Esep;

Const n=3;          {топтағы студент саны}

Type student= record

Fio: string[20] ;

TJ: 1990..2000;          {туған жылдары}

Baga: record alg, geom., inf: 1..5    {алған бағалары}

End

End;

Var top : array [1..n] of student;       {студенттер саны}   

I,j:integer;                                           {цикл параметрлері}

Begin

 With s1, baga do begin

  For i:=1 to n do

Begin

Write(‘Студент аты жөнін енгіз:’ );

Readln (Fam);

Write (‘TJ,alg, geom.,inf:’);

Readln(TJ, alg, geom, inf);

Top [i]:=s1

End

End;

Readln;

Writeln (‘***********’) ;

Writeln (‘Үш алмаған студенттер тізімі:’);

Writeln (‘************’);

            For i:= 1 to n do

            With top[i], baga do

             If (alg>3) and (geom>3) and (inf>3) then

 Writeln (fam,’ ‘:4, ‘туған жылы’, ‘ ‘:2, TJ:4)

 End.

 

Нәтиже:

Студент аты жөнін енгіз:   Досанова

Tj, alg, geom., inf : 1979 5 5 5

Студент аты жөнін енгіз:  Жакипова

Tj, alg, geom., inf : 1978 4 3 4

Студент аты жөнін енгіз:   Құдайбергенова

Tj, alg, geom., inf : 1978 4 3 5

* * * * * * * * * * * * * * * * * * *

Үш алмаған студенттер тізімі:

* * * * * * * * * * * * * * * * * * *

Досанова         туған жылы      1979

 

6. Әдебиеттер:

1. Н.С. Заурбеков, Б.Ж.Жумажанов. Алгоритмдеу және программалау тілдері. Экономика баспасы. Алматы-2008.

2. Ж.Қ. Масанов, Б.А.Белгибаев, А.С.Бижанова, Қ.Қ.Мақұлов «Turbo Pascal». Алматы 2004.

3. Фаронов В.В.  Тurbo Pascal 7.0. Практика программирования.  Оку құралы.- М.: Нолидж, 2000ж. 416 бет.

Мәлімет сізге көмек берді ма

  Жарияланған-2014-06-02 21:07:04     Қаралды-3580

ҚҰСТАРҒА ҚАУЫРСЫН НЕ ҮШІН ҚАЖЕТ?

...

Құстар жылыну және ұшу үшін қауырсындарды қажет етеді...

ТОЛЫҒЫРАҚ »

МАГНИТТЕР НЕ ҮШІН ҚОЛДАНЫЛАДЫ?

...

Магниттерді қолданудың жүздеген әдістері бар.

ТОЛЫҒЫРАҚ »

МАГНИТ ДЕГЕНІМІЗ НЕ?

...

Қарапайым тілмен айтқанда, магнит темірді тарта алатын дене.

ТОЛЫҒЫРАҚ »

КРАН НЕ ҮШІН ҚОЛДАНЫЛАДЫ?

...

Кран (мұнара краны деп атау дұрысырақ болар еді) қазіргі кез келген құрылыс...

ТОЛЫҒЫРАҚ »

МАГНИТ ӨРІСІ ДЕГЕНІМІЗ НЕ?

...

Магнит өрісі – магниттің айналасындағы аймақ, оның шегінде магниттің сыртқы заттарға әсері сезіледі.

ТОЛЫҒЫРАҚ »

АРАЛАР ҚАНШАЛЫҚТЫ ПАЙДАЛЫ?

...

Аралардың адамдарды тамақтандырудағы негізгі үлесі олардың өндіретін балында емес.

ТОЛЫҒЫРАҚ »

ӘЛЕМДЕГІ ЕҢ ҮЛКЕН ІНЖУ-МАРЖАННЫҢ МӨЛШЕРІ ҚАНДАЙ?

...

Соңғы уақытқа дейін әлемдегі ең үлкен інжу 1934 жылы Оңтүстік Қытай теңізінде Филиппиннің Палаван аралында салмағы 300 кг-нан асатын меруерт табылған

ТОЛЫҒЫРАҚ »

КЛИМАТТЫҚ БЕЛДЕУЛЕР ҚАЛАЙ ЕРЕКШЕЛЕНЕДІ?

...

Жер шарының әртүрлі жерлерінде климат айтарлықтай ерекшеленеді.

ТОЛЫҒЫРАҚ »

ЕГИПЕТТЕ ПИРАМИДАЛАР ҚАЛАЙ САЛЫНДЫ?

...

Мысырдағы Гиза қаласындағы пирамидалар бес мың жыл бойы әлемде бар.

ТОЛЫҒЫРАҚ »