Yayınlama: 2000
Güncelleme: 11 Haziran 2021
Bir kod bloğunun belirli sayıda veya şarta bağlı sayıda tekrar edilmesine döngü
deniliyor. Döngü sayesinde kod tekrarından kaçınmış oluruz. Döngü sayısı belli
değil ve döngüden çıkmak için uygun şart yoksa sonsuz döngü denilen bir
durum oluşur.
Program sonsuz döngüye uğradığında ya da döngünün herhangi aşamasında
programı duraklatmak için klavyeden CTRL+PAUSE
tuşlarına basılır. (DOSBOX kullananlar: CTRL+SCROLL LOCK)
Döngüyü kırdığımızda kod editörü ekranı gelir ve programın kırıldığı
satırın yazısı beyaz renkli olarak gösterilir.
F5 ile ya da menüden Run/Continue ile program, çalışmaya
kaldığı yerden devam eder.
Çalışmayı baştan başlatmak için menüden Run/Restart. Adım adım
ilerletmek için F8
GOTO
Kullanımı:GOTO {etiket | satır_no}
Program akışını istenilen satıra ya da etikete yönlendirmek
için kullanılır. Bir döngü komutu değildir ancak döngü oluşturabilir.
Örnek 1:
10: GOTO 10 'Sonsuz döngüÖrnek 2:
DIM A AS INTEGER basla: A = A + 1 PRINT A; IF A = 32767 THEN A = 0 GOTO baslaYukarıdaki kodlar çalıştırıldığında sonsuz döngü oluşturur. Aşağıdaki şekilde değişiklik yaparsak döngüyü kontrol altına almış oluruz.
Örnek 3:
basla: A = A + 1 IF A>20 THEN GOTO bitis ' bitis: satırına git ' GOTO kullanılmazsa da olur. ' IF A>20 THEN bitis ' Alternatif kod satırı ' IF A>20 THEN END PRINT A GOTO basla 'basla: satırına dön bitis: ENDÖrnek 4:
'GOTO döngüsü ile 1 - 40 arası çift sayıları yazdır CLS basla: a = a + 2 PRINT a; IF a = 40 THEN GOTO son ELSE GOTO basla son: END
PROBLEM 1 : GOTO döngüsü ile 1 den
30 a kadar olan çift sayıların karelerini ekrana yazan bir program
yazınız.
FOR ... NEXT
Kod bloğunun belirli sayıda tekrar etmesi için kullanılır. Blok sonu NEXT ile belirtilir.
Kullanımı:
FOR sayacdegiskeni = baslangicsayisi TO bitissayisi [STEP artismiktari] .. .. NEXT sayacdegiskeniÖrnek 1:
FOR N = 1 TO 25 PRINT N NEXT N1 den 25 e kadar olan sayıları yazacaktır. Her döngüde N değişkeninin değeri 1 artacaktır. Döngü tamamlandığında N'in son değeri bellekte tutulur.
Eğer ilk satırı
FOR N = 1 TO 25 STEP 4olarak yazacak olursak.
N nin ilk değeri 1 olacak sonra her seferinde üzerine 4 eklenerek devam edecektir.
FOR N = 25 TO 1 STEP -1yazılacak olursa 25 den 1 e doğru N nin değeri her seferinde 1 azaltılır.
NEXT in arkasına değişkeni yazmak şart değildir ama okunurluğu kolaylaştırmak için yazmakta fayda vardır.
İç içe FOR NEXT döngüleri de kullanılabilir. Bu durumda döngülerin birbirini kesmemesi gerekir.
Örnek 2:
FOR N = 1 TO 10 FOR M = 1 TO 4 PRINT N * M, NEXT M PRINT NEXT NFOR döngüsünden çıkma gereği olursa EXIT FOR ile çıkılabilir.
Örnek 3:
FOR n = 1 TO 100 PRINT n; IF SQR(n) = 9 THEN EXIT FOR NEXTÖrnek 4:
CLS CONST SutunSys = 11 DIM A(SutunSys, SutunSys) FOR M = 1 TO SutunSys A(M, 1) = 1 A(M, M) = 1 NEXT FOR M = 3 TO SutunSys FOR N = 2 TO M - 1 A(M, N) = A(M - 1, N - 1) + A(M - 1, N) NEXT NEXT BaslSatiri = 13 FOR M = 1 TO SutunSys Sutun = 6 * M Satir = BaslSatiri FOR N = 1 TO M LOCATE Satir, Sutun PRINT A(M, N) Satir = Satir + 2 NEXT PRINT BaslSatiri = BaslSatiri - 1 NEXT
Örnek 5:
' Yıldızlarla piramit y = 5 'Piramit yüksekliği FOR i = 1 TO y PRINT SPACE$(y - i); STRING$(2 * i - 1, "*") NEXT
Örnek 6:
'Yıldızlarla elmas ' ©2020 Mesut Akcan ' mesutakcan.blogspot.com CLS y = 10 'Piramit yüksekliği FOR i = 1 TO y PRINT SPACE$(y - i); STRING$(2 * i - 1, "*") NEXT FOR i = y - 1 TO 1 STEP -1 PRINT SPACE$(y - i); STRING$(2 * i - 1, "*") NEXT
Örnek 7:
'FOR-NEXT döngüsü ile 1 - 40 arası çift sayıları yazdır CLS FOR n = 1 TO 40 IF n MOD 2 = 0 THEN PRINT n; NEXT
PROBLEM 2 : Problem 1 i FOR ... NEXT
döngüsüyle yapın
Örnek 1:
EXIT DO ile döngüden çıkmak:
DO ... LOOP
DO, yap; LOOP, döngü manasındadır.
DO ile LOOP arasındaki kodlar şart belirtilmezse sonsuz döngü oluşturur.
DO: LOOP 'sonsuz döngüÖrnek 2:
DO PRINT A A = A +1 LOOPBu kodlar da sonsuz döngü oluşturacaktır. Döngüyü kontrol altına almak veya döngüden çıkmak için çeşitli yollar var.
EXIT DO ile döngüden çıkmak:
DO IF A > 40 THEN EXIT DO 'A 40 dan büyük olduğunda döngüden çık PRINT A A = A +1 LOOPWHILE kullanarak döngüyü kontrol altına almak:
WHILE, Türkçedeki -iken eki manasındadır. WHILE ile belirtilen şart
DOĞRU'yken(-iken) kodlar yürütülür.
Örnek 1:
CLS DO WHILE A < 40 ' A, 40 dan küçük-İKEN(while) döngüye devam PRINT A A = A + 1 LOOPÖrnek 2:
CLS DO PRINT A A = A + 1 LOOP WHILE A < 40 ' A, 40 dan küçük İKEN(while) döngüye devamYukarıdaki iki programı denediğinizde hiçbir fark göremeyeceksiniz.
Şimdi CLS den sonra A = 45 kodunu ekleyip deneyin ve farkı anlamaya çalışın.
Eğer WHILE ı LOOP un yanına koyarsak döngüde şart aranmaksızın en az 1 kere döner.
DO nun yanına konulursa döngü başlamadan şart kontrol edilir, şart uygun değilse döngü gerçekleşmez.
UNTIL kullanarak döngüyü kontrol altına almak:
UNTIL Türkçedeki -e kadar manasındadır. UNTIL ile belirtilen şart
gerçekleşene kadar kodlar çalıştırılır.
CLS DO UNTIL A > 40 ' şart DOĞRU olanA KADAR dön. A , 40 dan büyük olana kadar devam PRINT A A = A +1 LOOPWHILE için verdiğim açıklamalar bunda da geçerli.
UNTIL i DO nun yanına ya da LOOP un yanına koyabiliriz.
Kısaca WHILE, şartın DOĞRU olmasında; UNTIL, şartın YANLIŞ olmasında döngüye devam eder.
Örnek 3:
'DO-LOOP döngüsü ile 1 - 40 arası çift sayıları yazdır 'DO-LOOP ile 5 farklı yöntem ' ©2020 Mesut Akcan ' mesutakcan.blogspot.com CLS DO a = a + 2 PRINT a; IF a = 40 THEN EXIT DO LOOP SLEEP a = 0: PRINT DO a = a + 2 PRINT a; LOOP WHILE a < 40 SLEEP a = 0: PRINT DO a = a + 2 PRINT a; LOOP UNTIL a = 40 SLEEP a = 0: PRINT DO WHILE a < 40 a = a + 2 PRINT a; LOOP SLEEP a = 0: PRINT DO UNTIL a = 40 a = a + 2 PRINT a; LOOPPROBLEM 3: Problem 1 i DO ... LOOP döngüsüyle yapın
WHILE ... WEND
DO...LOOP un bir alternatifidir. Ama DO LOOP kadar kullanışlı değildir.
Çünkü DO LOOP da karşılaştırma şartını başta veya sonda verebiliyoruz.
Çünkü DO LOOP da karşılaştırma şartını başta veya sonda verebiliyoruz.
DO WHILE ... LOOP gibi çalışır.
Örnek 1:
'WHILE-WEND döngüsü ile 1 - 40 arası çift sayıları yazdır ' ©2020 Mesut Akcan ' mesutakcan.blogspot.com WHILE a < 40 a = a + 2 PRINT a; WENDPROBLEM 4: Problem 1 i WHILE..WEND döngüsüyle yapın
Örnek 2:
' Kabarcık sıralama. (Bubble Sort) DEFINT A-Z CONST diziboyutu = 16 DIM Sehir(diziboyutu) AS STRING CLS FOR i = 0 TO diziboyutu READ Sehir(i) NEXT ' Alfabetik Sıralama FOR i = 0 TO diziboyutu - 1 FOR j = diziboyutu TO i + 1 STEP -1 IF Sehir(j) < Sehir(j - 1) THEN SWAP Sehir(j), Sehir(j - 1) END IF NEXT NEXT PRINT "SIRALI LİSTE" FOR i = 0 TO diziboyutu PRINT Sehir(i) NEXT DATA Niğde,Bursa,Ordu,Zonguldak,Sivas,Edirne,Konya,Denizli,aydın DATA Manisa,Çankırı,Antalya,Şanlıurfa,Adana,İstanbul,Yozgat,uşakEkran çıktısı:
SIRALI LİSTE Adana Antalya Bursa Denizli Edirne Konya Manisa Niğde Ordu Sivas Yozgat Zonguldak aydın uşak Çankırı İstanbul Şanlıurfa
Alfabetik sıralamada listedeki son 5 il adı neden sonda sıralandı?
Çünkü sıralamayı
ASCII tablosundaki karakter kodu sayısal değerine göre sıralama yaptığı için.
ASCII tablosunda küçük harfler büyük harflerden sonra ve Türkçeye özgü
karakterler İngilizce harf karakterlerinden sonra gelmektedir. Sonra
gelen harflerin ASCII sayısal değeri daha büyüktür.
Bölüm ile ilgili QuickBasic soruları
- For… Next döngüsünü kullanarak adınızı 10 kez yazdırın.
- For… Next döngüsünü kullanarak ilk 10 doğal sayıyı yazdırın.
- For… Next döngüsünü kullanarak ilk 10 doğal sayıyı ters sırada yazdırın.
- For… Next döngüsünü kullanarak 10 - 15 arasındaki sayıları yazdırın.
- For… Next döngüsünü kullanarak 0-50 arasındaki çift sayıları yazdırın.
- 0, 1.5, 3, 4.5, 6, 7.5, 9 çıktısını veren For… Next döngüsünü yazın.
- For… Next döngüsünü kullanarak kullanıcının girdiği 10 sayıyı toplayıp sonucunu yazdırın
- For… Next döngüsünü kullanarak 1-100 arasındaki 5'e bölünen sayıları yazdırın.
- For… Next döngüsünü kullanarak 1-50 arasındaki 3'e bölünen sayıların toplamını yazdırın.
- For… Next döngüsünü kullanarak 1-10 arasındaki sayıların toplam sonucunu yazdırın
- For… Next döngüsünü kullanarak 1-10 arasındaki sayıların çarpım sonucunu yazdırın
- For… Next döngüsünü kullanarak kullanıcının girdiği 6 sınav notunun ortalamasını yazdırın.
- For… Next döngüsünü kullanarak ilk 10 doğal sayının karesini azalan sırada yazdırın.
- For… Next döngüsü ile (1) ^ 2 + (3) ^ 2 + (5) ^ 2 + ……… + (20) ^ 2 = ? işleminin sonucunu yazdırın
- For… Next döngüsü ile Fibonacci serisinin ilk 10 değerini yazdırın.
- For… Next döngüsü ile 0-100 arası Celcius(ºC) sıcaklık değerlerini Fahrenayt'a dönüştürün. (F=9/5C+32)
Önceki Bölüm: 4: Kontrol blokları | Sonraki Bölüm: 6: Diziler |
1 den 500 e kadar çalıştırma kodunu söyler misiniz (fibonacci)
YanıtlaSil