FORTRAN (FORmula TRANslation) Fortran komut satırı toplam 80 kolon ve 5 bölgeden oluģur. Komut satırının yapısı aģağıdaki gibidir: 1 2...5 6 7...72 73...80 A B C D E A Bölgesi: (1. kolon) B Bölgesi: (2-5 kolon) C Bölgesi: (6. kolon) D Bölgesi: (7-72. kolon) E Bölgesi: (73-80 kolon) Açıklama satırı olup olmadığını belirleyen bölgedir. Açıklama satırı olduğunu komut satırının 1. kolonuna yazılan C (Comment) parametresi belirtir. Komut satırına ait satır numarasının yazıldığı bölgedir. Eğer komut satırına bir numara verilmemiģse bu belge boģ bırakılır. Komut satırının devam satırı olup olmadığını belirleyen bölgedir. Komut satırı bir önceki satırın devamı ise 6. kolona boģluk dıģında her hangi bir karakter yazılır. (*,$, vs.) Fortran komutlarının yazıldığı bölgedir. Tamamlayıcı bilgilerin yazıldığı bölgedir. Ġstenirse boģ bırakılabilir. Programın uygulanmasında hiçbir etkisi yoktur. Fortran Programını OluĢturma: Yazılacak programı oluģturan komut satırları mevcut editörlerden biri kullanılarak fortran yazım kurallarına uygun olarak oluģturulurlar ve uzantısı.f veya.for olacak Ģekilde disk/disket üzerinde saklanır. Fortran Programını Derleme: OluĢturulan bir fortran programının derleme iģlemine tutulması zorunludur. (Compile-Build-Exe) 1
Fortran Alfabesi FORTRAN alfabesi 10 nümerik, 26 alfabetik ve 13 özel karakterden oluģur. DEĞĠġMEZLER: BĠLGĠ TÜRLERĠ: Fortranda kullanılan bilgiler 3 türlüdür. 1- Sayısal bilgiler 2- Mantıksal bilgiler 3- Alfasayısal bilgiler Ayrıca her bilgi türü 1- DeğiĢmezler 2- DeğiĢkenler Değeri değiģmeyen bilgilerdir. Fortran da 3 tür değiģmez vardır. olmak üzere ikiye ayrılır. 1-Sayısal DeğiĢmezler: (0-9) arası rakamlar, (+,-) iģaretleri, (.) parametresi ve üs bildiren indislerden oluģan sabitlerdir. Fortranda değiģmezleri türlerine göre 4 grupta inceleyebiliriz. Tamsayı DeğiĢmezi (0-9) arası rakamlardan oluģur, (+,-) iģaretleri içerebilirler, (.) nokta içermezler. Geçerli: 1-227 +88 1999 Geçersiz: 12.67 (Nokta iģareti kullanılmıģ) 1E02 (E indisi kullanılmıģ) 2
Tek Duyarlı Gerçel (Reel) Sayı DeğiĢmezi (0-9) arası rakamlardan oluģur, (+,-) iģaretleri içerebilirler, (.) nokta içerirler, (E) indisi içerebilirler, Üs kısmı tamsayı olmalıdır, Noktadan sonra 7 basamak hassasiyetindedir. Geçerli: 1.68-127.88 1.2E-08 1.9E+08 2.897E05 Geçersiz: 127 (Nokta kullanılmamıģ) 12.8E2.8 (üs kısmı tamsayı değil) 1.89898989999 (noktadan sonraki basamak sayısı 7 den fazla) Çift Duyarlı Gerçel (Reel) Sayı DeğiĢmezi (0-9) arası rakamlardan oluģur, (+,-) iģaretleri içerebilirler, (.) nokta içerirler, (D) indisi içerebilirler, Üs kısmı tamsayı olmalıdır, Noktadan sonra 16 basamak hassasiyetindedir. Geçerli: 1.77-127.88 1.2D-08 Geçersiz: 118 (Nokta kullanılmamıģ) 1.E18 (E kullanılmıģ) 1.25D3.8 (üs tamsayı değil) KarmaĢık Sayı DeğiĢmezi 0-9 arası rakamlardan oluģur. (E) ve (D) indisi ile üs kısmı verilebilir. Üs kısmı tamsayı olmalıdır. Her iki kısım nokta (.) içermelidir. Gerçek ve sanal olmak üzere iki kısımdan oluģan ifadelerdir. a+ib a ib : Gerçek kısım : Sanal kısım a+ib ifadesi fortranda (a,b) Ģeklinde gösterilir. (a : gerçek kısım, b : sanal kısım) Matematiksel Gösterimi Fortran Gösterimi 3.8+15.2i (3.8,15.2) -15.3i (0,-15.3) 7500.0+18.5i (7.5E+3,18.5) 1.82+i (18.2D-01,1D0) 3.8,15.2 (Parantezler yok) (3,-15.2) (Gerçek kısım için tamsayı kullanılmıģ) (1.E12,33) (Sanal kısım için tamsayı kullanılmıģ) (5.) (Sanal kısım tanımsız) 2-Mantıksal değiģmezler :.TRUE. veya.false. değerlerini içeren ve karar verme iģlemi sırasında kullanılan değiģmezler. 3- Alfasayısal değiģmezler : (tırnak) içerisindeki yazılan karakterler dizisidir. Simgesel gösterimi : bilgi Örnek: TRAKYA UNIVERSITESI veya 1234 3
DEĞĠġKENLER: Sürekli yeni değerler alabilen ancak aynı anda tek değer tutabilen ifadelerdir. DeğiĢkenler dıģ ortam ile bilgisayar arasındaki iletiģimde bir köprü görevi görür. 3 grupta incelenir. 1-Sayısal DeğiĢkenler: Genel olarak 0-9 arası rakamlar ile (+) ve (-) iģaretlerden oluģan üzerinde aritmetiksel iģlemler yapılabilen ifadelerdir. Fortranda sayısal değiģkenler Tamsayı Tek duyarlı gerçek sayı Çift duyarlı gerçek sayı KarmaĢık sayı 2-Mantıksal DeğiĢkenler: Karar vermede kullanılan ve.true. /.FALSE. değerlerini içeren değiģkenlerdir. 3-Alfasayısal DeğiĢkenler: Tüm karakterleri içeren üzerinde aritmetiksel iģlemler yapılamayan ifadelerdir. Fortrandan DeğiĢken Tanımlama: DeğiĢken tanımlama kuralları, Tanımlanan değiģken Ġngiliz alfabesindeki harfler, 0-9 arası rakamlardan oluģur. Tanımlanan değiģkenin ilk karakteri harf olmalıdır. Diğer karakterler harf yada rakam olabilir. Tanımlı değiģkenin uzunluğu maksimum 6 karakter olabilir. Aksi söylenmedikçe I,J,K,L,M,N harflerinden biri ile baģlayan değiģken tamsayı değiģken olarak kabul edilir. Aksi söylenmedikçe I,J,K,L,M,N dıģındaki harflerden biri ile baģlayan değiģken gerçel sayı değiģken olarak kabul edilir. DeğiĢkenlerin türü, tür tanımlama deyimleri kullanma sureti ile belirlenir. Geçerli DeğiĢkenler: BRUT MESLEK I222 SAYI1 TOPLAM Gerçel sayı değiģken Tamsayı değiģken Tamsayı değiģken Gerçel sayı değiģken Gerçel sayı değiģken Geçersiz DeğiĢkenler : 1SAYI BRUT-M SONUÇ ilk karakter harf değil tire(-) iģareti kullanılmıģ Türkçe karakter kullanılmıģ DeğiĢken Türlerinin Tanımlanması: Fortran değiģkenlerinin türlerini tanımlamak için tür tanımlama deyimleri kullanılır. Tür tanımlama deyimleri programın baģında yer alır. Tür tanımlama deyimleri 7-72. Sütun arasında yer almalıdır. Aynı değiģken iki farklı türde tanımlanamaz. Aynı program içinde farklı tür tanımlama deyimleri kullanılabilir. Tür tanımlama deyimleri ile dizi açılabilir. INTEGER REAL DOUBLE PRECISION COMPLEX LOGICAL CHARACTER DeğiĢkenleri basit değiģken, dizi adı veya tanımı olabilir. DeğiĢken sayısı birden fazla ise birbirlerinden virgüllerle ayrılmalıdır. 4
INTEGER DEYĠMĠ: Tamsayı değiģkenleri tanımlamada kullanılan tür tanımlama deyimidir. INTEGER BRUT, TOPLAM, TABAKA(100) Komut satırı ile veya INTEGER BRUT INTEGER TOPLAM INTEGER TABAKA(100) tanımlamasıyla BRUT ve TOPLAM tamsayı değiģken TABAKA(100) 100 elemanlı tamsayı dizi değiģken olarak tanımlanmıģtır. Aynı program içinde 1 den fazla INTEGER deyimi kullanılabilir. REAL DEYĠMĠ: Tek duyarlı gerçel sayı değiģkenleri tanımlamada kullanılan tür tanımlama deyimidir. REAL MALZEME,KALAN,NET(200) MALZEME, KALAN NET(200) değiģkenleri Tamsayı tek duyarlı gerçel sayı değiģkeni, 200 elemanlı tek duyarlı gerçel sayı değiģkeni olarak tanımlanmıģtır. Aynı program içinde birden fazla REAL deyimi kullanılabilir. REAL MALZEME REAL KALAN REAL NET(200) DOUBLE PRECISION DEYĠMĠ: Çift duyarlı gerçel sayı değiģkenleri tanımlamada kullanılan tür tanımlama deyimidir. DOUBLE PRECISION A, KALAN, A111(100) A, KALAN Çift duyarlı gerçel sayı değiģkenleri ve A111(100) 100 elemanlı Çift duyarlı gerçel sayı değiģkeni olarak tanımlanmıģtır. COMPLEX DEYĠMĠ: KarmaĢık sayı değiģkenleri tanımlamada kullanılan bir tür tanımlama deyimidir. COMPLEX MIN,MAX,BRUT1,K(100) veya COMPLEX MIN COMPLEX MAX COMPLEX BRUT1 COMPLEX K(100) tanımlamasında MIN,MAX,BRUT1 karmaģık sayı değiģken, K(100) 100 elemanlı karmaģık dizi değiģken olarak tanımlanmıģtır. LOGICAL DEYĠMĠ: Mantıksal değiģkenleri tanımlamada kullanılan bir tanımlama deyimidir. LOGICAL DOGRU, YANLIS, DENET(100) tanımlamasında DOGRU, YANLIS mantıksal sayı değiģken, DENET(100) 100 elemanlı mantıksal dizi değiģken olarak tanımlanmıģtır. 5
CHARACTER DEYĠMĠ: Alfasayısal değiģkenleri tanımlamada kullanılan bir tanımlama deyimidir. Genel formu; Ģeklindedir. CHARACTER [*n] <değiģken listesi>[n] n tanımlanan değiģkenin karakter uzunluğudur ve varsayılan büyüklüğü 1 byte dır en fazla 127 karakter olabilir. CHARACTER AD, SOY Komut satırı ile AD ve SOY alfasayısal değiģkenleri tanımlanmıģtır. CHARACTER*20 AD, SOY Komut satırı ile AD ve SOY alfasayısal değiģkenleri 20 karakter olarak tanımlanmıģtır. CHARACTER AD*20,SOY*10 Komut satırı ile AD alfasayısal değiģkeni 20 karakter ve SOY alfasayısal değiģkenleri 10 karakter olarak tanımlanmıģtır. 6
IMPLICIT DEYĠMĠ: Bir harf yada bir bölgeyi oluģturan harflerden biri ile baģlayan birden fazla değiģkenin türünü tanımlamada kullanılan fortran deyimidir. INTEGER REAL DOUBLE PRECISION IMPLICIT COMPLEX LOGICAL CHARACTER HARF IMPLICIT INTEGER(A,R,O) IMPLICIT REAL (A-L), LOGICAL (X,Y) IMPLICIT INTEGER(A-C), LOGICAL (B) A,R ve O harflerinden biri ile baģlayan değiģken tamsayı değiģken olarak kabul edilecektir. A ve L dahil bu aralıktaki harflerden biri ile baģlayan değiģken Tek duyarlı Gerçel sayı değiģken, X,Y harflerinden biri ile baģlayan mantıksal değiģken olacak kabul edilir. A,B,C harflerinden biri ile baģlayan değiģken tamsayı değiģken B ile baģlayan mantıksal değiģken olarak kabul edilsin istenmiģtir. ANCAK B değiģkeni iki farklı türde tanımlanamayacağından hatalıdır. FORTRANDA OPERATÖRLER: Bir iģlem yapmak, koģul cümlesini oluģturmak veya birden fazla koģul cümlesine bağlı olarak program akıģının yönlendirilmesi ve iģlemlerdeki önceliklerin hangi sırada yapıldığını göstermek amacıyla kullanılan operatörleri Aritmetiksel Karakter (Alfasayısal) ĠliĢkisel (KarĢılaĢtırma) Mantıksal Olmak üzere 4 gruba ayırabiliriz. ARĠTMETĠKSEL OPERATÖRLER: Aritmetiksel bir iģlemin yapılmasında kullanılan iģaretlerdir. ĠĢlem ĠĢaret Örnek Sonuç Üs alma ** 2**3 8 Bölme / 5/2 (bölen tamsayı) 5/2.(bölen real) 2 2.5 Çarpma * 3*2 6 Toplama + 2+3 5 Çıkarma - 7-3 4 Aritmetik iģlemlerdeki öncelikler: ĠĢaret ĠĢlem Önceliği ĠĢlem yönü ( ) Parantez En yüksek Ġçten dıģa ** Üs alma Soldan - Sağa *,/ Çarpma, Bölme Soldan Sağa +,- Toplama,Çıkarma En düģük Soldan - Sağa 5/2 Sonuç 2 dir. Çünkü tamsayı ile tamsayının aritmetik iģlem sonucu tamsayıdır. 5/2. Sonuç 2.5 dir. Çünkü bir tamsayı ile gerçel sayının sonucu gerçel sayıdır. 6**0.5 Sonuç gerçeldir. Bir tamsayının üssü gerçel ise elde edilen değer gerçeldir. 3**2 Sonuç tamsayıdır. Bir tamsayının üssü tamsayı ise sonuç tamsayıdır. 7
Aritmetik iģlem Fortran daki gösterimi Sonuç: (A=1, B=2, C=3, D=4 için) A B C (A+B)/C 1 A B C D ((A+B)*C)**D 6561 A B C A**B**C 1 B 4AC 2A 2 (B**2-4*A*C)/2*A -4 A B 1 2C D ((A+B)/(2*C-D))+1 2.5 A B D C A 2 2 1 (A/(B**2*D)/(C+A**2.)+1. 1.015625 8
ĠLĠġKĠSEL (KARġILAġTIRMA OPERATÖRLERĠ): ĠĢlem Simge Fortran gösterimi Örnek Sonuç EġĠT =.EQ. 3.EQ.3 3.EQ.2 a.eq. a a.eq. b 3.NE.2 EġĠT DEĞĠL.NE. 3.NE.3 a.ne. b a.ne. a 3.LT.4 KÜÇÜK.LT. 3.LT.2 BÜYÜK.GT. 4.GT.3 4.GT.5 KÜÇÜK veya EġĠT BÜYÜK veya EġĠT.LE. 4.LE.4 4.LE.5 4.LE.3.GE. 5.GE.3 5.GE.5 5.GE.3 KarĢılaĢtırma operatörlerinin tamamı aynı önceliğe sahiptir. MANTIKSAL OPERATÖRLER: Birden fazla koģul cümlesi birleģtirilerek DOĞRU veya YANLIġ mantıksal sonucunun oluģmasını sağlayan bağlaçlardır. ĠĢlem Operatör Örnek Sonuç Değil.NOT..NOT.(3.EQ.2).NOT.(3.EQ.3) Ve.AND. (3.EQ.3).AND.(2.EQ.2) (3.EQ.2).AND.(2.EQ.2) Veya.OR. (3.EQ.3).OR.(2.EQ.2) (3.EQ.2).OR.(2.EQ.5) Yada.EQV. (3.EQ.3).EQV.(2.EQ.2) (3.EQ.3).EQV.(3.EQ.2) Yada nın değili.neqv. (3.EQ.3).NEQV.(2.EQ.2) (3.EQ.3).NEQV.(3.EQ.2) DOĞRU YANLIġ DOĞRU YANLIġ DOĞRU YANLIġ DOĞRU YANLIġ YANLIġ DOĞRU 9
Mantıksal iģlemlerde öncelik sırası: ĠĢlem Operatör Önceliği ĠĢlem yönü Değil.NOT. En yüksek Soldan sağa Ve.AND. Soldan sağa Veya.OR. Soldan sağa Yada.EQV. Soldan sağa Yada nın değili.neqv. En düģük Soldan sağa AKTARMA DEYĠMLERĠ Kullanıcıdan bağımsız olarak bir değiģkene değer aktarmak için kullanılan deyimler fortranda aritmetik, mantıksal ve alfasayısal olmak üzere üç türlüdür. Genel formu: <değiģken> = <ifade> değiģkene aktarılan bilgi değiģkenin türü ile uyumlu olmalıdır. Örnek: Pi=3.141593 Uzaklik=0.5*ivme*zaman**2 Aritmetik aktarma deyimi: Aritmetiksel bir iģlem sonucunu yada sayısal bir sabiti sayısal değiģkene aktarmak için kullanılan deyimdir. L=5.2 L ye aktarılan değer 5 (L integer) A=5.2 A ya aktarılan değer 5.2 C=5/2. C ye aktarılan değer 2.5 K=5/2 K ya aktarılan değer 2 (K integer) = iģaretinin sağındaki iģlem sonucunun ilgili değiģkene hatasız bir Ģekilde aktarılabilmesi için iģlemin = iģaretinin solundaki değiģken ile aynı türde olması gerekir. Aktarılan bilgi değiģken ile aynı türde ise sorun yoktur fakat farklı türde ise bazı kayıplar söz konusudur. = iģaretinin Sol taraf Sağ taraf Örnek Açıklama T (Tamsayı) G (Gerçel) K=3.777 K ya 3 olarak aktarılır. G T A=3 A ya 3 olarak aktarılır. G G A=3.7 A ya 3.7 olarak aktarılır. 10
Alfasayısal Aktarma Deyimi: Alfasayısal bir bilgiyi alfasayısal bir değiģkene aktarmak için kullanılır. CHARACTER*2 AD,SOY ĠĢlem AD= ALI SOY= DERE Aktarılan değer AL DE Mantıksal Aktarma Deyimleri Mantıksal bir bilgiyi mantıksal bir değiģkene aktarmak için kullanılan deyimdir. ĠĢlem Y=(3.EQ.5).OR.( 4.EQ.8) D=(3.EQ.3).OR.( 4.EQ.8) Aktarılan değer.false..true. FORTRANDA PROGRAM YAPISI Fortran programları bir tane ana birim ve/veya derleyici özelliğine bağlı olarak belirtilen sayıda alt programdan oluģur. Bir fortran programının yapısı aģağıda görüldüğü gibidir. Fortran Programında kullanılan deyimler: Tanımlama Deyimleri ĠĢlem deyimleri Bu deyimlerin program içindeki sırası ise; Önce tanımlama deyimleri (Real, Integer,..) daha sonra iģlem deyimleri (Read, Write,..) Ģeklinde olmalıdır. 11