DO- CONTINUE Deyimi: Bir programda yer alan belirli işlemlerin, önceden bilinen bir düzende ve sayıda yenilenmesi amacı ile kullanılır. Deyimin genel yapısı: DO N I=M1,M2,M3 N: Do deyimi ile ilgili çevrimin son deyiminin numarasıdır I : deyimin indis sayacıdır. İndissiz bir değişken ismidir. M1: I’nın ilk değeri M2: I’nın son değeri M3: I’nın artış değeri
Örnek1. DO 90 K=1,4,1 Çevrim K=1 Çevrim K=1+1=2 Çevrim K=2+1=3 Çevrim K=3+1=4 Çevrim K=4+1=5 > 4 uygulanmaz DO 300 KI=2,10,3 Çevrim K=2 Çevrim K=2+3=5 Çevrim K=5+3=8 Çevrim K=8+3=11> 10 uygulanmaz (3 kez yineleme yapar)
ÖRNEK: DO 10 J=-10,10,m M ‘nin değerine bağlı olarak –10 dan 10 kadar değişir. DO 10 J=100,1, -m M ‘nin değerine bağlı olarak 100 den 1’e kadar azalır. ÖRNEK: 1,den 20 ‘ye kadar çift sayıların toplamını bulup yazan program. IT0P=0 DO 10 I=2,20,2 ITOP=ITOP+I 10 CONTINUE WRITE(*,*)ITOP STOP END
DO Deyiminin Özellikleri: Bir DO çevriminin son deyimi kontrol deyimleri dışında bir deyim olmalıdır. (Son deyim : STOP, IF, DO, PAUSE, RETURN, FORMAT olamaz. Son deyim bunlardan birisi olacaksa yerine CONTINUE kullanılır ) Do parametrelerinden (I,M1,M2,M3) herhangi birisi bu deyim ile ilgili çevrim içinde değiştirilemez veya yeniden tanımlanamaz. Bir kontrol deyimi kullanılarak Do çevrimi bitmeden çevrim dışına çıkılabilir. Çıkış yapıldığında indisin son değeri ne ise program içinde bellekte o yer alır. Dışardan IF, GOTO vs. deyimlerle yapılacak göndermeler ile DO alanının içine girilemez. Ancak DO çevrimi tamamlanmadan çevrimden çıkılan bir programda çevrim dışında DO parametreleri ile ilgili bir işlem yapılmamış ise çevrim içine geri dönülebilir.
Örnek 1. k=1 DO 10 I=1,10 K=K*I**2 10 IF(K.GT.20) GOTO 20 20 WRITE(*,*)I,K STOP END Örnek 1. k=1 DO 10 I=1,10 K=K*I**2 IF(K.GT.20) GOTO 20 10 CONTINUE 20 WRITE(*,*)I,K STOP END
Örnek 3. DO 10 I=1,10 30 A=EXP(-I) 10 CONTINUE I=A-10 GOTO 30 STOP END READ(*,10) M,N 10 FORMAT(3I3) DO 100 I=1,M IF(I-N) 100, 30,30 100 CONTINUE 30 K=I+I*M WRITE(*,*) K STOP END Örnek 3. DO 10 I=1,10 30 A=EXP(-I) 10 CONTINUE I=A-10 GOTO 30 STOP END
İç içe DO Çevrimleri : Çevrimler birbirini kesemez. Dış ve iç DO çevrimlerinin son deyimleri aynı olabilir. Bir DO deyiminin içinde birbirini kesmeyen birden fazla DO deyimi olabilir. İçteki bir DO çevriminin indisi dıştaki bir DO çevriminin indisi ile aynı olamaz. Bir DO çevriminde bir noktadan aynı DO çevrimindeki başka bir noktaya veya herhangi bir DO çevriminden dışarı serbestçe geçilebilir. Dıştaki bir DO çevriminden içteki DO çevriminin içine atlamak olası değildir.
Örnek 1. DO 10 I=1,10 L=SQRT(I) DO 20 J=1,20 K=L*J 10 CONTINUE 20 CONTINUE WRITE(*,*)K STOP END Örnek 2. AKL=0 DO 10 I=1,10 A=SQRT(I) DO 20 J=1,20 AK=A*J 20 CONTINUE DO 30 M=1,4 AKL=AKL+M*AK 30 CONTINUE 10 CONTINUE WRITE(*,*)AK,AKL STOP END
Örnek 3. AKL=0 DO 10 I=1,10 A=SQRT(I) DO 20 J=1,20 AK=A*J IF(AK.GT.10) GOTO 50 20 CONTINUE 50 DO 30 I=1,4 AKL=AKL+I*AK 30 CONTINUE 10 CONTINUE WRITE(*,*)AK,AKL STOP END Örnek 4. AKL=0 DO 10 I=1,10 A=SQRT(I) DO 20 J=1,20 AK=A*J IF(AK.GT.10) GOTO 50 20 CONTINUE DO 30 I=1,4 50 AKL=AKL+I*AK 30 CONTINUE 10 CONTINUE WRITE(*,*)AK,AKL STOP END
PAUSE Deyimi : Program çalışmasını geçici olarak durdurur. Kullanılışı: Pause Pause ‘n’ Pause ‘mesaj’ Mesaj ekranda görüntülenmek istenen bilgilerdir. N altı karakter uzunluğunda tam sayıdır. Pause ile durdurulan bir program istenildiği an enter tuşuna basılarak kaldığı yerden çalışmaya başlatılır. STOP Deyimi: Programın çalışmasını bitirmek için kullanılır. Stop Stop ‘n’ Stop ’mesaj’ END deyimi: Derleyiciye programın sonun gelindiğini ve makine diline çevrilecek başka bir deyim kalmadığını bildirmek için kullanılır.
Dizinli (İndisli) Değişkenler: Dizinli değişken bir isimle çok sayıda bilgiyi gösterebilme olanağı sağlar. Aynı özelliğe sahip değişkenlerin tanımlanmasında kullanılır. Matematikte tek boyutlu bir dizi: a1, a2, a3, a4, . . . Şeklinde elamanlara sahiptir. İki boyutlu bir dizinin elamanları ise a11, a12, a13, . . . a1n, . . . an1, an2, an3, . . . ann biçiminde gösterilir. FORTRAN programlama dilinde ise bunlar A(1), A(2), A(3), . . . . ve A(1,1), A(1,2), A(1,3), . . . .,A(1,n), ... A(n,1), A(n,2), A(n,3),. . .,A(n,n) şeklinde tanımlanmaktadır. Görüldüğü gibi indisler parantez içinde birbirinden virgül ile ayrılmış olarak bulunmaktadır.
Gelişmiş derleyicilerde 9 boyuta kadar dizinli değişken tanımlamak mümkündür. İndissiz bir değişken tek bir değerin saklanabileceği bir bellek hücresini temsil eder. Yani tek bir bellek hücresi adreslenir. Örneğin TAR isimli değişken için bellekte TAR BOŞ BELLEK Şeklinde bir adresleme yapılır. Dizinli değişkenler ise içerdikleri değerlerin saklanabileceği sayıda bellek hücresinin adreslenmesini sağlarlar. İndisler adresin ismi olmaktadır. KT tek boyutlu dizinli değişken için ise bellekte aşağıdaki şekilde adresleme yapılır. KT(1) KT(2) . . . KT(n) BOŞ BELLEK
Dizinli değişkenlerin kullanım kuralları: Dizi isimleri indissiz olarak aritmetik deyimlerle kullanılmaz. DIMENSION A(10) 10 READ(*,*) A(1) K=K+A WRITE(*,*)K GOTO 10 STOP END 2. Dizin indisleri REAL değerler olarak verilirse, işleme girdikleri zaman tamsayı değerlere dönüşür. E=2,2 A=3,4 TAR(E,A)=10. Burada E=2 ve A=3 olarak işleme girer.
İndisler sabit, değişken ve aritmetik ifade olabilir. A(K+1) B(3) A(5,S(I)) 4. İndisli değişkenlerin içerdiği elamanların hepsi aynı türden olmalıdır. Yani bir kısmı REAL bir Kısmı INTEGER olamaz. DIMENSION deyimi: Uygulanamayan bir deyimdir. Dizinli değişkenler için bellek alan tanımlaması işlevini yerine getirir. Genel yazılışı: DIMENSION M(N) M dizinli değişken isimlerini(Birbirinden virgül ile ayrılır), N dizinli değişkenin elaman sayısı veya boyutunu gösterir. DIMENSION A(2),B(4,4),C(8,8,10)
DATA Deyimi: Uygulanamayan bir deyim olan DATA deyimi değişkenlere ilk değer atamak için kullanılır. Genel Yazılışı: DATA D1/S1/, D2/S2/. . . /,DN/SN D1: 1 den N’e değişken listesi S1: Değişkenlere karşılık gelen sabitlerin listesini göstermektedir. Özellikleri: Değişkenler ve sabitler birbirinden / ile ayrılmıştır. Değişkenler ise birbirinden virgül ile ayrılmıştır. Değişkenler indissiz yada indisli, sayısal, alfa sayısal, mantıksal vb. türden olabilirler. Sabitlerle aralarında tip ve sayısal olarak birebir eşleme vardır. Örnekler : DIMENSION S(3) DATA S(1)/1.25/,S(2)/1.75/, S(3)/2.25/ DATA S/1.25,1.75,2.25/ Bu üç şekilde de aktarma yapılabilir. DATA (S(I), I=1,3)/1.25,1.75, 2.25/
CHARACTER *6 RA LOGICAL P DIMENSION K(3), DATA M/12/,B/2.2/,P/.FALSE./, RA/’DEGER’/, (K(I),I=1,3)/,1,6,5/ Format tanımlamasında olduğu gibi DATA deyiminde de yineleme faktörü kullanılabilir. Eğer birden fazla değişkene aynı değer atanacak ise yazımda kolaylık olması için bu yöntem kullanılabilir. Genel yazılışı: N * X N: yineleme sayısı X. Yinelenecek değeri gösterir. ÖRNEK: implicit integer (a-e) dimension d(3,3) data a,b,c,e/12,12,12,145/ data d/1,1,1,1,1,1,1,1,1/ write(*,*)a,b,c,e write(*,4)((d(i,j),i=1,3),j=1,3) 4 format(3(2x,I1)) stop end implicit integer (a-e) dimension d(3,3) data a,b,c,e/3*12,145/ data d/9*1/ write(*,*)a,b,c,e write(*,4)((d(i,j),i=1,3),j=1,3) 4 format(3(2x,I1)) stop end
OPEN(UNIT=1,FILE=‘DAT’,STATUS=‘OLD’) KÜTÜK KULLANIMI: Kütük Açma: Fortran 77 de kütük yaratma yada yaratılan kütüğü işlemi OPEN deyimi kullanılarak yapılır. Genel yazılışı: OPEN(UNIT=KN,FILE=‘KI’,STATUS=‘YZ’) Burada; KN : Yaratılacak ya da açılacak kütüğün numarasını gösterir. (ZORUNLUDUR) UNIT kelimesinin kullanımı isteğe bağlıdır. OPEN(2) veya OPEN(UNIT=2) KI : Yaratılacak ya da açılacak kütüğün adını gösterir.Değişken kurallarına uymak zorundadır. OPEN(UNIT=1,FILE=‘DAT’) YZ : Herhangi bir kütük daha önce yaratılmış veya ilk defa yaratılıyor olabilir. Eğer YZ yerine NEW yazılır ise ilk kez yaratılan kütüğü, OLD yazılır ise daha önce yaratılmış bir kütüğün açılmakta olduğunu gösterir OPEN(UNIT=1,FILE=‘DAT’,STATUS=‘OLD’)
Kütük Kapatma: Açılan kütüklerin kapatılma işlemi CLOSE Deyimi kullanılarak gerçekleştirilir. Genel Yazılışı: CLOSE(UNIT=KN, STATUS=‘ST’) KN: kapatılacak kütüğün numarasını gösterir. ST: Kütük kapatma türünü gösterir. DELETE ve KEEP durumları söz konusudur. KEEP yazılmış ise kütük korunarak, DELETE yazılmış ise silinerek kapatılır. ÖRNEK : CLOSE(1) CLOSE(1,STATUS=‘KEEP’ kütük korunur CLOSE(1,STATUS=‘DELETE’) kütük silinir
DIMENSION ID(4,4) OPEN(1,FILE='DAT',STATUS=‘NEW') DATA ((ID(I,J),I=1,4),J=1,4)/4*1,4*3,4*6,4*7/ WRITE(1,5)((ID(I,J),I=1,4),J=1,4) 5 FORMAT(4(2X,I2)) CLOSE(1,STATUS= ‘KEEP') STOP END