Алгоритмдер және оның қасиеттері

Автор: Пользователь скрыл имя, 26 Февраля 2013 в 18:26, лекция

Описание работы

Егер сіз берілген есепті шешу үшін қандай да бір программалау тілінде программа жазғыңыз келсе, онда алдымен есепті шешудің алгоритмін құруыңыз керек. Алгоритм – математикадағы ең бір іргелі ұғымдардың бірі. Алгоритм сөзі ІХ ғасырда өмір сүрген, адамдардың квадрат теңдеулерді жүйелей құрып оны шеше білуге үйреткен ұлы математик Әл- Хорезмидің атының латынша жазылуы algorithmi сөзінен алынған. Осылайша алгоритм ұғымы математикада ертеден қолданыла бастағанымен, математикалық теорианың объектісі ретінде кейбір проблемаларды зерттеуге байланысты ХХ ғасырдың 30-шы жылдарында зерттеле бастады.

Работа содержит 1 файл

Алгоритм және оның қасиеттері2.doc

— 702.50 Кб (Скачать)

          •

          •

          •

160 FOR І=1 TO 5

170 PRINT A(I)

180 NEXT I

          •

          •

          •

Бұл жағдайда А массиві элементтерінің мәндері баған түрінде баспаға шығарылады. 170 – оператор шығарылатын сандар үшін мынадай:

   170 PRINT “A(“;I;”)=”;A(I) мәтінмен толықтыру шығарылған нәтижені түсінуді жақсартады:

   A(1)=-7

   A(2)=6.3

   A(3)=5

     •

     •

     •

 

 А массивінің элементтерін қатар түрінде де баспаға шығаруға болады. Ол үшін 170 – қатардағы PRINT операторын нүктелі үтірмен аяқтау керек.

Қатынас жасау талап етілетін массив элементтерінің индекстерінің мәндерін есептейтін формуланы құру массивтің жеке элементтері жұмыс істеудің басқа маңызды тәсілі болып табылады.

    Мысалы, А массивінің барлық жұп элементтеріне 4-ке тең сандық мән меншіктеу талап етілсін.

    А массивін хабарлағаннан соң және оның мәндерін компьютер жадына ендіргеннен кейін программаның мынадай үзіндісі пайдаланылуы мүмкін:

         •

         •

         •

70 FOR І=1 TO 2

80 А (2*І)=4

90 NEXT I

         •

         •

         •

   80 – оператордағы индексті есептеуші формула А массивінің тек жұп элементтерімен ғана қатынас жасауға мүмкіндік береді.

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

 

 

Массивтерді өңдеудің типтік

процедуралары

 

Массивтермен жұмыс істеу процедуралары әр түрлі және көптеген жағдайларда компьютерде шығарылатын есептердің арнайы ерекшеліктерімен анықталады. Бірақ әр түрлі көп есептердің және оларды шешу үшін пайдаланылатын алгоритмдердің ішінен массивтерді өңдеудің типтік тәсілдерінің және алгоритмдерінің белгілі жиынын бөліп алуға болады.

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

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

 

 

 

Массив элементтерінің қосындысын есептеу

 

     К элементі бар А массивінің элементтерінің қосындысын есептеу талап етілсін, яғни

                                                           К

                                             S=Σ А(І) 

                                                         1=1 

 

Анықтау керек.                      

      Қосындыны есептеу  алгоритмін нәтижесі өсіп отыратын  қосындыны 

жинау принципі бойынша құрамыз.  S қосындының алғашқы мәнін анықтаймыз. Әрине алғашқы кезде S=0 болады. Оған массивтің А(І)-бірінші элементін  қосамыз және қосындының жаңа мәні S=S+A(1)-ді есептеп шығарамыз. Оның сандық жағынан А (1) элементтің мәнін  тең екендігін көру қиын емес. Келесі қадамда алынған қосындыға А(2) элементін мына түрде S=S+A( 2)=(0+A(1))+A(2) қосып А массивінің алғашқы екі элементінің қосындысын аламыз.

    Әрбір І-ші қадамда  массивтің жаңа элементін мына  S=S+A(1) пішінде қоса отырып, К қадамнан соң ізделініп отырған қосындыны аламыз.

    Ұсынылған осы процедура  S=S+A(1) шамасын есептеуді К рет  қайталанатын цикл түрінде қосындыны  жинауды ұтымды ұйымдастыруға  мүмкіндік береді.

    S қосындысын есептеу  алгоритімнің блок-схемасын мына түрге беруге болады.

 

 

 

             

    Математика алгоритм S=A(1)+A(2)+A(3)+ …+A(K) формуласы бойынша тікелей  есептеуді, есептеудің К-қадамы  қайталанатын процедурасымен алмастырылады. 

 

  S=(…(((0+A(1))+A(2))+A(3))+…+A(K))

 

1-қадам   

                2-қадам

                

                 •       3-қадам

                 •

                 •

                                      К-қадам

 

 

 

 

        Программа қосындыны жинаудың К-қадамды процедурасын К рет қайталанатын цикл түрінде ұйымдастыру ыңғайлы болады.

    Программаның түрі мынадай болады:

  

  • INPUT “Массивтің өлшемін ендір K=’’; K
  • DIM A(K)

30  FORI=1 T O K

40  INPUT A(1)

50 NEXT I

60  S=0

70 FORI=1 T O K

80  S=S+A(1)

90  NEXT I

   100  PRINT  ’’S = ’’; S

   110  END

Мұнда, 60 – оператор  S қосындының бастапқы мәнін нөлге айналдырады, ал оны есептеу 70-90 – операторлардың тұратын циклде жүзеге асырылады.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Массив элементтерінің көбейтітдісін есептеу

 

А массив элементтерін мына түрде:

     К

P=∏  А(I)

    I=1

   Массив элементтерінің көбейтіндісін есептеу принцпі жоғарыда қарастырылған массив элементтерінің қосындысын есептеуге ұқсас.

Көбейтіндінің ақтық мәні P=P x  A (I) формуласы бойынша есептелетін дербес көбейтінділерді K-рет еселіп жинаудан соң анықталады.

    P көбейтіндісінің алғашқы мәні ретінде Р=1 тандап алу керек, өткені ол нәтижесінің сандақ мәніне әсерін тигізбейді. Бұдан соң бірінші қадамда Р=P*A (1)=1*A(1),екінші кадамға P=P*A(2)=A(1)*A(2), үінші қадамға Р=P*A(3)=A(1)*А(2)*А(3), ең соңында К-қадамда Р=P*A(1)*А(2)*...*А(К-1)*А(К) есептеледі.

     Бұл алгоритмді жүзеге асырушы программа үзіндісі мына төменде келтірілген:

  •      
  •  
  •    

60 Р=1

70 FOR I=1 TO K

80 P=P*A(I)

90 NTXT I

100 PRINT "P=";P

110 END

 

Берілген шартты қанағаттандыратын массив

элементтерін санын анықтау

 

     К элементтен тұратын А массивінің қанша элементі берілген шартты қанағаттандыратындығын анықтау талап етілсін.

      Нақты болу үшін бұл шарттың түрі А(1)>L болсын.

      Берілген шартты қанағаттандыратын массив элементтерінің санын есепке алу үшін N айнымалысын ендірейік. N-нің мәнін есепке алуды А массивінің әрбір элементіне ретімен қатынас жасау және А(I)>L шартының орындалуын тексеру кезінде жүзеге асыруға болады. Шарт орындалған жағыдайда N-нің мәнін бір бірлікке арттыру керек, яғни N=N+1-ді есептеуге массивтің келесі элементін (егер массив аяқталмаған болса) талдауға өтеміз.Бұл шарт орындалмаған жағыдайда массивтің келесі элементіне қатынас жасауды ұйымдастыруға өте керек.

       Массив элементтерін талдаудың бұл процедурасын блок-схема  түріне көрсетуге болады.

     


 

    Бұл процедураның А  массивтің ендіру және хабарлау  операторлары жоқ мына программа  жүзеге асырылады.

          60 N=O

          70 FOR I=1 TO K

          80 IF A(I)>L THEN N=N+1

          90 NEXT I

          100 PRINT "N="; N

          110 END

Бірнеше белгілі массивтер  бойынша 

жаңа массив алу

 

    Алгоритмнің бұл түрін  жүзеге асыру үшін өлшемдерді  бірдей А(I) және В(I), (I=1,2,...,К) массивтер  бойынша С(I), (I=1,2,....,К) массивтің элементтерін алуға арналған қарапайым есепті қарастырамыз. С(I) массивінің элементтері мына формуламен анықталады: С (I)=A(I)+B(I)

    Есепті шешу алгоритмі  А(I)және В(I) массивтерінің       элементтерін I бойынша 1-ден К-ға дейін өзгеретін цикл арқылы алып, барлық С(I)=A(I)+B(I) массивін есептеуге келіп тіреледі. Сонда бұл есепті шешетін программаның түрі мынадай болады:

 

10 INPUT"K=";K

20 DIM A(K),B(K),C(K)

30 FOR I=1 TO K

40 INPUT A(I),B(I)

50 NEXT I

60 FOR I=1 TO K

70 C(I)=A(I)+B(I)

80 PRINT C (I)

90 NEXT I

100 END

 

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

60-тан 90-ға дейінгі операторлар С массивінің элементтерін ретімен монитрр экранына шығаруды ұйымдастырады.

80-операторды массивті есептейтін циклге қосу С массивін баспаға шығаруға арналған арнайы циклді ұйымдастырудан құтқарады.

 

 

 

 

Массив элементтерін терістеу

  

     К элементтен тұратын А массив элементерінің жазылу ретін керісінше ауыстыру қажет.

        Бұл  есепті шешу үшін бастапқы массив элементтерінң  бірін транзит ретінде сақтаушы қосымша айнымалыны ендіру талап етіледі. Бұл айнымалыны G әріпімен таңбалайық.

       Алдымен бірінші және К – элементтердің орындарын өзара алмастыру керек. Ол үшін А (І) элементінің мәнін G(С=А(І)) айнымалысына, содан соң К – элементінің мәнін А(І)=А(К) бірінші элементке, одан кейін бірінші элементтің мәнін G айнымалысынан К- элементке А(К) =G меншіктейміз. Массивтің ортасына жеткенше А(І) және А(К-І+1) элементтердің қалған жұптарымен дәл осыған ұқсас әрекеттер жасаймыз. Алмастырылуға тиісті соңғы элементтер, егер К жұп сан болса А (К/2) және А(К /2), ал егер К жұп сан болса, онда А ([K/2]) және A([K/2]+2) болады. [K/2] операциясы К/2 бөліндінің нәтижесінен бүтін санды алуды бейнелейді. BASIC тілінде бұл үшін INT функциясын пайдалануға болады.

        Осылайша, программада  әрқайсында массив элементтерін  терістейтін [K/2] қадамнан тұратын  цикл ұйымдастыру керек. 

        Мына төмендегі программа жоғарыда айтылғандарды жүзеге асырады.

    

         10 INPUT «К=»;К

         20 DIM A (K)

         30 FOR I=1 TO K

         40 INPUT A(I)

         50 NEXT I

         60 M= INT (K/2)

         70 FOM I=1 TO M

         80 G=A(I)

         90 A(I)=A(K-I+1)

         100 A(K-I+10=G

         110 NEXT I

         120 FOR I = 1 TO K

         130 PRINT A(I)  
         140 NTXT I  
         150 END

 

Массив элементінің және онын индексінің

ең үлкенін (ең кішісін) іздеу

   

        К саннан тұратын А массивінің ең үлкен элементін және оның индексін іздеу үшін екі қосымша айнымалы ендіруге тура келеді.

  • Бірінші М массив элементінің ағымдағы ең үлкен мәнін сақтау үшін;
  • Екіншісі N ағымдағы ең үлкен мәннің индексін сақтау үшін;

  Бұл есептің шешеімі А массивінің әрбір элементін М – нің ағымдағв ең үлкен мәнімен бірінен соң бірін ретімен салыстыру арқылы табылады. Егер А (І) элементінің мәні М –нің мәнінен үлкен болса, онда М ретінде осы элементтің               

М=А(І) мәні қабылданады, ал N айнымалысы оның N=І индексінменшіктейді. Осы жоғарыда айтылған жағдайға қарама – қарсы жағдайда, яғни басқаша айтқанда әзірше    І<  К болса, онда массивтің келесі кезектегі элементін қарастыруға өту жүзеге асырылады.

        Мұнда тағы М және N бастапқы мәндерін анықтау талап етіледі.

        Егер массив элементінің бастапқы ең үлкен мәні ретін – де оның М = А(1),N=1 бірінші элементін  алсақ және онымен екінші элементтен бастап массивтің қалған элементтерін циклді түрде салыстырсақ ол өзін-өзі ақтайды.

        

       Бұ.л алгоритм мына программамен жүзеге асырылады:

   10 INPUT “K=”:K

   20 DIM A(K)

   30 FOR I= 1 TO K

   40 INPUT A(I)

   50 NTXT I

   60 M= A(1):N=1

   70 FOR I =2 TO K

   80 IF M < A(I) THEN M= A(I):N=1

   90 NTXT I

   100 PRINT “M=’:M: “N=”:N

   110 END

 

 

      Сонымен, бұл есепті шешу алгоритмінің блок – схемасы мына төменде көрсетілген.

                                                               

     М=A(1)                        



      N=1                 

Информация о работе Алгоритмдер және оның қасиеттері