ҚАЙТАЛАНУ САНЫ БЕЛГІСІЗ ЦИКЛДЕР

Автор: Пользователь скрыл имя, 20 Ноября 2010 в 19:19, задача

Краткое описание

Есептерді шешу барысында бір түрлі әрекеттерді бірнеше рет қайталау қажеттілігі жиі кездеседі. Бұл әрекеттерді анықтайтын параметрлердің мәндері әр түрлі болады. Осындай әрекеттерді жүзеге асыратын алгоритмдер циклдік, ал әрекеттердің бірнеше рет қайталанатын тізбегі (циклдің денесі) циклдер деп аталады. Қайталану саны белгілі бір шартқа байланысты немесе алдын ала белгілі болады. Циклдерді пайдалану ықшам бағдарламалар көмегімен есептеулердің үлкен көлемдерін орындауға мүмкіндік береді.

Файлы: 1 файл

Информатика циклдик прграммаі.doc

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

    Есептерді шешу барысында бір  түрлі әрекеттерді бірнеше рет  қайталау қажеттілігі жиі кездеседі.  Бұл әрекеттерді анықтайтын  параметрлердің мәндері әр түрлі болады. Осындай әрекеттерді жүзеге асыратын алгоритмдер циклдік, ал әрекеттердің бірнеше рет қайталанатын тізбегі (циклдің денесі) циклдер деп аталады. Қайталану саны белгілі бір шартқа байланысты немесе алдын ала белгілі болады. Циклдерді пайдалану ықшам бағдарламалар көмегімен есептеулердің үлкен көлемдерін орындауға мүмкіндік береді. 
 

ҚАЙТАЛАНУ САНЫ БЕЛГІСІЗ ЦИКЛДЕР

    Циклді қанша рет қайталау керек екені кейде алдын-ала белгісіз болады, бірақ белгілі бір шарт қанағаттандырылса, онда ол цикл орындалуға тиіс.

    Іске асыру пішіндері:

QBASIC

    Циклдің шартты операторы:

WHILE шарт цикл денесі

WEND

DO WHILE немесе UNTIL цикл денесі

LOOP

DO цикл денесі

LOOP WHILE немесе UNTIL

Шарт  ақиқат болғанда цикл орындалады (WHILE) немесе жалған болғанда (UNTIL)

    1-мысал: 1, 3, 5,  … 15 сандарды екі еселеу дәрежелеу кестесін құру.

  

    Шешуі:

    Егер Х цикл айнымалысының басқарушысын (параметрді) алғашқы мәнінен – 1-ден соңгы мәніне – 15-ке дейін, Y=X2 формуласын пайдаланып, 2 қадаммен өзгертіп отырса, сандарды екі есе дәрежелеу кестесін құруға болады.

    Кестенің бірінші жолын құру  үшін мынадай әрекеттерді орындау қажет:

    1. X-ке алғашқы мәнін беру: Х=1

    2. Y-ті анықтау: Y=X2

    3. Пайда болған нәтижені шығару.

    Алгоритмнің одан әрі құрылуы  үшін қайталанатын әрекеттерді  ерекшелеу және егер сондай  әрекеттер бар болса, оларды  орындау үшін ұйымдастыру қажет. Берілген есепте қайталанатын әрекеттерге мыналар жатады:

    1. Y=X2 формуласы бойынша есептеу.

    2. Нәтижені шығару.

    3. Параметрдің келесі мәнін анықтау.

    Егер алғашқы мәні Х=1 болса, Х-тің алдыңғы мәнін қадам шамасына өзгерте отырып, Х-тің келесі мәндерін меншіктеу командасы арқылы алуға болады: Х=X+2.

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

    Егер Х 15-тен үлкейіп кетсе, циклді аяқтау керек, Х≤15 болса, цикл орындалуы керек.

    Циклдің дұрыс ұйымдастырылуы  үшін мыналар қажет:

    1. Параметрдің алғашқы мәнін беру.

    2. Циклдің аяқталу шартын тексеру.

    3. Циклдің жаңадан қайталануы алдында параметрді өзгерту. 

    Бағдарламасы:

    REM шаршылар кестесі

    DIM X, Y AS INTEGER

    X=1

    DO WHILE X<=15

    Y=X̂‌‍̂ 2

    PRINT X, Y

    X=X+2

    LOOP 

    Қызметші сөздер арасында цб (цикл басы) және цс (цикл соңы) - көрсетілген командалар сериясы (цикл денесі) берілген шарт сақталмағанша қанша рет орындалуы қажет болса, сонша рет орындалады. Егер шарт басынан бастап орындалмаса, серия бір рет те орындалмайды.

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

    Ең жиі кездесетін қателер:

   1. Циклдің аяқталуын тексеру шарты жоқ. Айтып өткеніміздей , бұл циклдің аяқталмай қалуына әкеледі.

    2. Циклдің жаңадан қайталануы алдында параметрді озгертетін команда жою (X=X+2). Бұл жағдай да циклдің аяқталмай қалуына әкеледі, бірақ алдыңғы қатеден өзгешелігі шаршылар кестесі шексіз басыла беретіндігінде, бұл жағдайда кестеде тек Х=1 ғана Y-тің мәндерінің есептеулері болады.

   3. Параметрдің алғашқы мәнін (X=1) қоятын команда қалып қалған. Келесі жолды орындағанда Х-ке мән берілмегендіктен, ЭЕМ Х айнымалысына 0 жазады, яғни Х=0 командасын орындайды. ЭЕМ экранында қате нәтиже - 0, 2, 4, .., 14 сандарды екі есе дәрежелеу кестесі пайда болады.

    2-мысал: 1, 3, 5, .., 15 сандар дәрежелерінің қосындысын есептейтін алгоритмнің бағдарламасын кұрыңыз.

    Шешуі:

     Қосындыны есептеу мынадай тізбекпен орындалады:

    1.Егер Х=1 болса, бірінші қосылғыш Y анықталады, S=S+Y командасы оны S қосындысының алдыңғы мәніне қосады. S-бастапқы мәні 0-ге тең болуы керек, бұл жағдайда циклдің бірінші орындалуынан кейін, S-тің мәні бірінші қосылғыштың мәніне тең болады.

    2. Параметр қадам шамасына өзгереді, келесі қосылғыштың мәні айқындалып, қосындының алдыңғы мәніне қосылады.

    3. X<=15 шарты орындалғанша бұл әрекеттер қайталана береді.

    Бағдарлама:

    REM шаршылар қосындысы

    DIM X, Y, S AS INTEGER

    X=1: S=0

    DO WHILE X<=15

    Y=X̂̂̂̂̂̂`2: S=S+Y: X=X+2

    LOOP

    PRINT «S=»; S

    3-мысал. 1, 3, 5, .., 15 сандар дәрежелерінің көбейтіндісін анықтайтын бағдарламаны Бейсик тілінде құрыңыз.

    Шешуі:

    1-әдіс

    REM дәрежелер көбейтіндісі

    DIM X, Y, P AS INTEGER

    X=1: P=1

    DO WHILE X<=15

    Y=X`2: P=P*Y: X=X+2

    LOOP

    PRINT «P=»; P

    2-әдіс

    REM дәрежелер көбейтіндісі

    DIM X, Y, P AS INTEGER

    X=1: P=1

    DO UNTIL, X>15

    Y=X`2: P=P*Y: X=X+2

    LOOP

    PRINT «P=»; P

   

    Бағдарлама құрылымы алдыңгы мысалдың бағдарламасына ұқсас.

    Циклді бірінші орындаудан соң  Р мәні бірінші қосымша көбейткішке тең болуы үшін Р=1 командасы алғашқыда Р ұяшығына 1 мәнін жазады.

    Циклдің денесі шарт ақиқат (егер WHILE түйінді сөзі қолданылса) немесе жалған (UNTIL түйінді сөзі қолданылса) болғанша орындала береді. Егер шарт алғашқыда орындалмаса, онда циклдің денесі бір рет те орындалмауы мүмкін.

    Кейде шартты бірінші тексеру  алдында цикл денесін ең болмағанда  бір рет орындау қажеттігі  туындайды. WHILE немесе UNTIL түйінді сөздері DO-дан кейін емес, LOOP-тан кейін келгенде, бұл үшін QBASIC-те DO операторы жазбасының басқа пішіні болады. Бұл жағдайда DO мен LOOP арасындағы циклдің денесі бірінші тексеру алдында ең болмағанда бір рет орындалады.

    4-мысал: Қосындыны есептеп шығару:

    22+23+24+25.

    Шешуі:

    Қосындыларды жинақтау командасы  мынадай:

    S:=S+ кезекті қосылғыш.

    Қосылғыштар бір-бірінен тек дәреже көрсеткішінің мәнімен ерекшеленеді. Егер Х айнымалысы енгізілсе, 2x формуласы бойынша әр қосылғышты анықтауға болады, онда Х 2-ден X5-ке дейін 1 қадаммен өзгереді. Олай болса, S былай анықталады: S:=S+2X

    REM формула бойынша есептеу

    DIM S, X AS INTEGER

    S=0: X=2

    WHILE X<=5

    S=S+2`X

    X=X+1

    WEND

    PRINT «S=»; S

    Орындау хаттамасы

    S=0;

    X=2

    2≤5? (иә)

    S=0+22=4

    X=2+1=3 

    3≤5? (иә)

    S=0+32=9

    X=3+1=4 

    4≤5?(иә)

    S=0+42=16

    X=4+1=5 

    5≤5? (иә)

    S=0+52=25

    X=5+1=6 

    6≤5 (жоқ)

    S=0 

     

                                           

     
 

 

Информация о работе ҚАЙТАЛАНУ САНЫ БЕЛГІСІЗ ЦИКЛДЕР