Bağlantılı Öğeler
Son Yorumlar
- En Kısa Yol Algoritması (10)
- Montaj hattı dengeleme (Konum Ağırlıklı Dengeleme Metodu) (3)
- PHP de Güvenlik Kodu Uygulaması (6)
- Goalunited İçin Saha Yerleşim Hesaplayıcı (12)
- Sıralama Algoritmaları (4)
- Bumerang Web Sitesi ve Blog Ödülleri Başlıyor! (1)
- Rubik Küp Çözümü (1)
- GoalUnited Rehberi (7)
Kimler Sitede
Şu anda 11 ziyaretçi çevrimiçiBağış

| Döngüler |
| Makale - Visual Basic | |||
| Yazar ugokhan | |||
| Pazar, 13 Mayıs 2007 17:43 | |||
|
Bilgisayar programlamanın en temel konularından biri de döngülerdir. For-next, Do-Loop, Do-While gibi çeşitli döngülerin örnekli anlatımları.
FOR - NEXT DÖNGÜSÜ :
Başlangıç ve bitiş değerleri arasında tekrarlanan işler yapılacağı zaman kullanılır. FOR-NEXT döngüsünde, döngü değerlerinin oluşması için bir "döngü değişkeni" kullanılır. Bu değişken, "başlangıç değeri"nden "bitiş değeri"ne kadar adım miktarınca artarak FOR ve NEXT satırları arasındaki kodları tekrarlar.
FOR SayacDegiskeni = Başlangıç Değeri TO Bitiş Değeri STEP Adım Miktarı
' Tekrarlanması İstenen İşlemler ... ... NEXT SayacDegiskeni Adım miktarı eğer 1 ise yazılmayabilir. Veya bu kısım yazılmamışsa adım miktarı 1 demektir. Aşağıdaki örnek 1'den 100'e kadar tüm sayıları ekrana yazmaktadır. Görüldüğü gibi STEP kısmı yazılmamıştır. Bunun anlamı sayi değişkeni "1'den 100'e kadar birer birer sayacak" demektir.
FOR sayi = 1 TO 100
PRINT sayi NEXT sayi Eğer 1'den 100'e kadar üçer üçer sayıp, bunu ekrana yazmak istersek,
FOR sayi = 1 TO 100 STEP 3
PRINT sayi NEXT sayi Bazen değerleri tersten de üretmek isteyebiliriz. Mesela 100'den geriye yedişer yedişer 20'ye kadar saymak isteyelim. Sayacın ters sayması için STEP ifadesindeki "adım miktarı"nın önüne (-) işareti koyarız. Eğer birer birer geriye saymak isteseydik. (-1) yazacaktık.
FOR sayi = 100 TO 20 STEP -7
PRINT sayi
NEXT sayi Döngüler içiçe de kullanılabilir. İç içe döngülerde dikkat edilmesi gereken yer, son açılan döngünün ilk olarak kapanması gerektiğidir. Aşağıdaki örnekte en son C döngüsü açıldığı için ilk olarak C döngüsü kapatılmıştır. Döngü şu şekilde çalışır. İlk önce A=1 olur. B döngüsüne geçilir. B=1 olur. C döngüsüne geçilir. C, 1'den 100'e kadar sayar. Bitirdiğinde B=2 olur. C tekrar 1'den 100'e kadar sayar B=3 olur. Bu şekilde B=100 olana kadar C saymaya devam eder. Son saymadan sonra A=2 olur. B=1 olarak tekrar C saymaya başlar. Falan filan... Yani en içteki döngü bir tur attığında bir dışarıdaki döngü 1 artar. Tıpkı Saat, Dakika ve Saniye de olduğu gibi.
FOR A = 1 TO 100
FOR B = 1 TO 100 FOR C = 1 TO 100 NEXT C NEXT B NEXT A Bir yukarıda tekerleme gibi, iç-içe döngüleri anlatmıştım. Şimdi bir Saat, Dakika, Saniye programı yapalım. Saniye 0'dan 59'a kadar sayar ve Dakika 1 artar. Bu şekilde Dakika 0'dan 59'a kadar saymış olur. Saat 1 artar. Saat 0'dan 23'e kadar sayar ve program biter.
FOR SAAT = 0 TO 23
FOR DAKİKA = 0 TO 59 FOR SANİYE = 0 TO 59 PRINT SAAT & ":" & DAKİKA & ":" & SANİYE NEXT SANİYE NEXT DAKİKA NEXT SAAT DO - LOOP - WHILE DÖNGÜSÜ :
Belirli bir koşula bağlı olarak, Döngü değişkeni, başlangıç ve bitiş değerleri olmayan döngülerdir. Döngünün başlaması veya durması için mantıksal ifadeler kullanılır. Mantıksal ifadeler WHILE ifadesi ile birlikte kullanılır.
Aşağıdaki kodda, şart ifadesi girişte kullanılmıştır. Önce kontrol yapılır. Mantıksal ifade DOĞRU ise döngü bir tur atar. Tekrar başa geldiğinde mantıksal ifade yine kontrol edilir. Bu şekilde mantıksal ifade YANLIŞ olana kadar döngü çalışır. YANLIŞ değeri alındığında, aradaki kodlar çalıştırılmadan direkt LOOP satırının altından devam edilir. Eğer mantıksal ifade de bir yanlışlık yaparsanız program sonsuz döngüye girebilir ve kilitlenebilir. Çıkış için ayrıca içeride IF-THEN-ELSE yapısı da kullanılabilir.
DO WHILE sayi > 10
... IF rakam < 3 THEN EXIT DO ... LOOP Aşağıdaki kodda ise şart ifadesi çıkışta kullanılmıştır. Döngü ilk önce 1 defa çalışır. Daha sonra çıkmak için kontrol yapar. Eğer mantıksal ifade DOĞRU ise tekrar başa dönülür ve bir tur daha atılır. Bu şekilde mantıksal ifade YANLIŞ olana kadar döngü çalışır. YANLIŞ değeri alındığında döngüden çıkılır.
DO
... IF rakam < 3 THEN EXIT DO ... LOOP WHILE sayi > 10 DO - LOOP - UNTIL DÖNGÜSÜ :
Yukarıdaki anlatımlarda DO-LOOP döngüleri WHILE ile kullanılmıştı. WHILE ifadesinden sonraki mantıksal sınama DOĞRU olduğunda döngüye devam ediliyordu. WHILE ifadesi yerine UNTIL ifadesi kullanılırsa mantıksal ifade YANLIŞ olduğunda döngüye devam edilir. Yani UNTIL ifadesi WHILE'ın tersi gibi davranır.
DO UNTIL sayi > 10
... IF rakam < 3 THEN EXIT DO ... LOOP veya
DO
... IF rakam < 3 THEN EXIT DO ... LOOP UNTIL sayi > 10
|
Yorumlar
Yıllardır programlama ile uğraşıyorum fakat burdaki bilgilerden istifade ettim.
Başarılarının devamını dilerim, emeğine sağlık.
Sonsuz döngüye niçin, nerede girdiğini anlamak için ve sonsuz döngülere girmemek için döngü içerisine için çok basit çıkış kontrolleri koyun. Mesela do-loop döngüsü için bir sayaçla saydırma yapın. 10000 olursa döngüyü bitirsin ve ekrana mesaj versin. Basittir ama etkilidir. Sonra programı derlerken bu kısımları kaldırırsınız.
Uzun süre çalışacak döngülerde işlemin neresinde olunduğunu gösteren basit göstergeler kullanın. Döngü takıldı mı devam mı ediyor görürsünüz. Bir label içerisine döngü değişkenini yazdırabilirsin iz.
Döngü değişkenine veya döngü koşuluna döngü içerisinde mümkün olduğunca müdahale etmemeye çalışın.
"Eğer mantıksal ifade de bir yanlışlık yaparsanız program sonsuz döngüye girebilir ve kilitlenebilir. " yazmışsınız.
Bazen döngü oluşturduğumda.Döngüde bir sorun oluyor ve sonsuz döngü oluşuyor.Böyle bir durumda dediğiniz gibi program kilitleniyor ve hata veriyor.
Bu durumda,Eğer projeyi kaydetmediysek bütün yazdığımız kodlar gidiyor ve baştan yazmak zorunda kalıyoruz.
Hatayı aldığımız zaman kodlarımızı nasıl kurtarabiliriz bu konu hakkında bilginiz var mı?
RSS beslemesi, bu iletideki yorumlar için.