![]() |
Temel Yönleriyle Fortran 90 / 95 / 2003 | |||||||||||||||||||||||||
|
* Fortran'a Giriş
* fortran.gantep.edu.tr
|
Bölüm 6: Döngüler
GirişDöngü (loop) deyimleri, bir kümenin belli bir koşul altında tekrar edilmesi için kullanılır. Fortran'da, Sayaç Kontrollü DO, DO ve DO WHILE olmak üzere üç tip döngü deyimi vardır. Diğer programlama dillerinde olduğu gibi, bu deyimlerle istenildiği kadar iç-içe döngü yapısı kullanılabilir. 6.1 Sayaç Kontrollü DO DöngüsüFortran 90'dan önce de kullanılan tekrarlama deyimidir. Tekrarlama bir döngü sayacı kullanılarak yapılır. Genel yazım biçimi:
DO değişken = deyim1, deyim2, deyim3
...
döngüdeki deyimler (küme)
...
END DO
burada
DO I = 1, 6, 1
PRINT *, I, I**2
END DO
Bu kod 1 den 6 ya kadar olan sayıları ve karelerini ekrana aşağıdaki gibi basar:
1 1
2 4
3 9
4 16
5 25
6 36
döngüdeki artım miktarı 1'in yazılmasına gerek yoktur. Yani yukarıdaki kod, aşağıdaki ile eşdeğerdir.
DO I = 1, 6
PRINT *, I, I**2
END DO
Gerçel değerle üreten döngü oluşturmak mümkündür. Örneğin aşağıdaki program parçası, 10 derecelik adımlarla,
0 dan 90 dereceye kadar olan açıların sinüs ve kosinüs değerlerini ekrana basar.
Pi = 3.141593
DO Der = 0, 90, 10
Rad = Der * Pi/180.0
PRINT *, SIN(Rad), COS(Rad)
END DO
Program 6.1, 1 den N'ye kadar olan tamsayıların toplamını hesaplar. Bu toplamın değeri N*(N+1)/2
formülü ile hesaplanır.
Program 6.1: 1 + 2 + ... + N toplamını hesaplar.
ÇIKTI
6.2 DO DöngüsüBu türden döngü yapısı ile yineleme sayaç ile değil, mantıksal bir işlemle yapılır. Genel olarak DO-EXIT ve DO-CYCLE yapıları ile mantıksal düşünce işleyişi kullanılır. DO - EXIT Yapısı Genel kullanım biçimi:
DO
küme 1
IF ( koşul ) EXIT
küme 2
END DO
şeklindedir. Burada döngü koşul olumlusuz olduğu sürece yinelenir. koşul olumlu kolduğunda döngü EXIT deyimi ile sonlanır. Aşağıdaki sayaç kontrollü döngüyü düşünelim.
DO I = 1, 6
PRINT *,I, I**2
END DO
Bu döngü aşağıdakine eşdeğerdir.
I = 1
DO
PRINT *,I, I**2
I = I + 1
IF ( I >= 6 ) EXIT
END DO
Program 6.2, klavyeden girilen sayı 0'dan büyük olduğu sürece girilen sayıyı
ve karekökünü ekrana yazar.
Program 6.2: Girilen sayının karekökü hesaplar
ÇIKTI
6.3 DO WHILE DöngüsüYinelenmesi gereken küme için koşul sınaması döngüye girilmeden yapılır. Koşul olumlu olduğu sürece çevrim yinelenir. DO WHILE döngüsü C/C++ programlama dilindeki while ile aynı mantıkta çalışır. Genel yazım biçimi:
DO WHILE( koşul )
...
döngüdeki deyimler (küme)
...
END DO
Program 6.3: Serbest düşen bir topun dt zaman aralıklarıları ile hızını, konumunu ve çıkacağı en yüksek noktayı hesaplar.
ÇIKTI
6.4 İç içe Geçmiş DöngülerBir program içinde birbiri içine geçmiş birden çok döngü de kullanılabilir. Bu durumda (bütün programlama dillerinde olduğu gibi) önce içteki döngü, daha sonra dıştaki döngü icra edilir. İç içe geçmiş döngülere iyi bir örnek Program 6.4 ve 6.5 de gösterilmiştir. Program 6.4'de, iç içe geçmiş iki DO döngüsü ile basit bir çarpım tablosu oluşturulmuştur. Program 6.4: Basit bir çarpım tablosu
ÇIKTI
Üç basamaklı, basamaklarının küpleri toplamı kendisine eşit olan tam sayılara Armstrong sayı denir. Örneğin: 371 bir Armstrong sayıdır çünkü 33 + 73 + 13 = 371. Program 6.5, iç içe geçmiş üç DO döngüsü ile bütün Armstrong sayıları bulup ekrana yazar. İnceleyiniz. Program 6.5: Armstrong sayılar
ÇIKTI
6.5 Sonsuz Döngü
Bir döngü işlemini sonsuz kere tekrarlarsa bu döngü sonzuz döngü olarak adlandırılır.
Böyle bir döngü için, koşul çok önemlidir. Aşağıda verilen döngüler çevrimini sonsuz kez
tekrarlayarak ekrana Sonsuz döngü içindeyim... mesajını basar.
! EXIT deyimi kullanışmamış
DO
PRINT *, "Sonsuz döngü içindeyim..."
END DO
! J döngü içinde değişmiyor
J = 6
DO
PRINT *, "Sonsuz döngü içindeyim..."
IF(J == 0) EXIT
END DO
! 7 her zaman 3 den büyüktür
DO WHILE(7>3)
PRINT *, "Sonsuz döngü içindeyim..."
END DO
! 7 her zaman 3 den büyüktür
DO WHILE(7>3)
PRINT *, "Sonsuz döngü içindeyim..."
END DO
6.6 İsimlendirilmiş Döngü YapısıFortran 90+, IF ve CASE deyimlerinde olduğu gibi, DO deyimi için de isimlendirilmiş yapı kullanmaya izin verir. Genel kullanım şekli:
etiket: DO
.
.
.
END DO etiket
şeklindedir. Bu yapı, özellikle iç içe geçmiş döngülerde sık kullanılır. Örneğin:
Distaki: DO I = 1, 10
Icteki: DO J = 1, 10
PRINT *, I, J, I*J
END DO Icteki
END DO Distaki
Bir döngüye verilen etiket, EXIT ve CYCLE deyimleri
ile de birleştirilebilir. Şöyle ki:
D1: DO; x1 = x1 + 0.1
D2: DO; x2 = x2 + 0.1
IF(x1**2+x2**2>=1.0) EXIT D1 ! 1 inci döngüyü sonlandır
IF(x2 > xmax) EXIT D2 ! 2 nci döngüyü sonlandır
F = ABS(x1-x2)
PRINT *,x1,x2,F
END DO D2
END DO D1
|