1. sayfa (Toplam 1 sayfa)

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

Gönderilme zamanı: Çrş Haz 12, 2019 10:53 pm
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.

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

Gönderilme zamanı: Çrş Haz 12, 2019 11:18 pm
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);
}

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

Gönderilme zamanı: Çrş Haz 12, 2019 11:26 pm
gönderen burakxd383
güzel