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);
}
Kodun çıktısı ise şu şekilde olacaktır :
- 0 1 2 3 4
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]);
}
(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);
}
- 0 1 2 4