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

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

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

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

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

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

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

онда олардың мәні анықталмайды.

   Сырттан басқаруды берудің  мүмкін еместігіне мысал;

                                  .                

                                  .

                                  .

                   30. FOR   I  =  N + 2   TO  20

                   40. Y  (I) = X  (I) + 5

                   50. NEXT  I

                   60. A =A  -3

                   70. IF  A  I=15  THEN 40

                                  .

                                  .

                                  .

   

    Мұнда  70-операторымен басқаруда 40-қатардағы циклдің  ішкі параметірге беруге болмаиды.

    2. Кез келген уақытта цикілден шақыруға    рұқсат етіледі. Мысалы;

                                   .    

                                   .

                                   .                        

                     20. K = 1

                    30. FOR  I = 1  TO 10

                     40. K = K + 1

                     50. IF  K – 10  THEN 70

                     60. NEXT  I

   70. PRINT  K, I 

                                   .

                                   .

                                   .

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

    3. Циклдің санын қатаң сақтауы, бүтін болуы тиіс. 

                                   .

                                   .

                                   .

30. FOR  I  % = 1  TO  2 %

                                   .

                                   .

                                   .

                     90. NEXT  I %

                                   .

                                   .

                                   .

   Циклден шығаруда цикл программаның сонғы мәні сақталады.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пайдаланушы анықтайтын функция

 

    Есептер  шығару барысында элементар функциялар: sinx, cosx, tnx, ex және т.б. жиі қолданылады. Бұл функцияларды стандартты математикалық функциялар деп аталады, оларды программаның кез келген жерінде алгебралық өрнектерде қолдануға болады. Функциялардың аргументтері міндетті түрде жақшаға алынып жазылады.

  Кейде есеп шығаруда осы аталған  стандартты математикалық функцияларға ұқсамайтын алгебралық өрнектер кездесуі мүмкін. Мұндай жағдайда BASIC  программалау тілі пайдаланушыға өзінің функциясын құруға мүмкіндік береді. Мұндай функцияларды пайдаланушы анықтайтын функциялар немесе стандартты емес функциялар деп атайды. Оларды анықтау үшін, DEF (Define Function) операторы қолданылады. Оператордың жазылу пішімі:

            K DEF FN v(x1,x2,…,xN)=e

   Мұнда  k-қатар нөмірі; DEF (анықта)- оператордың  аты; FNV- пайдаланушы анықтайтын функцияның аты; (v- программалаушы таңдап алатын латын әріпі); х1, х2, …,хN-  формальды аргументтер тізімі; е- арифметикалық өрнек. Мысалы,

   30 DEF FN B(X,Y)=X^ 2+Y^2

   Стандартты  емес, яғни пайдаланушы анықтайтын  функцияның аты барлық уақытта үш латын әріпінен құралады, ал үшінші әріпті пайдаланушы өзі таңдайды. Тек қарапайым, (индекстері жоқ) үтірлерімен бөлінген айнымалылар (х1, х2, …,хN) ғана формальды аргументтер бола алады.

    Ереже  бойынша формальды аргументтер  е арифметикалық өрнегіне де енеді. Оған санымен бірге басқа да айнымалылар мен тұрақтылар да енеді. е арифметикалық өрнегі формальды аргументтермен және басқа да оған енетін шамалар мен қандай амалдарды, қандай реттілікпен, орындау керектігін көрсетеді. Сонымен, жоғарыда келтірілген мысалдарға 30-операторда қандай екендігі бәрі бір кейбір шаманың х-ты квадраттау және оған басқа формальды шама у-тің квадратын қосу арқылы анықталатындығы көрсетілген. Стандартты емес функция программада DEF операторымен сипатталғаннан соң, оның бұл программадан стандартты функцияларды пайдалануға, яғни BASIC тілінің әр түрлі операторларында пайдалана беруге болады.

    Мысалы, мына төмендегі функцияны есептейтін  программа құрайық.

                            

   Мұнда түрінде жазуға болатын формула көптеген рет пайдаланылған. Программа бұл формуланы DEF операторының көмегімен функция ретінде анықтау орынды. Сонда программаның түрі мынандай болады:

   10 REM

   20 DEF FNY (X)=3*X^2+COS (X)

   30 REM CD

   40 INPUT C,D

   50 REM Z

   60 Z=(FNY(C)-FNY(D))/FNY(C+D)^3

   70 PRINT “Z=”; Z

   80 END

    60-операторда көрсетілген FNY функциясының аргументтері шын аргументтер деп аталады. Олар 20-оператордағы формальды аргументтердің орындарына қойылатын нақты сандық мәндерді береді. Пайдаланушы анықтайтын, яғни стандартты емес функцияларды программалауда пайдаланғанда ескерілуге тиісті бір қатар ерекшеліктерді атап өтейік.

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

                           .

                                               .

                                               .

    20 DEF FNC (X,Y)=SQR (X^2+Y^2)

                           .

                                               .

                                               .

   50 DEF FND(X)=SIN (X)/X

                           .

                                               .

                                               .

   80 LET Z=Y+B*3

                           .

                                               .

                                               .

   

   FNC жєне FND функцияларын анықтаудағы х  аргументі өзара байланысты емес тәуелсіз шамалар. Компьютерде оларға оперативті жадтың әр түрлі ұялары бөлінеді. Дәл осы сияқты 20-оператордағы у формальды аргументінің программаның 80-операторындағы у айнымалысына ешқандай қатысы жоқ. Мыналар шын аргументтер бола алады: тұрақтылар, айнымалылар (жай және индексті), өрнектер. Орындалатын оператордың формуласында шын аргументті стандартты емес функцияның аты оперант ретінде кездескен кезде ғана стандартты емес функцияны пайдалану орындалады. Функцияны пайдалануда алдымен барлық шын аргументтердің мәндері есептеледі, одан әрі олар функцияның анықтамасындағы формальды аргументтердің сәйкес орындарына қойылады және функция анықтамасының оң жағына жазылған өрнектің мәні есептеледі. Осы мән функциясының мәні болып табылады.

    Пайдаланушының анықтайтын функциясы бүтін, нақты немесе символдық бола алады. Функцияның атынан соң % символы тұрса, онда ол бүтін деп, ал $ символы тұрса, онда ол символдық деп аталады. Бүтін санды функцияның мәні бүтін саны болып табылады, ал символдық функцияның мәні символдар қатары болады. Егер % және $ таңбалары жоқ болса, онда функция нақты функция болады, яғни нәтижесі нақты сан болады.

    Мына  төменде пайдаланушының анықтайтын  функциясын пайдаланудың мысалдары  келтірілген:

    20 DEF FNA % (X,Y,R%)=X*K% +Y*10*K%

    20 DEF DNB% (A$,L)=SWG (A$,I,L)+”A”

    20 DEF FNC (X)=SIN (X) /X

    М±нда:

    • FNA% функциясының мәні бүтін сан;
    • FNB$ функциясының мәні символдар қатары;
    • FNC функциясының мәні нақты сан болады.

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

   20 DEF FNB (X)=2*X/SQR (X)

   30 PRINT FNB (5,2)

орындалуының  нәтижесінде экранға аргументтерде  қате кеткендігі туралы хабар шығады. DEF операторы орындалмайтын оператор, сондықтан да барлық DEF операторларын басқа да орындалмайтын операторлармен бірге программаның басына орналастыруға болады. Ол тек программалық режімде ғана пайдаланылады:

Мысалдар келтірейік:

  • 20 DEF FNA (X)=АВS (SIN(X)

                                               .

                                               .

                                               .

      50 DEF FNB (X,Y)=FNA (X)+(CJS(Y)^2-1

    55 X=2.5

    60 Z=FNB (4.7124,3.I4I6)*EXP (X)

    70 PRINT Z

                                               .

                                               .

                                               .

    Бұл программа үзіндісі орындалғанда мына төмендегідей нәтиже алынады:

Z=(| sin 4.7124| + cos2 3.1416-1).e2.5= 12.1825

  • Программада мына:

  және 

екі функцияны анықтау керек және олардың мәні х=5 мәнінде есептелсін.

   10 DEF FNY (x) =LOG (x+SQP(x^2+1)

   20 DEF FNY =B^2 (((X-A)^2+B^2

   30 A=2: B=3

   40 X=5

   50 Y=FNY (X): F=FNF (X)

   60 PRINT X,Y,F

   70 END

    Бұл программада 30-қатарда А және В-ның мәндері анықталған, олай болмаған жағдайда f(x) функциясының мәні есептелінбейді. 40-қатарда х-тың мәні, ал 50-қатарда у және F-тің мәндері есептеледі.

 

 

 

 

 

 

Массивтер және оларды өңдеу.

Массив ұғымы

 

    BASIC тілінде бірыңғай шамаларды массивке біріктіруге болады. Жалпы аты бар бірыңғай элементтердің реттелген жиыны массив болып табылады. Ол математикада вектор ұғымына, ал мектептік алгоритмдік тілде сызықтық кестеге сәйкес келеді. Массивтің аты жай айнымалының атын құрғандағы ережелерге сүйеніп құрылады.

    Массивтің әрбір элементіне соңынан индексі келетін массивтің аты меншіктеледі. Сондыќтан да массив элементтерін индексті айырмалар деп те атайды.

    Ұйымдастыру тәсілдері бойынша BASIC тілінде бір өлшемді екі өлшемді және көп өлшемді массивтер пайдаланылады. Бір өлшемді массивтің элементі массивтегі элементтің реттік нөмірін анықтайтын бір индекспен көрсетіледі. Мысалы:

  • А2) –А массивінің екінші элементі;
  • В1(3) –массивінің үшінші элементі;
  • С(N)-C массивінің N-ші элементі дегенді білдіреді.

Осылайша, индекстер массивінің атынан соң жақша ішіне орналасады.

    Енді  екі өлшемді массивке алып  келетін мынадай есепті қарастырайық.

    Айталық, 11-мөлтек ауданда тұратын тұрғындар  саны және бір тұрғынға бөлінетін  шаршы метр жер жөнінде деректерді  өңдеу керек болсын. Өңдеу және кейбір сұрақтарға жауап алу мақсатында компьютерге деректерді енгізуді былай ұйымдастыруға болады. Мысалы, бір үйде қанша адам тұрады және 22 үй 3-пәтерде тұратын тұрғындарды кезекке қоюға бола ма? т.с.с. сұрақтарға жауап беру керек болсын.

    Бұл  есепті шешуде екі өлшемді  массивті пайдалану ыңғайлы. Біз  бірінші айнымалы ретінде үйдің  нөмірін, екінші айнымалы ретінде  пәтер нөмірін пайдаланамыз. Егер  ол құрылып қойылған болса,  онда біздің сұрақтарымыздың  жауабы ретінде А[22,3] мәні баспаға  шығарылады. Мұнда алғашқы индекс үй нөмірін, екіншісі пәтер нөмірін білдіреді. Ал егер А[22,3]=4 мәнін меншіктесе, онда бұл үйде 4 адам тұратын болғаны.

    Екі  өлшемді массивке математикада  матрица, алгоритмдік тілде төртбұрышты  кесте мысал бола алады.

    Сонымен, екі өлшемді массивтердің элементтері екі индекспен көрсетіледі, оның біріншісі қатардың нөмірін, ал екіншісі бағанның нөмірін анықтайды, екеуінің қиылысында массивтің сәйкес элементі орналасқан болады. Мысалы, А(0,0) екі өлшемді А массивінің нөлдік қатары мен нөлдік бағанына орналасқан элемент; В3(2,3) екі өлшемді В3 массивінің екінші қатары мен үшінші бағанына орналасқан элемент екендігін білдіреді. Екі өлшемді массивтерде индекстер үтірмен бөлінеді. BASIC тілінде индекстер нөлден бастап нөмірленеді.

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