Циклды ұйымдастыру және матрицаны өңдеу

Автор работы: Пользователь скрыл имя, 23 Декабря 2011 в 06:17, курсовая работа

Описание

Қазақстан Республикасындағы білімді ақпараттандыру жүйесі ары қарай дамыту процесін оқып үйренудің ақпараттық ресурсы болып табылатын оқытуға арналған программалық құралдарды дайындамай жүзеге асыруы мүмкін емес. Олардың атқаратын қызметтерінің ауқымы кең, мысалы, бақылайтын және тест жүргізетін программалар, компьютерлік ойындар, ақпараттық жүйелер, оқыту орталары, электрондық оқулықтар және мультимедиалық программалар.

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

Курсовой Боранова 3-курс.doc

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

    Программада «индекс» және «индекс  типі» ұғымдарын шатастыруға  болмайды.

     Индекс типі жиымды сипаттағанда  пайдаланылса, индекс жиым элементтерін  белгілеу үшін операторлық бөлікте пайдаланылады. Индексті сипаттағанда қандай тип берілсе, индекс сол типте ғана болуы қажет.

     Индекс өрнек, айнымалы немесе  тұрақты түрінде берілуі мүмкін.

     Сондықтан да көбінесе жиымдарды  индексті айнымалылар деп те атайды. Ал индекссіз айнымалыларды жиымдардан ажырату үшін қарапайым айнымалылар деп атайды. Базалық типтегі айнымалыларға қандай амал қолданылса, жиым элементтеріне де сондай амал қолдануға болады. Мысалы, программаның операторлық бөлігінде жиым элементтері үшін мынадай өрнектер жазуға болады.

      A[3]:=C[4]+5;

      S:=S+X[K];

      P:=X[3*I+1];

     Паскаль тілінде жиымдарға =(тең), <>(тең емес) және меншіктеу  амалдарын қолдануға болады. Ал  жиым элементтері үшін олардың  типіне сәйкес кез келген амал  орындала береді.

     Мысалы, А және В жиымдары былайша  сипатталса:

     Var A,B:array[1..10] of real;

онда  пайдаланылған амалдар төмендегідей нәтиже береді.

Өрнек Нәтиже
A=B А жиымының әр элементінің  мәні В жиымының сәйкес элементтерінің мәніне тең болса, онда нәтиже true болады.
A<>B А жиымының ең аз дегенде бір элементінің мәні В жиымының сәйкес элементтерінің мәніне тең болмаса, онда нәтиже true болады.
A:=B В жиымының барлық элементтері А жиымының сәйкес элементтеріне  айналады.

    

        Жиым элементтерін өрнектегенде read,readln,write,writeln тәрізді операторлардың параметрі міндетін атқара отырып, циклдік операторларда пайдаланылады. немесе айнымалыларға басқа мән меншіктеуде операнд (аргумен) рөлін атқарады.

     Мысалы, А жиымы элементтерін  пернетақтадан енгізу үшін:

          for i:=1 to n do

              read(a[i]);

  А  жиымы элементтерін экранға шығару үшін:

          for i:=1 to n do

            write(a[i],’ ‘);

    операторлары қолданылады.

   Енді бірнеше мысал қарастырайық.

 

6-мысал. 13 бүтін саннан тұратын тізбектің (жиымның) арифметикалық ортасын және оның әр элементінің арифметикалық ортасынан ауытқуын табатын программа құрайық.

    Program Orta1;

    Var  x:array[1..13] of integer;

            i:integer; s:real;

    Begin  s:=0;

           Writeln(‘бос орын арқылы 13 сан енгізіңдер’);

              For i:=1 to 13 do  Begin

                   read(x[i]);

              S:=S+x[i]    end;

              S:=s/13;

          writeln(‘S=’,S:8:4);

        For i:=1 to 13 do writeln(s-x[i]:3:1)

    End.

7-мысал.  Нақты элементтерден тұратын сызықты жиым ( ) берілген. Осы жиымның ең кіші элементін және олардың индекстік нөмірін табу керек.

    Program Min1;

       const n1=20;

       type mas=array[1..n] of real;

    Var a:mas; m:real; n,I,k:integer;

      Begin 

        Write(‘elementter sani n-di (n<=20) engizinizder:’);

            Readln(n);

         write(‘1-element=’); Read(a[1]);

                 m:=a[1];  i:=1;

                        for k:=2 to n do

                 begin

                     Write(k,’-element=’);

                            readln(a[k]);

                          if a[k]<m then            

                         Begin

                             m:=a[k];  i:=k; 

                          end;

                 End;

         Writeln(‘min=’,m:6:2, ‘nomiri=’,i); 

      End.

8-мысал.  n(n<7) элементтен тұратын нақты сандар жиымының элементтерін өсуі бойынша реттеп орналастыру керек.

    Program Ret1;

        Var  a:array[1..7] of real;

                 k,I,j,n:integer;  m:real;

       Begin 

              Write (‘элементтер саны n-ді (n<7) енгізіңдер’);

                    Readln(n);

                       For k:=1 to n do

                            Begin  Write(k,’-elementti engizinder=’);

                                Readln(a[k]);

                           End;

                                Writeln(‘jium elementterinin osy reti boinsha ornalasui’)

                                    For k:=1 to n do 

                                       Begin

                                           i:=k; For j:=k+1 to n do

                                             if a[j]<a[i] then

                                                   begin

                                                        i:=j;  m:=a[k]; a[k]:=a[i];  a[i]:=m;

                                                    End;

                                                          Write(‘ ‘,a[k]:6:2);

                                          End;

               end.

Нәтижесі:

элементтер саны n-ді (n<7) енгізіңдер 4

1-elementti engizinder=7

2-elementti engizinder=1

3-elementti engizinder=9

4-elementti engizinder=4

jium elementterinin osy reti boinsha ornalasui

1.00     4.00    7.00     9.00

9-мысал.  Символдардың саны n( сөз тіркесі берілген. Сол сөз тіркесін енгізуді аяқтау enter-ді басу арқылы жүзеге асырылады. Енгізілген сөздегі символдар санын және 7-символдан бастап 15-символға дейін «+» белгісі қанша рет кездесетінін анықтау керек.

    Program simvoldar1;

                const plus=’+’;

                         k1=7; k2=15;

      Var SIM:array[1..100] of char;

                 I,k:integer;

       Begin   Writeln(‘Сөз тіркесінің символдарын енгізіңдер:’);

               I:=0; Readln;

                    While not EOLN DO

                           Begin  i:=i+1;

                                Read(Sim[i]);

                           End;

                              Writeln;

                                    Writeln(‘Tirkestegi simvoldar sani=’,i);

                                          k:=0;

                                               For i:=k1 to k2 do

                                                      if sim[i]=plus then k:=k+1;

                              Writeln(‘7-15 simvoldar arasindagi + tanbalar sani=’,k);

           End.

Нәтижесі:

Сөз тіркесінің символдарын енгізіңдер:

A+B1*(C+4+R_S+N)+Sqr(x)-1 (Enter)

Tirkestegi simvoldar sani =25;

7-15 simvoldar arasindagi + tanbalar sani=3.

2.8  Көпөлшемді жиымдар

        Егер жиым атауында бір ғана  индекс болса, онда ол жиымды  бірөлшемді, ал екі индекс болса – екіөлшемді және т.с.с. п индекс болса, п-өлшемді дейді. Бірөлшемді жиым вектор элементтері, ал екі өлшемді жиым матрица болып табылады.

     Осы айтылғандарға сәйкес жиым  элементтері былай белгіленеді: A[i], B[i,j], C[I,j,k] және т.с.с., көпөлшемді жиым элементтерін басқаша да белгілеуге болады, мысалы, B[i][j]. Мұндағы A[i] бірөлшемді жиымның і-ші элементі, оны математикада түрінде белгілейді,  B[I,j] –екіөлшемді жиымның (кестенің) і-жолы мен j-бағанасының қиылысында орналасқан элементінің белгіленуді; ал C[I,j,k] үшөлшемді жиым, оның элементін кеңістікте орналасқан нүкте координаталары (I,j,k) деп қарауға болады.

     Типтер бөлігінде екіөлшемді  жиым былай сипатталады:

TYPE atau=array [1..n,1..m] of <элементтер типі>;

      Айнымалылар бөлігінде осы типке  жататын жиымдар көрсетіледі.

  VAR     A,B:atau;

Мысалы, type  T=array[1..4,1..3] of real;

                  …

                  var         C,D:T;

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

TYPE atau=array[1..n] of array [1..m] of <элементтер типі>;

      мысалы,

type  T=array[1..4] of array[1..3] of real;

var   B:T;

     Мұнда алдымен жол индекстерінің  [1..n] типі, одан соң күрделі базалық тип көрсетілген:

array[1..m] of <элементтер типі>;

     Егер екіөлшемді жиым құратын  кезде базалық тип ретінде  басқа жиым алынса, онда сипаттау  бөлігі былай жазылады:

Type       vector=array[1..4] of integer;

massiv=array[1..4] of vector;

Var                                matr:massiv;

     Мұнда massiv және matr жиымдары екіөлшемді, яғни massiv[4,4], matr[4,4]- олар 4 жол және 4 бағанадан тұратын кесте элементтерін бейнелейді.

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

Type T1=array[1..M] of <элемент типі>;

T=array[1..N] of T1;

Var        B:T;   A:T1;

     Мұнда алдымен бағана типі Т1 көрсетіледі де, одан соң ол жолдың типі арқылы матрицаның типі Т көрсетіледі. Айнымалылар бөлігінде екіөлшемді жиым - В және бірөлшемді жиым – А  көрсетілген.

      Екіөлшемді жиым көбінесе айнымалы  бөлігінде былай сипаттау жиі  қолданылады:

Var B:array[1..N,1..M] of <элементтер типі>;

       Индекс типіне Real, integer стандартты  типтерден өзге типтердің барлығын пайдалануға болады, ал элементтер типі үшін Паскаль тіліндегі барлық типтерді қолдану мүмкіндігі бар. Мысалы,

     Type   den=(mo,tue,wed,th,fr,sat,sun);

         Rden=mo..fr;

         Zadan=array[1..25,rden] of integer;

   Var

         A:array[den] of array [1..25] of char;

         B:zadan;

         C:array[1..365] of zadan;

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

Информация о работе Циклды ұйымдастыру және матрицаны өңдеу