IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   mIRC Scripting Dersleri (https://www.ircforumlari.net/mirc-scripting-dersleri/)
-   -   While döngüsü (https://www.ircforumlari.net/mirc-scripting-dersleri/20390-while-dongusu.html)

LeadeR 06 Temmuz 2006 02:00

While döngüsü
 
;###############
; Written by MephisTo#
;###############

While'ın anlamı türkçe'de de sık sık kullandığımız "iken"dir. Mesela lamerler derler ya hep "sen daha doğmamışken ben irc'deydim" derler hep, veya günlük hayattan bir örnek "sen uyuyorken ne oldu biliyor musun dün?". Öyle düşünün.

Mantığına gelince:

Önce bir variable oluşturuyoruz. Fakat işin sırrı "set" değil "var" kullanmak. Ve bu variable verdiğimiz bir değerden büyük, küçük veya o değere eşit olduğu sürece while xxxxx { kısmından sonrası tekrarlanıyor.

Örneğin bir belgeden tek tek satırları okuyan bir addon yapalım:

;alias ile bir komut oluşturuyoruz. Ve bu komut "dosya" oluyor. /dosya
;yazdığımızda çalışacak.

alias dosya {

;Bir variable oluşturduk. Fakat bu %x değeri sadece bu kod için geçerli. Bu
;kodun son } işaretine geldiğinde %x değeri kaybolacaktır. Kaybolmamasını
;istiyorsanız set kullanacaksınız var yerine. Bu bizim ilk okuyacağımız satır, yani
;doğal olarak 1 olacak.

var %x = 1

;Şimdi bu 1 sayısı belirleyeceğimiz dosyadaki toplam satır sayısına eşit olana
;kadar bize dosyayı okutmasını istiyoruz. Yani 1 den başlayıp (30 tane satır var
;diyelim) 30. satıra gelene kadar bu işlemin sürekli başa dönmesini (loop)
;istiyoruz. 2. variable'ımız da dosyadaki toplam satır sayısı olacak bu nedenle.

var %t = $lines(dosya.txt)

;Buradaki %t değeri de dosya.txt dosyasındaki toplam satır değeri. Yani 30.
;Şimdi gelelim while bölümüne.

while %x <= %t {

;%x değeri %t değerinden küçük veya eşit olduğu sürece, yani %x değeri 30
;olana kadar bu döngü sürecek demektir. Şimdi bu döngü süresince olacakları
;yazıyoruz.

echo -a $read(dosya.txt,%x)

;Dosya.txt dosyasındaki %x değerindeki sayı numaralı satırı (yani şu an 1, ilk
;satır) echo komutu ile aktif pencereye yazdırıyoruz.

inc %x

;Yazdırdıktan sonra inc komutu ile %x in değerini 1 arttırarak satırı kapatıyoruz
;ve böylece döngü tekrar while kısmına geliyor, ve %x numaralı satır tekrar
;echolanıyor.

}

;While döngüsü süresince yapılacak şeyler bu kadar. While döngüsünü
;kapatıyoruz.

}

;Şimdi de alias'ı kapattık.

Kodun tamamı şu şekilde oluyor:

Kod:

alias dosya {
  var %x = 1
  var %t = $lines(dosya.txt)
  while %x <= %t {
        echo -a $read(dosya.txt,%x)
        inc %x
  }
}

Dipnot:

1. inc ile değer 1 sayı arttırılır, dec ile değer bir sayı düşürülür.
2. $lines(asd.txt) identifier ı asd.txt dosyasındaki toplam satır sayısını verir.
3. echo kısmındaki -a aktif pencerede echolanacağını belirtir.
4. $read(asd.txt,1) identifier'ındaki 1 asd.txt doyasında okunmasını istediğiniz
satır numarasıdır.

Tamamiyle kendi bilgilerime dayanarak, tarafımdan yazılmıştır. Umarım işinize yarar.

Utku=>MephisTo 'ya teşekkürler

--------------------------------
--------------------------------


;#############
;Written by LeadeR#
;#############

While döngüsü scripting'in temelini olusturan ve öğrenilmeden hiçbirşeyin yapılamayağını gösterten bir bilgidir..

While nedir ? While iken demektir..

nasıl (if = eğer) demek ise bununda görevi farklıdır ve çok büyük önem taşır..

While kullanımında önemli olan bir nokta ise set değil var kullanmaktır..

Oncelikle bir variable belirlenir bu variable belirlenen bir değer'den eş¤¤ , büyük yada kücük olursa iken ( while ) 'den sonraki satırlar sürekli olarak işleve devam eder..

While kullanımı size en güzel ve en basit şekilde txt okutturarak göstertebilirim..

Bir tane oku.txt adında bir metin belgesi olusturalım ve icine bir kac yazı yazalım.. bu yazdıklarımızı aktif ekranda sıra ile okutturalım nasıl yaparız ?

Kod ;


alias oku {
var %i 1
while %i <= $lines(oku.txt) {
echo -a $read(oku.txt,%i)
inc %i
}
}


Açıklama ;

alias oku {
;Burada Komutumuzu olusturduk komutumuzun adı /oku
var %i 1
;Burada %i değerini 1 olarak gösterttik neden ? 1. satırdan itibaren okutturacağız..
while %i <= $lines(oku.txt) {
;Burada $lines(oku.txt) nedir ? $lines satır sayısını belirtir.. burada kullandığımız nedir ? while %i ( Yani setlediğimiz değer ) $lines(oku.txt) = oku.txt dosyasındaki satırların sayısından kücükse eş¤¤ olana kadar kısacası %i değeri dosyadaki satır sayısına eş¤¤ olana kadar
echo -a $read(oku.txt,%i)
;oku.txt 'deki bütün satırları aktif ekrana cıkart ve %i değeri ile eş¤¤ olana kadar devam et
inc %i
; burada inc kullanarak sürekli rakamı 1 arttırtarak işlemi sürdürüyoruz..
}
; acılan parantezi kapat
}
; kodu sonlandır

***************************

Daha kolay olması için bir örnek daha vermek istiyorum..
Simdi bir kanalda bütün herkese mesaj göndermek istiyorsunuz nasıl olacak ?

Kod ;


alias kmsg {
var %c 1
while %c <= $nick(#,0) {
msg $nick(#,%c) selam
inc %c
}
}


Acıklama ;

alias kmsg {
;Burada komutumuzu oluşturduk komut /kmsg
var %c 1
; burada değer verdik ( verdiğimiz değer = 1 )
while %c <= $nick(#,0) {

; burada $nick(#,0) demek = Kanaldaki nicklerin sayısı ) demektir.. %c değeri $nick(#,0) yani kanaldaki nick'lerin sayısına kücük veya eş-it olana kadar
msg $nick(#,%c) Selam
;Kanaldaki nicklere Selam mesajını gönder neden $nick(#,%c) burada %c kullandık , değeri kontrol ettirtmek ve işlemi sürdürtmek için..
inc %c
;burada değeri yukardaki örnekteki gibi 1 artırtarak işlemi sürdürtüyoruz yani %c = 1 'di ve biz 1. nick'ten itibaren msg'i arttırıyorduk kanaldaki herkese attırtmak için inc ile bir arttırttık ve döngüyü tekrarlamasını sağladık..
}
;parantez kapat
}

;kodu sonlandır

Bilgilendirme

Değer yükseltme : inc
Değer kücültme : dec
Satır Sayısı : $lines


Bu arada %i , %c vs vs.. bunlar değişkendir , yalnızca kullanmıs olduğunuz alias'larda gecerlidir sabit değildir istediğiniz sekilde değer olusturabilirsiniz..
Örn : var %s 1
gibi..


----------------------------------------------------------------------

düzenlenmiştir , kolay gelsin iyi çalışmalar

CraCX 25 Ekim 2006 09:47

Yanıt: While döngüsü
 
inc değeri bir arttırıyor dediniz yani inc olmasaydı sadece 1. nicke mi msg gidecekti? anladım sanırım ama emin olmak için soruyorum.

Utku 25 Ekim 2006 19:45

Yanıt: While döngüsü
 
Alıntı:

CraCX Nickli Üyeden Alıntı
inc değeri bir arttırıyor dediniz yani inc olmasaydı sadece 1. nicke mi msg gidecekti? anladım sanırım ama emin olmak için soruyorum.

Kod:

alias kmsg {
var %c 1
while %c <= $nick(#,0) {
  msg $nick(#,%c) selam
  inc %c
}
}

Dediğin gibi sadece 1. nicke mesaj atıcaktı. Ayrıca %c değeri inc komutu ile hiç arttırılmadığı için kanaldaki nick sayısını geçemeyecek, böylece while döngüsü hiç bitmeyecek, mIRC donacaktı.

DontpaniC 23 Mayıs 2007 04:42

Yanıt: While döngüsü
 
% , <= , var BunLar Ne işe Yarar? :S

IceR 23 Mayıs 2007 13:52

Cevap: Yanıt: While döngüsü
 
Alıntı:

DontpaniC Nickli Üyeden Alıntı
% , <= , var BunLar Ne işe Yarar? :S

Kardeş ya dalga geçiyosun yada hiç kod yazmadın neyse açıklayayım:)
% veriables degerlerinin başında kullanılır
x <= y x degeri y degerinden küçük veya eşitse demektir
var sadece yazıldıgı kod için geçerli veriablestir.kod bittiginde artık çalışmayacaktır.kaybolmasını istemiyorsan set kullanmalısın.

Swq 03 Mart 2011 10:36

Cevap: While döngüsü
 
While dongusune sleep(3) gibi bir bekleme suresi koymak istiyorum... IRC'de bu mumkun mu? Yani dongunun her tekrarinda sure koymak istiyorum nasil yapabilirim?

avdet 14 Nisan 2011 04:37

Cevap: While döngüsü
 
çok açık çok anlaşılır elinize sağlık

----------

Alıntı:

Swq Nickli Üyeden Alıntı (Mesaj 1040699471)
While dongusune sleep(3) gibi bir bekleme suresi koymak istiyorum... IRC'de bu mumkun mu? Yani dongunun her tekrarinda sure koymak istiyorum nasil yapabilirim?

Kod:

alias avdet {
  var %a = 1
  while $chan(%a) {
    .timer 1 %a echo 4 -at $v1
    inc %a
  }
}

1'er saniye aralıklarla çalıştırır while'yi ama mesela diyelim ki 2, 4, 6, 8, ... n'e kadar işlem alacaksın yani ikinin katları ile o zaman timer'de %a yerine $calc(%a * 2) yazarsan elde edersin istediğin şeyi.

IrCbaStarD 03 Mayıs 2015 10:47

Cevap: While döngüsü
 
@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] ne cok calisiyorsun sen böle. En sonunda continueda anlattin bakalim daha ne var :D

Toprak 03 Mayıs 2015 11:05

Cevap: While döngüsü
 
Adam senin gibi yatmıyor kanka :D


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 12:02.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk