Merhaba arkadaslar bazen while kullandigimiz zaman belirli bir döngü sayisindan sonra ekranda donma ve yavaslama olabiliyor, bunun icin su sekilde kademeli while kullanimini sizlerle paylasiyrum.
İki adet örnek kod paylasiminda bulunacagim.
1- Normal Döngü
2- Kademeli Döngü
Her iki kodu deneyin ve aradaki farki siz de goreceksiniz.
----------------------------------------------------------------------------
Kod: Kodu kopyalamak için üzerine çift tıklayın!
alias normal-dongu {
if !$window(@pen) { window -e @pen }
clear @pen
var %toplam_doner_sayisi 15000
var %hep_doner 1
while (%hep_doner <= %toplam_doner_sayisi) {
echo @pen %hep_doner
inc %hep_doner
}
}
-----------------------------------------------------------------------------
Yukaridaki kodda /normal-dongu komutu uyguladiginizda 2500 den sonra kasmaya ekran donmaya baslayacaktir.
-
Asagidaki kodda ise /kademeli-dongu komutu uygulandiginda herhangi bir donma veya yavaslama olmayacaktir.
Burada dikkat edilmesi gereken yer %kritik_doner_kademesi dir
Yazacaginiz kodda kasmaya basladigi sayiyi buraya yazabilirsiniz ve bunu kendiniz icin ayarlayabilirsiniz. Buradaki mantik şudur, degiskenler sabit olarak setlenir ve belirlii bir degere geldikten sonra ayni alias uzerinden timer ile calistirilir, degerler sabit kalacagi icin kod isleyisine devam eder ve sona yaklastiginda degerler sifirlanir ve timer durdurulur.
Saygilar. [jeun]
Kod: Kodu kopyalamak için üzerine çift tıklayın!
alias kademeli-dongu {
if !$window(@pen) { window -e @pen }
if (!%hep_doner) { set -eu30 %hep_doner 1 | clear @pen }
if (!%toplam_doner_sayisi) { set -eu30 %toplam_doner_sayisi 15000 }
if (!%kritik_doner_kademesi) { set -eu30 %kritik_doner_kademesi 2000 }
if (!%doner_kademesi) { set -eu30 %doner_kademesi 1 }
while (%hep_doner <= %toplam_doner_sayisi) {
if ($calc(%doner_kademesi * %kritik_doner_kademesi) == %hep_doner) {
inc %doner_kademesi | .timerdongu -m 1 50 kademeli-dongu | goto git
}
echo @pen %hep_doner
inc %hep_doner
}
if (%hep_doner >= %toplam_doner_sayisi) {
.timerdongu off | unset %hep_doner | unset %toplam_doner_sayisi | unset %doner_kademesi | unset %kritik_doner_kademesi
}
:git
}