Discord sunucumuz açılmıştır, hepinizi bekleriz

https://discord.gg/43gGDQe6tS

Pawn Dili İfade ve Döngüler - Bölüm : 2

Hazır fonksiyonlar, kütüphaneler, düzenleme programları/araçları/gereçleri, editörler kısacası geliştirme ortamı

Moderatör: Moderatörler

Kullanıcı avatarı

Konu Sahibi
amad
Mesajlar: 1809
Kayıt: Cmt Nis 30, 2016 2:46 pm
Konum: Batman
Clan İsmi: Ke$`h | Gaming
İletişim:

Pawn Dili İfade ve Döngüler - Bölüm : 2

Mesaj gönderen amad »

Serinin ilk bölümü olan "İfadeler" konusuna buradan ulaşabilirsiniz : gelistirme-arac-gerecler/pawn-dili-ifad ... 37067.html

BÖLÜM - 2 : For Döngüsü

For döngüsünü açıklamadan önce döngü kavramına bir açıklık getirmek istiyorum. Döngüler, programlamanın en olmazsa olmazlarındandır. Döngüler sayesinde aynı şeyi tekrar tekrar yazmaktansa olayın gerçekleşmesi için gereken koşulu belirtip gerisini sisteme bırakırız. Sistem de, koşulumuz sağlandığı sürece ilgili kod parçacıklarını tekrar tekrar çalıştırır ve bizi büyük bir işten kurtarır.

for döngüsü yapı itibariyle üç parametreden oluşmaktadır. Bu parametrelerin ilki başlangıç değeri, ikincisi döngünün devam edebilmesi için gerekli koşul ve üçüncüsü ise her adımda yapılacak işlemdir.

Kod: Tümünü seç

for(new i = 0; i<5; i++) {
	client_print(0,print_chat,"%d ",i);
}
Yukarıdaki kodun açıklaması: Bir i değişkeni oluştur ve 0 değerini ata. Eğer i 5'ten küçükse değeri ekrana yazdır. Son olarak i değerini bir arttır.
Kodun çıktısı ise şu şekilde olacaktır :
  • 0 1 2 3 4
Eklenti yazarken en çok for döngüsü kullandığımız yer, oyundaki belirli şartlara uyan oyuncuları bir dizide topladığımız satırlarda karşımıza çıkıyor. Örnek verecek olursak :

Sunucudaki tüm oyuncular arasından isminde a geçenleri uyutmak istediğimizi düşünelim.

Kod: Tümünü seç

new players[32]; // Oyuncuların id'lerinin tutulacağı dizi
new name[32]; // Oyuncunun isminin tutulacağı dizi
new oyuncuSayi;
get_players(players, oyuncuSayi, "a") // Bayrakla "a" belirtilen koşulun sağlandığı oyuncular ve sayıları ilgili değişkenlerde tutuldu.

/* Buna göre ilk oyuncuya ulaşmak için players[0], ikinci oyuncuya ulaşmak için players[1] 
yazmamız gerekecek. Yukarıdaki koşulu tüm oyuncuların (32 kişi) sağladığını varsayalım.
Tüm oyunculara işlem yapmak istesek players[0,1,2,3,4.....32]'e kadar tek tek yazmaktansa for döngüsü kullanıyoruz. */

for(new i;i<oyuncuSayi;i++) // Bu döngünün oyuncuSayi kadar tekrarlanmasını istiyoruz.
{
	get_user_name (players[i], name, 31); // Oyuncunun ismi name değişkenine aktarıldı
	if(contain(name,"a") != -1) // Eğer oyuncunun ismi "a" içeriyorsa (büyük-küçük harf duyarsız)
		uyu(players[i]); 
}
Yukarıdaki örnekte i değerimiz 0 dan başlayarak oyuncu sayısına kadar arttı. Bu sayede players[ i ], players[0,1,2,...31] olmuş oldu.

(i değişkeni 0 değerini nasıl alacak oldu derseniz, pawn dilinde new değişkeni 0 olarak ön tanımlı halde geliyor.)

Döngülerde karşımıza çıkabilecek iki komut daha vardır. Bunlardan ilki önceki derste de değindiğimiz "break", ikincisi ise "continue"dir.
Basit bir şekilde anlatacak olursak döngü içerisinde break komutu okunduğu anda kelimenin anlamı itibariyle döngü kırılır yani döngü olduğu yerde sonlanır.
Eğer continue okunursa döngünün o anki değeri için pass geçilir bir sonraki değerden devam eder. Örnek verecek olursak

Kod: Tümünü seç

for(new i = 0; i < 5; i++) {
	if(i == 3)
		continue;
	client_print(0,print_chat,"%d ",i);
}
Yukarıdaki kodda i, 0'dan 5'e kadar değer alır. 3 olduğu anda döngü bu adımı atlar 4'ten devam eder. Yani kodun çıktısı şu şekilde olacaktır :
  • 0 1 2 4
For döngüsü bu bölümde sonlanmıştır. Serinin son bölümü olacak diğer bölümde ise while ve do-while döngüleri anlatılacaktır.

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Taha Demirbaş
Mesajlar: 10424
Kayıt: Cum Tem 08, 2016 10:05 pm
Konum: Türkiye
İletişim:

Pawn Dili İfade ve Döngüler - Bölüm : 2

Mesaj gönderen Taha Demirbaş »

Şuraya ekleyeyim ;

Koşulda sınır değerininde döngüye dahil edilebilmesi için koşulda başlangıç ifadesinin sınır değer ile eşit olabileceğini belirtmeniz gerekir.

Örnek :

Kod: Tümünü seç

for(new i = 0; i<=5; i++) {
	client_print(0,print_chat,"%d ",i);
}

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

burakxd383
Mesajlar: 922
Kayıt: Pzt Şub 05, 2018 2:10 pm
Konum: Bursa
Server Ip/DNS: -
Clan İsmi: -
İletişim:

Pawn Dili İfade ve Döngüler - Bölüm : 2

Mesaj gönderen burakxd383 »

güzel

Link:
Linklerini gizle
Linki Kopyala
Cevapla