Pawn Dili İfade ve Döngüler - Bölüm : 2
Gönderilme zamanı: Çrş Haz 12, 2019 10:53 pm
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.
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 :
Sunucudaki tüm oyuncular arasından isminde a geçenleri uyutmak istediğimizi düşünelim.
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
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 :
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