Temel Yönleriyle Fortran 90 / 95 / 2003 | ||||||||||||
* Fortran'a Giriş
* fortran.gantep.edu.tr
|
Bölüm 8: Alt Programlar II
GirişFortran 90+, argüman sayısı değişebilen esnek fonksiyonlar ve subroutineler tanımlamaya, ve/veya bir alt programın argüman listesinden istenilenleri kullanmaya izin verir. Arguman sayısı keyfi olabilen alt programlar, Esnek Argümanlı Alt Programalar (Optional Argument Subprograms), ve argüman listesinden keyfi seçilebilen altprogramalar Anahtar Argümanlı Alt Programlar (Keyword Argument Subprograms), olarak adlandırılır. 8.1 Esnek Argümanlı Alt Programlar
Aşağıdaki gibi üçüncü dereceden bir polinom düşünelim: P(x) = a + bx + cx2 + dx3burada a, b, c, d katsayıları gerçel sayı sabitleridir. Bu polinomu temsil eden en basit fonksiyon şöyle tanımlanabilir. REAL FUNCTION P(x, a, b, c, d) REAL, INTENT(IN) :: x, a, b, c, d P = a + b*x + c*x**2 + d*x**3 END FUNCTION P Buna göre, x = 1.7 için, P(x) = 1 - 2x değerini hesaplamak için bu fonksiyon aşağıdaki gibi çağırılmalıdır: Sonuc = P(1.7, 1.0, -2.0, 0.0, 0.0) Burada, kullanılmayan katsayılar için 0.0 değeri mutlaka fonksiyona geçirilmelidir. Kullanılmayan argumanlar geçirilmeden de fonksiyonu çağırmak mümkündür. C/C++ gibi dillerde olduğu gibi, Fortran 90 kullanıcılarına argümanları esnek olarak geçirme imkanı verir. Bunun anlamı, belli kurallar sağlandığında, P() fonksiyonu aşağıdaki gibi çağrılabilmesidir: ! x a b Sonuc = P(1.7, 1.0, -2.0);Esnek argümanlar için iki temel kural vardır:
REAL FUNCTION Poly(x, a, b, c, d) REAL, INTENT(IN) :: x,a REAL, INTENT(IN), OPTIONAL :: b, c, d P = a IF(PRESENT(B)) P = P + b*x IF(PRESENT(C)) P = P + c*x**2 IF(PRESENT(D)) P = P + d*x**3 END FUNCTION PBurada mantıksal (LOGICAL) değer döndüren PRESENT fonksiyonu kullanılmıştır. PRENSENT(q), q değişkeninine bir değer atanmışsa .TRUE., atanmamışsa .FALSE. gönderir. Buna göre Sonuc = P(1.7, 1.0, 2.0)atamasıyla x = 1.7 noktasında 1.0 + 2.0x değeri hesaplanır. 8.2 Anahtar Argümanlı Alt ProgramlarBir alt programda hangi değişkenin kullanılacağını belirtmek için bu yapı tercih edilir. Şöyleki, bir fonksiyon aşağıdaki gibi çağırıldığında: Sonuc = P(x=1.7, b=3.0, d=0.5)bir önceki kesimde tanımlanan polinomun, x = 1.7 noktasındaki değeri (3.0x + 0.5x3) hesaplanır. Ayrıca, anahtar argümanların sırası aşağıdaki gibi değiştirilebilir: Sonuc = P(d=0.5, b=3.0, x=1.7)Son olarak, eğer fonksiyonumuz aşağıdaki gibi çağırılırsa, Sonuc = P(1.7, 1.0, d=0.5)polinomun x = 1.7'deki değeri (1.0 + 0.5x3) hesaplanabilir. 8.3 Örnekler
ÖRNEK 1: ESNEK ARGÜMANLI TOPLAMA FONKSİYONU Program 8.1: Agümanların toplamını hesaplar
ÇIKTI
|