• Forumbey.COM Türkçe içerikli genel forum sitesi ve paylaşım platformu olarak eğlenceli ve interaktif bir forum deneyim sunar.

    Foruma üye olmak için BURAYA TIKLAYINIZ

Ekran kasmaması için kademeli döngü oluşturma [while]

  • Konbuyu başlatan Konbuyu başlatan Arjun
  • Başlangıç tarihi Başlangıç tarihi

Arjun

Forum Üyesii
Katılım
25 Ara 2022
Mesajlar
20
Puanları
1
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:

Kod:
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:

Kod:
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
}

 

Genel Forum Sitesi

Forum Sitesi - Forumbey.COM

Forumbey.COM olarak, Türkçe forum sitesi denildiğinde akla gelen ilk adres olarak, geniş kapsamlı genel forum platformumuzda buluşuyoruz. Türkiye'nin en büyük Türkçe forum siteleri arasında yer almanın gururunu yaşıyoruz. Çeşitli konu başlıklarında aktif bir şekilde paylaşımların yapıldığı, her konuda interaktif ve bilgilendirici tartışmalara katılmak için bizi takip edin! ve bir dakikanızı ayırarak forum sitemize üye olun!

Forum Siteleri

Bilgi paylaştıkça çoğalır sloganı ile ilerleyen forum sitesi platformumuza, siz de üye olarak forum sitemizde açılan konulara katılabilir ve ilgi alanınıza uygun konular açarak siz de paylaşımda bulunabilirsiniz.