FONKSİYONLAR Sayısal bilgiler üzerinde direkt olarak kullanılabilen ve kendilerine özgü işlemleri gerçekleştiren ifadelerdir. Hazır fonksiyonlar Aritmetik deyim fonksiyonu (kullanıcı tarafında tanımlanan fonksiyonlar) HAZIR FONKSİYONLAR FORTRAN matematiksel fonksiyonlar bakımından BASIC diline göre daha zengindir. Ancak alfasayısal fonksiyonlar bakımından zayıftır. ARŞİV FONKSİYONLARI VE ÖZELLİKLERİ TANIM İSİM VE ARGÜMAN ARGÜMAN/FONK. TİPİ AÇIKLAMA Mutlak değer, x ABS() IABS() DABS() CABS() Karekök x, x>0 olmalı SQRT() DSQRT() CSQRT() Üs alma e x EP() DEP() CEP() Doğal logaritma ALOG() >0 olmalı ln(=log e ) DLOG() CLOG() Adi logaritma, log(=log 10 ) ALOG10() >0 olmalı DLOG10() Sinüs, sin(x) SIN() radyan olmalı DSIN() CSIN() Kosinüs, cos(x) COS() radyan olmalı DCOS() CCOS() Tanjant, tg(x) TAN() DTAN() Kotanjant, cotg(x) COTAN() DCOTAN() Arksinüs, arcsin(x) ASIN() DASIN() Arkcosinüs,arccos(x) ACOS() DACOS() Arktanjant,arctg(x) ATAN() Sonuç radyan DATAN() Arktanjant,arctg(x/y) ATAN(,Y) Sonuç radyan DATAN(,Y) Sinüs hiperbolik, sinh(x) SINH() DSINH() Kosinüs hiperbolik, cosh(x) COSH() DCOSH() Tanjant hiperbolik, tgh(x) TANH() DTANH() -gerçel dönüşümü FLOAT(I) /gerçel DFLOAT(I) /çift incelikli 1
-tamsayı dönüşümü IFI(I) /tamsayı Çift incelik-gerçel dönüşümü SNGL() /gerçel -çift incelik dönüşümü DBLE() /çift incelikli Kesme AINT() gerçel INT() /tamsayı IDINT() /tamsayı AMOD(,Y) Kalan MOD(,Y) DMOD(,Y) İşaret değişimi x,(y nin,işareti) SIGN(,Y) Y0 ISIGN(,Y) DSIGN(,Y) En büyük değeri seçme max(x,y,) AMA0(,Y,) /gerçel Argüman sayısı AMA1(,Y,) /tamsayı MA0(,Y,) MA1(,Y,) /tamsayı DMA1(,Y,) En küçük değeri seçme min(x,y,) AMIN0(,Y,) /gerçel Argüman sayısı AMIN1(,Y,) MIN0(,Y,) MIN1(,Y,) /tamsayı DMIN1(,Y,) Pozitif fark x-min(x,y) DIM(,Y) IDIM(,Y) DDIM(,Y) Çify incelikli argümanın tamsayı kısmı REAL() Kompleks/gerçel x=a+ib argümanın sanal kısmı AIMAG() Kompleks/gerçel eşlenik bulma c=a-ib CONJG() Kompleks/kompleks argüman oluşturma x+iy CMPL(,Y) /kompleks ARİTMETİK İFADE Y x 9 1.3+SINY ln(a+1.65cos) R A B M S cos(p A)e FORTRAN Y=SQRT(**.+9.) 1.3+SIN(Y) ALOG(A+1.65+COS()) R=SQRT(A+ABS(B*)+**M S=COS(*P*+A)*EP(BETA*)
ARİTMETİK DEYİM FONKSİYONU Programın ihtiyaç duyulan yerinde çağrılmak amacı ile program içinde birden fazla yerde kullanılan bazı aritmetiksel ve mantıksal işlemlerin tanımlanması imkanını sağlayan fonksiyonlardır. Bu tanımlamanın programcı tarafından verilmesi nedeniyle, kullanıcı tarafından tanımlanan fonksiyon olarak isimlendirilir. Genel formu: <fonksiyon ismi> (a1,a,an)=<ifade> fonksiyon ismi : geçerli fortran değişken ismi (a1,a,,an) : ifadeyi oluşturan değişkenler ifade : aritmetiksel ve mantıksal herhangi bir ifade C(x)=COS(0.0174539*) BAD(I,Y)=(Y+Y=)**I-C 3
4 Soru: Ekrandan girilen x değerine göre aşağıdaki bağıntı sonuçlarını bulan ve yazan programı fortran dilinde kodlayınız. 8) 5)( ( 3, 8 5) ( 5, 5) ( 5 1 F F F
ALT PROGRAMLAR Programın işleyişi sırasında aynı işlemler farklı değerler uygulanmak suretiyle bir çok kez tekrarlanabilir. Bunları her kullanım için ayrı ayrı yazmak yerine bir defa yazmak ve ihtiyaç duyulması halinde bu işlem komutlarına başvurmak daha elverişlidir. Bir yada daha fazla değişkene bağlı olarak aynı program içinde yer alan fakat ayrı bir program gibi kesin sınırlarla tanımlanabilen işlemlerden oluşan program parçasına ALT PROGRAM denir. 1) Açık alt program Bir program içinde esas programın bir parçası gibi davranan alt programlardır. (FUNCTION alt programları) ) Kapalı alt program Ana program dışında istenildiği zaman farklı ana programlar tarafından kullanılan alt programlardır. (SUBROUTINE alt programlar : FUNCTION veya SUBROUTINE alt programlarından dönüşün otomatik olarak gerçekleşmesini sağlayan fortran deyimidir. Kuralları: Alt programlar en az bir deyimi içermelidir. Alt programlardan dönüş kendisini çağıran yere veya bir alt komut satırına olacaktır. KAPALI ALT PROGRAM AÇIK ALT PROGRAM Alt programdan dönüş kendisini çağıran CALL deyiminin bir altına olacaktır. ile S=SINUS() komut satırına dönülür. Açık alt programdan dönüş alt programın çağrıldığı komut satırına yapılır. FUNCTION ALT PROGRAMLAR Programın bir parçası gibi davranan ve birden fazla işlem içeren alt programlardır. Genel formu: FUNCTION <isim> (a1,a,a3,,an) İsim fonksiyonun ismi (a1,a,a3,an) ana programdan alt programa aktarılacak değişkenlerin listesidir. Her biri indissiz bir değişken, bir dizi ismi bir alt program ismi olabilir. Alt programlardan tek bir değer döner. 5
Soru : f(x) işlemini x in 3. ve. Değerleri için gerçekleştiren ve bu değerlerin toplamını yazan programı fortran dilinde kodlayınız. x x f ( x) x x 5x x SUBROUTINE ALT PROGRAMALAR Başlı başına bir fortran programı gibi davranan ve bir başka alt program veya ana program tarafından çağrılabilir özellikteki alt programlardır. Genel formu: SUBROUTINE <alt program adı> (a1,a,a3,,an) (a1,a,a3,an) ana program ile alt program arasındaki iletişimi sağlayan değişkenlerin listesidir. (parametre listesi) *SUBROUTINE alt programlar CALL deyimi ile aktif hale getirilirler, ayrıca birden fazla çağrılabilirler. CALL ORNEK SUBROUTINE ORNEK CALL ASAL CALL ASAL SUBROUTINE ASAL Ana programda kullanılan bir değişken veya satır numarası alt program içinde farklı amaçlar için kullanılabilir. Bu hiçbir karışıklığa neden olmaz. SUBROUTINE alt programlar STOP deyimi içermezler. CALL deyimindeki parametrelerle, SUBROUTINE deyimindeki parametreler birebir eşleneceğinden sayı ve tür olarak uyuşmalıdırlar. 6
ANA PROGRAM ALT PROGRAM CALL ALT (A,B,I,C) SUBROUTINE ALT(D,E,F,G) INTEGER F ANA ALT TÜRÜ A B C I D E F G Ana programdaki A değişkeninin değerinin alt programdaki D değişkeninin değerinin değişmesini sağlar veya Alt programda F nin değerinin değişmesi ana programdaki I nın değerinin değişmesini sağlar. ANA PROGRAM ALT PROGRAM INTEGER A(5),B(5),C(5) CALL TOPLA (A,B,C) SUBROUTINE TOPLA(I,J,K) DIMENSION I(5),J(5),K(5) Eşleşen elemanlara dizi adı verilmiş ise ait programda karşılık gelen parametrelerin dizi olduğu belirtilmelidir. ANA ALT A(1) I(1) A() I() B(1) J(1) B() J() C(1) K(1) C() K() 7
Soru: aşağıdaki programın çıktısını bulunuz. COMMON deyimi Farklı programlardaki aynı veya farklı değişkenlerin aynı bellek alanını ortak kullanmalarını sağlayan fortran deyimidir. Bilgisayar belleğinin daha verimli bir şekilde kullanılmasını sağlar. ANA PROGRAM ALT PROGRAM COMMON I,J,K,A SUBROUTINE. COMMON L,M,N,B ANA PROGRAM I J K A ALT PROGRAM L M N B 8
EQUIVALENCE deyimi: Aynı program içindeki farklı değişkenlerin aynı bellek alanını kullanmalarını sağlayan deyimdir. Genel formu: EQUIVALENCE (değişken listesi),(değişken listesi), (değişken listesi) : aynı bellek alanını kullanacak değişken listesi EQUIVALENCE (A,B,C),(D,E) A,B,C aynı bellek alanını D,E aynı bellek alanını kullanırlar. A,B D C E E değişkeninin değerinin değişmesi bellek alanını paylaşan D değişkeninin değerini değiştirecektir. INTEGER A(5),B(5) EQUIVALENCE (A,B) Deyimleri ile A ve B dizilerinin A(1) A() A(3) A(4) A(5) şeklinde aynı bellek alanını kullanmaları sağlanabilir. B(1) B() B(3) B(4) B(5) 9