Serbest (Basit) Giriş/Çıkış İşlemleri Formatlı Giriş/Çıkış İşlemleri Temel Kütüphane Fonksiyonları (Intrinsic Functions) Karşılaştırma Operatörleri ve Mantıksal Operatö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 Ö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.0
READ 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.0
Formatlı 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, 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)') 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 :: FMT1 ="(I5,F10. 2)" CHARACTER(LEN= CHARACTER(LEN=20), PARAMETER :: FMT1 ="(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.................
Format Deyimi Tanımlamaları 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.
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 (F5.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 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 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<y x, y'den küçüktür .EQ. == Eşittir x == y x, y ye eşittir .GE. >= 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 Açıklama Örnek .AND. Mantıksal VE x>2 .AND. x<y .OR. Mantıksal VEYA x>2 .OR. x<y .NOT. Mantıksal DEĞİL .NOT. x>2 .EQW. Mantıksal EŞDEĞER x .EQW. Y .NEQW. MantıksalEŞDEĞER DEĞİL x .NEQW. Y
Y = 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..