Format Deyimleri (Örnekler) Kontrol Komutları Bildiri Komutları Fonksiyonlar ve Alt Programlar
Format Deyimleri Örnekleri; I tipi (Tamsayılar için kullanılır ve (Iw) olarak gösterilir, Bellek Değeri Format Tanımı Çıkış Alanı +23 I4 bb23 -371 I5 b-371 +12345 12345 -12345 ****** I3 bb0
F Tipi (Gerçel Sayılar için kullanılır Fw.d şeklinde gösterilir) Bellek Değeri Format Tanımı Çıkış Alanı +12.3456 F7.3 b12.124 +25.6789 F10.3 bbbb25.679 -0.0123 F6.3 -0.012 00 F6.2 bb0.00 -135.642 ****** +35.12 F4.2 **** w;toplam karakter sayısını, d ondalık hanerlerin sayısıdır. Sayılar tanımlanan alan içinde sağdan hizalanırlar, pozitif sayılar için w >= d+1 negatif sayılar için w >= d+2 olmalıdır. Girişte sayılar noktasız yazılmış ise, sağdan itibaren d ondalık kısmı , w-d tamsayı kısmı olarak bilgisayara aktarılır. Ondalıklı sayılar çıkışta her zaman noktalı, d ondalık haneli ve sağa yanaşık yazılır. Sayının bellek değerinde ondalık hane sayısı d’den büyükse küçük haneler kesilir ve son hane yuvarlatılır, d’den küçükse eksik haneler sıfır ile doldurulur. Ondalıklı kısım tanımlanmış alana yazılamıyorsa alan * işareti ile doldurulur.
E Tipi (Üslü Gerçel Sayılar için kullanılır Ew.d şeklinde gösterilir) Bellek Değeri Format Tanımı Çıkış Alanı +13.5628 E11.5 b.13563Eb02 -13.5628 -.13562Eb02 +0.005246 E8.3 .525E-02
Kontrol Deyimleri; Program akışını göstermek için kullanılan deyimlerdir. Bilgisayar, Fortran deyimlerini normal olarak kaynak programda yazıldığı sırada gerçekleştirir. Ancak çözümü istenilen bazı problemler, programda zaman zaman atlama, geriye dönme, bazı işlemleri tekrarlama, aritmetik veya mantıksal bir karşılaştırmanın sonucuna göre dallanma gerektirebilirler. Bu kontrol komutları şunlardır;
Koşulsuz GO TO Hesaplanmış (Computed) GO TO Atanmış (Assign’a bağlı) GO TO Aritmetik IF Mantıksal IF DO CONTINUE RETURN CALL PAUSE STOP END
Koşulsuz GO TO Deyimi Bu deyim program içince herhangi bir koşula bağlı kalmaksızın istenilen komuta geçilmeyi sağlar; Genel Gösterimi; GO TO N (N aynı program içerisinde bulunan herhangi bir deyim numarasıdır) Programın uygulanışında bir şartsız GO TO deyimine gelinmiş ise bir sonraki deyim yerine N numaralı deyimdeki işlem gerçekleştirilir. N numaralı deyim şartsız GO TO deyiminden önce veya sonra tanımlanmış olabilir. Örnek: GO TO 33 .......... 23 X= (A** +B**) ............ 33 Y=A/5.
Hesaplanmış GO TO Deyimi Koşulsuz GO TO komutu ile bir tek deyime atlama olanagımız vardır , ancak, belirli koşulların gerçekleşmesi durumuna bağlı olarak birden fazla deyimden herhangi birine yönelmemiz gerekebilir, bu durumda Hesaplanmış GO TO deyimi kullanılır. Genel Formatı: GO TO (N1,N2,N3,.......NI), K Burada N1,N2,N3,... NI, aynı program içerisindeki deyim numaraları, ve K bir tam sayı değişkenidir. (1<= K <=I) K tam sayı değişkenin aldığı değer NJ ise kontrol NJ numaralı deyime geçer. N1,N2,N3,...NI numaralı deyimlerin aynı program içerisinde bulunması zorunludur.
Örnek : ..... K= 4 GO TO (11,25,33,34,50),K 11 ....... ...... 25 ....... ........ 33 ....... ....... 34 ....... ......... 50 ........ Deyiminin uygulanması sonucu 34 numaralı deyime atlanacaktır Eğer K değişkenin değeri 1 den küçük veya listede yer alan deyim numaralarından büyük ise hiç bir komuta yönelinmez kontrol bir sonraki deyime geçer.
Atanmış (Assign’a bağlı) GO TO Atanmış GO TO deyimi ile yine bir çok deyimden herhangi birine yönlenme olanağı sağlanır. Genel gösterimi GO TO K, (N1,N2,N3,...NI) ASSIGN deyimi tamsayı bir değişkene sayı ataması yapar. Genel Formatı ASSIGN d TO i şeklindedir. Burada d Assign deyimini içende bulunduran programda gerçekleştirilecek olan bir deyim numarası veya format numarası, i ise bir tam sayı değişkeninin adıdır.
ASSIGN deyimi ile K değişkenine atanan değer ne ise, o numaralı deyimdeki işlem yapılır. ................. ASSIGN 10 TO K .............. GO TO K, (5,10,15,34) ............... 5 X=Y ................ 10 X=Z 15 X=W ** ASSIGN deyimi ve Atanmış GO TO deyimi arasında K tamsayı değişkeninin değeri değiştirilemez...
Aritmetik IF Deyimi Bir aritmetik ifadenin değerinin Sıfır, Negatif veya Pozitif olması durumunda herhangi 3 deyim numarasından birine yönlenmeyi sağlamak için kullanılır. Genel Gösterimi; IF (aritmetik ifade) N1,N2,N3 N1,N2 ve N3 aynı program içerisinde bulunan deyim numaralarıdır. Aritmetik ifade değeri Negatif ise N1, Sıfır ise N2, Pozitif ise N3 numarali deyime gidilir...N1, N2, N3 deyim numaralarından herhangi ikisi aynı olabilir
........ IF (X-Y) 1, 2, 3 1 ........ 2 ........ 3 ........ IF (X – D*10) 23,56,32 23 ...... 56 ..... 32 ..... IF (X) 5,5,14 5 ......... 14 .......
LOGICAL (Mantıksal) IF Mantıksal bir ifadenin doğru veya oluşuna göre başka bir deyime yönlenmeyi veya yönlenmemeyi sağlar. Mantıksal ifadelerin sonuçları .TRUE. (doğru) veya .FALSE. (yanlış) olabileceğinden bu deyim yardımı ile ancak iki yönlü bir yönlenme yapılabilir. Genel Gösterimi: IF (mantıksal ifade) FK şeklindedir, burada FK uygulanabilir bir Fortran Deyimidir. IF deyimindeki FK bir DO deyimi veya bir başka IF deyimi olamaz. Mantıksal ifadenin sonucu .TRUE. ise FK deyimi uygulanır aksi durumda yani mantıksal ifadenin sonucu .FALSE. ise FK komutu atlanır ve bir sonraki deyim uygulanır.
......... IF (X.EQ.Y) A=4.2 IF (X.LE.Y) GO TO 5 .......... 5 A=A+3
IF-THEN-ELSE-END IF (Block IF) Blok IF deyimi END IF deyimi ile birlikte kullanılan bir deyimdir gerektiğinde ELSE IF ve ELSE deyimleri ilede kullanılabilir. Genel Gösterimi IF (m) THEN Burada m herhangi bir mantıksal (logical) ifadedir. Blok IF deyimi, deyimden sonraki ilk deyim ile başlar son ELSE IF, ELSE veya END IF deyiminden önceki deyimde biter. Bir IF bloğunun içinden bir başka IF bloğuna atlanamaz. Eğer m nin değeri doğru ise IF blokundaki ilk deyimden başlayarak sırayla deyimler uygulanır, Eğer m nin değeri yanlış ise bir sonraki ELSE IF, ELSE veya END IF deyimlerine geçilir, asla bir DO döngüsü ile kesilemez. END IF deyimi de IF Bloğunu bitirmek için kullanılır.....
Örnek (1) IF (A.GT.B) THEN .......... END IF Örnek (2) INTEGER :: SAYI READ(*,*) SAYI IF (MOD(SAYI ,2) .EQ.0) THEN WRITE (*,*) SAYI, “ Sayisi Cift Sayidir” ELSE WRITE (*,*) SAYI , “ Sayisi Tek Sayidir”
DO Deyimi Programımızın belirli bir kısmını, istenilen sayıda tekrarlamak ve bir döngü (çevrim) oluşturmamız gerektiğinde DO deyimi kullanılır. Çoğunlukla indisli değişkenler le olan işlemlerde büyük kolaylık sağlar, DO Genel Gösterimi; DO K I=N1,N2,N3 şeklindedir. Burada K bir deyim numarasını, I bir tam sayı değişkeni ve N1,N2,N3 ise tamsayı veya gerçelsayı değişkenleri gösterir.
DO K I=N1,N2,N3 I: DO Döngüsünün kontrol değişkenidir. N1 : Kontrol değişkeninin ilk pozitif tamsayı değeridir, N2 : Kontrol değişkeninin son tam sayı değeridir, N3 : Kontrol değişkeninin her adımdaki artış miktarını gösterir. (Eğer artış değer 1 ise kullanılmayabilir.) DO 10 I =1,20,2 10 PRINT *, I,I**2 END DO Değişken ilk önce N1 değerini alır, ilk döngü yapılır, ikinci döngü için değişken N3 kadar artırılır ve yeni değer N2 ile karşılaştırılır eğer yeni değer N2 den büyükse işlem sona erer ve bir sonraki komuta geçilir, eğer değişkenin değeri N2 den küçük ise işlemler devam eder.
DO Deyimi Kullanılırken Uyulması Gereken Kurallar 1. N1, N2’den büyük olsa bile döngü bir kez I=N1 için uygulanır 2. Kontrol Değişkeni (I) DO deyimi içinde değiştirilemez ancak indis olarak kullanılabilinir. ........ M = 2 DO 5, I = M,5 M = I + 1 X = A(I)*B(M) 5 CONTINUE ........ ............
3. DO döngüsü içinde bir başka DO döngüsü kullanılabilir, Bu durumda önce içerideki DO döngüsü tamamlanır, sonra dışarıdaki döngü gerçekleştirilir. İçteki döngü ile dıştaki döngünün bitiş deyimleri aynı olabilir. Etki alanları birbirini kesen DO döngüleri kullanılmaz. DO 10 I = 1,N DO 100 K = 1,N,2 DO 15 J = 1,M DO 105 L = 1,M,3 ....... ...... ........... ......... ....... ...... ........... .......... 15 CONTINUE 100 CONTINUE 10 CONTINUE 105 CONTINUE
4. DO döngüsü bittikten sonra kontrol değişkeni başka bir amaçla tekrar kullanılabilir. 5. N1,N2 ve N3 değişkenleri tamsayı değişkeni olabilir ancak herhangi bir aritmetik ifade olamaz, Tamsayı değişkeni olmaları durumunda DO döngüsünden önce tanımlanmış olmaları gerekir ve değerleri döngü içerisinde değiştirilemez 6. DO döngüsü içinde herhangi bir fortran deyimi kullanılabilir.Fakat döngünün son deyimi koşulsuz veya assign'e bağlı GO TO, blok IF, ELSE IF, ELSE, END IF,STOP,RETURN ,END ,aritmetik IF,lojik IF veya bir başka DO deyimi olamaz.Bundan kaçınmak için genelde DO döngüsünün son deyimi olarak CONTINUE deyimi kullanılır.
CONTINUE Deyimi Continue deyimi, Fortran Programlarında her zaman gerekli değildir. Genellikle DO döngülerinin son komutu olarak görülü, programın çalşmasında etkili br rolü yoktur. Genel Gösterimi M CONTINUE şeklindedir Burada M; DO döngüsünün son deyim numarasıdır. Kontrol bu deyime geldiğinde hiç bir işlem yapılmaksızın DO döngünün başına gidilir.
DO 30 J=2,N B(J) = NM(J-1) + NM(J+1) INC = INC+1 IF (NPAR(J).LT.MAX) GO TO 30 K=J-1 30 CONTINUE
RETURN Deyimi Bu deyim ile alt programdan (SUBROUTİNE) ana programa dönüş sağlanır. Genel Gösterimi; RETURN şeklindedir. Her alt programda mutlaka bir RETURN deyimi olmalıdır. (Bir alt programda birden fazla RETURN deyimi bulunabilir.)
CALL Deyimi Bu deyim SUBROUTINE dediğimiz alt programları çağırmak için kullanılır. Genel Gösterimi; CALL a CALL a(A1,A2,.....AN) dir... Burada a SUBROUTINE alt programının adını, A1,A2,...AN ise gerçek parametreleri (argümanları) gösterir.
Argümanlar ana program ile alt program arasında bilgi akışını sağlayan parametreler olup, basit veya indisli bir değişken, bir sabit veya bir ifade olabilir. CALL ORTALAMA (X,Y,Z) CALL GUNORT ((A(I+3,2),B)
PAUSE Deyimi Programı geçici olarak durdurmak için kullanılır. Geçici olarak durdurarak ara sonuçları görülebilir, yanlışlar incelenebilir. Genel Gösterimi; 1)PAUSE 2)PAUSE K 3)PAUSE “Mesaj” Şeklindedir. K, en çok 6 rakamlı bir tam sayı sabiti, Mesaj da herhangi bir alfabetik ifadeyi gösterir. Bir programın değişik yerlerinde birden falz PAUSE deyimi kullanılabilir. PAUSE 987456 PAUSE “Hata Var!!!!!!” gibi
STOP Komutu Bir programın uygulamasını tamamen durduran bir deyimdir. Her FORTRAN Programında mutlaka bir STOP deyimi olmalıdır. Aynı program içerisinde birden fazla STOP deyimi kullanılabilir. Genel Gösterimi: 1) STOP 2) STOP K 3) STOP “Mesaj” M; en fazla 6 rakamlı bir tamsayı sabitini, “Mesaj”;herhangi bir alfabetik ifadeyi gösterir. STOP deyimi programın uygulanacak son deyimidir. END deyiminden önce kullanılır. Eğer STOP M komutu kullanılmış ise gecici olarak M saniye kadar durduktan sonra bir sonraki komuttan başlayarak uygulamaya devam eder.
END Deyimi Bu komut kaynak programın en son komutudur. Derleyiciye programın bittiğini bildirir. Her Programda mutlaka bir END deyimi olmalıdır ve programın en sonunda olmalıdır.