Jeofizik Serbest Giriş-Çıkış İşlemleri Formatlı Giriş - Çıkış İşlemleri Temel kütüphane Fonksiyonları ( Intrinsic Function ) Karşılaştırma Öperatörleri ve Mantıksal Öperatörler Serbest (Basit) Giri ş /Ç ı k ı ş İ ş lemleri Serbest (formats ı z) okuma deyimi READ *, giri ş listesi veya READ (*,*) giri ş listesi Ş eklindedir, formats ı z veri yazma deyimleri ise PRINT *, ç ı k ı ş listesi veya, WRITE (*,*) ç ı k ı ş listesi ş eklinde genel kullan ı ma sahiptir. Burada giri ş listesi; birbirinden virgüllerle ayr ı lm ı ş de ğ i ş kenler dizisi (karakter toplulu ğ u) olabilir. ç ı k ı ş listesi: birbirinden virgüllerle ayr ı lm ı ş de ğ i ş kenler, dizisi veya bir formül olabilir. Örne ğ in ; WRITE (*,*) “Bu program üç say ı n ı n ortalamas ı n ı hesaplar.” WRITE (*,*) “Say ı lar ı girin:” READ (*,*) A, B, C Ort = (A + B + C)/ 3.0 WRITE (*,*) “Ortalama =, ” Ort Bu program ı n sonucunu ekranda ş öyle görece ğ iz, Bu program üç say ı n ı n ortalamas ı n ı hesaplar. Say ı lar ı girin: 5 7 12 Ortalama = 8.0READ deyimi ile okunan say ı lar, a ş a ğı daki gibi alt alta da girilebilirdi. ÇIKTI Bu program üç say ı n ı n ortalamas ı n ı hesaplar. Say ı lar ı girin: 5 7 12 Ortalama = 8.0Formatl ı Giri ş /Ç ı k ı ş İ ş lemleri Giri ş /Ç ı k ı ş i ş lemlerinde serbest format kullanmak ? kullan ı c ı ya bir tak ı m kolayl ı klar sa ğ lamakla birlikte giri ş ve ç ı k ı ş parametrelerimizin görüntülenmesini kontrol etmemizi engellemektedir. Dolay ı s ı yla Format deyimi giri ş /ç ı k ı ş parametrelerimizin özelliklerini yani verilerimizin hangi tip ve ne uzunlukta oldu ğ unu belirtir. Bir veya daha fazla giri ş /ç ı k ı ş parametresi ile ili ş kilidir ve n FORMAT ( f1,f2,....fn ) ş eklinde yaz ı l ı r.Burada n programdaki giri ş / ç ı k ı ş deyimlerinin ? numaras ı , f1,f2,...fn ise FORMAT deyiminin ba ğ l ı oldu ğ u giri ş /ç ı k ı ş de ğ i ş kenlerinin hangi tip olduklar ı n ı ve hangi tip ’ e dönü ş türülece ğ ini gösteren alan bilgileridir (format edit descriptor). Bu bilgiler giri ş /ç ı k ı ş listesindeki de ğ i ş kenlerle say ı , s ı ra ve mod bak ı m ı ndan uyu ş mal ı d ı r. Format Deyiminin bir özelli ğ ide ana program ? içerisinde herhangi bir yerde bulunabilmesidir, sadece DO döngüsü varsa bu döngünün son deyimi olamaz.READ(*,*) veya WRITE (*,*) {Serbet Format} READ (*,'(2I5,F10.2)') ... De ğ i ş kenler (variables) ... READ (*,"(5F10.2)") ... De ğ i ş kenler ... WRITE (*,'(A,I5)') …De ğ i ş kenler ve tan ı mlamalar (variable and expressions)..... WRITE (*,"(10F5.2)") ... De ğ i ş kenler ve tan ı mlamalar (variable and expressions)..... Burada 2I5, F10.2, 5F10.2, A,I5, ve 10F5.2 alan bilgileridir.CHARACTER(LEN= 20) , PARAMETER :: FMT 1 = "(I5,F10.2 )" CHARACTER(LEN=*), PARAMETER :: FMT2 = "(4I5, 5E14.7 , 8F5.0)" READ(*,FMT1) ... De ğ i ş kenler (variables) ... READ(*, FMT1) ... De ğ i ş kenler (variables) ... WRITE(*, FMT2 ) ... De ğ i ş kenler ve tan ı mlamalar (variables and expressions) ... WRITE (*,FMT2 ) ... De ğ i ş kenler ve tan ı mlamalar ... Bir karakter de ğ i ş kenin (String) READ ve WRITE deyimlerindeki kullan ı ş ı na örnek CHARACTER(LEN= 80 ) :: String String = "(3I5, 10F8.2)" READ(*,String) ... de ğ i ş kenler ... WRITE(*,String) ... De ğ i ş kenler ve tan ı mlamalar… Ayn ı FORMAT hem READ hemde WRITE deyimlerinde kullan ı labilir.Dizin Uzunlu ğ u Formatl ı okumalarda dikkat edilmesi gereken bir nokta ’ da ? Giri ş te Dizin ’ in uzunlu ğ u mümkün oldu ğ unca uzun tutulmal ı d ı r, aksi takdirde ç ı k ı ş format ı hatal ı ve eksik olacakt ı r. Örne ğ in; --------------------------------------------- CHARACTER(LEN =10 ) :: FMT  FMT = “ (I2,F3.5,E15.7)” WRITE (*,FMT) ...... --------------------------------------------- Ç ı kt ı ?? ( I2,F3.5,E olacakt ı r.................Giri ş ve Ç ı k ı ş için kullan ı lan çe ş itli format alan bilgisi ? tan ı mlamalar ı vard ı r. Her bir alan bilgisi belirli bir de ğ erin nas ı l de ğ erlendirilece ğ ini sisteme bilgi olarak vermektedir. I tipi tan ı mlama ? Tamsay ı lar ı n giri ş ve ç ı k ı ş ı nda kullan ı l ı r, w ayr ı lacak olan uzunlu ğ u gösterir ve Iw ş eklinde gösterilir ( I5, 2I6 vb) . Giri ş verisi tamsay ı d ı r ve say ı ayr ı lcak alan içinde sa ğ dan hizalan ı r. Tamsay ı alan uzunlu ğ unu a ş mamal ı d ı r. Ç ı k ı ş ta bu tamsay ı n ı n de ğ eri kay ı t ortam ı ndaki alan içine giri ş te oldu ğ u gibi sa ğ dan hizalanarak yaz ı l ı r. Say ı negatif ise (-) eksi i ş areti bas ı l ı r aksi takdirde (+) art ı i ş areti bas ı lmaz. Ayr ı lm ı ş olan alan uzunlu ğ u de ğ eri yeterli de ğ ilse yani w dan büyükse say ı bas ı lmaz, alan * i ş areti ile doldurulur. Format Deyimi Tan ı mlamalar ıF tipi tan ı mlama ? Giri ş ve Ç ı k ı ş ta Gerçel say ı lar ı n gösterimi için kullan ı l ı r. Burada da w alan uzunlu ğ unu d sa ğ dan itibaren desimal noktan ı n yerini gösterecek ş ekilde Fw.d olarak gösterilir (F 5.0, 3F8.4 gibi), w alan uzunlu ğ u belirlenirken i ş aret ve desimal nokta için de birer yer dü ş ünülmelidir, dolay ı s ı yla w>= d+2 olmal ı d ı r. Gerçel say ı olan giri ş verisi sa ğ dan hizalanmal ı d ı r. Alan bilgisinde desimal noktan ı n yeri belirtildi ğ inden verilerde desimal nokta yaz ı lmayabilir. Ancak veriler desimal noktal ı olarak girildiyse bu yer alan bilgisindekine göre önceliklidir . F10.4 olarak girilen bir alan bilgisi, herhangi bir gerçel say ı n ı n bilgisayara aktar ı laca ğı n ı gösterir.E tipi tan ı mlama ? Giri ş ve Ç ı k ı ş ta üslü gerçel say ı lar ı n giri ş ç ı k ı ş ı için kullan ı l ı r ;  Ew.d ş eklinde yaz ı l ı r, burada w alan uzunlu ğ unu , d bu alanda E den itibaren desimal noktan ı n yerini belirtir. Örne ğ in E10.2 alan bildirisi , herhangi bir üslü gerçel say ı n ı n bilgisayara giri ş verisi olarak aktar ı laca ğı n ı gösterir. Üslü gösterim durumundada verinin alan içinde sa ğ dan hizalanmas ı zorunludur. Ç ı k ı ş ’ ta w say ı da yer ayr ı l ı r, bunun içinde i ş aret ve desimal nokta için birer, üs için 4 yer olmak üzere toplam 6 yer vard ı r. Pozitif say ı larda i ş aret bas ı lmaz D tipi tan ı mlama Çift incelikli (double precission) gerçel say ı lar ı n giri ş ç ı k ı ş ı nda kullan ı l ı r ;   Dw.d ş eklinde yaz ı l ı r ve w alan uzunlu ğ unu , d ise desimal noktan ı n yerini gösterir . L tipi alan bildirisi Mant ı ksal büyüklüklerin giri ş ç ı k ı ş ı nda kullan ı l ı r ; Lw ş eklinde yaz ı l ı r, w alan uzunlu ğ unu gösterir. Giri ş te w alan uzunlu ğ u >= 1 olmal ı d ı r ; ba ş ta bo ş luklar olabilir . Giri ş alan ı ndaki ilk karakter TRUE (do ğ ru) için T ve FALSE (yanl ı ş ) için F olmal ı d ı r . Bunlar ı izleyen karakter göz önüne al ı nmaz . Giri ş alan ı nda T ya da F yoksa bu bilgisayar belle ğ ine FALSE olarak aktar ı l ı r . G tipi tan ı mlama Bir genel alan bildirisidir. Tamsay ı , gerçel çift incelikli , kompleks ve mant ı ksal büyüklüklerin giri ş ç ı k ı ş ı nda kullan ı l ı r;   Gw.d ş eklinde yaz ı l ı r, w alan uzunlu ğ unu d desimal noktan ı n yerini belirler . Giri ş verisi I ya da L tipinde ise , Gw.d tan ı mlamas ı Iw ya da Lw olarak çal ı ş ı r, .d k ı sm ı göz önüne al ı nmaz ; F , E ya da D tipinde ise Fw.d , Ew.d ya da Dw.d biçiminde çal ı ş ı r . Giri ş verisi kompleks ise gerçek ve sanal k ı s ı mlar için iki ayar ı G alan bildirisi gereklidir Z tipi tan ı mlama Heksadesimal büyüklüklerin giri ş ç ı k ı ş ı için kullan ı l ı r ; Zw ş eklinde yaz ı l ı r, w alan uzunlu ğ unu belirtir G İ R İ Ş . Veri hekzadesimal sabit olmal ı d ı r . Giri ş alan ı ndaki bo ş luklar s ı f ı r olarak yorumlan ı r . Veri sa ğ dan hizalanm ı ş olmal ı d ı r. Giri ş te, Giri ş verisi uzunlu ğ u >w ise fazla haneler soldan kesilerek bilgi belle ğ e aktar ı l ı r . Heksadesimal de ğ er ç ı k ı ş ortam ı na sa ğ dan hizalanarak yaz ı l ı r, kalan yerler varsa bo ş b ı rak ı l ı r. Ç ı k ı ş ta da Giri ş verisi uzunlu ğ u >w olmas ı durumunda ç ı k ı ş ta da fazla haneler soldan kesilerek yaz ı l ı r A tipi tan ı mlama Alfa nümerik büyüklüklerin giri ş ve ç ı k ı ş ı için kullan ı l ı r ;   Aw ş eklinde yaz ı l ı r burada w alan uzunlu ğ unu gösterir . Alfa nümerik bilgi bellekte karakter formunda sakland ığı ndan hesaplamalarda kullan ı lamaz . Bilgi giri ş alan ı nda sa ğ dan hizalanm ı ş olmal ı d ı r Alfa nümerik bilgi giri ş te oldu ğ u gibi ç ı k ı ş ortam ı ndada sa ğ dan hizalanarak yaz ı l ı r.H tipi tan ı mlama Bir karakter dizisini giri ş ç ı k ı ş ı için kullan ı l ı r ; wHs ş eklinde yaz ı l ı r, w alan uzunlu ğ unu , s karakter kümesini gösterir . Giri ş parametresi olarak w say ı da karakter yerine s karakter kümesi yer al ı r, bo ş luk karakterleri de bunun içindedir . Ç ı k ı ş ta ise giri ş i ş lemi sonucu onun yerine geçirilmi ş karakterler d ı ş ortamda görünür .X tipi tan ı mlama  Program Giri ş ve ç ı k ı ş ı nda bo ş luklar ı göstermek için kullan ı l ı r ;  wX ş eklinde gösterilir ( 5X, 2x gibi), w alan uzunlu ğ unu gösterir . Giri ş te w kadar karakter in atlanaca ğı n ı ifade eder, ç ı k ı ş ta ise w say ı da bo ş luk b ı rak ı laca ğı n ı gösterir. T tipi tan ı mlama   Tn ş eklinde gösterilir, giri ş ve ç ı k ı ş ta verilerin ilk karakterlerinin bulundu ğ u yeri belirlemekte kullan ı l ı r.Bir çok format tipi proram içinde tekrar edebilir vede ? grupland ı r ı labilir. CHARACTER(LEN= 30 ) :: Format Format = "( 5X, I5.2, F10.3, A, ES14.7 )" READ(*,Format) ... De ğ i ş kenler (variables) ... WRITE(*,Format) ... De ğ i ş kenler ve tan ı mlamalar Burada 5 farkl ı format tipi 5X, I5, F10.3, A,ES14.7 bir arada kullan ı lm ı ş t ı r, format tipleri birbirlerinden virgül ile ayr ı lmaktad ı r. Bir program içinde READ ve WRITE deyimleri hem serbest formatl ı hemde Formatl ı olarak kullan ı labilir.Temel Kütüphane Fonksiyonlar ı (Fortran Intrinsic Functions)Fonksiyon Aç ı klama Argüman Tipi Geri Dönü ş Tipi Örnek SonuçFonksiyonlar ı n Kullan ı m ı nda Dikkat Edilmesi Gereken Durumlar: De ğ i ş ken tipi REAL olan fonksiyonlarda de ğ i ş ken veya ? sabit mutlaka REAL olmal ı d ı r y = SQRT(4.0) ile y de ğ i ş kenine 2.0 de ğ eri atan ı r, fakat 4 bir tamsay ı sabiti oldu ğ u için y = SQRT( 4 ) atamas ı geçersizdir. Bunun yerine y = SQRT(REAL( 4 ) ) atamas ı kullan ı labilir. Trigonometrik fonksiyonlarada aç ı radyan olarak kabul ? edilir. y = SIN( 1.5 ) ile 1.5 radyan ı n sinüsü y de ğ i ş kenine atan ı r. Derece cinsinden bir aç ı n ı n sinüsü hesaplanmak istendi ğ inde, 2* Pi radyan = 360 derece (Pi = 3.141592... ) e ş itli ğ i kullan ı labilir. 1 derecenin sinüsünü hesaplamak için y = SIN (1.0*Pi/180.0) e ş itli ğ ini kullan ı r ı z. MOD(x, y) fonksiyonu x/y'den kalan ı hesaplar. ? Örne ğ in: z = MOD (20,4) ile z de ğ i ş kenine 0 atan ı rken, z = MOD( 13,2 ) ile 1 de ğ eri atan ı r. Bu fonksiyon asl ı nda x - INT(x/y)*y i ş lemini yapar. Ş öyleki MOD (13,2) = 13 - INT(13/2)*2 = 13 - 12 = 1 Fonksiyonlar her zaman aritmetik operatörlerden önceliklidirler..........Kar ş ı la ş t ı rma Operatörleri ve Mant ı ksal Operatörler İ ki veya daha fazla de ğ erin kar ş ı la ş t ı r ı lmas ı gereken ? durumlarda kar ş ı la ş t ı rma operatörleri ve/veya mant ı ksal operatörler kullan ı l ı r. Bu operatörler; Operatör Aç ı klama Örnek Anlam Eski Yeni .GT. > Büyüktür x>y x, y'den büyüktür .LT. < Küçüktür x= Büyük-e ş it x >=y x, y'den büyük veya e ş ittir .LE. <= Küçük-e ş it x<=y x, y'den küçük veya e ş ittir .NE. /= e ş it de ğ il x /=y x, y'den farkl ıEski sütunundaki operatörler FORTRAN 77 'ye kadar ki dönemde kullan ı lmaktayd ı . Fortran 90 'dan itibaren, ayn ı anlama gelen Yeni sütunundaki operatörler dahil edilmi ş tir. Fortran 90 'da hem Eski hem de yeni operaörleri kullanmaya izin verir. E ğ er, birden çok kar ş ı la ş t ı rma i ş lemi yap ı lacak ise bu operatörler, Mant ı ksal Operatörler'le birle ş tirilebilir Mantı ksal Operatörler Operatör Aç ı klama Örnek .AND. Mant ı ksal VE x>2 .AND. x2 .OR. x2 .EQW. Mant ı ksal E Ş DE Ğ ER x .EQW. Y .NEQW. Mant ı ksalE Ş DE Ğ ER DE Ğİ L x .NEQW. YY = ln|2x|+3x Y = log ( ABS (2x) ) + 3x   Z = a - ( ( a-b ) / ( b-c ) ) - c Lamda = tan(x) / (sin(x+1))** 2   (x+y ) / z + ( e / ( d+a)) 2 ( x+y ) / z + ( e / ( d+a))**2   A ş a ğ daki aritmetik ve mant ksal atama deyimlerinden hangileri ge ç ersizdir, Neden?   A*B+C=10 • -I= J**2 • A=B+2 • C=.FALSE.OR..TRUE. • e) C=(X+Y).OR.FALSE..