Fonksiyonlar ve Alt Programlar Farklı programlarda veya bir programın değişik yerlerinde aynı fonksiyonu veya işlem serisini tekrarlamak gerekebilir. Bu gibi durumlarda aynı deyim veya deyim gruplarını her seferinde yazmak yerine bu deyimleri bir fonksiyon veya yardımcı bir program olarak hazırlayarak gerektiğinde program içinde kullanmak daha yararlı olur. Örneğin:
Çok karmaşık ve uzun programlar parçalara ayrılarak daha basit program grupları haline getirilir, böylelikle programlama kolaylaşır, Aynı işlem grupları için tekrarlar önlenir, Hafızanın daha verimli kullanımı sağlanır, Programcılar arasında iş bölümü sağlanarak, programlama hızlandırılır ve prgramlamada verim yükseltilir
Fonksiyonlar ve Alt programların Sınıflandırılması; A) Fonksiyonlar Arşiv Fonksiyonları (Hazır Fonksiyonlar) Deyim Fonksiyonları B) Alt Programlar FUNCTION alt programları SUBROUTINE alt programları BLOCK DATA alt programları
Deyim Fonksiyonları Bir program içerisinde, belli bir fonksiyon veya bir atama komutu bir çok kez tekrarlanıyorsa, deyim fonksiyonları kullanılır. Bunlar, uygulanabilen komutlardan önce tanımlanırlar; aynı program içerisinde birden çok sayıda değişik argümanlar (gerçek parametreler) ile çağrılabilirler FA (X1,X2,X3,,,,Xn)=E Burada FA, deyim fonksiyonunun adını, X1 X2,...,XN tanım parametrelerini, E aritmetik veya mantıksal bir ifadeyi gösterir.
Deyim fonksiyonun adı seçilirken, değişkenlere ad vermede dikkat edilecek özellikler aynen geçerlidir. Tanım parametreleri basit değişken olmalıdır. Deyim fonksiyonlarını tanımlamak için kullanılan aritmetik veya mantıksal ifadelerde, Sabitler, Programda Kullanılan değişkenler, Arşiv Fonksiyonları, Daha önce tanımlanmış başka deyim fonkiyonları FUNCTION alt programlar olabilir.
Deyim Fonksiyonlarının Kullanılmasında Dikkat Edilecek Noktalar; Deyim fonksiyonu ancak tanımlandığı program içerisinde kullanılabilir. Deyim fonksiyonları bir tek değer veren fonksiyonlardır. Bunun sonucu deyim fonksiyonu program içerisindeki atama komutlarında bir değişken olarak kullanılabilir. Deyim Fonksiyonları ilk uygulanabilir komuttan önce tanımlanmış olmalıdır. Tanımlanmış deyim fonksiyonun adı aynı programda başka bir değişkenin adı olarak kullanılamaz. Deyim fonksiyonunda en az bir tanım parametresi bulunmalıdır. Aynı isimde birden fazla parametre bir argüman listesinde bulunamaz.
Dimension A(10). STA(N)=X. SIN(A(N)) READ ( Dimension A(10) ...... STA(N)=X*SIN(A(N)) READ (*,25) X,Y,(A(I),I=1,10) 25 Format (F4.2,F7.4,10F7.3) DO 50 J=1,10 ZA=Y+STA(J) ......... 50 Continue ........ LOGICAL MANTIK,T,A MANTIK(X,Y)= X.GT.(Y+2.) ........ T=A.AND.MANTIK(A,B)
FUNCTION ALT PROGRAMLARI Function Alt Programı, tek bir aritmetik veya mantıksal değer hesaplayan ve ana programa gönderen, bağımsız yazılmış bir program parçasıdır. Bu tür programların ilk komutu FUNCTION FA(A1,A2,...,AN) şeklindedir.
FUNCTION alt program adı (argüman listesi ). Fortran deyimleri FUNCTION alt program adı (argüman listesi ) ............... ............... Fortran deyimleri ............... alt program adı= aritmetik ifade RETURN END Bu alt program, bir başka program tarafından ........ ....... ...... TOTAL= EVAL(P,X)+COS(Y) Komutu ile çağrılabilir. FUNCTION EVAL (U,V) IF (U.LT.V) GOTO 1 EVAL=V/U RETURN 1 EVAL=U/V END
Function Alt Programlarının Kullanılmasında Dikkat Edilecek Noktalar; Function alt programı bir başka alt program veya ana program tarafından çağrılabilir, Function alt programlarında kullanılan değişken isimleri çağıran programdaki değişken isimlerinden tamamen bağımsızdır. Function alt programları da deyim fonksiyonları gibi adları ve gerçek parametreleri ile çağırılırlar. Function alt programaları bağımsız bir program gibi çalıştıklarından son komutları END olmak zorundadır. Ayrıca hesaplanan değerleri çağıran programa geri dönüşü için alt program içerisinde bir veya bir kaç defa RETURN deyimi kullanılabilir..
SUBROUTINE Alt Programları SUBROUTINE alt programları FUNCTION alt programlarına göre daha genel amaçlıdır. FUNCTION alt programları ana programa bir tek değer verebilirler, oysa SUBROUTINE alt programları için böyle bir sınırlama yoktur. SUBRUOTINE alt programı argümansız olarak ta kullanılabilir. SUBROUTINE ler bağımsız birer program gibi hazırlanırlar ve ilk deyim her zaman SUBROUTINE dir. SUBRUOTINE (alt program adı) (argüman listesi ) ............... ............... Fortran deyimleri ............... RETURN END
Ana programdan SUBROUTINE alt programına geçiş, CALL deyimi ile sağlanır. Bu deyimin yapısı da şöyledir: CALL alt program adı (argüman listesi) CALL SA(x1,x2,...xN)
SUBROUTINE Alt Programlarının Kullanılmasında Dikkat Edilecek Noktalar; SUBROUTINE alt programlarındaki tanım parametreleriyle CALL listesindeki gerçek parametreler sayı,sıra ve tip bakımından uyumlu olmalıdır. SUBROUTINE alt programlarında FUNCTION, BLOCK DATA ve SUBROUTINE deyimleri dışındaki tüm FORTRAN deyimlerini kullanılabilir. Son komut daima END olmalıdır. Alt program içinde herhangi bir yerde en az bir RETURN deyimi olmalıdır. SUBROUTINE IVME (T,V,S) G=32.172 S=G*T**2 /2 V=G*S RETURN END
EXTERNAL Deyimi EXTERNAL deyimi bir alt programın, ismi argümanlar listesinde bulunan başka bir alt programı çağırabilme olanağını sağlar. Bunun için çağırılan alt program (FUNCTION veya SUBROUTINE) isminin çağıran alt program argümanlar listesinde yazılması ve EXTERNAL deyiminde bulunması gerekir. EXTERNAL deyiminin yapısı şöyledir: EXTERNAL N1, N2, N3,......,NK Burada N1, N2, N3,....,NK çağıran alt program argümanlar listesindeki alt program isimleridir. EXTERNAL deyimi ana program içinde, aritmetik deyim fonksiyonları ve uygulanan deyimlerden de önce gelmek üzere, en başta bulunur. EXTERNAL SIN,EXP,SQRT .......... CALL HES (SIN,COS;EXP,A)
BLOCK DATA Alt Programı Programda bazı değişkenlere, DATA deyimi ile başlangıç değeri verilebilir ancak COMMON deyimindeki listede bulunan değişkenlere DATA deyimi ile başlangıç değeri atanamaz. Bu nedenle COMMON deyimindeki değişkenlere başlangıç değeri atayabilmek BLOCK DATA alt programları kullanılmaktadır. BLOCK DATA COMMON / ALAN 1/ PROP ( 5 ) COMMON / ALAN 2/ I, D, HIZ DATA PROP / 1.0035 , 0.735 , 0.782 , 1.4 , 0.02 / DATA I, D, HIZ / 5, 0.18, 0.8 / END
Herhangi bir istasyonda ölçülen depremin açısal odak uzaklığı ve azimut açısı Formulü ile verilir. Burada, Olarak ifade edilir. Depremin ve istasyonun enlem ve boylamlarını göstermektedir.
Orijinal Program Subroutine
Ana (main) programdaki değişkenler (dist, azim) , subroutine deki değişkenler ise delta ve theta