Üst Alt
  • Cevap yazabilmek için lütfen kayıt olun ya da giriş yapın. Foruma giriş yaparak veya kayıt olarak tüm özelliklere erişebilirsiniz.

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

DTDT doğrulanmış üyedir.

IFGT Teknik Ekibi
Teknik Sorumlu
Katılım
22 Ara 2025
Mesajlar
392
Çözümler
1
Tepkime puanı
121
Kaynak
48
Konum
Türkiye
Cinsiyet
Erkek
Takım
Beşiktaş
İlgi Alanı
XenForo
Konu Sahibi
İ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:
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.
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
}
 
Sitemiz bir forum sitesi olduğu için kullanıcılar her türlü görüşlerini önceden onay olmadan anında siteye yazabilmektedir. 5651 sayılı kanunun 8. maddesi ve T.C.K'nın 125. maddesine göre; ircforumlari.gen.tr olan forum sitemize eklenen içeriklerden, içeriği ekleyen kullanıcı sorumludur. Kullanıcı bazlı herhangi bir telif hakkından ircforumlari.gen.tr sitesi ve site yetkilileri sorumlu değildir. Telif hakkı kapsamında bulunan içerikler ile ilgili hukuksal bildirimleriniz için buradan iletişime geçebilirsiniz. ircforumlari.gen.tr yönetimi size en geç 48 saat içerisinde dönüş yapacaktır.
Geri