Profili Göster

ActionScript 3.0 : Döngüler (Loops)

Muttalip TULGAR Tarih: 22/08/2008 Yorum: 0 adet

Okunma : 284 Tutanlar: Bu yazıyı 2 kişi tuttu.

ActionScript 3.0 :Döngüler (Loops)

Döngüler, belirli bir kod bloğu içindeki değişken veya değerleri tekrarlamak için kullanılırlar. Bir olayın birden fazla gerçekleşmesi isteniyorsa bu konuda döngüler iyi bir seçenektir.
ActionScript 3.0’da farklı tekrarlamalar için kullanılar döngüler şunlardır:

1) for

2) for..in

3) for each..in

4) while

5) do..while

1) "for" Döngüsü:

"for" döngüsü programlamada en çok kullanılan döngülerden biridir. Bir değişken veya değeri, birden fazla tekrarlamak için kullanılır. Bir "for" döngü yapısında şu dört ifadenin belirtilmesi gerekmektedir:

a) değişkenin alacağı ilk değer b) değişkenin test edileceği koşul c) değişkenin değişme şekli (artma, azalma) d) döngü içinde hangi işin yapılacağı

MMİstanbul


var i:int;
for (i=0; i<5; i++) {
    trace(i);
}

//0
//1
//2
//3
//4

Bu örnekte "i" int değişkenin ilk değeri 0 olarak belirtilmiştir. "i" nin son değerinin de 5’ten küçük olması koşulu aranmaktadır. "i++" ifadesi ile "i" nin, birer birer arttırılacağı belirtilmektedir. Döngü, "i" nin 0,1,2,3 ve 4 değerlerini alana kadar devam edecektir. Döngü gerçekleşip "i" her değer alışında ise, "trace (i)" komut satırı yürütülecektir. Döngü bittiğinde ise, program akışı { } bloklarından yani döngüden çıkacaktır.

2) "for..in" Döngüsü:

"for..in" döngüsü, dizi elemanları veya bir nesnenin (object) özelliklerini öğrenmede kullanılan bir döngü şeklidir.


for (değişken in nesne) {
yapılacak iş;
}

var gunler:Array= ["pazar","salı","cuma"];
for (var i:String in gunler){
    trace(gunler[i]);
}
//pazar
//salı
//Cuma

"gunler" adında oluşturulan dizi nesnesinin, üç tane dizi elemanı vardır. "gunler" nesnesinin tüm özellikleri, "i" değişkenine atanacaktır. Dolayısıyla döngü, nesnenin tüm özellikleri değişkene atanana kadar devam edecektir.


var kisisel_bilgi:Object = {ad:"Ali",soyad:"Taş", yas:19, sehir:"İzmir"}; 
for (var ozellik in kisisel_bilgi) { 
    trace("kisisel_bilgi."+ozellik+" = "+kisisel_bilgi[ozellik]); 
} 
/* Sonuç:
kisisel_bilgi.sehir = İzmir
kisisel_bilgi.yas = 19
kisisel_bilgi.ad = Ali
kisisel_bilgi.soyad = Taş
*/

"kisiselbilgi" adlı nesne, "ad", "soyad","yas" ve "sehir" özelliklerine sahip olmakla beraber bu her özellik içinde bir değer atanmıştır. "ad" özelliğinin "Ali" değeri, "soyad" özelliğinin "Taş" değeri, "yas" özelliğinin "19" değeri ve "sehir" özelliğinin "İzmir" değeri vardır. "for..in" döngüsü, "kisiselbilgi" nesnesinin tüm özelliklerini, "ozellik" değişkenine atayana kadar döngüyü sürdürüyor.

"for..in" döngüsünde nesne özellikleri değişkene atanırken belirli bir sıra olmaksızın, özellikler rasgele değişkene atanır.

3) "for each..in" Döngüsü:

"for each..in" döngüsü, özellikle XML veya XMLList nesnelerindeki etiketler (tag) arasındaki değerleri öğrenmekte ve bu değerleri tekrarlamakta kullanılan döngülerdir.


var isim_liste:XML = 
        <liste>
            <isim>Yıldız</isim>
            <isim>Tarık</isim>
            <isim>Ahmet</isim>
        </liste>;
for each (var i in isim_liste.isim) {
    trace(i);
}

/* Sonuç:
Yıldız
Tarık
Ahmet
*/

"isim_liste" adlı XML nesnesinin "isim" etiketleri içindeki değerleri "i" değişkenine atanıyor.

"for each..in" döngüsü, "for..in" döngüsü gibi nesnenin özelliklerini değil, nesnenin özellik değerlerini döngüye sokuyor. Kapalı sınıflardan (sealed class) türetilmiş bir nesnenin özellikleri, "for each..in" döngüsü ile döngü içine sokulamaz.

4) "while" Döngüsü:

"while" döngülerde koşul sağlandığı sürece döngü devam eder. Yalnız, "while" döngülerinde sonsuz döngülerin olmaması için koşul yapısına ve artış miktarına dikkat etmek gerekir.


while (koşul) { 
    // yapılacak iş
}

Koşul gerçekleşirse Boolean olarak "true" değeri üretilir ve { } blokları arasındaki komutlar yürütülür. Eğer koşul gerçekleşmezse, program akışı "while" döngüsünden çıkar.


var i:Number = 0; 
while (i < 11) { 
    trace(i); 
    i += 5; 
}
/* Sonuç:
0 
5
10
*/

"i" adlı sayısal değişkenin ilk değeri 0’dır. "i" değeri 11’den küçük olduğu sürece trace(i) komut satırı çalıştırıp i+=5 ifadesiyle de "i" değişkenin değeri 5 artırılacaktır. "i" nin ilk değeri 0 olduğu için, while (i < 11) koşulu sağlanıp { } blokları arasındaki trace(i) komut satırı yürütülüp sonuç olarak 0 çıktısı alınacaktır. Sonrasında, 0 olan "i" değeri i += 5 komut satırı ile 5 artırılacak ve döngü tekrar while (i < 11) komut satırına dönecektir. Artık "i" değişkeninin değeri 5 ve 11’den küçük olduğu içinde koşul sağlanacak ve yine { } blokları arasındaki trace(i) satıra çalıştırılarak sonuç 5 olarak alınacaktır. Döngü içinde "i" değeri i += 5 komut satırı ile 5 artırılarak 10 değerine sahip olacaktır. Döngü yine başa, while (i < 11) komut satırına gidecek ve koşul sağlandığı için trace(i) satırı çalıştırıp sonuç olarak 10 değeri alınıp yine "i" değişkeni 5 artırılarak yeni "i" değeri 15 olacaktır. Döngü tekrar while (i < 11) komut satırına dönecektir. Ancak "i" değeri 15 olduğu için, i<11 koşulu gerçekleşmeyince "while" döngüsü { } blokları arasındaki komutları çalıştırmadan sona erecektir.

"while" döngüsünde koşul sağlandıkça, işlem döngünün içindedir. Koşul sağlanmazsa, işlem döngü dışına çıkar.

4) "do..while" Döngüsü:

"do..while" döngüsü önce yapılacak işi bir kez yerine getirir sonra döngünün koşulu sağlayıp sağlamadığını kontrol ederek yapılacak işi istenildiği kadar yapar.


do 
{
 yapılacak iş
 } 
while (koşul)

"do..while" döngüde, koşul kontrolü sonra yapıldığı için en az bir kez istenen iş yapılmaktadır. Hatta koşul kontrolü yanlışta olsa, o iş bir kez gerçekleşmiş olur.


var a:Number = 1; 
do { 
    trace(a); 
    a++; 
} 
while (a < 4); 
/* Sonuç: 
1 
2 
3
*/

Bu örnekte, "a" sayısal değişkeni ilk değer olarak 1’e sahiptir. "do..while" döngüsü içinde önce, do { } blokları arasındaki trace(a) işlemi yürütülmektedir. Sonuç 1 olarak alındıktan sonra "a" değeri, a++ ifadesiyle bir artırılıyor ve 2 olan "a" değeri, while (a < 4) satırında karşılaştırmaya tabii tutuluyor. Karşılaştırma doğru olduğu için döngü, do { } arasına yine dönüyor. trace(a) komut satırı ile sonuç 2 olarak alınıyor ve "a" değeri yine 1 artırılarak 3 oluyor. while (a < 4) karşılaştırması doğru olduğu için döngü yine başa dönüyor ve do { } blokları arasındaki trace(a) satırı yürütülerek sonuç 3 olarak alınıyor. Sonrasında, a++ ifadesiyle "a" değişkeni bir artırılarak 4 oluyor. Ancak bu sefer while (a < 4) karşılaştırması doğru olmadığı için döngü sona eriyor.

Döngü Kontrolleri: break ve continue

break: Program içinde, kullanıldığı satırdan itibaren döngünün sonlanmasını sağlar.


var i:int = 0;
while (true) {
    trace(i);
    if (i >= 2) {
        break;// döngüyü sonlandırır
    }
    i++;
}
/* Sonuçt:
0 
1 
2 
*/

"i" değişken değeri 2 olana kadar, trace(i) komut satırı ile 0,1ve 2 sonuçları alınacaktır. Bu sırada


if (i >= 2) {
        break;
    }

komut satırlarında "if" koşulu sağlanmadığı için "break" komutu çalıştırılmayacaktır.

Ne zamanki "i" değişkeni 2’ye eşit oldu o zaman, döngü if (i >= 2) komut satırının sağlanmasıyla "break" komut satırına geçilecek ve döngü sonlanacaktır.

continue: "continue" deyimi, döngü içinde kendinden sonra gelen satırları durdurarak döngünün tekrar kontrol edilmesini sağlamak için program akışını döngünün başladığı yere yönlendirir.


var i:int = 0; 
while (i < 4) { 
    if (i  == 2) { 
        i++; 
        continue; 
    } 
    trace(i); 
    i++; 
}
/* Sonuç:
0
1
3
*/

Yukarıdaki örnekte "i" değişkeni 4’ten küçük oluncaya kadar "while" döngüsüne sokuluyor. Ancak "i" değişkeni 2’ye eşit olduğu zaman "if" koşulu sağlandığı için "i" değişkenin değeri bir arttırılarak "continue" komut satırı çalıştırılacaktır. Fakat program akışı "continue" satırının altındaki kodları dikkate almadan döngünün başladığı yer olan "while (i < 4) " satırına yönlenecektir. Böyle olunca "i" değişkenin 2 değeri, trace(i) komut satırı ile sonuç olarak alınamayacaktır.

aç-kapa İçeriğin rss beslemesi kullanımda değil Yorumlar

İçeriğe kayıtlı yorum bulunmuyor. İlk yorumu siz buradan ekleyebilirsiniz.


aç-kapa Bu makale ile ilgili olabilecek yazılar

yeni üyelik | şifremi unuttum

aç-kapa Toplantı Kahraman ve need4code.com Projesi Connect Toplantısı

Kahraman ve need4code.com Projesi Connect Toplantısı

Selam arkadaslar, Programlama ile uğraşanların hayatlarını kolaylaştıracak desktop ve web tabanlı ortak iki proje ile ilgili 3. toplantımızı 3Aralık...
Kategori: Toplantı

aç-kapa Yarışma Fikir10000 Dijital Pazarlama Fikir Yarışması

Fikir10000 Dijital Pazarlama Fikir Yarışması

ADTECH tarafından düzenlenen Fikir10000 yarışmasına; dijital pazarlama ile ilgili size ait olan fikrinizle katılabilir ve 10.000 YTL’lik birinci...
Kategori: Yarışma

aç-kapa Yarışma 7Dx Demoscene Party

7Dx Demoscene Party

2002 yılından beri amatör bilgisayar kültürü ile ilgilenen insanları bir araya getirmeyi hedefleyen 7DX parti serisinin bu seneki ayağı olan 7D8 Demo ...
Kategori: Yarışma

aç-kapa Eğitim Türkiye'de İnternet Konferansı - Internet Teknolojileri Derneği -22-23 Aralık ODTÜ

Türkiye'de İnternet Konferansı - Internet Teknolojileri Derneği -22-23 Aralık ODTÜ

Etkin Katılım Çağrısı Türkiye’de Internet ile ilgili grupları biraraya getirerek İnternet’i tum boyutlarıyla tanıtmak, gelistirmek, tartı...
Kategori: Eğitim

aç-kapa Konferans Bilgi Güvenliği ve Kriptoloji Konferansı

Bilgi Güvenliği ve Kriptoloji Konferansı

Önemli Tarihler: Etkinlik Tarihi : 24-26 Aralık 2008 Son Bildiri Gönderme Tarihi : 20 Ekim 2008 Bildiri Kabul Tarihi Bildirimi :...
Kategori: Konferans

üyeler Son Kahramanlar...

stats Kimler Burada? web stats

Son 1 dakika içinde MMIstanbul' da 392 (1 kayıtlı, 391 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:

coldfusion mysql ubuntu
 
sponsor adobe istanbul