Sonsuz dövrlər

   Bildiyiniz kimi əgər bir proqram daxilində müəyyən əməliyyatları ardıcıl şəkildə təkrarlamaq lazım gəlirsə, biz dövr operatorlarına müraciət edirik. Dövr operatorları icrası təkrarlanan eyni proqram fraqmentlərini dəfələrlə yazmaqdan bizi azad edir. 

   Python proqramlaşdırma dilində iki növ dövr operatoru nəzərdə tutulmuşdur. Əgər təkrarlanmaların sayı daha öncədən məlumdursa, sayğaclı dövr (for), məlum deyilsə, şərtli dövr (while) operatorundan istifadə olunur. Hər iki dövr operatorunun istifadə qaydasını daha əvvəlki dərslərimizdə nəzərdən keçirmişdik. Bu dərsimizdə isə Sizə proqramlaşdırmada bəzi hallarda istifadə olunan sonsuz dövrlərdən bəhs edəcəyik.

   Proqramlaşdırmada sonsuz dövr əmrlər ardıcıllığının sonsuz sayda icrası deməkdir. Bu o zaman baş verir ki, dövrün icra şərti hər zaman doğru olur. Belə olan halda dövrün icrası yalnız kənar müdaxiləylə  dayandırılır. Python dilində sonsuz dövrləri qurmaq üçün bir qayda olaraq şərtli dövr (while) operatorundan istifadə olunur. Sonsuz dövrlər qeyri-ixtiyari (bilmədən) və ixtiyari (məqsədli) şəkildə alınır. Birinci hal proqramçının diqqətsizliyi və səhvi (məntiqi xəta) nəticəsində baş verir, kompüterin yaddaş resursu və hesablama gücünün israfına, proqramın “donmasına” gətirib çıxarır.

   Aşağıdakı nümunəyə nəzər yetirək:

i = 1
while i < 10:
    print(i)

   Bu proqramda proqramçı dövrün gövdəsində i dəyişəninin qiymətini artırmağı (i = i + 1) unutduğu üçün dövrün şərti hər zaman ödənilir və nəticədə sonsuz dövr alınır.

Aşağıdakı digər nümunədə isə məqsədsiz şəkildə sonsuz sayda “Python” sətri ekrana çıxarılır:

while True:
    print("Python")

Sonsuz dövrləri ixtiyari olaraq (məqsədli şəkildə) tərtib etmək faydalı (bəzi hallarda isə zəruri) ola bilər. Bunun üçün çıxış şərtləri düzgün verilməli, məhsuldarlığın aşağı düşməsinə imkan verilməməli və dövrün məqsədsiz şəkildə sonsuz davam etməsinin qarşısı alınmalıdır. Sonsuz dövrlər oyunlarda, server proseslərində, hadisə əsaslı proqramlarda və s. geniş tətbiq edilir.

Aşağıdakı nümunədə sonsuz dövr alqoritmi məqsədyönlü və faydalı şəkildə istifadə olunur:

MAX_ATTEMPTS = 3

correct_password = "secret123"
attempts = 0

while True:
    password = input("Parolu daxil edin: ")
    attempts += 1

    if password == correct_password:
        print("Giriş uğurlu oldu!")
        break

    if attempts >= MAX_ATTEMPTS:
        print("Çoxlu uğursuz cəhd.")
        break
    else:
        print(f"Yanlış parol. {MAX_ATTEMPTS - attempts} cəhdiniz qaldı.")

Bu proqramda sonsuz dövr qurulur. Dövr daxilində istifadəçidən parolu daxil etməsi istənilir. Parol düzgün daxil edildikdə break operatoru vasitəsilə dövr dayandırılır. Parol 3 dəfə yanlış daxil edildikdə də dövrdən yenə break operatoru vasitəsilə çıxılır.

“Sonsuz dövrlər” üçün bir şərh

Şərh üçün bağlıdır.