Fortran Programlama (Fortran90/95)

previous next

İFADELER
Aşağıda, Fortran da kullanılan atama işlemleri verilmektedir:

Atama İfadesi
Tanım :
Atama işleminde eşitliğin sol tarafında kalan değer değişken olmalıdır. Eşitliğin sağ tarafındaki değer ise bir sabit, sayı, değişken, fonksiyon veya ifade olabilir. Sağ taraftaki değerin işareti sol taraftaki değişkende de saklanır.
 

	degisken = ifade
Örnekler :
	pi = 3.141593
	uzaklik = 0.5 * ivme * zaman ** 2
	kenar = hipotenus * cos(teta)
Karakterler

CHARACTER ifadesi, karakter veri tipinin tanımlandığı bir ifadedir. Karakterlerin uzunlunğu (len=<uzunluk>) ile veya <len> ile verilmektedir. Eğer karakterin uzunluğu tanımlanmazsa bu geçer değer olarak 1 olarak alınır. Aşağıda zemini gölgelendirilmiş karakter tanımlama şeklini FORTRAN 95 te kullanmayınız.

Karakter İfadesi
	CHARACTER(len=<uzunluk>) :: degisken adi[, degisken adi]
	CHARACTER(<uzunluk>) :: degisken adi[, degisken adi]
	CHARACTER :: degisken adi[, degisken adi]
	
	CHARACTER*<uzunluk> :: degisken adi
	CHARACTER degisken adi*<len>       
Örnekler :
	CHARACTER(len=10) :: ilk, son, orta
	CHARACTER(10) :: ilk = 'Benim adım'
	CHARACTER :: orta_baslangic 

Örnek:
-------
PROGRAM Bolum7_A01
!
! bu program bir isim girilmesini ve 
! ekrana yazdirilmasini saglar
!
IMPLICIT NONE
CHARACTER (20) :: Ad
!
	PRINT *,' Adinizi giriniz.'
	PRINT *,' 20 karaktere kadar'
	READ *,Ad
	PRINT *,Ad
!
END PROGRAM Bolum7_A01
END PROGRAM İfadesi

Bu END PROGRAM ifadesi Fortran programının son ifadesi olmalıdır. Bu satır, derleyiciye bu satırdan sonra başka satırın olmayacağı belirtir. Programın çalışması bu satırla karşılaşılınca biter. Program adının yazılması ise isteğe bağlıdır.
	END PROGRAM [ad]

Örnek:
-------
PROGRAM Toplam_ve_Ortalama
!
! Bu program klavyeden uc sayinin
! okunmasindan sonra ortalamasini alir
!
IMPLICIT NONE
REAL :: N1,N2,N3, Ortalama = 0.0, Toplam = 0.0
INTEGER :: N = 3
	PRINT *,' Uc sayi giriniz.'
	PRINT *,' Sayilar birbirinden bosluk veya virgul ile ayrilmalidir'
	READ *,N1,N2,N3
	Toplam = N1+N2+N3
	Ortalama = Toplam/N
	PRINT *,'Sayilarin toplami ',Toplam
	PRINT *,'Sayilarin ortalamasi ',Ortalama
END PROGRAM Toplam_ve_Ortalama
IMPLICIT NONE İfadesi

Bu ifade FORTRAN daki standart yazım şeklini kapatır. Bir program içinde kullanılırsa, program içinde kullanılacak bütün değişkenler başlangıçta tanımlanmalıdır.
	IMPLICIT NONE

Örnek:
-------
PROGRAM Zaman
IMPLICIT NONE
REAL :: I_dakika, Uzaklik, G_sure
INTEGER :: Dakika, Saniye
REAL , PARAMETER :: I_Yil = 9.46E12
! I_Yil   : isigin 1 yilda Km olarak aldigi yol 
! I_dakika: isigin 1 dakikada Km olarak aldigi yol 
! Uzaklik : Gunesten dunyaya olan uzaklik
! G_sure  : 1 dakikada alinan yol icin gecen sure
! Dakika  : Gecen surenin dakikasinin tam kismi
! Saniye  : Gecen surenin saniyesinin tam kismi
!
    I_dakika = I_Yil/(365.25*24.0*60.0)
	Uzaklik = 150.0*10**6
	G_sure = Uzaklik / I_dakika
	Dakika = G_sure
	Saniye = (G_sure - Dakika)*60
	Print *,' Isik gunesten dunyaya ' , Dakika,' dakika'
	Print *,'  ' , Saniye,' Saniye'
	Print *,' sonunda ulasir'
END PROGRAM Zaman
INTEGER İfadesi

Bu ifade, Fortran da kullanılacak olan tamsayı değişkenlerin tanımlandığı satırdır. Tamsayı değişken tanımlama aşamasında ilk atama işlemi yapılabilir.
	INTEGER :: degisken adi[, degisken adi, vs.]
	INTEGER :: i, j, sayac
	INTEGER :: gun = 4

Örnek:
-------
PROGRAM Bolum8_01
IMPLICIT NONE
INTEGER			:: i
REAL            :: r
CHARACTER (1)   :: c
LOGICAL         :: l
COMPLEX	        :: cp
	PRINT *,' Tamsayi   ',KIND(i)
	PRINT *,' Gercel    ',KIND(r)
	PRINT *,' Karakter  ',KIND(c)
	PRINT *,' Mantiksal ',KIND(l)
	PRINT *,' Karmasik  ',KIND(cp)
END PROGRAM Bolum8_01
LOGICAL İfadesi

LOGICAL ifadesi mantıksal veri tiplerinin tanımlanması amacı ile kullanılır. Program içinde kullanılacak mantıksal ifadeler balangıçta tanımlama yapılabilir.
	LOGICAL :: degisken adi[, degisken adi vs.]
	LOGICAL :: baslangic, kontrol
	LOGICAL :: kontrol = .false.
PROGRAM İfadesi

PROGRAM ifadesi ile programa bir isim verilir. Bu programın ilk satırında olmalıdır. Programın adı 1 ile 31 tane alfabetik karakterden, sayıdan ve alt çizgiden oluşabilir. Fakat ilk değer karakter olmalıdır.
	PROGRAM program_adi
	PROGRAM ilk_programim
READ İfadesi

READ ifadesi standart giriş aygıtlaından verilein girilmesini sağlar. Verilerin okunması esnasında girilen değişkenler nasıl sıralandı ise verilerde bu sırada değerlendirilir. Veriler girilirken aralarında boşluk veya, verilmelidir. Okuma işlemi ne kadar yapılacaksa o kadar kullanılması daha uygundur.
	READ (*,*) degisken adi[, degisken adi, vs.]
	READ (*,*) basinc
	READ (*,*) uzaklik, zaman
REAL İfadesi

REAL ifadesi ile progam içerisinde kullanılacak olan gerçel değişkenler tanımlanır.
	REAL :: degisken adi[, degisken adi, vs.]
	REAL :: degisken adi = deger

	REAL :: uzaklik, zaman
	REAL :: uzaklik = 100

Örnek:
-------
PROGRAM Karmasik_sayilar
IMPLICIT NONE
!
! genlik ve faz girildikten sonra 
! sistemin frekans tepkisi hesaplanmaktadir
!
REAL :: Omega ,Gercel_kisim , Sanal_kisim , Genlik, Faz
COMPLEX:: Frekans_tepkisi
! 
! Giris frekansi Omega 
! 
	PRINT *, 'Giris frekansi ' 
	READ *, Omega 
! 
	Frekans_tepkisi = 1.0 / &
		CMPLX( - Omega * Omega + 1.0 , 2.0 * Omega)
	Gercel_kisim = REAL(Frekans_tepkisi)
	Sanal_kisim = AIMAG(Frekans_tepkisi) 
!
! kutupsal koordinatlarin hesaplanmasi (genlik ve faz) 
! 
	Genlik = ABS(Frekans_tepkisi)
	Faz = ATAN2 (Sanal_kisim, Gercel_kisim)
!
	PRINT *, Omega, ' Frekansinda'
	PRINT *, ' Tepki  = ', Gercel_kisim,' + I ', Sanal_kisim
	PRINT *, ' kutupsal koordinatlarda '
	PRINT *, ' Genlik = ', Genlik
	PRINT *, ' Faz    = ', Faz
END PROGRAM Karmasik_sayilar
STOP İfadesi

Bir Fortran programının çalışmasını durdurur. STOP ifadesi programın değişik yerlerinde olabilir. Eğer program içerisinde END ifadesine bir STOP ifadesinden önce erişiliyorsa STOP ifadesini kullanmaya gerek yoktur.
	STOP
WRITE İfadesi

WRITE ifadesi standart çıkış aygıtlaından verilein alınmasını sağlar. Verilerin yazdırılması esnasında çıktı değişkenleri nasıl sıralandı ise verilerde bu sırada verilir. Biçimlendirilmiş veya biçimlendirilmemiş çıktılar hazırlanabilir.
	WRITE (*,*) ifade[, ifade, vs.]

	WRITE (*,*) basinc
	WRITE (*,*) uzaklik, zaman
	WRITE (*,*) 'SIN(teta) = ', SIN(teta)
Program yazarken,
1. Çözmek istediğiniz problemi iyi tanımlayınız ve anlayınız,
2. Programa, girilecek ve programdan elde edilecek sonuçları belirleyiniz,
3. Programı yazmadan önce algoritma veya akış diyagramını çiziniz,
4. Akış diyagramını veya algoritmayı Fortran komutları haline getiriniz,
5. Fortran programınızı test ediniz (alfa, beta testleri-*).
Alıştırma 2. Test 2.
© Copyright Mehmet Kabak. 2003. Tüm hakları saklıdır.
previous next
Hosted by www.Geocities.ws

1