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ğı
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.
İçeriğe kayıtlı yorum bulunmuyor. İlk yorumu siz buradan ekleyebilirsiniz.
Makale
Etkinlikler
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ı
Kimler Burada? 
Son 1 dakika içinde MMIstanbul' da 392 (1 kayıtlı, 391 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:
MMIstanbul Blog'undan
Neler Yapılabilir?
Yeni bir portal, 30 civarında online / offline etkinlik, seminer vb rağmen MMIstanbul sanıyoruz ki halen hakettiği ilgiyi göremedi. " ...
500 Hatası Hakkında!
Reklam, MMIstanbul ve Yeni Projeler (Durumumuz Bu Tarzında)
Ne Nedir Kampanyası Başlıyor!
Çok Merak Edenler için; MMIstanbul Geliştirme Ekibi ve Çalışma Ortamımız








