fortran ornekleri 2013 final

28
FORTRAN ÖRNEKLERİ (2013) NOT: - Kod satırlarındaki bazı boşlukları göstermek için "_ " kullanılmıştır. - Kod satırlarının hemen yanında, iki ünlem işareti arasında yazılan bilgiler o satırla ilgili açıklamalar için yazılmıştır. İsim ile Karşılama Klavyeden isim girildikten sonra, 'merhaba ...' şeklinde kullanıcıyı karşılayacak bir program yazınız. program karsilama character ad*20 write(*,*) 'adiniz nedir?' read(*,*) ad write(*,*) 'merhaba_', ad end Toplama İşlemi Klavyeden girilen iki sayıyı toplayan bir program yazınız. program toplama write(*,*) 'toplama icin iki sayi giriniz:' read(*,*) a, b c=a+b write(*,*)'toplam=', c end Daire Çevresi ve Alanı Hesaplama Klavyeden yarıçapı girilen dairenin çevresini ve alanını hesaplayan bir program yazınız. program daire pi=3.141592 write(*,*) 'yaricapi giriniz:' read(*,*) r cevre=2*pi*r alan=pi*r**2 write(*,*) 'Alan=_', alan, '_Cevre=_', cevre end

Upload: sinan

Post on 31-Dec-2015

2.241 views

Category:

Documents


44 download

TRANSCRIPT

Page 1: Fortran Ornekleri 2013 Final

FORTRAN ÖRNEKLERİ (2013)

NOT:

- Kod satırlarındaki bazı boşlukları göstermek için "_ " kullanılmıştır.

- Kod satırlarının hemen yanında, iki ünlem işareti arasında yazılan bilgiler o satırla ilgili açıklamalar

için yazılmıştır.

İsim ile Karşılama

Klavyeden isim girildikten sonra, 'merhaba ...' şeklinde kullanıcıyı karşılayacak bir program yazınız.

program karsilama

character ad*20

write(*,*) 'adiniz nedir?'

read(*,*) ad

write(*,*) 'merhaba_', ad

end

Toplama İşlemi

Klavyeden girilen iki sayıyı toplayan bir program yazınız.

program toplama

write(*,*) 'toplama icin iki sayi giriniz:'

read(*,*) a, b

c=a+b

write(*,*)'toplam=', c

end

Daire Çevresi ve Alanı Hesaplama

Klavyeden yarıçapı girilen dairenin çevresini ve alanını hesaplayan bir program yazınız.

program daire

pi=3.141592

write(*,*) 'yaricapi giriniz:'

read(*,*) r

cevre=2*pi*r

alan=pi*r**2

write(*,*) 'Alan=_', alan, '_Cevre=_', cevre

end

Page 2: Fortran Ornekleri 2013 Final

İdeal Gaz Yoğunluğu Hesaplama

Kullanıcı sırasıyla gazın adını ve mol kütlesini yazdıktan sonra "gazin_adi gazinin yogunlugu

[kg/m3]" şeklinde çıktı veren bir program yazınız.

program yogunluk

character AD*10

P0=1.013E5

T0=273

R=8314

write(*,*)'gazin adi:'

read(*,*) ad

write(*,*) 'gazin mol kutlesi [kg/kmol]:'

read(*,*) m

R0=P0*m/R/T0

write(*,*) ad,'_gazinin yogunlugu [kg/m3]=', R0

end

Page 3: Fortran Ornekleri 2013 Final

Organik Molekül Yoğunluğu Hesaplama

Kimyasal formülü CxHy şeklinde verilen bir gaz yakıtın N.Ş.A. yoğunluğunu hesaplayan bir program

yazınız.

program yogunluk

character ad*20

R=8314

P0=1.013e5

T0=273

MC=12

MH=1

write(*,*) 'Gazin adini giriniz:'

read(*,*) ad

write(*,*) 'C ve H atomlarinin sayisini giriniz:'

read(*,*) x,y

M=MC*x+MH*y

R0=P0*M/R/T0

write(*,*) ad, '_gazinin yogunlugu [kg/m3]=', R0

end

İdeal Gaz Hacmi Hesaplama

Bir ideal gazın 1 atm basınç ve 273 K sıcaklıktaki hacim değerini klavyeden girerek, istenilen başka

bir sıcaklık ve basınçtaki hacmini hesaplamaya yarayan bir program yazınız.

program hacim

p0=1.013E5 !1 atm basınç!

T0=273 !273 K sıcaklık!

write(*,*) 'v0 giriniz:'

read(*,*) v0

write(*,*) 'P ve T giriniz:'

read(*,*) P, T

V=v0*p0/P*T/T0

write(*,*) 'Hacim=', V

end

Page 4: Fortran Ornekleri 2013 Final

Ortalama ve Toplam Hesaplama

Klavyeden girilen sayıların ortalamasını ve toplamını hesaplayan bir program yazınız. Bu

hesaplamada kullanılacak sayıların girişinin tamamlandığını -999 girerek belirtiniz.

program ortalama

top=0

n=0

20 write(*,*) 'ortalama ve toplam icin sayi giriniz, bitir icin -999'

read(*,*) sayi

if (sayi.eq.-999) goto 10

top=top+sayi

n=n+1

goto 20

10 ort=top/n

write(*,*) 'toplam=', top, '_ortalama=', ort

end

Ders Geçme

Klavyeden sırasıyla öğrencinin adı ve soyadı, öğrenci numarası, arasınav notu, final notu girilerek

öğrencinin ders geçme durumunu ve başarı notu harfini gösteren bir program yazınız. Programın

sonlanması için final notunun negatif girilmesi şartı tanımlayınız.

Başarı Notu Arasınav*0.4+Final*0.6

Başarı Notu Harfi

100 - 90 A1

89 - 80 A2

79 - 70 B1

69 - 60 B2

59 - 50 C

49 - 0 F3

program sinav

character AS*30, BNH*2

10 write(*,*)'Ad soyad, No, Ara ve Final sinav notlarini gir,final ne

&gatif girilirse programi bitir' !& işareti alt satırdan devam etmek için kullanılır!

read(*,*)AS,NO,ARA,FIN

if (FIN.LT.0) stop

BN=0.4*ARA+0.6*FIN

Page 5: Fortran Ornekleri 2013 Final

if (BN.GE.90) BNH='A1'

if (BN.GE.80 .and. BN.LT.90) BNH='A2'

if (BN.GE.70 .and. BN.LT.80) BNH='B1'

if (BN.GE.60 .and. BN.LT.70) BNH='B2'

if (BN.GE.50 .and. BN.LT.60) BNH='C'

if (BN.LT.50) BNH='F3'

write(*,*)'ad=',AS,'_No=',No,'_Basari Notu=',BNH

goto 10

end

Denklem Köklerini Bulma

formatındaki bir denklemin köklerini, klavyeden a, b, c katsayılarını girerek

hesaplayan bir program yazınız.

program denklem

write(*,*)'A,B,C yi giriniz'

read(*,*)A,B,C

D=B**2-4*A*C !Δ hesaplandı!

if (D) 10,20,30 !*!

10 write(*,*)'gercek kok yoktur.'

stop

20 X=-B/(2*A)

write(*,*)'cakisik iki kok var=',x

30 X1=(-B+D**0.5)/(2*A)

X2=(-B-D**0.5)/(2*A)

write(*,*)'X1=',X1,'X2=',X2

end

*if döngülerinde bu tür, virgüllerle ayrılmış bir ifade kullanıldığında şartlar şu şekilde

belirlenmektedir:

D < 0 ise 10

D=0 ise 20

D>0 ise 30

Page 6: Fortran Ornekleri 2013 Final

Üçgen Şartı Kontrolü

Üç kenar uzunluğu klavyeden girildiğinde üçgenin türünü ya da üçgen şartının sağlanmadığını belirten

bir program yazınız.

program ucgen

write(*,*) 'ucgen kenar uzunluklarini giriniz'

read(*,*) a,b,c

if (a.lt.(b+c) .and. b.lt.(a+c) .and. c.lt.(a+b)) then

if (a.eq.b .and. b.eq.c)then

write(*,*)'bu ucgen eskenar ucgendir'

else if ((a.eq.b .and. b.ne.c) .or.

&(b.eq.c .and. c.ne.a).or.

&(b.eq.c .and. c.ne.a))then

write(*,*)'bu ucgen ikizkenar ucgendir'

else

write(*,*)'bu ucgen cesitkenar ucgendir'

end if

else

write(*,*)'bu bir ucgen degildir'

end if

end

Page 7: Fortran Ornekleri 2013 Final

Vücut Kitle İndeksi (BMI) Hesaplama

Klavyeden vücut ağırlığı ve boy bilgileri girilerek vücut kitle indeksi hesaplayan, sonuca göre

değerlendirme yapan bir program yazınız.

Vücut Kitle İndeksi

Değerlendirme

Obez

Şişman

Kilolu

Normal

Zayıf

program kindex

real ki

write(*,*) 'agirligi (kg) giriniz:'

read(*,*) agirlik

write(*,*) 'boyu (m) giriniz:'

read(*,*) boy

ki=agirlik/boy**2

write(*,*) 'ki=',ki

if (ki.lt.20) then

write(*,*) 'zayif'

elseif (ki.ge.20.and.ki.lt.25) then

write(*,*) 'normal'

elseif (ki.ge.25.and.ki.lt.30) then

write(*,*) 'kilolu'

elseif (ki.ge.30.and.ki.lt.35) then

write(*,*) 'sisman'

else

write(*,*) 'obez'

end if

end

Page 8: Fortran Ornekleri 2013 Final

Rüzgar Hızı Hesaplama

Farklı arazi koşullarının etkisini de göz önünde bulunduracak şekilde; klavyeden belirli bir yükseklikte

ölçülen rüzgar hızı ve yükseklik girilerek, istenilen yükseklikteki rüzgar hızını hesaplayabilen bir

program yazınız.

(

)

Klavyeden girilmesi gereken değerler: V0, Z, Z0, p

V :Hesaplanmak istenen hız

Z :Rüzgar hızının hesaplanacağı yükseklik

V0 :Belirli bir yükseklikte ölçülen hız

Z0 :V0 hızının ölçüldüğü yükseklik

p :Pürüz yüksekliği ve stabiliteye bağlı katsayı

1- Büyük şehir: p=0.40

2- Küçük yerleşim yeri: p=0.28

3- Kırsal alan: p=0.16

program ruzgar

10 write(*,*)'1-buyuk sehir'

write(*,*)'2-kucuk yerlesim yeri'

write(*,*)'3-kirsal alan'

write(*,*)'p katsayisinin belirlenmesi icin secim yapiniz:'

read(*,*)no

if (no.lt.1 .or. no.gt.3)then

write(*,*)'yanlis girdiniz tekrar girin'

goto 10

elseif (no.eq.1)then

P=0.4

elseif(no.eq.2)then

P=0.28

else

P=0.16

endif

write(*,*)'Z0 giriniz'

Page 9: Fortran Ornekleri 2013 Final

read(*,*)Z0

write(*,*)'V0 giriniz'

read(*,*)V0

write(*,*)'Z giriniz'

read(*,*)Z

V=(Z/Z0)**P*V0

write(*,*)'Z=',Z

write(*,*)'V=',V

end

Serbest Düşme

Durgun halden serbest düşme hareketine başlayan bir cismin, klavyeden girilen yükseklik ve Δt saniye

aralıklarla hızını ve zeminden yüksekliğini hesaplayan bir program yazınız.

program sdusme

G=9.81

write(*,*)'yuksekligi (m),DELTAT(s) giriniz'

read(*,*)Y0,DELTAT

write(*,*)'T[s] v[m/s] y[m]'

write(*,*)'------------------------'

10 T=T+DELTAT

V=g*T

Y=Y0-0.5*G*T**2

write(*,20)T,V,Y

20 format(1x,3F10.3)

if (Y.GT.0) goto 10

end

Page 10: Fortran Ornekleri 2013 Final

Sayıya Kadar Toplama (if kullanarak)

Klavyeden girilen n sayısına kadar olan tamsayıların toplamını if döngüsü kullanarak hesaplayan bir

program yazınız.

program toplam

top=0

i=1

write(*,*) 'n giriniz:'

read(*,*) n

20 if (i.gt.n) goto 10

top=top+i

i=i+1

goto 20

10 write(*,*) 'toplam=', top

end

Sayıya Kadar Toplama (do kullanarak)

Klavyeden girilen n sayısına kadar olan tamsayıların toplamını do döngüsü kullanarak hesaplayan bir

program yazınız.

program toplam

top=0

write(*,*) 'n giriniz:'

read(*,*) n

do 50 i=1, n, 1

top=top+i

50 continue

write(*,*) 'toplam=', top

end

Page 11: Fortran Ornekleri 2013 Final

Hız, Zaman, Yol Hesaplama

Sabit ivme ile hareket eden bir aracın ulaştığı maksimum hızı ve bu hıza ulaşması için geçen süreyi

klavyeden girerek; birer saniye aralıklarla ulaştığı hızı (m/s) ve maksimum hıza ulaşana kadar aldığı

yolu hesaplayan bir program yazınız.

program hiz

write(*,*) 'maksimum hiz (km/h) ve sureyi (s) girin:'

read(*,*) vmax, tmax

A=vmax/tmax

write(*,*) 'Zaman (s) Hiz (m/s) Yol (m)'

do 10 t=1, tmax, 1

v=a*t

x=0.5*a*t**2

write(*,*) t, v*3.6, x

10 continue

end

İç İçe Do Döngüsü -1

program do1

write(*,*) 'i j k'

write(*,*) '-----'

do 10 i=1, 3

do 20 j=2, 4

k=i+j

write(*,*) i, j, k

20 continue

10 continue

end

İç İçe Do Döngüsü -2

program do2

write(*,*) 'i j k'

write(*,*) '-----'

k=0

i j k

-----

1 2 3

1 3 4 1 4 5

2 2 4

2 3 5 2 4 6

3 2 5

3 3 6 3 4 7

i j k

----- 1 3 4

1 4 9

2 3 14 2 4 20

Page 12: Fortran Ornekleri 2013 Final

do 10 i=1, 2

do 20 j=3, 4

k=k+i+j

write(*,*) i, j, k

20 continue

10 continue

end

İç İçe Do Döngüsü -3

program do3

write(*,*) 'i j k'

write(*,*) '-----'

do 10 i=1, 2

k=0

do 20 j=3, 4

k=k+i+j

write(*,*) i, j, k

20 continue

10 continue

end

İç İçe Do Döngüsü -4

program do4

write(*,*) 'i j k'

write(*,*) '-----'

do 10 i=1, 2

do 20 j=3, 4

k=0

k=k+i+j

write(*,*) i, j, k

20 continue

10 continue

end

i j k

----- 1 3 4

1 4 9

2 3 5

2 4 11

i j k -----

1 3 4

1 4 5 2 3 5

2 4 6

Page 13: Fortran Ornekleri 2013 Final

İç İçe Do Döngüsü -5

program do5

write(*,*) 'i j k'

write(*,*) '-----'

k=0

do 10 i=1, 2

do 20 j=5, 3, -1

k=k+i+j

write(*,*) i, j, k

20 continue

10 continue

end

İç İçe Do Döngüsü -6

program do6

write(*,*) 'i j k'

write(*,*) '-----'

k=0

do 10 i=1, 3, 2

do 20 j=5, 3, -1

k=k+i+j

write(*,*) i, j, k

20 continue

10 continue

end

i j k -----

1 5 6

1 4 11

1 3 15 3 5 23

3 4 30

3 3 36

i j k -----

1 5 6

1 4 11 1 3 15

2 5 22

2 4 28 2 3 33

Page 14: Fortran Ornekleri 2013 Final

Pi Sayısı Hesaplama

dizisinin terimleri toplanarak pi sayısı istenen duyarlılıkla hesaplanabilir. Bu

toplam kısaca ∑

şeklinde de yazılabilir. Bu dizinin ilk n terimini kullanarak

sayısını hesaplayan bir program yazınız.

!denklemler incelendiğinde pi sayısını hesaplamak için sadece terim sayısı girilmesinin yeterli

olduğu görülmektedir!

program pisayisi

real pi

write(*,*) 'Pi sayisi kac terimle hesaplanacak?'

read(*,*) n

pi=0

isaret=-1

do 10 i=1, n

isaret=-isaret !bu satır ile döngüdeki i değeri arttıkça isaret değeri bir + bir - değer alacaktır!

terim=isaret*4./(2*i-1) !Fortran'da 4. yazılmazsa bölme işlemi gerçekleşmemekte!

pi=pi+terim

write(*,*) 'terim sayisi:', i, '_pi=', pi !*!

10 continue

end

* Bu programda her döngü tekrarında hesaplanan pi sayısı ekrana yazdırılmaktadır. Böylece pi

sayısının gittikçe doğru değerine yakınsaması ekrandan izlenebilir. Eğer continue satırının hemen

öncesindeki write satırı continue sonrasına yazılırsa sadece girilen n terimi sonunda hesaplanan pi

sayısı görüntülenebilir.

Page 15: Fortran Ornekleri 2013 Final

Dizi Toplam

fonksiyonunun değerini, verilen x için dizinin ilk n terimini kullanarak hesaplayan bir program

yazınız. x ve n değerleri klavyeden girilecektir.

Açıklama:

Fonksiyon incelendiğinde ∑

işlemine karşılık geldiği görülmektedir. Dolayısıyla

n değerine kadar olan işlemlerin hesaplanması için do döngüsü yazılırken bu işlem

tanımlanmalıdır.

program dizitoplam

write(*,*) 'x degerini giriniz:' !f(x) fonksiyonun hesaplanması için gerekli olan x değeri!

read(*,*) x

write(*,*) 'toplanacak terim sayisini giriniz:'

read(*,*) n

fx=0 !fx döngüsü oluşturmadan önce başlangıç değerini sıfır olarak tanıtmamız gerekir!

do 10 i=1, n

terim=(-1)**(i+1)*(x**i)/i

fx=fx+terim

write(*,*) 'i=', i, ',_f(x)=', fx

10 continue

end

Page 16: Fortran Ornekleri 2013 Final

Tarih Yazımı

gg.aa.yyyy şeklinde girilmiş tarihi gg aa yyyy ve gg/aa/yyyy formatında geri veren bir program

yazınız.

program tarih

integer gun, ay, yil

write(*,*) 'Gunun tarihini gg.aa.yyyy seklinde giriniz:'

read(*,10) gun, ay, yil

10 format (i2,1x,i2,1x,i4)

write(*,20) gun, ay, yil

20 format ('_',i2,'_',i2,'_',i4)

write(*,30) gun, ay, yil

30 format (1x,i2,'/',i2,'/',i4)

end

Sayı Girişi

Klavyeden girilen sayı kaç basamaklı olursa olsun, ilk 4 basamağını okuyan ve 'girilen sayi: (ilk 4

basamak)' şeklinde dönüş yapan bir program yazınız.

program sayi

write(*,*) 'bir sayi gir'

read(*,10) n

10 format(i4)

write(*,20)n

20 format (1x,'girilen sayi:',i4)

end

Page 17: Fortran Ornekleri 2013 Final

Faktöriyel Hesaplama

Klavyeden girilecek n sayısına kadar bütün sayılara ait faktöriyel değerlerini hesaplayan bir program

yazınız.

Elde edilmek istenen:

program faktoriyel

write(*,*) 'n degerini girin:'

read(*,*) n

fakt=1

write(*,20)

20 format (1x,'sayi',30x,'faktoriyel',/,1x,4('-'),30x,10('-'))

do 100 i=1, n

fakt=fakt*i

write(*,10)i, fakt

10 format (1x,i4,3x,F30.3)

100 continue

end

Sayi Faktoriyel

---- ---------- 1 1

2 2

3 6 4 24

5 120

... ...

n n!

Page 18: Fortran Ornekleri 2013 Final

Gelecekteki Nüfusu Hesaplama

Bir bölgenin gelecekteki nüfusu formülü ile hesaplanabilir. Burada

: Gelecekteki nüfus

: Yeni nüfus

p : Nüfus artış oranı

n : İki nüfus sayımı arasındaki yıl farkı

anlamındadır. Nüfus artış oranı p, aşağıdaki formül yardımı ile hesaplanabilir.

(

)

eski bir sayıma göre nüfustur. Eski ve yeni yıllar, bunlara ait nüfus sayımları verildiğine göre

sayımlardan sonraki 5,10,15,...,50 yıl için nüfusları hesaplayıp yazan bir program yazınız.

program nufus

real NY,NE,P,N

integer NG,YY

write(*,*)'eski nufus ve yil'

read(*,*)NE,YE

write(*,*)'yeni nufus ve yil'

read(*,*)NY,YY

N=YY-YE

P=(NY/NE)**(1/N)-1

write(*,*) ' YIL NUFUS'

do 10 I=5,50,5

NG=NY*(1+P)**I

YG=YY+I

write(*,20)YG,NG

10 continue

20 format(1x,F5.0,I9)

end

Page 19: Fortran Ornekleri 2013 Final

Celsius-Fahrenheit-Kelvin

Celcius birimindeki sıcaklıkları -50oC ile 150oC arasında 10'ar derece aralıklarla Fahrenheit ve Kelvin

birimine çeviren bir tablo hazırlayan bir program yazınız.

TF=32+1.8*TC

TK=273.15+TC

program sicaklik

C C, F, K sicaklik tablosu

write(*,*) ' T[C] T[F] T[K]'

do 10 TC=-50, 150, 10

TF=32+1.8*TC

TK=273.15+TC

write(*,20) TC, TF, TK

10 continue

20 format (1x,F5.0,1x,F5.1,1x,F6.2)

end

Dizi Değişkenlerle Standart Sapma ve Ortalama Hesaplama

Klavyeden girilen n tane sayının aritmetik ortalamasını ve standart sapmasını hesaplayan bir program

yazınız.

program standart

dimension x(100)

write(*,*)'n giriniz:'

read(*,*) n

do 10 i=1, n

write(*,*) i,'. sayiyi gir'

read(*,*) x(i)

top=top+x(i)

10 continue

xort=top/n

top=0

Page 20: Fortran Ornekleri 2013 Final

do 20 i=1, n

top=top+(x(i)-xort)**2

20 continue

ss=sqrt(top/(n-1))

do 30 i=1, n

write(*,*) 'x(',i,')-', x(i)

30 continue

write(*,*) 'ortalama=', xort

write(*,*) 's sapma=', ss

end

Page 21: Fortran Ornekleri 2013 Final

Matris Toplama

(

) (

)

C=A+B toplama işlemini yapan bir program yazınız.

(

)

m : satır sayısı

n : sütun sayısı

program matris

dimension A(2,3),B(2,3),C(2,3)

integer A,B,C

write(*,*)'satir ve sutun sayisini gir'

read(*,*)M,N

do 10 I=1,M

read(*,*)(A(I,J),J=1,N)

10 continue

do 20 I=1,M

read(*,*)(B(I,J),J=1,N)

20 continue

do 30 I=1,M

do 30 J=1,N

C(I,J)=A(I,J)+B(I,J)

30 continue

write(*,100)

do 40 I=1,M

write(*,110)(A(I,J),J=1,N)

40 continue

100 format(' A matrisi',/,9('-'))

110 format(1x,3I3)

write(*,120)

do 50 I=1,M

write(*,110)(B(I,J),J=1,N)

Page 22: Fortran Ornekleri 2013 Final

50 continue

120 format(' B matrisi',/,9('-'))

write(*,130)

do 60 I=1,M

write(*,110)(C(I,J),J=1,N)

60 continue

130 format(' C matrisi',/,9('-'))

end

Page 23: Fortran Ornekleri 2013 Final

şeklinde gelişigüzel girilen sayıları sıralayan bir program yazınız.

Dizi değişkenler kullanılmadan:

program siralama

real ks

read(*,*)A1,A2,A3,A4

if (A2.lt.A1)then

ks=A2

A2=A1

A1=ks

endif

if(A3.lt.A1)then

ks=A3

A3=A1

A1=ks

endif

if(A4.lt.A1)then

ks=A4

A4=A1

A1=ks

endif

if(A3.lt.A2)then

ks=A3

A3=A2

A2=ks

endif

if(A4.lt.A2)then

ks=A4

A4=A2

A2=ks

Sayıları sıralama

A1 A2 A3 A4

4 3 2 1

Page 24: Fortran Ornekleri 2013 Final

endif

if(A4.lt.A3)then

ks=A4

A4=A3

A3=ks

endif

write(*,*)A1,A2,A3,A4

end

Dizi değişkenler kullanılarak:

program sirala

real ks

dimension A(1000)

write(*,*)'kac sayi siralanacak?'

read(*,*)N

do 10 I=1,N

write(*,*)I,'. sayiyi gir'

read(*,*)A(I)

10 continue

do 20 I=1,N-1

do 25 J=I+1,N

if (A(J).lt.A(I))then

ks=A(J)

A(J)=A(I)

A(I)=ks

endif

25 continue

20 continue

do 30 I=1,N

write(*,*)A(I)

30 continue

End

Page 25: Fortran Ornekleri 2013 Final

Trigonometrik Tablo

0o’den 90

o’ye kadar 5

o aralıklarla bütün açıların sin, cos, tan ve cot değerlerini hesaplayarak tablo

halinde kullanıcıya gösteren bir program yazınız.

program tablo

pi=3.1415926

write(*,*)'aci sin cos tan cot'

write(*,*)'---------------------------'

do 100 I=0,90,5

X=I*pi/180

if (I.eq.0)then

write(*,10)I,sin(x),cos(x),tan(x)

10 format (1x,I3,1X,F5.3,1x,F5.3,1x,F6.3,1x,'sonsuz') *

else if (I.eq.90) then

write(*,20)I,sin(x),cos(x),1/tan(x)

20 format(1x,I3,1x,F5.3,1x,F5.3,'sonsuz',F6.3)

else

write(*,30)I,sin(x),cos(x),tan(x),1/tan(x)

30 format(1x,I3,1x,F5.3,1x,F5.3,1x, F6.3,1x,F6.3)

endif

100 continue

end

* Format satırında ‘sonsuz’ yazmamızın nedeni, tan(90) ve cot(0) değerinin sonsuz olmasıdır. Fortran

sonsuza giden işlemleri yapamayıp hata verdiği için bu işlemleri yapmasını do döngü kullanarak

engelledik ve sonuç kısmına elle ‘sonsuz’ girişi yaptık.

Page 26: Fortran Ornekleri 2013 Final

Eğik Atış

Verilen bir açısıyla ve v0 ilk hızıyla (x0, y0) noktasından atılan bir cismin hareketi esnasında zamana

bağlı (belirlenen zaman aralıklarıyla) olarak koordinatlarını hesaplayan bir program yazınız. Cisim

yere düştüğü zaman program bitirilecektir.

PROGRAM EgikAtis

PI =3.14

G=9.81

FAKTOR = PI/180

WRITE(*,*) 'X0,Y0='

READ(*,*) X0, Y0

WRITE(*,*) 'V0, ALFA='

READ(*,*) V0, ALFA

WRITE(*,*) 'DELTAT='

READ(*,*) DELTAT

T = 0

ALFAR =ALFA * FAKTOR

C ALFAR:ALFA açısının radyan cinsinden degeridir

10 T = T +DELTAT

X = X0 +V0*T*COS(ALFAR)

Y = Y0 +V0*T*SIN(ALFAR)-G/2*T**2

WRITE(*,20) T, X, Y

IF (Y.LE.0) STOP

GOTO 10

20 FORMAT (1X, 3F10.3)

END

Page 27: Fortran Ornekleri 2013 Final

Kombinasyon Hesaplama

N tane değişik elemandan R tanesinin kaç farklı şekilde seçilebileceğini hesaplayan bir program

yazınız.

integer function kullanarak:

program kombinasyon

integer C,R,FAKT

write(*,*)'N ve R gir'

read(*,*)N,R

C=FAKT(N)/FAKT(R)/FAKT(N-R)

write(*,*)'kombinasyonlarin sayisi=',C

end

integer function FAKT(M)

FAKT=1

do 10 I=1,M

FAKT=FAKT*I

10 continue

return

end

call komutu kullanarak:

program kombi

integer C,R,FAKTN,FAKTR,FAKTNER

write(*,*) 'N ve R gir'

read(*,*) N,R

call FAKT(N,FAKTN)

call FAKT(R,FAKTR)

call FAKT(N-R,FAKTNER)

C=FAKTN/FAKTR/FAKTNER

write(*,*) 'kombinasyonlarin sayisi=',C

end

Page 28: Fortran Ornekleri 2013 Final

subroutine FAKT(M,FAKTM)

integer FAKTM

FAKTM=1

do 10 I=1,M

FAKTM=FAKTM*I

10 continue

return

end

Sınav Sonucu Dosyası

Öğrencilerin adı, vize ve final notlarını girdikten sonra başarı notunu hesaplayan ve program dışında

bir dosyada log (kayıt) oluşturan bir program yazınız.

program sinav

character adsoy*30

integer ara,fin

open(5,file='sinav.txt')

40 write(*,*)'Adsoyad,ara ve final notlarini gir'

read(*,10)adsoy,ara,fin

BN=0.3*ara+0.7*fin

write(5,20)adsoy,BN

write(*,*)'Devam mi? (E/H)'

read(*,30)cevap

if (cevap.eq.'E'.or. cevap.eq.'e')goto 40

10 format (A30,2(1x,I3))

20 format(A30,1x,F5.1)

30 format(A1)

close(5)

end