Ia9 -fesil-1: 9 qxd


Budaqlanma nədir və o, proqramlaşdırmada hansı operator vasitəsilə yerinə yetirilir?



Yüklə 0,93 Mb.
səhifə4/9
tarix08.10.2017
ölçüsü0,93 Mb.
#3833
növüDərs
1   2   3   4   5   6   7   8   9

Budaqlanma nədir və o, proqramlaşdırmada hansı operator vasitəsilə yerinə yetirilir?

  • Aşağıda göstərilmiş proqramın sətirlərinin yerlərini elə dəyişdirin ki, şərt operato-ru düzgün alınsın.

    b := a + 2 b := a - 2; if a > 2 then else

    1. Şərt operatoruna hansı şərti yazmaq lazımdır ki, proqramcdəyişəninəab dəyişənlərinin ən kiçiyinin qiymətini mənimsətsin?







    if ... then

    c := a else

    c := b;

    4. Aşağıdakı operator ekrana hansı məlumatı çıxaracaq?

    if 12 < 12 then

    WriteLn ('Kiçikdir') else

    WriteLn ('Kiçik deyil');





    DÖVRLƏR.

    WHILE, FOR REPEAT OPERATORLARI

    Məsələlərin həll alqoritmini qurarkən bəzən müəyyən komandalar ardıcıllığınıbir neçə dəfə dalbadal yerinə yetirmək lazım gəlir. Əlbəttə, həmin ardıcıllığı tələbolunan qədər yazmaq da olar. Ancaq bu yol çox da əlverişli deyil.

    Əgər komandaların və təkrarların sayı çox böyükdürsə, alqoritmin yazılışı çoxuzun alınar. Bundan başqa, bir çox alqoritmlərdə təkrarların sayı qabaqcadan məlumolmur və yalnız proqramın gedişi zamanı aydınlaşır. Bu problemi aradan qaldırmaqüçün xüsusi alqoritmik strukturdan - dövr, yaxud təkrardan istifadə olunur.

    Dövr yaratmaq üçün konstruksiyalar bütün proqramlaşdırma dillərində vardır.Dövr üç əsas hissədən ibarət olur:



      1. İnisiallaşdırmada dövr yerinə yetirilməyə hazırlanır.

      2. Dövrün gövdəsi təkrar-təkrar icra olunan operatorlar qrupudur.

      3. Sonluq şərti dövrün gövdəsinin icrasından qabaq yoxlanır və dövrün sona çat-masını yoxlamaq üçün ondan istifadə edilir.

    Sayğaclı dövr. Dövrün gövdəsinin neçə dəfə təkrarlanacağı qabaqcadanməlum olduqda dövr operatorunu yazmaq daha asan olur. Bu halda sayğaclıdövrdən istifadə olunur.

    for :=

    to do

    Sayğac, yaxud dövr dəyişəni xidməti dəyişəndir və o, dövrün yerinə yeti-rilməsi zamanı avtomatik dəyişilir. Dövrdə birinci operator (ona elə dövr opera-toru da deyirlər) dövrün sərhədlərini göstərir.







    Sayğaclı dövrün blok-sxemi

    Dövr aşağıdakı qaydada yerinə yetirilir:

    1. Dövrün sərhədləri ifadə şəklində verilmişsə, öncə həmin ifadələr

    hesablanır.



        1. Dövr dəyişəninə dövrün aşağı sərhədinin qiyməti mənimsədilir.

        2. Dövr dəyişəni dövrün yuxarı sərhədi ilə müqayisə olunur.

        3. Dövr dəyişəninin qiyməti yuxarı sərhəddən böyükdürsə,dövrün yerinə yetirilməsi kəsilir.

        4. Dövrün gövdəsi icra olunur.

        5. Dövr dəyişəninin cari qiymətinə 1 əlavə olunur.

        6. Dövrün icrası 3 bəndindən davam etdirilir.

    Tutaq ki, ilk on natural ədədin cəmini tapmaq lazımdır. Bunun üçün proqramfraqmentini aşağıdakı kimi yazmaq olar:

    S := 0;

    for I := 1 to 10 do

    S := S + I;

    Dövrdən kənarda olan birinci operatorSdəyişəninə başlanğıc qiyməti mənimsətməküçündür. Dövr operatorunun icrasından öncə çox zaman hazırlıq işləri aparılmalıdır.

    Sayğac rolunuIdəyişəni oynayır. Dövrün sərhədləri olan 1 və 10 ədədləri dövroperatorunda konstant kimi verilib. Əgər dövrün aşağı sərhədi onun yuxarı sərhədindənböyükdürsə, ondatoaçar sözünün əvəzinədowntoaçar sözündən istifadə olunur. Buhalda hər dəfə dövr icra olunduqda dövr dəyişəninin qiyməti 1 vahid azalır.

    Sayğaclı dövrün özəllikləri

    Sayğaclı dövr bir neçə özəlliyə malikdir. Dövrün sərhədləri ifadələr şəklində veril-mişsə, bu ifadələr dövrün inisiallaşdırılması anında hesablanır. Həmin ifadələrə daxilolan dəyişənlərin qiyməti dövrün içərisində dəyişsə belə, bu dövrün gövdəsinin neçədəfə yerinə yetirilməsinə təsir etmir.

    Dövrün sona çatması şərti dövrün gövdəsi birinci dəfə yerinə yetirilənədək yoxlanılır.Dövrün sərhədləri elə qiymətlər ola bilər ki, dövrün gövdəsi heç bir dəfə də yerinəyetirilməsin.



    Şərtli dövr. Şərtli dövrlər dövrün daha ümumi yazılış formasıdır. Belə dövrlərdənadətən dövrün təkrarlanmalarının sayı qabaqcadan məlum olmadıqda istifadə edilir.Şərtli dövrləri iki növə ayırırlar:

          1. Ön şərtli dövrlər,

          2. Son şərtli dövrlər.

    Ön şərtli dövr belə işləyir:

            1. Dövrün təkrarlanma şərti yoxlanılır.

            2. Dövrün təkrarlanma şərti ödənmirsə, onun icrası dayandırılır.

            3. Şərt ödənmirsə, dövrün gövdəsi yerinə yetirilir.

            4. Dövrün icrası 1 bəndindən davam etdirilir.

    Ön şərtli dövrün ümumi yazılış forması belədir:

    while<şərt> do

    ;

    | Ön şərtli dövrün gövdəsi heç bir dəfə də icra olunmaya bilər.

    Ön şərtli dövrdən istifadə etməklə ilk yüz natural ədədin kvadratları cəminihesablayan proqram fraqmentini belə yazmaq olar:



    S := 0; I := 1;

    while I <= 100 do begin



    S := S + I * I; I := I + 1; end;

    Son şərtli dövr belə işləyir:



              1. Dövrün gövdəsi yerinə yetirilir.

              2. Dövrün təkrarlanma şərti yoxlanır.

              3. Dövrün təkrarlanma şərti ödənmirsə, onun icrası dayandırılır.

              4. Şərt ödənirsə, dövrün icrası 1 bəndindən davam etdirilir.


    Son şərtli dövrün blok-sxemi




    Müxtəlif proqramlaşdırma dillərində dövrün sona çatdırılması üçün şərtinödənilməsi, yaxud ödənilməməsi tələb oluna bilər.

    Son şərtli dövr belə yazılır:

    repeat



    until<şərt>;

    Son şərtli dövrün gövdəsi ən azı bir dəfə yerinə yetirilir. Pascal dilində sonşərtli dövrün yerinə yetirilməsi şərt ödənildiyi zaman dayandırılır. Proqramçışərtin ifadəsinin qiymətini müəyyənləşdirən dəyişənləri nəzarətdə saxlamalıdırki, onlar dövrün gövdəsində dəyişilsin. Əgər dövrün şərti heç dəyişilməzsə, dövrsonsuz davam edə bilər.

    İlk yüz natural ədədin kvadratları cəmini hesablayan proqram fraqmentinirepeatoperatorunun köməyilə belə yazmaq olar:

    S := 0;

    I := 1;

    repeat



    S := S + I * I; I:= I + 1;

    until I > 100;

    Dövrdən çıxış. Bəzən proqramlarda çox mürəkkəb dövrlərdən istifadəolunur. Belə dövrün bir neçə sonaçatma şərti ola bilər. Bu dövrlərin yaradılmasınısadələşdirmək üçün müasir proqramlaşdırma dillərində dövrdən çıxma operatorunəzərdə tutulub. Dövrdən çıxma operatoru adətən dövrün içərisindəki şərt opera-torunun daxilində istifadə olunur. Bu operator yerinə yetirildikdə idarəetmə dərhaldövrdən sonrakı ilk operat ora ötürülür. Bir dövrün daxilində bir neçə dövrdənçıxma operatoru yerləşə bilər. Dövrdən çıxma operatoru aşağıdakı kimi yazılır:

    break;

    Aşağıdakı misalda klaviaturadan daxil edilən ədədlərin cəmi hesablanır. Daxiledilən ədəd mənfi olduqda, dövr kəsilir.

    S := 0;

    while True do begin



    Read(I);

    if I < 0 then break;



    S := S + I; end;

    Bu misalda "sonsuz" dövrdən istifadə olunub, çünki dövrün şərti həmişə doğrudur.Lakin dövrün daxilində çıxış operatoru olduğundan proqram "dövrə düşmür".

    Dövr hansı hissələrdən ibarətdir?


                1. Sayğaclı, ön şərtli və son şərtli dövrlər Pascal dilində hansı operatorla ifadəolunur?

                2. Sayğaclı dövrün yerinə yetirilməsini izah edin.



                3. Aşağıdakı operatorlar ardıcıllığının icrasından sonrakdəyişəninin qiymətinimüəyyənləşdirin.

    var i, k: Integer;

    k := 0;

    for i := 1 to 100 do

    if i mod 2=0 then

    k := k + 1;

                1. foroperatorundan istifadə etməklə ilk yüz natural ədədin kvadratları cəminihesablayan proqram yazın.

                2. Avtobus biletlərinin nömrələri altırəqəmlidir: 000000-dan 999999-dək. Əgər 1-ci,3-cü və 5-ci rəqəmlərin cəmi 2-ci, 4-cü və 6-cı rəqəmlərin cəminə bərabərdirsə,bilet "uğurlu" hesab olunur. Bütün "uğurlu" biletləri tapan və çap edən proqramyazın.

                3. Aşağıdakı operator nəyi yerinə yetirir?

    for Ch := 'A' to 'Z' do Write (Ch);



    MASSİVLƏR

    Proqramlarda tez-tez birtipli kəmiyyətlərdən istifadə olunur. Birtipli verilən-lərin nömrələnmiş ardıcıllığına massiv deyilir. Massivin bir adı olur və həmin admassivin bütün elementlərinə aid edilir. Massivin konkret elementini onun nöm-rəsinə görə seçmək olar. Həmin nömrəyə indeks deyilir.

    Elementlərinin sayı aşkar göstərilmiş massivə statik massiv deyilir. Bəzi pro-qramlaşdırma dillərində dinamik massivlərdən istifadə olunur. Belə massivinölçüsü proqramın icra müddətində dəyişilə bilər. Massiv elan olunan kimi kom-püterin yaddaşında onun bütün elementləri üçün yer ayrılır. Ona görə də dinamikmassivlər kompüterin yaddaşından daha səmərəli istifadə edir.

    Sadə dəyişənlərdən fərqli olaraq, massivlər bütün proqramlaşdırma dillərindəqabaqcadan təsvir (elan) olunmalıdır. Massivin təsvirində massivdə olan ele-mentlərin sayı, indekslərin mümkün diapazonu və hər elementin tipi göstərilməlidir.

    var a: array [1..10] of Integer;



    arrayaçar sözündən sonra kvadrat mötərizələrdə massiv indekslərinin ikinöqtə (..) ilə ayrılmış diapazonu göstərilir. Sonraofaçar sözü və massiv ele-mentlərinin tipi gəlir. Verilmiş misalda massiv 10 tam ədəddən ibarətdir.

    Massivin elementinə müraciət. Proqramda massivin elementinə mü-raciət etmək üçün onun adını və indeksini göstərmək lazımdır. Məsələn, aşağı-dakı operator massivin indeksi 7 olan elementinə indeksi 6 olan elementinin qiy-mətini mənimsədir.

    a[7] := a[6];

    Proqramlarda çox vaxt massiv bir tam kimi emal olunur. Eyni bir əməli ardıcılolaraq massivin bütün elementlərinə tətbiq etmək üçün sayğaclı dövrdən istifadəetmək olar. Bu halda massivin elementinə müraciət edəndə dövr dəyişənindənindeks kimi istifadə olunur. Məsələn, tutaq ki, b massivi 10 elementdən ibarətdir.Aşağıdakı dövr massivin elementlərinin qiymətini sıfra bərabər edir.

    for i := 1 to 10 do

    b[i] := 0;

    Belə bir məsələyə baxaq. Tutaq ki, n elementdən ibarət tam ədədlər massiviverilib və massivin ən kiçik elementini tapmaq tələb olunur. Proqramda ən kiçikelementimin, həmin elementin indeksini isəimindəyişəni ilə işarə etsək, ve-rilən məsələnin həlli üçün proqram fraqmentini aşağıdakı kimi yazmaq olar:



    imin := 1;

    min := a[imin];

    for i := 2 to n do

    if a[i] < min then begin

    min := a[i]; imin := i; end;

    WriteLn (min, ' ən kiçik element, ',

    imin, ' həmin elementin massivdə indeksidir.');

    İkiölçülü massivlər. Birindeksli massivə birölçülü massiv deyilir. Bir çoxməsələlər üçün belə massivlər yetərli olmur. Proqramlaşdırma dillərinin hamısın-da bir neçə indeksli çoxölçülü massivlər yaratmaq imkanı vardır. Məsələn, ikiöl-çülü massivə bir indeksi sütunun nömrəsini, o biri indeksi isə sətrin nömrəsinigöstərən cədvəl kimi baxmaq olar.

    İkiölçülü massivi elan etmək üçün onun hər iki indeksinin dəyişmə diapazo-nunu göstərmək lazımdır. Bu diapazonlar vergüllə ayrılır. Məsələn, şahmat tax-tasını təsvir edən tam ədədlər massivini belə elan etmək olar.


    var t: array [1..8, 1..8] of integer;

    Pascal dilində ikiölçülü massivə "massivlər massivi" kimi də baxmaq olar.Yuxarıdakı elanetmə tamamilə belə yazılışla ekvivalentdir:



    var t: array [1..8] of array [1..8] of integer;

    İkiölçülü massivin elementinə müraciət etmək üçün vergüllə ayırmaqla hər ikiindeksi göstərmək lazımdır. Pascal dilində hər iki indeksi ayrıca da göstərməkolar.

    Məsələn, şahmat taxtasının e4 xanasına uyğun olan massiv elementinə beləmüraciət etmək olar:

    t[5,4],

    yaxud


    t[5][4].

    İç-içə dövrlər. İkiölçülü massivi emal edərkən hər iki indeksin qiymətinivahid dövr sayğacı əsasında hesablamaqla bir dövrlə də keçinmək olar. Ancaq buhalda proqramı başa düşmək çətinləşir.

    Bir alqoritmi ikiölçülü massivin elementlərinə tətbiq etmək üçün adətən ikidövrdən istifadə edilir. Hər dövrün sayğacı uyğun indeks üzrə bütün mümkünqiymətləri alır. Bu zaman bütün massivi əhatə etmək üçün dövrlərdən biridigərinin içərisində yerləşməlidir. Belə dövrlərə iç-içə dövrlər deyilir. Məsələn,şahmat taxtasının bütün elementlərinə sıfır qiyməti mənimsətmək üçün dövrüaşağıdakı kimi qurmaq olar:



    for i := 1 to 8 do

    for j := 1 to 8 do

    t[i,j] := 0;

    Daxili dövr yerinə yetirilərkən xarici dövr sayğacının qiyməti sabit qalır.Sonra o, bir vahid dəyişir və daxili dövr tamamilə yenidən təkrarlanır. Proq-ramlaşdırmada iç-içə dövrlərdən istifadə təkcə massivlərlə işləmək üçün deyil,başqa işlərdə də çox əlverişli olur.



    Tutaq ki, n sətri və m sütunu olan ikiölçülü a massivi verilib. Həmin mas-sivdə, heç olmasa, bir mənfi elementin olub-olmamasını müəyyənləşdirən pro-qram fraqmentini son şərtli dövrdən istifadə etməklə (həmin dövrün iş prinsipiniyada salın!) aşağıdakı kimi yazmaq olar:

    i := 0; repeat

    j := 0; i := i + 1 repeat

    j := j + 1; until (j = m) or (a[i,j] < 0); until (i = n) or (a[i,j] < 0); if a[i,j] < 0 then

    WriteLn('Hə, mənfi element var!') else

    WriteLn('Mənfi element yoxdur!');

    1. Massiv nədir və o, Pascal dilində necə elan olunur?

    2. Birölçülü a massivində indekslərik-danm-dək olan elementlərin maksimumunuhesablayan proqram yazın. Tapılmış qiymətijdəyişəninə mənimsədin.

    3. Verilmiş tam ədədlər massivi 10 elementdən ibarətdir. Onların içərisində iki ədədbərabərdir. Həmin ədədlərin indeksini müəyyənləşdirən proqram yazın. Tapılmışqiymətləriijdəyişənlərinə mənimsədin.

    4. Yüklə 0,93 Mb.

      Dostları ilə paylaş:
  • 1   2   3   4   5   6   7   8   9




    Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
    rəhbərliyinə müraciət

        Ana səhifə