İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır

ALT PROGRAMLAR

FUNCTION Alt programı

İlk deyimi FUNCTION deyimi olan enaz bir tek değer üretmek üzere bağımsız olarak yazılmış bir program birimidir. Yapısı aşağıda gösterilmiştir.

FUNCTION alt program adı (argüman listesi)
...............
...............	Fortran deyimleri
...............
alt program adı= aritmetik ifade
RETURN
END

Ana programdan FUNCTION alt programına geçiş, alt programa adının argümanlarla birlikte bir aritmetik ifade de yer almasıyla sağlanır. Bu işlemi gösteren deyimi en basit biçimi ile şöyle olabilir:

değişken = alt program adı  (argüman listesi)

Görüldüğü gibi alt program adı ve argüman listesi hem alt programın birinci deyiminde, hem de çağıran deyimde yer almaktadır. Alt program adı programcı tarafında belirlenir ve alt programın yaptığı tüm işlemleri simgeler. Ana programdan alt programa bilgi aktarımı argümanlar aracılığı ile olur. Argüman listeleri birbirinden virgülle ayrılmış değişken ve sabitlerden oluşur. Her iki listedeki argümanların sayısı aynı olup, birbiriyle çakışan argümanlar aynı türdedir. Alt programa geçiş sırasında çağıran deyimin argüman listesindeki değerler, alt programın argüman listesindeki değişkenlere sıra ile verilir. Çakışan argümanların adları aynı olabilir, fakat olmak zorunda değildir

RETURN deyimi alt programdaki işlemlerin bittiğini gösterir. Bu deyimin işlenmesi çağıran programa (ana program veya başka bir alt program) geri dönülmesini sağlar. Bir FUNCTION alt programından ana programa gönderilecek değer (sonuç), RETURN deyiminden önce alt program adını taşıyan değişkene atanmak zorundadır. Bu nedenledir ki, alt program adı tam sayı bir değişken ise geri gönderilen değer tamsayı, alt program adı ondalıklı bir değişken ise geri gönderilen değer ondalıklıdır. Programcı dilerse alt programın birinci deyiminde FUNCTION sözcüğünden önce REAL veya INTEGER yazarak alt programın türünü alt program adına bağlı olmaksızın belirleyebilir.

SUBROUTINE Alt programı

SUBROTINE alt programları FUNCTION alt programlarına göre daha genel amaçlıdır. Yukarıda belirtildiği gibi FUCTION alt programı ana programa sadece bir bilgi geri gönderebilir. SUBROUTINE alt programı için böyle bir sınırlama yoktur. SUBRUOTINE alt programı argümansız olarak kullanılabilir. Bu şekilde kullanıldığı zaman amaç programın akışını daha güzel ifade eden modüler bir program yapısı sağlamaktadır. FUNCTION alt programının en az bir argümanı olması zorunludur.

FUNCTION ve SUBROUTINE alt programları arasında ki başka bir farklılıkta ayrıntıları aşağıda verilecek olan ana programdan çağrılış biçimidir. Fakat alt program, bir deyimle bir algoritmayı gerçekleştirecek biçimde tanımlanırsa, her iki tür alt programın özde çok benzer oldukları söylenebilir. SUBROUTINE alt programını yapısı aşağıda verilmiştir:

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)

Alt program adı programcı tarafından değişkenlere ad verme kurallarına uygun olarak kararlaştırılır.SUBROUTINE alt programında tür söz konusu olmadığı için adın hangi harfle başladığı önemli değildir. Alt programın birinci deyiminde yer alan argüman listesi ile ,ilişkili CALL deyiminin argüman listesi, argüman sayısı ve türü açısından uyumlu olmak zorundadır. Başka bir deyişle, adları farklı olsa da her iki listede aynı sırada buluna argümanlar aynı türde olmalıdır. Gerek ana programdan (çağıran programdan) alt programa aktarılan bilgiler gerekse alt programdan ana programa aktarılan bilgiler argümanlar aracılığıyla aktarılır. Bu bilgiler her türde her türde skaler değerler olabileceği gibi diziler de olabilir. Eğer argüman diziyi simgeliyorsa, büyüklüğü hem ana programda hem de alt programda bildirilmek zorundadır. Bu deyim işleme konulduğunda argümanlar alt programda son alındıkları değerleri taşırlar

Aşağıda bir SUBROUTINE alt programı ve bu alt programı ana programdan çağıran deyim verilmiştir.

..........SUBROUTINE  R ( A, B, X, Y ).
.........		X = A * B
..........	Y = 2.0 * ( A+ B )
..........	RETURN
.........	END

Alt programın adı R, argümanları A, B, X ve Y’dir. Görüldüğü gibi CALL deyiminden A, B, AL ve CEV değişkenlerinden oluşan argüman listesi ile uyumludur. Alt programa geçildiği zaman ana programda A, B, AL ve CEV değişkenlerinin sahip olduğu değerler alt programdaki A, B, AL ve CEV değişkenlerine verilir. RETURN deyimi işleme konulduğunda bu kez A, B, X ve Y’nin alt programda aldıkları son değerler, ana programda A, B, AL ve CEV değişkenlerine verilmiş olur. Görüldüğü gibi yukarıdaki örnekte A ve B argümanları ana programdan alt programa, AL ve CEV ( veya X ve Y ) argümanları da alt programdan ana programa bilgi aktarmaya aracı olmaktadırlar. Argümanların ana be alt programlarda aynı adı taşıması veya taşımamamsının işlem üzerimde hiçbir etkisi olmadığı da vurgulanmalıdır.

COMMON : Alt programlar arasında bilgi alanları

Bir ana programla alt program arasında veya iki alt program arasında bilgi aktarımının argümanlar aracılığı ile sağlandığı daha önce açıklanmıştı. Bu bilgi aktarımını gerçekleştirmenin bir başka yolu da program parçaları arasında ortak bilgi alanlarının veya Fortran’ da ki adı ile COMMON alanlarının kullanılmasıdır. COMMON alanları etiketli ve etiketsiz olarak ikiye ayrılır. Etiketsiz COMMON deyiminin yapısı şöyledir:

COMMON değişken listesi

Ortak bilgi alanında bulunması istenen değişkenleri değişkenler listesine birbirinden virgülle ayrılarak yazılır. Değişken listesinden diziler bulunabilir fakat dizi elemanları bulunamaz. Eğer dizi adı değişken listesinde indisli olarak yazılır ise , parantez içinde belirtilen tam sayı dizininin büyüklüğü olarak kabul edilir. Böylece ortak bilgi alanında yer alan bir dizinin büyüklük bildirimi DIMENSION deyimi yerine COMMON deyimi ile de yapılabilir. Ortak bilgi alanına ana programdan ve bir yada daha fazla alt programdan erişmek mümkündür. Bunu için ortak bilgi alanına erişecek her ana ve alt programda COMMON deyimi yer almalıdır. Ayrıca bu deyimlerin değişken listeleri, argüman listelerinde olduğu gibi uyumlu olmalıdır. Başka bir deyişle listeki değişken sayısı aynı olmalı, çakışan değerlerin türleri farklı olmamalıdır.

Örnek:

DIEMENSION R (10)  T (200)
COMMON R,T

deyimleri ile

COMMON R (10)   T (200)  

deyimi aynı sonucu sağlamaktadır.

Bir programda yer alan iki etiketsiz ortak bilgi alanlarının uzunlukları farklı olabilir.Aşağıda verilen deyimlerin iki ayrı alt programda yer aldıkları kabul edilsin:

COMMON   P,  L,  R (50)
COMMON   V,  KOD,   A ( 3 , 2 )

Görüldüğü gibi birinci deyim ile tanımlanan ortak bilgi alanı daha uzundur. Fakat iki deyin de aynı ortak bilgi alanını tanımladığı için P ile V, L ile KOD, R dizisinin ilk altı elemanı ile A dizisinin sırasıyla (1,1), (2,1), (3,1), (1,2), (2,2), (3,2) indisli elemanları eşleşmektedir.

Etiketli COMMON deyiminin yapısı şöyledir:

COMMON/etiket/değişken listesi

Etiket ortak bilgi alanına programcı tarafında verilen addır. Değişkenlere ad verme kuralına uygun olarak seçilir. Değişken listesi orta bilgi alanında yer alan değişkenlerden oluşur. Listede diziler de bulunabilir. Etiketli ortak bilgi alanı erişildiği her ana ve alt programda aynı etiket adını taşıyabilir COMMON deyimi ile tanımlanmak zorundadır. Bu deyimlerle tanımlanan alanların uzunlukları aynı olmalıdır. Ayrıca değişkenler listesi aynı olmak zorundadır.

BLOCK DATA Alt programı

Programda bazı değişkenlere, DATA deyimi ile başlangıç değeri verilebilir. Etiketlenmemiş bir ortak bilgi alanında yer alan değişkenler DATA deyimi ile başlangıç değeri vermek mümkün değildir. Etiketlenmemiş bir ortak bilgi alanında yer alan değişkenlere DATA deyimi ile değer atanması ise sadece BLOCK DATA alt programında mümkündür. BLOCK DATA alt programında etiketli COMMON ve DATA deyimleri yer alır.

Aşağıda bir BLOCK DATA alt programı verilmiştir:

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

BLOCK DATA alt programının adı geçen ortak bilgi alanlarının erişildikleri diğer ana ve alt programlarda da etiketli COMMON deyimleri ile bildirilmeleri gerektiği açıktır.

EQUIVALENCE Deyimi

EQUIVALENCE bildirim deyimi aynı bellek hücresine iki değişik adla erişilmesinin sağlar. Başka bir deyişle bu deyim bir bellek hücresinin iki farklı değişken tarafından ortaklaşa kullanılmasını sağlar.

Bu deyim kullanılarak sağlanmak istene başlıca amaç, programın bellek gereksinimini azaltmaktır. bu deyimi daha değişik amaçlar içinde kullanmak mümkündür. Bunlardan birkaçı tanesi örneklerde belirtilmiştir.

EQUIVALENCE deyiminin yapısı şöyledir:

EQUIVALENCE   ( değişken-1,  değişken-2 )

değişken-1 ve değişken-2 basit veya indisli değişken olabilir.

Bir programda iki boyutlu bir diziye tek indisle erişilmek isteniyorsa EQUIVALENCE deyimi kullanılabilir.

EQUIVALENCE  ( MAT ( 1 , 1 ) , IVEK ( 1 ) )

Her iki dizinin büyüklüğünün DIMENSION deyimi ile bildirilmiş olması gerektiği not edilmelidir.

Bir programın çalışması sırasında değişik zamanlarda iki dizi, bellekte yer kazanılmak amacı ile çakıştırılabilir. D dizisi, program C dizisi ile işlemlerini bitirdikten sonra kullanılan bir dizi olsun.

EQUIVALENCE  ( D ( 1 ) , C ( 1 ) )

deyimi iki dizi için aynı bellek alanını ayırmaktadır.

EXTERNAL Deyimi

EXTERNAL deyimi bir alt programın, ismi argümanlar listesinde bulunan başak bir alt programı çağırabilmesini olanağını sağlar. Bumu 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  s1, s2, s3,......,sn

Burada s1, s2, s3,......,sn çağıran alt program argümanlar listesindeki alt program isimleridir. EXTERNAL deyimi ana program içinde, aritmetik deyim fonksiyonları ve icra edilebilen deyimlerden de önce gelmek üzere, en başta bulunur.

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır